Cryptography-Digest Digest #578, Volume #11 Thu, 20 Apr 00 06:13:00 EDT
Contents:
Re: Key generation in smartcards (Julia Riesz)
Re: Should there be an AES for stream ciphers? (Quisquater)
Re: Inverse of Permutation polynomials (Tom St Denis)
Re: password generator (Tom St Denis)
Re: Very Large S-Boxes VLSB's (Tom St Denis)
Re: OAP-L3: Answer me these? (Tom St Denis)
Re: Why encrypt email... (Tom McCune)
Re: Just another idea... (Runu Knips)
Re: password generator (Runu Knips)
Re: ANN: Better optimized version of Serpent. (Runu Knips)
Re: AES-encryption (Runu Knips)
Re: $100 Code Challenge (Stephen Houchen)
Re: Inverse of Permutation polynomials ([EMAIL PROTECTED])
d (Gideon Samid)
Re: Inverse of Permutation polynomials ([EMAIL PROTECTED])
f (Gideon Samid)
----------------------------------------------------------------------------
From: Julia Riesz <[EMAIL PROTECTED]>
Subject: Re: Key generation in smartcards
Date: Wed, 19 Apr 2000 11:27:42 +0200
Here=B4s a method for producing a 1024 bit RSA keys that
you can break yourself, but nobody else can.
- Use a triple DES based pseudo random generator PRNG that depends on
a private key k and a 64 bit random seed s.
- Choose a random seed s, e.g. using hardware random.
- Generate a 512 bit prime p, using the PRNG
- Calculate x1 =3D s*2^(1024-64) / p and x2 =3D (s+1)*2^(1024-64) / p
- Generate a prime q between x1 and x2 using the PRNG.
- From p and q calculate the public and private key as usual. =
Now the first 64 bit of the public modulus will be the random
seed s, which you can use to reconstruct the Generation of p and q,
if you know k.
As long as the PNRG is cryptographically secure, this kind
of information leakage isn=B4t detectable.
Thus the only way to trust your smart card, is to trust
its vendor or, if the software is evaluated by a third party
(as it should be for cryptographic applications), to trust
the evaluator.
This is the reason, why I=B4d prefer a token running open source
software over a smart card for cryptographic applications such as
electronic signatures.
Marcin Jaskolski wrote:
> =
> Hi all,
> =
> I am doing some research for my Cryptography classes (I'm a computer
> science student). I'm looking for a specific methods of generating
> public keys (RSA, ElGamal), used mainly in smart cards, which allow
> the producer/someone else posessing some kind of key to break the ciphe=
r
> easily (to find the private key).
> I'm also looking for information how to find out if a given public key
> (or pair:public/private key) is weak in terms described above.
> =
> I'll be very happy if anyone can help me finding some info
> =
> Have a nice day,
> Marcin Jaskolski
------------------------------
From: Quisquater <[EMAIL PROTECTED]>
Subject: Re: Should there be an AES for stream ciphers?
Date: Wed, 19 Apr 2000 12:07:26 +0200
See also the new European project NESSIE at
http://www.cryptonessie.org
========
Universit� de Louvain
UCL Crypto Group
see http://www.dice.ucl.ac.be/crypto or http://www.uclcrypto.org
t�l. 32.10.47.25.41 (connected to my voicebox and cellular phone)
fax: 32.2.358.55.83 (only for me)
SMS: send an email (only the subject will be transmitted) to
[EMAIL PROTECTED]
------------------------------
From: Tom St Denis <[EMAIL PROTECTED]>
Subject: Re: Inverse of Permutation polynomials
Date: Wed, 19 Apr 2000 10:43:05 GMT
[EMAIL PROTECTED] wrote:
>
> Reading all the messages from Tom about permutation polynomials mod
> (2^w), I couldn't help but get interested in the subject. He seemed to
> have so much fun with those polynomials. :-)
They are usefull as sboxes, but you have to rotate the output to avoid
linearity with the lower bits. :)
> Anyway, he had a question about the inverse of these polynomials. I
> suspect he doesn't need them anymore, but I've got a not-so-elegant
> solution, and I want to commit them to the net-memory before I throw
> away my notes. Who knows, someone may use them in the future.
Well you can make a very simple block cipher with it :) just do this
P(x) = p.poly
E(x) = P((P(x) <<< r1) <<< r2) ...
Where the perm poly is of a high enough degree and private.
> The first logical question to ask when trying to invert these
> polynomials is: is there an inverse permutation polynomial for all
> possible permutation polynomials. The inverse of the permutation
> polynomial is a permutation itself, so the quick (and lucky) answer is
> yes. Lucky, because although there is not a polynomial for each
> permutation, the inverse permutation of a permutation polynomial also
> satisfies the only (meaning the only one I could find) requirement P
> (x+m)=P(x)+m, for a permutation polynomial to exist.
Generally I would think if P(x) is a permutation polynomial and P'(x)
the inverse that P'(P(x)) = x is how you would start. So for the simple
quadratic you get
P'(P(x)) = P'(2x^2 + x)
= a(2x^2 + x)^2 + b(2x^2 + x)
= a(4x^4 + x^2 + 4x^3) + b(2x^2 + x)
= 4ax^4 + ax^2 + 4ax^3 + 2bx^2 + bx
= 4ax^4 + 4ax^3 + (2b + a)x^2 + bx
x + k2^w= x(4ax^3 + 4ax^2 + (2b + a)x + b)
= x(x(4ax^2 + 4ax + 2b + a) + b)
= x(x(x(4ax + 4a) + 2b + a) + b)
= x(x(x(a(4x + 4) + 2b + a) + b)
= x(x(x(a(4(x + 1) + 2b + a) + b)
= x(x(x(a(2(2(x + 1) + b) + a) + b)
...
Now just find (a, b, k) and you have an inverse right? Also not the
degree of the inverse is higher, it has upto x^4 whereas the input had
only x^2. If you look fifth line you have 4ax^4 + (2b + a)x^2, but the
quantities 4a + 2b + a have to be even. So we get 5a + 2b = z. But
then the quantity 4ax^3 (4a) must be even, simple enough it will always
be. So as long as 'z' is even and 'b' is odd we are in business.
> Now, how do we go about constructing our p.poly. inverses? More
> important, what do I mean by an inverse in the first place? The inverse
> I am going to construct is for the substitution operation. i.e. if P(Q
> (x)) == x for all 0<=x<2^w, for permutation polynomials P and Q, then P
> is the inverse of Q. P and Q normally do not commute, so it is a bit
> dangerous to say Q is also the inverse is P, but I suspect that it is,
> so I'll say it anyway. :-)
>
> In order to construct the inverses, I start with an inverse modulo 2,
> modify it to make it also an inverse modulo 2^2, and keep it modifying
> until I get the inverse modulo 2^w. So it is a w step process to
> construct the inverse.
>
> What we do is, given Qk(x) which is an inverse of P(x) mod 2^k, find a
> zero polynomial Zk(x) mod 2^k, and add it to Qk(x) so that Qk+1(x)=Qk(x)
> +Zk(x) is the inverse of P(x) mod 2^(k+1). Easy? Nope. It is usually a
> tedious process to construct these Zero polynomials, and find the right
> one. I will not go out and prove that this method will work (you can
> use the Lemmas in the Permutation Polynomials paper of Rivest to do so).
> Instead, I will explain the inversion with an example polynomial, P(x)
> =2*x^2+x mod 2^w.
>
> But before that, let me give a parametrized class of zero polynomials
> mod 2^n, which have been quite handy in the process of generating
> inverses.
> Z(x, a, n, q(x)) = q(x)*[2^(n-a)]*x*(x-1)*(x-2)*...*(x-2*a+1) = 0 mod
> (2^n).
> Why? for 0<=x<=2*a-1, Z is zero because each multiplier becomes zero at
> each x value. For 2*a-1<x, we have exactly a even terms, and a odd
> terms. The multiplication of 2^(n-a) and 2^a (coming from the even
> terms) gives us the much sought after 2^n, which is zero.
>
> OK. Back to the example:
> P(x) is our polynomial, and Qi(x) is the inverse of P(x) for modulo 2^i.
> * Since P(x) mod 2 is x, Q0(x)=x. [the only possible alternative for
> other polynomials is x+1]
> * Then P(Q1(x)) == 2*x^2+x mod (2^2), and Zi(x)=2*x=0 mod 0, so I can
> add that to Q1(x) to get Q2(x)=3*x, and
> P(Q1(x))=2*x^2+2*x+x==2*x*(x+1)+x==2*x*(x-1)+x==Z(x, 1, 2, 1)+x==x mod
> 4.
> * n=3: P(Q2(x))=2*9*x^2+3*x==2*x^2+3x=x+2*(x^2+x) mod 8. Add 2*x*(x+1)
> as the zero poly. to get Q3(x)=2*x^2+5*x
> As you gues, it gets harder, and harder to collect to terms as you
> increase the powers of 2. I calculated 2 more terms in this series to
> get:
> mod=2^4 => Q(x)=6*x^2+9*x [with Z(x)=4*x^2+4*x]
> mod=2^5 => Q(x)=14*x^2+17*x [with Z(x)=8*x^2+8*x]
>
> Well, that's all folks. If you are interested, and I messed something
> up above, just give me yell. I'll try to fix what I've got.
I don't quite get your method, but I will just read it ovr and over.
However let's try the mod 16 polynomila for the quadratic
P(x) = 2x^2 + x mod 16
Q(x) = 6x^2 + 9x mod 16
P(5) = 50 + 5 mod 16
= 55 mod 16
= 7
Q(7) = 6(49) + 9(7)
= 357 mod 16
= 5
Seems like your idea works :)
Tom
------------------------------
From: Tom St Denis <[EMAIL PROTECTED]>
Subject: Re: password generator
Date: Wed, 19 Apr 2000 10:45:02 GMT
[EMAIL PROTECTED] wrote:
>
> -----BEGIN PGP SIGNED MESSAGE-----
> Hash: SHA1
>
> Tom St Denis wrote:
> > Got bored this afternoon so I wrote a password generator using the
> > windows timer rng idea.
> >
> > You can get the source at
> >
> > http://24.42.86.123/files/passwd.c
> >
> > The chars it outputs are a..z, A..Z, 0..9 and '{}'. So there are six
> > bits per character. For a decent password their should be at the very
> > least ten characters and more like 15 or so.
> > Tom
>
> you could put more characters(!@#%$...) in transtable[] and
> convert to char using:
> printf("%c", transtable[trng_byte() % sizeof(transtable)-1]);
Actually no I can't. if the size is not a power of two you will get a
bias towards the lower half of the symbols. Try this for a 65 symbols
for example. I would have to use seven bits, which gets you 127 % 65 =
62, which means the lower 62 symbols are more probable then the top
three.
Again I chose these chars for two reasons. Printable on almost all
computers :), and it's 64 chars, so it's 6 bits even.
Tom
------------------------------
From: Tom St Denis <[EMAIL PROTECTED]>
Subject: Re: Very Large S-Boxes VLSB's
Date: Wed, 19 Apr 2000 10:51:25 GMT
[EMAIL PROTECTED] wrote:
>
> In article <[EMAIL PROTECTED]>,
> Tom St Denis <[EMAIL PROTECTED]> wrote:
> >
> >
> > [EMAIL PROTECTED] wrote:
> > >
> > > I would like to konw, why are we still using small S-Boxes with 70's
> > > memory limitations..
> > >
> > > Has anyone designed a Block Cipher with VLSB (Very Large
> > > S-Box)...something like 128x128 -----> 1024x1024
> > >
> > > Memory is pretty cheap these days...Non Linear VLSB's would be very
> > > strong against Differential and Linear Attack....
> >
> > That's pretty silly actually. A 8x8 sbox takes 256 bytes of ram, a
> > 128x128 sbox would take 2^128 bytes of ram. Apparently your thinking
> is
> > quite flawed.
> >
> > You could built a 128x128 sbox out of some intermediate algebraic
> steps,
> > whoa, that's a block cipher... sorry.
>
> I'm not an expert on cryptography, and right now I'm struggling through
> the Schneier book, Applied Cryptography. I am however very familiar with
> various kinds of bit mangling issues. Note in the calculations I'm
> assuming a byte to be a bit octet.
That's ok, I am far from an 'expert' too. Just have fun learning :)
>
> From what I understood about the S-boxes of DES (for example), there are
> 8 S-boxes with 64 entries each (6-bit input). Since the S-boxes have
> 4-bit output it means the values inside the S-box go from 0..15 so you
> can represent this with a nibble. Thus an 8-bit number will hold two
> entries, in the upper and lower halves of the bit octet, since 4+4=8.
Actually des has 32 4x4 sboxes, the input is expanded where 2 of the 6
bits choose which of the four sboxes to use in each group. Then the
remaining 4 bits go thru a permutation (the sbox). Alot of ways to
speed DES up exist, which include pre-rotated sboxes etc... Try reading
some of the des source at the end of the book.
> Thus one S-box takes 64*4 bits of memory = 256 bits. Which is 64 bytes.
> So all 8 S-boxes will take 8 * 256 bits = 256 bytes. This is indeed what
> Schneier says on page 274.
>
> So much for that.
>
> What if we had an 128 x 128 S-box?
>
> Let's use the same reasoning.
Ok.
>
> The number of entries in the said S-box: 128 * 128 = 16384 = 2^14. (What
> is the number of output bits?) If you had 14 bits in each entry, you
> could fill the S-box with 0, 1, 2, 3, ... , 16383 in some order each
> number being in the table only once. I have a vague impression that this
> would be a permutation, perhaps? So I'll make the assumption that for an
> S-box you would want inputs to map into more than one output. So let's
> say (for the sake of argument) that each entry in the table is 13 bits
> (0..8191) instead of 14 bits.
No no no. In a mxn sbox (for m = n) there are 2^n entries. When I say
128x128 that means take 128 bits in and output 128 bits. There are
therefore 2^128 possible outputs. If for (m > n) you are doing a
compression of the input, if for (m < n) you are expanding (as in
Blowfish) the input.
> In this case the total memory requirement for ONE S-box would be 16384 *
> 13 bits = 212992 bits = 208 kb. Assume you have 8 S-boxes it would be 8
> * 212992 = 1703936 bits which is about 1.67 Mb. I think 8 S-boxes each
> mapping 14-bit inputs into 13-bit outputs would mean an 8 * 16384 bit =
> 131072 bit input block (in DES) going into the substitution operation
> (ie. into the S-boxes).
>
> But no matter how you twist the issue, I can't see where you people got
> 2^128.
Try to implement a 128x128 bit sbox :)
> Like I said, I'm not an expert but I think the original poster expressed
> a valid idea. Although it seems that Schneier mentions some extra issues
> about that on p. 349.
The 4x4 sboxes in des have 16 elements each, each taking 4 bits. There
are 32 of these so you get 32x16x4 = 2048 bits.
Tom
------------------------------
From: Tom St Denis <[EMAIL PROTECTED]>
Crossposted-To: talk.politics.crypto
Subject: Re: OAP-L3: Answer me these?
Date: Wed, 19 Apr 2000 10:55:01 GMT
Anthony Stephen Szopa wrote:
> You don't need me for this.
>
> The software is available at http://www.ciphile.com
Arrg stop posting that address....
> A professor would give such a chore to one of his undergrad
> students. Any of you can do it. Why don't you?
Why don't you?
> As I stated before, if I give you the output of the random digit
> generator as currently implemented, tell you that the output begins
> with no rotation, that the usage is zero, that the length of the
> MixFiles is 3,628,800 arrays long, that the output begins with the
> first possible output digit (no offset), etc., basically giving you
> all but the the key itself, then you determine the array sequences,
> big deal: IT IS IMMATERIAL to the cracking of any OAP-L3 encrypted
> messages.
Yaddadaada, post a complete description of the algorithm.
Tom
------------------------------
From: Tom McCune <[EMAIL PROTECTED]>
Subject: Re: Why encrypt email...
Date: Wed, 19 Apr 2000 11:27:46 GMT
In article <[EMAIL PROTECTED]>, [EMAIL PROTECTED] (Dan Day)
wrote:
<snip>
>>There is no reason why you should not encrypt everything.
>
>Sure there is -- the fact that most of my intended recipients
>would not be able to read it!
That is why it "can't" be done, but has little to do with whether it "should"
be done.
<snip>
>It's simpler to just throw up your hands and send all but the
>most sensitive traffic (or traffic between you and your
>regular encryption-fan buddies) as plaintext.
>
>*That* is the biggest hurdle to "ubiquitous encryption".
Yes it is simpler, and so often does occur, but not necessarily the wise
thing to do.
>What's really needed for ubiquitous encryption (and what
>will probably never exist) is an email protocol that
>will TRANSPARENTLY query an intended recipient's email
>server for his public key, and then transparently either:
>
> 1. If a public key exists, encrypt the message and
> send it, and cache the public key for future
> use (tagged with a reasonable expiration date,
> *and* a way for messages sent with a cached but
> now expired public key to be auto-bounced back with
> an appropriate message), or
>
> 2. If no public key exists, prompt the sender whether
> he wants to send the message as plaintext, or
> abandon the attempt (this could be set to
> default to a desired yes/no action).
>
>And in any case, the receiving email system should
>decrypt "on-the-fly", with the recipient seeing nothing
>out of the ordinary except for a "this message was sent
>with encryption" flag on it so that he can know which
>incoming messages were potentially secure or not (similar
>to the little "lock" icon that a browser shows to indicate
>a secure web connection for the current page).
That sounds sort of like InvisiMail. I very briefly tried InvisiMail, but
quickly uninstalled it. I didn't like the lack of control (compared to PGP),
the lower level of encryption; and it does not take into account multiple
people using the same email program (my wife and I both use Pegasus, and would
never tolerate it - my use of PGP doesn't affect her).
I think what is probably needed is something of a combination of what you
describe (or InvisiMail like) for regular use, and additionally something like
PGP for real sensitive material.
Tom McCune
My PGP Page & FAQ:
http://www.McCune.cc/PGP.htm
------------------------------
Date: Wed, 19 Apr 2000 13:39:05 +0200
From: Runu Knips <[EMAIL PROTECTED]>
Subject: Re: Just another idea...
Runu Knips wrote:
> And the ROR and ROL could simply be stripped because they add not the
> slightest piece of security.
... that was wrong, because they depend a little bit on the
keyword. But there are only two possibilities for each input
byte therefore the improvement is not very big ...
------------------------------
Date: Wed, 19 Apr 2000 13:56:29 +0200
From: Runu Knips <[EMAIL PROTECTED]>
Subject: Re: password generator
Tom St Denis wrote:
> Again I chose these chars for two reasons. Printable on almost all
> computers :), and it's 64 chars, so it's 6 bits even.
I would have prefered $ and _ instead of { and }. AFAIK there are
actually computers which can't handle { and }. Thats the reason why
ISO C introduced the trigraphs. Plus _ and $ are typical parts of
identifiers just like the rest of characters you use.
------------------------------
Date: Wed, 19 Apr 2000 14:00:41 +0200
From: Runu Knips <[EMAIL PROTECTED]>
Subject: Re: ANN: Better optimized version of Serpent.
"Gisle S�lensminde" wrote:
> In article <[EMAIL PROTECTED]>, Gisle S�lensminde wrote:
> >
> >A new implementation of the Serpent AES candidate cipher written
> >is now available. This is the currently fastest available
> >implementation of Serpent, and encrypts with a speed of 32 Mbit/s
> >on a pentium pro 200. The formerly fastest algorithm encrypted
> >with a speed of 26 Mbit/s on the same computer. The implementation
> >is written in Ada.
> >
> >The improvement is based on the optimized sbox functions of
> >Dag Arne Osvik. A link to the source can be found at the Serpent
> >homepage.
> >
> >http://www.cl.cam.ac.uk/~rja14/serpent.html - serpent home page
> >http://www.ii.uib.no/~gisle/serpent.html - direct link
> >
> >Dag Arne Osvik's paper on s-box optimization presented at AES3:
> >
> >http://csrc.nist.gov/encryption/aes/round2/conf3/papers/26-daosvik.pdf
>
> I forgot to tell about the licence:
>
> The licence is the same as the GNU Ada compiler GNAT's runtime,
> which is GPL with the exception that it can be linked with commercial
> software. (See the source files for details about this)
You mean L-GPL ?
------------------------------
Date: Wed, 19 Apr 2000 14:28:45 +0200
From: Runu Knips <[EMAIL PROTECTED]>
Subject: Re: AES-encryption
Tom St Denis wrote:
> [EMAIL PROTECTED] wrote:
> > And if you read what is IN HIS SITE...ITS pretty Original stuff..totally
> > outclass your school boy buggy crypto library or anything you will do in
> > the future...
A symmetric cipher which generates 64 KB/s on a PII 266, even if it
is implemented in assembly, outclasses nothing and is nothing usefull.
I want definitely faster encryption/decryption speeds than that.
And after I've seen that the slower ones of the AES candidates where
the ones which had the faults, while the fast ones succeeded, I don't
longer believe in the "but why don't you use the slower algorithm if
its more secure" argument.
A "school boy buggy cryto library" which implements many of the
wellknown algorithms in a portable way is far more usefull than a
superslow algorithm derived from DES, which is only useable from Delphi
[which I don't use anyway] and under i386-Windows (yes again with i386
I mean the architecture, not the processor) if you want to use the
assembly variant.
> Funny thing is my crypto library is not based on my own ciphers or rng's
> etc... I just put together something.
> Well I won't start a flamewar, either you like my library or you don't.
> If you are so concerned with it email me with what you think is wrong in
> it.
And IMHO the cryptobag is not buggier than any of the other free
libraries arround, especially if one remembers that its a very young
library. Okay, I didn't used it until now; I've just added it to the
other crypto libraries I've found in the net, checked a little bit
the sources and tried to compile them under Linux, but they look
really not that bad.
------------------------------
From: Stephen Houchen <[EMAIL PROTECTED]>
Subject: Re: $100 Code Challenge
Date: Wed, 19 Apr 2000 07:46:17 -0500
> >The following is a message encoded using a new routine I have designed.
> >The text is a written message in English. In order to test just how
> >strong the encryption is, I have posted it here for anyone interested
> >to try to crack it. The first person to successfully crack it will get
> >$100. Seriously, $100, no kidding.
>
> Okay, who besides me is reminded of Dr. Evil's line in Austin Powers,
> where he threatens to blow up the world unless he is paid the
> enormous sum of "one...million...dollars"?
I'm waiting for the $100 Billion Code Challenge, myself...
S
[EMAIL PROTECTED]
------------------------------
From: [EMAIL PROTECTED]
Subject: Re: Inverse of Permutation polynomials
Date: Wed, 19 Apr 2000 12:47:54 GMT
Oh dear! I must be getting old. Or simply stupid. Forgive the rubbish I
posted before. It was just a lucky polynomial. What I did was wrong.
OK. Let me start again. This time I'll be more careful. Promise.
The first thing I'll do is quite a no-no, but I'll do anyway. I'll
assume that inverse polynomials will commute without proof. i.e., if P
and Q are inverses of each other, then P(Q(x))==Q(P(x))==x (mod 2^w).
Let me start at step i of the process, and assume that I have:
P(Qi(x))==x mod (2^i)
In step i, if we have a look at the same polynomial, it will be:
P(Qi(x))==x+Zi(x) (2^(i+1)),
where Zi(x) can be either 0 or 2^i for different vlues of x, because
x+Zi(x)==x mod (2^i)
Zi(x)==0 mod (2^i)
from step i.
So far, so good. Now I'll do something not so obvious at the first
glance:
P(Qi(x)) - Zi(x) == x (mod 2^(i+1))
P(Qi(x)-Zi(x)) == x (mod 2^(i+1))
P(Q[i+1](x)) == x (mod 2^(i+1))
Since Zi(x) can only have the values 0 and 2^i, we can take it in P(x)
using one of the lemmas in Rivest's paper, which states that
P(x+m) == P(x) + m (mod 2*m)
In what I have done, instead of using a constant, I am using a
polynomial, Zi(x), which is 0 for some x, and m for others. So all in
all, I can move it inside P().
Now, the algorithm should be fairly obvious. Let me do the same example
to show you how fragile these polynomials can be:
P(x) = 2*x^2 + x
1. Q1(x) = x
2. P(Q1(x)) = 2*x^2 + x, Z1(x) = 2*x^2 ==> Q2(x) = -2*x^2 + x == 2*x^2+x
==> Q2(x)=2*x^2 - 2*x + 2*x + x = Z(x, 1, 2) + 3*x == 3*x (mod 2^2)
3. P(Q2(x)) = 2*9*x^2 + 3*x == 2*x^2 + 2*x + x (mod 2^3), Z2(x) = 2*x^2
+ 2*x
==> Q3(x)= -2*x^2+x == 6*x^2 + x (mod 2^3)
==> Q3(x)= 2*x^2 + 4*x^2 - 4*x + 4*x + x = Z(x, 1, 3) + 2x^2 + 5x
==> Q3(x)= 2*x^2 + 5*x [You do not need to do that, I'm just showing
the equality to show that they are the same as what we've got in the
previous post]
The good thing about this approach (apart from not being wrong like the
previous one) is that you do not need to do lots of work. You start
with Q1(x)=x or Q1(x)=x+1 for any given poly. Then substitute that one
in P in each step, and modify the Qi(x) by
Qi(x)=Q[i-1](x)-(P(Qi(x))-x)
But of course, if you do not get rid of the accumulating terms which
are zero polynomials, the order of the inverse will keep growing on you.
I hope what I said here makes more sense then what I had in the
previous one.
P.S: Anyway. Tom, I've seen your answer to my first post, but if I post
a reply from my home account it may never reach there (I've already
lost one message). So I'll wait until it appears in Deja to answer that.
Sent via Deja.com http://www.deja.com/
Before you buy.
------------------------------
From: Gideon Samid <[EMAIL PROTECTED]>
Subject: d
Date: Wed, 19 Apr 2000 13:18:32 GMT
------------------------------
From: [EMAIL PROTECTED]
Subject: Re: Inverse of Permutation polynomials
Date: Wed, 19 Apr 2000 13:07:33 GMT
In article <[EMAIL PROTECTED]>,
Tom St Denis <[EMAIL PROTECTED]> wrote:
>
> > have so much fun with those polynomials. :-)
>
> They are usefull as sboxes, but you have to rotate the output to avoid
> linearity with the lower bits. :)
But somewhat slower than going out and doing your permutations by
tables, or swapping bits on some processors. :-) As this thread's
subject, they have the property of being invertible, which may be
undesirable in some situations.
> Well you can make a very simple block cipher with it :) just do this
>
> P(x) = p.poly
> E(x) = P((P(x) <<< r1) <<< r2) ...
>
> Where the perm poly is of a high enough degree and private.
Yep, but it's too much effort to find an inverse to the polynomial in
question. I guess... But thanks for not saying outright that what I've
been working on was useless. :-)
> Generally I would think if P(x) is a permutation polynomial and P'(x)
> the inverse that P'(P(x)) = x is how you would start. So for the
simple
> quadratic you get
>
> P'(P(x)) = P'(2x^2 + x)
> = a(2x^2 + x)^2 + b(2x^2 + x)
This was my first line of thought. The trouble is, you don't know that
the degree of P'(x) will be 2. As a matter of fact, The degree can be
as high as 2*w-1, if the inversion is done modulo 2^w (i do not have a
solution, but I think you can reduce the degree of all polynomials
using the zero polynomial Z(x, w, w)=x*(x-1)*...(x-2*w+1)==0 (2^w).
> = a(4x^4 + x^2 + 4x^3) + b(2x^2 + x)
> = 4ax^4 + ax^2 + 4ax^3 + 2bx^2 + bx
> = 4ax^4 + 4ax^3 + (2b + a)x^2 + bx
> x + k2^w= x(4ax^3 + 4ax^2 + (2b + a)x + b)
> = x(x(4ax^2 + 4ax + 2b + a) + b)
> = x(x(x(4ax + 4a) + 2b + a) + b)
> = x(x(x(a(4x + 4) + 2b + a) + b)
> = x(x(x(a(4(x + 1) + 2b + a) + b)
> = x(x(x(a(2(2(x + 1) + b) + a) + b)
I follow you, but x+kx^w is only a particular polynomial which is
equivlent to x. And it does not need to have any solution at all. What
you need to write on left hand side is x+Z(x), where Z(x) is a zero
polynomial mod 2^w, and there are lots of Z(x)'s that you can find, and
plug in there. So as w increases, your chances of finding one left hand
side which will provide an answer decreases (again, gut feeling coming
from past failures).
> ...
> I don't quite get your method, but I will just read it ovr and over.
> However let's try the mod 16 polynomila for the quadratic
>
> P(x) = 2x^2 + x mod 16
> Q(x) = 6x^2 + 9x mod 16
>
> P(5) = 50 + 5 mod 16
> = 55 mod 16
> = 7
>
> Q(7) = 6(49) + 9(7)
> = 357 mod 16
> = 5
>
> Seems like your idea works :)
Pure chance. First, sorry for wasting your time with incorrect
information. And secondly, sorry for not being more clear. I hope my
next post will be easier to follow. I have the disadvantage of not
having english as my native language, and sometimes what I write and
what I think I have written do not match. :-) But that's jst another
excuse. I have made the mistake of assuming others are also thinking
what I am thinking at the time I say things. My teachers kept saying
that it was one of my biggest failings.
Sent via Deja.com http://www.deja.com/
Before you buy.
------------------------------
From: Gideon Samid <[EMAIL PROTECTED]>
Subject: f
Date: Wed, 19 Apr 2000 13:46:45 GMT
------------------------------
** FOR YOUR REFERENCE **
The service address, to which questions about the list itself and requests
to be added to or deleted from it should be directed, is:
Internet: [EMAIL PROTECTED]
You can send mail to the entire list (and sci.crypt) via:
Internet: [EMAIL PROTECTED]
End of Cryptography-Digest Digest
******************************