I don't have encryption licenses for Vivado or Quartus to encrypt my Verilog/VHDL modules and so I cannot give my RTL to any user. I don't want to give out synthesized netlists but only encrypted RTL.
What are the ways to encrypt a Verilog/VHDL module (any opensource or 3rd party encryption) such that encrypted RTL can be synthesized by Vivado and Quartus?
1 Answer 1
With IEEE-1735, private key is only needed for decrypting files. Anyone with the relevant public keys can encrypt its IP to target a specific tool.
Synthesis/simulation tools vendors usually have a set of key pairs per product.
When you encrypt a HDL file, you need to target a set of supported synthesis/simulation products, and use their public keys as an input to the encryption tool.
As most tools supporting the standard are publicly available as software-only, they need to have private keys stored somewhere in the code, more or less obfuscated. There are periodic leaks of said keys.
There are some available tools for encrypting with IEEE-1735 available publicly. You have to gather the public keys from vendors you want to target. Xilinx has documentation for this, for instance.
-
\$\begingroup\$ What are the tools available publicly? \$\endgroup\$Im Groot– Im Groot2024年02月11日 15:43:55 +00:00Commented Feb 11, 2024 at 15:43
-
\$\begingroup\$ Vivado's, IPEncrypter's (not endorsing any of them, I never used them) \$\endgroup\$Nipo– Nipo2024年02月12日 09:00:50 +00:00Commented Feb 12, 2024 at 9:00