On 12/4/24 10:01, Daniel Gustafsson wrote:
On 4 Dec 2024, at 15:52, Joe Conway <m...@joeconway.com> wrote:
On 12/4/24 09:45, Daniel Gustafsson wrote:
On 4 Dec 2024, at 15:40, Joe Conway <m...@joeconway.com> wrote:
On 12/4/24 09:33, Daniel Gustafsson wrote:
since OpenSSL 1.1.1 cannot operate in FIPS mode.
I don't think that is correct. The RHEL 8 openssl which was FIPS 140-2
validated is 1.1.1k. See:
https://csrc.nist.gov/CSRC/media/projects/cryptographic-module-validation-program/documents/security-policies/140sp4642.pdf
Does RHEL publish the source of their fork somewhere? In OpenSSL 1.1.1 the
code for FIPS_mode is:
int FIPS_mode(void)
{
/* This version of the library does not support FIPS mode. */
return 0;
}
Do you know if RHEL patched OpenSSL to allow FIPS_mode() to return other than 0
or if that function is useless regardless?
Yes the RHEL and OpenSUSE rpms for openssl are heavily patched for the FIPS versions, as
is the Ubuntu one. It has been a while but last time I looked at all of this they were
all using very similar patches to allow the "system wide" FIPS mode rather than
depending on the app to explicitly go into FIPS_mode().
I can look for links, but investigating it involved (for example) installing
the source rpm and then wading through hundreds of patches in the SOURCE
directory.
I can send you the source RPM for openssl 1.1.1c which was an earlier
FIPS validated version, but the main FIPS patch contains:
8<-------------
diff -up openssl-1.1.1b/crypto/o_fips.c.fips openssl-1.1.1b/crypto/o_fips.c
--- openssl-1.1.1b/crypto/o_fips.c.fips 2019-02-26 15:15:30.000000000 +0100
+++ openssl-1.1.1b/crypto/o_fips.c 2019-02-28 11:30:06.817745466 +0100
@@ -8,17 +8,28 @@
*/
#include "internal/cryptlib.h"
+#include "internal/fips_int.h"
int FIPS_mode(void)
{
+#ifdef OPENSSL_FIPS
+ return FIPS_module_mode();
+#else
/* This version of the library does not support FIPS mode. */
return 0;
+#endif
}
8<-------------
While I dislike not having a "follow-the-lib" setting on the GUC and rely on
the transitive dependency, maybe that's the only option if we can't reliably
detect the operating mode. Sigh, as if OpenSSL wasn't messy enough even
without vendor patches =)
Yep, that was my concern. I believe the RHEL, OpenSUSE, and Ubuntu
solutions are very similar, but they may be different enough that it
will be painful to reliably detect FIPS_mode. The RHEL and SUSE source
RPMs were findable. I think to get the Ubuntu FIPS deb I had to pay for
a subscription. But as I said it has been a while so I don't remember
exactly (like 6+ years).
--
Joe Conway
PostgreSQL Contributors Team
RDS Open Source Databases
Amazon Web Services: https://aws.amazon.com