Les API HTML5 ont fait de notre navigateur web le nouvel OS ; on fait absolument tout dedans : de la bureautique, du code, des jeux... l'API WebCrypto apporte la couche de sécurité côté client qui manquait à certaines applications (coffre fort en ligne, messagerie chiffrée, etc). Quels problèmes cette API resout elle, comment fonctionne-t-elle et quels sont ses limites ?
La démo : https://github.com/jcsirot/demo-webcrypto
8. @jcsirot#WebCryptoAPI
... et des problèmes
• Pas d’entier de 64 bits natifs, pas de big integer, pas de tableaux
performants
• Impossibilité des «calculs longs» (thread unique)
9. @jcsirot#WebCryptoAPI
... et des problèmes
• Pas d’entier de 64 bits natifs, pas de big integer, pas de tableaux
performants
• Impossibilité des «calculs longs» (thread unique)
• Pas de générateur de nombres aléatoires de qualité (PRNG)
10. @jcsirot#WebCryptoAPI
... et des problèmes
• Pas d’entier de 64 bits natifs, pas de big integer, pas de tableaux
performants
• Impossibilité des «calculs longs» (thread unique)
• Pas de générateur de nombres aléatoires de qualité (PRNG)
• Sandbox
15. @jcsirot#WebCryptoAPI
var array = new Uint8Array(16);
window.crypto.getRandomValues(array);
Générateur aléatoire
• ArrayBufferView pour représenter les données
• Fonction synchrone, non bloquante
• Utilise une source d’aléa «sûre» du système
(par exemple /dev/urandom)
20. @jcsirot#WebCryptoAPI
Limitations
• Modèle de sécurité : faire confiance aux applications web
• Pas encore disponible partout, tous les algorithmes ne sont pas
disponibles
• version 1 de l’API n’est pas parfaite (pas de update/finish, pas de
streaming, impossibilité d’utiliser les clés déjà présentes sur le
système...)
• Working Draft WebCrypto Key Discovery (http://www.w3.org/
TR/webcrypto-key-discovery/)
22. @jcsirot#WebCryptoAPI
Pour aller plus loin
https://www.schneier.com/book-applied.html
Applied Cryptography
Handbook of Applied Cryptography
http://cacr.uwaterloo.ca/hac/