Having personally been through the toils of FIPS certifying crypto libraries, I smiled and nodded as I read this post.
FIPS is about compliance, not about security. LibreSSL is about security, full stop.
51–60 of 98 posts
Having personally been through the toils of FIPS certifying crypto libraries, I smiled and nodded as I read this post.
FIPS is about compliance, not about security. LibreSSL is about security, full stop.
Just looking at the wholesale cleanup [1] makes me shudder to think about how tough the code was to maintain in the past. Kudos to the libssl team for injecting some much-needed energy into such a critical library. If only this were available on GitHub, we could more easily browse the code and learn about patterns and anti-patterns in writing secure code. [1] http://freshbsd.org/search?project=openbsd&q=file.name:lib…
Earlier quoted context omitted.
Also, I believe that only binaries can be FIPS certified, not source code, so there are times when one has to use an old, out-dated openssl binary in order to be compliant.
OpenSSL FIPS certification (#1747) is for source code, not for binary. This is highly unusual indeed, but it is not the case that only binaries can be FIPS certified. On the other hand, you can't change the source without losing the certification, so it doesn't actually matter.
Earlier quoted context omitted.
"Fortunately" (and I don't mean to encourage it), the abrasive people in the crypto community are like that when they tend to be right - and don't want "newbies" to do stupid dangerous mistakes, so their tone comes out a little aggressive by default. But yeah, it could be improved. The community should work together on solving issues the right way.
Fortunately or unfortunately, there are also a reasonable number of abrasive people who tend not to be right, so I'm not sure it's a good marker either way. There's a whole rock-star persona around people who make consulting careers out of trying to position themselves as security badasses, and not all of them are.
Leads to a lot of facepalming when you are actually trying to get something done.
Earlier quoted context omitted.
I'm sure they do, too. It isn't that simple.
What isn't simple about Red Hat paying a third-party to write some software and get it certified? Other companies are doing it for themselves, surely Red Hat can find someone qualified.
Because it isn't just getting a body of code certified once.
Someone has to maintain that specific code and either upstream or backport important changes which require a re-certification, neither of which LibreSSL is interested in helping with.
Earlier quoted context omitted.
This is not true. FIPS requires that any 'approved' included crypto algorithm implementations are self-tested, and pass a verification program (just a big bunch of somewhat poorly conceived known answer tests). It also has a list of 'allowed' algorithms, which don't need to be tested but can be offered by a FIPS crypto module. The CSPRNG used for key generation must be of an approved construction, but there are a num…
A question if I may: Could you "accidentally" make a FIPS compliant library? Assuming that the LibreSSL fork where to include ONLY the FIPS approved ciphers and hashing algorithms, it should be possible to have a library that could be passed of a compliant. If I understand you correctly, the issue with FIPS is that you would have to be able to disable all but a subset of the features, regardless of these feature bein…
Let's differentiate between "FIPS compliant" and "FIPS certified".
FIPS complaint: you could get a FIPS certified product if you wanted, without changing your product.
FIPS certified: you paid NIST and a FIPS test lab some money, the lab tested your module, submitted a test report to NIST, and NIST published certificates saying that a certain version of your product (running on a particular OS and CPU architecture, for software modules) is FIPS certified.
So, yes, you could accidentally come up with a FIPS compliant crypto module. But getting certified costs actual money (last time I did it, as I recall just shy of $100k).
> the issue with FIPS is that you would have to be able to disable > all but a subset of the features, regardless of these feature > being worse or better than what is defined in the FIPS documents?
To some extent it depends what you mean by 'feature' here. If it's a crypto algorithm offered by your module for external use, there is quite little leeway. If it's a fundamental feature of your product that internally uses exotic crypto, you can often convince your test lab to gloss over it.
Earlier quoted context omitted.
OpenSSL FIPS certification (#1747) is for source code, not for binary. This is highly unusual indeed, but it is not the case that only binaries can be FIPS certified. On the other hand, you can't change the source without losing the certification, so it doesn't actually matter.
So any change to openssl fips has to happen as compiler patches?
This is why you might have to use old versions of OpenSSL for FIPS compliance - not all versions might be certified.
This basically means libressl can not be used by the US Govt or any contractor working with the US Govt, which is a HUGE number of companies. By proxy, it means that libressl will not make its way into Fedora or RHEL, which also limits the adoption of it a fair bit. Perhaps the solution is to fix FIPS instead of berating the people forced to use it.
Not unless RedHat is willing to foot the bill for FIPS certification of a variant, or wait for someone else to do it. The LibreSSL folks have indicated that they won't stand in the way of anyone who wants to do that (in this very note!). It just won't be them. BTW, even some core OpenSSL developers think that the FIPS validation process is worse than useless. Here's OpenSSL developer Steve Marquess arguing that a FIP…
Earlier quoted context omitted.
What isn't simple about Red Hat paying a third-party to write some software and get it certified? Other companies are doing it for themselves, surely Red Hat can find someone qualified.
Just "write some software and get it certified"? Sounds so simple, why doesn't everyone do it? Because it isn't just getting a body of code certified once. Someone has to maintain that specific code and either upstream or backport important changes which require a re-certification, neither of which LibreSSL is interested in helping with.
For example, create a fipssl project which is patches to a specific version of LibreSSL; take the result (LibreSSL v1.x + fipssl v1.2 = libfipssl v1.2) and then get that certified. Companies/contractors which need FIPS certification then use libfipssl v1.2.
The fipssl maintainers then just have to track LibreSSL changes until their next release, which (for a series of small, maintainable patches) shouldn't be too difficult. The grsecurity project has been doing the same thing with the Linux kernel for years.