SlideShare une entreprise Scribd logo
1  sur  18
Télécharger pour lire hors ligne
WEBCRYPTO API
De la cryptographie dans le navigateur
@jcsirot
fr.linkedin.com/in/jcsirot/
Jean-Christophe Sirot
Paris JUG - 13/01/2015
POURQUOI UNE API CRYPTO ?
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)
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 «calculs longs» (thread unique)
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)
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 : ArrayBufferView
• Fonction synchrone, non bloquante
• Utilise une source d’aléa «sûre» du système
(par exemple /dev/urandom)
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
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
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 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...)
QUESTIONS
POUR ALLER PLUS LOIN
https://www.schneier.com/book-applied.html
Applied Cryptography
Handbook of Applied Cryptography
http://cacr.uwaterloo.ca/hac/
• https://www.flickr.com/photos/110751683@N02/13334048894/
• https://www.flickr.com/photos/derek_b/3046770021
CRÉDITS

Contenu connexe

En vedette

politique pro contra cyclique
politique pro contra cycliquepolitique pro contra cyclique
politique pro contra cycliqueEmmanuel Senna
 
Guía de debates para candidatos - NDI
Guía de debates para candidatos - NDIGuía de debates para candidatos - NDI
Guía de debates para candidatos - NDIndiperu
 
COMPRENDRE ET APPRENDRE EXCEL
COMPRENDRE    ET  APPRENDRE EXCELCOMPRENDRE    ET  APPRENDRE EXCEL
COMPRENDRE ET APPRENDRE EXCELEssaber Inel
 
Un president-ne-devrait-pas-dire-ca
Un president-ne-devrait-pas-dire-caUn president-ne-devrait-pas-dire-ca
Un president-ne-devrait-pas-dire-caTAREK CHABIR
 
Tiempos inolvidables
Tiempos inolvidablesTiempos inolvidables
Tiempos inolvidablesBetoso1591
 
Les nouvelles tendances du e commerce
Les nouvelles tendances du e commerceLes nouvelles tendances du e commerce
Les nouvelles tendances du e commerceVirginie ZOUINE
 
Fortaleciendo las capacidades de los partidos políticos y los Congresos en se...
Fortaleciendo las capacidades de los partidos políticos y los Congresos en se...Fortaleciendo las capacidades de los partidos políticos y los Congresos en se...
Fortaleciendo las capacidades de los partidos políticos y los Congresos en se...ndiperu
 
Acceso a la propiedad
Acceso a la propiedadAcceso a la propiedad
Acceso a la propiedadGrecia
 
Un Jardin dans ma Cour
Un Jardin dans ma CourUn Jardin dans ma Cour
Un Jardin dans ma CourPO-2
 

En vedette (17)

Présentation sur le VIH Tunisie- French
Présentation sur le VIH Tunisie- FrenchPrésentation sur le VIH Tunisie- French
Présentation sur le VIH Tunisie- French
 
26feb 2015
26feb 201526feb 2015
26feb 2015
 
politique pro contra cyclique
politique pro contra cycliquepolitique pro contra cyclique
politique pro contra cyclique
 
Guía de debates para candidatos - NDI
Guía de debates para candidatos - NDIGuía de debates para candidatos - NDI
Guía de debates para candidatos - NDI
 
COMPRENDRE ET APPRENDRE EXCEL
COMPRENDRE    ET  APPRENDRE EXCELCOMPRENDRE    ET  APPRENDRE EXCEL
COMPRENDRE ET APPRENDRE EXCEL
 
Un president-ne-devrait-pas-dire-ca
Un president-ne-devrait-pas-dire-caUn president-ne-devrait-pas-dire-ca
Un president-ne-devrait-pas-dire-ca
 
Tiempos inolvidables
Tiempos inolvidablesTiempos inolvidables
Tiempos inolvidables
 
Les nouvelles tendances du e commerce
Les nouvelles tendances du e commerceLes nouvelles tendances du e commerce
Les nouvelles tendances du e commerce
 
3. tni
3. tni3. tni
3. tni
 
Fortaleciendo las capacidades de los partidos políticos y los Congresos en se...
Fortaleciendo las capacidades de los partidos políticos y los Congresos en se...Fortaleciendo las capacidades de los partidos políticos y los Congresos en se...
Fortaleciendo las capacidades de los partidos políticos y los Congresos en se...
 
Aiw msp dev_days_dla_2014
Aiw msp dev_days_dla_2014Aiw msp dev_days_dla_2014
Aiw msp dev_days_dla_2014
 
22 jan 20151
22 jan 2015122 jan 20151
22 jan 20151
 
Nana bapu
Nana bapuNana bapu
Nana bapu
 
Revue de la mise en oeuvre de l'ECOWAP
Revue de la mise en oeuvre de l'ECOWAPRevue de la mise en oeuvre de l'ECOWAP
Revue de la mise en oeuvre de l'ECOWAP
 
Acceso a la propiedad
Acceso a la propiedadAcceso a la propiedad
Acceso a la propiedad
 
Cumple anabel
Cumple anabelCumple anabel
Cumple anabel
 
Un Jardin dans ma Cour
Un Jardin dans ma CourUn Jardin dans ma Cour
Un Jardin dans ma Cour
 

Similaire à De la cryptographie dans le navigateur avec WebCrypto API

Paris Web 2015 - Atelier desendettement javascript
Paris Web 2015 - Atelier desendettement javascriptParis Web 2015 - Atelier desendettement javascript
Paris Web 2015 - Atelier desendettement javascriptMichael Akbaraly
 
Paris Web 2015 - Atelier désendettement Javascript legacy
Paris Web 2015 - Atelier désendettement Javascript legacyParis Web 2015 - Atelier désendettement Javascript legacy
Paris Web 2015 - Atelier désendettement Javascript legacyFrançois Petitit
 
L'outillage git sous eclipse
L'outillage git sous eclipseL'outillage git sous eclipse
L'outillage git sous eclipseIgor Laborie
 
#MSDEVMTL Introduction à #SonarQube
#MSDEVMTL Introduction à #SonarQube#MSDEVMTL Introduction à #SonarQube
#MSDEVMTL Introduction à #SonarQubeVincent Biret
 
TypeScript for dummies
TypeScript for dummiesTypeScript for dummies
TypeScript for dummiesMicrosoft
 
Trucs et astuces sur le dévelopment Android
Trucs et astuces sur le dévelopment AndroidTrucs et astuces sur le dévelopment Android
Trucs et astuces sur le dévelopment AndroidThierry-Dimitri Roy
 
La Quete du code source fiable et sécurisé - GSDAYS 2015
La Quete du code source fiable et sécurisé - GSDAYS 2015La Quete du code source fiable et sécurisé - GSDAYS 2015
La Quete du code source fiable et sécurisé - GSDAYS 2015Sebastien Gioria
 
Kevin Avignon: Roslyn - La plateforme de compilation .NET
Kevin Avignon: Roslyn - La plateforme de compilation .NETKevin Avignon: Roslyn - La plateforme de compilation .NET
Kevin Avignon: Roslyn - La plateforme de compilation .NETMSDEVMTL
 
Importer 500 millions de données de MySQL vers Neo4j
Importer 500 millions de données de MySQL vers Neo4jImporter 500 millions de données de MySQL vers Neo4j
Importer 500 millions de données de MySQL vers Neo4jGabriel Pillet 🐙
 
Hacking your home
Hacking your homeHacking your home
Hacking your homelaurenthuet
 
OCTO - 2013 - Devoxx - la mort du gc
OCTO - 2013 - Devoxx - la mort du gcOCTO - 2013 - Devoxx - la mort du gc
OCTO - 2013 - Devoxx - la mort du gcOCTO Technology
 
Les nouveautés d'Unity 2018
Les nouveautés d'Unity 2018Les nouveautés d'Unity 2018
Les nouveautés d'Unity 2018Yannick Comte
 
Réalité virtuelle + Open source = <3
Réalité virtuelle + Open source = <3Réalité virtuelle + Open source = <3
Réalité virtuelle + Open source = <3Yannick Comte
 
Présentation Agile Tour 2015 - Agilité et Internet des Objets
Présentation Agile Tour 2015 - Agilité et Internet des ObjetsPrésentation Agile Tour 2015 - Agilité et Internet des Objets
Présentation Agile Tour 2015 - Agilité et Internet des ObjetsVincent Hubert
 

Similaire à De la cryptographie dans le navigateur avec WebCrypto API (20)

Paris Web 2015 - Atelier desendettement javascript
Paris Web 2015 - Atelier desendettement javascriptParis Web 2015 - Atelier desendettement javascript
Paris Web 2015 - Atelier desendettement javascript
 
_JCVFr
_JCVFr_JCVFr
_JCVFr
 
Paris Web 2015 - Atelier désendettement Javascript legacy
Paris Web 2015 - Atelier désendettement Javascript legacyParis Web 2015 - Atelier désendettement Javascript legacy
Paris Web 2015 - Atelier désendettement Javascript legacy
 
L'outillage git sous eclipse
L'outillage git sous eclipseL'outillage git sous eclipse
L'outillage git sous eclipse
 
Usine Logicielle 2013
Usine Logicielle 2013Usine Logicielle 2013
Usine Logicielle 2013
 
Javascript proprement
Javascript proprementJavascript proprement
Javascript proprement
 
Microcontroleur
MicrocontroleurMicrocontroleur
Microcontroleur
 
_JCVFr
_JCVFr_JCVFr
_JCVFr
 
Comment ça c'est pas du Flash ?
Comment ça c'est pas du Flash ?Comment ça c'est pas du Flash ?
Comment ça c'est pas du Flash ?
 
#MSDEVMTL Introduction à #SonarQube
#MSDEVMTL Introduction à #SonarQube#MSDEVMTL Introduction à #SonarQube
#MSDEVMTL Introduction à #SonarQube
 
TypeScript for dummies
TypeScript for dummiesTypeScript for dummies
TypeScript for dummies
 
Trucs et astuces sur le dévelopment Android
Trucs et astuces sur le dévelopment AndroidTrucs et astuces sur le dévelopment Android
Trucs et astuces sur le dévelopment Android
 
La Quete du code source fiable et sécurisé - GSDAYS 2015
La Quete du code source fiable et sécurisé - GSDAYS 2015La Quete du code source fiable et sécurisé - GSDAYS 2015
La Quete du code source fiable et sécurisé - GSDAYS 2015
 
Kevin Avignon: Roslyn - La plateforme de compilation .NET
Kevin Avignon: Roslyn - La plateforme de compilation .NETKevin Avignon: Roslyn - La plateforme de compilation .NET
Kevin Avignon: Roslyn - La plateforme de compilation .NET
 
Importer 500 millions de données de MySQL vers Neo4j
Importer 500 millions de données de MySQL vers Neo4jImporter 500 millions de données de MySQL vers Neo4j
Importer 500 millions de données de MySQL vers Neo4j
 
Hacking your home
Hacking your homeHacking your home
Hacking your home
 
OCTO - 2013 - Devoxx - la mort du gc
OCTO - 2013 - Devoxx - la mort du gcOCTO - 2013 - Devoxx - la mort du gc
OCTO - 2013 - Devoxx - la mort du gc
 
Les nouveautés d'Unity 2018
Les nouveautés d'Unity 2018Les nouveautés d'Unity 2018
Les nouveautés d'Unity 2018
 
Réalité virtuelle + Open source = <3
Réalité virtuelle + Open source = <3Réalité virtuelle + Open source = <3
Réalité virtuelle + Open source = <3
 
Présentation Agile Tour 2015 - Agilité et Internet des Objets
Présentation Agile Tour 2015 - Agilité et Internet des ObjetsPrésentation Agile Tour 2015 - Agilité et Internet des Objets
Présentation Agile Tour 2015 - Agilité et Internet des Objets
 

De la cryptographie dans le navigateur avec WebCrypto API