In the world of security everything resolves around trust. This naturally also applies to the mbed TLS library.
You should ask:
- Can I trust this source code?
- Does it do what it claims to do?
- Who made it?
- Are there any backdoors built in?
- Are there any (known) security vulnerabilities?
- Can the NSA or any other secret service read my communications when I use mbed TLS?
All these are understandable questions. Even more so with all the news about backdoors by secret services, and critical security bugs in large security software such as OpenSSL and GnuTLS.
So we do our best to provide you with as much assurance we can give.
We have a background in developing secure software. We are not a group of volunteers that spend some of their spare time helping an open source project. All core developers are paid and do this as a job. We're all perfectionists and we want to get things right!
Our SSL library's development process is structured so that every change is at least reviewed by one (other) core developer. This is done for external contributions as well as patches by core developers.
The mbed TLS code is automatically and manually tested at each change.
More information on our automated tests can be found in the article on what tests and checks are run for mbed TLS.
Aside from what we can do ourselves, external parties also provide additional assurance to trust mbed TLS.
Formal verification by TrustInSoft
mbed TLS has been formally verified in a specific configuration by TrustInSoft using the Frama-C framework. You can get more information on the PolarSSL Verification Kit from them.
Government accreditation within OpenVPN-NL
mbed TLS is used (instead of OpenSSL) as the cryptographic core in OpenVPN-NL. The Dutch government and Fox-IT have performed code reviews of the mbedTLS and PolarSSL source code for that accreditation.
Coverity via Travis-CI
We do not believe that software can ever be totally bug-free. There are so many different usage scenarios, operation systems with different standards, etc that there will always be issues in the code. We do our best to make sure that these issues do not affect the security of the mbed TLS library.
Is there more we can do? Please let us know!