À l'aide de la clé symétrique AES (-128) pour signer et vérifier un message
Je veux savoir peut-clés symétriques être utilisé pour signer un message ? Nous pouvons encrpyt à l'aide de la clé secrète partagée. Aussi lors de la clé symétrique est utilisé pour la signature , ce que l'API peut être utilisée en JAVA pour charger la clé et signer le message ?
si j'ai utilisé la Signature de java.de sécurité , il a une api initSign mais qui prend de la clé privée à partir de la paire clé publique/privée comme argument pour signer le message. Ici, la clé est la clé symétrique.
Les pointeurs ?
OriginalL'auteur user839917 | 2011-11-28
Vous devez vous connecter pour publier un commentaire.
Une clé secrète partagée peut être utilisée pour calculer un Code d'Authentification de Message (MAC), qui peuvent ensuite être utilisés pour vérifier 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éés à l'aide de la clé privée et vérifié à l'aide de la clé publique, les Mac n'offrent pas la non-répudiation (n'importe qui peut vérifier le MAC peut également générer un MAC pour un autre message).
Il existe différentes formes de codes d'authentification de message; probablement le plus souvent utilisé variation est HMAC.
OriginalL'auteur Sergey Vlasov
Algorithmes symétriques ne peuvent pas donner le non-répudiation de la propriété asymétrique des modèles de signature de donner, c'est à dire le destinataire d'un message ne peut pas prouver qu'il n'a pas créé le message d'eux-mêmes, comme ils doivent connaître le régime.
Cela dit, un code d'authentification de message (MAC) peut vous donner ce que vous voulez: à la Fois l'expéditeur et le récepteur ont une clé partagée, l'expéditeur calcule un MAC avec le secret et l'ajoute au message et le récepteur calcule la même MAC et le compare avec le message reçu.
Tandis que le plus souvent utilisé de type MAC (HMAC) est basée sur des fonctions de hachage, il y a aussi celles qui sont basées sur un algorithme de chiffrement par bloc comme AES, comme CBC-MAC (c'est comme de la SRC, mais avec zéro vecteur d'initialisation et en utilisant uniquement le dernier bloc en sortie). (Comme dit par noloader, CBC-MAC n'est pas la manière la plus sûre de le faire, l'utilisation d'autres modes.)
Vous devez utiliser l'authentification de message dans la plupart des cas où vous utilisez le chiffrement, comme de nombreux systèmes de cryptage sont vulnérables à des attaques de plain-texte.
En Java, un MAC peut être calculé (et vérifié) en utilisant le javax.crypto.Mac classe.
Désolé, mais je ne suis pas encore clair. ce qui détermine la taille de la clé pour être utilisé pour HMAC ? Je comprends que je peux utiliser l'algorithme HMAC-dessus du CCMC. Mais la clé de ce que j'ai est aes 128. Cela peut-il être utilisé ? pour exemple : SecretKey clé = new SecretKeySpec(clé,"AES")
De préférence, vous devriez utiliser un autre (indépendant) pour MAC et de cryptage, bien que HMAC est assez probable assez différents donc, en utilisant la même clé ne permet pas de donner des problèmes. Vous pouvez utiliser toute la longueur de la clé que vous voulez pour HMAC (jusqu'à l'fonctions de hachage longueur de bloc) (même si je ne sais pas si votre application prend en charge), il sera simplement rembourré avec zéro à la longueur du bloc de votre fonction de hachage. Des touches plus larges donnent plus de sécurité, mais vous n'obtiendrez pas mieux que les fonctions de hachage de taille de sortie (= MAC taille).
je vous remercie beaucoup . Je comprends maintenant.
je veux vérifier le message qui est signé par le serveur à l'aide de CBCBlockCipherMac mais DANS SYMBIAN, je ne sais pas quelle est la classe que j'ai à utiliser pour générer de la SRC CLÉ MAC. quelqu'un sait comment générer de ce type??
OriginalL'auteur Paŭlo Ebermann
Si vous voulez signer un message à l'aide d'un symmentric clé, vous souhaitez utiliser un CCMC basé sur la norme AES (ou 3 clés TDEA, ou Cameilla). CMACs sont des Codes d'Authentification de Message (MAC) construits sur des algorithmes de chiffrement par bloc. Vous utilisez généralement un CCMC si vous êtes également à l'aide d'AES/3TDEA/Cameilla pour le chiffrement (c'est à dire, il est très pratique).
Vous pouvez également utiliser un HMAC. Un HMAC est un Code d'Authentification de Message (MAC) construit sur le dessus d'une table de hachage. Vous devez utiliser un HMAC est un hachage étaient déjà présents dans le programme (c'est à dire, il était à portée de main).
Quand j'ai à la fois un Bloc de Chiffrement et de Hachage présents dans le programme, j'utilise généralement un HMAC parce que son plus rapide.
Enfin (pour l'exhaustivité), n'utilisez pas de MD5. Cassé (malgré ce que beaucoup dans le monde du logiciel libre pense). SHA-1 n'est plus approuvé pour les nouvelles applications, par des organismes tels NIST, NESSIE, et ECRYPT. L'utilisation de la SHA-2 de la famille de tables de hachage, ou utiliser un bain à Remous.
Pour le java choses spécifiques, voir Java Cryptography Extensions.
OriginalL'auteur jww