TripleDES tailles de clé - .NET vs Wikipédia
Selon Wikipédia, TripleDES prend en charge 56, 112, et la clé de 168 bits longueurs, mais le Système.La cryptographie.TripleDESCryptoServiceProvider.LegalKeySizes dit qu'il accepte uniquement 128 et 192 bits longueurs de clé.
Le système que je suis en développement doit être interopérables (données chiffrées par mon code doit être decryptable en PHP, Java, Objective-C) et je ne sais pas qui est correct dans ce cas.
Alors, qui dois-je croire? Et comment puis-je être sûr que mes données chiffrées portable?
Vous devez vous connecter pour publier un commentaire.
Wikipédia ne dit pas TripleDES supporte les clés de 56 bits. Le "masquage" options de parler de "triple-longueur" des clés et des "double-longueur" clés, le dernier "réduit la taille de la clé de 112 bits".
L'efficacité de la taille de la clé pour l'original DES est de 56 bits. Une telle clé est construit à partir de 64 bits d'entrée où des 8 bits inutilisés. Le "triple-longueur de la clé" option fonctionne avec trois fois plus de 56 bits (=168) construit à partir de trois fois 64 bits (=192 bits) et le "double-longueur" option fonctionne avec deux moments clés de 56 bits (=112) construit à partir de deux fois 64 bits (=128).
Que votre TripleDESCryptoServiceProvider doit calculer les clés de 64 bits d'entrée tout d'abord, il ne fera que prendre de 128 bits (double longueur) ou 192 bits (triple-longueur) en entrée, puis interne dériver le 168 ou 112 bits véritables clés à partir de cette entrée.
C'est la procédure standard pour TripleDES, de sorte que vous ne devriez avoir aucun problème avec la portabilité entre les plates-formes.
Triple DES va utiliser uniquement 112/168 bits de votre 128/192 bits de la clé. .NET demande pour plus de bits pour le but de l'alignement (chaque sous-clé de 56 bits est aligné sur un 64 bit de la frontière).
56 bits DES est cassé et je m'attends ils ont fait plus difficile à utiliser.
Je crois que certains (tous?) les implémentations de des utiliser seulement 7 bits par caractère de la clé (codage ASCII). Je ne suis pas sûr si la définition de des permet pour les caractères 8 bits dans les touches ou si elle a effectivement ignore le haut de bits de chaque octet. Je pense que c'est le dernier.
Toutefois, dans .NET les tailles de clés sont basées sur le nombre d'octets, fois 8 bits par octet, même si l'algorithme sous-jacent ignore que top de bit. C'est probablement le principal écart.
TripleDES pistes DES trois fois avec potentiellement trois différentes 56 bits DES touches. Dans certaines implémentations du moyen exécuter est inversé (chiffrement-déchiffrement chiffrement ou de "EDE") afin que l'aide de la même clé DES de 56 bits pour tous les trois doublons le chiffrement de simple DES. Cela a été fait pour la compatibilité avec les anciens systèmes où les deux sont en utilisant le chiffrement matériel. Je ne suis pas sûr si le TripleDESCryptoServiceProvider utilise cette "EDE" approche ou le "EEE" approche (ou vous donne un choix). De plus, la même DES 56 bits de la clé peut être utilisée pour la première et la troisième, à l'aide d'une clé de 112 bits au lieu de la clé de 168 bits, il pourrait également utiliser.
Certifiés TripleDESCryptoServiceProvider ne pas accepter de 56 bits (64 bits) clés car ce n'est pas vraiment 3DES sécurité (vous pouvez utiliser DESCryptoServiceProvider à la place?). En même temps, il a été déterminé que les 168 bits EEE (ou EDE?) 3DES ne sont pas plus de sécurité que d'utiliser un de 112 bits (128 bits) clé. Toutefois, il peut être parfois extrêmes (généralement non disponible) des attaques dans lesquelles la clé plus courte est théoriquement plus vulnérables. Qui peut également s'appliquer à l'EDE vs EEE question.
Sur votre compatibilité par rapport à d'autres langues en question .NET *CryptoServiceProvider les classes ne sont qu'une API wrapper autour de la Windows sous-jacent bibliothèque CRYPTO. Si les autres langues sont également l'aide de Windows bibliothèque CRYPTO elle devrait être compatible. Sinon, vous auriez à savoir s'ils sont à l'aide de EDE ou de l'EEE et de s'assurer que tous sont en utilisant la même (vous peut ou peut ne pas avoir la flexibilité sur que), et, évidemment, d'utiliser la même clé de longueur. Ils sont probablement tous en utilisant le même ordre d'octet, mais si vous trouvez des choses encore ne correspondent pas qui pourrait être une autre chose à vérifier. Le plus probable sur Windows ils sont tous à l'aide de la CRYPTOGRAPHIE et sera probablement correspondre aussi longtemps que vous le pouvez définir les options de la même façon pour chacun d'eux.
Des utilisations multiples de 64 bits clés, mais jette 8 bits en laissant un utile keylength de 64 bits.
Triple des pouvez utiliser le double ou le triple de la longueur de la clé.
Cependant, du fait que répéter des avec la même clé déchiffre le message des un même nombre de fois pouvez partiellement déchiffrer des trucs si les touches de partager des modèles.
Pour cette raison, des est toujours couru un nombre impair de fois.
C'est aussi pourquoi vous ne devriez jamais choisir une clé sur laquelle la 64 bits de pièces de répéter.
Avec triple des 192 bits, vous avez donc un efficace longueur de clé de 112 bits