<div dir="ltr">Thanks Steve.<div><br></div><div>So basically the idea is to allow companies build the OpenSSL with FIPS modules in their product and ship only this version of OpenSSL to all their customers. For the customers who don't need FIPS, then just simply keep the FIPS mode disabled and then the OpenSSL will behave just like there's no FIPS module exist. Is that correct?</div><div><br></div><div>One question I have is, in the above case should the openssl commands also remain FIPS disabled unless we explicitly enable FIPS mode?</div><div>I built a OpenSSL lib with FIPS modules, and what I found was, when I run the following command to create non-FIPS compliant checksum (i.e. MD5 in this case), it failed with some MD5 algorithm not permitted errors. </div><div><br></div><div><p style="margin:0px;font-size:12px;font-family:Monaco;color:rgb(245,245,245);background-color:rgb(0,0,0)">openssl dgst -md5 FILE_NAME</p></div><div><br></div><div>To me it looks like the openssl commands are always run with FIPS enabled in this case. Is that the expected behavior?</div><div><br></div><div>Thanks.</div><div><br></div><div><br></div></div><div class="gmail_extra"><br><div class="gmail_quote">On Tue, Jan 19, 2016 at 6:44 AM, Steve Marquess <span dir="ltr"><<a href="mailto:marquess@openssl.com" target="_blank">marquess@openssl.com</a>></span> wrote:<br><blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex"><span class="">On 01/19/2016 04:33 AM, security veteran wrote:<br>
> Hi,<br>
><br>
> I am trying to build a system with both the non-FIPS OpenSSL and the<br>
> OpenSSL with FIPS modules, and was wondering does OpenSSL FIPS modules<br>
> actually only affect libcrypto.so?<br>
<br>
</span>Yes and no.<br>
<br>
The "FIPS enabled" OpenSSL consists of OpenSSL 1.0.N built with the<br>
"fips" option, in the presence of an OpenSSL FIPS module. That module<br>
(which is basically the fipscanister.o file) is embedded within the<br>
libcrypto shared library.<br>
<br>
If you don't enable FIPS mode (no FIPS_mode_set() call) then that<br>
libcrypto behaves just like the usual libcrypto from a non-FIPS enabled<br>
OpenSSL build; the FIPS module is just dead weight.<br>
<br>
But once you enable FIPS mode then the cryptographic operations that are<br>
not allowed by FIPS 140-2 (which is many of the algorithms supported by<br>
OpenSSL) are automagically disabled. Those cryptographic operations<br>
which are allowed are routed to the FIPS module.  Note that those<br>
separate crypto implementations in the FIPS module will always<br>
necessarily be "behind" the ones on OpenSSL proper (in terms of<br>
performance, security, general robustness).<br>
<br>
Note we designed the "FIPS enabled" mechanism just so that vendors would<br>
not need to ship two different sets of binaries to their customers who<br>
do and don't care about FIPS 140-2. Ship the "FIPS enabled" OpenSSL<br>
libraries to all your customers, and those who don't explicitly enable<br>
FIPS mode won't see the FIPS part.<br>
<br>
-Steve M.<br>
<br>
--<br>
Steve Marquess<br>
OpenSSL Software Foundation<br>
1829 Mount Ephraim Road<br>
Adamstown, MD  21710<br>
USA<br>
<a href="tel:%2B1%20877%20673%206775" value="+18776736775">+1 877 673 6775</a> s/b<br>
<a href="tel:%2B1%20301%20874%202571" value="+13018742571">+1 301 874 2571</a> direct<br>
<a href="mailto:marquess@openssl.com">marquess@openssl.com</a><br>
gpg/pgp key: <a href="http://openssl.com/docs/0x6D1892F5.asc" rel="noreferrer" target="_blank">http://openssl.com/docs/0x6D1892F5.asc</a><br>
_______________________________________________<br>
openssl-users mailing list<br>
To unsubscribe: <a href="https://mta.openssl.org/mailman/listinfo/openssl-users" rel="noreferrer" target="_blank">https://mta.openssl.org/mailman/listinfo/openssl-users</a><br>
</blockquote></div><br></div>