web-dev-qa-db-fra.com

Quelle est la différence entre un "algorithme d'empreinte numérique" "un algorithme de signature" et un "algorithme de hachage de signature" pour un certificat?

Je suis un peu confus sur les différences entre Signature Algorithm, Signature Hash Algorithm, et Thumbprint Algorithm présents dans les certificats SSL/TLS. Quelqu'un peut-il élaborer?

37
Mike B

Vous êtes confus parce que certaines personnes (ouais je vous regarde, Microsoft) ont utilisé les termes de manière incohérente.

Un algorithme de signature est un algorithme cryptographique tel que:

  • Le signataire possède une paire de clés publique/privée . La clé publique est publique, la clé privée est privée; même si les deux clés sont liées mathématiquement, il n'est pas possible de recalculer la clé privée à partir de la clé publique (c'est pourquoi la clé publique pourrait être rendue publique en toute sécurité).
  • Sur un message d'entrée donné, le signataire peut utiliser sa clé privée pour calculer une signature , qui est spécifique à la fois à la paire de clés du signataire et au message d'entrée .
  • Il existe un algorithme de vérification qui prend en entrée le message, la signature et la clé publique, et répond "vrai" (ils correspondent) ou "faux" (ils ne le font pas).

La pierre angulaire de la sécurité des signatures est qu'il ne devrait pas être possible, sans connaissance de la clé privée, de générer des paires message + signature que l'algorithme de vérification acceptera.

Vous pouvez rencontrer des "explications" qui essaient de dire que les signatures numériques sont une sorte de cryptage; ils le décrivent généralement comme "vous chiffrez avec la clé privée". Ne le croyez pas; ces explications sont en fait fausses et déroutantes.

Pour des raisons techniques, les algorithmes de signature (à la fois pour la signature et pour la vérification) commencent souvent par fonction de hachage . Une fonction de hachage est un algorithme entièrement public sans clé. L'intérêt des fonctions de hachage est qu'elles peuvent consommer des téraoctets de données et produire une "empreinte" (également appelée "empreinte digitale" ou même "empreinte digitale") qui a une petite taille fixe. Les algorithmes de signature en ont besoin, car ils fonctionnent avec des valeurs dans une structure algébrique de taille finie, et ne peuvent donc pas accueillir d'énormes messages. Par conséquent, le message est d'abord haché et seule la valeur de hachage est utilisée pour générer ou vérifier une signature.

Cet algorithme de hachage, lorsqu'il est utilisé comme première étape d'un algorithme de génération ou de vérification de signature, sera appelé "algorithme de hachage de signature". Lorsque nous disons quelque chose comme "RSA/SHA-256", nous voulons dire "signature RSA, avec SHA-256 comme fonction de hachage associée".

Un "algorithme d'empreinte numérique" est un autre nom pour une fonction de hachage. Il est souvent rencontré lorsque l'on parle de certificats : "l'empreinte" d'un certificat est vraiment le résultat d'une fonction de hachage appliquée au certificat lui-même (sous Windows systèmes, la fonction de hachage SHA-1 est utilisée).

41
Tom Leek

Bien que la réponse acceptée explique en détail comment le calcul est effectué, elle ne répond pas du tout à la question d'origine - algorithme de signature, algorithme de hachage de signature et algorithme d'empreinte numérique qui sont présents dans les certificats SSL/TLS - lequel est la pièce de l'équation (surtout si Microsoft le mélange également)?

La réponse semble assez simple - de:

https://social.technet.Microsoft.com/Forums/windowsserver/en-US/4f8fb14a-256e-4c77-86bc-40c364ec5ed0/certificates-differences-between-signature-algorithm-and-signature-hash-- algorithme? forum = winserversecurity

et marqué comme bonne réponse là-bas:

Différences entre "algorithme de signature" et "algorithme de hachage de signature"

Ils sont utilisés pour déterminer l'algorithme de signature et la fonction de hachage utilisés pour signer le certificat. Ces informations sont utilisées par le moteur de chaînage de certificats pour valider la signature du certificat. Le moteur de chaînage de certificats calcule un hachage sur un certificat (partie signée). La méthode de hachage est sélectionnée dans le champ Algorithme de hachage de signature. Ensuite, le moteur de chaînage de certificat décode la signature attachée à l'aide de l'algorithme de signature spécifié dans le champ Algorithme de signature et récupère le hachage signé. Si les deux hachages correspondent, la signature est valide, s'ils diffèrent, la signature est considérée comme non valide.

Mon ajout d'une autre source - Thumbprint Algo - simple propriété non crypto utilisée pour identifier le certificat sur un système donné (ne pas l'authentifier ou vérifier sa validité)

2
Peter G