From: Mok-Kong Shen on
Maaartin wrote:
> I think, it's quite easy. I think, I can write a program doing the
> encryption in couple of hours, and the cracker, too. The funny thing
> about it: I need neither any help, nor reading any papers, nor any
> knowledge of cryptographic attacks.
>
> In case I'm right, I'll post it here and don't take the challenge.

If you succeed in that, I'll "voluntarily" give the prize to you. For
I'll learn a lot from you thereby, and that's worth that amount of
money for me. (It would also mean that even many experts of the group
often "can't see the wood for the trees", since they failed hitherto to
succintly and "directly" demonstrate the trivial solution of yours.)

Wishing you good luck and success,

M. K. Shen
From: Maaartin on
I made a small piece of program doing the encryption and haven't
really checked it yet. I provide only the output now, assuming the
generator initialized with c_0=-3, c_1=3, c_2=-7, x_0 = -5, could the
following be right. Currently, I do not care about the generator
having the full length. With
plaintext = (-6, 4, -8, 1, -7, -4)
it proceeds as follows (I omit the explanations, since it should be
clear):

gen: c_0=-3, c_1=3, c_2=-7, -5 => 38
gen: c_0=-3, c_1=3, c_2=-7, 38 => -263
gen: c_0=-3, c_1=3, c_2=-7, -263 => 1844
gen: c_0=-3, c_1=3, c_2=-7, 1844 => -12905
keystream = (-5, 38, -263, 1844)
plaintext = (-6, 4)
lower = ((1, 0), (-5, 1))
upper = ((39, -263), (0, 1845))
upper*plaintext = (-1286, 7380)
ciphertext = (-1991094, 13616100)

gen: c_0=-3, c_1=3, c_2=-7, -12905 => 90338
gen: c_0=-3, c_1=3, c_2=-7, 90338 => -632363
gen: c_0=-3, c_1=3, c_2=-7, -632363 => 4426544
gen: c_0=-3, c_1=3, c_2=-7, 4426544 => -30985805
keystream = (-12905, 90338, -632363, 4426544)
plaintext = (-8, 1)
lower = ((1, 0), (-12905, 1))
upper = ((90339, -632363), (0, 4426545))
upper*plaintext = (-1355075, 4426545)
ciphertext = (-1021634980, 659832673)

gen: c_0=-3, c_1=3, c_2=-7, -30985805 => 216900638
gen: c_0=-3, c_1=3, c_2=-7, 216900638 => -1518304463
gen: c_0=-3, c_1=3, c_2=-7, -1518304463 => 2038196652
gen: c_0=-3, c_1=3, c_2=-7, 2038196652 => -1382474673
keystream = (-30985805, 216900638, -1518304463, 2038196652)
plaintext = (-7, -4)
lower = ((1, 0), (-30985805, 1))
upper = ((216900639, -1518304463), (0, 2038196653))
upper*plaintext = (259946083, 437147980)
ciphertext = (406830473, -1423801252)

ciphertext = (-1991094, 13616100, -1021634980, 659832673, 406830473,
-1423801252)
From: Mok-Kong Shen on
Maaartin wrote:
> I made a small piece of program doing the encryption and haven't
> really checked it yet.[snip]

Understandably I can't evaluate your result as given. But note that you
have to "recover" the parameters of your PRNG from the corresponding
arbitrary plaintext and ciphertext. I simply don't see how you are
going to do that.

M. K. Shen
From: Maaartin on
On May 3, 12:14 pm, Mok-Kong Shen <mok-kong.s...(a)t-online.de> wrote:
> Maaartin wrote:
> > I made a small piece of program doing the encryption and haven't
> > really checked it yet.[snip]
>
> Understandably I can't evaluate your result as given.

What's the problem? I'll take a pocket calculator and a piece of paper
and check if it does what I wanted - when I get some spare time, so
why can't you? I used small numbers as input in order to be able to
check it more easily, at least in the first step. Why understandably?
Writing only

c_0=-3, c_1=3, c_2=-7, x_0 = -5
plaintext = (-6, 4, -8, 1, -7, -4)
ciphertext = (-1991094, 13616100, -1021634980, 659832673, 406830473,
-1423801252)

must be enough for you to check it, mustn't it? I provided all the
intermediate steps exactly as I understand you algorithm (I compute
L*U*p as L*(U*p) instead of (L*U)*p, but it's obvious). I would
understand you needing an explanation for a step or two, but I don't
understand your non-understanding - it's your algorithm.

> But note that you
> have to "recover" the parameters of your PRNG from the corresponding
> arbitrary plaintext and ciphertext. I simply don't see how you are
> going to do that.

First I need the encryption checked by both of us. I need to clean up
the encryption program a bit before I post it.

Then I'll make the cracker, which computes the 3 coefficients and the
starting value from plaintext and ciphertext you give me.
From: Mok-Kong Shen on
Maaartin wrote:

> What's the problem?[snip]

Sorry, I can't 100% exclude errors on my part, but the first value
from the PRNG that I computed differs from the one of yours.

c0 = 4294967293
c1 = 3
c2 = 4294967289
x0 = 4294967291

f(x) = c0 + c1*x +c2*x^2 mod 4294967296
x1 = f(x0) = 4294967103

But you got 38 not the value of my x1.

M. K. Shen