6
votes

Les uuids cryptographiquement forts peuvent-ils être générés en JavaScript?

Quel est l'état des navigateurs Web d'aujourd'hui (Chrome, IE, Safari & Firefox) et leur capacité à créer des uuids cryptographiquement forts? Dans la recherche de cette question, j'ai été incapable de trouver quelque chose de définitif. J'ai rencontré des informations sur Stackoverflow et ailleurs qui indiquent des problèmes avec Math.Random, mais j'aimerais savoir quel est l'état actuel de tout cela.

mise à jour

comme icktoofay pointué, crypto.getrandomvalues ​​ est le moyen de le faire. Malheureusement, le soutien entre les navigateurs est limité. Y a-t-il un moyen éprouvé de contourner cela? Y a-t-il des bibliothèques JavaScript qui abordent ce problème?


3 commentaires

Qu'entendez-vous par «Uuid cryptographiquement fort»? Les uuids ne sont pas censés être cryptographiquement quoi que ce soit - ils sont censés être uniques.


Je parle de la qualité du générateur de nombres aléatoires. A-t-il suffisamment d'entropie, est-ce la classe crypto.


Dans le contexte des Uuids, il n'y a aucune exigence de hasard, juste unicité. Les deux ne sont pas synonymes.


3 Réponses :


5
votes

Dans les navigateurs qui l'ont, vous pouvez utiliser < Code> crypto.getrandomvalues ​​ pour obtenir des valeurs de pseudo-carie cryptographiquement. Par exemple: xxx

Vous pouvez ensuite manipuler ces octets dans une UUID valide.


2 commentaires

Merci pour le lien. Avec le soutien de Crypto.GetRandomvalues ​​Limited, existe-t-il d'autres moyens d'obtenir une forteté plus forte? Je vais mettre à jour la question.


@ user1843640: crypto.getrandomvalues ​​ est la meilleure option que vous avez obtenue, mais si cela n'est pas disponible, vous voudrez peut-être regarder Comment SJCL fait-il .



0
votes

Réponse courte, non! Longue réponse, http://www.matasano.com/articles/javascript-cryptography/

Faire confiance à moi, j'ai étudié cette question pendant un moment. Crypto est expérimental et donc pour la majorité des navigateurs, c'est un non. Le nœud pourrait cependant être mieux que cela passe directement dans le système d'exploitation. Vous aurez besoin de rechercher cela!


0 commentaires

1
votes

Bien que cela ne réponde pas directement à la question initiale, cela pourrait aider une personne à la recherche d'une bibliothèque pour aider à la création UUID. Pour mes besoins actuels, j'ai décidé d'utiliser le Bibliothèque Node-UUID . Dans la liste des caractéristiques:

  • Générez RFC4122 Version 1 ou Version 4 UUIDS
  • génération de # cryptographiquement forte de manière aléatoire sur les plates-formes de support

    En regardant la source, il semble y accomplir en utilisant Crypto.GetRandomValues ​​qui est suggérée @Iktoofay.


0 commentaires