diff --git a/content/slides/1337/images/authentication/jwt-auth.png b/content/slides/1337/images/authentication/jwt-auth.png new file mode 100644 index 0000000000000000000000000000000000000000..ada23c756b67c380b9c6d389fd1b5bf4fca90721 Binary files /dev/null and b/content/slides/1337/images/authentication/jwt-auth.png differ diff --git a/content/slides/1337/images/authentication/oAuth.png b/content/slides/1337/images/authentication/oAuth.png new file mode 100644 index 0000000000000000000000000000000000000000..e9ec6d43bf8eb08675f2f1b468743a112983cb07 Binary files /dev/null and b/content/slides/1337/images/authentication/oAuth.png differ diff --git a/content/slides/1337/md/authentication.md b/content/slides/1337/md/authentication.md index 670e4bb50c6db0eac40635a6f26c0a817dfb51c4..cf377a489f2725cc698d0e949878eef412a2e4cf 100644 --- a/content/slides/1337/md/authentication.md +++ b/content/slides/1337/md/authentication.md @@ -2,8 +2,11 @@ "<i class="fa fa-wikipedia-w" aria-hidden="true"></i> processus permettant à un système de s'assurer de la légitimité de la demande d'accès faite par une entité (être humain ou un autre système...) afin d'autoriser l'accès de cette entité à des ressources du système (systèmes, réseaux, applications…) conformément au paramétrage du contrôle d'accès ." + +## 3 concepts + * identification -* authentification +* **authentification** * ACL @@ -12,22 +15,14 @@ * ce que je sais * mot de passe, numéro d'identification personnel * ce que je possède - * carte d'identité, carte à puce, droit de propriété, certificat électronique, diplôme, passeport, Token, Token OTP, préiphérique + * carte d'identité, carte à puce, droit de propriété, certificat électronique, diplôme, passeport, Token, Token OTP, périphérique * ce que je suis * photo, caractéristique physique, voire biométrie * ce que je sais faire * geste, signature -## sur le web - -* authentification HTTP - * basic - * digest -* authentification par formulaire -* authentification déportée - * OAuth -* authentification d'API +# quelques techniques ## apache & .htaccess @@ -174,7 +169,8 @@ htdigest /var/www/http-basic/.htdigest "authdigest" otheruser ## auth digest -le client demande un contenu (protégé) +* le client demande un contenu (protégé) +* le serveur répond que le contenu est protégé ```http HTTP/1.1 401 Unauthorized @@ -187,9 +183,12 @@ WWW-Authenticate: Digest realm="OwaspSample", ``` -## auth digest +## auth basic -le serveur répond que le contenu est protégé + + + +## auth digest ```http GET /example/owasp/test.asmx HTTP/1.1 @@ -237,47 +236,22 @@ le plus courant * le mot de passe est transmis en clair au serveur * https :) * stocker les mots de passe en clair sur le serveur est un mauvaise idée - * stocker les hashés est un bonne pratique - * [Rockyou.com en 2010](http://commedansdubeurre.ch/?story=162-piratage-de-32-millions-de-comptes-utilisateurs-chez-rockyou-recours-collectif-depose) - -Note: -- peut être en GET - - plus facile pour le scripter en brute force - - et encore - - passe dans l'url? - - server-status intéressant -- http sniffbale https ok -- peut avoir du code coté client (calcul du md5 en js avant soumiision par exemple) -- 3 étapes - - formulaire - - traitement serveur - - la ressource (notamment accès direct) ou information 403 avec la suite -- dépend beaucoup des développeurs - - best practice - - esapi OWASP -- récupération du token de session suffit souvent (passé par GET par exemple SID ou par cookie) -- potentiellement - - lock out sur brute force - - paramètre assitionel - timestamp -- XSS redirect user vers une page d'auth fake -- SQL injection -- marche aussi avec un interpréteur de commande LDAP -- pour l'attaque des fois ca répond 200 alors que c'est non (ca devrait être 403) - - méfiance + * [Rockyou.com en 2010](http://commedansdubeurre.ch/?story=162-piratage-de-32-millions-de-comptes-utilisateurs-chez-rockyou-recours-collectif-depose) +* stocker les hashés est une bonne pratique +* saler les hashés est encore mieux ## oAuth -* tri-partie + -<div style="text-align: center"> -<!-- .element style="width: 50%" --> -</div> -| Version | SSL | Token | Technique | -| --------- | ----------- | --------------- | ------------------------ | -| oAuth 1.0 | optionel | sans expiration | mise en place compliquée | -| oAuth 2.0 | obligatoire | révocable | simple et plus léger | +## oAuth + +| Version | SSL | Token | Technique | +| ------- | ----------- | --------------- | ------------------------ | +| 1.0 | optionel | sans expiration | mise en place compliquée | +| 2.0 | obligatoire | révocable | simple et plus léger | * 1.0 incompatible avec 2.0 * <i class="fa fa-newspaper-o"></i> [How to Secure Your REST API using Proven Best Practices](https://stormpath.com/blog/secure-your-rest-api-right-way) @@ -291,19 +265,22 @@ Note: - confiance dans consumer (l'app qui demande l'autorisation) -## Les attaques brute force +## JWT + +[<!-- .element style="width: 80%" -->](https://blog.ippon.fr/2017/10/12/preuve-dauthentification-avec-jwt/) -* Différents types - * Attaque par dictionnaires - * devine automatiquement les paramètres d'authentification à partir d'une liste d'utilisateur / mot de passe + +## force brute + +* par dictionnaires + * liste d'utilisateurs + list de mots de passe * optimisable avec de la probabilité, [des dictionnaires au hasard](https://dazzlepod.com/site_media/txt/passwords.txt), de l'ingénieurie sociale, du flaire etc ... - * Attaque par recherche - * essayer toutes les combinisaons de caractères - * trouver un mot de passe de 8 caractères composé exclusivement de caractères alphabétiques: 26<sup>8</sup> possibilités - * Attaque par recherche basée sur des règles - * décliner via des règles les propositions d'un dictionnaire - * leetspeakation automatique - * [John the Ripper](http://www.openwall.com/john/) permet de générer des mots de passes dérivant de parties du username +* par recherche + * combinatoire +* hybride + * décliner via des règles les propositions d'un dictionnaire + * leetspeakation automatique + * [John the Ripper](http://www.openwall.com/john/) permet de générer des mots de passes dérivant de parties du username ## [THC Hydra](http://www.thc.org/thc-hydra/) @@ -372,6 +349,16 @@ unshadow /etc/passwd /etc/shadow > mypasswd </pre> +## 2AF + +https://www.google.com/landing/2step/ + + +## Yubikey + +[](https://www.yubico.com/) + + ## <i class="fa fa-medkit"></i> Se protéger * bien choisir son système d'authentification @@ -388,3 +375,6 @@ unshadow /etc/passwd /etc/shadow > mypasswd * sensibilisez vos utilisateurs * [<i class="fa fa-desktop"></i> Se protéger avec de bons mots de passe](http://doc.m4z3.me/_/bpu/se_proteger_avec_de_bons_mots_de_passe.htm#/cover) * [<i class="fa fa-video-camera"></i> Se protéger avec de bons mots de passe](http://webtv.u-clermont1.fr/media-MEDIA150410174414391) + +* mettre en place en deuxième facteur d'authentification +* utiliser la crypto asymétrique diff --git a/content/slides/privacy/md/passwords.md b/content/slides/privacy/md/passwords.md index fc2ac77cd324cd305634e386497193edbbbac9ef..306e65542e289fd34bc1d477840877177bdcb09f 100644 --- a/content/slides/privacy/md/passwords.md +++ b/content/slides/privacy/md/passwords.md @@ -197,8 +197,3 @@ ## Solution Hardware [](https://www.themooltipass.com/) - - -## [Ubikey](https://www.yubico.com/) - -[](https://www.yubico.com/)