WEBCRYPTO API
De la cryptographie dans le navigateur
@jcsirot
fr.linkedin.com/in/jcsirot/
Jean-Christophe Sirot
Paris JUG ...
POURQUOI UNE API CRYPTO ?
BIBLIOTHÈQUES
• sjcl (https://crypto.stanford.edu/sjcl/)
• crypto-js (https://code.google.com/p/crypto-js/)
• forge (https...
PROBLÈMES...
PROBLÈMES...
• Pas d’entier de 64 bits natifs, pas de big integer, pas de
tableaux performants
PROBLÈMES...
• Pas d’entier de 64 bits natifs, pas de big integer, pas de
tableaux performants
• Impossibilité des «calcul...
PROBLÈMES...
• Pas d’entier de 64 bits natifs, pas de big integer, pas de
tableaux performants
• Impossibilité des «calcul...
SOLUTIONS ?
• Applet Java
• Source d’aléa : https://random.org
SOLUTIONS ?
• Applet Java
• Source d’aléa : https://random.org
WebCrypto API : http://www.w3.org/TR/WebCryptoAPI/
var array = new Uint8Array(16);
window.crypto.getRandomValues(array);
GÉNÉRATEUR ALÉATOIRE
• Représentation des données : ...
WINDOW.CRYPTO.SUBTLE
• Interface avec les primitives cryptographiques : encrypt,
decrypt, sign, digest, generateKey...
• D...
var data = toArrayBufferView("Hello World!");
var algorithm = {
name: "SHA-256"
};
window.crypto.subtle.digest(algorithm, ...
DEMO
CAN I USE ?
http://caniuse.com/#feat=cryptography
LIMITATIONS
• Faire confiance aux applications web
• Pas encore disponible partout, tous les algorithmes ne sont
pas dispon...
QUESTIONS
POUR ALLER PLUS LOIN
https://www.schneier.com/book-applied.html
Applied Cryptography
Handbook of Applied Cryptography
http...
• https://www.flickr.com/photos/110751683@N02/13334048894/
• https://www.flickr.com/photos/derek_b/3046770021
CRÉDITS
Prochain SlideShare
Chargement dans…5
×

De la cryptographie dans le navigateur avec WebCrypto API

900 vues

Publié le

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 ?

Publié dans : Logiciels
0 commentaire
0 j’aime
Statistiques
Remarques
  • Soyez le premier à commenter

  • Soyez le premier à aimer ceci

Aucun téléchargement
Vues
Nombre de vues
900
Sur SlideShare
0
Issues des intégrations
0
Intégrations
33
Actions
Partages
0
Téléchargements
23
Commentaires
0
J’aime
0
Intégrations 0
Aucune incorporation

Aucune remarque pour cette diapositive

De la cryptographie dans le navigateur avec WebCrypto API

  1. 1. WEBCRYPTO API De la cryptographie dans le navigateur @jcsirot fr.linkedin.com/in/jcsirot/ Jean-Christophe Sirot Paris JUG - 13/01/2015
  2. 2. POURQUOI UNE API CRYPTO ?
  3. 3. BIBLIOTHÈQUES • sjcl (https://crypto.stanford.edu/sjcl/) • crypto-js (https://code.google.com/p/crypto-js/) • forge (https://github.com/digitalbazaar/forge) • digest.js (https://github.com/jcsirot/digest.js)
  4. 4. PROBLÈMES...
  5. 5. PROBLÈMES... • Pas d’entier de 64 bits natifs, pas de big integer, pas de tableaux performants
  6. 6. PROBLÈMES... • Pas d’entier de 64 bits natifs, pas de big integer, pas de tableaux performants • Impossibilité des «calculs longs» (thread unique)
  7. 7. 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)
  8. 8. SOLUTIONS ? • Applet Java • Source d’aléa : https://random.org
  9. 9. SOLUTIONS ? • Applet Java • Source d’aléa : https://random.org WebCrypto API : http://www.w3.org/TR/WebCryptoAPI/
  10. 10. var array = new Uint8Array(16); window.crypto.getRandomValues(array); GÉNÉRATEUR ALÉATOIRE • Représentation des données : ArrayBufferView • Fonction synchrone, non bloquante • Utilise une source d’aléa «sûre» du système (par exemple /dev/urandom)
  11. 11. WINDOW.CRYPTO.SUBTLE • Interface avec les primitives cryptographiques : encrypt, decrypt, sign, digest, generateKey... • Données sont passées sous forme de ArrayBufferView • Retourne une Promise javascript
  12. 12. var data = toArrayBufferView("Hello World!"); var algorithm = { name: "SHA-256" }; window.crypto.subtle.digest(algorithm, data) .then(function(result) { console.log(result); }) .catch(function(error) { console.error(error); }); PROMISE
  13. 13. DEMO
  14. 14. CAN I USE ? http://caniuse.com/#feat=cryptography
  15. 15. LIMITATIONS • 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 d’API update/finish, pas d’API de streaming, pas d’API pour utiliser les clés déjà présentes sur le système...)
  16. 16. QUESTIONS
  17. 17. POUR ALLER PLUS LOIN https://www.schneier.com/book-applied.html Applied Cryptography Handbook of Applied Cryptography http://cacr.uwaterloo.ca/hac/
  18. 18. • https://www.flickr.com/photos/110751683@N02/13334048894/ • https://www.flickr.com/photos/derek_b/3046770021 CRÉDITS

×