Re: [Rift] Security interop testing between RIFT-Juniper and RIFT-Python successfully completed

Bruno Rijsman <brunorijsman@gmail.com> Fri, 19 July 2019 13:03 UTC

Return-Path: <brunorijsman@gmail.com>
X-Original-To: rift@ietfa.amsl.com
Delivered-To: rift@ietfa.amsl.com
Received: from localhost (localhost [127.0.0.1]) by ietfa.amsl.com (Postfix) with ESMTP id 7FC45120191 for <rift@ietfa.amsl.com>; Fri, 19 Jul 2019 06:03:55 -0700 (PDT)
X-Virus-Scanned: amavisd-new at amsl.com
X-Spam-Flag: NO
X-Spam-Score: -1.998
X-Spam-Level:
X-Spam-Status: No, score=-1.998 tagged_above=-999 required=5 tests=[BAYES_00=-1.9, DKIM_SIGNED=0.1, DKIM_VALID=-0.1, DKIM_VALID_AU=-0.1, FREEMAIL_FROM=0.001, HTML_MESSAGE=0.001, RCVD_IN_DNSWL_NONE=-0.0001, SPF_HELO_NONE=0.001, SPF_PASS=-0.001] autolearn=ham autolearn_force=no
Authentication-Results: ietfa.amsl.com (amavisd-new); dkim=pass (2048-bit key) header.d=gmail.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 o2MYkmU9fhts for <rift@ietfa.amsl.com>; Fri, 19 Jul 2019 06:03:52 -0700 (PDT)
Received: from mail-ed1-x52c.google.com (mail-ed1-x52c.google.com [IPv6:2a00:1450:4864:20::52c]) (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 6F3C912012A for <rift@ietf.org>; Fri, 19 Jul 2019 06:03:52 -0700 (PDT)
Received: by mail-ed1-x52c.google.com with SMTP id k21so34460447edq.3 for <rift@ietf.org>; Fri, 19 Jul 2019 06:03:52 -0700 (PDT)
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20161025; h=from:message-id:mime-version:subject:date:in-reply-to:cc:to :references; bh=iNyGcqongFoX8X87m1cu43C2P7lMhWBYlqf/D5unPz8=; b=EMaxdO4nFb+pJEMtlR0iD08DUy4Fsxs9VwSP4EIJGoAFDdy+ERat+HwC81u8V1S+jr 9PMZ5Xr6D2fXeZ62Ydvc99PZqxn2yWikVLdAIc9u9GxfTn2ERUGwXQPtUiFVnBzh1dqM O5WE7rIRmXcskJXrIzn/NrVhy9+69uLyTaYb66X3l+qy08UaPnK8Wz9V2adKAmertLMk tP538d+zQidT8jqXzf8JvAU8oeGc74lUFTE9bRjZNjVmoP4xz9nkprGsEb3s/X8HLhez UfBXqzfugpTxuy+2nFR7MFko/uVT5QOcYPPXQsrKdZ4Ipn3beOoAmt0Zze6Zu0ovaOzl 8LHA==
X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20161025; h=x-gm-message-state:from:message-id:mime-version:subject:date :in-reply-to:cc:to:references; bh=iNyGcqongFoX8X87m1cu43C2P7lMhWBYlqf/D5unPz8=; b=qs4CThm5n8utRPNDuqjpebrdjJyLInP2fPEo1ENB2eOIoTZ9mPqv3219onG81OP8kL 3QEqi2P96RPTq4XIvpfvB1Xap4+QNut7YIwnaMGt2KuqUj/kclqx9TNfqfENAFvZxl1V b0WZHpV8il0cb4/9ekeJYY7yLZ/dfYKlH/70VUiLmhQ4AtqWYn8+9cvwACWcBtvm4gcB Lh5XnrZgLr8R3sagZxA30fJhIfr06efSHvJd1T7ZLfAfY27+HIvzbYYSgBhkFWlhHIQ6 stlMjYOX/RrXz7GPbHlF81sAHup457fBhDY13mJrEoa4zpVJeHQcFjSwrxAlODRjmQDd M3dQ==
X-Gm-Message-State: APjAAAWnbWFWAA4jAQ5wAHTwrAw0x8kP9m0GxwJwQk159CFUlCaT8zVJ oPDw9P49k/Uf635RLJNuuaQ=
X-Google-Smtp-Source: APXvYqxF+6WGXUtU9jjob+FCcKY2i9dLfJNXTqURyHGb1gOwSrWV0h2bDs2FTCPhGXfQ+XbUMCyohA==
X-Received: by 2002:a50:996e:: with SMTP id l43mr46959378edb.187.1563541430774; Fri, 19 Jul 2019 06:03:50 -0700 (PDT)
Received: from [192.168.178.122] (ip-213-127-48-174.ip.prioritytelecom.net. [213.127.48.174]) by smtp.gmail.com with ESMTPSA id h10sm8151675edn.86.2019.07.19.06.03.49 (version=TLS1_2 cipher=ECDHE-RSA-AES128-GCM-SHA256 bits=128/128); Fri, 19 Jul 2019 06:03:50 -0700 (PDT)
From: Bruno Rijsman <brunorijsman@gmail.com>
Message-Id: <BCAFEC74-0D66-4B2F-850F-88D056372712@gmail.com>
Content-Type: multipart/alternative; boundary="Apple-Mail=_1CAD4408-B509-4E91-A11A-5BDCEFFCF01A"
Mime-Version: 1.0 (Mac OS X Mail 12.4 \(3445.104.11\))
Date: Fri, 19 Jul 2019 15:03:48 +0200
In-Reply-To: <CA+wi2hOREpe6BF6A=r6gpshRK51JwGB11vcXTZQpqH9ThHS8RA@mail.gmail.com>
Cc: rift@ietf.org
To: Tony Przygienda <tonysietf@gmail.com>
References: <0DEC8C31-BFEE-42B9-B8D2-9F0A7ED88756@gmail.com> <0DB7371D-EF03-4DEB-9A26-0193AD4D57FE@gmail.com> <CA+wi2hOREpe6BF6A=r6gpshRK51JwGB11vcXTZQpqH9ThHS8RA@mail.gmail.com>
X-Mailer: Apple Mail (2.3445.104.11)
Archived-At: <https://mailarchive.ietf.org/arch/msg/rift/we3Kq1-zaNvGSMbPbsQSvLP0RsY>
Subject: Re: [Rift] Security interop testing between RIFT-Juniper and RIFT-Python successfully completed
X-BeenThere: rift@ietf.org
X-Mailman-Version: 2.1.29
Precedence: list
List-Id: Discussion of Routing in Fat Trees <rift.ietf.org>
List-Unsubscribe: <https://www.ietf.org/mailman/options/rift>, <mailto:rift-request@ietf.org?subject=unsubscribe>
List-Archive: <https://mailarchive.ietf.org/arch/browse/rift/>
List-Post: <mailto:rift@ietf.org>
List-Help: <mailto:rift-request@ietf.org?subject=help>
List-Subscribe: <https://www.ietf.org/mailman/listinfo/rift>, <mailto:rift-request@ietf.org?subject=subscribe>
X-List-Received-Date: Fri, 19 Jul 2019 13:03:55 -0000

Hi Tony,

I will have an “open source update" slide deck for you to present. Already a work in progress. I will be ready before the RIFT WG meeting. I will attend remotely.

— Bruno

> On Jul 19, 2019, at 3:01 PM, Tony Przygienda <tonysietf@gmail.com> wrote:
> 
> Bruno, <thumbs direction="up"/> and as usual thanks for the work. If you manage some material, great, otherwise I strip 2 viewgraphs when giving update to the group 
> 
> with that we have 2 working interop'ed implementation of the spec 
> 
> BTW, the juniper binary is not on the free download yet (0.10.* is without sec envelope) but I'll be prep'ing 0.11 download Bruno was using in the next 2 weeks here (as I mentioned previously, with much more material around it included than previously given we're pretty much done with the spec and schemas) ... 
> 
> thanks, see you all in CA
> 
> -- tony 
> 
> On Fri, Jul 19, 2019 at 6:52 AM Bruno Rijsman <brunorijsman@gmail.com <mailto:brunorijsman@gmail.com>> wrote:
> I am happy to report that I have successfully completed interop testing of RIFT security between RIFT-Juniper and RIFT-Python [1].
> 
> In my earlier e-mail I had already reported that interoperability was achieved for the outer security envelope.
> 
> Now, interoperability for origin security envelope is also working. As before, interop testing included both positive and negative test cases. This completes the interop testing of RIFT security.
> 
> We did not find any issues that require changes in the draft. (There was only one very minor implementation issue which was quickly fixed.)
> 
> For an updated feature guide of security in RIFT-Python see [2] (many enhancements were added during interop testing).
> 
> Much has changed since I wrote the "RIFT Security Review" document [3] and, as a result, it is now out of date. I will update it to reflect the changes in the draft since May and the recent experiences from interop testing. I hope to post the updated version before the RIFT meeting at the IETF-105 in Montreal.
> 
> [1] https://github.com/brunorijsman/rift-python <https://github.com/brunorijsman/rift-python>
> 
> [2] http://bit.ly/rift-python-security-feature-guide <http://bit.ly/rift-python-security-feature-guide>
> 
> [3] http://bit.ly/rift-security-review <http://bit.ly/rift-security-review>
> 
> — Bruno
> 
> PS: The interoperability tests are fully automated using the “interop.py” script in the RIFT-Python repository. The results can easily be reproduced by anyone with access to the RIFT-Python code (which is publicly available in GitHub), the RIFT-Juniper executable, and an AWS instance or physical Ubuntu server.
> 
> 
>> On Jul 17, 2019, at 2:41 PM, Bruno Rijsman <brunorijsman@gmail.com <mailto:brunorijsman@gmail.com>> wrote:
>> 
>> Status update on security interop testing between RIFT-Juniper and RIFT-Python:
>> 
>> The outer keys are now interoperating fine.
>> 
>> (A) As expected, the adjacency between RIFT-Juniper and RIFT-Python comes up to state 3way, when 
>> 
>>  (A1) authentication is disabled or
>> 
>>  (A2) authentication is enabled with the same active keys or 
>> 
>>  (A3) authentication is enabled with different active keys and corresponding accept keys.
>> 
>> (B) As expected, the adjacency between RIFT-Juniper and RIFT-Python does not come up to state 3way, when 
>> 
>>  (B1) Authentication is enabled on one side but not the other side
>> 
>>  (B2) Authentication is enabled with different active keys and without corresponding accept keys
>> 
>> Challenges along the way:
>> 
>>  (C1) Juniper uses SHA-256(key + payload) whereas RIFT-Python uses HMAC-SHA-256(key, payload).  Solution: add support for SHA-256(key + payload) to RIFT-Python (in addition to HMAC-SHA-256).
>> 
>>  (C2) RIFT-Juniper used different YAML configuration keywords than RIFT-Python.  Solution: change RIFT-Python to use the same configuration keywords.
>> 
>>  (C3) RIFT-Juniper only support configuration of outer keys on a per-interface basis, whereas RIFT-Python support configuring the outer keys on a per-node and per-interface basis with an inheritance rule.  Solution: for interop testing, only use per-interface configuration.
>> 
>>  (C4) RIFT-Juniper only supports SHA-256, whereas RIFT-Python also supports other key lengths (e.g. SHA-224, SHA-384, and more).  Solution: limit interop testing to SHA-256.
>> 
>> All four of these issues are implementation issues, and none of these issues require any changes to the draft.
>> 
>> Next step: finish interop testing for the origin keys. (I plan to do this Thursday  morning, Netherlands time)
>> 
>> — Bruno
>> 
>