Crypto question: why was the following chosen for tripple DES : EN(DE(EN(data,k1),k2),k3); The encryption would involve passing data through IP, then doing 16 rounds forward with k1, (factoring out the IP-1 and IP) then doing 16 rounds backwards with k2 (factoring out the next IP-1 and IP) then doing 16 rounds forward with k3 then going through IP-1 How would this compare with EN(EN(EN(data,k1),k2),k3); which goes through IP, does 16 rounds each with k1, k2 then k3, then IP-1 ? The only difference is that the key scheduler rotates backwards (or another interpretation keys used in reverse order) for the second stage. Does anyone know the rationale behind this?
On Tue, 4 May 1993, Timothy Newsham wrote:
Crypto question: why was the following chosen for tripple DES : EN(DE(EN(data,k1),k2),k3);
. . .
How would this compare with EN(EN(EN(data,k1),k2),k3);
In fact, "triple" DES goes three times through the engine, but only uses
two keys:
EN(DE(EN(data,k1),k2),k1)
My understanding is that this was chosen for hardware implementations
because it is equivalent to single DES when k1 = k2. This is important,
of course, when some people you want to talk to are still using single DES
and the hardware is hard to reconfigure.
Nowadays, when most DES (technically, DEA) is done in software, it would
make more sense to use three separate keys. Two key "triple" DES has 112
key bits (56 * 2), while a three key system would have 168. I've seen the
latter system used recently, though I can't remember where...
Joe
--
Joe Thomas
Crypto question: why was the following chosen for tripple DES : EN(DE(EN(data,k1),k2),k3);
In fact, "triple" DES goes three times through the engine, but only uses two keys:
EN(DE(EN(data,k1),k2),k1)
hmm... I am using d3des which I had assumed uses 'tripple-DES'. at any rate, I used the Ddes() function, printed its output, then used the des() function 3 times and prined its output. They matched up which suggests that d3des uses the method I posted at the top.
My understanding is that this was chosen for hardware implementations because it is equivalent to single DES when k1 = k2. This is important, of course, when some people you want to talk to are still using single DES and the hardware is hard to reconfigure. interesting. Wouldnt the first scheme do the same? for k1=k2, and k3 = any key ? (or k2=k3 and k1 = any key)
Joe -- Joe Thomas
Say no to the Wiretap Chip!
-- main.c, compares Ddes output and des output --------- #include "d3des.h" unsigned long enkey[96],dekey[96]; unsigned long e1[32],e2[32],e3[32]; unsigned long d1[32],d2[32],d3[32]; main() { char *a,b[100],*k,*k1,*k2,*k3; strcpy(b,"this is a test"); k="testing123423456789212345678"; k1="testing1"; k2="23423456"; k3="78921234"; deskey(k1,0); cpkey(e1); deskey(k2,1); cpkey(d2); deskey(k3,0); cpkey(e3); des3key(k,0); cp3key(enkey); /* set up long keys , encrypt */ des3key(k,1); cp3key(dekey); /* decrypt */ use3key(enkey); Ddes(b,b); /* encrypt b */ write(1,b,16); use3key(dekey); Ddes(b,b); /* decrypt b */ write(1,b,16); usekey(e1); des(b,b); usekey(d2); des(b,b); usekey(e3); des(b,b); write(1,b,16); }
participants (2)
-
Joe Thomas
-
Timothy Newsham