[prev in list] [next in list] [prev in thread] [next in thread] 

List:       cypherpunks
Subject:    KEA implementation, Extended Key Exchange Algorithm
From:       nobody () replay ! com (Anonymous)
Date:       1998-06-29 23:59:44
[Download RAW message or body]

Anyone have a KEA implementation?

Extending KEA seems simple, so, while I'm out asking for implementations, how
about an XKEA implementation? What is XKEA, you ask? Lengthen the values, and
replace steps g through i in the KEA spec with the following (excuse my lame
attempt at clarity):

g. Check that (t + u) mod p is nonzero. If not, stop.

h. The Key is a cryptographic hash of the concatenation of, in order, the two
shared secrets t and u. 

Key = SHA-1(t||u)

Given a few fairly reasonable assumptions about the effects of lengthening the
exponents and moduli and about the complexity of figuring out the SHA-1 hash of
a value, you can show that this isn't easier to crack than the original KEA. 



If you think my modifications hold some sort of backdoor (and they could,
but not easily...besides, Don't You Trust Me? :), the introduction of a
constant c (as long as the key) that I didn't know when I wrote this would
make any backdoor nearly impossible: 

g. Check that (t + u) mod p is nonzero. If not, stop.

h. The Key is a cryptographic hash of the concatenation of, in order, the
constant c, the shared secret t, and the shared secret u. 

Key = SHA-1(c||t||u) 

Or, horrors, set a constant for yourself each session if you don't trust
anyone to do it for you (the swapping is there so that the lack of
sender/recipient roles can be maintained):

g. Check that (t + u) mod p is nonzero. If not, stop.

h. Each device exchanges a non-secret random value z, and stores the recieved
value in temporary register c and the sent value in temporary register d.

i. Each device compares the values stored in its two temporary registers. If
the device finds that the value stored in its register c is greater than that
stored in its register d, it swaps the two values.

j. The Key is a cryptographic hash of the concatenation of, in order, the
values stored in temporary registers c and d, the shared secret t, and the
shared secret u. 

Key = SHA-1(c||d||t||u) 

[prev in list] [next in list] [prev in thread] [next in thread] 

Configure | About | News | Add a list | Sponsored by KoreLogic