8
votes

Cryptage SSL, SHA-1 et SHA-2

J'essaie de mettre en œuvre cryptage SHA-2 au lieu de SHA-1 .

Pour cela, je sais que le nombre de bits entre ces deux algorithmes de hachage est différent et cela me confond.

Comment cela peut-il être atteint et à quels pièces dois-je avoir besoin de modifier les modifications requises?

Je peux utiliser n'importe quelle bibliothèque open source de Java, Python et tout autre langage de programmation majeur.


3 commentaires

Quel algorithme SHA-2 vous intéresse?


Cela n'a pas d'importance tant que c'est un algorithme SHA-2 :) Cordialement


Qu'est-ce que cela a à voir avec SSL?


5 Réponses :


1
votes

the hashlib module et MessageDigest Support tout Algorithmes SHA-2.


0 commentaires

1
votes

Autant que je puisse le voir, tout ce que vous devez savoir pour implémenter SHA256 dans SSL est couvert dans RFC 5246 .

Mais je soupçonne que tu n'es nulle part de compréhension assez de cryptographie pour faire cela ... Sha 2 n'existe pas, vous recherchez SHA256, SHA384 ou SHA512, et ce n'est pas un algorithme de cryptage, mais plutôt un cryptographique Fonction de hachage.

Alors, qu'est-ce que tu essayes réellement de faire?


0 commentaires

31
votes

Tout d'abord, ni SHA-1 ni quoi que ce soit lié à SHA-2 n'est un algorithme "de cryptage". Ce sont des fonctions de hachage. Dans SSL, les fonctions de hachage sont principalement utilisées pour l'intégrité, pas la confidentialité, via le HMAC construction . Une fonction de hachage prend une entrée de longueur arbitraire et produit une sortie avec une longueur fixe, qui est une sorte de "digest" des données d'entrée; L'opération est destinée à ne pas être réversible.

Une fonction de hachage est "publique": il n'y a pas de données confidentielles, aucune clé; Tout le monde peut calculer la sortie de la fonction de hachage sur une entrée donnée. Un "code d'authentification de message" (Mac) est une sorte de "hachage à clé": une clé secrète (c'est-à-dire un groupe arbitraire de bits) est également saisi dans le processus, de sorte que la connaissance de la clé soit nécessaire pour (ré-) calculer la sortie Mac. Ceci est utilisé pour les contrôles d'intégrité (l'expéditeur utilise la clé pour calculer le Mac, le récepteur utilise la touche pour recomputer le Mac; si le Mac correspond, les données sont correctes, car un attaquant, ne sachant pas la clé, ne pouvait pas avoir modifié les données et calculé un Mac valide sur les données modifiées).

HMAC est une construction qui transforme une fonction de hachage (telle que SHA-1) dans un Mac. TLS (c'est le nom normatif actuel de SSL) utilise HMAC. La sortie de HMAC, lorsqu'elle est utilisée avec une fonction de hachage donnée h a la même taille que la sortie de h . Cette sortie peut être conventionnellement tronquée: HMAC / SHA-1 produit nominalement une sortie de 160 bits, mais il est habituel, dans certains protocoles, de ne garder que les 96 premiers bits. Une telle troncature ne se produit pas dans SSL.

Le FIPS 180-3 Standard Définit Cinq fonctions de hachage, nommée SHA-1, SHA-224, SHA-256, SHA-384 et SHA-512, avec des longueurs de sortie de 160, 224, 256, 384 et 512 bits respectivement. Les fonctions SHA-224, SHA-256, SHA-384 et SHA-512 sont connues de manière colloquant sous le nom de "SHA-2", de sorte que "SHA-2" n'est donc pas une fonction, mais une famille de quatre fonctions de hachage.

the TLS Spécification Définit les Cipher Suites . Une suite Cipher est un ensemble d'algorithmes cryptographiques que le client et le serveur sont d'accord lors de la phase initiale de la connexion (la "poignée de main"). Parmi les algorithmes, le Mac à utiliser pour assurer l'intégrité des données. Certaines des suites de chiffrement standard spécifient que le Mac doit être "HMAC avec SHA-256", c'est-à-dire une autre qui utilise l'une des fonctions SHA-2.

La réponse à votre question est donc la suivante: "Il suffit de configurer le client et le serveur pour utiliser l'une des suites ciphères avec HMAC / SHA-256". Si votre implémentation de SSL ne prend pas en charge de telles suites ciphères, vous devrez alors la modifier, ce qui entraînera une compréhension de manière assez approfondie de la manière dont SSL fonctionne; lire et comprendre le RFC complet 5246 sera nécessaire.


1 commentaires

Je viens d'avoir un peu de mal à penser à la RFC 5246. Je suppose que c'est une nuit de lecture facile et divertissante?



1
votes

Je suis sûr que vous verrez de plus en plus de cette question. Godaddy a maintenant une option lors de la soumission d'une demande de signature de certificat, afin de préciser si vous allez utiliser SHA1 ou SHA2.

C'était une lecture intéressante ici cependant. Je savais fondamentalement ce qu'il demandait et comment forcer mon serveur à utiliser un chiffre utilisant l'un ou l'autre. Je ne sais pas que je savais exactement quelle était la différence ou pourquoi il serait préférable d'utiliser l'un ou l'autre cependant.


0 commentaires

0
votes

Essayez ceci, cela fonctionne pour Weblogic SQL Authenticator

 public static void main(String args[]) throws NoSuchAlgorithmException {
 String password="abcdef"; 
 System.out.println("{SHA-1}" + new sun.misc.BASE64Encoder().encode(java.security.MessageDigest.getInstance("SHA1").digest(password.getBytes())));
 }


0 commentaires