SlideShare une entreprise Scribd logo
1  sur  18
Télécharger pour lire hors ligne
@hellosct1
@hellosct1@mamot.fr
Christophe Villeneuve
Le futur de l’authentification WebAuthn
Lizard Secu – Meetup – 27 Août 2020
@hellosct1
Aujourd’hui
●
WebAuthn : Qu’est ce ?
●
En pratique
●
Plus loin
●
WebAuthn : Qu’est ce ?
●
En pratique
●
Plus loin
@hellosct1
WebAuthn
●
Interface d'authentification des utilisateurs aux applications
Web
A l'aide de clés asymétriques
●
Norme de sécurité
– Développé par W3C & contribué avec la FIDO
– Publié en 2018
●
Permet orchestrer un système de défis cryptographiques
entre 3 entités
– Des applications, appelée Relying Party (RP)
– L’utilisateur souhaitant s’authentifier à l’application
– L’authenticateur : Elément sécurisé en charge de la crypto et de
la protection des secrets.
@hellosct1
WebAuthn : En 2 mots
●
Norme viserait à éliminer
→ La nécessité de saisir des mots de passe
lorsque les utilisateurs se connectent à Internet
●
Le but
– Sécuriser l’accès aux applications web,
– Empêcher les attaques de phishing,
●
Ex : Les utilisateurs des sites bancaires ou B2B / B2C
●
Méthode
– C’est une méthode de connexion plutôt que les mots de passe
– Approche alternative
→ comme deuxième méthode de vérification
@hellosct1
API Web Authentification
●
Compatible :
– Firefox 60 +
– Chrome 67 +
– Edge 18 +
– Opera 54 +
●
Solution SaaS
– Implémentation dans votre application permettant aux
utilisateurs de créer un compte et de se connecter.
– Appelée webauthn.me
●
Solution Auth0
– Simplifier en quelque sorte l’implémentation de cette spécification.
@hellosct1
Fonctionnement
●
Déroulement en plusieurs étapes :
– Enregistrer le nouvel utilisateur
– Touchez votre dispositif de sécurité
– Votre nouvel identifiant
– Authentification avec un identifiant
– Touchez votre dispositif de sécurité
USB
– Authentification
© https://en.wikipedia.org/wiki/WebAuthn
@hellosct1
Workflow
●
WebAuthn : Qu’est ce ?
●
En pratique
●
Plus loin
@hellosct1
Etape 1 : Opération d’enregistrement
navigator.credentials
.create({
publicKey: {
challenge: base64url.decode("<%= challenge %>"),
rp: {
name: "Awesome Corp" // sample relying party
},
user: {
id: base64url.decode("<%= id %>"),
name: "<%= name %>",
displayName: "<%= displayName %>"
},
authenticatorSelection: { userVerification: "preferred" },
attestation: "direct",
pubKeyCredParams: [
{
type: "public-key",
alg: -7 // "ES256" IANA COSE Algorithms registry
}
]
}
})
.then(res => {
var json = publicKeyCredentialToJSON(res);
post("/webauthn/register", {
state: "<%= state %>",
provider: "<%= provider %>",
res: JSON.stringify(json)
});
})
.catch(console.error);
Générer une clé aléatoire
(16 caractères)
relying party
Utilisateur
Réponse en JSON
Envoyé vers le serveur
@hellosct1
Etape 2 : Etape d’authentification (1/2)
navigator.credentials
.get({
publicKey: {
challenge: base64url.decode("<%= challenge %>"),
allowCredentials: [
{
id: base64url.decode("<%= id %>"),
type: "public-key"
}
],
timeout: 15000,
authenticatorSelection: { userVerification: "preferred" }
}
})
Générer une clé aléatoire
(16 caractères)
@hellosct1
Etape 2 : Etape d’authentification (2/2)
.then(res => {
var json = publicKeyCredentialToJSON(res);
post("/webauthn/authenticate", {
state: "<%= state %>",
provider: "<%= provider %>",
res: JSON.stringify(json)
});
})
.catch(err => {
alert("Invalid FIDO device");
});
Réponse en JSON
Envoyé vers le serveur
@hellosct1
En PHP
●
Demo
https://github.com/web-auth/webauthn-framework/tree/v3.2/src/webauthn
@hellosct1
Tester en ligne WebAuthn
●
Demo par yubico
– https://demo.yubico.com/webauthn/
●
WebAuthn : Qu’est ce ?
●
En pratique
●
Plus loin
@hellosct1
Enfin
●
Côté développeurs
– Implémenter l’API WebAuthn
●
Côté utilisateurs
– Attendre la mise en place de Généralisation
●
FIDO2 / WebAuthn
●
Côté des sites webs et des smartphones
●
Manière générale
– Délégation de l’authentification (vers les services Web)
→ OpenID Connect / OIDC
@hellosct1
Plus loin...
●
Guide WebAuthn
– https://webauthn.guide/
●
Demo par yubico
– https://demo.yubico.com/webauthn/
●
PHP
– https://github.com/web-auth/webauthn-framework
●
Javascript
– https://www.npmjs.com/package/webauthn
@hellosct1
Christophe Villeneuve
@hellosct1
@hellosct1@mamot.fr
Merci
Le futur de l’authentification WebAuthn

Contenu connexe

Tendances

Tendances (6)

Oauth2 & OpenID Connect
Oauth2 & OpenID ConnectOauth2 & OpenID Connect
Oauth2 & OpenID Connect
 
LTO Auth
LTO AuthLTO Auth
LTO Auth
 
Sso fédération
Sso fédérationSso fédération
Sso fédération
 
ASFWS 2012 - OAuth : un protocole d’autorisation qui authentifie ? par Maxime...
ASFWS 2012 - OAuth : un protocole d’autorisation qui authentifie ? par Maxime...ASFWS 2012 - OAuth : un protocole d’autorisation qui authentifie ? par Maxime...
ASFWS 2012 - OAuth : un protocole d’autorisation qui authentifie ? par Maxime...
 
SAML, Open ID et CAS dans un seul WebSSO : LemonLDAP::NG
SAML, Open ID et CAS dans un seul WebSSO : LemonLDAP::NGSAML, Open ID et CAS dans un seul WebSSO : LemonLDAP::NG
SAML, Open ID et CAS dans un seul WebSSO : LemonLDAP::NG
 
ASFWS 2011 : CAS, OpenID, SAML concepts, différences et exemples
ASFWS 2011 : CAS, OpenID, SAML  concepts, différences et exemplesASFWS 2011 : CAS, OpenID, SAML  concepts, différences et exemples
ASFWS 2011 : CAS, OpenID, SAML concepts, différences et exemples
 

Similaire à Le futur de l'authentification webAuthn

chap 4 Sécurité des accès.pdf
chap 4 Sécurité des accès.pdfchap 4 Sécurité des accès.pdf
chap 4 Sécurité des accès.pdf
depinfo
 
Conquérir l'internet des objets avec les technologies web. (Kiwi Party 2012)
Conquérir l'internet des objets avec les technologies web. (Kiwi Party 2012)Conquérir l'internet des objets avec les technologies web. (Kiwi Party 2012)
Conquérir l'internet des objets avec les technologies web. (Kiwi Party 2012)
Steren Giannini
 
Google glass droidcon - DroidCon Paris 2014
Google glass droidcon - DroidCon Paris 2014Google glass droidcon - DroidCon Paris 2014
Google glass droidcon - DroidCon Paris 2014
Paris Android User Group
 

Similaire à Le futur de l'authentification webAuthn (20)

La Grande Famille OAuth 2.0
La Grande Famille OAuth 2.0La Grande Famille OAuth 2.0
La Grande Famille OAuth 2.0
 
(Azure) Active Directory + BYOD = tranquillité d’esprit, chiche ! (2nde Partie)
(Azure) Active Directory + BYOD = tranquillité d’esprit, chiche ! (2nde Partie)(Azure) Active Directory + BYOD = tranquillité d’esprit, chiche ! (2nde Partie)
(Azure) Active Directory + BYOD = tranquillité d’esprit, chiche ! (2nde Partie)
 
(Azure) Active Directory + BYOD = tranquillité d’esprit, chiche ! (2nde Partie)
(Azure) Active Directory + BYOD = tranquillité d’esprit, chiche ! (2nde Partie)(Azure) Active Directory + BYOD = tranquillité d’esprit, chiche ! (2nde Partie)
(Azure) Active Directory + BYOD = tranquillité d’esprit, chiche ! (2nde Partie)
 
Durcissement de code - Sécurité Applicative Web
Durcissement de code - Sécurité Applicative WebDurcissement de code - Sécurité Applicative Web
Durcissement de code - Sécurité Applicative Web
 
Nouvelles expériences d'authentification avec Windows 8.1 pour vos applicatio...
Nouvelles expériences d'authentification avec Windows 8.1 pour vos applicatio...Nouvelles expériences d'authentification avec Windows 8.1 pour vos applicatio...
Nouvelles expériences d'authentification avec Windows 8.1 pour vos applicatio...
 
La fin du mot de passe pour accèder au cloud exemple de wikimedia (wikipedia)
La fin du mot de passe pour accèder au cloud   exemple de wikimedia (wikipedia)La fin du mot de passe pour accèder au cloud   exemple de wikimedia (wikipedia)
La fin du mot de passe pour accèder au cloud exemple de wikimedia (wikipedia)
 
Introduction oauth 2.0 et openid connect 1.0
Introduction oauth 2.0 et openid connect 1.0Introduction oauth 2.0 et openid connect 1.0
Introduction oauth 2.0 et openid connect 1.0
 
GS Days 2017 - La sécurité des APIs
GS Days 2017 - La sécurité des APIsGS Days 2017 - La sécurité des APIs
GS Days 2017 - La sécurité des APIs
 
Secure a REST API for external public access
Secure a REST API for external public accessSecure a REST API for external public access
Secure a REST API for external public access
 
La gestion des identités pour qui, pourquoi ?
La gestion des identités pour qui, pourquoi ?La gestion des identités pour qui, pourquoi ?
La gestion des identités pour qui, pourquoi ?
 
Sécurité des applications web: attaque et défense
Sécurité des applications web: attaque et défenseSécurité des applications web: attaque et défense
Sécurité des applications web: attaque et défense
 
SophiaConf 2010 Présentation de la conférence du 30 Juin - Gestion des identi...
SophiaConf 2010 Présentation de la conférence du 30 Juin - Gestion des identi...SophiaConf 2010 Présentation de la conférence du 30 Juin - Gestion des identi...
SophiaConf 2010 Présentation de la conférence du 30 Juin - Gestion des identi...
 
Google Authentication in Python - Destin.pdf
Google Authentication in Python - Destin.pdfGoogle Authentication in Python - Destin.pdf
Google Authentication in Python - Destin.pdf
 
chap 4 Sécurité des accès.pdf
chap 4 Sécurité des accès.pdfchap 4 Sécurité des accès.pdf
chap 4 Sécurité des accès.pdf
 
Azure IaaS : concevoir en architecture sécurisée en tirant bénéfice des nouve...
Azure IaaS : concevoir en architecture sécurisée en tirant bénéfice des nouve...Azure IaaS : concevoir en architecture sécurisée en tirant bénéfice des nouve...
Azure IaaS : concevoir en architecture sécurisée en tirant bénéfice des nouve...
 
Azure IaaS : concevoir en architecture sécurisée en tirant bénéfice des nouve...
Azure IaaS : concevoir en architecture sécurisée en tirant bénéfice des nouve...Azure IaaS : concevoir en architecture sécurisée en tirant bénéfice des nouve...
Azure IaaS : concevoir en architecture sécurisée en tirant bénéfice des nouve...
 
Conquérir l'internet des objets avec les technologies web. (Kiwi Party 2012)
Conquérir l'internet des objets avec les technologies web. (Kiwi Party 2012)Conquérir l'internet des objets avec les technologies web. (Kiwi Party 2012)
Conquérir l'internet des objets avec les technologies web. (Kiwi Party 2012)
 
Google glass droidcon - DroidCon Paris 2014
Google glass droidcon - DroidCon Paris 2014Google glass droidcon - DroidCon Paris 2014
Google glass droidcon - DroidCon Paris 2014
 
SSO et fédération d’identités avec le logiciel libre LemonLDAP::NG
SSO et fédération d’identités avec le logiciel libre LemonLDAP::NGSSO et fédération d’identités avec le logiciel libre LemonLDAP::NG
SSO et fédération d’identités avec le logiciel libre LemonLDAP::NG
 
L’authentification sans mot de passe, la meilleure façon de se protéger !
L’authentification sans mot de passe, la meilleure façon de se protéger ! L’authentification sans mot de passe, la meilleure façon de se protéger !
L’authentification sans mot de passe, la meilleure façon de se protéger !
 

Plus de Christophe Villeneuve

Plus de Christophe Villeneuve (20)

MariaDB une base de donnees NewSQL
MariaDB une base de donnees NewSQLMariaDB une base de donnees NewSQL
MariaDB une base de donnees NewSQL
 
La boîte à outils de développements dans Firefox
La boîte à outils de développements dans FirefoxLa boîte à outils de développements dans Firefox
La boîte à outils de développements dans Firefox
 
pister les pisteurs
pister les pisteurspister les pisteurs
pister les pisteurs
 
controler vos donnees éthiques dans le web
controler vos donnees éthiques dans le webcontroler vos donnees éthiques dans le web
controler vos donnees éthiques dans le web
 
Infrastructure as code drupal
Infrastructure as code drupalInfrastructure as code drupal
Infrastructure as code drupal
 
Mariadb une base de données NewSQL
Mariadb une base de données NewSQLMariadb une base de données NewSQL
Mariadb une base de données NewSQL
 
Open Source et contribution : Une association gagnante
Open Source et contribution : Une association gagnanteOpen Source et contribution : Une association gagnante
Open Source et contribution : Une association gagnante
 
Pentest bus pirate
Pentest bus piratePentest bus pirate
Pentest bus pirate
 
Peur de la migration vers l’open source ?
Peur de la migration vers l’open source ?Peur de la migration vers l’open source ?
Peur de la migration vers l’open source ?
 
La sécurité applicative par le design
La sécurité applicative par le designLa sécurité applicative par le design
La sécurité applicative par le design
 
Foxfooding semaine 3
Foxfooding semaine 3Foxfooding semaine 3
Foxfooding semaine 3
 
Foxfooding
FoxfoodingFoxfooding
Foxfooding
 
Accessibilite web wcag rgaa
Accessibilite web wcag rgaaAccessibilite web wcag rgaa
Accessibilite web wcag rgaa
 
Mozilla french speaking community activites
Mozilla french speaking community activitesMozilla french speaking community activites
Mozilla french speaking community activites
 
Monitoring dynamique : Grafana et Microsoft
Monitoring dynamique : Grafana et MicrosoftMonitoring dynamique : Grafana et Microsoft
Monitoring dynamique : Grafana et Microsoft
 
Etes vous-pret pour php8 ?
Etes vous-pret pour php8 ?Etes vous-pret pour php8 ?
Etes vous-pret pour php8 ?
 
Send large files with addons
Send large files with addonsSend large files with addons
Send large files with addons
 
Tests d'accessibilite par la pratique
Tests d'accessibilite par la pratiqueTests d'accessibilite par la pratique
Tests d'accessibilite par la pratique
 
Donnez la voix aux machines
Donnez la voix aux machinesDonnez la voix aux machines
Donnez la voix aux machines
 
La réalité mélangée dans vos applications
La réalité mélangée dans vos applicationsLa réalité mélangée dans vos applications
La réalité mélangée dans vos applications
 

Le futur de l'authentification webAuthn

  • 1. @hellosct1 @hellosct1@mamot.fr Christophe Villeneuve Le futur de l’authentification WebAuthn Lizard Secu – Meetup – 27 Août 2020
  • 3. ● WebAuthn : Qu’est ce ? ● En pratique ● Plus loin
  • 4. @hellosct1 WebAuthn ● Interface d'authentification des utilisateurs aux applications Web A l'aide de clés asymétriques ● Norme de sécurité – Développé par W3C & contribué avec la FIDO – Publié en 2018 ● Permet orchestrer un système de défis cryptographiques entre 3 entités – Des applications, appelée Relying Party (RP) – L’utilisateur souhaitant s’authentifier à l’application – L’authenticateur : Elément sécurisé en charge de la crypto et de la protection des secrets.
  • 5. @hellosct1 WebAuthn : En 2 mots ● Norme viserait à éliminer → La nécessité de saisir des mots de passe lorsque les utilisateurs se connectent à Internet ● Le but – Sécuriser l’accès aux applications web, – Empêcher les attaques de phishing, ● Ex : Les utilisateurs des sites bancaires ou B2B / B2C ● Méthode – C’est une méthode de connexion plutôt que les mots de passe – Approche alternative → comme deuxième méthode de vérification
  • 6. @hellosct1 API Web Authentification ● Compatible : – Firefox 60 + – Chrome 67 + – Edge 18 + – Opera 54 + ● Solution SaaS – Implémentation dans votre application permettant aux utilisateurs de créer un compte et de se connecter. – Appelée webauthn.me ● Solution Auth0 – Simplifier en quelque sorte l’implémentation de cette spécification.
  • 7. @hellosct1 Fonctionnement ● Déroulement en plusieurs étapes : – Enregistrer le nouvel utilisateur – Touchez votre dispositif de sécurité – Votre nouvel identifiant – Authentification avec un identifiant – Touchez votre dispositif de sécurité USB – Authentification © https://en.wikipedia.org/wiki/WebAuthn
  • 9. ● WebAuthn : Qu’est ce ? ● En pratique ● Plus loin
  • 10. @hellosct1 Etape 1 : Opération d’enregistrement navigator.credentials .create({ publicKey: { challenge: base64url.decode("<%= challenge %>"), rp: { name: "Awesome Corp" // sample relying party }, user: { id: base64url.decode("<%= id %>"), name: "<%= name %>", displayName: "<%= displayName %>" }, authenticatorSelection: { userVerification: "preferred" }, attestation: "direct", pubKeyCredParams: [ { type: "public-key", alg: -7 // "ES256" IANA COSE Algorithms registry } ] } }) .then(res => { var json = publicKeyCredentialToJSON(res); post("/webauthn/register", { state: "<%= state %>", provider: "<%= provider %>", res: JSON.stringify(json) }); }) .catch(console.error); Générer une clé aléatoire (16 caractères) relying party Utilisateur Réponse en JSON Envoyé vers le serveur
  • 11. @hellosct1 Etape 2 : Etape d’authentification (1/2) navigator.credentials .get({ publicKey: { challenge: base64url.decode("<%= challenge %>"), allowCredentials: [ { id: base64url.decode("<%= id %>"), type: "public-key" } ], timeout: 15000, authenticatorSelection: { userVerification: "preferred" } } }) Générer une clé aléatoire (16 caractères)
  • 12. @hellosct1 Etape 2 : Etape d’authentification (2/2) .then(res => { var json = publicKeyCredentialToJSON(res); post("/webauthn/authenticate", { state: "<%= state %>", provider: "<%= provider %>", res: JSON.stringify(json) }); }) .catch(err => { alert("Invalid FIDO device"); }); Réponse en JSON Envoyé vers le serveur
  • 14. @hellosct1 Tester en ligne WebAuthn ● Demo par yubico – https://demo.yubico.com/webauthn/
  • 15. ● WebAuthn : Qu’est ce ? ● En pratique ● Plus loin
  • 16. @hellosct1 Enfin ● Côté développeurs – Implémenter l’API WebAuthn ● Côté utilisateurs – Attendre la mise en place de Généralisation ● FIDO2 / WebAuthn ● Côté des sites webs et des smartphones ● Manière générale – Délégation de l’authentification (vers les services Web) → OpenID Connect / OIDC
  • 17. @hellosct1 Plus loin... ● Guide WebAuthn – https://webauthn.guide/ ● Demo par yubico – https://demo.yubico.com/webauthn/ ● PHP – https://github.com/web-auth/webauthn-framework ● Javascript – https://www.npmjs.com/package/webauthn