Outils pour utilisateurs

Outils du site


securite:crypto

Différences

Ci-dessous, les différences entre deux révisions de la page.

Lien vers cette vue comparative

Prochaine révision
Révision précédente
securite:crypto [2017/02/15 02:23] – créée sgariepysecurite:crypto [2022/02/02 00:42] (Version actuelle) – modification externe 127.0.0.1
Ligne 1: Ligne 1:
 +====== Authentification à une API REST par clé ======
 +
 +Il y plusieurs façons de le faire, selon la complexité dont on a besoin.  On peut simplement générer une clé d'API, garder le hash de cette clé et la comparer avec ce qui est reçu dans les requêtes.
 +
 +On peut aussi avoir une clé d'API avec un secret.  Le secret permet de signer la requête et on donne la clé d'API en //clair// pour que le fournisseur de l'API puisse retrouver le secret dans une base de données.  Le fournisseur recalcule la signature et si elle est la même que celle reçu, la requête est authentifiée.
 +
 +
 +
 +
 ====== Salt ====== ====== Salt ======
  
 Des octets au hasard de 32-bits serait suffisant, on peut en utiliser de 64-bit.  [[http://stackoverflow.com/questions/184112/what-is-the-optimal-length-for-user-password-salt|What is the optimal length for user password salt?]] Des octets au hasard de 32-bits serait suffisant, on peut en utiliser de 64-bit.  [[http://stackoverflow.com/questions/184112/what-is-the-optimal-length-for-user-password-salt|What is the optimal length for user password salt?]]
 +
 +<code javascript>
 +const SALT_FACTOR = 5;
 +
 +bcrypt.genSalt(SALT_FACTOR, (err, salt) => { });
 +</code>
 +====== Secret ======
 +
 +Sert à créer une signature, par exemple avec la requête.  Voir un exemple là : [[http://docs.aws.amazon.com/AmazonS3/latest/dev/S3_Authentication2.html|Authenticating Requests Using the REST API]].
 +
 +On peut utiliser :
 +
 +  var secretKey = uuid.v4();
 +  
 +  
 +  
 +Note: On peut utiliser [[https://github.com/ai/nanoid|NanoID]] au lieu de uuid.v4.
 +====== API Key ======
 +
 +Longueurs suggérées : octets de 32, 40 ou 64 selon l'utilisation, on aurait donc une clé de 256-bits minimalement.
 +
 +Stocker le hash de la clé.
 +
 +====== Packages node ======
 +
 +
 +  * [[https://nodejs.org/api/crypto.html|Crypto]] (module built-in à node)
 +  * [[https://www.npmjs.com/package/node-uuid|Node-UUID]]
 +  * [[https://github.com/substack/node-hat|Hat]]
 +  * [[https://www.npmjs.com/package/speakeasy|Speakeasy]] (two-factor auth)
 +
 +
 +====== Sources ======
 +
 +  * [[http://docs.aws.amazon.com/AmazonS3/latest/dev/RESTAuthentication.html|Signing and Authenticating REST Requests]]
  
securite/crypto.1487121787.txt.gz · Dernière modification : 2022/02/02 00:43 (modification externe)