Methods and devices for secure secret key generation
11580231 · 2023-02-14
Assignee
Inventors
- Youssef Souissi (Massy, FR)
- Florent Lozac'h (Trappes-en-Yvelines, FR)
- Adrien Facon (Paris, FR)
- Sylvain Guilley (Paris, FR)
Cpc classification
G11C29/12
PHYSICS
H04L9/0861
ELECTRICITY
H04L9/0656
ELECTRICITY
G06F21/577
PHYSICS
H04L9/3249
ELECTRICITY
G11C29/04
PHYSICS
G11C2029/4402
PHYSICS
H04L2209/26
ELECTRICITY
International classification
G06F21/00
PHYSICS
H04L9/06
ELECTRICITY
H04L9/32
ELECTRICITY
Abstract
There is provided a cryptographic key determination device for determining one or more cryptographic keys in a cryptographic device, the cryptographic device being configured to execute one or more test programs, the cryptographic device comprising one or more components (11-i), each component (11-i) being configured to generate static and dynamic data, the dynamic data being generated in response to the execution of the one or more test programs, wherein the cryptographic key determination device comprises: a data extraction unit configured to extract at least one part of the static data and at least one part of the dynamic data generated by the one or more components (11-i), and a key generator configured to combine the at least one part of static data and the at least one part of dynamic data, and to determine the one or more cryptographic keys by applying a cryptographic function to the combined data.
Claims
1. A cryptographic key determination device for determining one or more cryptographic keys in a cryptographic device, the cryptographic device being configured to execute one or more test programs, the cryptographic device comprising one or more components, each component being configured to generate static and dynamic data, said dynamic data being generated in response to the execution of said one or more test programs and representing a dynamic behavior of said cryptographic device, wherein the cryptographic key determination device comprises: a data extraction unit configured to extract at least one part of the static data and at least one part of the dynamic data generated by said one or more components according to a data volume threshold previously determined depending on one or more of a security level, a performance level, a key computation complexity, and a latency required for the generation of one or more cryptographic keys from the extracted data, and a key generator configured to combine said at least one part of static data and said at least one part of dynamic data, and to determine said one or more cryptographic keys by applying a cryptographic function to said combined data.
2. The cryptographic device of claim 1, wherein the cryptographic device is configured to execute said one or more test programs continuously.
3. The cryptographic device of claim 1, wherein the cryptographic device is configured to execute said one or more test programs periodically according to a predefined time interval.
4. The cryptographic device of claim 1, wherein the execution of said one or more test programs is event-driven, the cryptographic device being configured to execute said one or more test programs in response to one or more events.
5. The cryptographic device of claim 1, wherein the cryptographic device is configured to execute said one or more test programs in response to an interrupt action or to a user-initiated action.
6. The cryptographic device of claim 1, wherein said execution of one or more test programs is implemented by the cryptographic device to perform a system boot-up test, the cryptographic device being configured to execute said one or more test programs at each system boot.
7. The cryptographic device of claim 1, wherein said execution of one or more test programs is implemented by the cryptographic device to perform a memory test for testing one or more memory units implemented in said cryptographic device.
8. The cryptographic device of claim 1, wherein said execution of one or more test programs is implemented depending on one or more test parameters, a test parameter being chosen in a group comprising a test duration and a test complexity.
9. The cryptographic device of claim 1, wherein a component of said one or more components is a processor or a memory.
10. The cryptographic device of claim 1, wherein said key generator is a random number generator or a physically unclonable function.
11. The cryptographic device of claim 1, wherein the cryptographic device is configured to use said one or more cryptographic keys in one or more applications comprising data encryption, data decryption, message authentication, and digital signatures.
12. The cryptographic device of claim 11, wherein data encryption is performed using a symmetric encryption algorithm chosen in a group comprising DES, 3DES, AES, and RC4.
13. The cryptographic device of claim 11, wherein data encryption is performed using an asymmetric encryption algorithm, said asymmetric encryption algorithm being RSA or ECDSA.
14. The cryptographic device of claim 1, wherein said one or more cryptographic keys are stored within the cryptographic device or shared within the cryptographic device or shared with external devices or shared with external systems.
15. A method for determining one or more cryptographic keys, the method comprises: executing one or more test programs; generating static and dynamic data, said dynamic data being generated in response to the execution of said one or more test programs and representing a dynamic behavior of said cryptographic device, wherein the method comprises: extracting at least one part of said static data and at least one part of said the dynamic data according to a data volume threshold previously determined depending on one or more of a security level, a performance level, a key computation complexity, and a latency required for the generation of one or more cryptographic keys from the extracted data; combining said at least one part of static data and said at least one part of dynamic data; and determining said one or more cryptographic keys by applying a cryptographic function to said combined data.
Description
BRIEF DESCRIPTION OF THE DRAWINGS
(1) The accompanying drawings, which are incorporated in and constitute a part of this specification, illustrate various embodiments of the invention, together with the general description of the invention given above and the detailed description of the embodiments given below.
(2)
(3)
DETAILED DESCRIPTION
(4) Embodiments of the invention provide devices and methods for securing cryptographic devices against hardware and/or software attacks aiming at recovering the cryptographic keys stored in/generated by cryptographic devices. In particular, the devices and methods of the invention provide a determination of cryptographic key(s) depending on dynamic data generated dynamically at the cryptographic devices and representing a dynamic behavior of the cryptographic devices.
(5) A cryptographic device refers to a device that implements hardware and/or software cryptographic mechanisms for ensuring data and/or signals security, authentication, protection, and/or privacy.
(6) Secured cryptographic devices and methods according to the various embodiments of the invention may be implemented in a wide variety of devices or systems such as industrial, information, and consumer devices. Secured cryptographic devices and methods according to embodiments of the invention may be used in a wide range of applications such as civil or military communication applications or data processing applications, including for example: digital electronics; communications for ensuring a secure transfer of data over unsecure transmission channels; computing networks/systems for securing data center interconnections; cloud computing applications and cloud servers; communication applications (e.g. communications over wire-tap channels); the car industry to ensure anti-theft protection; service provider systems to provide restricted access; mobile phone devices to authenticate the control and access to batteries and accessories; banking industry to secure banking accounts and financial transactions; medicine to secure medical data and medical devices such as implantable medical devices which can be implanted within the body to treat a medical condition or to monitor the state of the functioning of some body parts (e.g. pacemakers, defibrillators to monitor and treat cardiac conditions, brain monitoring or stimulation devices such as neuro-stimulators for deep brain stimulation in cases such as epilepsy or Parkinson, drug delivery systems, biosensors); sensitive applications in FPGA, hardware security modules, and electronic components embedded in smart-cards or electrical vehicles (Evs); etc.
(7) The generation of keys at device start-up is paramount in the context of secure-boot. Security critical devices indeed need to protect themselves when they are at rest. This is because when the power is cut, attackers maybe observe with microscopes the contents of the memory, and even delayer the different metallization layers to have an easier access to the silicon for better observability. Some attackers can also attempt to modify the code in the memories. In such context, a strong defense consists in encrypting and authenticating the memories. Both operations require a cryptographic key: one for encryption and the other one for the authentication function. Such operation is known as turning “red” (sensitive) information into “black” (non-sensitive) information. However, to prevent the attacker from first attempting to read the keys, the keys shall not be easily found. Otherwise, after such step, the attacker would be able to decipher the memories or to alter them while regenerating a value authentication tag. Hence the need for a strongly protected master key. The key can be referred to as the foundation of a root-of-trust (RoT).
(8) Referring to
(9) The system 100 may be for example a communication system (e.g. digital, wired, wireless, cellular, optical, satellite, acoustic, and molecular communication system), a data processing system (e.g., online sale systems, financial systems, electronic passport systems, banking), a data storage system (e.g. databases), a recording system (e.g. magnetic and optical recording), a positioning system, etc.
(10) The cryptographic device 1 may be any device, computer, computing machine, or embedded system, programmed and/or programmable to perform cryptographic mechanisms or algorithms involving the use, the generation and/or the storage of one or more cryptographic keys.
(11) Exemplary cryptographic devices 10 comprise, without limitations: smartcards, tokens to store keys such as wallets, smartcards readers such as Automated Teller Machines (ATM) used for example in financial transactions, restricted access, telecommunications, military applications, secure communication equipments, and TV set-top boxes; electrical and digital electronic devices such as RFID tags and electronic keys; embedded secure elements; computers (e.g. desktop computers and laptops), tablets; routers, switches, printers; mobile phones such as smartphones, base stations, relay stations, satellites; Internet of Things (IoT) devices, robots, drones; and recorders, multimedia players, mobile storage devices (e.g. memory cards and hard discs) with logon access monitored by cryptographic mechanisms.
(12) In an application of the invention to communication systems, the cryptographic device 1 may be fixed or mobile, configured to operate in a wired, wireless, or optical fiber-based communication network.
(13) Further, the cryptographic device 1 may be a standalone device or may be connected to external devices, machines or systems. The cryptographic device 1 may be implemented for example in a computer networking system (using for example one or more small or large area wired or wireless access networks).
(14) One or more tests may be implemented to test cryptographic device 1 for example in order to diagnose the serviceability and/or correct the operation of the cryptographic device 1. In particular, design tests can be performed during the design or the manufacturing of the cryptographic device 1 or during the operability of said cryptographic device 1.
(15) A design test on the cryptographic device 1 can be performed using an external test apparatus (or ‘equipment’) generally referred to as ‘automatic test equipment’ or ‘automated test equipment’ (ATE). The automatic test equipment is configured to perform tests on the cryptographic device, referred to as ‘the Device Under Test’ (DUT), ‘Equipment Under Test’ (EUT), or ‘Unit Under Test’ (UUT). The automatic test equipment implements a processing to quickly perform measurements and analyze the test results. An automated test equipment may be a simple computer-controlled digital multi-meter, or a complicated system containing dozens of complex test instruments (real or simulated electronic test equipment) capable of automatically testing and diagnosing faults in sophisticated electronic packaged parts or on wafer testing, including system on chips and integrated circuits.
(16) According to some embodiments of the invention, the cryptographic device 1 may be a device, computer, computing machine, or embedded system, programmed and/or programmable to execute itself one or more design test programs without relying upon external test equipment.
(17) A design test referred to as a ‘built-in self-test’ (BIST) or ‘built-in test’ (BIT) is a mechanism that enables a machine to test itself without relying on external test equipment.
(18) A BIST may be designed to meet several requirements comprising a high reliability, a low repair cycle, or depending on several constraints comprising limited technician accessibility and an increasing cost of testing during manufacture.
(19) By reducing the test-cycle duration and the complexity of the test/probe setup, a BIST provides a reduction on the complexity and the costs due to the reliance upon external test equipment for testing a device/machine.
(20) Built-in self tests are used to test the functioning of several devices and systems comprising, without limitation, devices used in automotive, in avionics, in electronics, and in medical devices.
(21) In particular, automotive devices perform BISTs to enhance safety and reliability. For example, most vehicles with antilock brakes test them once per safety interval. If the antilock brake system has a broken wire or other fault, the brake system reverts to operating as a normal brake system. Most automotive engine controllers incorporate a ‘limp mode’ for each sensor so that the engine will continue to operate if the sensor or its wiring fails.
(22) In avionics, BISTs are performed in civil and military aircrafts during the manufacturing phase or during a flight to minimize the time on the ground needed for repairing detected failing devices and to increase the level of security of the aircraft system.
(23) Exemplary applications of BISTs in electronics comprise the BISTs performed by integrated circuits and by computers. BISTs are used in integrated circuits manufacturing to make faster, less-expensive integrated circuit manufacturing tests. Computers, including embedded systems, perform BISTs to self-test their processors and/or memory, and/or software.
(24) In medicine, medical devices perform BISTs to test themselves for assuring a continued safety. Safety-critical devices generally define a ‘safety interval’, a period of time which is short enough to prevent injury from occurring. Medical devices perform a BIST of the most critical functions at least once per safety interval.
(25) The various embodiments of the invention provide improved secured cryptographic devices in which the determination of one or more cryptographic keys depends on data generated during the performance of a built-in self-test. More specifically, the cryptographic keys generation is based on dynamic data generated by components implemented in the cryptographic device in response to the performed built-in self-test.
(26) Referring to
(27) The cryptographic device 1 may be configured to perform one or more design tests for reducing the likelihood of hardware and/or software failures by the prediction of such failures and the identification of the possible points of failures. A point of failure may occur at the processor(s) and/or at the circuitry around the processor(s) or around one or more peripheral devices and/or at the memory and/or at the software.
(28) When a processor failure occurs, it is unlikely that any instructions will be executed. Design tests in such events are thus irrelevant. As such failures are most likely to occur on power-up, a system monitor/manager/supervisor is likely to notice and handle such failures.
(29) In some embodiments in which the cryptographic device 1 is a multi-processor device implementing two or more processors separately on the chip in a way that the failure of one of the processors will not impact the remaining processors (a processor being a single core or a multi-core processor), the cryptographic device 1 may be configured to execute one or more test programs corresponding to one or more design tests to verify and/or identify if any failure has been occurred at one of the two or more processors or at one or more of the cores of a multi-core processor.
(30) The results of the design tests may be displayed on a panel (that is a part of the cryptographic device 1), output to an external device connected to the cryptographic device 1, or stored for future retrieval by diagnostic tools or system monitor/manager/supervisor.
(31) In some embodiments, the cryptographic device 1 may be configured to execute one or more test programs corresponding to a design test continuously. In such embodiments, the data extraction unit 131 may be configured to perform the extraction of at least one part of the static data and at least one part of the dynamic data generated by the one or more components 11-i regularly at time intervals (specific, predefined, predetermined, or selected time intervals for example).
(32) In some embodiments, the cryptographic device 1 may be configured to execute one or more test programs corresponding to a design test periodically according to a predefined time interval (e.g. a design test time interval). A design test interval may correspond for example to a safety interval for cryptographic devices used for example in medical applications.
(33) In some embodiments, the execution of one or more test programs may be event-driven, the cryptographic device 1 being configured to execute one or more test programs corresponding to an event-driven design test in response to one or more event(s). Exemplary event-driven design tests comprise design tests performed at aircraft systems after the aircraft lands.
(34) In some embodiments, the cryptographic device 1 may be configured to execute one or more test programs corresponding to a design test in response to an interrupt action or to a user-initiated action.
(35) In some embodiments, the data extraction unit 133 may be configured to extract static and dynamic data according to a data volume threshold previously determined depending on a security level/performance level/key computation complexity and/or latency required for the generation of one or more cryptographic keys from the extracted data.
(36) In some embodiments, the duration and/or the frequency of static and dynamic data extraction may be configurable/configured to satisfy a target performance/security tradeoff.
(37) In some embodiments, the duration and/or the frequency of static and dynamic data extraction may be performed by a combination of at least some of the preceding features.
(38) In some embodiments, the execution of one or more test programs may be implemented by the cryptographic device 1 to perform a system boot-up test at each system boot immediately after the cryptographic device 1 is powered on. In such embodiments, the key generator 133 may be configured to determine one or more cryptographic keys from the system boot data generated by the one or more components 11-i comprised in the cryptographic device 1 for securing the system boot and ensuring a secure initialization of the cryptographic device 1.
(39) A system boot-up test may comprise one or more test programs to perform one or more of the following actions: verify the integrity of the registers of one or more processing units (or processors) comprised in the cryptographic device 1; verify the integrity of some components such as timers and interrupt controllers; find, size, and verify the main memory of the cryptographic device 1; identify, organize, and select which devices/components are available for booting; discover, initialize, and catalog all system buses and components; provide a user interface for the system's configuration;
(40) In some embodiments, a successful system boot-up test may be followed by a load of an operating system and/or the initialization of one or more components referred to as ‘system-boot components’. System-boot components may for example comprise peripheral devices.
(41) Advantageously, test data may not be documented so that invasive attacks, aiming at recovering the key, will require reversing the whole chip, as the key is built by reading at various locations in the chip.
(42) In some embodiments, the execution of one or more test programs may be implemented by the cryptographic device 1 to perform a memory test, the cryptographic device 1 being configured to perform said memory test to test one or more memory units implemented in the cryptographic device 1.
(43) A memory test may be performed to detect/identify memory failures. A memory failure may be transient or hard. Transient failures/faults are impermanent faults that occur from time to time and are virtually impossible to prevent. Hard faults are permanent malfunctions that can show up in three forms:
(44) 1) memory not responding to being addressed at all;
(45) 2) one or more bits are stucked at ‘0’ or ‘1’;
(46) 3) there is cross talk; addressing one bit has an effect one or more other bits.
(47) Memory tests may be performed by the cryptographic device 1 to detect such hard memory failures. Such memory tests may be performed at the system boot and/or during the operability of the cryptographic device 1 as a background task.
(48) A memory test may be advantageously performed at the system boot, the time when memory is most likely to fail and thus testing the memory that does not contain yet data that may be sensitive.
(49) A background memory test may be performed by testing individual bytes/words of memory during the operability of the cryptographic device 1 as long as interruptions in the program executions are tolerated. Such memory tests may be performed for example during idle times or as background tasks, when there are not programs/instructions being executed.
(50) In some embodiments, the execution of one or more test programs may be implemented in the cryptographic device 1 depending on one or more test parameters, a test parameter being chosen in a group comprising a test duration and a test complexity.
(51) In one embodiment, a component 11-i among the one or more components 11-i comprised in the cryptographic device 1 for i=1, . . . , N may be chosen in a group comprising a processor, a memory unit, a cryptographic unit, and a peripheral device.
(52) A processor refers to a component configured to execute the instructions of one or more programs stored in memory units using one or more processing units (referred to as ‘cores’) by performing arithmetic, logical, control, and input/output operations specified by the instructions.
(53) According to some embodiments, the cryptographic device 1 may be a multi-processor, comprising at least two processors 11-i.
(54) In some embodiments, a processor 11-i may be a single core processor, comprising a single processing unit (not illustrated in
(55) In other embodiments, a processor 11-i may be a multi-core processor, comprising a plurality of cores configured to perform tasks at a given time (as used for example in embedded systems, digital signal processing, or graphic processing units). The tasks may be software processes or/and threads scheduled by the operating system.
(56) In such embodiments, a processor 11-i may be a single computing component configured to run multiple instructions on separate cores at the same time, thereby increasing the overall speed for program execution amenable to parallel computing. The different cores may be integrated onto a single integrated circuit die (also known as a chip multiprocessor), or onto multiple dies in a single chip package.
(57) Further, the cores in a multi-core processor 11-i may or may not share memory means (for instance cache memories). In some embodiments, the cores may be configured to implement message passing or shared-memory inter-core communication methods.
(58) In embodiments in which the cryptographic device 1 is multi-processor, the cryptographic device 1 may comprise one or more single-core processors and one or more multi-core processors.
(59) Further, in some embodiments in which the cryptographic device 1 comprises a plurality of processors 11-i, the processors 11-i may be centralized in space or distributed in space such as clusters and farms of servers.
(60) According to some embodiments, the cryptographic device 1 may comprise at least one virtual processor 11-i, a virtual processor being a physical central processing unit that is assigned to a virtual machine (e.g. in cloud computing applications, cloud servers, etc).
(61) In particular, a processor 11-i may comprise: one or more processing units (not illustrated in
(62) The processor registers may form small and very fast memory means (as opposed to the slower RAM main memory) used to speed the execution of the programs by providing quick access to commonly used values. The processor registers may in particular comprise specific internal registers-registers, not accessible by instructions and used internally for processor operations only, including: a program counter, also known as “instruction register” (not shown in
(63) According to some embodiments, the cryptographic device 1 may further comprise memory bus(es) configured to route data and/or metadata between the one or more components 11-i.
(64) A cryptographic unit 11-i may be a processing or storage unit configured to generate/store/manage/use cryptographic data and cryptographic keys different from the cryptographic keys generated by the key generator 133.
(65) The cryptographic unit 11-i may be a secure crypto-processor 11-i dedicated for carrying out cryptographic operations to protect sensitive data in memory from hardware and/or software attacks. A crypto-processor 11-i may be configured to perform cryptographic mechanisms for encryption, integrity, and replay protection. Advantageously, memory encryption enables protecting the confidentiality of memory-resident data, integrity protection enables preventing an attacker from causing hidden modifications to the encrypted data stored in memory, and replay protection enables eliminating undetected temporal substitution of the encrypted data. Exemplary crypto-processors comprise smartcards used for example in financial transactions, restricted access, telecommunication, military applications, secure communication equipment, Automated Teller machines, TV set-top boxes, etc.
(66) According to some embodiments, a memory unit 11-i may comprise: a data memory (not shown in
(67) In order to speed up processing of programs and reduce the average cost (time or energy) to access data from the memory unit 11-i, smaller and faster cache memories may be used.
(68) Accordingly, a memory unit 11-i may comprise a processor cache in association with each processor implemented in the cryptographic device 1, the processor cache being configured to access the data and/or instructions comprised in the programs to be executed by the processor with which it is associated. A processor cache may be configured to store copies of the data and/or instructions from frequently requested locations in the memory unit 11-i so that they are immediately available to the processor(s) when needed. In particular, the data stored in a processor cache may be the result of earlier computations, or the duplicate of data stored elsewhere.
(69) A processor cache may comprise different independent caches, including data cache(s) and/or instruction cache(s).
(70) In some embodiments, a processor cache may be organized as a hierarchy of cache levels.
(71) According to some embodiments, a processor cache may be located inside the processor 11-i chip (internal cache).
(72) Alternatively, a processor cache may be located outside the processor 11-i chip (external cache).
(73) According to some embodiments, a memory unit 11-i may correspond to the main memory of the cryptographic device 1.
(74) According to some embodiments, the memory unit 11-i may be chosen in a group comprising volatile memories, non-volatile memories, a combination of both volatile and non-volatile memory units.
(75) A volatile memory may use one or more of a RAM, DRAM (e.g., DDR, SDRAM) SRAM, T-RAM, and Z-RAM. Volatile memories are generally advantageous in terms of improving read/write performance, with a lower cost/footprint than non-volatile writable memories.
(76) A non-volatile memory may use one or more of a Mask ROM, PROM, EPROM, EEPROM, NVRAM, Flash memory Solid-state storage, nvSRAM, FeRAM (Ferro-electric RAM), MRAM (Magnetic RAM), PRAM. Non— volatile memories are generally advantageous in terms of providing access to previously stored information upon reboot and/or power cycle.
(77) According to some embodiments, a component 11-i comprised in the cryptographic device 1 may be an internal or external peripheral device including input devices, output devices, and input/output.
(78) Input devices may be configured to interact with or send data from the user to the computer. Exemplary input devices comprise keyboards, computer mice, graphic tablets, barcode readers, image scanners, microphones, webcams, game controllers, light pens, and digital cameras.
(79) Output devices may be configured to provide output to the user from the cryptographic device 1. Exemplary output devices comprise computer displays, printers, projectors, computer speakers, webcams.
(80) Input/Output devices may be configured to perform both functions. Exemplary Input/Output devices comprise touch-screens.
(81) In some embodiments, the key generator 123 may be a random number generator or a physically unclonable function.
(82) In some embodiments, a random number generator may be chosen in a group comprising a pseudo-random number generator and a true random number generator.
(83) According to some embodiments, the cryptographic device 1 may be configured to use the one or more cryptographic keys determined by the key generator 133 in one or more applications comprising data encryption, data decryption, message authentication, and digital signatures.
(84) Data encryption may use one or more encryption mechanisms implementing one or more of error correcting codes (for example Hamming codes, BCH codes), hash functions, and secret key-based cryptographic algorithms (using symmetric or asymmetric keys).
(85) Symmetric encryption algorithms may be chosen in a group comprising DES (Data Encryption Standard), 3DES, AES (Advanced Encryption Standard), and RC4 (Rivest Cipher 4).
(86) Asymmetric encryption algorithms may be chosen in a group comprising RSA (Rivest-Shamir-Adleman) and ECDSA (Elliptic Curve Digital Signature Algorithm).
(87) In some embodiments, the encryption and decryption algorithms may be chosen based on trade-offs between performance, memory, and the security level required by an application and/or a defined user.
(88) The key generator 133 may be configured to determine one or more cryptographic keys depending on one or more secret parameters such as a password or an external secret value for example shared between the cryptographic device 1 and one or more external devices/machines/users connected to the system 100 with the purpose of sharing the one or more cryptographic keys determined by the cryptographic device 1.
(89) In one embodiment, the one or more cryptographic keys may be stored within the cryptographic device, shared within the cryptographic device, shared with external devices, shared with other systems (such as user systems).
(90) The cryptographic key(s) may be destroyed on reboots and/or on shutdown, and initialized (in a deterministic or random way) at the initialization of the cryptographic device 1.
(91) Referring to
(92) One or more design tests may be performed to predict/prevent/identify any hardware or software failure.
(93) One or more test programs corresponding to a design test may be executed continuously or periodically according to a predefined design test time interval or in response to one or more events or in response to an interrupt action or to a user-initiated action.
(94) In some embodiments, the extractions of static and dynamic data may be performed according to a data volume threshold previously determined depending on a security level/performance level/key computation complexity and/or latency required for the generation of one or more cryptographic keys from the extracted data.
(95) In some embodiments, the duration and/or the frequency of static and dynamic data extraction may be configurable/configured to satisfy a target performance/security tradeoff.
(96) In some embodiments, the duration and/or the frequency of static and dynamic data extraction may be performed by a combination of at least some of the preceding features.
(97) In some embodiments, a design test may be a system boot-up test performed at each system boot.
(98) In some embodiments, a design test may be a memory test performed to detect/identify memory failures.
(99) In some embodiments, a design test may be performed according to one or more design test parameters. The design test parameter may be a test duration (also referred to as ‘design test duration’) or a test complexity (also referred to as ‘design test complexity’).
(100) In some embodiments, the one or more cryptographic keys may be determined using a cryptographic function, which may be a random number generator or a physically unclonable function.
(101) In some embodiments, the random number generator may be a pseudo-random number generator or a true random number generator.
(102) In some embodiments, the one or more cryptographic keys may be used in one or more applications including data encryption, data decryption, message authentication, and digital signatures.
(103) Data encryption may use one or more encryption mechanisms implementing one or more of error correcting codes (for example Hamming codes, BCH codes), hash functions, and secret key-based cryptographic algorithms (using symmetric or asymmetric keys).
(104) Symmetric encryption algorithms may be chosen in a group comprising DES, 3DES, AES, and RC4.
(105) Asymmetric encryption algorithms may be RSA or ECDSA.
(106) In some embodiments, the encryption and decryption algorithms may be chosen as a function of the desired tradeoffs between the performance, the memory, and the security level required by an application and/or a defined user.
(107) In some embodiments, the one or more cryptographic keys may be determined depending on one or more secret parameters such as a password or an external secret value.
(108) In some embodiments, the determined one or more cryptographic keys may be stored for a further use/share/distribution.
(109) The methods described herein can be implemented by computer program instructions supplied to the processor of any type of computer to produce a machine with a processor that executes the instructions to implement the functions/acts specified herein. These computer program instructions may also be stored in a computer-readable medium that can direct a computer to function in a particular manner. To that end, the computer program instructions may be loaded onto a computer to cause the performance of a series of operational steps and thereby produce a computer implemented process such that the executed instructions provide processes for implementing the functions specified herein.
(110) While embodiments of the invention have been illustrated by a description of various examples, and while these embodiments have been described in considerable details, it is not the intent of the applicant to restrict or in any way limit the scope of the appended claims to such embodiments. Some of those embodiments may be advantageously combined, when appropriate. Additional advantages and modifications will readily appear to those skilled in the art. The invention in its broader aspects is therefore not limited to the specific details, representative methods, and illustrative examples shown and described.