RSA BSAFE is a FIPS 140-2 validated cryptography library, available in both C and Java, offered by RSA Security. It was one of the most common ones before the RSA patent expired in September 2000. It also contained implementations of the RCx ciphers, with the most common one being RC4. From 2004 to 2013 the default random number generator in the library was a NIST-approved RNG standard, widely known to be insecure from at least 2006, withdrawn in 2014, suspected to contain an alleged kleptographic backdoor from the American National Security Agency (NSA), as part of its secret Bullrun program.[1]

Developer(s)Dell, formerly RSA Security
Initial release1996
Written inC, assembly, Java
Operating systemBSD, Linux, macOS, Microsoft Windows, Android, iOS, AIX, Solaris
TypeCryptography library, Commercial software

On July 1, 2020, the BSAFE product line was transferred to Dell[2] in anticipation to Dell selling its RSA business to a consortium.[3]


Final release
2.8.9 / March 13, 2014; 6 years ago (2014-03-13)
Written inC, assembly
Operating systemLinux and Microsoft Windows

The SSL-C library is an SSL toolkit in the BSAFE suite. It was originally written by Eric A. Young and Tim J. Hudson, as a fork of the open library SSLeay, that they developed prior to joining RSA.[4][5] Like SSLeay, SSL-C supported SSLv2, SSLv3, TLSv1; while it also supports X.509v1 and X.509v3.[6] SSL-C was first released in 1999.[7] The algorithm was one of several available in the libraries that users were able to choose from.[8]

SSL-C reached End Of Life in December 2016.


Stable release
6.2.4 / February 21, 2018; 2 years ago (2018-02-21)
Written inJava

Cert-J is a Public Key Infrastructure API software library, written in Java. It contains the cryptographic support necessary to generate certificate requests, create and sign digital certificates, and create and distribute certificate revocation lists. Cert-J is built on the RSA BSAFE Crypto-J cryptographic engine.

Cert-J supports multiple PKCS standards such as PKCS #7, #8, #11, #12 as well as X.509 and CMP.

As of Cert-J 6.2.4, the entire API has been deprecated in favor of similar functionality provided BSAFE Crypto-J JCE API.

Crypto-C Micro EditionEdit

Crypto-C Micro Edition
Stable release
4.1.4 / September 11, 2019; 13 months ago (2019-09-11)
Written inC, assembly

RSA BSAFE Crypto-C Micro Edition (Crypto-C ME) was initially released in June 2001 under the name "RSA BSAFE Wireless Core 1.0". The initial release targeted Microsoft Windows, EPOC, Linux, Solaris and Palm OS.

The initial features provided RSA key generation, encryption and decryption, and signing and verification; MultiPrime technology for fast RSA decryption and signing operations; DSA key and parameter generation, signing and verification; Diffie-Hellman parameter generation and key exchange; Symmetric encryption and decryption in ECB, CBC, CFB and OFB modes for DES, 3DES-EDE, AES, RC2, RC5 and RC6; Encryption and decryption using the RC4 variable key length stream cipher; MD2, MD5, SHA-1 and SHA-2 message digest generation; Pseudo-random number generation; HMAC generation.

The toolkit was then renamed "RSA BSAFE Crypto-C Micro Edition" with the release of version 1.6 in February 2002.

In August 2005, with the release of Crypto-C ME 2.0, Elliptic-curve cryptography was added to the toolkit, along with other algorithms.

Micro Edition SuiteEdit

Micro Edition Suite
Stable release
4.5 / May 18, 2020; 4 months ago (2020-05-18)
Written inC, assembly

BSAFE Micro Edition Suite is an SDK in C that allows adding TLS, PKI, and cryptography capabilities such as CMS in applications, devices, and systems.

BSAFE Micro Edition Suite was initially announced in February 2002[9] as a combined offering of BSAFE SSL-C Micro Edition, BSAFE Cert-C Micro Edition and BSAFE Crypto-C Micro Edition.

Both SSL-C Micro Edition and Cert-C Micro Edition reached EOL in September 2014, while Micro Edition Suite remains supported with Crypto-C Micro Edition as its FIPS-validated cryptographic provider.


Stable release
6.2.5 (August 15, 2019; 13 months ago (2019-08-15)[10]) [±]
Written inJava

In 1997, RSA Data Security licensed Baltimore Technologies' J/CRYPTO Java encryption library, with plans to integrate it as part of its new JSAFE encryption toolkit[11] and released the first version of JSAFE the same year.[12] JSAFE 1.0 was featured in the January 1998 edition of Byte magazine.[13] JSAFE 1.1 was then released in February 1998, being the first release to support native code by calling into BSAFE C cryptographic toolkit.[14] Crypto-J, providing both a proprietary (now deprecated) API as well as a JCE API, is now the cryptographic provider for BSAFE SSL-J.


Stable release
6.2.7 (June 28, 2020; 3 months ago (2020-06-28)) [±]
Written inJava

SSL-J is a Java toolkit providing both a proprietary and a JSSE API allowing Java applications to implement TLS. SSL-J was released as part of RSA JSAFE initial product offering in 1997.[15] In November 2001, SSL-J 4.0 added support for JSSE API. Since that version both the SSLJ (JSAFE) API and JSSE API have been available to use. Starting with SSL-J 6.2.4, the RSA-proprietary JSAFE API has been deprecated in favor of JSSE. Crypto-J is the default cryptographic provider of SSL-J.

Cryptography backdoorsEdit

Dual_EC_DRBG random number generatorEdit

From 2004 to 2013, the default cryptographically secure pseudorandom number generator (CSPRNG) in BSAFE was Dual_EC_DRBG, which contained an alleged backdoor from NSA, in addition to being a biased and slow CSPRNG.[16] The cryptographic community had been aware that Dual_EC_DRBG was a very poor CSPRNG since shortly after the specification was posted in 2005, and by 2007 it had become apparent that the CSPRNG seemed to be designed to contain a hidden backdoor for NSA, usable only by NSA via a secret key.[17] In 2007, Bruce Schneier described the backdoor as "too obvious to trick anyone to use it."[17] The backdoor was confirmed in the Snowden leaks in 2013, and it was insinuated that NSA had paid RSA Security US$10 million to use Dual_EC_DRBG by default in 2004,[1] though RSA Security denied that they knew about the backdoor in 2004. The Reuters article which revealed the secret $10 million contract to use Dual_EC_DRBG described the deal as "handled by business leaders rather than pure technologists".[1] RSA Security has largely declined to explain their choice to continue using Dual_EC_DRBG even after the defects and potential backdoor were discovered in 2006 and 2007, and has denied knowingly inserting the backdoor.[18]

So why would RSA pick Dual_EC as the default? You got me. Not only is Dual_EC hilariously slow – which has real performance implications – it was shown to be a just plain bad random number generator all the way back in 2006. By 2007, when Shumow and Ferguson raised the possibility of a backdoor in the specification, no sensible cryptographer would go near the thing. And the killer is that RSA employs a number of highly distinguished cryptographers! It's unlikely that they'd all miss the news about Dual_EC.

— Matthew Green, cryptographer and research professor at Johns Hopkins University, A Few Thoughts on Cryptographic Engineering[16] (From after the backdoor was confirmed, but before the $10 million secret deal was revealed by Reuters.)

As a cryptographically secure random number generator is often the basis of cryptography, much data encrypted with BSAFE was not secure against NSA. Specifically it has been shown that the backdoor makes SSL/TLS completely breakable by the party having the private key to the backdoor (i.e. NSA).[17] Since the US government and US companies have also used the vulnerable BSAFE, NSA can potentially have made US data less safe, if NSA's secret key to the backdoor had been stolen. It is also possible to derive the secret key by solving a single instance of the algorithm's elliptic curve problem[17] (breaking an instance of elliptic curve cryptography is considered unlikely with current computers and algorithms, but a breakthrough may occur).

Extended Random TLS extensionEdit

"Extended Random" was a proposed extension for the Transport Layer Security (TLS) protocol, submitted for standardization to IETF by an NSA employee,[19] although it never became a standard. The extension would otherwise be harmless, but together with the Dual_EC_DRBG, it would make it easier to take advantage of the backdoor.[20][21]

The extension was previously not known to be enabled in any implementations, but in December 2017, it was found enabled on some Canon printer models, which use the RSA BSAFE library, because the extension number conflicted a part of TLS version 1.3.[21]

Support statusEdit

On November 25, 2015, RSA announced End of Life (EOL) dates for BSAFE.[22] The End of Primary Support (EOPS) was reached on January 31, 2017, and the End of Extended Support (EOXS) was originally January 31, 2019, but has now been extended for some versions until January 31, 2022.[23] During Extended Support, even though the support policy states that only the most severe problems will be patched, new versions were released containing bugfixes, security fixes and new algorithms.[24]


  1. ^ a b c Menn, Joseph (December 20, 2013). "Exclusive: Secret contract tied NSA and security industry pioneer". San Francisco. Reuters. Retrieved December 20, 2013.
  2. ^ Dell (August 4, 2020). "BSAFE support and billing update". Dell.
  3. ^ Dell (February 18, 2020). "Symphony Technology Group Enters Definitive Agreement with Dell Technologies to Acquire RSA". Dell.
  4. ^ Simson Garfinkel, Gene Spafford (2002). Web Security, Privacy & Commerce. O'Reilly. p. 114. ISBN 0596000456.
  5. ^ Ivan Ristic (2013). OpenSSL Cookbook: A Guide to the Most Frequently Used OpenSSL Features and Commands. Qualys. p. 1. ISBN 9781907117053.
  6. ^ RSA Data Security (1999). "RSA Introduces BSAFE SSL-C for Worldwide Markets". PR Newswire.
  7. ^ RSA Australia (30 March 1999). "Check Point Software Licenses RSA BSAFE™ SSL-C for its Market-Leading VPN". Check Point Software. Archived from the original on 1 December 2010.
  8. ^ RSA (2013). "RSA Response to Media Claims Regarding NSA Relationship". RSA.
  9. ^ "RSA unveils three new products at its show". IT World. February 20, 2002.
  10. ^ "RSA announces the release of RSA BSAFE® Crypto-J 6.2.5".
  11. ^ "RSA licenses Baltimore Technologies J/CRYPTO".
  12. ^ "RSA's BSafe toolkit spawns new Java version".
  13. ^ "Making Java Development JSafe" (PDF).
  14. ^ "RSA Releases JSAFE 1.1 Encryption for Java".
  15. ^ "Securing IT Resources with Digital Certificates and LDAP".
  16. ^ a b Matthew Green (September 20, 2013). "RSA warns developers not to use RSA products". A Few Thoughts on Cryptographic Engineering.
  17. ^ a b c d Bruce Schneier. "The Strange Story of Dual_EC_DRBG".
  18. ^ "We don't enable backdoors in our crypto products, RSA tells customers". Ars Technica.
  19. ^ Eric, Rescorla; Margaret, Salter (2 March 2009). "Extended Random Values for TLS". IETF draft standard.
  20. ^ Menn, Joseph (31 March 2014). "Exclusive: NSA infiltrated RSA security more deeply than thought - stu". Reuters.
  21. ^ a b Green, Matthew (19 December 2017). "The strange story of "Extended Random"". Cryptographic Engineering blog.
  22. ^ RSA (November 25, 2015). "RSA announces End of Life (EOL) dates for RSA BSAFE". RSA. Retrieved October 3, 2018.
  23. ^ RSA (June 20, 2018). "RSA announces support extension for some of the BSAFE® product suite". RSA. Retrieved October 3, 2018.
  24. ^ RSA (September 11, 2019). "RSA announces the release of RSA BSAFE® Micro Edition Suite 4.4". RSA. Retrieved September 11, 2019.

External linksEdit