Proposed Security Patch: Replacement of use of SHA-1 in the SRP Client Proof
with SHA-256
-----------------------------------------------------------------------------------------
Key: CORE-5788
URL: http://tracker.firebirdsql.org/browse/CORE-5788
Project: Firebird Core
Issue Type: Bug
Components: Security
Affects Versions: 3.0.3
Environment: All
Reporter: Tony Whyman
Attachments: srp_sha256.patch
This proposed patch results from a security review of the Firebird SRP-6a
implementation taking into account current NIST guidance on the use of SHA-1 -
see NIST Special Publication 800-131A, Revision 1, Transitions: Recommendation
for Transitioning the Use of Cryptographic Algorithms and Key Lengths
(http://dx.doi.org/10.6028/NIST.SP.800-131Ar1) chapter 9. This guidance
disallows the general use of SHA-1 for "Digital Signature Generation" whilst
permitting continued use for "Digital Signature Verification".
Review of the Firebird SRP implementation appears to indicate that most uses of
SHA-1 continue to be permitted under NIST guidance except for its use in
generating the client proof. The SRP client proof may be characterised as a
"Poor Man's Digital Signature" in that it provides a two party proof of
identity rather than the third party proof normally expected from a Digital
Signature i.e. it is not a non-repudiable proof. Nevertheless, it is believed
that generation of the client proof falls under the heading of "Digital
Signature Generation" when considering the NIST Guidance.
Continued use of SHA-1 in order to generate the client proof appears to risk
leakage of the shared session key used to encrypt "over-the-wire" encryption
and which hence also provides peer entity authentication during the lifetime of
the connection. This may result in an attacker being able to monitor
confidential communication either during the connection or at some later date
and this could include leakage of an encryption key used to encrypt the user
database, if this is passed from client to server during the connection.
Such an attack is viable if weaknesses in SHA-1 can be exploited to allow a
brute force attack on the client proof to be computationally feasible. All
parts of the message on which the client proof is based may be known to an
attacker with the exception of the shared session key and such an attack would
concentrate on revealing this key. If it were possible to reveal the shared
session key in real time then additionally a man-in-the-middle attack would be
feasible.
The severity of this issue is viewed as Important but not Critical. This is
because (a) users that comply with NIST Guidance as a matter of policy may feel
unable to use Firebird/SRP and hence choose or migrate to a different database,
and (b) users that rely on SRP/over the wire encryption to protect confidential
communication have a long term risk that the confidentiality of their data may
be compromised. The attack may also be mitigated through the use of other
procedures to protect communications (e.g. a secure VPN).
The patch adds a new directory to the source code tree (src/common/sha2)
containing an implementation of the SHA-2 family of message digests derived
from the implementation published by Olivier Gay <[email protected]> (see
https://github.com/ouah/sha2). This has been adapted for Firebird as a set of
classes that follow the model of the existing Firebird::Sha1 class. Classes are
provided for SHA-224, SHA-256, SHA-384 and SHA-512. A SHA-2 compliancy
confidence test is also included.
The SRP RemotePassword class is modified to additionally include a method for
generating a client proof using SHA-256 as the message hash.
The SRP client class is modified to use only SHA-256 for generating the client
proof.
The SRP server class is modified to use either SHA-1 or SHA-256 for verifying
the client proof, with the verification method depending on the length of the
client proof. This is believed to be compliant with NIST Guidance for legacy
use of SHA-1 and permits backwards compatibility with older clients.
The patch also modifies the makefiles for posix builds in order to include the
SHA-2 classes in the "common" library and has been tested on Linux. It may be
necessary to modify the build procedures for other platforms in order to use
the patch.
It is proposed that this patch is expedited into the next step release of
Firebird 3 and which should be made available as soon as possible.
--
This message is automatically generated by JIRA.
-
If you think it was sent incorrectly contact one of the administrators:
http://tracker.firebirdsql.org/secure/Administrators.jspa
-
For more information on JIRA, see: http://www.atlassian.com/software/jira
------------------------------------------------------------------------------
Check out the vibrant tech community on one of the world's most
engaging tech sites, Slashdot.org! http://sdm.link/slashdot
Firebird-Devel mailing list, web interface at
https://lists.sourceforge.net/lists/listinfo/firebird-devel