On Tue, Jul 21, 2009, carlyo...@keycomm.co.uk wrote:

> 
> TLS 1.0 DOES use MD5 and SHA-1 in combination, and - despite MD5 not being
> allowed by the FIPS 140-2 standard - it is allowed in this case because the
> combined 'strength" of the two, when used in unison, is not less than SHA-1
> itself. I can't remember the technical explanation, but its around
> somewhere. I would suspect (not know) that OpenSSL uses the MD5 code
> directly in TLS rather than through the EVP interface, as it should fail
> using this code path if FIPS is enabled.
> 

To avoid issues with applications accidentally using non-FIPS algorithms in
FIPS mode the EVP and low level interfaces generate errors if an attempt is
made to use them. 

In the case of EVP you get errors when you try to initialise the context.
Since some applications might blindly ignore the initialisation error (you'd
normally never get an error with a software only interface) the context is
initialised so that any attempt to use the context produces a hard assertion
failure when you call *update().

The low level interfaces often don't return values and their use directly in
applications has been discouraged for many years. In those cases you just get
the assertion failure.

There are some cases where an application can decide that the use of the
non-FIPS algorithm is permissible in FIPS mode, in that case they can set a
flag in the context structure and the use will be allowed. The TLS code uses
that to allow MD5.

Steve.
--
Dr Stephen N. Henson. OpenSSL project core developer.
Commercial tech support now available see: http://www.openssl.org
______________________________________________________________________
OpenSSL Project                                 http://www.openssl.org
User Support Mailing List                    openssl-users@openssl.org
Automated List Manager                           majord...@openssl.org

Reply via email to