2010-08-11 12 views
3

I read an answer about guid et c'était assez intéressant. Il semble que GUID est basé sur le temps et v1 utilise une adresse MAC avec v4 en utilisant un RNG.Sécurité sage comment j'utilise GUID correctement?

De l'wiki

Cryptanalysis du générateur GUID WinAPI montre que, étant donné que la séquence de V4 GUID est pseudo-aléatoire; étant donné la pleine connaissance de l'état interne , il est possible de prédire les valeurs précédentes et suivantes.

Dois-je m'inquiéter à ce sujet? dire lors de la génération de données de cookie pour les utilisateurs? ou les clés de réinitialisation de mot de passe Ma question est de savoir comment utiliser GUID correctement et comment empêcher la création du même GUID (disons via deux threads sur la même machine créée pendant la même milliseconde) et comment l'utiliser de manière à ne pas révéler les clés précédentes. Je passe d'utiliser RNG asynchrone pour synchroniser RNG (verrouillage entre les threads) à GUID et maintenant je pense qu'il peut y avoir un problème avec cela.

Répondre

1

La réponse est d'utiliser l'interface graphique basée sur les nombres aléatoires.

Les schémas ci-devant sont effectivement brisés. Augmentation de la vitesse du processeur Vous pouvez maintenant générer plusieurs GUID masqués basés sur la même millseconde. La virtualisation signifie que vous pourriez partager la même adresse MAC avec plusieurs adresses du système d'exploitation. L'essor des machines multiprocesseurs signifie que deux processus peuvent générer des GUID sur la même machine dans la même horloge. Bien qu'il soit encore possible de générer des doublons en utilisant le schéma basé sur les nombres aléatoires, les chances sont à peu près les mêmes que de gagner la loterie sur une planète particulière dans une autre galaxie.

+0

L'implémentation .NET utilise la 2ème mais ma question est de savoir comment l'utiliser correctement et comment ne pas l'utiliser. Que dois-je faire si je veux générer des GUI sur mon ordinateur ou serveur multicœur? Qu'en est-il de trouver des clés dans le passé. –

1

Vous n'avez pas besoin de vous inquiéter à ce sujet.

Vous ne générez pas de doublons Guids avec .Net.

Si c'était possible, vous vous plaignez ici partout. Partout dans le monde, les gens lancent de nouveaux Guids en .Net à des tarifs insondables, des vitesses que vous ou moi n'aborderons jamais, et aucune d'entre elles n'a généré de doublons.

Pas besoin de vous soucier de l'enfilage. L'appel Guid.NewGuid() est garanti d'être thread-safe. Multi-core ne fera pas de différence. Générez-les aussi vite que possible sur le serveur le plus rapide que vous pouvez trouver et vous n'aurez toujours pas de problème.

Sérieusement, c'est juste pas quelque chose à s'inquiéter.