Aspects of the present disclosure relate to systems and techniques for enhancing security for cryptographic components. For example, according to some aspects, the systems and techniques can provide microarchitectures for secure computing systems.
Computing devices often employ various techniques to protect data. As an example, data may be subjected to encryption and decryption techniques in a variety of scenarios, such as writing data to a storage device, reading data from a storage device, writing data to or reading data from a memory device, encrypting and decrypting blocks and/or volumes of data, encrypting and decrypting digital content, performing inline cryptographic operations, etc. Such encryption and decryption operations are often performed, at least in part, using a security information asset, such as a cryptographic key, a derived cryptographic key, etc. Certain scenarios exist in which attacks are performed in an attempt to obtain such security information assets. Accordingly, it is often advantageous to implement systems and techniques to protect such security information assets.
The following presents a simplified summary relating to one or more aspects disclosed herein. Thus, the following summary should not be considered an extensive overview relating to all contemplated aspects, nor should the following summary be considered to identify key or critical elements relating to all contemplated aspects or to delineate the scope associated with any particular aspect. Accordingly, the following summary presents certain concepts relating to one or more aspects relating to the mechanisms disclosed herein in a simplified form to precede the detailed description presented below.
Disclosed are systems, methods, apparatuses, and computer-readable media for securely performing cryptographic operations.
According to at least one example, a method is provided for securely performing cryptographic operations. The method includes: obtaining a public data and a security information asset; performing, by a first computation module, a Boolean operation on the public data and the security information asset to generate an output; obtaining the public data and the security information asset; and performing, by a second computation module, the Boolean operation on the public data and the security information asset to generate the output, wherein the first computation module has a first configuration and the second computation module has a second configuration, different from the first configuration.
In another example, an apparatus for securely performing cryptographic operations is provided that includes at least one memory and one or more processors coupled to the at least one memory. The one or more processors are configured to: obtain a public data and a security information asset; perform, by a first computation module, a Boolean operation on the public data and the security information asset to generate an output; obtain the public data and the security information asset; and perform, by a second computation module, the Boolean operation on the public data and the security information asset to generate the output, wherein the first computation module has a first configuration and the second computation module has a second configuration, different from the first configuration.
In another example, a non-transitory computer-readable medium is provided that has stored thereon instructions that, when executed by one or more processors, cause the one or more processors to: obtain a public data and a security information asset; perform, by a first computation module, a Boolean operation on the public data and the security information asset to generate an output; obtain the public data and the security information asset; and perform, by a second computation module, the Boolean operation on the public data and the security information asset to generate the output, wherein the first computation module has a first configuration and the second computation module has a second configuration, different from the first configuration.
In another example, an apparatus for performing cryptographic operations is provided. The apparatus includes: means for obtaining a public data and a security information asset; first means for performing a Boolean operation on the public data and the security information asset to generate an output; means for obtaining the public data and the security information asset; and second means for performing the Boolean operation on the public data and the security information asset to generate the output, wherein the first means for performing the Boolean operation on the public data and the security information asset to generate the output has a first configuration and the second means for performing the Boolean operation on the public data and the security information asset to generate the output has a second configuration, different from the first configuration.
In some aspects, one or more of the apparatuses described herein is, is a part of, or includes a mobile device (e.g., a mobile telephone or so-called “smart phone”, a tablet computer, or other type of mobile device), a wearable device, an extended reality device (e.g., a virtual reality (VR) device, an augmented reality (AR) device, or a mixed reality (MR) device), a personal computer, a laptop computer, a video server, a television (e.g., a network-connected television), a vehicle (or a computing device or system of a vehicle), or other device. In some aspects, the apparatus includes at least one camera for capturing one or more images or video frames. For example, the apparatus can include a camera (e.g., an RGB camera) or multiple cameras for capturing one or more images and/or one or more videos including video frames. In some aspects, the apparatus includes a display for displaying one or more images, videos, notifications, or other displayable data. In some aspects, the apparatus includes a transmitter configured to transmit one or more video frame and/or syntax data over a transmission medium to at least one device. In some aspects, the processor includes a neural processing unit (NPU), a central processing unit (CPU), a graphics processing unit (GPU), or other processing device or component.
The foregoing has outlined rather broadly the features and technical advantages of examples according to the disclosure in order that the detailed description that follows may be better understood. Additional features and advantages will be described hereinafter. The conception and specific examples disclosed may be readily utilized as a basis for modifying or designing other structures for carrying out the same purposes of the present disclosure. Such equivalent constructions do not depart from the scope of the appended claims. Characteristics of the concepts disclosed herein, both their organization and method of operation, together with associated advantages, will be better understood from the following description when considered in connection with the accompanying figures. Each of the figures is provided for the purposes of illustration and description, and not as a definition of the limits of the claims.
While aspects are described in the present disclosure by illustration to some examples, those skilled in the art will understand that such aspects may be implemented in many different arrangements and scenarios. Techniques described herein may be implemented using different platform types, devices, systems, shapes, sizes, and/or packaging arrangements. For example, some aspects may be implemented via integrated chip embodiments or other non-module-component based devices (e.g., end-user devices, vehicles, communication devices, computing devices, industrial equipment, retail/purchasing devices, medical devices, and/or artificial intelligence devices). Aspects may be implemented in chip-level components, modular components, non-modular components, non-chip-level components, device-level components, and/or system-level components. Devices incorporating described aspects and features may include additional components and features for implementation and practice of claimed and described aspects. For example, transmission and reception of wireless signals may include one or more components for analog and digital purposes (e.g., hardware components including antennas, radio frequency (RF) chains, power amplifiers, modulators, buffers, processors, interleavers, adders, and/or summers). It is intended that aspects described herein may be practiced in a wide variety of devices, components, systems, distributed arrangements, and/or end-user devices of varying size, shape, and constitution.
Other objects and advantages associated with the aspects disclosed herein will be apparent to those skilled in the art based on the accompanying drawings and detailed description.
Examples of various implementations are described in detail below with reference to the following figures:
Certain aspects and embodiments of this disclosure are provided below. Some of these aspects and embodiments may be applied independently and some of them may be applied in combination as would be apparent to those of skill in the art. In the following description, for the purposes of explanation, specific details are set forth in order to provide a thorough understanding of embodiments of the application. However, it will be apparent that various embodiments may be practiced without these specific details. The figures and description are not intended to be restrictive.
The ensuing description provides example embodiments only, and is not intended to limit the scope, applicability, or configuration of the disclosure. Rather, the ensuing description of the exemplary embodiments will provide those skilled in the art with an enabling description for implementing an exemplary embodiment. It should be understood that various changes may be made in the function and arrangement of elements without departing from the spirit and scope of the application as set forth in the appended claims.
Cryptographic ciphers can be used for encrypting, decrypting, and/or ensuring authenticity of electronic data. A symmetric cryptographic cipher uses the same key (e.g., referred to as a secret key or a private key) for encryption and decryption. An asymmetric cryptographic cipher uses a private key and a public key shared between parties. A “private key” and a “public key” refer to asymmetric encryption keys, where the private key is known only to a first device (e.g., a peripheral device) and the public key is known to the first device and a second device (e.g., a host device), and to potentially other devices. The second device uses the public key to encrypt data. The first device decrypts the data with the private key. Asymmetric cryptographic ciphers can also be referred to as public-key cryptography (PKC). Examples of symmetric cryptographic ciphers include Advanced Encryption Standard (AES), Data Encryption Standard (DES), Blowfish, Ascon, Keccak, and International Data Encryption Algorithm (IDEA), among various others. In some examples, symmetric ciphers such as AES can be used to implement fast and efficient encryption and decryption. However, because the same key is used for encryption and decryption, the private keys of a symmetric cipher must be distributed to the parties in a way that safeguards the secrecy of the private keys. For example, PKC or asymmetric cipher techniques are often used to perform key distribution for symmetric ciphers (e.g., Diffie-Hellman).
As an example, a security information asset may be a cryptographic key, a sub-key, a secondary key, a derived key, and/or any other security information asset used for encrypting and/or decrypting data and/or ensuring authenticity of data used by a computing device. Such a security information asset may be stored in secure information storage. In one illustrative example, security information assets can include private keys (also referred to herein as secret keys) of a symmetric cryptographic cypher and/or private keys of an asymmetric cryptographic cypher. In some cases, the secure information storage can include a security information asset storage device (e.g., one time programmable (OTP) storage, non-volatile memory device, flash storage device, etc.). Security information assets may be obtained from the security information asset storage device during execution of a computing device (e.g., at boot, reboot and/or during updates), stored in a separate storage device, and provided as needed to security components (e.g., cryptographic engines, key tables, key derivation functions, etc.) for performing security operations (e.g., encryption and/or decryption of data). Security information assets so obtained may be directly used by any number of security components and/or may be used for deriving additional security information assets (e.g., derived keys used by cryptographic engines for encrypting and/or decrypting data), which is an example of a security operation. In some cases, security operations can include other steps or transformations using security information assets without departing from the scope of the present disclosure.
In some cases, a computing system can include multiple identical bi-linear cryptographic components that have an identical trace structure (e.g., as shown in schematic 450 of
The simplified block diagram 100 illustrates a duplication/masking/refresh module 104 communicatively coupled to security information asset storage device 102. In some cases, the duplication/masking/refresh module 104 can perform duplication of security information assets. For example, the duplication/masking/refresh module 104 can duplicate a variable (e.g., create copies) to be reused at different logic gates. In some cases, the duplicated variable can be used at multiple different times. In some cases, reuse of the duplicated variable can result in repeating patterns 315 as illustrated in
In some cases, the duplication/masking/refresh module 104 can mask the security information assets obtained from the security information asset storage device 102. As used herein, “masking” refers to a process of obfuscating the content of a data item. Any suitable form of data masking may be used without departing from the scope of examples described herein. In some examples, masking of data refers to altering the data represented in binary form such that if read by any entity not configured to understand the mask applied, the data does not represent the original data (e.g., the security information asset), but that an entity (e.g., a cryptographic engine) configured to be aware of the masking is capable of unmasking, and subsequently using, the original data (e.g., a cryptographic key). Examples of data masking procedures include, but are not limited to, techniques such as substitution, data shuffling, addition of data to the original data, using various parameters (e.g., date, time, etc.) to alter data, splitting and randomizing transmission order of data, splitting the data into separate portions and adding additional data to each (e.g., random numbers), a combination of all or any portion of the aforementioned techniques, etc.
In some examples, the duplication/masking/refresh module 104 can transform and/or recode a security information asset into a different form (e.g., a different data value) that represents the same security information asset. As used herein, “refreshing” refers to ensuring that the form of a security information asset does not remain static. For example, without limitation, a security information asset can be refreshed based on an interval of elapsed time that the information security asset exists in a particular form (e.g., a periodic interval, a pseudo-random interval), based on a number of uses of the security information asset in a particular form, based on storing the security information asset in a new location, on boot, on re-boot, during an update, and/or any combination thereof. In some cases, systematically refreshing the security information asset can help protect the security information asset against discovery by a side channel attack. In some cases, refreshing a security information asset can include changing the values of the security information asset in a way that changes the stored value of the security information asset in the security information asset storage device 102 while still maintaining the security function of the security information asset.
In one illustrative example, a secret key H may be represented by two random values H1 and H2 also referred to as “shares” of the secret key H. In some cases, H can be represented as a combination of the shares H1 and H2 according to Equation (1) below:
Where XOR is a bit-wise exclusive OR operation. In some cases, it is preferable to avoid actually performing the calculation shown in Equation (1), which could reveal H in unmasked form.
In some cases, one or more of the shares H1 and H2 can be masked in a way that changes the value of each individual share while keeping the result of Equation (1) the same. For example, For example, the duplication/masking/refresh module 104 can mask the share H1 according to Equation (2a) below:
Where H1,m is a masked form of H1 and R1 is a random value. Similarly, the duplication/masking/refresh module 104 can mask the share H2 according to Equation (2b) below:
Where H2,m is a masked form of H2 and R2 is a random value. Many different implementations are possible for generating the masked shares H1,m and H2,m as long as the masked shares satisfy Equation (3) below:
It should be understood that the masking operations illustrated in Equation (2a) and Equation (2b) are for the purposes of illustration, and other masking operations can be used without departing from the scope of the present disclosure.
In some cases, one or more of the masked shares H1,m and H2,m can be refreshed to prevent the masked shares H1,m and H2,m from remaining static. For example, the duplication/masking/refresh module 104 can replace the shares H1,m and H2,m with refreshed masked shares H1,r and H2,r in the security information asset storage device 102. Many different implementations are possible for generating the refreshed shares H1,r and H2,r as long as the refreshed shares satisfy Equation (4) below:
Returning to
In some aspects, as discussed above, security components of a computing device may require a security information asset (e.g., a secret key) to perform one or more security operations (e.g., encrypting and/or decrypting data, generating derivative cryptographic keys, any other steps and or transformations performed using a security information asset, etc.).
However, repeated reuse of security information assets may allow an attacker to use various techniques to obtain all or any portion of a security information asset, which may potentially compromise the security of a computing device. As an example, an attacker may perform a side channel attack by using a measurement device (e.g., an oscilloscope) to measure any number of characteristics of a computing device as it operates (e.g., voltages, power, electromagnetic outputs, timing information, sound, temperature, etc.). As another example, an attacker may employ fault injection techniques. In some cases, an attacker can utilize a machine learning (ML) model (e.g., a deep learning neural network) to aid in a side channel attack.
Such attacks may be of limited use when performed once, or a relatively few number of times, but may have increased effectiveness when performed a larger number of times. As such, security information assets become more vulnerable while being reused when such techniques are being used. As an example, measuring one or more characteristics of the operation of a computing device when operations transferring security information assets are performed, or when performing operations using security information assets, etc. (collectively referred to herein as security operations) may allow an attacker to obtain all or any portion of a security information asset, thereby potentially compromising the security of the computing device.
In some cases, an attacker using a side channel attack or a fault injection attack repetitively as a cryptographic key is being transmitted and/or received (e.g., when obtained from a security information asset storage device at boot time, when obtained from a different storage device, when provided to security components for use in performing security operations, etc.), used to derive other cryptographic keys, etc. may be able to deduce the cryptographic key, and thus be able to use the key to decrypt data on the computing device and/or encrypt potentially malicious data using the correct key, which may then be used by the computing device. In some cases, the derivation of cryptographic keys can include bi-linear operations. For example, derivation of a cryptographic key can include a multiplication of a public key and a private key to generate a derived key.
In some cases, if an attacker can determine the timing of operations transferring security operations, a measurement device can capture characteristics of the computing device at a high resolution on the time scale. In some cases, the amount of data that can be captured by an attacker can be limited by an amount of storage available in a measurement device. In one illustrative example, an oscilloscope may include a measurement buffer (e.g., memory) that can store at most one million measurements. In some cases, if an attacker can determine the timing of a 100 millisecond (ms) security operation within one ms, the measurement time scale can be approximately 100 nanosecond (ns). However, if the timing of the 100 ms operation is unknown to the attacker, the measurement time scale (e.g., 1 microsecond, 10 microseconds, and/or any other suitable timescale) can be significantly longer than the measurement timescale when timing information is known. In some cases, the data transfer, data storage, and/or data processing requirement for longer measurement timescales can be significantly more expensive to store and process on an attacker's device (e.g., a high-order differential power analysis, a deep learning ML attack, or the like) to extract useful information relative to an attack where timing information is known.
While an AES encryption option is provided as an example, other security operations, including but not limited to number theoretic transform (NTT) computations, matrix vector multiplication (A*y), r and r.G multiplication (e.g., elliptic curve point multiplication) events (e.g., for an elliptic curve digital signature algorithm (ECDSA)), security hash algorithms, (e.g., SHA-256, SHA-3), McEliece cryptography, bit flipping key encapsulation (BIKE), Hamming quasi-cycling (HQC) encryption, hash-based message authentication code (e.g., HMAC-512), RNG seeding, and/or any combination thereof may also reveal information to an attacker through a side channel attack.
Many techniques have been developed to reduce the vulnerability of security operations. For example, some techniques can include hiding security operations, imposing variable timing, performing specialized operations, adding redundant operations, or the like. In some cases, one or more techniques can be implemented in software executed by a computing system. However, as noted above, in some cases, security operations may remain identifiable due to reuse of variables, self-similarity of operations performed at different times, and/or lack of diffusion of cryptographic operations.
For example,
In the illustrated example of
In some cases, a computing system can include multiple identical bi-linear cryptographic components that have an identical trace structure to the schematic 450. In some cases, an attacker can utilize the self-similarity of different bi-linear cryptographic components with masked data to gain information about unmasked secret security information assets in a side-channel attack through real-time interaction due to simultaneity and/or various forms of coupling. As used herein, “self-similarity” refers to the similarity of identical operations performed by different bi-linear cryptographic modules. In some cases, self-similarity of identical operations performed by different bi-linear cryptographic models can be indicative of identical trace structure. In some cases, the traces used in bi-linear cryptographic components can be grouped in a small silicon perimeter. In some cases, self-similarity, lack of diffusion, and/or any combination thereof can be exploited to gain information about security information assets in a side-channel attack.
In view of the foregoing, systems and techniques are needed for enhancing the security of cryptographic components (e.g., linear and/or bi-linear components).
Systems, apparatuses, electronic devices, methods (also referred to as processes), and computer-readable media (collectively referred to herein as “systems and techniques”) are described herein for enhancing security in cryptographic components. In some examples, a microarchitecture for secure computing systems (e.g., within a secure execution environment) can be designed with microarchitectural protections that can avoid repeated deterministic usage of sensitive security information assets automatically at the processor level. In some cases, the systems and techniques described herein can be implemented automatically at runtime and at the processor level. For examples, in some implementations, the systems and techniques can be implemented with a rotation between several different multiplier units and/or microcode versions.
Various aspects of the systems and techniques described herein will be discussed below with respect to the figures. According to various examples,
As illustrated in
As shown, the computing device 500 may include one or more wireless communication modules 506 that may be connected to one or more antennas 502. The one or more wireless communication modules 506 comprise suitable devices, circuits, hardware, and/or software for communicating with and/or detecting signals to/from an access point, a network, a base station, and/or directly with other wireless devices within a network.
In some implementations, the one or more wireless communication modules 506 may comprise a communication system (e.g., a CDMA system) suitable for communicating with a network (e.g., a CDMA network) of wireless base stations. In some implementations, the wireless communication system may comprise other types of cellular telephony networks, such as, for example, TDMA, GSM, WCDMA, 4G/Long-Term Evolution (LTE), 5G/New Radio (NR), and the like. Additionally, any other type of wireless networking technologies may be used, including, for example, WiMax (802.16), Wi-Fi (802.11), and the like.
The processor(s) (also referred to as a controller) 510 may be connected to the one or more wireless communication modules 506. The processor 510 may include one or more microprocessors, microcontrollers, and/or digital signal processors that provide processing functions, as well as other calculation and control functionality. The processor 510 may be coupled to storage media (e.g., memory) 514 for storing data and software instructions for executing programmed functionality within the mobile device. The memory 514 may be on-board the processor 510 (e.g., within the same IC package), and/or the memory may be external memory to the processor and functionally coupled over a data bus.
A number of software engines and data tables may reside in memory 514 and may be utilized by the processor 510 in order to manage communications, perform positioning determination functionality, and/or perform device control functionality. In some cases, the memory 514 may include an application module 518. It is to be noted that the functionality of the modules and/or data structures may be combined, separated, and/or be structured in different ways depending upon the implementation of the computing device 500.
The application module 518 may include a process running on the processor 510 of the computing device 500, which may request data from one of the other modules of the computing device 500. Applications typically run within an upper layer of the software architectures and may be implemented in a rich execution environment of the computing device 500, and may include indoor navigation applications, shopping applications, financial services applications, social media applications, location aware service applications, etc.
In some examples, the computing device 500 includes the secure information storage 570. In some examples, the secure information storage 570 can be any storage device configured to store security information assets (e.g., cryptographic keys, metadata, etc.). For instance, the secure information storage 570 is where security information assets are stored and initially obtained from when needed for use on a computing device (e.g., for encryption and/or decryption of data). In some cases, the secure information storage 570 can include a key store or a key table. Examples of secure information storage 570 include, but are not limited to, various types of read-only memory, one-time programmable memory devices (e.g., one time programmable fuses or other types of one time programmable memory devices), non-volatile memory, etc. The secure information storage 570 may be operatively connected to the trusted execution environment 580 and/or the secure components 590. Although
The processor 510 may include a trusted execution environment 580. The trusted execution environment 580 may also be referred to as a trusted management environment, trust zones, trusted platform modules, or the like. The trusted execution environment 580 can be implemented as a secure area of the processor 510 that can be used to process and store sensitive data in an environment that is segregated from the rich execution environment in which the operating system and/or applications (such as those of the application module 518) may be executed. The trusted execution environment 580 can be configured to execute secure applications (also referred to as trusted applications) that provide end-to-end security for sensitive data by enforcing confidentiality, integrity, and protection of the sensitive data stored therein. The trusted execution environment 580 can be used to store encryption keys, access tokens, and other sensitive data.
The computing device 500 may include one or more secure components 590 (e.g., computation modules 208 of
Examples of secure applications that may be performed by the computing device 500, processor 510, secure information storage 570, trusted execution environment 580, secure components 590, and/or any combination thereof include, but are not limited to, encrypting data, decrypting data, key derivation, performing data integrity verification, and performing authenticated encryption and decryption. In some examples, the computing device 500 and/or portions thereof can be configured to perform the various cryptographic service types by being configured to execute one or more cryptographic algorithms. As an example, to perform encryption and decryption, one or more components (e.g., secure information storage 570, trusted execution environment 580, secure components 590) of the computing device 500 may be configured to execute one or more of the Advanced Encryption Standard XOR-encrypt-XOR Tweakable Block Ciphertext Stealing (AES-XTS) algorithm, the AES-Cipher Block Chaining (AES-CBC) algorithm, the AES-Electronic Codebook (AES-EBC) algorithm, the Encrypted Salt-Sector Initialization Vector-AES-CBC (ESSIV-AES-CBC) algorithm, etc., including any variants of such algorithms (e.g., 128 bits, 192 bits, 256 bits, etc.). As another example, to perform integrity verification, one or more components of the computing device 500 may be configured to execute a hash algorithm such as, for example, the one or more members of the SHA family of hash algorithms. As another example, to perform authenticated encryption, one or more components of the computing device 500 may be configured to perform the AES-Galois/Counter Mode (GCM) algorithm. In some aspects, one or more components of the computing device 500 may be configured to execute any other cryptographic algorithms without departing from the scope of examples described herein.
The computing device 500 may further include a user interface 550 providing suitable interface systems, such as a microphone/speaker 552, a keypad 554, and/or a display 556 that allows user interaction with the computing device 500. The microphone/speaker 552 can provide for voice communication services (e.g., using the one or more wireless communication modules 506). The keypad 554 may comprise suitable buttons for user input. The display 556 may include a suitable display, such as, for example, a backlit LCD display, and may further include a touch screen display for additional user input modes.
While
As shown in
As illustrated in
In the illustrated example, the computation module 608B includes three logic gates 618, 620, 622. In some cases, the logic gates 618, 620 can perform operations on the inputs A, H in a first computation stage and generate intermediate values that are passed to the logic gate 622. As illustrated, the logic gate 622 can perform an operation on the intermediate values to generate the result. In some aspects, when performing the A*H computation, the computation module 608B can exhibit a second power signature, and a second timing between receiving the inputs Ai, H and producing the result. In some cases, the second power signature and/or second timing can be different from the first power signature and/or the first timing. For example, the two-stage operation of computation module 608B may increase the delay between receiving the inputs Ai, H and generating the result relative to the computation module 608A.
As shown in
In some cases, although not shown in
It should be understood that the computation modules 608A, 608B, 608C of
In some case, the architecture 700 can be used to obscure the secret shares H1, H2, and H3 to prevent the secret shares H1, H2, and H3 from being revealed in a side channel attack. However, even in the example of
In the example of
As illustrated, the outputs of the computation modules 702, 704, 706 can be combined by an adder 712 (e.g., a bit-wise XOR) to generate a variable Z2. Similarly, the outputs of computation modules 708 can be combined by an adder 714 to generate a variable Z1 and the outputs of computation modules 710 can be combined by an adder 716 to generate a variable Z3.
As shown in
In some cases, the duplication/masking module 816 can obtain a random and/or pseudo-random number from the randomization module 810 that can be used to perform duplication and/or masking of the public variable A. For the purposes of illustration, the variable A can be represented as a i-bit wide vector Ai, where i is an integer. In some cases, the duplication/masking module 816 can output individual bits of a masked version of the vector Ai to the computation module 806.
In some cases, if the structure of different computation modules that perform the same computation as the computation module 806 are identical in structure to the computation module 806, an attacker may be able to decipher information about the secret key H based on the reuse of variables, self-similarity of operations, lack of diffusion, and/or any combination thereof.
As illustrated, the duplication/masking/refresh module 814 can obtain a secret key H from security information asset storage 812. In some cases, the duplication/masking/refresh module 814 can be similar to and perform similar functions as the duplication/masking/refresh module 104 of
As illustrated, the 806 includes a plurality of single-bit multiplication elements 818 that can multiply a single bit of the i-bit wide vector Ai by a corresponding bit of the j-bit wide vector, Hj. In some cases, each single-bit multiplication element of the plurality of single-bit multiplication elements 818 can output a product to a chain of XOR gates 820. As illustrated, the structure of the plurality of single-bit multiplication elements 818 and XOR gates 820 can be highly structured. For example, the plurality of single-bit multiplication elements 818 and the XOR gates 820 can be arranged in a repeating pattern with a uniform spacing between elements and/or routing traces. In some implementations, adjacent multiplication elements and adjacent XOR gates can be assigned to the bits of the j-bit wide vector, Hj and the bits of the i-bit wide vector Ai in a pre-determined order. For example, as illustrated, the left-most multiplication element of the plurality of single-bit multiplication elements 818 can operate on bits H0, A0, the next adjacent multiplication element of the plurality of single-bit multiplication elements 818 can operate on bits H1, A1, and so-on.
In some implementations, the duplication/masking/randomization module 858 can perform the duplication/masking functions of duplication/masking module 816 of
As illustrated, the alternative computation module 856 can include a plurality of single-bit multiplication elements 818, as well as additional single-bit multiplication elements 819, 860. In the illustrated example, the additional single-bit multiplication elements 860 may use dummy bits Dk, where k is an integer, generated by duplication/masking/randomization module 858 in the place of bits from the public variable A and secret key H. In one illustrative example, the left-most additional single-bit multiplication element 860 in the alternative computation module 856 can generate a dummy product. In some examples, the dummy product can be generated by multiplication of two dummy bits of D0*D1. In some implementations, the dummy product can be generated by multiplication of a dummy bit D0 and a bit of the public variable A3. In some aspects, the dummy product can be generated by multiplication of a dummy bit Do and a variable derived from the public variable A and/or any other public variables available to the alternative computation module 856. As used herein, the outputs of additional single-bit multiplication elements 860 based on dummy bit inputs can be referred to as dummy products. In some aspects, the additional single-bit multiplication elements 860 In the illustrated example, products generated by additional single-bit multiplication elements 819 may use actual bits of the public variable A as input bits. As illustrated, in some cases, the dummy products can be combined with the products generated by additional single-bit multiplication elements 819 by XOR gates 862. In some cases, the outputs of the XOR gates 862 can in turn be provided to one of the XOR gates 820 for combination with the outputs of the plurality of single-bit multiplication elements 818. As illustrated, in some cases, by incorporating an even number of dummy products, the resulting output of the long XOR operation performed by the XOR gates 820 can be unchanged. However, the use of dummy products within the alternative computation module 856 can result in variations in power signature and/or timing of operations of the alternative computation module 856 relative to the computation module 806 of
In some cases, the alternative computation module 856 can incorporate structural diversification as described with respect to
In some examples, the order of inputs and/or outputs of adjacent multiplication elements 818, additional single-bit multiplication elements 819, and/or additional single-bit multiplication elements 860 can be randomized. In one illustrative example, each of the wires from the duplication/masking/refresh module 814 and duplication/masking/randomization module 858 input to the alternative computation module 856 can be defined as input wires. In the illustrative example, the output of multiplication elements 818, 819, and/or 860 can be defined as product wires. In some implementations, the randomly generated order (e.g., based on a PRNG seed) can be used to impose a pre-determined and strict fixed order for the input wires and/or the product wires. As illustrated in
In some examples, (not shown), every sum of products (or a selected subset of the sums of products such as aihj+akhl) in a sequence of pairs of products can optionally be recoded with a dedicated shared random rjl as shown in Equation (3) below:
a
i
h
j
+a
k
h
l=(ai+ak)rjl+ai(hj+rjl)+ak(hl+rjl) (3)
In some cases, by implementing the recoding as shown in Equation (3), the number of district products that are not transformed can be reduced. As illustrated by Equation (3), the addition of the operations including the dedicated shared random rjl do not alter the outcome of the sum of products on the left-hand side of the equation aihj+akhl. In one illustrative example, 100 sums of products that would be produced without the transformation of Equation (3) could be reduced to approximately five distinct products a*hj that are not transformed. In some cases, the value of the dedicated shared random rjl can be generated by the duplication/masking/randomization module 858. In some aspects, incorporating the computations of Equation (3) can result in variations in power signature and/or timing of operations of the alternative computation module 856 relative to the computation module 806 of
As noted above, the computing device 500 and related techniques described herein can allow a system to provide enhanced security for cryptographic components (e.g., cryptographic components 106 of
In some cases, the systems and techniques can include diversification based on providing dummy variables within the logic of a computation module that change the power signature and/or timing without affecting the generated output. For example, if a computation module performs a linear multiplication of a public key and a private key, a dummy product generating by multiplying by a dummy variable d in two different places within the computation module can change the power signature and/or timing of the operation performed by a computation module.
In some cases, the systems and techniques can include diversification based on locally derived random masks. In some cases, the use of locally derived random masks can significantly reduce the number of times a particular product of a public variable and a secret key is left untransformed (e.g., reducing reuse of variables).
In some cases, the systems and techniques can include diversification based on the inclusion of an even number of dummy products. In some cases, the systems and techniques can recode every sum of products in a sequence of pairs of products with a dedicated shared random.
At block 902, the computing device (or component thereof) can obtain, by a first computation module (e.g., cryptographic components 106 of
At block 904, the computing device (or component thereof) can perform a Boolean operation (e.g., XOR, single bit multiplication), on the public input and the security information asset to generate an output. In some examples, the Boolean operation includes combining a plurality of public bits of the public data with a plurality of bits of the security information asset in a bi-linear computation.
At block 906, the computing device (or component thereof) can obtain, by a Second computation module, the public input and the security information asset input.
At block 908, the computing device (or component thereof) can perform the Boolean operation on the public input and the security information asset to generate the output. In some aspects, the first computation module has a first configuration and the second computation module has a second configuration, different from the first configuration
In some examples, the first configuration includes a first internal structure of the first computation module. In some cases, the second configuration includes a second internal structure of the second computation module. In some cases, the first computation module includes a first plurality of logic gates (e.g., single-bit multiplication elements 818, XOR gates 820 of
In some implementations, the first computation module implements the Boolean operation with a first plurality of logic gates in a first configuration and the second computation module implementations the Boolean operation with a second plurality of logic gates in a second configuration, different from the first configuration.
In some examples, the public data and the security information asset obtained by the first computation module and the second computation module are masked (e.g., by refresh module 104 of
In some cases, the second computation module is configured to generate an even number of dummy products during performance of the Boolean operation that are canceled out in the output generated by the second computation module.
In some aspects, the first computation module is configured to generate a plurality of products between bits of the public data and bits of the security information asset and generate a plurality of sums of products between pairs of products included in the plurality of products. In some cases, the plurality of sums of products can be recoded with a dedicated shared random variable.
In some implementations, the first computation module includes a plurality of computation elements configured to generate the output based on a pre-determined order of operations. In some examples, the pre-determined order of operations includes one or more of an order of calculating a plurality of products of bits of the public data with bits of the security information asset or an order of adding the plurality of products. In some cases, a pseudo random seed is expanded into a list that specifies the pre-determined order of operations. In some implementations, the plurality of computation elements includes single-bit multiplication elements. In some aspects, the single-bit multiplication elements comprise one or more of NAND gates or AND gates.
In some examples, the processes described herein (e.g., process 900 and/or any other process described herein) may be performed by a computing device or apparatus (e.g., a computing device 500 of
In some embodiments, computing system 1000 is a distributed system in which the functions described in this disclosure may be distributed within a datacenter, multiple data centers, a peer network, etc. In some embodiments, one or more of the described system components represents many such components each performing some or all of the function for which the component is described. In some embodiments, the components may be physical or virtual devices.
Example computing system 1000 includes at least one processing unit (CPU or processor) 1010 and connection 1005 that communicatively couples various system components including system memory 1015, such as read-only memory (ROM) 1020 and random access memory (RAM) 1025 to processor 1010. Computing system 1000 may include a cache 1012 of high-speed memory connected directly with, in close proximity to, or integrated as part of processor 1010. The example computing system 1000 also includes one or more cryptographical functional blocks 1011 connected to the processor 1010. For example, the one or more cryptographical functional blocks 1011 can include cryptographical blocks for performing, without limitation, NTT computations, matrix vector multiplication (A*y), r and r.G multiplication (e.g., elliptic curve point multiplication) events (e.g., for an elliptic curve digital signature algorithm (ECDSA)), security hash algorithms, (e.g., SHA-256, SHA-3), McEliece cryptography, bit flipping key encapsulation (BIKE), Hamming quasi-cycling (HQC) encryption, hash-based message authentication code (e.g., HMAC-512), RNG seeding. In some cases, multiple cryptographical functional blocks 1011 can be connected to one another directly or indirectly. In some implementations, the one or more cryptographical functional blocks 1011 can include one or more co-processing units.
Processor 1010 may include any general purpose processor and a hardware service or software service, such as services 1032, 1034, and 1036 stored in storage device 1030, configured to control processor 1010 as well as a special-purpose processor (e.g., an arithmetic processor, a cryptographic processor, and/or any combination thereof) where software instructions are incorporated into the actual processor design. Processor 1010 may essentially be a completely self-contained computing system, containing multiple cores or processors, a bus, memory controller, cache, etc. A multi-core processor may include distinct computation units of variable sizes and features. In some cases, a multi-core processor may be symmetric or asymmetric. In some examples, the one or more cryptographical functional blocks 1011 may be symmetric or asymmetric.
To enable user interaction, computing system 1000 includes an input device 1045, which may represent any number of input mechanisms, such as a microphone for speech, a touch-sensitive screen for gesture or graphical input, keyboard, mouse, motion input, speech, etc. Computing system 1000 may also include output device 1035, which may be one or more of a number of output mechanisms. In some instances, multimodal systems may enable a user to provide multiple types of input/output to communicate with computing system 1000.
Computing system 1000 may include communications interface 1040, which may generally govern and manage the user input and system output. The communications interface 1040 may perform or facilitate receipt and/or transmission wired or wireless communications using wired and/or wireless transceivers, including those making use of an audio jack/plug, a microphone jack/plug, a universal serial bus (USB) port/plug, an Apple™ Lightning™ port/plug, an Ethernet port/plug, a fiber optic port/plug, a proprietary wired port/plug, 3G, 4G, 5G and/or other cellular data network wireless signal transfer, a Bluetooth™ wireless signal transfer, a Bluetooth™ low energy (BLE) wireless signal transfer, an IBEACON™ wireless signal transfer, a radio-frequency identification (RFID) wireless signal transfer, near-field communications (NFC) wireless signal transfer, dedicated short range communication (DSRC) wireless signal transfer, 802.11 Wi-Fi wireless signal transfer, wireless local area network (WLAN) signal transfer, Visible Light Communication (VLC), Worldwide Interoperability for Microwave Access (WiMAX), Infrared (IR) communication wireless signal transfer, Public Switched Telephone Network (PSTN) signal transfer, Integrated Services Digital Network (ISDN) signal transfer, ad-hoc network signal transfer, radio wave signal transfer, microwave signal transfer, infrared signal transfer, visible light signal transfer, ultraviolet light signal transfer, wireless signal transfer along the electromagnetic spectrum, or some combination thereof. The communications interface 1040 may also include one or more Global Navigation Satellite System (GNSS) receivers or transceivers that are used to determine a location of the computing system 1000 based on receipt of one or more signals from one or more satellites associated with one or more GNSS systems. GNSS systems include, but are not limited to, the US-based Global Positioning System (GPS), the Russia-based Global Navigation Satellite System (GLONASS), the China-based BeiDou Navigation Satellite System (BDS), and the Europe-based Galileo GNSS. There is no restriction on operating on any particular hardware arrangement, and therefore the basic features here may easily be substituted for improved hardware or firmware arrangements as they are developed.
Storage device 1030 may be a non-volatile and/or non-transitory and/or computer-readable memory device and may be a hard disk or other types of computer readable media which may store data that are accessible by a computer, such as magnetic cassettes, flash memory cards, solid state memory devices, digital versatile disks, cartridges, a floppy disk, a flexible disk, a hard disk, magnetic tape, a magnetic strip/stripe, any other magnetic storage medium, flash memory, memristor memory, any other solid-state memory, a compact disc read only memory (CD-ROM) optical disc, a rewritable compact disc (CD) optical disc, digital video disk (DVD) optical disc, a Blu-ray disc (BDD) optical disc, a holographic optical disk, another optical medium, a secure digital (SD) card, a micro secure digital (microSD) card, a Memory Stick® card, a smartcard chip, a EMV chip, a subscriber identity module (SIM) card, a mini/micro/nano/pico SIM card, another integrated circuit (IC) chip/card, random access memory (RAM), static RAM (SRAM), dynamic RAM (DRAM), read-only memory (ROM), programmable read-only memory (PROM), erasable programmable read-only memory (EPROM), electrically erasable programmable read-only memory (EEPROM), flash EPROM (FLASHEPROM), cache memory (e.g., Level 1 (L1) cache, Level 2 (L2) cache, Level 3 (L3) cache, Level 4 (L4) cache, Level 5 (L5) cache, or other (L#) cache), resistive random-access memory (RRAM/ReRAM), phase change memory (PCM), spin transfer torque RAM (STT-RAM), another memory chip or cartridge, and/or a combination thereof.
The storage device 1030 may include software services, servers, services, etc., that when the code that defines such software is executed by the processor 1010, it causes the system to perform a function. In some embodiments, a hardware service that performs a particular function may include the software component stored in a computer-readable medium in connection with the necessary hardware components, such as processor 1010, connection 1005, output device 1035, etc., to carry out the function. The term “computer-readable medium” includes, but is not limited to, portable or non-portable storage devices, optical storage devices, and various other mediums capable of storing, containing, or carrying instruction(s) and/or data. A computer-readable medium may include a non-transitory medium in which data may be stored and that does not include carrier waves and/or transitory electronic signals propagating wirelessly or over wired connections. Examples of a non-transitory medium may include, but are not limited to, a magnetic disk or tape, optical storage media such as compact disk (CD) or digital versatile disk (DVD), flash memory, nonvolatile memory express (NVMe) memory, Write Once Read Many (WORM) memory, electronic fuse (eFuse) one-time programmable (OTP), memory, I-fuse OTP memory, gate-oxide breakdown anti-fuse memory, Intel Optane memory, memory, or memory devices. A computer-readable medium may have stored thereon code and/or machine-executable instructions that 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, or the like.
Specific details are provided in the description above to provide a thorough understanding of the embodiments and examples provided herein, but those skilled in the art will recognize that the application is not limited thereto. Thus, while illustrative embodiments of the application have been described in detail herein, it is to be understood that the inventive concepts may be otherwise variously embodied and employed, and that the appended claims are intended to be construed to include such variations, except as limited by the prior art. Various features and aspects of the above-described application may be used individually or jointly. Further, embodiments may be utilized in any number of environments and applications beyond those described herein without departing from the broader scope of the specification. The specification and drawings are, accordingly, to be regarded as illustrative rather than restrictive. For the purposes of illustration, methods were described in a particular order. It should be appreciated that in alternate embodiments, the methods may be performed in a different order than that described.
For clarity of explanation, in some instances the present technology may be presented as including individual functional blocks comprising devices, device components, steps or routines in a method embodied in software, or combinations of hardware and software. Additional components may be used other than those shown in the figures and/or described herein. For example, circuits, systems, networks, processes, and other components may be shown as components in block diagram form in order not to obscure the embodiments in unnecessary detail. In other instances, well-known circuits, processes, algorithms, structures, and techniques may be shown without unnecessary detail in order to avoid obscuring the embodiments.
Further, those of skill in the art will appreciate that the various illustrative logical blocks, modules, circuits, and algorithm steps described in connection with the aspects 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. Skilled artisans may implement the described functionality in varying ways for each particular application, but such implementation decisions should not be interpreted as causing a departure from the scope of the present disclosure.
Individual embodiments may be described above as a process or method which is depicted as a flowchart, a flow diagram, a data flow diagram, a structure diagram, or a block diagram. Although a flowchart may describe the operations as a sequential process, many of the operations may 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 but could have additional steps not included in a figure. 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 may correspond to a return of the function to the calling function or the main function.
Processes and methods according to the above-described examples may be implemented using computer-executable instructions that are stored or otherwise available from computer-readable media. Such instructions may include, for example, instructions and data which cause or otherwise configure a general purpose computer, special purpose computer, or a processing device to perform a certain function or group of functions. Portions of computer resources used may be accessible over a network. The computer executable instructions may be, for example, binaries, intermediate format instructions such as assembly language, firmware, source code. Examples of computer-readable media that may be used to store instructions, information used, and/or information created during methods according to described examples include magnetic or optical disks, flash memory, USB devices provided with non-volatile memory, networked storage devices, and so on.
In some embodiments the computer-readable storage devices, mediums, and memories may include a cable or wireless signal containing a bitstream and the like. However, when mentioned, non-transitory computer-readable storage media expressly exclude media such as energy, carrier signals, electromagnetic waves, and signals per se.
Those of skill in the art will appreciate that information and signals may be represented using any of a variety of different technologies and techniques. For example, data, instructions, commands, information, signals, bits, symbols, and chips that may be referenced throughout the above description may be represented by voltages, currents, electromagnetic waves, magnetic fields or particles, optical fields or particles, or any combination thereof, in some cases depending in part on the particular application, in part on the desired design, in part on the corresponding technology, etc.
The various illustrative logical blocks, modules, and circuits described in connection with the aspects disclosed herein may be implemented or performed using hardware, software, firmware, middleware, microcode, hardware description languages, or any combination thereof, and may take any of a variety of form factors. When implemented in software, firmware, middleware, or microcode, the program code or code segments to perform the necessary tasks (e.g., a computer-program product) may be stored in a computer-readable or machine-readable medium. A processor(s) may perform the necessary tasks. Examples of form factors include laptops, smart phones, mobile phones, tablet devices or other small form factor personal computers, personal digital assistants, rackmount devices, standalone devices, and so on. Functionality described herein also may be embodied in peripherals or add-in cards. Such functionality may also be implemented on a circuit board among different chips or different processes executing in a single device, by way of further example.
The instructions, media for conveying such instructions, computing resources for executing them, and other structures for supporting such computing resources are example means for providing the functions described in the disclosure.
The techniques described herein may also be implemented in electronic hardware, computer software, firmware, or any combination thereof. Such techniques may be implemented in any of a variety of devices such as general purposes computers, wireless communication device handsets, or integrated circuit devices having multiple uses including application in wireless communication device handsets and other devices. Any features described as modules or components may be implemented together in an integrated logic device or separately as discrete but interoperable logic devices. If implemented in software, the techniques may be realized at least in part by a computer-readable data storage medium comprising program code including instructions that, when executed, performs one or more of the methods, algorithms, and/or operations described above. The computer-readable data storage medium may form part of a computer program product, which may include packaging materials. The computer-readable medium may comprise memory or data storage media, such as random access memory (RAM) such as synchronous dynamic random access memory (SDRAM), read-only memory (ROM), non-volatile random access memory (NVRAM), electrically erasable programmable read-only memory (EEPROM), FLASH memory, magnetic or optical data storage media, and the like. The techniques additionally, or alternatively, may be realized at least in part by a computer-readable communication medium that carries or communicates program code in the form of instructions or data structures and that may be accessed, read, and/or executed by a computer, such as propagated signals or waves.
The program code may be executed by a processor, which may include one or more processors, such as one or more digital signal processors (DSPs), general purpose microprocessors, an application specific integrated circuits (ASICs), field programmable logic arrays (FPGAs), or other equivalent integrated or discrete logic circuitry. Such a processor may be configured to perform any of the techniques described in this disclosure. 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 devices, e.g., a combination of a DSP and a microprocessor, a plurality of microprocessors, one or more microprocessors in conjunction with a DSP core, or any other such configuration. Accordingly, the term “processor,” as used herein may refer to any of the foregoing structure, any combination of the foregoing structure, or any other structure or apparatus suitable for implementation of the techniques described herein.
One of ordinary skill will appreciate that the less than (“<”) and greater than (“>”) symbols or terminology used herein may be replaced with less than or equal to (“≤”) and greater than or equal to (“≥”) symbols, respectively, without departing from the scope of this description.
Where components are described as being “configured to” perform certain operations, such configuration may be accomplished, for example, by designing electronic circuits or other hardware to perform the operation, by programming programmable electronic circuits (e.g., microprocessors, or other suitable electronic circuits) to perform the operation, or any combination thereof.
The phrase “coupled to” or “communicatively coupled to” refers to any component that is physically connected to another component either directly or indirectly, and/or any component that is in communication with another component (e.g., connected to the other component over a wired or wireless connection, and/or other suitable communications interface) either directly or indirectly.
Claim language or other language reciting “at least one of” a set and/or “one or more” of a set indicates that one member of the set or multiple members of the set (in any combination) satisfy the claim. For example, claim language reciting “at least one of A and B” or “at least one of A or B” means A, B, or A and B. In another example, claim language reciting “at least one of A, B, and C” or “at least one of A, B, or C” means A, B, C, or A and B, or A and C, or B and C, A and B and C, or any duplicate information or data (e.g., A and A, B and B, C and C, A and A and B, and so on), or any other ordering, duplication, or combination of A, B, and C. The language “at least one of” a set and/or “one or more” of a set does not limit the set to the items listed in the set. For example, claim language reciting “at least one of A and B” or “at least one of A or B” may mean A, B, or A and B, and may additionally include items not listed in the set of A and B. The phrases “at least one” and “one or more” are used interchangeably herein.
Claim language or other language reciting “at least one processor configured to,” “at least one processor being configured to,” “one or more processors configured to,” “one or more processors being configured to,” or the like indicates that one processor or multiple processors (in any combination) can perform the associated operation(s). For example, claim language reciting “at least one processor configured to: X, Y, and Z” means a single processor can be used to perform operations X, Y, and Z; or that multiple processors are each tasked with a certain subset of operations X, Y, and Z such that together the multiple processors perform X, Y, and Z; or that a group of multiple processors work together to perform operations X, Y, and Z. In another example, claim language reciting “at least one processor configured to: X, Y, and Z” can mean that any single processor may only perform at least a subset of operations X, Y, and Z.
Where reference is made to one or more elements performing functions (e.g., steps of a method), one element may perform all functions, or more than one element may collectively perform the functions. When more than one element collectively performs the functions, each function need not be performed by each of those elements (e.g., different functions may be performed by different elements) and/or each function need not be performed in whole by only one element (e.g., different elements may perform different sub-functions of a function). Similarly, where reference is made to one or more elements configured to cause another element (e.g., an apparatus) to perform functions, one element may be configured to cause the other element to perform all functions, or more than one element may collectively be configured to cause the other element to perform the functions.
Where reference is made to an entity (e.g., any entity or device described herein) performing functions or being configured to perform functions (e.g., steps of a method), the entity may be configured to cause one or more elements (individually or collectively) to perform the functions. The one or more components of the entity may include at least one memory, at least one processor, at least one communications interface, another component configured to perform one or more (or all) of the functions, and/or any combination thereof. Where reference to the entity performing functions, the entity may be configured to cause one component to perform all functions, or to cause more than one component to collectively perform the functions. When the entity is configured to cause more than one component to collectively perform the functions, each function need not be performed by each of those components (e.g., different functions may be performed by different components) and/or each function need not be performed in whole by only one component (e.g., different components may perform different sub-functions of a function).
Illustrative aspects of the disclosure include:
Aspect 1. An apparatus for securely performing cryptographic operations comprising: a memory; and a processor coupled to the memory comprising: a first computation module configured to: obtain a public data and a security information asset; and perform a Boolean operation on the public data and the security information asset to generate an output; and a second computation module configured to: obtain the public data and the security information asset; and perform the Boolean operation on the public data and the security information asset to generate the output, wherein the first computation module has a first configuration and the second computation module has a second configuration, different from the first configuration.
Aspect 2. The apparatus of Aspect 1, wherein the Boolean operation comprises combining a plurality of public bits of the public data with a plurality of bits of the security information asset in a bi-linear computation.
Aspect 3. The apparatus of any of Aspects 1 to 2, wherein each bit of the plurality of public bits has a fixed value.
Aspect 4. The apparatus of any of Aspects 1 to 3, wherein the first configuration comprises a first internal structure of the first computation module and wherein the second configuration comprises a second internal structure of the second computation module.
Aspect 5. The apparatus of any of Aspects 1 to 4, wherein the first computation module implements the Boolean operation with a first plurality of logic gates in a first configuration and the second computation module implementations the Boolean operation with a second plurality of logic gates in a second configuration, different from the first configuration.
Aspect 6. The apparatus of any of Aspects 1 to 5, wherein the first computation module comprises a first plurality of logic gates and the second computation module comprises a second plurality of logic gates, wherein the first plurality of logic gates includes at least one logic gate that is different from any logic gates in the second plurality of logic gates.
Aspect 7. The apparatus of Aspect 6, wherein the at least one logic gate that is different from any logic gates in the second plurality of logic gates performs an identical function to one or more different logic gates included in the second plurality of logic gates.
Aspect 8. The apparatus of any of Aspects 1 to 7, wherein the public data and the security information asset obtained by the first computation module and the second computation module are masked.
Aspect 9. The apparatus of any of Aspects 1 to 8, wherein the second computation module is configured to generate an even number of dummy products during performance of the Boolean operation that are canceled out in the output generated by the second computation module.
Aspect 10. The apparatus of Aspect 9, wherein input data used for generating the even number of dummy products includes one or more of bits of public data or bits derived from bits of public data.
Aspect 11. The apparatus of any of Aspects 1 to 10, wherein the first computation module is configured to generate a plurality of products between bits of the public data and bits of the security information asset and generate a plurality of sums of products between pairs of products included in the plurality of products, wherein the plurality of sums of products can be recoded with a dedicated shared random variable.
Aspect 12. The apparatus of any of Aspects 1 to 11, wherein the first computation module comprises a plurality of computation elements configured to generate the output based on a pre-determined order of operations.
Aspect 13. The apparatus of Aspect 12, wherein the pre-determined order of operations comprises one or more of an order of calculating a plurality of products of bits of the public data with bits of the security information asset or an order of adding the plurality of products.
Aspect 14. The apparatus of Aspect 12, wherein a pseudo random seed is expanded into a list that specifies the pre-determined order of operations.
Aspect 15. The apparatus of Aspect 12, wherein the plurality of computation elements comprises single-bit multiplication elements, wherein the single-bit multiplication elements comprise one or more of NAND gates or AND gates.
Aspect 16. The apparatus of Aspect 12, wherein the plurality of computation elements comprises XOR gates.
Aspect 17. The apparatus of any of Aspects 1 to 16, further comprising an additional processor coupled to the memory, wherein the additional processor comprises a third computation module configured to: obtain the public data and the security information asset; and perform the Boolean operation on the public data and the security information asset to generate the output, wherein the third computation module has a third configuration, different from the first configuration.
Aspect 18. A method for securely performing cryptographic operations comprising: obtaining a public data and a security information asset; performing, by a first computation module, a Boolean operation on the public data and the security information asset to generate an output; obtaining the public data and the security information asset; and performing, by a second computation module, the Boolean operation on the public data and the security information asset to generate the output, wherein the first computation module has a first configuration and the second computation module has a second configuration, different from the first configuration.
Aspect 19. The method of Aspect 18, wherein the Boolean operation comprises combining a plurality of public bits of the public data with a plurality of bits of the security information asset in a bi-linear computation.
Aspect 20. The method of any of Aspects 18 to 19, wherein each bit of the plurality of public bits has a fixed value.
Aspect 21. The method of any of Aspects 18 to 20, wherein the first configuration comprises a first internal structure of the first computation module and wherein the second configuration comprises a second internal structure of the second computation module.
Aspect 22. The method of any of Aspects 18 to 21, wherein the first computation module implements the Boolean operation with a first plurality of logic gates in a first configuration and the second computation module implementations the Boolean operation with a second plurality of logic gates in a second configuration, different from the first configuration.
Aspect 23. The method of any of Aspects 18 to 22, wherein the first computation module comprises a first plurality of logic gates and the second computation module comprises a second plurality of logic gates, wherein the first plurality of logic gates includes at least one logic gate that is different from any logic gates in the second plurality of logic gates.
Aspect 24. The method of Aspect 23, wherein the at least one logic gate that is different from any logic gates in the second plurality of logic gates performs an identical function to one or more different logic gates included in the second plurality of logic gates.
Aspect 25. The method of any of Aspects 18 to 24, wherein the public data and the security information asset obtained by the first computation module and the second computation module are masked.
Aspect 26. The method of any of Aspects 18 to 25, wherein the second computation module is configured to generate an even number of dummy products during performance of the Boolean operation that are canceled out in the output generated by the second computation module.
Aspect 27. The method of Aspect 26, wherein input data used for generating the even number of dummy products includes one or more of bits of public data or bits derived from bits of public data.
Aspect 28. The method of any of Aspects 18 to 27, wherein the first computation module is configured to generate a plurality of products between bits of the public data and bits of the security information asset and generate a plurality of sums of products between pairs of products included in the plurality of products, wherein the plurality of sums of products can be recoded with a dedicated shared random variable.
Aspect 29. The method of any of Aspects 18 to 28, wherein the first computation module comprises a plurality of computation elements configured to generate the output based on a pre-determined order of operations.
Aspect 30. The method of Aspect 29, wherein the pre-determined order of operations comprises one or more of an order of calculating a plurality of products of bits of the public data with bits of the security information asset or an order of adding the plurality of products.
Aspect 31. The method of Aspect 29, wherein a pseudo random seed is expanded into a list that specifies the pre-determined order of operations.
Aspect 32. The method of Aspect 29, wherein the plurality of computation elements comprises single-bit multiplication elements, wherein the single-bit multiplication elements comprise one or more of NAND gates or AND gates.
Aspect 33. The method of Aspect 29, wherein the plurality of computation elements comprises XOR gates.
Aspect 34. A non-transitory computer-readable storage medium having stored thereon instructions which, when executed by one or more processors, cause the one or more processors to perform any of the operations of aspects 1 to 33.
Aspect 35. An apparatus comprising means for performing a method according to any of Aspects 1 to 33.