Différences

Ci-dessous, les différences entre deux révisions de la page.

Lien vers cette vue comparative

Les deux révisions précédentes Révision précédente
Prochaine révision
Révision précédente
smartcards [Le 13/08/2011, 15:31]
SaiyanRiku [Outils]
smartcards [Le 21/03/2024, 17:42] (Version actuelle)
Jean-Dom [javax.smartcardio] Fôte de Gramère
Ligne 1: Ligne 1:
-====== Smart cards sous Linux ======+{{tag>​Trusty Xenial matériel sécurité}} 
 +----
  
-===== Présentation ​=====+====== Cartes à puce sous Ubuntu ======
  
-Les Smart cards (carte ​à puce, carte sans contact...) sont des cartes intelligentes qui embarque ​un microcontrôleur ou un microprocesseur. Le nombre d'application ​est illimité.+Les Cartes ​à puce  ​(smart cards en anglais) sont des cartes intelligentes qui embarquent ​un microcontrôleur ou un microprocesseur. Le nombre d'applications ​est illimité.
  
-Les exemples les plus populaire ​de smartcard ​sont les cartes de paiement, les cartes ​vitales, les cartes de transport ou encore les cartes de fidélité ​distribué ​en grande surface.+Les exemples les plus populaires ​de carte à puce sont les cartes de paiement, les cartes ​Vitale, les cartes de transport ou encore les cartes de fidélité ​distribuées ​en grandes surfaces.\\ 
 +L'​utilisation d'une carte à puce requiert l'​installation sur la machine d'un lecteur de carte et une d'​interface de communication. 
 +Cette page traite de deux type de cartes, les cartes PC/SC et les cartes de type [[#​javax.smartcardio]].
  
-===== Interface ​de communication =====+[[wpfr>​PC/​SC|Personal computer/​Smart Card]] (ou PC/SC) est une bibliothèque logicielle pour l'​accès à des cartes à puce sous Microsoft Windows. Une implémentation libre de PC/SC, appelée PC/SC Lite, est disponible sous GNU/Linux et distribuée avec Mac OS X. 
 +La spécification de cette bibliothèque est faite par le PC/SC Workgroup, composé de grands fabricants de carte à puce ou d'​ordinateur. Son but est d'​assurer une base standard de commandes pour permettre une meilleure interopérabilité entre PC, lecteurs de carte et cartes à puce elles-mêmes.
  
-L'utilisation ​d'une Smart Card requiert l'​installation sur la machine d'un lecteur de carte et une interface de communication.+===== Pré-requis ===== 
 +  
 +  * Disposer des [[:​sudo|droits d'administration]]. 
 +  * Disposer ​d'​une ​connexion à Internet configurée et activée. 
 +===== PC/SC (Personal computer/Smart Card) =====
  
-==== PC/SC (Personal computer/​Smart Card) ====+==== Installation====
  
-Personal computer/​Smart Card (ou PC/SCest une bibliothèque logicielle pour l'accès à des cartes à puce sous Microsoft Windows. Une implémentation libre de PC/SCappelée ​PC/SC Lite, est disponible sous GNU/​Linux ​et distribuée avec Mac OS X. +La gestion des lecteurs ​PC/SC n'est pas native sous Linux, mais peut être très facilement ajoutée par l'[[:​tutoriel:​comment_installer_un_paquet|installation ​des paquets]] ​ **[[apt>​pcscd,libpcsclite1,​pcsc-tools]]** qui installent respectivement le démon ​PC/SC et la bibliothèque de communication.
-La spécification de cette bibliothèque ​est faite par le PC/SC Workgroup, composé ​de grands fabricants de carte à puce ou d'​ordinateur. Son but est d'​assurer une base standard de commandes pour permettre une meilleure interopérabilité entre PC, lecteurs de carte et les cartes à puce elles-mêmes(Wikipédia)+
  
-=== Installation ​=== +====Configuration==== 
- +Par la suitesuivant votre lecteur, il vous faudra installer le pilote ​PC/SC correspondant à votre périphérique. Un certain nombre est déjà fourni dans les [[:depots|dépôts]] Ubuntu. ​Pour savoir lequel est nécessaire ​à l'​utilisation de votre carte entrez la commande suivante dans un [[:​terminal]] : ​<​code>​apt-cache search "PC/SC driver"​</​code>​ 
-La gestion des lecteurs PC/SC n'est pas natif sous Linux, mais peut être très facilement ajouté par l'​installation des paquets **[[apt>​pcscd,​libpcsclite1]]** qui installe respectivement le démon PC/SC et la bibliothèque de communication : +Vous obtiendrez une réponse qui vous permettra de savoir quel paquet installer :​ <​code>​
- +
-<​code>​ +
-sudo apt-get install pcscd libpcsclite1 +
-</​code>​ +
- +
-Par la suite suivant votre lecteur, il vous faudra installer le driver ​PC/SC adéquate. Un certain nombre est déjà fourni dans les dépôts Ubuntu. ​A vous d'​installer celui correspondant ​à votre périphérique. +
- +
-<code+
-$> apt-cache search "PC/SC driver"​+
 libacr38u - PC/SC driver for the ACR38U smart card reader libacr38u - PC/SC driver for the ACR38U smart card reader
 libasedrive-serial - PC/SC driver for the Athena ASEDrive IIIe serial smart card reader libasedrive-serial - PC/SC driver for the Athena ASEDrive IIIe serial smart card reader
Ligne 37: Ligne 35:
 pcsc-omnikey - PC/SC driver for Omnikey Cardman Smartcard readers (binary-only) pcsc-omnikey - PC/SC driver for Omnikey Cardman Smartcard readers (binary-only)
 </​code>​ </​code>​
 +Installez le paquet correspondant à votre type de carte.
 +Le paquet **libccid** installé par défaut avec **pcscd** est le pilote PC/SC pour le standard [[wpen>​Integrated_circuit_card_interface_device|CCID]]. Il permet la reconnaissance d'un grand nombre de lecteurs génériques basés sur ce standard.
  
-Le paquet **libccid** installé par défaut avec **pcscd** est le driver PC/SC pour le standard CCID. Il permet la reconnaissance d'un grand nombre de lecteurs génériques basés sur ce standard.+==== Utilisation ====
  
-=== Test ===+Pour vérifier que tout fonctionne, vous pouvez utiliser les outils du paquet **[[apt>​pcsc-tools]]** :​ 
 +  * **pcsc_scan** : un petit script d'​exemple qui détecte les périphériques et leurs cartes : <​code>​pcsc_scan</​code>​  
 +  * **gscriptor** : un petit logiciel avec interface graphique qui permet d'​envoyer des commandes APDU.
  
-Pour vérifier que tout fonctionne, vous pouvez utiliser l'​outil **pcsc_scan** du paquet **[[apt>​pcsc-tools]]**. 
  
-<​code>​ +===== javax.smartcardio =====
-sudo apt-get install pcsc-tools +
-pcsc_scan +
-</​code>​+
  
-Celui vous listera ​les lecteurs reconnu ​et les cartes ​détectés sur ceux-ci ​avec quelques informations supplémentaires. +L'API Java Smart Card I/O défini par la JSR 268 est une API pour le langage Java permettant la communication avec les smart cards en utilisant l'​ISO/​IEC 7816-4 APDUs. Elle permet ainsi la lecture ​et l'​écriture des cartes ​et fonctionne ​avec le lecteur PC/SC.
-==== javax.smartcardio ====+
  
-L'API Java Smart Card I/O défini par la JSR 268 est une API pour le langage ​Java permettant la communication avec les Smart Cards en utilisant l'​ISO/​IEC 7816-4 APDUs. Elle permet ​ainsi la lecture et l'écriture ​des cartes ​et fonctionne avec le lecteur PC/SC.+Un des ses atouts majeurs ​est que, couplée à une applet ​Java, elle permet l'utilisation ​des cartes ​directement depuis ​le navigateur Web.
  
-Un des ses atouts majeur et que couplé à une applet Java, elle permet l'​utilisation directement des cartes ​depuis ​le navigateur Web.+Cette API a été introduit ​depuis ​Java 1.6 et est disponible et fonctionnelle avec les [[:java]] et [[:​openJDK]].
  
-Cette API a été introduit depuis Java 1.6 et est disponible et fonctionnelle avec les [[java#​implementations|implémentations Java de sun et openJDK]].+==== Exemple d'​utilisation ====
  
-=== Exemple d'​utilisation === +<​code ​java>
- +
-<​code>​+
 import javax.smartcardio.*;​ import javax.smartcardio.*;​
 import java.util.*;​ import java.util.*;​
Ligne 130: Ligne 125:
 </​code>​ </​code>​
  
-=== Utilisation avec Eclipse ===+==== Utilisation avec Eclipse ​====
  
-Généralement,​ sous Eclipse vous obtiendrez ​un message d'​erreur du type sur les classes de l'API : +Généralement,​ sous Eclipse vous obtiendrez sur les classes de l'​API ​un message d'​erreur de ce type :
 <note important>​Access restriction:​ The type TerminalFactory is not accessible due to restriction on required library /​usr/​lib/​jvm/​java-6-openjdk/​jre/​lib/​rt.jar</​note>​ <note important>​Access restriction:​ The type TerminalFactory is not accessible due to restriction on required library /​usr/​lib/​jvm/​java-6-openjdk/​jre/​lib/​rt.jar</​note>​
  
-Pour pallier ​à ce problème, il faut lever les restrictions d'​Eclipse sur la JVM.+Pour pallier ce problème, il faut lever les restrictions d'​Eclipse sur la JVM.
   * Clic droit sur votre projet puis **Properties**   * Clic droit sur votre projet puis **Properties**
   * Dans la section **Java Build Path**, onglet **Librairies**,​ choisissez la ligne **Access rules** puis bouton **Edit**.   * Dans la section **Java Build Path**, onglet **Librairies**,​ choisissez la ligne **Access rules** puis bouton **Edit**.
Ligne 141: Ligne 136:
   * Dans **Resolution**,​ choisir "//​Accessible//"​ et dans **Rule pattern** mettre //"​%%javax/​smartcardio/​**%%"//​.   * Dans **Resolution**,​ choisir "//​Accessible//"​ et dans **Rule pattern** mettre //"​%%javax/​smartcardio/​**%%"//​.
   * Enfin valider.   * Enfin valider.
-Désormais, vos classes sont accessible.+Désormais, vos classes sont accessibles.
  
-=== Problème de détection des cibles ===+==== Problème de détection des cibles ​====
  
-Si votre cible est correctement ​détecter ​avec pcsc_scan mais pas avec Java, ceci est du à un [[https://​bugs.launchpad.net/​ubuntu/​+source/​sun-java6/​+bug/​378294|bug]] dans Ubuntu (ou Java au choix). ​+Si votre cible est correctement ​détectée ​avec pcsc_scan mais pas avec Java, ceci est du à un [[https://​bugs.launchpad.net/​ubuntu/​+source/​sun-java6/​+bug/​378294|bug]] dans Ubuntu (ou Java au choix).
  
 Par défaut, l'API Java cherche **libpcsclite.so** dans les dossiers ///​usr/​lib:/​usr/​lib64:/​usr/​local/​lib:/​usr/​local/​lib64//​. Cependant, sous Ubuntu, elle se situe dans le dossier ///lib//. Par défaut, l'API Java cherche **libpcsclite.so** dans les dossiers ///​usr/​lib:/​usr/​lib64:/​usr/​local/​lib:/​usr/​local/​lib64//​. Cependant, sous Ubuntu, elle se situe dans le dossier ///lib//.
  
-Pour y remédier, plusieurs solutions :+Pour y remédier, plusieurs solutions, soit vous copiez la bibliothèque au bon endroit : 
 +  * Sous architecture x86 : <​code>​sudo ln -s /​lib/​libpcsclite.so.1 /​usr/​local/​lib/​libpcsclite.so</​code>​ 
 +  * Sous architecture amd64 : <​code>​sudo ln -s /​lib/​libpcsclite.so.1 /​usr/​local/​lib64/​libpcsclite.so</​code>​
  
-== Copier la bibliothèque au bon endroit : == +Soit vous définissez ​la librairie à l'​exécution du programme : <​code ​java>
- +
-Sous architecture x86 : +
-<​code>​ +
-sudo ln -s /​lib/​libpcsclite.so.1 /​usr/​local/​lib/​libpcsclite.so +
-</​code>​ +
- +
-Sous architecture amd64 : +
-<​code>​ +
-sudo ln -s /​lib/​libpcsclite.so.1 /​usr/​local/​lib64/​libpcsclite.so +
-</​code>​ +
- +
-== Définir ​la librairie à l'​exécution du programme : == +
- +
-<​code>​+
 java -Dsun.security.smartcardio.library=/​usr/​local/​lib/​libpcsclite.so TestSmartCardIO ​ java -Dsun.security.smartcardio.library=/​usr/​local/​lib/​libpcsclite.so TestSmartCardIO ​
 </​code>​ </​code>​
- +Soit vous faites ​le travail dans le code en recherchant ​le fichier dans /lib dans le code : <​code ​java>
-== Faire le travail dans le code : == +
- +
-Rechercher ​le fichier dans /lib dans le code : +
- +
-<​code>​+
 File libPcscLite = new File("/​lib/​libpcsclite.so.1"​);​ File libPcscLite = new File("/​lib/​libpcsclite.so.1"​);​
 if (libPcscLite.exists()) { if (libPcscLite.exists()) {
Ligne 179: Ligne 157:
 } }
 </​code>​ </​code>​
-===== Outils ===== 
  
-Voici une liste non exhaustive d'outils pour les Smart Cards :+SpringCard met à disposition des outils ​gratuit ​pour PC/SC sur son site. Notamment un [[http://​www.springcard.com/​online/​applet_pcsc/​|applet Java en ligne]] qui permet de tester facilement si ''​javax.smartcardio''​ fonctionne.
  
-  * Le package **[[apt>​pcsc_tools]]** qui contient les outils suivant : +===== Liens externes ===== 
-     * **pcsc_scan** : un petit script d'​exemple qui détecte les périphériques et leurs cartes +  * [[https://wiki.debian.org/fr/Smartcards|liste des cartes reconnues sous debian avec leur pilote respectif]], 
-     * **gscriptor** : un petit logiciel avec interface graphique qui permet d'​envoyer des commandes APDU. +  * [[http://​www.springcard.com/​solutions/pcsc.htmlListe d'​outils PCSC recensé par SpringCard]].
-  ​* Les outils SpringCard : SpringCard met à disposition des outils gratuit pour PC/SC sur son site +
-     * [[http://www.springcard.com/solutions/pcsc.html|SpringCard PC/SC Quickstart]] : fonctionne sous Windows (mais peut être qu'​avec Wine ou Mono...) +
-     ​* [[http://​www.springcard.com/​online/​applet_pcsc/|Applet Java en ligne]] : permet de tester facilement si javax.smartcardio fonctionne chez vous+
  
-===== Liens externes =====+----
  
-[[http://​www.unixgarden.com/​index.php/​securite/​gestion-des-smartcards-sous-linux|Article de Linux Magazine sur les Smart Cards]] +//​Contributeurs : [[:utilisateurs:​SaiyanRiku]] ;//
-[[http://www.springcard.com/​solutions/​pcsc.html|Liste d'​outils PCSC recensé par SpringCard]]+
  • smartcards.1313242266.txt.gz
  • Dernière modification: Le 15/12/2011, 15:20
  • (modification externe)