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édentesRévision précédente
Prochaine révision
Révision précédente
smartcards [Le 26/07/2012, 11:17] – [PC/SC (Personal computer/Smart Card)] 194.98.114.65smartcards [Le 21/03/2024, 17:42] (Version actuelle) – [javax.smartcardio] Fôte de Gramère Jean-Dom
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 embarquent 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 populaires de smart cards sont les cartes de paiement, les cartes vitales, les cartes de transport ou encore les cartes de fidélité distribuées en grandes surfaces.+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/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. (Sources : Wikipédia) +
- +
-=== Installation === +
- +
-La gestion des lecteurs PC/SC n'est pas native sous Linux, mais peut être très facilement ajoutée par l'installation des paquets **[[apt>pcscd,libpcsclite1]]** qui installent respectivement le démon PC/SC et la bibliothèque de communication : +
- +
-<code> +
-sudo apt-get install pcscd libpcsclite1 +
-</code>+
  
-Par la suitesuivant votre lecteuril vous faudra installer le driver PC/SC correspondant à votre périphérique. Un certain nombre est déjà fourni dans les dépôts Ubuntu.+La gestion des lecteurs PC/SC n'est pas native sous Linuxmais 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.
  
-<code+====Configuration==== 
-$> apt-cache search "PC/SC driver"+Par la suite, suivant 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> 
 +Vous obtiendrez une réponse qui vous permettra de savoir quel paquet installer : <code>
 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 ci vous listera les lecteurs reconnu et les cartes détectés sur ceux-ci avec quelques informations supplémentaires. +
-==== 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. 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 et que couplé à une applet Java, elle permet l'utilisation des cartes directement depuis le navigateur Web.+Un des ses atouts majeurs est que, couplée à une applet Java, elle permet l'utilisation des cartes directement depuis le navigateur Web.
  
-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]].+Cette API a été introduit depuis Java 1.6 et est disponible et fonctionnelle avec les [[:java]] et [[:openJDK]].
  
-=== Exemple d'utilisation ===+==== Exemple d'utilisation ====
  
-<code>+<code java>
 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 sur les classes de l'API un message d'erreur de ce type : +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 143: Ligne 138:
 Désormais, vos classes sont accessibles. 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é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). +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 : +
-     * **pcsc_scan** : un petit script d'exemple qui détecte les périphériques et leurs cartes +
-     * **gscriptor** : un petit logiciel avec interface graphique qui permet d'envoyer des commandes APDU. +
-  * 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 ===== ===== Liens externes =====
- +  * [[https://wiki.debian.org/fr/Smartcards|liste des cartes reconnues sous debian avec leur pilote respectif]], 
-[[http://www.unixgarden.com/index.php/securite/gestion-des-smartcards-sous-linux| Article de Linux Magazine sur les Smart Cards]] +  [[http://www.springcard.com/solutions/pcsc.html| Liste d'outils PCSC recensé par SpringCard]].
-[[http://www.springcard.com/solutions/pcsc.html| Liste d'outils PCSC recensé par SpringCard]]+
  
 ---- ----
  
-//Contributeurs :// +//Contributeurs : [[:utilisateurs:SaiyanRiku]] ;//
-  * //[[:utilisateurs:SaiyanRiku]] ;//+