[Load] Animations occasionnelles

Lionel VICTOR lionel.victor at gmail.com
Mer 24 Sep 20:19:54 CEST 2014


Hello les l0aders !

Comme évoqué hier en AG, je vous propose un sujet d'animation sur le thème
des cartes à puce... histoire de voir si le sujet intéresse du monde.

C'est un truc pas très classique, donc je pense qu'il faudrait prévoir
plusieurs séances pour faire l'introduction, puis 2 ou 3 TPs...

J'ai quelques cartes JavaCard assez musclées que je peux prêter pour le TP
et 2 lecteurs Gemplus très bien supportés sous linux (et windows bien
sur)... ceux qui ont des ordi portables un peu onéreux auront peut être un
lecteur intégré ?? Dell le fait souvent...

Voilà une ébauche de plan pour cette formation (on peut assez facilement
voir que c'est long et qu'il faudra scinder en plusieurs fois):
Si il y a un intérêt pour ce 'module', je travaillerai sur la découpe
idéale et je pondrai du contenu, mais comme c'est chronophage, je préfère
attendra vos remarques :o)

Introduction
- Qu'est-ce qu'une carte à puce ?
  - Historique : carte magnétique, cartes à mémoire (permet d'automatiser
les traitements, mais ne protège pas les secrets)
  - Carte à microprocesseur (LA carte à puce qui peut stocker des
information mais également les traiter, potentiellement en utilisant des
données secrètes qu'elle ne révélera jamais et qui seront donc bien
gardées!)
- Quel intérêt ?
  - Pas d'interface sexy, mais...
  - c'est un objet personnel qui peut garder des secrets
    - PIN code pour autoriser une transaction/fonction
    - Clés secrètes pour chiffrer des données (si les clés ne sont pas
connues par d'autres, alors personne ne peut chiffrer/déchiffrer/signer
sans la carte!)
  - bref: c'est surtout un objet pour faire du chiffrement, de la signature
ou de l'authentification...
  - c'est vachement bien pour faire les joints silicones dans la salle de
bain aussi...
- petit disclaimer:
  - c'est super de faire de la sécurité, mais...
  - la crypto mal implémenté, c'est comme se tirer une balle dans le pied
!!!
  - les attaques c'est un autre sujet, mais grosso modo:
    - toujours faire simple
    - standard
    - lire la doc, trouver les api qui font ce qu'on veut et éviter de
ré-inventer la roue !!!
- Quels standards?
  - ISO 7816 bien sur
  - JavaCard
  - companions : PKCS#11 et PKCS#15

Communiquer avec une carte à puce
- standard ISO 7816 L1-2?
  - explication du T=0
    - APDU typique, Status Word
    - cas 1, 2 et 3 ??? (pas de données, données sortantes, données
entrantes)
    - Introduction au get-response (cas 4)
- standard ISO 7816 L3
  - très rapide introduction aux commandes ISO haut niveau... select,
readbinary, etc...
- PCSC: introduction au développement... coté PC...
  - sous windows (winscard.dll ???)
  - sous linux macOS (pcsc lite : j'ai pas macOS, donc... ca restera
théorique :op )
- SCSH3/javascript : l'outil de la mort que je recommande (et qu'on
utilisera vraisemblablement pour le TP)
- GPShell (ca existe sous linux ce truc ???)

Développer...
- cartes silver card, goldcard etc, phoenix reader/programmer
- mais surtout !!! JavaCard !!!
  - Subset de Java plutot limité
  - pas de garbage collector digne de ce nom (donc pratiques de
programmation particulières et piégeuses !!!)
  - mais standardisé donc on ne code qu'une fois... en théorie (API privées
parfois)
- JavaCard et GlobalPlateform...
  - souvent associés (toujours ?)
  - présentation du card manager de GP, notions d'AIDs, chargement...

JavaCard
- petit tour de l'API, introduction aux fonctions vitales
  - Util.arraycopy
  - alloc mémoire statique (clear on select/reset)
- Introduction au modèle de développement et la chaîne de compilation
  - Compil Java
  - Le converter (plusieurs formats ijc, cap)
  - Chargement dans la carte

- Installation des drivers pour ceux qui veulent faire des manips à la suite
- Installation des SDK pour nos cartes JC2.2.1 (ou un truc comme ca)
- configuration des environnements

- première applet/ genre de hello world
  - plusieurs commandes pour tester un peu tous les cas (entrant, sortant
et sans données)
  - compil, chargement, problèmes ... on se bat ...
  - SCSH3 pour causer à la carte et à l'applet

- seconde applet
  - génération d'une clé symmétrique (3DES)
  - chiffrement / déchiffrement de données par blocs
  - SCSH3 pour causer à la carte et à l'applet

- troisième applet
  - génération d'une clé ECC (asymétrique donc)
  - signature (digest+sign)
  - gestion d'un PIN (objet standard de l'API javacard)
    - mise en garde sur les dangers d'une mauvaise gestion des PINs
    - attaques par timing, arrachement, etc...
  - SCSH3 pour causer à la carte et à l'applet et vérifier les signatures

introduction aux API propriétaires et aux "export-files"

- dernière applet
  - API propriétaire pour faire du sign-only avec la carte :) -> ca y est:
si vous voyagez aux US avec cette carte vous êtes un terroriste !
  - attention aux lois sur l'exportation de matériel crytpographique!!!

Conclusion sur le firewall et l'échange d'objets entre applets (mais là, je
suis pas un cador.. :o( )
-------------- section suivante --------------
Une pièce jointe HTML a été nettoyée...
URL: <http://lists.l0ad.org/pipermail/load/attachments/20140924/8e412f18/attachment.html>


More information about the Load mailing list