-
Try out the new Jake: AI Coding Assistant for LabVIEW (beta)!
Get answers to questions about LabVIEW and discuss your code.
Reference Example for Encrypting IP for LabVIEW FPGA by NI - Toolkit for LabVIEW Download
Version | 1.0.0.2 |
Released | May 19, 2016 |
Publisher | NI |
License | Not Specified |
LabVIEW Version | LabVIEW>=10.0 |
Operating System | Windows, Mac, and Linux |
Project links | Homepage |
Description
This code is intended to be an example of how to encrypt your FPGA bitfile so that it only runs with your original software and only with your original hardware.
This example includes three VIs. The first VI is Create Encryption INI File. The VI needs to be ran first and with the original hardware. It generates a encrypted .ini file to be distributed with your system. The encryption used is the Tiny Encryption Algorithm (TEA). This method requires a Key(Hex) to be set by the user. We use the original serial number in our Key to make the encrypted result hardware specific. This Key is then used through out all the remaining VIs. The second VI is the Decrypt File which shows how to decrypt the .ini file previously created and checks the validity of the result. If the .ini file, Key(Hex) or hardware serial number isn't correct, it will stop the VI. If everything is correct, it will pass a newly generated pair of encrypted random numbers to the FPGA along with the expected results and the original serial number for the Key. The third VI is the FPGA VI called Main. It decrypts the data sent down to it using the Key and compares it to the expected result. Based on the result, you can either run your code or stop the FPGA VI. For more information, please review the block diagrams of the code.
This example requires the CompactRIO Information (CRI) Component (http://zone.ni.com/devzone/cda/epd/p/id/1717) and is based off of A Design Pattern for Adding Licensing to a LabVIEW Real-Time Application (http://zone.ni.com/devzone/cda/epd/p/id/5912) and the Tiny Encryption Algorithm (TEA) for LabVIEW FPGA (http://zone.ni.com/devzone/cda/tut/p/id/7519)