From: Rainer Urian on
Hi,
I wonder what is the reason for using a one-way function in a key agreement
scheme.
For instance, in an ECDH scheme Alice and Bob share a secret point Z after
exchanging their public keys. From Z there will be derived the symmetric
secret key by a one-way function.
I wonder what is the rationale behind this one-way function. Would it be
unsafe to just use parts of Z as the symmetric key (or a non-one-way
function f(Z) ) ?

Thanks,
Rainer

From: Thomas Pornin on
According to Rainer Urian <rainer(a)urian.eu>:
> I wonder what is the rationale behind this one-way function. Would it be
> unsafe to just use parts of Z as the symmetric key (or a non-one-way
> function f(Z) ) ?

ECDH has a lot of mathematical structure in it. It security lies in
the computational infeasibility to compute abG from aG and bG; but
that infeasibility does not mean that the attacker cannot compute a
part of abG. If you use a n-bit curve, discrete logarithm has cost
O(2^(n/2)); this means that, possibly, an attacker could guess half
of the resulting n-bit abG value while still not contradicting the
alleged safety of the Diffie-Hellman primitive. I do not claim that
I know how to guess bits of the result; but I cannot claim that it
is not feasible. Using only parts of the ECDH result means that you
walk outside of the carefully trodden path which cryptographers
have traced in the last 30 years.

In other words, the ECDH result is worth "n/2 bits" only if you use the
complete result. If you have a 256-bit curve, you get the "128-bit
security" only if the 128-bit symmetric key you use is derived from the
whole 256-bit ECDH result. A hash function is just the right tool to
use, to reduce a 256-bit value (with 128-bit entropy) into a 128-bit
symmetric key without losing some of that entropy.


--Thomas Pornin
From: Kristian Gj�steen on
Rainer Urian <rainer(a)urian.eu> wrote:
>I wonder what is the reason for using a one-way function in a key agreement
>scheme.
>For instance, in an ECDH scheme Alice and Bob share a secret point Z after
>exchanging their public keys. From Z there will be derived the symmetric
>secret key by a one-way function.
>I wonder what is the rationale behind this one-way function. Would it be
>unsafe to just use parts of Z as the symmetric key (or a non-one-way
>function f(Z) ) ?

Decision Diffie-Hellman says that, given aP and bP, you know nothing
about abP. In other words, you don't need to worry about how you deduce
keys from abP. However, in many protocols, the attacker will often
have access to keys derived from points related to abP. If keys are
derived in a too "trivial" manner, these keys might be related to keys
derived from abP. But if we use a random-oracle-style hash function,
we destroy any relationship and the related keys usually turn out useless.

Note that we need more than "one-way-ness", we need some random
oracle-like properties.

One good example is hashed-Diffie-Hellman (ECIES is the main example
scheme).

A few more half-baked remarks (someone will probably explain why they
are incorrect):

Another reason is to get provable security. I don't remember exactly,
but I think there's a provably secure Korean signature scheme which is
essentially a variant of DSA, but where reduction modulo some prime is
replaced by a hash. Similarily, HMQV is (superficially) derived from
MQV by hashing instead of reducing modulo some prime.

Neither application of hashing significantly improves real security,
but we get provable security...

--
Kristian Gj�steen
From: Joseph Ashwood on
"Rainer Urian" <rainer(a)urian.eu> wrote in message
news:hmb489$4vb$02$1(a)news.t-online.com...
> I wonder what is the reason for using a one-way function in a key
> agreement scheme.
> For instance, in an ECDH scheme Alice and Bob share a secret point Z
> after exchanging their public keys. From Z there will be derived the
> symmetric secret key by a one-way function.
> I wonder what is the rationale behind this one-way function. Would it be
> unsafe to just use parts of Z as the symmetric key (or a non-one-way
> function f(Z) ) ?


Actually it serves several purposes. The one-way function (typically a hash)
gives a fixed size regardless of the size of the public keys. The one-way
function also serves as a buffer preventing leakage of a key from leaking
the shared secret. The third offering off the top of my head is entropy
smoothing, if there is a small bias found in output of the secret sharing
scheme it can still be protected by using an entropy smoothing algorithm
like the one-way function. The last is use as a compressor, as Thomas
pointed out, the various public key algorithms are not perfectly entropy
dense, a 128-bit equivalent strength will be much larger than 128 bits, by
compressing the larger value to (or close to) maximum entropy density.

This isn't necessarily the complete list of reasons, in fact I'm quite
certain it isn't, but these are good reasons for the one-way function.
Joe

From: Rainer Urian on

"Kristian Gj�steen" <kristiag+news(a)math.ntnu.no> schrieb im Newsbeitrag
news:hmc02v$l5l$1(a)orkan.itea.ntnu.no...

> Another reason is to get provable security. I don't remember exactly,
> but I think there's a provably secure Korean signature scheme which is
> essentially a variant of DSA, but where reduction modulo some prime is
> replaced by a hash. Similarily, HMQV is (superficially) derived from
> MQV by hashing instead of reducing modulo some prime.
>
> Neither application of hashing significantly improves real security,
> but we get provable security...

regarding provable security and especially HMQV you should read the AMS
article by N. Koblitz:
www.ams.org/notices/200708/tx070800972p.pdf

and the "letters to the editor" of the poor victims .....
www.ams.org/notices/200711/tx071101454p.pdf

this is real high-quality fun ....

-------
Rainer