Matthew Toseland wrote:
> JFK is:
>
> Session key = H_<secret> { alice exponential, bob exponential, "2" }
> K_a = H_<secret> { alice exponential, bob exponential, "1" }
> K_e = H_<secret> { alice exponential, bob exponential, "2" }
>
> Where K_a and K_e are temporary keys used in phase 3 and 4.
>
> It's the same principle, it's just a question of whether it's safer to derive
> further keys from the session key or from the secret key (= g^xy).
From this and the Ferguson/Schneier snippet it looks like you can
generally derive any number of keys from a master key by hashing it with
different values, wouldn't you say?
(Actually I'm kind of surprised by this... ideally we'd like there to be
no relationship between the various keys but obviously there has to be a
relationship if the other keys are derived from the master, so the
problem is how to make sure the relationship isn't exploitable... I
didn't realise hash functions guaranteed to conceal the relationship
between the input and output, that sounds more like the guarantee
provided by a block cipher, so I would have though it would make more
sense to use a block cipher to derive the other keys... something like
k1=enc_k(1), k2=enc_k(2), etc... in other words CTR mode. But what do I
know?)
Cheers,
Michael