Re: [IPsec] Call for independent experts (IKEv2) for Stage 4 of the PAKE selection process

Dan Harkins <> Fri, 30 August 2019 07:11 UTC

Return-Path: <>
Received: from localhost (localhost []) by (Postfix) with ESMTP id D63BA1201E5 for <>; Fri, 30 Aug 2019 00:11:31 -0700 (PDT)
X-Virus-Scanned: amavisd-new at
X-Spam-Flag: NO
X-Spam-Score: -1.9
X-Spam-Status: No, score=-1.9 tagged_above=-999 required=5 tests=[BAYES_00=-1.9, RCVD_IN_DNSWL_NONE=-0.0001, SPF_HELO_NONE=0.001, SPF_PASS=-0.001] autolearn=ham autolearn_force=no
Received: from ([]) by localhost ( []) (amavisd-new, port 10024) with ESMTP id 9Nm5GeslXj4t for <>; Fri, 30 Aug 2019 00:11:30 -0700 (PDT)
Received: from ( []) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by (Postfix) with ESMTPS id 84D2F120113 for <>; Fri, 30 Aug 2019 00:11:30 -0700 (PDT)
Received: from ( []) by (PMDF V6.8-0 #1001) with ESMTP id <> for; Fri, 30 Aug 2019 02:11:30 -0500 (CDT)
Received: from Dans-MacBook-Pro.local ([]) by (PMDF V6.7-x01 #1001) with ESMTPSA id <> for; Fri, 30 Aug 2019 00:11:29 -0700 (PDT)
Received: from ([] EXTERNAL) (EHLO Dans-MacBook-Pro.local) with TLS/SSL by ([]) (PreciseMail V3.3); Fri, 30 Aug 2019 00:11:29 -0700
Date: Fri, 30 Aug 2019 00:11:28 -0700
From: Dan Harkins <>
In-reply-to: <>
Message-id: <>
MIME-version: 1.0
Content-type: text/plain; charset=utf-8; format=flowed
Content-language: en-US
Content-transfer-encoding: 8BIT
User-Agent: Mozilla/5.0 (Macintosh; Intel Mac OS X 10.14; rv:60.0) Gecko/20100101 Thunderbird/60.8.0
X-PMAS-SPF: SPF check skipped for authenticated session (, send-ip=
X-PMAS-External-Auth: [] (EHLO Dans-MacBook-Pro.local)
References: <> <> <>
X-PMAS-Software: PreciseMail V3.3 [190828c] (
X-PMAS-Allowed: system rule (rule allow header:X-PMAS-External noexists)
Archived-At: <>
Subject: Re: [IPsec] Call for independent experts (IKEv2) for Stage 4 of the PAKE selection process
X-Mailman-Version: 2.1.29
Precedence: list
List-Id: Discussion of IPsec protocols <>
List-Unsubscribe: <>, <>
List-Archive: <>
List-Post: <>
List-Help: <>
List-Subscribe: <>, <>
X-List-Received-Date: Fri, 30 Aug 2019 07:11:32 -0000

On 8/29/19 5:11 PM, Tero Kivinen wrote:
> [removed cfrg from CC, as I do not think this issue really belongs
> there as we are discussing IKE signaling here].
> Dan Harkins writes:
>>    First of all this suggestion is for a particular PAKE and I'm not
>> suggesting that any of the other candidates would slide in so effortlessly.
>> In fact an augmented PAKE is, IMHO, not suitable for a protocol like IKE
>> where either side can initiate. The PAKE I'm describing here is SPEKE,
>> a balance PAKE.
>>    SPEKE does a simple Diffie-Hellman but uses a secret generator that is
>> deterministically obtained from the password. This technique is basically
>> one of the hash-to-curve functions from the CFRG's hash-to-curve I-D
>> or a simple hashing and exponentiation for MODP groups. All this happens
>> at password provisioning time prior to IKE being run.
>>    Then when IKE is run the secret generator for the negotiated group is
>> used to do the D-H, the IKE_SA_INIT exchange is basically SPEKE. The
>> result is, if they both have the same generator (which means they had the
>> same password), an authenticated shared secret. This secret is verified in
>> the IKE_AUTH exchange.
> How does the responder know which of the one million username password
> pairs to pick to generate the generator when calculating D-H in the
> IKE_SA_INIT? The actual identity of the user is only sent in the
> encrypted IKE_AUTH message.
> I.e., I think this has exactly same problem than IKEv1 has with
> pre-shared keys for main mode. You must know the initiator identity
> based on the IP-addresses, thus makes this completely unusable for
> non static VPN cases.

   HA! I did miss something :-)

   Yes, I guess a new payload is needed to express the username. This can
be added to the IKE_SA_INIT message. Or maybe it can be a special type of
NOTIFY, that's a six-of-one-and-a-half-dozen-of-the-other issue. But this
should not involve an extra Auth exchange (as the framework PAKEs do)
since SPEKE is just a Diffie-Hellman exchange which is exactly what IKE



>>    This would require a new Auth Method defined for SPEKE/PAKE to indicate
>> that the SPEKE shared secret is used. And that should be all that's needed.
>> It should be that simple. The protocol shouldn't have to change, no new
>> messages, no new payloads, no new nuthin. If I'm missing something please
>> let me know.