[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
Re: stream ciphers (Re: 128 bit block ciphers)
Uri writes:
> > This has a number of problems/added complexities I think:
> > - you have to remember a current offest to avoid re-using offsets
> > (adds state to symmetric crypto where there is none currently)
>
> Similarly to having to remember not to re-use IVs.
Ah, but you get "remembering" not to re-use IVs for free -- you just
use random ones, or for some block modes just non-repeating IVs.
Using random offsets is impractical due to the performance penalty of
spinning the PRNG by 2^(IV size).
> > > For the keys to have a stream offset can mean the difference between
> > > secure and insecure.
> > Another way to do things which avoids some of the problems with
> > offsets is to have a random, or at least non-repeating IV, which is
> > sent in the clear. Then use the IV as part of the key. eg.
> >
> > rc4-key-shedule( iv || s2k( passphrase ) )
>
> A possibility. Would need more time to evaluate it...
It has a sort of precedent, so must (one presumes!) have been looked
at in that the export versions of SSL cipher suites with RC4
(RC4-40-RSA-MD5) use the construct. ie they construct a 128 bit RC4
from a 40 bit secret component and a public (sent in the clear) 88 bit
salt, via :
128bit-key = md5( 88bit-salt || 40bit-key )
(there are some other padding rules, they actually generate two keys,
one for each direction and there are some other values concatenated.)
Probably:
rc4-key-schedule ( s2k( iv || passphrase ) )
would be better as it usees the hash in the s2k for mixing rather than
relying partly on rc4 key schedule (which the rc4-key-schedule( iv ||
s2k (passphrase) does ).
> > you can then recover sk1 xor sk2:
>
> You might want to take a look at SEAL. It provides the offset VERY
> elegantly. Unfortunately it's patented...
Ah, yes, I suspected you were thinking of SEAL in your earlier
comments on offsets :-) ... SEAL is more than a stream cipher, it is a
pseudo-random function family, so spinning to arbitrary points comes
for free with SEAL. Very nice, agreed. But that trick doesn't work
with RC4.
Adam