From: Mok-Kong Shen on 2 May 2010 09:25 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 2 May 2010 22:37 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 3 May 2010 06:14 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 3 May 2010 08:35 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 3 May 2010 12:46
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 |