"<iclass="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 ."
* identification
* authentification
* ACL
## preuves
* 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
* algorithme de hashage [MD5](https://fr.wikipedia.org/wiki/MD5) plutôt qu'un simple encodage [base64](https://fr.wikipedia.org/wiki/Base64)
* ajout d'un [nonce](http://fr.wikipedia.org/wiki/Nonce_cryptographique), rattacher à la session de communication, pour éviter les [attaques "par rejeu"](https://fr.wikipedia.org/wiki/Attaque_par_rejeu)
| oAuth 1.0 | optionel | sans expiration | mise en place compliquée |
| oAuth 2.0 | obligatoire | révocable | simple et plus léger |
* 1.0 incompatible avec 2.0
*<iclass="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)
Note:
- authentification simple (instagram)
- souvent autorisations partielles attribuées à l'app
- le token évite de rejouer l'auth
- oAuth 1.0 en clair lire le token
- pas de consensus sur la version 1 ou 2 sur Internet
- confiance dans consumer (l'app qui demande l'autorisation)
## Les attaques brute force
* Différents types
* Attaque par dictionnaires
* devine automatiquement les paramètres d'authentification à partir d'une liste d'utilisateur / mot 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
* essaie toutes les combinaisons possibles entre les username de users.txt et les mots de passe de pass.txt
* + mot de passe vide
* + mot de passe = username
* + mot de passe = username à l'envers
*[OWASP - Testing for Brute Force](https://www.owasp.org/index.php/Testing_for_Brute_Force_%28OWASP-AT-004%29)
*[Using Hydra to dictionary-attack web-based login forms](http://insidetrust.blogspot.fr/2011/08/using-hydra-to-dictionary-attack-web.html)
* voir aussi [medusa](http://foofus.net/goons/jmk/medusa/medusa.html)
Note:
- Burp Suite
- Patator
## attaques offline
* Dépend de la puissance de calcul
* Non furtive
* Reproductible
*[OPHCRACK (the time-memory-trade-off-cracker)](http://lasecwww.epfl.ch/~oechslin/projects/ophcrack/)
* monde windows
* fichiers SAM
* fonctionne avec des [dictionnaires](http://ophcrack.sourceforge.net/tables.php)
*<iclass="fa fa-gift"></i><ahref="http://www.newbiecontest.org/index.php?page=epreuve&no=224">obtenir le pass d'un compte windows en moins de 10 minutes</a><!-- tips: le xp free suffit -->