1. Field
Various features relate to physically unclonable functions (PUFs), and in particular to PUFs based on the resistivity of Magnetoresistive Random-Access Memory (MRAM) Magnetic Tunnel Junctions (MTJs).
2. Background
An on-chip PUF is a chip-unique challenge-response mechanism exploiting manufacturing process variations inside integrated circuits (ICs). When a physical stimulus (i.e., challenge) is applied to the PUF, the PUF generates a response in an unpredictable but repeatable way due to the complex interaction of the stimulus with the physical microstructure of the device employing the PUF. This exact microstructure depends on physical factors introduced during manufacture of the device employing the PUF, which are unpredictable. The PUFs “unclonability” means that each device employing the PUF has a unique and unpredictable way of mapping challenges to responses, even if one device is manufactured with the same process as another seemingly identical device. Thus, it is practically infeasible to construct a PUF with the same challenge-response behavior as another device's PUF because exact control over the manufacturing process is infeasible.
The PUF is unique for each chip, is difficult to predict, is easy to evaluate and is reliable. The PUF is individual and practically impossible to duplicate. Additionally, the PUF can serve as a root of trust and can provide a key that cannot be easily reverse engineered. The PUF can be used to protect critical data (keys or memories) from offline attacks.
Magnetoresistive Random-Access Memory (MRAM) is a non-volatile random-access memory where unlike conventional RAM data is not stored as electric charge but is rather stored as electron spin within magnetic storage elements.
If the polarity of the first magnetic layer 102 is oriented such that it is parallel to the second magnetic layer 104, then the resistance between the layers 102, 104 is relatively low (i.e., low resistance state). Such a state may be considered to represent a data bit “0” state. By contrast, if the polarity of the first magnetic layer 102 is oriented such that it is anti-parallel to the second magnetic layer 104, then the resistance between the layers 102, 104 is relatively high (i.e., high resistance state). Such a state may be considered to represent a data bit “1” state.
Referring to
One aspect provides using a MRAM-based memory cell array to implement a physically unclonable function (PUF). A challenge is issue to an array of magnetoresistive random-access memory (MRAM) memory cells including a plurality of magnetic tunnel junctions, wherein the challenge includes a plurality of MRAM cell addresses of at least some of the magnetic tunnel junctions. A response to the challenge may then be obtained by ascertaining a resistance of the magnetic tunnel junctions to generate at least a partial map of the array. The responses generated for a plurality of memory cells of the MRAM-based PUF may be used to uniquely identify the electronic device, such as an integrated circuit. Additionally, a magnetic field may be applied to the memory cells to arrange all the magnetic tunnel junctions in a fixed orientation prior to issuing the challenge. For instance, all the magnetic tunnel junctions may be parallel or anti-parallel.
Moreover, a method may include applying a plurality of magnetic fields to the array at a plurality of angles, wherein responses of the magnetic tunnel junctions are obtained for the plurality of magnetic fields. Furthermore, in one exemplary embodiment, the MRAM memory cells may each include two magnetic tunnel junctions. In this exemplary embodiment, a response may be obtained by ascertaining the resistance of only one of the two magnetic tunnel junctions. Alternatively, each MRAM memory cell may include two magnetic tunnel junctions. In this case, a response may be obtained by ascertaining the resistance of both of the two magnetic tunnel junctions.
In the following description, specific details are given to provide a thorough understanding of the various aspects of the disclosure. However, it will be understood by one of ordinary skill in the art that the aspects may be practiced without these specific details. For example, circuits may be shown in block diagrams in order to avoid obscuring the aspects in unnecessary detail. In other instances, well-known circuits, structures, and techniques may not be shown in detail in order not to obscure the aspects of the disclosure.
The word “exemplary” is used herein to mean “serving as an example, instance, or illustration.” Any implementation or aspect described herein as “exemplary” is not necessarily to be construed as preferred or advantageous over other aspects of the disclosure. Likewise, the term “aspects” does not require that all aspects of the disclosure include the discussed feature, advantage, or mode of operation.
Methods and apparatuses are described herein that implement physically unclonable functions (PUFs) based on Magnetoresistive Random-Access Memory (MRAM) circuit cell arrays. Specifically, the unique and random resistances of individual Magnetic Tunnel Junctions (MTJs) of the MRAM circuit cells of an MRAM array are utilized as the basis for implementing and executing a PUF. The responses generated by the MRAM-based PUF may be used to uniquely identify an electronic device, such as an integrated circuit, that incorporates the MRAM-based PUF. Alternatively, the memory cell responses generated by the PUF may be used as secure cryptographic keys for cryptographic security algorithms. Novel devices and methods are described herein that utilize MRAM circuits to generate PUFs.
The challenge 606 may be an indication of a memory cell or plurality of memory cells (e.g., memory cell array) to be queried or from which a response is to be obtained. A sample measurement 604 may be made to ascertain one or more responses from the memory cells. In one example, such sample measurements 604 may be taken for multiple memory cells (e.g., within a memory array or at multiple locations on a chip or multiple chips). These memory cells (or locations thereof) may be indexed or mapped 608 to the corresponding measurements or responses and can be quantized 610 in different manners (e.g., percentages, absolute values, logical states, etc.). In this manner, a unique set of responses 602 may be obtained from the memory cells of the memory device 600 and the precise memory cells contributing such responses may be identified for subsequent authentication.
During manufacture of memory cells (e.g., MRAM cells), the manufacturing processes induce MTJ resistance variation naturally. In other words, no identical memory arrays of MTJ-based memory cells are manufactured. With MRAM memory cells based on magnetic tunnel junctions, each junction can have a different resistivity that can be assigned a value that may be used to generate a value of each memory cell. The resistance of each memory cell may serve, indirectly or directly, to generate a “response” corresponding to the particular memory cell from which it is obtained. Alternatively, each MRAM memory cell can be assigned a value based on the relative resistivity of the two magnetic tunnel junctions that make up each MRAM memory cell.
The logic state (e.g., zero or one) of a particular memory cell may be defined by whether the MTJs of the memory cell are parallel 714 (e.g., logic state zero) or anti-parallel (e.g., logic state one). However, the electromagnetic field 710 helps align the free layer 704 for the two MTJs of a memory cell in the same orientation. The resistance of each MTJ is dictated by the manufacturing/fabrication process as well as the magnetic orientation (e.g., parallel or anti-parallel) of the MTJs. The relative resistances for a first MTJ (e.g., resistance MTJ—1) and a second MTJ (e.g., resistance MTJ—2) for a particular memory cell may be used to generate a “response” for the memory cell. For example, for a MRAM cell, the measured/estimated/ascertained resistance of a first MTJ may be defined as MTJ—1, and the measured/estimated/ascertained resistance of a second MTJ may be defined as MTJ—2. When both MTJs are in a parallel magnetic orientation and MTJ—1<MTJ—2, the memory cell may be deemed to be a logical zero (0). Similarly, when both MTJs are in a parallel magnetic orientation and MTJ—1>MTJ—2, the memory cell may be deemed a logical one (1). Moreover, when both MTJs are in an anti-parallel magnetic orientation and MTJ—1<MTJ—2, the memory cell may be deemed a logical zero (0). Likewise, when both MTJs are in an anti-parallel magnetic orientation and MTJ—1>MTJ—2, the memory cell may be deemed a logical one (1).
Note that, if MTJ—1<MTJ—2 when the MTJs are in a parallel orientation, MTJ—1 may be greater than MTJ—2 (i.e., MTJ—1>MTJ—2) or MTJ—1 may be smaller than MTJ—2 (i.e., MTJ—1<MTJ—2) when the MTJs are in an antiparallel orientation. In addition, if MTJ—1>MTJ—2 when the MTJs are in a parallel orientation, MTJ—1 may be smaller than MTJ—2 (i.e., MTJ—1<MTJ—2) or MTJ—1 may be larger than MTJ—2 (i.e., MTJ—1>MTJ—2) when the MTJs are in an antiparallel orientation.
While the magnetic orientation examples 702, 714 and 716 have illustrated magnetic orientations along a long axis, in other examples a magnetic orientation 718 may be at some angle Θ relative to the long axis. For example, either MTJ—1<MTJ—2 or MTJ—1>MTJ—2 is possible, for magnetizations in both parallel and anti-parallel orientations having the same angle Θ relative to their long axis. Additionally, the resistance difference of MTJ—1 and MTJ—2 determines whether the MRAM cell has a value “D” of “0” or “1”. Alternatively stated, the unpredictable and uncontrollable MTJ resistance local variations (e.g., resulting from manufacture/fabrication process variations) make each memory cell a physically unclonable function (PUF) and a value derived from such resistance variations serves as the response (e.g., logical 0 or logical 1) for each memory cell. However, for memory cells deemed a logical zero (e.g., MTJ—1<MTJ—2) each memory cell will have a different value for the resistance difference MTJ—2−MTJ—1. Defining this resistance difference Celldif=MTJ—2−MTJ—1, different memory cells will have different Celldif values that can be indexed or mapped to create a unique identifier. For memory cells deemed a logical one (e.g., MTJ—1>MTJ—2) each cell will have a different value for MTJ—1−MTJ—2. Defining this resistance difference Celldif=MTJ—1−MTJ—2, different memory cells will have different Celldif values that can be indexed or mapped to create a unique identifier. Alternatively, Celldif can be MTJ—2−MTJ—1 for all cells allowing for negative values for logical one (1) memory cells.
In addition, Celldif can be MTJ—1−MTJ—2 for all cells allowing for negative values for logical zero cells. To clarify, Celldif may be defined differently depending upon the logical state (i.e., logical 0 or 1) for a memory cell such that Celldif is always positive. Moreover, Celldif may be defined such that negative values are allowed. Alternatively, Celldif can be an absolute value of (|MTJ—1−MTJ—2| or |MTJ—2−MTJ—1|) such that all values are positive. Still another alternative is to use percentages to assign unique values for each cell (e.g., MTJ—1/(MTJ—1+MTJ—2) or MTJ—2/(MTJ—1+MTJ—2)). Still other operations can be used to build an index or map. For example, each edge cell may be assigned a value as explained above, but interior cells may make use of neighboring cells also. Any imaginable weighting schemes may be employed. As an example, an initial map is created using any of the Celldifs above, and then that map may be convoluted or perturbed to obtain a derived map. One example would be to take a type of weighted average, such as making Celldifnew=½*(Celldif+(summation of all neighboring cells' Celldif)/number of neighboring cells)). In other words, for an interior cell with 8 neighbors, all neighbors Celldifs are added together and then that sum is divided by 8, with that result added to the interior cell's Celldif and then halved (or not). Other than the just described example of one type of neighbor smoothing, whole rows and/or columns can be used to alter (i.e., vary, perturb, convolute etc.) an initial Celldif into an altered Celldif. Additionally, rows and/or columns may be normalized. Instead of dividing the sum of neighbors by the number of neighbors, no division may take place or any number may be used to divide by. One purpose of the herein described data manipulations is to provide a pseudorandom appearing layer to the final map or index to increase the difficulty of reverse engineering the PUF or the PUF challenge/response protocol. Another way to increase the complexity of the final map is to use different definitions of Celldif in different areas of the chip. In addition to using data manipulation to add complexity, data compression algorithms may also be employed to reduce the size of the final map or index. Another way to reduce the size of the final map is to only challenge a percentage of cells as detailed below.
Note, in
The challenge 830 may be implemented by application of a voltage to the cells identified by a memory address or block of addresses. The application of voltage may be direct from, for example, a line such as a write line (WL) connected to a memory cell or the voltage may be induced through the use of an electromagnetic field.
As one example, the response(s) 810 may be used as a cryptographic key or signature that uniquely identifies an electronic device and/or the integrated circuit that houses the MRAM cell array 800. As another example, the response 810 may be used as a random, unique key in a cryptographic security algorithm, such as a private key in a key encryption algorithm.
In this example, the memory array 1102 is a ten cell by ten cell memory array for ease of understanding. Actual memory arrays can be any size (e.g., 10000×10000, 1 million×1 million, etc.) and do not need to be square (e.g., X by Y, where X is not equal to Y). The memory array 1102 can be logically segmented into quadrants 1104, 1106, 1108, and 1110 (or any other subdivision). A unique identifier may be generated from cell information for the one or more quadrants. For example, all or some of the memory cells in a first quadrant 1104 can be challenged and a unique identifier generated for the cell responses within the first quadrant 1104. Similarly, identifiers can be generated for the other quadrants 1106, 1108, and 1110. In one example, each memory cell may be challenged and the result for each quadrant is a 25-bit string of zeros and ones (i.e., the 25-bit string combines the responses from twenty-five memory cells in said quadrant). Each 25-bit string identifies each quadrant 1104, 1106, 1108, and 1110 respectively. The 25-bit strings can be logically combined to generate a unique identifier for the memory array 1102 or part of the memory array 1102. In one example, the string for a first quadrant 1104 can be added to, concatenated, or logically AND-ed or OR-ed with the string for a second quadrant 1106 to create a first identifier. Similarly, the string for a third quadrant 1108 can be logically AND-ed or OR-ed with the string for a fourth quadrant 1110 to create a second identifier (or the two strings may be combined or concatenated to form one string of double length). In addition, the string for the first quadrant 1104 can be added to, concatenated, or logically AND-ed or OR-ed with the string for the third quadrant 1108 to create a third identifier. Additionally, the string for the second quadrant 1106 can be added to, concatenated, or logically AND-ed or OR-ed with the string for the fourth quadrant 1110 to create a fourth identifier.
Similarly, the strings for the first quadrant 1104 and the fourth quadrant 1110 can be added to, concatenated, or logically AND-ed or OR-ed with each other to create a first diagonal half identifier. In addition, the strings for the second quadrant 1106 and the third quadrant 1108 can be added to, concatenated, or logically AND-ed or OR-ed with each other to create a second diagonal half identifier. Additionally, the inverses of any or all the quadrant strings can be generated, and these inverse strings used both as quadrant identifiers and in obtaining the half identifiers. Moreover, instead of OR-ing the strings to create identifiers (or any type of partial array identifier) an exclusive XOR-ing can be done. As used herein the term “added to” typically means combined to form a longer string. However, mathematical addition is also possible and any carry over bit may be discarded, or the result may be shifted when a carry-over occurs to keep the carry over bit and to discard the least significant bit. Alternatively, in some embodiments the carry over bit is kept by lengthening the string one bit.
In addition, instead of quadrants as illustrated in
Additionally, string size reduction may be advantageous even when all the strings are of equal size. For example, with challenging all the cells in each quadrant, 1104, 1106, 1108, and 1110, and obtaining four 25-bit strings, the AND-ing and OR-ing described above may be best implemented with 8 bit registers and to ease computation overhead and speed up the AND-ing and OR-ing, each string is reduced down to an 8 bit segment or size and stored in an 8 bit register. Alternatively, the four 25-bit strings (or their compliments, or a shifted version of the original or compliment) can be added or concatenated together to form a 100-bit array identifier. Note that the 25-bit string for each quadrant is a map of that quadrant. Furthermore, the 100-bit string of the array qualifies as an index or map of the array. Additionally, calling the 25-bit string associated with the first quadrant 1104 “A”, second quadrant 1106 “B”, third quadrant 1108 “C”, and fourth quadrant 1110 “D”, the 100-bit string can be ordered ABCD, BCDA, DACB, and so forth resulting in 24 permutations (4!) of a unique array identifier. Including inverses of A, B, C, and D increases the permutations to 8! which is 40,320. Although the permutations change the mapping of the array, each permutation itself is still a map or an index even if somewhat convoluted. Allowing any of the 25-bit stings to be shifted up to 24 times in addition to the un-shifted string allows for many permutations of that string alone. Moreover, device 1100 may contain other elements besides the array 1102 that can have unique identifiers. Those other identifiers can be combined with the array's 1102 identifier to create a device 1100 identifier. These data manipulations allow for increasing the complexity of the resulting map or generated cryptographic security key, which increases the difficulty of reverse engineering the map or key.
Returning to the cell level,
A first magnetic field is applied at a first angle Θ1 and resistances are ascertained, and then a second magnetic field is applied at a different angle (e.g., Θ2) and resistances are ascertained a second time. A difference map can be constructed setting a value for each cell location and each MRAM device may have its own unique map. Alternatively, no magnetic field is applied and the MTJs are in antiparallel states when the resistances are ascertained. The resistances are then recorded and they may be used to generate a cryptographic security key or be used as an integrated circuit (IC) identifier.
As stated herein, the PUF is generated by process variations physically. In other words, a randomness is permanently introduced and fixed in the physical details of the manufacturing processes. No post processing is needed for initializing the device. Although applying magnetic fields may be done, the fields are optional. Nor are any other requirements on the MTJ device necessitated or mandated, such as thermal stability. Theoretically, there are not any methods to predict or find out in advance of actually ascertaining MRAM-PUF response data and bit location. The herein described apparatus and methods are environmentally indifferent and tamper resistance. Therefore, issues such as an external magnetic field or a thermal attack are not problematic. The challenge info is public and the response is unique to each PUF device. An external field can be used as a challenge, yet it is not required.
The processing circuit 1506 may include or implement a challenge component 1508 that issues one or more challenges to the MRAM array 1504. The challenges can be through the application of voltage to MTJs of the array and a response component 1510 receives the responses to the challenge. A generator component 1512 can generate a map of the responses to provide a unique identifier for the electron device 1500, the processing circuit 1506, and/or the MRAM array 1504, or subdivisions thereof as described with reference to
Alternatively, no magnetic field is applied and the MTJs are in antiparallel states when the resistances are ascertained. The resistances (responses to a voltage challenge) are then ascertained by the response component 1510 and they may be used to generate at the generator component 1506 a cryptographic security key or be used as an IC identifier. Note that the challenges sent may be a subset of possible challenges and different challenges are possible for different subdivisions (e.g., one quadrant is challenged with voltage, while another quadrant is challenged with the magnetic field.). The challenges may include cell addresses and voltages. Alternatively, the voltages may have been previously applied, and the challenge includes only cell addresses. However, when the challenge does include voltages, the voltage may come from within a cell array of voltage may come from outside the cell array such as with the application of electromagnetic field. Furthermore, any and all of the components illustrated in
In addition, the challenge component 1508, the response component 1510, the generator component 1512, and the magnetic field component 1514 can be part of the processing circuit 1506, or separate from the processing 1506, and/or combinations thereof. Additionally, some or all of the components can be implemented in hardware and/or software, or both. For example, the magnetic field component 1512 must at least partially be hardware implemented in order to create a magnetic field, but other aspects of the magnetic field component 1514 can be software implemented (e.g., the variations of Θ that are 30 degrees, 45 degrees, and/or 90 degrees can be software implemented).
The processing circuit 1604 may include a device identifier circuit/module 1622 adapted to obtain a unique device identifier from an electronic device. Using the obtained device identifier, a challenge circuit/module 1624 may check a device identifier database 1616 (in the storage device 1606) for the corresponding challenge/response information associated with that device identifier. For example, some devices may be identified for being voltage challenged while other devices are identified for being magnetic field challenged. Alternatively, some devices may be identified for being magnetic field challenged with fields applied at angles 30 degrees apart, some devices may be identified for being magnetic field challenged with fields applied at angles 45 degree apart. The challenge circuit/module 1624 may then send one or more of the corresponding challenges to the electronic device. In one implementation, for sending a magnetic field challenge, a MRAM PUF magnetic field circuit 1640 generates a magnetic field.
In one example, the challenge device 1602 may include the machine-readable medium 1610 with challenge instructions 1632 such as memory cell addresses and/or different voltage levels and/or different field strengths and/or different field angles in addition to device identifier instructions which enable the challenge device to both identify the array initially and to apply an unique IC identifier to the array based upon PUF responses. Given the stored instructions, the processing circuit 1604 may then challenge the electronic device by issuing one or both of a plurality of memory cell addresses and a directly or indirectly applied voltage to the memory cells in electronic device. In one embodiment, all memory cells have applied voltages, however, in another embodiment, only a subset of all the memory cells have applied voltages.
Software shall be construed broadly to mean instructions, instruction sets, code, code segments, program code, programs, subprograms, software modules, applications, software applications, software packages, routines, subroutines, objects, executables, threads of execution, procedures, functions, etc., whether referred to as software, firmware, middleware, microcode, hardware description language, or otherwise. The software may reside on a computer-readable storage medium. The computer-readable storage medium may be a non-transitory computer-readable storage medium. A non-transitory computer-readable storage medium includes, by way of example, a magnetic storage device (e.g., hard disk, floppy disk, magnetic strip), an optical disk (e.g., a compact disc (CD) or a digital versatile disc (DVD)), a smart card, a flash memory device (e.g., a card, a stick, or a key drive), a random access memory (RAM), a read only memory (ROM), a programmable ROM (PROM), an erasable PROM (EPROM), an electrically erasable PROM (EEPROM), a register, a removable disk, and any other suitable medium for storing software and/or instructions that may be accessed and read by a computer. The computer-readable storage medium may also include, by way of example, a carrier wave, a transmission line, and any other suitable medium for transmitting software and/or instructions that may be accessed and read by a computer. The computer-readable storage medium may be embodied in a computer program product.
Moreover, a storage medium may represent one or more devices for storing data, including read-only memory (ROM), random access memory (RAM), magnetic disk storage mediums, optical storage mediums, flash memory devices and/or other machine-readable mediums and, processor-readable mediums, and/or computer-readable mediums for storing information. The terms “machine-readable medium”, “computer-readable medium”, and/or “processor-readable medium” may include, but are not limited to non-transitory mediums such as portable or fixed storage devices, optical storage devices, and various other mediums capable of storing, containing or carrying instruction(s) and/or data. Thus, the various methods described herein may be fully or partially implemented by instructions and/or data that may be stored in a “machine-readable medium”, “computer-readable medium”, and/or “processor-readable medium” and executed by one or more processors, machines, and/or devices.
The machine-readable medium 1610 may include or store device identifier instructions 1630 (e.g., to cause the processing circuit to obtain a device identifier from an electronic device being challenged), MRAM PUF challenge instructions 1632 (e.g., to cause the processing circuit to issue the various challenges), and MRAM PUF magnetic field instructions (e.g., to cause the MRAM PUF magnetic field circuit to specify a field orientation for a challenge).
The challenge device 1602 may be adapted to perform one or more of the steps or functions illustrated in
In one example, the storage device 1706 may include a Magnetoresistive Random-Access Memory (MRAM)-based PUF circuit 1712 comprising a plurality of Magnetic Tunnel Junctions (MTJs)-based memory cells 1714. The PUF circuit 1712 and/or memory cells 1714 may be configured to operate as described in
In various examples, the memory cells 1714 may each include two or more MTJs. Each MTJ may either be an in-plane MTJ or perpendicular MTJ. As illustrated in
The processing circuit 1704 may include a device identifier circuit/module 1722 adapted to obtain a unique device identifier 1716 from the electronic device. The obtained device identifier 1716 may be sent to the challenge device in order to obtain a corresponding challenge. Subsequently, a challenge may be received by the electronic device 1702. The challenge may be one or both of a list of memory cell addresses to be read (i.e., have their resistances ascertained) and/or a voltage applied to some or all of the memory cells 1714 of the MRAM based PUF circuit 1712. Additionally, all of the challenge device 1602 illustrated in
The response circuit/module 1724 may use the challenge to query a PUF, such as MRAM-based PUF circuit 1712 and obtain one or more responses. The one or more responses from the PUF circuit 1712 may then be sent to the challenge device. The electronic device 1702 may be distinct from challenge device, or may be part of challenge device. In one example, a MRAM PUF response map circuit 1734 may use the obtained responses to create a map of the electronic device from which the responses were sent.
The machine-readable medium 1710 may include or store device identifier instructions 1730 (e.g., to cause the processing circuit to obtain a device identifier to send to the challenge device), MRAM PUF response instructions 1732 (e.g., to cause the processing circuit to obtain the various responses from received challenges), and MRAM PUF response map instructions (e.g., to cause the processing circuit to generate at least one map).
The electronic device 1702 may be adapted to perform one or more of the steps or functions illustrated in
Herein described are apparatus and methods of generating a response to a challenge for a physically unclonable function (PUF), wherein the method includes issuing a challenge to an array of magnetoresistive random-access memory (MRAM) cells including magnetic tunnel junctions, the challenge including subjecting at least some of the magnetic tunnel junctions to a voltage, and obtaining a response to the challenge by ascertaining the resistance of the (voltage subjected) magnetic tunnel junctions to generate a map of the array. Each MRAM includes two magnetic tunnel junctions, wherein in some implementations both magnetic tunnel junctions have their resistances ascertained. Moreover, in other implementations, only one of the magnetic tunnel junctions has its resistance ascertained.
One or more of the components, steps, features, and/or functions illustrated in the Figures may be rearranged and/or combined into a single component, step, feature, or function or embodied in several components, steps, or functions. Additional elements, components, steps, and/or functions may also be added without departing from novel features disclosed herein. The apparatus, devices, and/or components illustrated in the Figures may be configured to perform one or more of the methods, features, or steps described in the Figures. The novel algorithms described herein may also be efficiently implemented in software and/or embedded in hardware.
In addition, it is noted that the embodiments may be described as a process that is depicted as a flowchart, a flow diagram, a structure diagram, or a block diagram. Although a flowchart may describe the operations as a sequential process, many of the operations can be performed in parallel or concurrently. In addition, the order of the operations may be re-arranged. A process is terminated when its operations are completed. A process may correspond to a method, a function, a procedure, a subroutine, a subprogram, etc. When a process corresponds to a function, its termination corresponds to a return of the function to the calling function or the main function.
Moreover, a storage medium may represent one or more devices for storing data, including read-only memory (ROM), random access memory (RAM), magnetic disk storage mediums, optical storage mediums, flash memory devices, and/or other machine-readable mediums for storing information. The term “machine readable medium” includes, but is not limited to portable or fixed storage devices, optical storage devices, wireless channels and various other mediums capable of storing, containing, or carrying instruction(s) and/or data.
Furthermore, embodiments may be implemented by hardware, software, firmware, middleware, microcode, or any combination thereof. When implemented in software, firmware, middleware, or microcode, the program code or code segments to perform the necessary tasks may be stored in a machine-readable medium such as a storage medium or other storage(s). A processor may perform the necessary tasks. A code segment may represent a procedure, a function, a subprogram, a program, a routine, a subroutine, a module, a software package, a class, or any combination of instructions, data structures, or program statements. A code segment may be coupled to another code segment or a hardware circuit by passing and/or receiving information, data, arguments, parameters, or memory contents. Information, arguments, parameters, data, etc. may be passed, forwarded, or transmitted via any suitable means including memory sharing, message passing, token passing, network transmission, etc.
The various illustrative logical blocks, modules, circuits, elements, and/or components described in connection with the examples disclosed herein may be implemented or performed with a general purpose processor, a digital signal processor (DSP), an application specific integrated circuit (ASIC), a field programmable gate array (FPGA) or other programmable logic component, discrete gate or transistor logic, discrete hardware components, or any combination thereof designed to perform the functions described herein. A general-purpose processor may be a microprocessor, but in the alternative, the processor may be any conventional processor, controller, microcontroller, or state machine. A processor may also be implemented as a combination of computing components, e.g., a combination of a DSP and a microprocessor, a number of microprocessors, one or more microprocessors in conjunction with a DSP core, or any other such configuration.
The methods or algorithms described in connection with the examples disclosed herein may be embodied directly in hardware, in a software module executable by a processor, or in a combination of both, in the form of processing unit, programming instructions, or other directions, and may be contained in a single device or distributed across multiple devices. A software module may reside in RAM memory, flash memory, ROM memory, EPROM memory, EEPROM memory, registers, hard disk, a removable disk, a CD-ROM, or any other form of storage medium known in the art. A storage medium may be coupled to the processor such that the processor can read information from, and write information to, the storage medium. In the alternative, the storage medium may be integral to the processor.
Those of skill in the art would further appreciate that the various illustrative logical blocks, modules, circuits, and algorithm steps described in connection with the embodiments disclosed herein may be implemented as electronic hardware, computer software, or combinations of both. To clearly illustrate this interchangeability of hardware and software, various illustrative components, blocks, modules, circuits, and steps have been described above generally in terms of their functionality. Whether such functionality is implemented as hardware or software depends upon the particular application and design constraints imposed on the overall system.
The various features of the invention described herein can be implemented in different systems without departing from the invention. It should be noted that the foregoing embodiments are merely examples and are not to be construed as limiting the invention. The description of the embodiments is intended to be illustrative, and not to limit the scope of the claims. As such, the present teachings can be readily applied to other types of apparatuses and many alternatives, modifications, and variations will be apparent to those skilled in the art.
The present application for patent claims priority to U.S. Provisional Patent Application No. 61/875,652 entitled “PHYSICALLY UNCLONABLE FUNCTION BASED ON RESISTIVITY OF MAGNETORESISTIVE RANDOM-ACCESS MEMORY MAGNETIC TUNNEL JUNCTIONS” filed Sep. 9, 2013, the entire disclosure of which is hereby expressly incorporated by reference herein.
Number | Date | Country | |
---|---|---|---|
61875652 | Sep 2013 | US |