7
votes

Quelle est la sécurité des GUID en termes de prévisibilité?

Nous utilisons GUID.NEWGUID () CODE> Pour générer des codes d'activation et des touches API actuellement. Je me demande si cela pose un problème de sécurité depuis que leur algorithme est ouvert.

.NET GUID utilise Win32 CoCreateguid Code> et je ne connais pas ses internes (éventuellement adresse MAC + horodatage?). Quelqu'un peut-il dériver une seconde guidage de la première, ou peut-il le frapper avec des suppositions intelligentes ou le hasard suffisamment bon? Ils ont besoin d'une double vérification avant d'ajouter à une base de données. C'est pourquoi nous avons trouvé des GUDS, mais je ne suis pas sûr de leur sécurité à ces fins. P>

Voici les 4 sorties UUIDGEN consécutives: P>

0652b193-64c6-4c5e-ad06-9990e1ee3791
374b6313-34a0-4c28-b336-bb2ecd879d0f
3c5a345f-3865-4420-a62c-1cdfd2defed9
5b09d7dc-8546-4ccf-9c85-de0bf4f43bf0


3 commentaires

Le Wikipedia sur GUID est plutôt bon sur l'algorithme GUID: EN.Wikipedia.org/wiki/globally_unique_identifier


Dupliqué possible de Comment aléatoire est System.Guid.Newguid ()?


Cody, c'est semblable mais je ne cherche pas strictement au hasard en soi. Par exemple, GUID pourrait être une minuterie de percision très élevée et être toujours sécurisée sans être aléatoire. Tout ce que je veux savoir, c'est si l'espace de recherche entre les GUDS consécutifs est large et non prévistable suffisamment prévisible pour des attaques de force brute triviale.


3 Réponses :


1
votes

Il existe de multiples mécanismes pour générer des GUID, certains utilisent des adresses MAC et certains utilisent simplement une génération de nombres aléatoires pure. IIRC L'adresse AMC devrait être évidente dans le GUID s'il est utilisé - il n'est pas déchéagé de quelque manière que ce soit.

Edit: Proviso, une réponse légèrement boiteuse, comme ici, je parle de génération de GUID générique plutôt que d'une éventuelle MS Algo que les l'obglise. Je suis en train de regarder, supprimera si ce n'est pas utile ..


0 commentaires

10
votes

Les GUID sont assez aléatoires, mais ils ne sont pas destinés à être utilisés comme nombres aléatoires - leur seul but est d'identifier de manière unique des entités, afin de pouvoir être prévisibles.

Utilisez System.Security.Cryptography.randomnumbergenerator à la place .


0 commentaires

2
votes

Toute clé a un espace fini et une personne / groupe de personnes suffisamment déterminée et générera toutes les combinaisons. Ce qui est important n'est pas tant la clé, mais comment vous organisez sa validation et ce qu'elle autorise. Si vous utilisez la validation / l'autorisation entièrement via le GUID, ce n'est probablement pas approprié, car potentiellement tous les GUID sont valables, vous seriez mieux avec quelque chose comme séries d'élimètre sérieux . Si vous utilisez un mécanisme d'authentification qui enregistre qu'un GUID particulier a été émis et qu'il a été utilisé maintenant pour l'activation, le GUID n'est pas un mauvais choix car c'est un assez grand espace clé.


0 commentaires