Re: Self-shrinking MT19937 as stream cipher
- From: "Cristiano" <cristiano.pi@xxxxxxxxxx>
- Date: 28 Sep 2006 20:01:58 +0200
Greg Rose wrote:
In article <451ba638$1_2@xxxxxxxxxxxx>,
Cristiano <cristiano.pi@xxxxxxxxxx> wrote:
The Berlekamp-Massey algorithm shows that the linear complexity of
any bit of the MT19937 is 19937, this means that taking the LSB of
MT19937 is equivalent to use a 19937-bit LFSR (also see a recent
post on sci.crypt.random-numbers).
In the paper "The Self-Shrinking Generator", Meier and Staffelbach
showed that the complexity of the attack for an N-bit self-shrinking
LFSR is O(2^(0.69*N)).
There is not a single "the" attack. They showed
only that it has high linear complexity. The
attack that actually breaks the Self-Shrinking
Generator is a variant of fast correlation.
Please, read the page 213; they wrote another thing.
http://homes.esat.kuleuven.be/~jlano/stream/papers/SSGms.pdf#search=%22SSGms.pdf%22
Using the LSB of MT19937 to get a self-shrinking generator, we get
an attack complexity of O(2^13757) which seems much bigger than the
one of any stream cipher.
Why don't use an MT19937 based self-shrinking generator as a stream
cipher?
There are at least two different ways to do this.
One is to treat the output as a bit stream, and
apply the usual SSG construction to it; but doing
this is incredibly bit-fiddly, and any pretence of
efficiency of the generator would be lost in a
software implementation. Another way would be to
decimate the output *words* based on a single bit
of a particular word. I think this is breakable,
because the essential linearity of MT would still
remain, giving the analyst lots of redundant
information to bring to bear.
The huge state and initialization requirements of
MT also argue against its use as a stream cipher.
But the huge state can also be useful.
So, personally, I think anything this simplistic
is not going to be useful. But if you give a
concrete construction, maybe we could give
concrete answers.
1) Generate N bits of entropy (N>128);
2) put the bit sequence into the state of MT19937;
3) initialize MT;
4) generate the shrunken sequence of bits:
unsigned int a;
do a=MT19937(); while(MT19937()&1);
return a&1;
5) use it as usual for a stream cipher.
Cristiano
.
- References:
- Self-shrinking MT19937 as stream cipher
- From: Cristiano
- Self-shrinking MT19937 as stream cipher
- Prev by Date: Re: Self-shrinking MT19937 as stream cipher
- Next by Date: Re: Self-shrinking MT19937 as stream cipher
- Previous by thread: Re: Self-shrinking MT19937 as stream cipher
- Next by thread: Re: Self-shrinking MT19937 as stream cipher
- Index(es):
Relevant Pages
|
|