[Babel-users] Babel authentication I-D version 01

Gabriel Kerneis kerneis at pps.jussieu.fr
Tue Jan 22 15:27:53 UTC 2013


Denis,

On Thu, Jan 10, 2013 at 12:05:53PM +0400, Denis Ovsienko wrote:
> This is the next version of the Babel authentication spec:
> http://tools.ietf.org/html/draft-ovsienko-babel-hmac-authentication-01

I did not read version 00, so the following are general comments not necessarily
related to recent changes.

Overall, the document reads well.  It gives a very good level of details for
someone intending to implement packet authentification, with rationale for most
design choices and pitfalls to avoid, as well as possible optimisations.  At
first, I thought most of these advices should be moved in non-normative
appendixes; but in fact it really helps understanding how this mechanism works,
and by the end of the document I got used to having them intertwined with the
description of the mechanism itself.

   [RIP2-AUTH] established the reference method of HMAC construct
   application housing the computed authentication data inside the
   message being authenticated.

I do not understand what this means.

   Since any fixed arbitrary value of a padding constant does not affect
   cryptographic characteristics of a hash algorithm and the HMAC
   construct, and since single-octet padding is more straightforward to
   implement, the padding constant used by this mechanism is 0x00
   single-octet value.

It would be nice to either have a reference for "does not affect cryptographic
characteristics" or give a hint why everybody else is doing it the "magic
value" way.

   An implementation MUST allow the operator
   discovering the effective value of MaxDigestsIn in runtime or from
   the system documentation.

Or from configuration files (unless you consider this a special case of "in
runtime"?).  Idem for MaxDigestsOut, etc.  Maybe also mention "such as CLI or
SNMP" here, as you do it later for ANM Table.

 3.  Remove all duplicate keys from the copy.

It is essential that you explain how duplicates are removed, since it changes
the list of ESAs!  Consider the following case: K1,K2,K3,K1.  If you remove the
first occurrence of K1, then K2 and K3 will be selected (assuming the value of
MaxDigests is 2), otherwise K1 and K2.

   No CSA structure field (including HashAlgo, LocalKeyID, and
   AuthKeyOctets) value has to be unique within a given CSA, or within a
   given list of CSAs, or within all lists of CSAs of a Babel speaker.
   […]
   Another intent is to set authentication key management and security
   association management as two interfaced, but otherwise independent
   processes.  This way an implementation can include arbitrary
   authentication key management process(es) and at the same time
   conform to the CSA management constraints defined in Section 3.8.
   This is also the reason why LocalKeyID field has a bit length in ESA,
   but not in CSA.

I'm probably missing something obvious, but I don't understand this whole
section.

   configured for authenticated exchange (A) and another not not

Typo (not not).

   Uni-directional links are not specific to use of this mechanism, they
   naturally exist on their own and are properly detected and avoided by
   the original protocol (see Section 3.4.2 of [BABEL]).

"Avoided" is a bit confusing in this sentence; "dealt with", "handled
properly"?

   [RFC2104]  Krawczyk, H., Bellare, M., and R. Canetti, "HMAC: Keyed-
              Hashing for Message Authentication", RFC 2104,
              February 1997.

Use [HMAC] instead of [RFC2104]?

Best,
-- 
Gabriel



More information about the Babel-users mailing list