Contrôle d'Accès Contactless JavaCard: Difference between revisions

From air
Jump to navigation Jump to search
No edit summary
 
(15 intermediate revisions by 2 users not shown)
Line 1: Line 1:
* UE/Module: Projet M2M M2PGI
* UE/Module: Projet M2M M2PGI
* Enseignants: Didier Donsez
* Enseignants: Didier Donsez, Bassem Debbabi
* Etudiants M2PGI: Matthieu Godet (chef de projet), Etienne Gosset.
* Etudiants M2PGI: Matthieu Godet (chef de projet), Etienne Gosset.


Line 7: Line 7:


Le système devra supporte les attaques suivantes:
Le système devra supporte les attaques suivantes:
* rejeu (replay) d'un échange contre la serrure ('Man in the Middle').
* rejeu (replay) d'un échange contre la serrure ([http://fr.wikipedia.org/wiki/Attaque_de_l%27homme_du_milieu ''Man in the Middle'']).
* confidentialité : la serrure ne peut interroger que les clés qui la concerne.
* confidentialité : la serrure ne peut interroger que les clés qui la concerne.
* autres à définir
* autres à définir
Line 13: Line 13:
==Equipement==
==Equipement==
* Lecteurs ASK et GCR410
* Lecteurs ASK et GCR410
* Javacard contact et contactless
* [[JavaCard]] contact et contactless
* [[BasicCard]] contact et contactless
* [[BasicCard]] contact et contactless


==Détail==
==Détail==


===Environnement de développement===

*[http://www.oracle.com/technetwork/java/javacard/downloads/index.html Java Card Development kit 2.2.2] (librairies pour developper une application javacard et pour un client + outils de simulation de carte)
*Eclipse
*[http://sourceforge.net/projects/eclipse-jcde/ plugin d'integration eclipse-JCDE-0.1]

===Installation===

'''Java Card Development kit 2.2.2'''
* ajouter la variable d'environnement JC_HOME et l'ajouter au path.
* Attention! si vous etes sous windows, que vous voulez utiliser l'outil apdutool, et que votre JAVA_HOME ou JC_HOME contient des espaces il faut modifier le script Apdutool.bat -> remplacer %JAVA(JC)_HOME% par "c:..."

'''Plugin eclipse'''
*désarchiver l'archive et placer le contenu du dossier plugin dans le dossier plugin d'eclipse

===Création d'un projet java card sous eclipse===

*file -> new -> other -> Javacard -> javacard project
*clique droit sur le projet -> new -> other -> javacard applet
*clique droit sur le package -> java card tools -> set package AID

===Conception===

[[File:DiagrammeJC.png]]

*L'issuer peut administrer la carte, une fois que celle-ci c'est authentifié, en lui ajoutant, supprimant des clés ou en réinitialisant son trousseau
*La java card applet est l'applet permettant de stocker les clés
*La serrure après authentification de la carte, lui demande de fournir la clé lui correspondant. Une fois que la serrure obtient la clé elle vérifie la période de validité de celle-ci.

====Authentification de la carte====

Pour que la communication s'opère entre le client (l'issuer ou la serrure) et la carte, la carte doit s'authentifier.

'''Algorithme de cryptage utilisé :'''
RSA avec des clé privée/public de 512 bits.

*L'issuer et les serrures possèdent une clé privée commune.
*La carte possède la clé public correspondante.
*Tous les acteurs possèdent un message commun.

'''Séquence d'authentification :'''

[[File:Sequence identification.jpg]]

====Format d'une clé====

[[File:FormatCle.png]]


==Lecture==
==Lecture==
Line 27: Line 74:
Cartes à microprocesseur
Cartes à microprocesseur
* http://membres-liglab.imag.fr/donsez/cours/#smartcard
* http://membres-liglab.imag.fr/donsez/cours/#smartcard
API javax.smartcardio (avec des lecteurs PCSC)
API [[Javax.smartcardio|javax.smartcardio]] (avec des lecteurs [[PCSC]])

* http://download.oracle.com/javase/6/docs/jre/api/security/smartcardio/spec/javax/smartcardio/package-summary.html
API [[Java Security]]

Bruce Schneier, Applied Cryptography, Second Edition (en francais Éditeur : Vuibert, 2001, ISBN: 2711786765) [http://www.schneier.com/book-applied.html site], [http://www.schneier.com/book-applied-source.html code source]

==Liens==
* [http://www.linuxnet.com/musclecard/index.html MuscleCard]
* [OpenID]
** [http://portal.acm.org/citation.cfm?id=1834217.1834318 OpenID Card]
** http://code.sxip.com/openidcards


==Equipe==
==Equipe==

Latest revision as of 16:09, 25 May 2011

  • UE/Module: Projet M2M M2PGI
  • Enseignants: Didier Donsez, Bassem Debbabi
  • Etudiants M2PGI: Matthieu Godet (chef de projet), Etienne Gosset.

Description

Le projet Contrôle d’accès Javacard contacless (NFC) est un service de contrôle d'accès et de pointage dans des batiments. Ce système utilise des cartes à puce JavaCard ou BasicCard sans contact (ISO14443) ou avec contact (ISO7816), des étiquettes NFC ou bien des iButtons. Chaque carte contient un trousseau de clés confiées à un porteur. Une clé autorise l'ouverture (ou la sortie) d'un point d'accès (porte, tourniquet, ...) à des dates ou périodes définies. Chaque clé est signée (digitalement) par le gestionnaire du batiment permettant une vérification offline.A la présentation de la carte, la serrure interroge la carte pour lui demander la (ou les) clés qui la concerne, vérifie la signature digitale de la clé, et déclenche l'ouverture de la porte (par exemple, alimentation électrique de la gâche électrique, ...) si la date courante est dans la période autorisée définie pour la clé.

Le système devra supporte les attaques suivantes:

  • rejeu (replay) d'un échange contre la serrure (Man in the Middle).
  • confidentialité : la serrure ne peut interroger que les clés qui la concerne.
  • autres à définir

Equipement

  • Lecteurs ASK et GCR410
  • JavaCard contact et contactless
  • BasicCard contact et contactless

Détail

Environnement de développement

Installation

Java Card Development kit 2.2.2

  • ajouter la variable d'environnement JC_HOME et l'ajouter au path.
  • Attention! si vous etes sous windows, que vous voulez utiliser l'outil apdutool, et que votre JAVA_HOME ou JC_HOME contient des espaces il faut modifier le script Apdutool.bat -> remplacer %JAVA(JC)_HOME% par "c:..."

Plugin eclipse

  • désarchiver l'archive et placer le contenu du dossier plugin dans le dossier plugin d'eclipse

Création d'un projet java card sous eclipse

  • file -> new -> other -> Javacard -> javacard project
  • clique droit sur le projet -> new -> other -> javacard applet
  • clique droit sur le package -> java card tools -> set package AID

Conception

DiagrammeJC.png

  • L'issuer peut administrer la carte, une fois que celle-ci c'est authentifié, en lui ajoutant, supprimant des clés ou en réinitialisant son trousseau
  • La java card applet est l'applet permettant de stocker les clés
  • La serrure après authentification de la carte, lui demande de fournir la clé lui correspondant. Une fois que la serrure obtient la clé elle vérifie la période de validité de celle-ci.

Authentification de la carte

Pour que la communication s'opère entre le client (l'issuer ou la serrure) et la carte, la carte doit s'authentifier.

Algorithme de cryptage utilisé : RSA avec des clé privée/public de 512 bits.

  • L'issuer et les serrures possèdent une clé privée commune.
  • La carte possède la clé public correspondante.
  • Tous les acteurs possèdent un message commun.

Séquence d'authentification :

Sequence identification.jpg

Format d'une clé

FormatCle.png

Lecture

Introduction à la Sécurité

JCE (Java Cryptography Extension)

Cartes à microprocesseur

API javax.smartcardio (avec des lecteurs PCSC)

API Java Security

Bruce Schneier, Applied Cryptography, Second Edition (en francais Éditeur : Vuibert, 2001, ISBN: 2711786765) site, code source

Liens

Equipe

  • Matthieu Godet (chef de projet)
  • Etienne Gosset