2009-12-15 3 views
4

GUID sont généralement utilisés pour identifier de manière unique toutes sortes d'entités - demandes provenant de systèmes externes, fichiers, etc. Travaillez comme par magie - vous appelez une fonction "GiveMeGuid()" (UuidCreate() sous Windows) - et un nouveau GUID est à votre service.Y a-t-il des façons inédites d'abuser des GUID?

Compte tenu de mon code appelle vraiment « GiveMeGuid() » fonctionne chaque fois que je besoin d'un nouveau GUID est-il un moyen pas évident pour un mauvais usage?

+0

Tout fonctionne. Ou y a-t-il un problème que vous voulez résoudre? – Tobu

+0

vous ne manquerez pas de GUID de sitôt =) –

+0

Que voulez-vous dire par "abus"? Un Guid est juste une valeur, vous pouvez l'utiliser comme vous le souhaitez, comme n'importe quelle autre valeur. La fonction que vous appelez fait juste certains calculs qui (presque) garantissent que la valeur est unique, je ne pense pas qu'elle puisse être abusée. – Rory

Répondre

4

Je viens de trouver une réponse à une question ancienne: How deterministic Are .Net GUIDs?. Requoting il:

Ce n'est pas une réponse complète, mais je peux vous dire que le 13 chiffre hexadécimal est toujours 4 car il indique la version de l'algorithme utilisé pour générer le GUID (id est, v4); aussi, et je cite Wikipedia:

cryptanalyse du générateur GUID WinAPI montre que, puisque la séquence de V4 GUIDs est pseudo-aléatoire, compte tenu de l'état initial, on peut prévoir jusqu'à la prochaine 250 000 GUIDs renvoyés par la fonction UuidCreate. C'est pourquoi les GUID ne doivent pas être utilisés en cryptographie, par exemple en tant que clés aléatoires.

Donc, si vous avez la chance et obtenir même graine, vous cassez 250k miroirs dans l'ordre. Pour citer un autre Wikipedia piece:

Bien que chaque GUID généré n'est pas garanti d'être unique, le nombre total de clés uniques (2 ou 3,4 × 10) est si grande que la probabilité du même nombre généré deux fois est extrêmement petit.

Bottom line: peut-être une forme de mauvaise utilisation, il est à considérer GUID toujours unique.

+0

Cette affirmation Wikipedia s'est avérée fausse: vous ne pouvez faire ces prédictions avec l'accès à l'état interne complet du générateur, pas à partir d'une liste de GUID. –

1

La seule façon que je peux voir d'avoir abusé d'un Guid tente d'interpréter la valeur d'une certaine manière logique. Pas que ça t'invite vraiment à le faire, ce qui est une des caractéristiques de Guid que j'aime vraiment.

2

Cela dépend. Certaines implémentations de génération de GUID dépendent du temps, donc l'appel de CreateGuid dans une succession rapide PEUT créer des GUID conflictuels.

edit: Je me souviens maintenant du problème. Je travaillais une fois sur un code php où la fonction génératrice GUID réanalysait le RNG avec l'heure système chaque appel. Ne fais pas ça.

1

Peut-être que l'entropie peut être manipulé en jouant avec certains paramètres utilisés pour générer les GUID en premier lieu (par exemple, des identificateurs d'interface).

1

Certains GUIDs inclure un identifiant de la machine, il a été généré, donc il peut être utilisé dans des environnements client/serveur, mais certains ne peuvent pas. Assurez-vous que le vôtre ne les utilise pas, par exemple, dans une base de données où plusieurs clients accèdent.

Questions connexes