IOTA Crypto Core FPGA — 4th Progress Report
The full article was originally published by MicroEngineer on Medium. Read the full article here.
The third milestone has been finished!
I was asked a lot to give an ELI5 about the project. So I try 🙂
What is an FPGA?
FPGA is an abbreviation for “Field Programmable Gate Array”. Digital logic can be described in a hardware description language like VHDL or Verilog and synthesis-Tools can synthesize digital hardware out of these descriptions.
You could see it this way: CPUs are executing programs. An FPGA can be configured to run e.g. CPUs which execute programs 🙂
FPGAs often are used for prototyping hardware which could later be used for manufacturing ASICs (real chips). ASICs are a lot faster and need less energy but they are immensely expensive to manufacture (6 digit amount). And if something changed — for instance a new hashing algorithm — the chip would have to be manufactured completely new.
FPGAs easily can be reconfigured because the configuration is volatile. With every power-up cycle the configuration is loaded into the FPGA again. Many FPGAs also support encryption. That means, the configuration can be encrypted and the FPGA would only accept configurations which can be decrypted by decryption keys stored (volatile or permanent) inside the FPGA. This can be used as copy-protection or protection against tampering or analysis of the configuration.
What is the FPGA module?
Whereas in the second milestone the FPGA-core (configuration) for the FPGA was developed, this milestone was about developing an FPGA module which uses the FPGA-core.
Both combined together could be seen as Secure Crypto Processor with hardware acceleration for algorithms used a lot in IOTA.
Following a size-comparison of the module with a 1EUR coin.