Flexible cryptographic device
A method of programming a device comprising acquiring configuration data, loading the configuration data onto a programmable device, processing at least a portion of the configuration data through a one way function to form processed configuration data, and configuring at least one configurable module of the programmable device using the processed configuration data from the processing step.
1. A method of programming a programmable device, the method comprising:
acquiring configuration data;
loading the configuration data onto the programmable device;
processing at least a portion of the configuration data through a one-way function to form processed configuration data; and
configuring a configurable module of a plurality of configurable modules of the programmable device using the processed configuration data from the processing step, wherein the configurable module includes a cryptographic module, the cryptographic module includes a physically unclonable function (PUF), and the plurality of configurable modules are arranged in an interconnected matrix and interconnected by a plurality of connections, wherein the configuring comprises modifying at least one of the plurality of connections.
2. The method according to claim 1 , wherein the loading step further comprises deciphering of the configuration data.
3. The method according to claim 2 , wherein the deciphering is performed by the configuration module.
4. The method according to claim 1 , wherein the loading step further comprises verifying authenticity and/or integrity of the configuration data by way of a symmetric key or an asymmetric key.
5. The method according to claim 1 , wherein the loading step comprises loading the configuration data onto a configuration module of the programmable device.
6. The method according to claim 1 , wherein the configuring step comprises a least one of:
initializing the programmable device;
and
configuring an interconnection between modules of the programmable device, wherein the modules may be configurable or non-configurable.
7. The method according to claim 1 , wherein power consumption while executing the method adheres to smartcard operating parameters.
8. A programmable device, comprising:
circuitry configured to
acquire configuration data and load the configuration data to a memory of the programmable device;
process at least a portion of the configuration data through a one-way function to form processed configuration data; and
configure a configurable module of a plurality of configurable modules of the programmable deice using the processed configuration data, wherein the configurable module includes a cryptographic module, the cryptographic module includes a physically unclonable function (PUF), and the plurality of configurable modules are arranged in an interconnected matrix and interconnected by a plurality of connections, wherein, in the configuring, the circuitry is configured to modify at least one of the plurality of connections.
9. The programmable device according to claim 8 , wherein the programmable device comprises the one way function.
10. The programmable device according to claim 8 , wherein the cryptographic module comprises at least one of a substitution box module, a substitution table module, a bit permutation module, a byte permutation module, or a matrix multiplication module.
11. The programmable device according to claim 8 , wherein the configurable module includes a programmable state-machine.
12. The programmable device according to claim 8 , wherein the programmable device is positioned on a smartcard.
13. The programmable device according to claim 8 , wherein a form factor of the programmable device adheres to smartcard parameters.