Re: [sidr] Modifiation request: draft-ietf-sidr-bgpsec-protocol-14
Michael Baer <baerm@tislabs.com> Wed, 24 February 2016 16:28 UTC
Return-Path: <baerm@tislabs.com>
X-Original-To: sidr@ietfa.amsl.com
Delivered-To: sidr@ietfa.amsl.com
Received: from localhost (ietfa.amsl.com [127.0.0.1]) by ietfa.amsl.com (Postfix) with ESMTP id 5E3011B3856 for <sidr@ietfa.amsl.com>; Wed, 24 Feb 2016 08:28:34 -0800 (PST)
X-Virus-Scanned: amavisd-new at amsl.com
X-Spam-Flag: NO
X-Spam-Score: -1.235
X-Spam-Level:
X-Spam-Status: No, score=-1.235 tagged_above=-999 required=5 tests=[BAYES_00=-1.9, SPF_SOFTFAIL=0.665] autolearn=no
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 c0j0FLq1Mq1x for <sidr@ietfa.amsl.com>; Wed, 24 Feb 2016 08:28:31 -0800 (PST)
Received: from mail.mikesoffice.com (dns.mikesoffice.com [75.101.48.145]) by ietfa.amsl.com (Postfix) with ESMTP id 336F51B3857 for <sidr@ietf.org>; Wed, 24 Feb 2016 08:28:31 -0800 (PST)
Received: from localhost (unknown [173.239.75.179]) by mail.mikesoffice.com (Postfix) with ESMTPSA id 7DC2B395D2F; Wed, 24 Feb 2016 08:28:30 -0800 (PST)
From: Michael Baer <baerm@tislabs.com>
To: Sean Turner <sean@sn3rd.com>
References: <ECE5A848-2A1D-43F7-A303-A76442572693@nist.gov> <0FCAB5B8-420D-4007-8E91-21712D9CD6A5@sn3rd.com>
X-Face: "*g#dUT3; 8M9AE5dLk\\b4G\cNCQkRb.g/2QwEXQKf.:<GckOP:; wBMTb7\%Y"JI=R<M6g?6}tR)6Z7rp5X*24G\bkb!
Date: Wed, 24 Feb 2016 08:28:29 -0800
In-Reply-To: <0FCAB5B8-420D-4007-8E91-21712D9CD6A5@sn3rd.com> (Sean Turner's message of "Tue, 23 Feb 2016 22:07:45 -0500")
Message-ID: <87egc2cbte.fsf@rebma.mikesoffice.com>
User-Agent: Gnus/5.13 (Gnus v5.13) Emacs/24.5 (gnu/linux)
MIME-Version: 1.0
Content-Type: text/plain; charset="utf-8"
Content-Transfer-Encoding: quoted-printable
Archived-At: <http://mailarchive.ietf.org/arch/msg/sidr/ettDlvku43XxRuk7hW5QDEf0vb8>
Cc: Matthew Lepinski <mlepinski@ncf.edu>, sidr list <sidr@ietf.org>
Subject: Re: [sidr] Modifiation request: draft-ietf-sidr-bgpsec-protocol-14
X-BeenThere: sidr@ietf.org
X-Mailman-Version: 2.1.15
Precedence: list
List-Id: Secure Interdomain Routing <sidr.ietf.org>
List-Unsubscribe: <https://www.ietf.org/mailman/options/sidr>, <mailto:sidr-request@ietf.org?subject=unsubscribe>
List-Archive: <https://mailarchive.ietf.org/arch/browse/sidr/>
List-Post: <mailto:sidr@ietf.org>
List-Help: <mailto:sidr-request@ietf.org?subject=help>
List-Subscribe: <https://www.ietf.org/mailman/listinfo/sidr>, <mailto:sidr-request@ietf.org?subject=subscribe>
X-List-Received-Date: Wed, 24 Feb 2016 16:28:34 -0000
>>>>> On Tue, 23 Feb 2016 22:07:45 -0500, Sean Turner <sean@sn3rd.com> said: Sean> Oliver & Michael, Sean> I see that the Algorithm Suite Identifier is now included just once, Sean> which saves one byte per signature segment, and that’s great, but Sean> how’s this new structure going to work if there’s an an algorithm Sean> transition? How will you support indicating the “old” and “new” Sean> algorithm? Sean> spt I'm afraid that I'm not understanding the problem. Except for the reordering of data in the Secure_Path segments, the bits on the wire haven't changed in the proposal. The algorithm suite ID is still in the signature_block header. In draft 14, the algorithm suite ID is included as part of the entire signature_block in the sequence of octets to be signed (SOS) for each signature. The algo suite ID is also include in the SOS of each signature in the current proposal. I believe that the only information not signed over in the proposed SOS that was signed in draft 14's SOS (although not in previous drafts) is the Signature_Block length and the Secure_Path length. I don't think there would be any change in algorithm suite transition. -Mike >> On Feb 10, 2016, at 15:05, Borchert, Oliver <oliver.borchert@nist.gov> wrote: >> >> Hello Matt, >> >> after reading version 14 of the BGPSec protocol draft and after discussing the >> update between us, Michael Baer (BIRD implementer) and I (Quagga Implementer) >> want to propose some changes for generation of the “Sequence of Octets to be >> Signed” (SOS) in the draft on pg. 15. This change would modify the order of >> information within the SOS as well as the order of attributes within the >> “Secure_Path” Segment listed on pg. 8. >> >> For your convenience I attached this email as pdf document as well. >> >> NONE of the changes has any impact on the information that is put on the wire >> in regards to adding or removing data. The only on the wire change is the >> ordering of the attributes within the Secure_Path Segment. >> >> As we are all aware, the most expensive operation within the BGPSEC protocol is >> the crypto operation, especially the Path verification. >> With the proposed modification of the SOS, implementers will be able to utilize >> more efficient and higher performing software mechanisms to validate the >> complete chain of signatures in an update. The current form makes this more >> difficult. >> >> Our request does remove some data from the previous SOS structure, changes the >> order of the remaining attributes within the SOS and includes the re-ordering >> of one data segment on the wire, which will facilitate the SOS generation. >> >> >> 1) Request for re-ordering the Secure_Path segment >> The first request deals with modifying the order of the Secure_Path segment. >> This modification will become more obvious later on when we explain our request >> for changes in the structure of “Sequence of Octets to be Signed” (SOS) on >> pg. 15. >> This is also the only change that has an affect on the data on the “wire” but >> again only regarding the order itself, NOT the content. >> >> The current format as it is shown on pg. 8 is as follows: >> >> +-------------------------------+ >> | AS Number (4 octets) | >> +-------------------------------+ >> | pCount (1 octet) | >> +-------------------------------+ >> | Flags (1 octet) | >> +-------------------------------+ >> >> We request to move the “AS Number” field to the end of the signature segment. >> This results in the following structure: >> >> +-------------------------------+ >> | pCount (1 octet) | >> +-------------------------------+ >> | Flags (1 octet) | >> +-------------------------------+ >> | AS Number (4 octets) | >> +-------------------------------+ >> >> The reason for this minor change becomes more clear when we explain our request >> for modifying the SOS structure. But as a little preview for where we want to >> go with this, consider the following: >> >> Having a set of Secure_Path segments, the last field of the following segment >> equals the “Target AS” needed in the SOS structure. But this becomes more >> obvious later on. >> >> >> 2) Modifying the SOS structure” >> >> The current structure as it is presented on pg. 15 of draft-14 is as follows: >> >> +-------------------------------+ >> | Target AS Number | >> +-------------------------------+ >> | AS Number | >> +-------------------------------+ >> | pCount | >> +-------------------------------+ >> | Flags | >> +-------------------------------+ >> | Previous Secure_Path | >> +-------------------------------+ >> | Previous Signature_Block | >> +-------------------------------+ >> | AFI | >> +-------------------------------+ >> | SAFI | >> +-------------------------------+ >> | NLRI | >> +-------------------------------+ >> >> This structure is very inefficient for signature validation because for each >> signature validation the structure needs to be newly regenerated. >> >> One major change in version-14 compared to the preceding drafts is the >> inclusion of all previous signatures to the SOS structure. In the previous >> draft only the directly preceding signature was part of the SOS. Version-14 >> introduces an additional overhead of approximately 91-93 bytes (69-71 for >> signature + 20 SKI + 2 signature length) or ~92 extra bytes per Signature. >> >> This means that verifying a 10 hop path, the following additional overhead for >> signatures must be added to each SOS in comparison to draft 13: >> >> (assumed 92 bytes on average per signature) >> >> SOS overhead 10 signatures: +828 bytes >> SOS overhead 9 signatures: +736 bytes >> SOS overhead 8 signatures: +644 bytes >> SOS overhead 7 signatures: +552 bytes >> SOS overhead 6 signatures: +460 bytes >> SOS overhead 5 signatures: +368 bytes >> SOS overhead 4 signatures: +276 bytes >> SOS overhead 3 signatures: +184 bytes >> SOS overhead 2 signatures: + 92 bytes >> >> For sequential verification only the maximum memory overhead comes into place >> because each consecutive verification will have an SOS size less then the >> previous one. >> For parallel verification though each verification itself requires the >> necessary memory overhead to the SOS which will end up with: >> >> Cumulative overhead for a 10 hop path: 4,140 bytes >> >> And this is only the additional memory consumption added with the signatures. >> On top of that comes the prefix information {AFI, SAFI, NLRI} -> (5...21 >> bytes), Path information {AS, pCount, Flags} -> 6 bytes each, and 1 byte for >> algo ID. >> >> Depending where the data is located during the hash generation (e.g. L2 cache) >> the additional memory accesses could further hinder performance and negatively >> affect convergence time. >> >> Furthermore, the newly proposed (version-14 draft) SOS includes Secure_Path >> Length and Signature_Block Length, both of which are overwritten at each hop. >> This imposes the additional burden of regenerating these length fields for the >> SOS corresponding to each signature verification. This again means that each >> parallel working thread is required to generate its own SOS for signature >> validation (see earlier discussion). Hence, it is not desirable to include >> these length fields in the SOS at the sender. Removing these will not create a >> security risk. >> >> The idea is to generate an SOS that can be re-used so that it only has to be >> generated once and then can be utilized without any modification for all >> signature verifications within an update – regardless if sequential or parallel >> processing is used. >> >> >> The proposed modification will result in the following SOS structure: >> For simplification we combine the signature and path segments shown below into >> a combined segment (in the SOS): >> >> +----------------------------+ >> | SKI (n-1) |\ >> +----------------------------+ \ >> | Signarture Length (n-1) |--- Signature Segment (n-1) >> +----------------------------+ / >> | Signature (n-1) |/ >> +----------------------------+ >> | pCount (n) |\ >> +----------------------------+ \ >> | Flags (n) |--- Secure_Path Segment (n) >> +----------------------------+ / >> | AS Number (n) |/ >> +----------------------------+ >> >> The simplification in imploded form looks as follows: >> >> +----------------------------+ >> | Signature Segment (n-1) | >> +----------------------------+ >> | Secure_Path Segment (n) | >> +----------------------------+ >> >> Proposed SOS Structure: (See example on next page for n=3) >> >> +---------------------------------------+ >> | Target AS Number | >> +---------------------------------------+\ >> | Signature Segment (n-1) | \ >> +---------------------------------------+ | >> | Secure_Path Segment (n) | | >> +---------------------------------------+ \ >> ... > For n Hops >> +---------------------------------------+ / >> | Signature Segment (1 origin) | | >> +---------------------------------------+ | >> | Secure_Path Segment (2) | / >> +---------------------------------------+/ >> | Secure_Path Segment (1 origin) | >> +---------------------------------------+ >> | Algorithm Suite Identifier | >> +---------------------------------------+ >> | AFI | >> +---------------------------------------+ >> | SAFI | >> +---------------------------------------+ >> | NLRI | >> +---------------------------------------+ >> >> This structure allows the generation of one single SOS that can be accessed >> simultaneously by multiple threads (one for each signature verification). >> >> With this structure an update containing 10 Signatures contains the same >> overhead of +828 bytes but here it does not need to be re-generated for each >> signature validation. Independent of whether the validation is performed >> sequential or parallel, the overhead remains the same and will NOT grow to an >> extra 4,140 bytes as outlined earlier. This will result in a net saving of >> +3,312 bytes for a path with 10 signatures in addition to the time saved >> generating the SOS for each validation separately. >> >> Example for generation and processing the new proposed SOS structure for a >> signed path from AS1 to AS4: >> AS1—AS2—AS3-AS4 >> >> +----------------------+ >> SOS 3----->| AS 4 | <- (Target AS for signature 3) >> | +----------------------+ >> | | Signature_Segment (2)| >> | +----------------------+ >> | | pCount (3)| \ >> | +----------------------+ \ >> | | Flags (3)| --- Secure_Path Segment (3) >> | +----------------------+ / >> SOS 2----+>| AS 3 (3)| / <- (Target AS for signature 2) >> | | +----------------------+ >> | | | Signature_Segment (1)| >> | | +----------------------+ >> | | | pCount (2)| \ >> | | +----------------------+ \ >> | | | Flags (2)| --- Secure_Path Segment (2) >> | | +----------------------+ / >> SOS 1--+-+>| AS 2 (2)| / <- (Target AS for signature 1) >> | | | +----------------------+ >> | | | | pCount (1)| \ >> | | | +----------------------+ \ >> | | | | Flags (1)| --- Secure_Path Segment (origin) >> | | | +----------------------+ / >> | | | | AS 1 (1)| / >> | | | +----------------------+ >> | | | | Algorithm Suite ID | >> | | | +----------------------+ >> | | | | AFI | >> | | | +----------------------+ >> | | | | SAFI | >> | | | +----------------------+ >> | | | | NLRI | >> END +-+-+>+----------------------+ >> >> >> As one can clearly observe the receiver needs only to generate one single >> SOS and can utilize it for validation of all previous signatures without >> the need to regenerate the SOS at each step. >> >> Better even, the new SOS allows: >> - sequential validation processing without the need to regenerate the >> SOS data for each validation process; just use pointer arithmetic to >> specify start of the structure >> - parallel validation processing using the same memory location. >> >> >> >> Thanks, >> >> Oliver Borchert (NIST) & Michael Baer (PARSONS) >> >> >> <BGPSEC-Draft14-ChangeRequest.pdf>_______________________________________________ >> sidr mailing list >> sidr@ietf.org >> https://www.ietf.org/mailman/listinfo/sidr Sean> _______________________________________________ Sean> sidr mailing list Sean> sidr@ietf.org Sean> https://www.ietf.org/mailman/listinfo/sidr -- Michael Baer baerm@tislabs.com Senior Software Engineer Parsons Global Shared Services, Cyber Security Division C: 530.902.3131
- [sidr] Modifiation request: draft-ietf-sidr-bgpse… Borchert, Oliver
- Re: [sidr] Modifiation request: draft-ietf-sidr-b… Sean Turner
- Re: [sidr] Modifiation request: draft-ietf-sidr-b… Borchert, Oliver
- Re: [sidr] Modifiation request: draft-ietf-sidr-b… Michael Baer
- Re: [sidr] Modifiation request: draft-ietf-sidr-b… Sean Turner
- Re: [sidr] Modifiation request: draft-ietf-sidr-b… Matthew Lepinski