[PATCH v4 0/8] Add MAC authentication support to the Babel protocol
Toke Høiland-Jørgensen
toke at toke.dk
Tue Mar 2 23:15:24 CET 2021
Toke Høiland-Jørgensen <toke at toke.dk> writes:
> This series adds MAC authentication support to the Babel protocol as specified
> in in RFC8967:
>
> https://www.rfc-editor.org/rfc/rfc8967
>
> I have performed basic interoperability testing between this implementation and
> the current babeld HMAC implementation[1]. The two implementations were able to
> successfully exchange authenticated messages with both HMAC-256 and Blake2s-256
> keys.
>
> Given the above, and the fact that the RFC was finally published at the the
> IETF, I believe this series is ready for merging (subject to review, of course).
> For those wanting to test the code, a version of Bird with this series applied
> is available on Github[2] for easy consumption.
>
> [1] https://github.com/jech/babeld/pull/52
> [2] https://github.com/tohojo/bird/tree/babel-mac-04
>
> Changelog:
>
> v4:
> - Update RFC references to the published RFC numbers (for both MAC and Babel
> itself).
> - Rework WALK_TLVS macro to not cast initial argument, and not use goto for
> framing errors.
> - Change MAC validation logic to just let algorithms specify min/max len and
> enforce full key size length even for the smaller-output variants of Blake2.
>
> v3:
> - Add variants with smaller digest sizes for blake2s and blake2b.
> - Rebase on current master
>
> v2:
> - Don't reinvent AC_CHECK_FUNCS() for configure
> - Make sure random_bytes() never fails (without taking the whole daemon with it)
> - Use existing endianness defines in blake2s code
> - Just leave MAC-related code in babel.c/packets.c instead of adding a new file
> - Add blake2s test vectors (new patch 3)
> - Support supplying mac keys as raw hexadecimal bytes and allow algorithms to
> validate keys on configure (new patches 4-5)
>
> v1:
> - Add wrapper function to bird sysdep code to pick a suitable source of random
> bytes
> - Import reference Blake2 implementations into lib/
> - Rename function names and data structures to use an auth_ prefix instead of hmac_
> - Perform a separate authentication pass before parsing the packet, and move the
> authentication-related code to its own source file
> - Enforce key length recommendation from the specification
> - Add a 'permissive' configuration mode where outgoing packets are signed but
> incoming packets are accepted even though they fail authentication
> - Add user documentation for the authentication configuration, and function
> docstrings to the main authentication functions
> - Fix a bunch of nits and code style issues
Ping? Anyone had a chance to take a look at this? :)
-Toke
More information about the Bird-users
mailing list