Re: [ANNOUNCE] new release of the ParrotTalk protocol specification, version 3.7

Eric Rescorla <ekr@rtfm.com> Wed, 21 November 2018 15:45 UTC

Return-Path: <ekr@rtfm.com>
X-Original-To: ietf@ietfa.amsl.com
Delivered-To: ietf@ietfa.amsl.com
Received: from localhost (localhost [127.0.0.1]) by ietfa.amsl.com (Postfix) with ESMTP id 0352A12E7C1 for <ietf@ietfa.amsl.com>; Wed, 21 Nov 2018 07:45:04 -0800 (PST)
X-Virus-Scanned: amavisd-new at amsl.com
X-Spam-Flag: NO
X-Spam-Score: -1.458
X-Spam-Level:
X-Spam-Status: No, score=-1.458 tagged_above=-999 required=5 tests=[DKIMWL_WL_MED=-1.459, DKIM_SIGNED=0.1, DKIM_VALID=-0.1, HTML_MESSAGE=0.001, RCVD_IN_DNSWL_NONE=-0.0001] autolearn=ham autolearn_force=no
Authentication-Results: ietfa.amsl.com (amavisd-new); dkim=pass (2048-bit key) header.d=rtfm-com.20150623.gappssmtp.com
Received: from mail.ietf.org ([4.31.198.44]) by localhost (ietfa.amsl.com [127.0.0.1]) (amavisd-new, port 10024) with ESMTP id khP9B6wALS_Y for <ietf@ietfa.amsl.com>; Wed, 21 Nov 2018 07:45:01 -0800 (PST)
Received: from mail-lj1-x229.google.com (mail-lj1-x229.google.com [IPv6:2a00:1450:4864:20::229]) (using TLSv1.2 with cipher ECDHE-RSA-AES128-GCM-SHA256 (128/128 bits)) (No client certificate requested) by ietfa.amsl.com (Postfix) with ESMTPS id A80A41277CC for <ietf@ietf.org>; Wed, 21 Nov 2018 07:45:00 -0800 (PST)
Received: by mail-lj1-x229.google.com with SMTP id t9-v6so5251087ljh.6 for <ietf@ietf.org>; Wed, 21 Nov 2018 07:45:00 -0800 (PST)
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=rtfm-com.20150623.gappssmtp.com; s=20150623; h=mime-version:references:in-reply-to:from:date:message-id:subject:to :cc; bh=OBYAM3dyDz9/C7HSUX1iJk4C58Ywg90GN8jo4Rwm9uU=; b=Gqt3VbrM4E9lknd3YVG7nddR5pdXt+M/8rTUl8dqsiXhBAJi9NDMMb9zt4A40OuiPL 8vQlJaNxIGtTXHIDV2vTaN7tbYDXxqrQK/FCE2cEa4eYcxH5q7DVKWlvSnQFh9/Q8J4S 44sPIoLTJ7+ma3SRV76aTtlEF6q2PCuUaLpZ/ekZL4/H2DHFcHJht/FZJyHQeOiCdFYR P020fJfWRWc/cPaqPHR3mf/2MuWSWPCGZ0ZvNH1NWTcybqSIKn4QKJzI4gqB0FMSGyf5 Kuvr8op/cp7BfQ5XWlta3Q78+NAPyNfOwmz8qOdctnNxnJlqZiF2CQTZIMVpVDOUmRJ8 6Xow==
X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20161025; h=x-gm-message-state:mime-version:references:in-reply-to:from:date :message-id:subject:to:cc; bh=OBYAM3dyDz9/C7HSUX1iJk4C58Ywg90GN8jo4Rwm9uU=; b=JRkzSMsdFPBZzR3mzXTQki+SMzVSAu0AnLmkU2yBo3a9l7tffFScifUzqn5CHq0RGl MjLXSgKnP416gN+U3m1eWc4g63/RWLooScED8daZC6ER1LtzyeHMybX4iKbSvAz93/cJ +/luZz/ELxHqFi3l+lfiAXSObqtCgB+A/ufhenvANl4XW9lq35qSa5Fv8Ybz+0sRirRF H7V/Xs1nKnMMnJFXsNfdFlw/QGcex3vQheJr2YKqA83dWLR/GvblfMF2idbGu6jXwR3J LFEqu4pfryZk2lNy/99LUoTr3tLlwkNUxK3D7g6VjylZZQsqbwzEvfP5DrcUDXgVHKfO jA4g==
X-Gm-Message-State: AGRZ1gJKpOH2fY0lMapVHeEIptJ6ieValwQuz6VkR5QC2H/KxQ2uX0R9 TyujRA/jz9BkroQyu8EKlo/I22ZIndfspfyXJEj0zA==
X-Google-Smtp-Source: AFSGD/U9CsAfxij1PkkHoZytkEhF0nlqUxAvmKl19EYq0KDAVRdl78T0CmPUM6PK8iqKSExMdEsD/KWNowgZOUTi4Zo=
X-Received: by 2002:a2e:3218:: with SMTP id y24-v6mr4810902ljy.157.1542815098682; Wed, 21 Nov 2018 07:44:58 -0800 (PST)
MIME-Version: 1.0
References: <SyrakryPyk1zzTAO_b_NyUPXPt4l3W1m9vt55Lg1m7sHhi1fi2TCmIbQCH5pqFtPpvR4rFWm-6DxNCGTCN7rSMBmGMnRSVx6v5xu_z2kKDI=@protonmail.com> <CAPt1N1n_kzQyeoy_fXKz3BLjiUYqWq2J9sm4=0STjeX51H+yjw@mail.gmail.com> <c1cFwZUvofxtc2Y63oyZ8Cz9iX3tT9IlAdPVAD-sfOh-fUy4sFXV9WEpO_tp7hownBT__us64FXidemK1QnrxGlShvK66z39f7ReNGj-j5s=@protonmail.com> <CABcZeBN64hbJ-hp+7Q9pzX+u0nv6Fiq0XYY_v22EB_no23Cy2A@mail.gmail.com> <c4Q4L5o9q57cegtvu6-TJHQnWk6TQ1viHoFm4gDiZCWVEHCZkZtJp2wqy8xwlaud8ND1vfwTM1sZglurtvhonqVhyJ29-TeGZ3BcawFZegs=@pm.me>
In-Reply-To: <c4Q4L5o9q57cegtvu6-TJHQnWk6TQ1viHoFm4gDiZCWVEHCZkZtJp2wqy8xwlaud8ND1vfwTM1sZglurtvhonqVhyJ29-TeGZ3BcawFZegs=@pm.me>
From: Eric Rescorla <ekr@rtfm.com>
Date: Wed, 21 Nov 2018 07:44:21 -0800
Message-ID: <CABcZeBN1NfyhdBVudHQ=MgXmtun4T6RzCwO52aLV6k6DuPx8BA@mail.gmail.com>
Subject: Re: [ANNOUNCE] new release of the ParrotTalk protocol specification, version 3.7
To: robert.withers@pm.me
Cc: IETF discussion list <ietf@ietf.org>
Content-Type: multipart/alternative; boundary="000000000000e96450057b2ea1dc"
Archived-At: <https://mailarchive.ietf.org/arch/msg/ietf/01RBn5I87HQtqD6v6c-vbvpDmfU>
X-BeenThere: ietf@ietf.org
X-Mailman-Version: 2.1.29
Precedence: list
List-Id: IETF-Discussion <ietf.ietf.org>
List-Unsubscribe: <https://www.ietf.org/mailman/options/ietf>, <mailto:ietf-request@ietf.org?subject=unsubscribe>
List-Archive: <https://mailarchive.ietf.org/arch/browse/ietf/>
List-Post: <mailto:ietf@ietf.org>
List-Help: <mailto:ietf-request@ietf.org?subject=help>
List-Subscribe: <https://www.ietf.org/mailman/listinfo/ietf>, <mailto:ietf-request@ietf.org?subject=subscribe>
X-List-Received-Date: Wed, 21 Nov 2018 15:45:04 -0000

On Wed, Nov 21, 2018 at 3:35 AM Robert <robert.withers@pm.me> wrote:

> Yes, I should add the parameters used for difffieHellman. It is standard
> DH key exchange with a generator of 2 and the prime is prime from rfc3526:
> 2048-bit MODP Group (https://tools.ietf.org/html/rfc3526#section-3).
> SharedKeyPadPositiveByteArray, adds an intial 0 if the bytes are 2s
> complement negative. This matches the byteArray produced by Java's
> diffieHellman.
>

OK. You should specify this. I would like to note two points here:

- I do not see nonces being mixed in. This is potentially safe if you
guarantee fresh DH shares for each connection, but if both sides replay
their DH shares (which I don't see you forbidding), then you have some very
serious key reuse problems. For this reason, you would be better served to
add some nonces. Perhaps I missed something.
- It's generally not a good idea to assume that the DH function provides
contributive behavior. If you compare to (e.g., TLS 1.3), you will see that
the current style is to mix in most of the protocol transcript.



> I will try to give my opinion why this protocol is superior. It is a
> minimal protocol to establish an encrypted connection. I view it as a
> positive that it does not use Certificates, you just need public and
> private keys for each agent.
>

This is possible to do with TLS as well, using RFC 7250.



. For myself, that is the real advantage of the ParrotTalk protocol is its
> implementation in Squeak/Pharo and its Java implementation. I would suggest
> that you load the code and explore the design.
>

I doubt that I or others are likely to do that. If you want people to
review your protocol, it's usually necessary to produce a sufficiently
clear document that they are able to understand the document without
reference to the code. As I indicated in my previous message, in my opinion
that is not the case for the document as-is.


After many iterations I came up with the ThunkStack, managing the
> connection. The other aspect which is a strong advantage is that all the
> headers used in the message flow are defined as ASN1 structures, so this
> represents a solid standard for messaging to bring about the minimal
> protocol. With my Java code, one can see the ASN1 encoder and the
> ParrotTalk impl can be easily ported to new languages, thus my one issue
> with ParrotTalk is to implement in C, C++, C#, Objective-C, Rust, Dart,
> etcetera. Port ASN1 then port ParrotTalk. Currently, ParrotTalk in
> Squeak/Pharo and Java are bit-compatible and interoperable.
>

This form of interoperability is generally a property of all the protocols
we design, regardless of the language used to specify the protocol.

As you observe, it is often helpful to specify the protocol messages (PDUs)
for a protocol in a formal language, and depending on the relative
complexity of the PDUs compared to the complexity of the language, this
might or might not minimize implementation effort. For instance, TLS is
specified in such a language [0] though IKE is not (it uses bit diagrams).
Of course, it is also possible to retroactively design formal languages
which allow you to express PDU formats which were previously expressed in
bit diagrams and the like. So I'm not sure if I perceive this to be a
sufficiently large advantage to justify designing an entirely new AKE.

-Ekr

[0] And in fact I believe that there is at least one TLS implementation
which processes the formal language more or less directly.



> A frame has this structure:
> { 8-byte frame spec | ASN1 Header | [payload] }
>
> A data frame over the wire looks like this with frame embedding:
> {8-byte spec | MAC (20-byte mac) | [ spec | Encrypted (ivSequence) | [
> spec | Encoded | [ spec | RawData | [ RavenMessage ] ] ] ] }
>
>
>
> Regarding the comm stack, during Rendezvous, prior to an encrypted
> connection settling, here is what the stack looks like with the send
> buffering thunk and the SessionOperations managing the state machine and
> the SecurityOps for rendezvous negotiation
> 1: RavenTerminal
> 2: Session
> 3: SendFramesBuffer
> 4: SessionOperations (SecurityOps)
> 5: ReceivingFrameBuffer
> 6: SocketThunk
>
> And when rendezvous completes the fully encrypted stack looks like this:
> 1: RavenTerminal
> 2: Session
> 3: EncoderThunk (for de/serialization)
> 4: CustomsThunk (for MAC validation)
> 5: CipherThunk (for encryption)
> 6:; ImmigrationThunk (for MAC access)
> 7: SessionOperations (SecurityOps cleared)
> 8: ReceivingFrameBuffer
> 9: SocketThunk
>
> When I find the time and motivation, I may work SSL and SSH into the
> ThunkStack design as both implementations in the Cryptography repository
> are BROKEN. In porting SSL (TLS 1.2) I may extend to the new TLS 1.3, which
> has a quick three msg negotiation.
>
> I primarily documented both versions of the ParrotTalk protocol in two
> slideshows in the specified PDFs from my earlier msg and documented in the
> readme.MD.
>
> I hope I answered your questions to your satisfaction.
>
> Best,
> Robert
>
> ‐‐‐‐‐‐‐ Original Message ‐‐‐‐‐‐‐
> On Tuesday, November 20, 2018 2:31 PM, Eric Rescorla <ekr@rtfm.com> wrote:
>
> Robert,
>
> I took a quick look at this document. To be honest, it's a bit hard to
> make sense of. There's quite a bit of code and code-like stuff, abd not
> very much text. So, for instance, looking at page 18, I see "sharedKey :=
> diffieHellman sharedKeyPadPositiveByteArray", but I don't see definitions
> for either diffieHellman or sharedKeyPadPositiveByteArray, so I don't know
> how to do this computation. If you would like people to provide opinions on
> this document, you will probably need to flesh it out more..
>
> With that said, a preliminary question: can you expand on the ways in
> which you believe this protocol to be superior to other Authenticated Key
> Agreement protocols that we have already standardized in IETF, such as IKE,
> SSH, or TLS?
>
> -Ekr
>
>
>
> On Tue, Nov 20, 2018 at 8:37 AM Robert <robert.withers=
> 40protonmail.com@dmarc.ietf.org> wrote:
>
>> I am unsure why Facebook is considered a violation of what a sensible
>> person would reach to, as it is not any sort of phishing scam. I also have
>> a github project (https://github.com/CallistoHouseLtd/ParrotTalk) and
>> the README.MD should prove descriptive. To satisfy your curiousity
>> regarding what ParrotTalk is here is a description.
>>
>> ParrotTalk is an encrypted connection framework. Currently allowing
>> anonymous 2048-bit key negotiation to establish user-provided encryption
>> cipher and user-provided encoding and decoding, both through a provided
>> SessionAgentMap to a starting SessionAgent server. Please look in the test
>> case ThunkHelloWorldTest for building these maps and running a connection
>> iwth data passing after encryption is established. There is a 4-way
>> negotiation, from ProtocolOffered/Accepted to Go/GoToo. In using RSA 2048
>> signature validation and DH 2048 primes to establish the key used within
>> the selected Cipher. The Cipher and Encoder are selected by name through
>> the negotiation protocol. Currently three Ciphers are selectable, AESede,
>> DESede, and DES. There are two encoders tested, asn1der, and Bytes. This
>> protocol is described here, in these documents.
>>
>> The two protocol documents v3.6 and v3.7 are hosted on github:
>>
>> https://github.com/CallistoHouseLtd/ParrotTalk/blob/master/docs/ParrotTalkFrameDesign-3.7.pdf
>>
>> and
>>
>>
>> https://github.com/CallistoHouseLtd/ParrotTalk/blob/master/docs/ParrotTalkFrameDesign-3.6.pdf
>>
>> Here is the IETF draft I wrote up for version 3.6, though not yet updated
>> for version 3.7. The slides should suffice:
>>
>>
>> https://github.com/CallistoHouseLtd/ParrotTalk/blob/master/docs/draft-withers-parrot-talk-v36-00.pdf
>>
>> Kindly,
>> Robert
>>
>>
>> ‐‐‐‐‐‐‐ Original Message ‐‐‐‐‐‐‐
>> On Tuesday, November 20, 2018 8:44 AM, Ted Lemon <mellon@fugue.com>
>> wrote:
>>
>> It would help to give enough information about what ParrotTalk is so that
>> we know whether it's worth visiting the link..   However, that's moot,
>> since it's a facebook link, and no sensible person is going to visit it.
>>
>> On Tue, Nov 20, 2018 at 1:09 AM Robert <robert.withers=
>> 40protonmail.com@dmarc.ietf.org> wrote:
>>
>>> Please read my Facebook post introducing the features of the new version
>>> 3.7 protocol of ParrotTalk, now a 5 message handshake, 3 messages like TLS
>>> 1.3 and an initial 2 message negotiation to determin which version of the
>>> protocol to use. My release of the Squeak/Pharo implementation which is
>>> capable of supporting both v3.6 and v3.7 in the same SessionAgent, spawning
>>> Sessions with either version, based on the negotiation. The Java version at
>>> https://github.com/CallistoHouseLtd/ParrotTalk can only talk v3.6 right
>>> now. The interesting feature of the Squeak/Pharo implementation is that it
>>> supports version negotiation for either version. Tests are all green.
>>>
>>> https://www.facebook.com/robert.withers
>>>
>>> best regards,
>>> Robert
>>>
>>>
>>>
>>
>