Re: [Cfrg] [TLS] Curve25519 in TLS and Additional Curves in TLS

Andrey Jivsov <> Fri, 24 January 2014 06:31 UTC

Return-Path: <>
Received: from localhost ( []) by (Postfix) with ESMTP id 312F11A012A for <>; Thu, 23 Jan 2014 22:31:14 -0800 (PST)
X-Virus-Scanned: amavisd-new at
X-Spam-Flag: NO
X-Spam-Score: -1.901
X-Spam-Status: No, score=-1.901 tagged_above=-999 required=5 tests=[BAYES_00=-1.9, DKIM_SIGNED=0.1, DKIM_VALID=-0.1, SPF_PASS=-0.001] autolearn=ham
Received: from ([]) by localhost ( []) (amavisd-new, port 10024) with ESMTP id ByA808-JTahX for <>; Thu, 23 Jan 2014 22:31:11 -0800 (PST)
Received: from ( [IPv6:2001:558:fe2d:43:76:96:30:80]) by (Postfix) with ESMTP id C6DA21A00FD for <>; Thu, 23 Jan 2014 22:31:11 -0800 (PST)
Received: from ([]) by with comcast id HiQG1n00316AWCUA8iXAcx; Fri, 24 Jan 2014 06:31:10 +0000
Received: from [] ([]) by with comcast id HiX91n00W4uhcbK8SiXAUZ; Fri, 24 Jan 2014 06:31:10 +0000
Message-ID: <>
Date: Thu, 23 Jan 2014 22:31:09 -0800
From: Andrey Jivsov <>
User-Agent: Mozilla/5.0 (X11; Linux x86_64; rv:24.0) Gecko/20100101 Thunderbird/24.2.0
MIME-Version: 1.0
To: Michael Hamburg <>
References: <> <> <> <> <> <> <> <> <> <>
In-Reply-To: <>
Content-Type: text/plain; charset=windows-1252; format=flowed
Content-Transfer-Encoding: 8bit
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;; s=q20121106; t=1390545070; bh=nPqAX+v0hTgxH0ikvkNxVrtdiTodqvWaWMm2XBk+kq0=; h=Received:Received:Message-ID:Date:From:MIME-Version:To:Subject: Content-Type; b=atxXQHVhmdjXvaALCo4pyoauXS/c5QYukVgGzhS6t23u+A17gTLQc1yW1EPWl4EP0 trQsSO5sUtGO1lilN04353SBK6OdeE3rwGxmBDQvhuCJ54hS/uFP81coZO3KuZJ/QQ 9BnYCsPkfx5tmAiw7f6jkMIC1hcD37uYRGyn9Wu2WSaZ/d/2mFoDiNdvF9u4PYsmev psVIZevHldZU1jrVbwQxWEq8s9HIbHb1QLZph2dnG7vNaWZ4kWfoqkHpRj6ctJgKWa JVgDIDPIShwyrgqIVXumJNg/Q5/AEfpYqSQ+9IU14Sush51gpGUYg/rGKOM6Ps0Sr9 H2aK1IeyvRelg==
Subject: Re: [Cfrg] [TLS] Curve25519 in TLS and Additional Curves in TLS
X-Mailman-Version: 2.1.15
Precedence: list
List-Id: Crypto Forum Research Group <>
List-Unsubscribe: <>, <>
List-Archive: <>
List-Post: <>
List-Help: <>
List-Subscribe: <>, <>
X-List-Received-Date: Fri, 24 Jan 2014 06:31:14 -0000

On 01/23/2014 06:08 PM, Michael Hamburg wrote:
> On Jan 23, 2014, at 4:59 PM, Andrey Jivsov <> wrote:
>> Wouldn't be another method?
>> Traditionally the problem was solved by carrying 1 bit and then finding a place to fit it in and defining what it means, etc. There is another way. One can adjust the private key to make the coordinate that we drop, x in this case, be the smallest of the two possibilities.
>> The nice feature of my proposal is that you can still also encode the bit if you wish so, as you proposed.
> This is interesting, but I think it works better with the Edwards x-coordinate instead of the Montgomery y-coordinate.  That is, it applies well to Watson’s (Montgomery x, Edwards x) representation.  This is because not every point you might want to transmit is a public key; it might be the product of something which does not support an easy negation, such as PAKE.  In this case, with your proposal, implementers have to send the sign bit, and we have two wire formats again.  But if the Edwards x-coordinate is used, you can also fast-adjust by adding the point of order 2, which maps EdX to -EdX.  (It maps EdY to -EdY and MontX to 1/MontX.)  If the protocol wipes out the cofactor (almost every protocol does for security reasons), then this is more likely to be acceptable than negating the point.
> Then again, any discussion like this is fraught with issues about alternative encodings for non-wire formats, implementation compatibility, uniqueness, covert channels, etc.  Might take some hashing out.
> Cheers,
> — Mike

It seems to me that it will be possible to find an option to tweak the 
private scalar in more complex protocols, while making this an internal 

For example, in

the PE is never sent out, so its generation doesn't change.

The Element is a point, which is very similar to a public key for our 
purpose. The Element is sent to the other peer and it needs to be 
"compliant". The element is generated from a random mask and PE; thus 
the mask can be adjusted appropriately so that the Element is 
"compliant" (then the 'scalar' is calculated with the appropriately 
adjusted mask).