> On Jan 25, 2015, at 8:58 PM, Yaron Sheffer <yaronf.i...@gmail.com> wrote:
> 
> Hi Yoav, Valery,
> 
> I agree with Valery's proposed redefinition of the proof-work-work, based on 
> the PRF.
> 
> I am currently off-line so my question may have been answered in the pull 
> request, but: can we make it very clear that the PRF used for the POW must be 
> the very same as the one selected by the responder for the IKE SA?

It is possible, but I don’t see why it’s a good thing. Suppose the conversation 
goes like this:

Initiator: I want (AES-CBC-128 or AES-CBC-256) with (AUTH_HMAC-SHA1 or 
AUTH_HMAC-SHA256) and (PRF_ HMAC-SHA1 or PRF_HMAC-SHA256) and (Group 2 or Group 
14)

Responder: First do proof-of-work with PRF_HMAC-SHA256

Initiator: Here’s the proof-of-work, now I want (AES-CBC-128 or AES-CBC-256) 
with (AUTH_HMAC-SHA1 or AUTH_HMAC-SHA256) and (PRF_ HMAC-SHA1 or 
PRF_HMAC-SHA256) and (Group 2 or Group 14).

Responder: Fine, I choose AES-CBC-128 with HMAC-SHA1 and PRF_HMAC-SHA1 and 
Group 2.

What is the benefit of forcing the responder to choose the same PRF algorithm 
twice? What is wrong with having it choose PRF_HMAC-SHA1?  Sure, we *can* do 
this, but why?

> People may not like it (I don't) but a major reason for including agility 
> today is FIPS silliness. One day people will be forced to rip out any mention 
> of SHA-256 from their code, and we don't want to need to reopen the RFC.

Some algorithms are also more fashionable than others.

Yoav

> 
> Thanks,
>       Yaron
> 
> On 01/19/2015 12:02 AM, Valery Smyslov wrote:
>> Hi Yoav,
>> 
>>    Pull Request: https://github.com/ietf-ipsecme/drafts/pull/2
>> 
>>    Hi,
>> 
>>    Valery has created this pull request. During the meeting in Honolulu
>>    and subsequent discussion on the list, several people requested that
>>    there be a negotiation of the algorithm used in the puzzle rather
>>    than fixing it to SHA-256.
>> 
>>    The pull request suggests figuring out which algorithms the
>>    Initiator supports by examining the SA payload in the IKE_SA_INIT
>>    request, and using the PRF algorithms.
>> 
>>    I’m posting this to the list, even thought we’re not sure about
>>    this. Specifically, PRF_AES128_XCBC and (I think) PRF_AES128_CMAC
>>    won’t work with the bitcoin-like puzzle that is currently in the draft.
>> 
>>    Why?
>> 
>>    For convenience assume a 16-byte cookie, a fixed zero IV (as always
>>    in AES-XCBC) and fixed zero key.
>> 
>>    So let Y = AESENC(key, IV XOR COOKIE) = AESENC(zero, COOKIE)
>>    Let Z = AESDEC(key, zero) = AESDEC(zero, zero)
>>    Extend the cookie by Y XOR Z.
>>    The result will give you a 128-bit tag of all zeros. Way too easy.
>> 
>> You forgot about the mandatory 10* padding in AES-XCBC.
>> So, the result of AESDEC(zero, zero) should not be a random
>> string, but should look like properly padded one.
>> But anyway, I think that if we use PRF for puzzles, then the puzzle
>> definition should be changed.
>> Let R=PRF(K,S). Then the puzzle should be: using supplied cookie as
>> message S,
>> find a key K so, that result R contains the requested number of trailing
>> zero bits.
>> I'm not a cryptographer, but I think this variant of puzzle should be secure
>> for all PRFs, defined in IPsec. Why? First, every secure PRF is a secure
>> MAC
>> (not visa versa). This is pointed out by several sources. Then, secure MAC
>> should not allow attacker to recover a key given the message and
>> the authentication tag. In our case the authentication tag is not fully
>> given,
>> but it must have some properties (desired number of trailing zero bits),
>> so it is not arbitrary.
>> 
>>    Another way to do this is to add a notification in the Initiator’s
>>    request listing the hash algorithms that it supports. We could reuse
>>    the RFC 7427 registry of hash algorithms.
>> 
>> I don't think this is a good idea. First, it will require initiator to
>> include
>> a list of supported hash algorithms into request message. This will
>> unnecessary increase its size in all cases: at this point initiator
>> has no idea whether responder will ever use puzzles or even
>> whether it supports them. I think this is a waste of resources,
>> especially taking into consideration that we may reuse
>> information, that is always present in the request message.
>> 
>>    Personally, I really don’t like this algorithm agility, because we
>>    don’t want to give the Initiator the options of a hard vs easy
>>    puzzle. So suppose the Responder supports two algorithms, SHA-256
>>    and SHA-512, and that the latter is half as fast as the former, then
>>    a SHA-512 puzzle would have to have 1 bit less than the SHA-256
>>    puzzle. But in fact, we know that SHA-512 is faster on 64-bit
>>    platforms, while SHA-256 is faster on 32-bit platforms. Add some
>>    GOST-certified hash to the mix, and the administrator’s task becomes
>>    that much harder.
>> 
>> If the difference in algorithms speeds is significant, then some weights
>> could be
>> added to algorithm definitions to make the required time to solve puzzle
>> roughly the same
>> on the same platform.
>> 
>>    OTOH often when a protocol is published without algorithm agility,
>>    we end up extending it later.
>> 
>> Exactly.
>> 
>>    Yoav
>> 
>> Regards,
>> Valery.
>> 
>> 
>> _______________________________________________
>> IPsec mailing list
>> IPsec@ietf.org
>> https://www.ietf.org/mailman/listinfo/ipsec
>> 

_______________________________________________
IPsec mailing list
IPsec@ietf.org
https://www.ietf.org/mailman/listinfo/ipsec

Reply via email to