Je veux savoir que les clés symétriques peuvent être utilisées pour signer un message? Nous pouvons encryt en utilisant la clé secrète partagée. De plus, lorsque la clé symétrique est utilisée pour la signature, quelle API peut être utilisée dans Java pour charger la clé et signer le message? P>
Si j'ai utilisé la signature de Java.Security, il possède une API Initsign mais qui prend une clé privée de la paire de clés publique / privée comme argument pour signer le message. Ici la clé est la clé symétrique. P>
Tous les pointeurs? P>
3 Réponses :
Une clé secrète partagée peut être utilisée pour calculer un code d'authentification du message (Mac) , qui Ensuite, peut être utilisé pour confirmer l'intégrité et l'authenticité du message à une autre partie qui connaît le même secret partagé. Contrairement aux signatures numériques, qui sont créées à l'aide de la clé privée et vérifiées à l'aide de la clé publique, les MAC ne proposent pas de non-répudiation (quiconque qui peut vérifier que le Mac peut également générer un Mac pour un autre message). P>
Il existe différentes formes de codes d'authentification de message; Probablement la variation la plus souvent utilisée est HMAC . P>
Si vous souhaitez signer un message à l'aide d'une clé sympathique, vous souhaitez utiliser un CMAC en fonction de l'AES (ou de la TDEA 3 touches ou de la CAREILA). Les CMAC sont des codes d'authentification des messages (Mac) construits sur des chiffres de blocs. Vous utilisez généralement un CMAC si vous utilisez également AES / 3TDEA / CAREILA pour cryptage (c'est-à-dire qu'il est pratique). P>
Vous pouvez également utiliser un HMAC. Un HMAC est un code d'authentification de message (Mac) construit sur un hachage. Vous utiliseriez un HMAC est un HASH déjà présent dans le programme (c'est-à-dire qu'il était pratique). P>
Lorsque j'ai à la fois un chiffrement de bloc et un problème présent dans le programme, j'utilise généralement un HMAC car il est plus rapide. P>
Enfin (pour l'exhaustivité), n'utilisez pas MD5. Sa cassée (malgré ce que beaucoup dans le monde du logiciel libre pensent). SHA-1 n'est plus approuvé pour de nouvelles applications par des organismes tels que NIST, Nessie et Ecrypt. Utilisez la famille SHA-2 de hayes ou utilisez Whirlpool. P>
Pour les trucs spécifiques Java, voir Java Extensions de cryptographie . P>
Les algorithmes symétriques ne peuvent pas donner à la propriété de non-répudiation que donner des schémas asymétriques de signature, c'est-à-dire que le récepteur d'un message ne peut pas prouver qu'il n'a pas créé le message eux-mêmes, car ils doivent connaître le schéma. p>
qui dit, un code d'authentification du message em> (Mac) peut Donnez-vous ce que vous voulez: L'expéditeur et le récepteur ont une clé partagée, l'expéditeur calcule un Mac avec le secret et l'appendez-le au message, et le récepteur calcule le même Mac et la compare avec le message reçu. P>
tandis que le type Mac le plus souvent utilisé ( HMAC ) est basé sur des fonctions de hachage, il y a aussi ceux qui sont basés sur un chiffrement de bloc comme des AES, comme CBC-Mac (ceci est Comme CBC, mais avec un vecteur d'initialisation zéro et utilisant uniquement le dernier bloc de sortie). (Comme indiqué par NOloader, CBC-MAC n'est pas le moyen le plus sûr de le faire, d'utiliser d'autres modes.) P>
Vous devez utiliser l'authentification des messages dans la plupart des cas où vous utilisez le cryptage, car de nombreux schémas de cryptage sont vulnérables aux attaques choisies-plainte. P>
en Java, un Mac peut être calculé (et vérifié) à l'aide de javax.crypto.mac classe. P>
CBC-MAC est cassé pour des messages de longueur variable. Un CMAC est un CBC-MAC fait correctement.
Désolé mais je ne suis toujours pas clair. Qu'est-ce qui détermine la taille de la clé à utiliser pour HMAC? Je comprends que je peux utiliser HMAC sur CMAC. Mais la clé que j'ai est de l'AES 128. Peut-on utiliser? Par exemple: clé Secretkey = nouveau SecretKeSPEC (clé, "AES")
De préférence, vous devez utiliser une clé différente (indépendante) pour Mac et le cryptage, bien que HMAC soit assez probable suffisamment différent, l'utilisation de la même clé ne posera pas de problèmes. Vous pouvez utiliser n'importe quelle longueur de clé que vous souhaitez pour HMAC (jusqu'à la longueur du bloc de fonctions de hachage) (bien que je ne sache pas si votre implémentation supporte-la), il sera simplement rembourré avec zéro à la longueur de votre blocage de votre fonction Hash. Les plus grandes touches donnent plus de sécurité, bien que vous n'obtiendrez pas mieux que la taille de la sortie des fonctions de hachage (= taille Mac).
@ Paŭloebermann: Je veux vérifier le message signé par le serveur à l'aide de CBCBLOCIPHERMAC, mais à Symbian, je ne sais pas quelle classe à utiliser pour générer une clé Mac CBC. quiconque sait générer de ce type ??
@poppy: la clé MAC est simplement une chaîne de bits arbitraire, de la même longueur que la clé de chiffrement de bloc sous-jacente (I.E. 128 bits pour AES-128). Utilisez le générateur de nombres aléatoires cryptographiques de votre système (je ne sais rien de Symbian, alors n'hésitez pas à poser une nouvelle question à ce sujet).