web-dev-qa-db-fra.com

Quelle est la différence entre le numéro de série et l'empreinte numérique?

J'ai des problèmes pour comprendre quelle est la différence entre le numéro de série d'un certificat et son hachage SHA1.

Le MSDN dit:

Numéro de série Un numéro qui identifie de manière unique le certificat et est délivré par l'autorité de certification.

Puis-je identifier un certificat par son numéro de série, non?

Wikipedia dit pour le hachage:

Thumbprint: Le hachage lui-même, utilisé comme une forme abrégée du certificat de clé publique.

Ainsi, le hachage identifie la clé (par exemple RSA).

Je fais actuellement des recherches sur Android certificats d'application et j'ai trouvé des certificats intéressants:

[Issuer][Serial][SHA1 Hash][Valid From]
[C=US, L=Mountain View, S=California, O=Android, OU=Android, CN=Android, [email protected]][00936EACBE07F201DF][BB84DE3EC423DDDE90C08AB3C5A828692089493C][Sun, 29 Feb 2008 01:33:46 GMT]
[C=US, L=Mountain View, S=California, O=Android, OU=Android, CN=Android, [email protected]][00936EACBE07F201DF][6B44B6CC0B66A28AE444DA37E3DFC1E70A462EFA][Sun, 29 Feb 2008 01:33:46 GMT]
[C=US, L=Mountain View, S=California, O=Android, OU=Android, CN=Android, [email protected]][00936EACBE07F201DF][0B4BE1DB3AB39C9C3E861AEC1348110062D3BC1B][Sun, 29 

Et il y en a beaucoup plus qui partagent la même série, mais qui ont des hachages différents.

Il peut donc y avoir un certificat avec une clé différente? Qui crée réellement le numéro de série lors de la création d'un certificat pour une application Android? Pour le hachage, c'est clair, mais puis-je créer un nouveau certificat avec le même numéro de série qu'un autre certificat?

Puis-je être sûr qu'un certificat avec le même numéro de série a été créé par la même personne?

76
reox

Dans un certificat , le numéro de série est choisi par l'autorité de certification qui a délivré le certificat. C'est juste écrit dans le certificat. L'AC peut choisir le numéro de série comme bon lui semble, pas nécessairement au hasard (et il doit tenir sur 20 octets). Un CA est supposé pour choisir des numéros de série uniques, c'est-à-dire uniques pour le CA. Vous ne pouvez pas compter sur un numéro de série unique dans le monde; dans le monde onirique de X.509, c'est la paire issuerDN + serial qui est unique au monde (chaque CA ayant son propre nom unique et en prenant soin de ne pas réutiliser les numéros de série).

L'empreinte numérique est une valeur de hachage calculée sur le certificat complet, qui comprend tous ses champs, y compris la signature. Celui-ci est unique au monde, pour un certificat donné, jusqu'à la résistance inhérente aux collisions de la fonction de hachage utilisée. Les logiciels Microsoft ont tendance à utiliser SHA-1, pour lesquels certaines faiblesses théoriques sont connues, mais aucune collision réelle n'a été produite (encore). Une attaque par collision sur SHA-1 a maintenant été démontrée par des chercheurs du CWI et de Google.

(Les empreintes que vous montrez semblent se composer de 40 caractères hexadécimaux, soit 160 bits, qui pointent à nouveau vers SHA-1 comme fonction de hachage plausible.)

81
Thomas Pornin

L'empreinte numérique est le sha1sum ou sha256sum du certificat dans son format binaire .DER. Autrement dit, à partir d'un terminal Unix que vous exécutez:

sha1sum /path/to/mycertificate.der

La sortie hexadémicale de cette commande est votre empreinte numérique. Il est également appelé empreinte digitale. Essayez-le et vous verrez.

4
typelogic