Re: [secdir] review of draft-ietf-6man-predictable-fragment-id-09

"Klaas Wierenga (kwiereng)" <> Wed, 09 September 2015 12:02 UTC

Return-Path: <>
Received: from localhost ( []) by (Postfix) with ESMTP id BCDBA1B375B; Wed, 9 Sep 2015 05:02:43 -0700 (PDT)
X-Virus-Scanned: amavisd-new at
X-Spam-Flag: NO
X-Spam-Score: -14.511
X-Spam-Status: No, score=-14.511 tagged_above=-999 required=5 tests=[BAYES_00=-1.9, DKIM_SIGNED=0.1, DKIM_VALID=-0.1, DKIM_VALID_AU=-0.1, RCVD_IN_DNSWL_HI=-5, SPF_PASS=-0.001, T_RP_MATCHES_RCVD=-0.01, USER_IN_DEF_DKIM_WL=-7.5] autolearn=ham
Received: from ([]) by localhost ( []) (amavisd-new, port 10024) with ESMTP id 8_HnkOfoCg43; Wed, 9 Sep 2015 05:02:42 -0700 (PDT)
Received: from ( []) (using TLSv1 with cipher RC4-SHA (128/128 bits)) (No client certificate requested) by (Postfix) with ESMTPS id 556041A8924; Wed, 9 Sep 2015 05:02:42 -0700 (PDT)
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple;;; l=4208; q=dns/txt; s=iport; t=1441800162; x=1443009762; h=from:to:cc:subject:date:message-id:references: in-reply-to:content-id:content-transfer-encoding: mime-version; bh=IaX2+5yf3y6x6YAN4X4ixbEpB0zm9SfQPKZJMca/RRU=; b=ht6LGRO6ssLiOCFTB365plF6o/FWwFecwNXyqa27WYrm+/Z8+Wus8Hp7 uzCiHfGvZXYOL9IiD+Pno03NKZ3QH2OMiH9sLYDflloXs9oYKG7uTyrDu xWdNFGE53TT40kh/hccvGSFTBCsWw6STg44yp4wxOtMOACXsYTMy8OzY1 w=;
X-IronPort-Anti-Spam-Filtered: true
X-IronPort-AV: E=Sophos;i="5.17,496,1437436800"; d="scan'208";a="25526276"
Received: from ([]) by with ESMTP; 09 Sep 2015 12:02:40 +0000
Received: from ( []) by (8.14.5/8.14.5) with ESMTP id t89C2dNT028494 (version=TLSv1/SSLv3 cipher=AES256-SHA bits=256 verify=FAIL); Wed, 9 Sep 2015 12:02:39 GMT
Received: from ( by ( with Microsoft SMTP Server (TLS) id 15.0.1104.5; Wed, 9 Sep 2015 07:02:38 -0500
Received: from ( by ( with Microsoft SMTP Server (TLS) id 15.0.1104.5 via Frontend Transport; Wed, 9 Sep 2015 07:02:38 -0500
Received: from ([]) by ([]) with mapi id 14.03.0248.002; Wed, 9 Sep 2015 07:02:38 -0500
From: "Klaas Wierenga (kwiereng)" <>
To: Fernando Gont <>
Thread-Topic: review of draft-ietf-6man-predictable-fragment-id-09
Thread-Index: AQHQ6ugR9MLjo76fAkCOSBalQ1WSJJ40WwSAgAAR0YA=
Date: Wed, 9 Sep 2015 12:02:37 +0000
Message-ID: <>
References: <> <>
In-Reply-To: <>
Accept-Language: en-US
Content-Language: en-US
x-originating-ip: []
Content-Type: text/plain; charset="utf-8"
Content-ID: <>
Content-Transfer-Encoding: base64
MIME-Version: 1.0
Archived-At: <>
Cc: "" <>, "" <>, "" <>
Subject: Re: [secdir] review of draft-ietf-6man-predictable-fragment-id-09
X-Mailman-Version: 2.1.15
Precedence: list
List-Id: Security Area Directorate <>
List-Unsubscribe: <>, <>
List-Archive: <>
List-Post: <>
List-Help: <>
List-Subscribe: <>, <>
X-List-Received-Date: Wed, 09 Sep 2015 12:02:43 -0000

Hola Fernando,

> Thanks so much for your feedback! -- Please find my responses in-line...
> On 09/09/2015 07:12 AM, Klaas Wierenga (kwiereng) wrote:
>> I believe the document has some issues, see below.
>> The document does an analysis of the security implications of
>> predictable identification fields and I believe (not being an IPv6
>> expert) that it does a good job at that. The analysis of the
>> potential exploits is convincing. Where I am struggling a bit is the
>> algorithms for selecting fragment identification values (5).
>> The intro text states that there are ‘a number of algorithms', but
>> really there are only 3: 1- per destination counter random
>> initialised 2- random value 3- hash over source, destination, secret
>> with a counter
> FWIW, these are three concrete algorithms, but that doesn't mean they
> are the only possible ones…

Sure, I understand that. It is just when I read it I was preparing for a long list to come, so I think it would be good to state something like:


This section specifies a number of algorithms that may be used for
   selecting Fragment Identification values.


There are a number of algorithms that may be used for selecting Fragment Identification values. This section presents three of those.


>> 1 and 3 are essentially the same, the hash function in 3 performs the
>> same function as the pseudo random generated initial value in 1 if I
>> am not mistaken.
> Yes and no. 1 requires state, but 3 doesn't. That means that, e.g., if
> you have lot's of flows to many different destinations, you may need to
> remove some entries from the Dest Cache (and then you run the risk of
> Frag ID collisions). However, this is not the case with algorithm #3.

good point, so is there any compelling reason to select 1 over 3?

>> So really the choice is between a random value for
>> every datagram or a random value at initialisation of a connection
>> and increasing by 1 for every subsequent datagram.
>> I’d really like to see some quantitative analysis as to the impact of
>> a random value per packet as well as between 1 and 3.
> Impact in terms of what?

Well, as an implementer I want to choose between one of the algorithms you propose. But since I have no clue what the penalty is for doing per packet randomisation as opposed to per flow that is hard. If the cost of a pseudorandom operation is outweighed by other factors involved in sending a packet I would probably choose option 2. My gut feeling says however that it is a pretty expensive operation to do on a per packet basis, so I would expect the advise  to be “use 1 or 3” unless…..  And similarly, what is the cost of the hash versus the prg? If they are comparable would option 3 not be better?

Does that make sense?


> Thanks!
> Best regards,
> -- 
> Fernando Gont
> SI6 Networks
> e-mail:
> PGP Fingerprint: 6666 31C6 D484 63B2 8FB1 E3C4 AE25 0D55 1D4E 7492