[Load] Animations occasionnelles

Andre Lagreze andre.lagreze at iut-valence.fr
Mer 24 Sep 22:18:30 CEST 2014


  bonjour Lionel,

Le sujet me parait très alléchant.  Un grand merci pour cette proposition.
    Cordialement
  André

----- Mail original -----
De: "Lionel VICTOR" <lionel.victor at gmail.com>
À: load at lists.l0ad.org
Envoyé: Mercredi 24 Septembre 2014 20:19:54
Objet: [Load] Animations occasionnelles

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( ) 


_______________________________________________
Load mailing list
Load at lists.l0ad.org
http://lists.l0ad.org/cgi-bin/mailman/listinfo/load


More information about the Load mailing list