[dev] Updating internal crypto implementation

Jafar Al-Gharaibeh jafar at atcorp.com
Fri Jun 2 15:12:40 UTC 2023


With OpenSSL 3.0+, the license is no longer an issue. Of course we still 
support a wide of older platforms where OpenSSL 3.0 isn't available out 
of the box.

I don't see a good reason why one would write/maintain their own crypto 
functions when libraries are available.

I can't think of a better option than OpenSSL when it comes to wide 
availability on systems we care about.

--Jafar


On 6/1/23 08:27, Ward, David - 0665 - MITLL wrote:
>
> I was actually intentionally vague, because I was first trying to 
> elicit history, opinions, etc. about the current state of things.
>
> In particular:
>
>   * Am I correct in understanding the background behind OpenSSL and
>     Zebra/Quagga/FRR? Is it believed that licensing issues which
>     prevented redistribution in the past are resolved now?
>   * Is there a common expectation as to whether FRR is generally built
>     with, or without, OpenSSL linkage today? (Distribution packaging
>     varies: for example in Fedora this build flag is enabled, but in
>     Debian it is disabled.)
>   * Are there strong feelings for or against having cryptographic
>     algorithms embedded in the FRR source code? (Faster execution by
>     using a specific implementation; larger security footprint to be
>     concerned with monitoring within this project; easier to build and
>     port FRR to other platforms by reducing the number of external
>     dependencies; trickier to avoid potential function name collisions
>     between FRR and system libraries; etc.)
>   * Are there strong feelings for or against the use of OpenSSL
>     specifically in FRR today? (It’s a widely installed dependency of
>     other software; it’s overkill for the very limited degree to which
>     FRR uses it; it is likely to be ported to platforms that other
>     libraries are not; it has a more involved API that has changed
>     over time; etc.)
>
> (So far it seems like – all other things being equal – there would 
> generally be a preference against embedding and maintaining these 
> algorithms in FRR.)
>
> Thanks,
>
> David
>
> *From:* Donald Sharp <donaldsharp72 at gmail.com>
> *Sent:* Thursday, June 1, 2023 7:20 AM
> *To:* Christian Hopps <chopps at chopps.org>
> *Cc:* Ward, David - 0665 - MITLL <david.ward at ll.mit.edu>; 
> dev at lists.frrouting.org
> *Subject:* Re: [dev] Updating internal crypto implementation
>
> In theory, I am more than happy with having more security options in 
> FRR, especially if some generic functions we are using can be taken 
> out of FRR and the code maintenance can be taken care of by some other 
> library.
>
> I guess where I have been hesitating to respond is the sentence `Can 
> we update...`.  I am not sure if I should read the sentence as either:
>
> a) David Ward is saying I will do the work to update this code
>
> b) The we implies that someone should just pick this up from the 
> community and run with the idea.
>
> If (a) then I say go for it, David! For this work, though, I would 
> want to see a plan of action for how this is going to be done in the 
> code base. Mainly so that the 2-3 people within the FRR community who 
> really really care about how this is done won't come back and say do 
> it completely differently and your and our time is not wasted.
>
> if (b) then I say that's a great idea! Unfortunately due to how open 
> source development is done, until some business has a use case for 
> this expanded functionality, this idea is going to languish.
>
> Finally if you are going to do option (a), please feel free to 
> privately send me email( or come talk to us on slack ) and we can get 
> the ball rolling on helping you get the work done.
>
> thanks!
>
> donald
>
> On Thu, Jun 1, 2023 at 6:31 AM Christian Hopps <chopps at chopps.org> wrote:
>
>
>     Hi David,
>
>     Add "Is there someone will to do the work and maintain the code?"
>     to the non-library options. The answer to that q. very well could
>     be "no" in which case the library is definitely the way to go. :)
>
>     Thanks,
>     Chris.
>
>     "Ward, David - 0665 - MITLL" <david.ward at ll.mit.edu> writes:
>
>     > FRR has an "internal" implementation of the MD5 and SHA-256
>     algorithms,
>     > including HMAC functions for both. [1] This code is under a BSD
>     license, and
>     > provides an alternative to linking FRR against OpenSSL, for
>     which there were
>     > historical (?) issues around GPL incompatibility. Several
>     routing protocols use
>     > one of these hash algorithms.
>     >
>     > ospf6d was extended last year to support the OSPFv3
>     Authentication Trailer (RFC 7166), which may use any of
>     HMAC-SHA-1, HMAC-SHA-256, HMAC-SHA-384, or HMAC-SHA-512. [2] The
>     choice of algorithm is limited unless FRR has been compiled with
>     OpenSSL support.
>     >
>     > Can we update FRR's internal crypto implementation in order to
>     overcome this limitation? For example:
>     > * Gnulib provides a drop-in version of each of the algorithms
>     mentioned above for inclusion in open-source projects, available
>     under LGPL 2.1.
>     > * FreeBSD has adapted Colin Percival's SHA-256 implementation to
>     support the other SHA-2 algorithms (but without the HMAC functions
>     - which would seem straightforward to adapt).
>     > * Or should FRR rely on an external library for these functions
>     instead? Should it allow the use of something other than OpenSSL,
>     such as Libgcrypt?
>     >
>     > Thanks in advance,
>     >
>     > David
>     >
>     >
>     > [1] The SHA-256 implementation was written by Colin Percival,
>     originally for FreeBSD. His current version seems to be here:
>     > https://github.com/Tarsnap/libcperciva/blob/master/alg/sha256.c
>     >
>     > [2] ospf6d also supports the use of HMAC-MD5 here, despite this
>     not being specified in RFC 7166.
>
>
> _______________________________________________
> dev mailing list
> dev at lists.frrouting.org
> https://lists.frrouting.org/listinfo/dev
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://lists.frrouting.org/pipermail/dev/attachments/20230602/088871c5/attachment.htm>
-------------- next part --------------
A non-text attachment was scrubbed...
Name: smime.p7s
Type: application/pkcs7-signature
Size: 4885 bytes
Desc: S/MIME Cryptographic Signature
URL: <http://lists.frrouting.org/pipermail/dev/attachments/20230602/088871c5/attachment.bin>


More information about the dev mailing list