Nous sommes le 03 Sep 2010, 22:52

Heures au format UTC + 1 heure [ Heure d'été ]






Poster un nouveau sujet Répondre au sujet  [ 6 messages ] 
  Imprimer le sujet Sujet précédent | Sujet suivant 
Auteur Message
 Sujet du message: Chiffrement de disque Key2 en LRW
MessagePosté: 03 Mai 2009, 11:59 
Hors ligne

Inscription: 03 Mai 2009, 11:50
Messages: 13
Bonjour,

Je suis en train d'étudier les "Tweakable Block Cipher" et leur implémentation à travers LRW.

Voici ce que j'ai compris dans le cas de LRW-AES (traduit par moi même à partir du draft de 2004 du P1619) :
"Le LRW-AES chiffre et déchiffre des blocs de 16 bytes avec la clé secrète AES définis par l’utilisateurs qui peut être de 16, 24 ou 32 bytes (Key1), la clé secondaire de 16 bytes (Key2) et enfin la tweak clés de 16 bytes issus de la clé secondaire et de la position logique du bloc."

Ce qui est très étrange c'est que les mec de l'IEEE disent que le tweak repose dans la position logique des blocs alors que les mec de chez truecrypt disent que c'est la Key2 la tweak key. (cf doc TC 4.3)

Je pensais que comme c'est très bien expliqué par l'IEEE pour le XTS elle est issus d'un Key = Key1 || Key2 mais ce n'est pas le cas car c'est du XOX là. Et je ne trouve pas de doc très claire à ce sujet.

Ce que je ne comprend pas c'est d'où vient cette clés secondaire ? Qui ou quoi l'a définie ?

Et si vous connaissez un forum/mailing/etc plus spécialisé crypto, je prend ;)


Haut
 Profil  
 
 Sujet du message: Re: Chiffrement de disque Key2 en LRW
MessagePosté: 03 Mai 2009, 14:28 
Hors ligne

Inscription: 30 Mar 2008, 18:36
Messages: 79
Je vais peut-être dire une connerie, mais LRW est un "mode d'opération", et la plupart des modes d'opérations (CBC, CFB, ...) qui permettent de transformer un algorithme de chiffrement à bloc en chiffrement de flux utilisent un "vecteur d'initialisation".

Lorsque j'utilise la librairie d'OpenSSL, les fonctions de chiffrement avec blowfish CBC, demandent un "vecteur d'initialisation", je le prédéfinis dans mes programmes (par une chaine du genre "azertyuiopqsdfghjklm..."). C'est peut-être ce qu'ils appellent clé secondaire.

=> http://fr.wikipedia.org/wiki/Vecteur_d%27initialisation


Haut
 Profil  
 
 Sujet du message: Re: Chiffrement de disque Key2 en LRW
MessagePosté: 03 Mai 2009, 18:55 
Hors ligne

Inscription: 03 Mai 2009, 11:50
Messages: 13
Oui le tweak peut être considérer comme un IV et c'est même ce qui est dit dans LRW02 que je peux traduire ainsi :

"Le tweak peut être apparenté au Vecteur d’Initialisation (IV) du CBC mais au lieu d’être intégré à un mode d’opération élevé il est intégré directement au niveau de l’algorithme de chiffrement de disque. Ce qui signifie que l’algorithme de chiffrement n’a plus seulement le texte en claire et la clé de chiffrement, mais un troisième élément : La clé tweak [LRW02]."

Toutefois le concept de tweak est différent dans le XTS et le LRW.
Dans le XTS le tweak (I) est la valeur l’index de la position logique du bloc chiffré, pour le premier bloc I=1.

Alors que dans le LRW, la notion de tweak est un peu flou. Car il est parfoit associé à la key2 et parfois à I (étant la même définition que pour le XTS). Et en LRW, la seule liaison entre I et la Key2 est la multiplication de ces 2 polynômes qui est faite en utilisant la théorie des corps finie de Galois.


Haut
 Profil  
 
 Sujet du message: Re: Chiffrement de disque Key2 en LRW
MessagePosté: 04 Mai 2009, 11:52 
Hors ligne

Inscription: 03 Mai 2009, 11:50
Messages: 13
J'ai rapidement lut lrw.c de crypto sous linux. http://lxr.free-electrons.com/source/crypto/lrw.c

Potentiellement j'avais bien compris le concept de la variable I (tweak) qui est "multiplié" avec la key2, mais même dans ces sources plutôt bien commenté, la key2 arrive comme par magie :/

Code:

30 struct priv {
31         struct crypto_cipher *child;
32         /* optimizes multiplying a random (non incrementing, as at the
33          * start of a new sector) value with key2, we could also have
34          * used 4k optimization tables or no optimization at all. In the
35          * latter case we would have to store key2 here */
36         struct gf128mul_64k *table;
37         /* stores:
38          *  key2*{ 0,0,...0,0,0,0,1 }, key2*{ 0,0,...0,0,0,1,1 },
39          *  key2*{ 0,0,...0,0,1,1,1 }, key2*{ 0,0,...0,1,1,1,1 }
40          *  key2*{ 0,0,...1,1,1,1,1 }, etc
41          * needed for optimized multiplication of incrementing values
42          * with key2 */
43         be128 mulinc[128];


gf128mul_64k étant la fonction de la classe gf128.c qui permet de faire la "multiplication" dans le champs des corps finis de Galois.
be128 étant la fonction qui permet de définir la taille les blocs de 128 bits de la classe b128.c

OMGWTFBBQ!!!11, d'où elle vient cette f**cking key2 ???


Haut
 Profil  
 
 Sujet du message: Re: Chiffrement de disque Key2 en LRW
MessagePosté: 04 Mai 2009, 14:00 
Hors ligne

Inscription: 03 Mai 2009, 11:50
Messages: 13
Ce serait tellement bien si la Key2 en LRW soit calculé comme en XTS.
Avec une fonction de dérivation de clé (KDF) genre PBKDF2, un peu de salt et après un split pour obtenir Key1 et key2.

Genre comme en XTS :
KDF : Key Derivation Fonction
DK : Derive Key
MK : Master Key (Key1)
SK : Secondary Key (Key2)
P : Password
S : Salt
Ce qui donne : KDF(P,S) = DK
Soit :
DK = MK || SK
Ou plus simplement : Key = Key1 || Key2


Haut
 Profil  
 
 Sujet du message: Re: Chiffrement de disque Key2 en LRW
MessagePosté: 05 Mai 2009, 16:47 
Hors ligne

Inscription: 03 Mai 2009, 11:50
Messages: 13
Bon je pense avoir trouvé.

Le problème c'était que le LRW-AES n'a jamais vraiment était standardisé vu qu'il a été abandonné en 2006 au profit du XTS-AES par le SISWG.

Et surtout, que je travaillé sur le Draft 0 de 2004 du LRW-AES, alors qu'il y a eu 5 draft avant qu'il soit abandonné. Au cours de ces travaux, la key2 a été obtenue de 2 façon différente.

Je n'en suis pas encore complètement sur mais dans un premier temps elle était dérivé de clé principale (key1) avec probablement une KDF, mais ce que je suis sur c'est que dès le draft 4 la key2 était obtenue en splittant la clé principal en 2 partie : une de 256bits et une de 128 bits.

Et c'est cette technique de concaténation qui a été reprise pour le XTS, sauf que pour le XTS chaque clé fait 256 bits.


Haut
 Profil  
 
Afficher les messages précédents:  Trier par  
Poster un nouveau sujet Répondre au sujet  [ 6 messages ] 

Heures au format UTC + 1 heure [ Heure d'été ]


Qui est en ligne

Utilisateurs parcourant ce forum: dsy, warr et 1 invité


Vous ne pouvez pas poster de nouveaux sujets
Vous ne pouvez pas répondre aux sujets
Vous ne pouvez pas éditer vos messages
Vous ne pouvez pas supprimer vos messages
Vous ne pouvez pas joindre des fichiers

Rechercher:
Aller à:  



HZV WILL NEVER DIE !!