The main goal of CrypTech is to create an open-source design for a hardware cryptographic engine for Hardware Security Modules (HSMs). At the same time it also provides a associated reference implementation that allows anyone to develop, deploy and audit a secure, low-cost cryptographic engine in their chosen environment.
The vision of CrypTech (https://cryptech.is) is that key Internet security infrastructure should be transparent and trustworthy. This infrastructure should not have to rely exclusively on closed HSM products that can't be audited and possibly create mistrust in some of these product's functionalities. Examples of this key security infrastructure include Domain Name System Security Extensions (DNSSEC), Resource Public Key Infrastructure (RPKI), TOR Consensus, Pretty Good Privacy (PGP), Identity Federations, and the Let’s Encrypt Certificate Authority (CA).
The fundamental goal of the CrypTech project is to create an open reference platform for an HSM. This includes:
- Hardware and software designs provided as source code. For hardware, FPGA Verilog code, schematics, board layout, BOM, and board stack up are provided. For software, open-source code and documentation is available.
- Tools, documentation, and examples to allow anybody to implement (or have someone implement for them) an HSM that is tested and evaluated to establish trust in the HSM suitable for the users need.
In 2017, we continued to develop code on the Alpha we produced in 2016, pictured below.
The CrypTech Alpha (source: Stonehouse Photographic/Internet Society)
With the help of the RIPE NCC Community Projects Fund, we‘re going to complete the implementation of Ed25519 (https://ed25519.cr.yp.to). Ed25519 is an elliptic curve digital signature scheme using the 25519 “Bernstein” curve. It adds to the suite of elliptic curve algorithms available for signing operations in the CrypTech implementation. This may be used in DNSSEC signing for example, but has application for digital signatures broadly.
Our developers have begun investigating the implementation of Ed 25519 in CrypTech. The plan has been to do as much of the heavy lifting crypto work as possible within the Field Programmable Gate Array (FPGA). An FPGA essentially is a huge array of gates that can be programmed and reconfigured anytime, anywhere. For implementation of any given algorithm there are parts however that make sense to do only in the processor. Much of the work so far has been determining what needs to be done for the implementation, what parts belong best in the FPGA, and what parts belong best in the processor. Much of this architecture work has been concluded and we’re now moving on to the actual implementation.
The developers created a four-layer model for implementing the code. The first two layers are low-level math primitives and multi-precision math primitives that are reused across multiple elliptic curve implementations. We are able to reuse elliptic curve primitives we have developed for other elliptic curve algorithms. A complete math model has been built for Ed25519, and the modular math primitives for that as well as the specific implementation for Ed25519 and coding, has begun. We believe that we can reuse most of this to implement X25519 also (for key exchange) when finished. (Footnote: X25519 is an elliptic curve Diffie-Hellman key exchange using Curve25519. It allows two parties to jointly agree on a shared secret using an insecure channel.)
The near-term next steps are to finish the implementation of Ed25519 in Verilog and complete the accompanying APIs to allow utilisation of this by external applications. This work should be completed in 2018. Beyond that there is much work still to do. As mentioned above, the project should be able to reuse a lot of this code in the implementation of X25519. CrypTech has a broad and expansive vision for open-source cryptography. Continuing to add implementations of interesting technology, such as bash-based signatures, is an ongoing activity of the project. There is a vision for end-to-end, open-source development including a complete open-source tool chain.
This stage of the project has received funding from the RIPE NCC Community Projects Fund 2017.