Systems, methods, and computer program products for data security
By generating and exporting data encryption keys (DEK) in the data security system, the high cost and scalability of existing HSM technologies are solved, achieving more efficient data security protection and forward confidentiality.
Patent Information
- Application Number
- CN202210302028.5
- Authority / Receiving Office
- CN · China
- Patent Type
- Patents(China)
- Current Assignee / Owner
- Priority Date
- 2021-03-30
- Filing Date
- 2022-03-25
- Publication Date
- 2025-03-11
- Estimated Expiration
- 2042-03-25
AI Technical Summary
Existing data security systems that use hardware security modules (HSMs) to protect transactions and files suffer from high costs, difficulty in expansion and maintenance, and a lack of forward confidentiality.
By storing a cryptographic key associated with multiple public keys in memory, a data encryption key (DEK) is generated. A secret key is provided through a hardware security module (HSM) to derive the DEK for decryption. This avoids long-term storage of the secret key and achieves local encryption availability independent of the HSM.
It improves data security, achieves forward confidentiality, reduces reliance on HSM, lowers operational overhead and expansion costs, and increases key rotation speed.
Smart Images

Figure CN115150065B_ABST
Abstract
Description
Technical Field
[0001] The present disclosure relates to data security and, in some non-limiting embodiments or aspects, to scalable data security services with one-time token decryption. Background Art
[0002] A hardware security module (HSM) is a physical computing device that protects and manages digital keys, performs encryption and decryption functions for digital signatures, strong authentication and other cryptographic functions. A hardware security module contains one or more secure cryptographic processor chips for performing cryptographic operations, embedded in a package with various physical security measures, which give the hardware security module a degree of tamper resistance.
[0003] Data security services can use HSMs to protect transactions and files. However, data security services using HSMs to protect transactions and files can be relatively expensive and difficult to scale and maintain. Summary of the invention
[0004] Thus, improved systems, devices, products, apparatus and / or methods for data security are provided.
[0005] According to some non-limiting embodiments or aspects, methods, systems and computer program products are provided, wherein: a plurality of public keys (PK1, PK2, ... PK n ) associated with multiple passwords (C1, C2, ...C n ), wherein the plurality of passwords (C1, C2, ... C n ) includes multiple secret keys (SK1, SK2, ...SK n ), and wherein the plurality of secret keys (SK1, SK2, ... SK n ) corresponds to the multiple public keys (PK1, PK2, ...PK n ); receive data block (M i ) is used for encryption; based on the hash function (H), the multiple public keys (PK1, PK2, ... PK n ) in the public key (PK i ) and a random number (R) to generate a data encryption key (DEK); using the DEK to encrypt the data block (M i ) is encrypted to generate an encrypted data block (CM i ); generate a plurality of passwords (C1, C2, ... C n ) corresponding to the multiple public keys (PK1, PK2, ...PK n ) in the public key (PK i )'s password (Ci ) and a header (Hdr) of the key-encapsulated data; storing in a database a packet including the header (Hdr) and the encrypted data block (C Mi ) of a ciphertext (CT); receiving a request to decrypt the ciphertext (CT); in response to receiving the request to decrypt the ciphertext (CT), providing the password (C i ); receiving the plurality of secret keys (SK1, SK2, ...SK n ) corresponding to the multiple public keys (PK1, PK2, ...PK n ) in the public key (PK i )'s secret key (SK i ), the public key is used to generate the encrypted data block (C Mi ) of the DEK; based on the secret key (SK) received from the HSM i ) and the key encapsulation data to generate the encrypted data block (C Mi ) of the DEK; and providing the derived DEK for the encrypted data chunk (C Mi ) is decrypted to obtain the data block (M i ).
[0006] Other embodiments or aspects are set forth in the following numbered clauses:
[0007] Clause 1. A computer-implemented method comprising: utilizing at least one processor to store in a memory a plurality of public keys (PK1, PK2, ...PK n ) associated with multiple passwords (C1, C2, ...C n ), wherein the plurality of passwords (C1, C2, ... C n ) includes multiple secret keys (SK1, SK2, ...SK n ), and wherein the plurality of secret keys (SK1, SK2, ... SK n ) corresponds to the multiple public keys (PK1, PK2, ...PK n ); receiving a data block using at least one processor (M i ) for encryption; using at least one processor based on a hash function (H), the plurality of public keys (PK1, PK2, ... PK n ) in the public key (PK i ) and a random number (R) to generate a data encryption key (DEK); using at least one processor to use the DEK to encrypt the data block (M i ) is encrypted to generate an encrypted data block (C Mi); using at least one processor to generate a plurality of passwords (C1, C2, ... C n ) corresponding to the multiple public keys (PK1, PK2, ...PK n ) in the public key (PK i )'s password (C i ) and a header (Hdr) of the key-encapsulated data; using at least one processor to store in a database the header (Hdr) and the encrypted data block (C Mi ) of a ciphertext (CT); receiving, using at least one processor, a request to decrypt the ciphertext (CT); in response to receiving the request to decrypt the ciphertext (CT), providing, using at least one processor, the ciphertext (CT) to a hardware security module (HSM); i ); using at least one processor to receive the plurality of secret keys (SK1, SK2, ...SK n ) corresponding to the multiple public keys (PK1, PK2, ...PK n ) in the public key (PK i )'s secret key (SK i ), the public key is used to generate the encrypted data block (C Mi ) of the DEK; using at least one processor based on the secret key (SK received from the HSM i ) and the key encapsulation data to generate the encrypted data block (C Mi ) of the DEK; and providing, using at least one processor, the derived DEK for the encrypted data block (C Mi ) is decrypted to obtain the data block (M i ).
[0008] Clause 2. The computer-implemented method of clause 1 further comprises: receiving, using at least one processor, a plurality of random keys (r1, r2, ... r n ); using at least one processor based on the generator function (g) and the plurality of random keys (r1, r2, ... r n ) and generate the multiple public keys (PK1, PK2, ...PK n ); using at least one processor based on the hash function (H) and the plurality of public keys (PK1, PK2, ... PK n ) and generate corresponding to the multiple public keys (PK1, PK2, ...PK n ) of the plurality of secret keys (SK1, SK2, ...SK n ); using at least one processor to provide the plurality of secret keys (SK1, SK2, ...SKn ); and receiving, using at least one processor, from the HSM the plurality of secret keys (SK1, SK2, ...SK encrypted using the KEK) n ) as the plurality of passwords (C1, C2, ... C n ).
[0009] Clause 3. The computer-implemented method according to clause 1 or 2 further comprises: storing in the memory the plurality of public keys (PK1, PK2, ...PK n ) associated with the plurality of passwords (C1, C2, ... C n ), then deleting the plurality of secret keys (SK1, SK2, ...SK n ) and the plurality of random keys (r1, r2, ... r n ).
[0010] Clause 4. A computer-implemented method according to any one of clauses 1 to 3, wherein the key encapsulation data comprises a hash H(PK) of the public key. i ), the password (C i ), the random number generator function g R , and the hash of the corresponding public key is raised to the power H(PK) of the hash of the DEK i ) H(DEK) .
[0011] Clause 5. The computer-implemented method of any one of clauses 1 to 4, further comprising: receiving, with at least one processor, an additional data chunk (M j ) for encryption; using at least one processor based on the hash function (H), the multiple public keys (PK1, PK2, ... PK n ) in the other public key (PK j ) and another random number (R) to generate another data encryption key (DEK'); using at least one processor to use the other DEK' to encrypt the other data chunk (M j ) to generate another encrypted data block (C Mj ); using at least one processor to generate a plurality of passwords (C1, C2, ... C n ) corresponding to the multiple public keys (PK1, PK2, ...PK n ) in the other public key (PK j ) and an additional header (Hdr') of the additional key encapsulated data; storing in the database, using at least one processor, the additional header (Hdr') and the additional encrypted data block (C Mj); receiving, using at least one processor, a request to decrypt the additional ciphertext (CT'); in response to receiving the request to decrypt the additional ciphertext (CT'), providing, using at least one processor, the additional ciphertext (CT') to the HSM; j ); using at least one processor to receive the plurality of secret keys (SK1, SK2, ...SK n ) corresponding to the multiple public keys (PK1, PK2, ...PK n ) in the other public key (PK j )'s other secret key (SK j ), the further public key is used to generate the further encrypted data block (C Mj ) of the other DEK '; using at least one processor based on the other secret key (SK received from the HSM j ) and the further key encapsulation data to derive the key for generating the further encrypted data chunk (C Mj ) of the additional DEK '; and using at least one processor to provide an additional derived DEK for the additional encrypted data block (C Mj ) is decrypted to obtain the additional data block (M i ).
[0012] Clause 6. The computer-implemented method of any one of clauses 1 to 5, further comprising: using at least one processor to calculate a i ) and the additional secret key (SK j ) to generate a token; deriving the DEK based on the token and the key encapsulation data using at least one processor; and deriving the additional DEK' based on the token and the additional key encapsulation data using at least one processor.
[0013] Clause 7. A computing system comprising: one or more processors programmed and / or configured to: store in a memory a plurality of public keys (PK1, PK2, ...PK n ) associated with multiple passwords (C1, C2, ...C n ), wherein the plurality of passwords (C1, C2, ... C n ) includes multiple secret keys (SK1, SK2, ...SK n ), and wherein the plurality of secret keys (SK1, SK2, ... SK n ) corresponds to the multiple public keys (PK1, PK2, ...PK n ); receive data block (Mi ) is used for encryption; based on the hash function (H), the multiple public keys (PK1, PK2, ... PK n ) in the public key (PK i ) and a random number (R) to generate a data encryption key (DEK); using the DEK to encrypt the data block (M i ) is encrypted to generate an encrypted data block (C Mi ); generate a plurality of passwords (C1, C2, ... C n ) corresponding to the multiple public keys (PK1, PK2, ...PK n ) in the public key (PK i )'s password (C i ) and a header (Hdr) of the key-encapsulated data; storing in a database a packet including the header (Hdr) and the encrypted data block (C Mi ) of a ciphertext (CT); receiving a request to decrypt the ciphertext (CT); in response to receiving the request to decrypt the ciphertext (CT), providing the password (C i ); receiving the plurality of secret keys (SK1, SK2, ...SK n ) corresponding to the multiple public keys (PK1, PK2, ...PK n ) in the public key (PK i )'s secret key (SK i ), the public key is used to generate the encrypted data block (C Mi ) of the DEK; based on the secret key (SK) received from the HSM i ) and the key encapsulation data to generate the encrypted data block (C Mi ) of the DEK; and providing the derived DEK for the encrypted data chunk (C Mi ) is decrypted to obtain the data block (M i ).
[0014] Clause 8. The system according to any one of clauses 7, wherein the one or more processors are further programmed and / or configured to: receive a plurality of random keys (r1, r2, ... r n ); Based on the generator function (g) and the plurality of random keys (r1, r2, ... r n ) and generate the multiple public keys (PK1, PK2, ...PK n ); based on the hash function (H) and the multiple public keys (PK1, PK2, ... PK n ) and generate corresponding to the multiple public keys (PK1, PK2, ...PKn ) of the plurality of secret keys (SK1, SK2, ...SK n ); Provide the multiple secret keys (SK1, SK2, ...SK n ); and receiving from the HSM the plurality of secret keys (SK1, SK2, ...SK3) encrypted using the KEK n ) as the plurality of passwords (C1, C2, ... C n ).
[0015] Clause 9. A system according to clause 7 or 8, wherein the one or more processors are further programmed and / or configured to: store in the memory the plurality of public keys (PK1, PK2, ...PK n ) associated with the plurality of passwords (C1, C2, ... C n ) after deleting the plurality of secret keys (SK1, SK2, ...SK n ) and the plurality of random keys (r1, r2, ... r n ).
[0016] Clause 10. A system according to any one of clauses 7 to 9, wherein the key encapsulation data comprises a hash H(PK) of the public key. i ), the password (C i ), the random number generator function g R , and the hash of the corresponding public key is raised to the power H(PK) of the hash of the DEK i ) H(DEK) .
[0017] Clause 11. A system according to any one of clauses 7 to 10, wherein the one or more processors are further programmed and / or configured to: receive an additional data chunk (M j ) is used for encryption; based on the hash function (H), the multiple public keys (PK1, PK2, ... PK n ) in the other public key (PK j ) and another random number (R) to generate another data encryption key (DEK'); using the other DEK' to encrypt the other data chunk (M j ) to generate another encrypted data block (C Mj ); generate a plurality of passwords (C1, C2, ... C n ) corresponding to the multiple public keys (PK1, PK2, ...PK n ) in the other public key (PK j )'s other password (C j) and another header (Hdr') of the additional key encapsulated data; storing in the database the additional header (Hdr') and the additional encrypted data chunk (C Mj ) of the HSM; receiving a request to decrypt the additional ciphertext (CT'); in response to receiving the request to decrypt the additional ciphertext (CT'), providing the additional ciphertext (CT') to the HSM; j ); receiving the plurality of secret keys (SK1, SK2, ...SK n ) corresponding to the multiple public keys (PK1, PK2, ...PK n ) in the other public key (PK j )'s other secret key (SK j ), the further public key is used to generate the further encrypted data block (C Mj ) of the additional DEK'; based on the additional secret key (SK received from the HSM j ) and the further key encapsulation data to derive the key for generating the further encrypted data chunk (C Mj ) of the further DEK'; and providing the further derived DEK for use in encrypting the further encrypted data chunk (C Mj ) is decrypted to obtain the additional data block (M ji ).
[0018] Clause 12. A system according to any one of clauses 7 to 11, further comprising: based on the secret key (SK i ) and the additional secret key (SK j ) to generate a token; derive the DEK based on the token and the key encapsulation data; and derive the further DEK' based on the token and the further key encapsulation data.
[0019] Clause 13. A computer program product comprising at least one non-transitory computer-readable medium comprising program instructions, which when executed by at least one processor causes the at least one processor to: store in a memory a plurality of public keys (PK1, PK2, ...PK n ) associated with multiple passwords (C1, C2, ...C n ), wherein the plurality of passwords (C1, C2, ... C n ) includes multiple secret keys (SK1, SK2, ...SK n ), and wherein the plurality of secret keys (SK1, SK2, ... SK n) corresponds to the multiple public keys (PK1, PK2, ...PK n ); receive data block (M i ) is used for encryption; based on the hash function (H), the multiple public keys (PK1, PK2, ... PK n ) in the public key (PK i ) and a random number (R) to generate a data encryption key (DEK); using the DEK to encrypt the data block (M i ) is encrypted to generate an encrypted data block (C Mi ); generate a plurality of passwords (C1, C2, ... C n ) corresponding to the multiple public keys (PK1, PK2, ...PK n ) in the public key (PK i )'s password (C i ) and a header (Hdr) of the key-encapsulated data; storing in a database a packet including the header (Hdr) and the encrypted data block (C Mi ) of a ciphertext (CT); receiving a request to decrypt the ciphertext (CT); in response to receiving the request to decrypt the ciphertext (CT), providing the password (C i ); receiving the plurality of secret keys (SK1, SK2, ...SK n ) corresponding to the multiple public keys (PK1, PK2, ...PK n ) in the public key (PK i )'s secret key (SK i ), the public key is used to generate the encrypted data block (C Mi ) of the DEK; based on the secret key (SK) received from the HSM i ) and the key encapsulation data to generate the encrypted data block (C Mi ) of the DEK; and providing the derived DEK for the encrypted data chunk (C Mi ) is decrypted to obtain the data block (M i ).
[0020] Clause 14. The computer program product of clause 13, wherein the instructions further cause the at least one processor to: receive a plurality of random keys (r1, r2, ... r n ); Based on the generator function (g) and the plurality of random keys (r1, r2, ... r n ) and generate the multiple public keys (PK1, PK2, ...PK n); based on the hash function (H) and the multiple public keys (PK1, PK2, ... PK n ) and generate corresponding to the multiple public keys (PK1, PK2, ...PK n ) of the plurality of secret keys (SK1, SK2, ...SK n ); Provide the multiple secret keys (SK1, SK2, ...SK n ); and receiving from the HSM the plurality of secret keys (SK1, SK2, ...SK3) encrypted using the KEK n ) as the plurality of passwords (C1, C2, ... C n ).
[0021] Clause 15. A computer program product according to clause 13 or 14, wherein the instructions further cause the at least one processor to: store in the memory the plurality of public keys (PK1, PK2, ...PK n ) associated with the plurality of passwords (C1, C2, ... C n ) after deleting the plurality of secret keys (SK1, SK2, ...SK n ) and the plurality of random keys (r1, r2, ... r n ).
[0022] Clause 16. A computer program product according to any one of clauses 13 to 15, wherein the key encapsulation data comprises a hash H(PK) of the public key. i ), the password (C i ), the random number generator function g R , and the hash of the corresponding public key is raised to the power H(PK) of the hash of the DEK i ) H(DEK) .
[0023] Clause 17. A computer program product according to any one of clauses 13 to 16, wherein the instructions further cause the at least one processor to: receive a further data chunk (M j ) is used for encryption; based on the hash function (H), the multiple public keys (PK1, PK2, ... PK n ) in the other public key (PK j ) and another random number (R) to generate another data encryption key (DEK'); using the other DEK' to encrypt the other data chunk (M j ) to generate another encrypted data block (C Mj ); generate a plurality of passwords (C1, C2, ... C n ) corresponding to the multiple public keys (PK1, PK2, ...PKn ) in the other public key (PK j )'s other password (C j ) and another header (Hdr') of the additional key encapsulated data; storing in the database the additional header (Hdr') and the additional encrypted data chunk (C Mj ) of the HSM; receiving a request to decrypt the additional ciphertext (CT'); in response to receiving the request to decrypt the additional ciphertext (CT'), providing the additional ciphertext (CT') to the HSM; j ); receiving the plurality of secret keys (SK1, SK2, ...SK n ) corresponding to the multiple public keys (PK1, PK2, ...PK n ) in the other public key (PK j )'s other secret key (SK j ), the further public key is used to generate the further encrypted data block (C Mj ) of the additional DEK'; based on the additional secret key (SK received from the HSM j ) and the further key encapsulation data to derive the key for generating the further encrypted data chunk (C Mj ) of the further DEK'; and providing the further derived DEK for use in encrypting the further encrypted data chunk (C Mj ) is decrypted to obtain the additional data block (M j ).
[0024] Clause 18. A computer program product according to any one of clauses 13 to 17, wherein the instructions further cause the at least one processor to: based on the secret key (SK i ) and the additional secret key (SK j ) to generate a token; derive the DEK based on the token and the key encapsulation data; and derive the further DEK' based on the token and the further key encapsulation data.
[0025] These and other features and characteristics of the present disclosure, as well as methods of operation and functions of combinations of related structural elements and parts and economies of manufacture, will become more apparent when considering the following description and the appended claims with reference to the accompanying drawings, all of which form a part of this specification, wherein like reference numerals indicate corresponding parts in the various figures. However, it is to be expressly understood that the figures are for illustration and description purposes only and are not intended as definitions of limitations. Unless the context clearly dictates otherwise, as used in this specification and claims, the singular forms "a", "an", and "the" include plural referents. BRIEF DESCRIPTION OF THE DRAWINGS
[0026] Additional advantages and details are explained in more detail below with reference to exemplary embodiments shown in the schematic drawings, in which:
[0027] Figure 1 are diagrams of non-limiting embodiments or aspects of environments in which the systems, apparatus, products, devices, and / or methods described herein may be implemented;
[0028] Figure 2 yes Figure 1 diagrams of non-limiting embodiments or aspects of one or more devices and / or components of one or more systems;
[0029] Figures 3A-3C is a flow chart of a non-limiting embodiment or aspect of a process for data security;
[0030] Figures 4A-4C is an implementation diagram of a non-limiting embodiment or aspect of a data security system; and
[0031] Figure 5A and 5B is a diagram of the existing data security system. DETAILED DESCRIPTION
[0032] It should be understood that, except where expressly specified to the contrary, the present disclosure may employ various alternative variations and step sequences. It should also be understood that the specific devices and processes shown in the accompanying drawings and described in the following specification are merely exemplary and non-limiting embodiments or aspects. Therefore, specific dimensions and other physical characteristics associated with the embodiments or aspects disclosed herein should not be considered limiting.
[0033] Aspects, components, elements, structures, actions, steps, functions, instructions, etc. used herein should not be understood as critical or necessary unless explicitly described as such. Also, as used herein, the articles "a" and "an" are intended to include one or more items, and can be used interchangeably with "one or more" and "at least one". In addition, as used herein, the term "group" is intended to include one or more items (e.g., related items, unrelated items, combinations of related items and unrelated items, etc.), and can be used interchangeably with "one or more" or "at least one". In the case of wishing to have only one item, the term "one" or similar language is used. Also, as used herein, the term "having" etc. is intended to be an open term. In addition, unless otherwise explicitly stated, the phrase "based on" is intended to mean "based at least in part on".
[0034] As used herein, the term "communication" may refer to the reception, acceptance, transmission, transfer, provision, etc. of data (e.g., information, signals, messages, instructions, commands, etc.). A unit (e.g., a device, a system, a component of a device or system, a combination thereof, etc.) communicating with another unit means that the unit is able to directly or indirectly receive information from the other unit and / or send information to the other unit. This may refer to a direct or indirect connection (e.g., a direct communication connection, an indirect communication connection, etc.) that is wired and / or wireless in nature. In addition, although the information sent can be modified, processed, relayed and / or routed between the first unit and the second unit, the two units may also communicate with each other. For example, even if the first unit passively receives information and does not actively send information to the second unit, the first unit may communicate with the second unit. As another example, if at least one intermediate unit processes the information received from the first unit and transmits the processed information to the second unit, the first unit may communicate with the second unit.
[0035] Obviously, the systems and / or methods described herein can be implemented in different forms of hardware, software, or a combination of hardware and software. The actual dedicated control hardware or software code used to implement these systems and / or methods does not limit the implementation. Therefore, the operation and behavior of the systems and / or methods are described herein without reference to specific software codes, and it should be understood that software and hardware can be designed to implement the systems and / or methods based on the description herein.
[0036] Some non-limiting embodiments or aspects are described herein in conjunction with threshold values. As used herein, satisfying a threshold value may refer to a value greater than a threshold value, more than a threshold value, above a threshold value, greater than or equal to a threshold value, less than a threshold value, less than a threshold value, below a threshold value, less than or equal to a threshold value, equal to a threshold value, etc.
[0037] As used herein, the term "transaction service provider" may refer to an entity that receives transaction authorization requests from merchants or other entities and, in some cases, provides payment assurance through an agreement between the transaction service provider and the issuer organization. For example, a transaction service provider may include, for example , or any other entity that processes transactions. The term "transaction processing system" may refer to one or more computing devices operated by or on behalf of a transaction service provider, such as a transaction processing server executing one or more software applications. A transaction processing system may include one or more processors and, in some non-limiting embodiments, may be operated by or on behalf of a transaction service provider.
[0038] As used herein, the term "mobile device" may refer to one or more portable electronic devices configured to communicate with one or more networks. For example, a mobile device may include a cellular phone (e.g., a smart phone or a standard cellular phone), a portable computer (e.g., a tablet computer, a laptop computer, etc.), a wearable device (e.g., a watch, glasses, lenses, clothing, etc.), a personal digital assistant (PDA), and / or other similar devices. As used herein, the terms "client device" and "user device" refer to any electronic device configured to communicate with one or more servers or remote devices and / or systems. Client devices or user devices may include mobile devices, network-enabled devices (e.g., network-enabled TVs, refrigerators, thermostats, etc.), computers, POS systems, and / or any other devices or systems capable of communicating with a network.
[0039] As used herein, the term "computing device" may refer to one or more electronic devices configured to process data. In some examples, a computing device may include the necessary components to receive, process, and output data, such as a processor, a display, a memory, an input device, a network interface, etc. The computing device may be a mobile device. For example, a mobile device may include a cellular phone (e.g., a smart phone or a standard cellular phone), a portable computer, a wearable device (e.g., a watch, glasses, lenses, clothing, and / or the like), a PDA, and / or other similar devices. A computing device may also be a desktop computer or other form of non-mobile computer.
[0040] As used herein, the terms "server" and / or "processor" may refer to or include one or more computing devices that are operated by or facilitate communication and processing by multiple parties in a network environment such as the Internet, but it should be understood that communication may be facilitated through one or more public or private network environments, and there may be various other arrangements. In addition, multiple computing devices (e.g., servers, POS devices, mobile devices, etc.) that communicate directly or indirectly in a network environment may constitute a "system." As used herein, references to "server" or "processor" may refer to previously described servers and / or processors, different servers and / or processors, and / or combinations of servers and / or processors stated as implementing previous steps or functions. For example, as used in the specification and claims, a first server and / or first processor stated as implementing a first step or function may refer to the same or different servers and / or processors stated as implementing a second step or function.
[0041] As used herein, the term "application programming interface" (API) may refer to computer code that allows communication between different systems or (hardware and / or software) system components. For example, an API may include function calls, functions, subroutines, communication protocols, fields, etc. that can be used and / or accessed by other systems or other (hardware and / or software) system components.
[0042] As used herein, the term "user interface" or "graphical user interface" may refer to generated screens, such as one or more graphical user interfaces (GUIs), with which a user may interact directly or indirectly (eg, via keyboard, mouse, touch screen, etc.).
[0043] Figure 5A and 5B is a diagram of an existing data security system 500 that uses a SafeNet ProtectFile agent, a file service, and a KeySecure HSM to protect static data. This existing data security system 500 uses transparent encryption at the kernel level, which reduces the ability to apply kernel upgrades and / or security patches. This existing data security system 500 also uses the same key encryption key (KEK) (e.g., the same secret key, etc.) to protect each file (e.g., all data) created by the data security system 500 (e.g., created by the same node of the data security system, etc.), and the KEK is kept in memory until the machine hosting the data security system (e.g., SafeNet ProtectFile agent, file service, etc.) is restarted. Therefore, this existing data security system 500 lacks forward secrecy. In addition, this existing data security system 500 calls the HSM for each transaction - thereby requiring more and more expensive and difficult to maintain and expand HSMs, thereby attempting to reduce operational overload and / or file processing obstacles.
[0044] Non-limiting embodiments or aspects of the present disclosure provide systems, methods, and computer program products, wherein the systems, methods, and computer program products store in a memory a plurality of public keys (PK1, PK2, ...PK n ) associated with multiple passwords (C1, C2, ...C n ), where multiple passwords (C1, C2, ...C n ) includes multiple secret keys (SK1, SK2, ...SK n ), and wherein multiple secret keys (SK1, SK2, ...SK n ) corresponds to multiple public keys (PK1, PK2, ...PK n ); receive data block (M i) is used for encryption; based on a hash function (H), multiple public keys (PK1, PK2, ...PK n ) in the public key (PK i ) and a random number (R) to generate a data encryption key (DEK); use the DEK to encrypt the data block (M i ) is encrypted to generate an encrypted data block (C Mi ); Generate multiple passwords (C1, C2, ...C n ) corresponds to multiple public keys (PK1, PK2, ...PK n ) in the public key (PK i )'s password (C i ) and a header (Hdr) of the key-encapsulated data; storing the header (Hdr) and the encrypted data block (C Mi ) of a ciphertext (CT); receiving a request to decrypt the ciphertext (CT); in response to receiving the request to decrypt the ciphertext (CT), providing a password (C i ); Receive multiple secret keys (SK1, SK2, ...SK n ) corresponds to multiple public keys (PK1, PK2, ...PK n ) in the public key (PK i )'s secret key (SK i ), the public key is used to generate the encrypted data block (C Mi ) based on the secret key (SK) received from the HSM i ) and the key to encapsulate the data and derive the encrypted data block (C Mi ) of the encrypted data block (C Mi ) is decrypted to obtain the data block (M i ).
[0045] In this way, non-limiting embodiments or aspects of the present disclosure make data security: (i) more secure in terms of forward secrecy, (ii) use temporary KEKs and data encryption keys (DEKs) for verifying data chunks (e.g., for each file, for each chunk of a file, etc.) and new or different secret keys for each data chunk or file to avoid storing secrets (e.g., KEKs, secret keys, etc.) in memory for a long time or for a long time, (iii) provide local encryption without requiring calls to an HSM (e.g., encryption does not depend on HSM availability, etc.), (iv) achieve faster key rotation, and / or (v) avoid the need to add additional HSMs to reduce operational overload and / or file processing bottlenecks as the number of transactions or files to be processed and stored increases.
[0046] Reference now Figure 1 , Figure 1 1 is a diagram of an example environment 100 in which the apparatus, systems, methods, and / or products described herein may be implemented. Figure 1 As shown, environment 100 may include a data security system 102, a hardware security module (HSM) 104, a user device 106, and / or a communication network 108. Data security system 102, hardware security module (HSM) 104, and / or user device 106 may be interconnected (e.g., establish a connection to communicate, etc.) via a wired connection, a wireless connection, or a combination of wired and wireless connections.
[0047] The data security system 102 may include one or more devices capable of receiving information and / or data from the HSM 104 and / or the user device 106 (e.g., via the communication network 108, etc.), and / or capable of transmitting information and / or data to the HSM 104 and / or the user device 106 (e.g., via the communication network 108, etc.). For example, the data security system 102 may include a computing device, such as a server, a server group, a client device, a client device group, and / or other similar devices. In some non-limiting embodiments or aspects, the data security system 102 may be associated with a transaction service provider as described herein.
[0048] The HSM 104 may include one or more devices capable of receiving information and / or data from the data security system 102 and / or the user device 106 (e.g., via the communication network 108, etc.), and / or capable of transmitting information and / or data to the data security system 102 and / or the user device 106 (e.g., via the communication network 108, etc.). For example, the HSM 104 may include a computing device, such as a server, a server group, a client device, a client device group, and / or other similar devices. In some non-limiting embodiments or aspects, the HSM 104 may include a KeySecure HSM.
[0049] The user device 106 may include one or more devices capable of receiving information and / or data from the data security system 102 and / or the HSM 104 (e.g., via the communication network 108, etc.), and / or capable of transmitting information and / or data to the data security system 102 and / or the HSM 104 (e.g., via the communication network 108, etc.). For example, the user device 106 may include a client device, etc. In some non-limiting embodiments or aspects, the user device 106 may provide a user interface for accessing and / or controlling the data security system 102 (e.g., an application for accessing and / or controlling the data security system 102, etc.).
[0050] The communication network 108 may include one or more wired and / or wireless networks. For example, the communication network 108 may include a cellular network (e.g., a long term evolution (LTE) network, a third generation (3G) network, a fourth generation (4G) network, a fifth generation (5G) network, a code division multiple access (CDMA) network, etc.), a public land mobile network (PLMN), a local area network (LAN), a wide area network (WAN), a metropolitan area network (MAN), a telephone network (e.g., a public switched telephone network (PSTN)), a private network, an ad hoc network, an intranet, the Internet, a fiber-based network, a cloud computing network, etc. and / or a combination of these or other types of networks.
[0051] supply Figure 1 The number and arrangement of devices and systems shown are examples. Additional devices and / or systems, fewer devices and / or systems, different devices and / or systems, and / or devices and / or systems may be present. Figure 1 The devices and / or systems shown in the drawings may be arranged in different ways. In addition, the invention may be implemented in a single device and / or system. Figure 1 Two or more devices and / or systems shown, or Figure 1 The single device and / or system shown may be implemented as multiple distributed devices and / or systems. Additionally or alternatively, a set of devices and / or systems (e.g., one or more devices or systems) of environment 100 may perform one or more functions described as being performed by another set of devices and / or systems of environment 100.
[0052] Reference now Figure 2 , Figure 2 2 is a diagram of example components of an apparatus 200. Apparatus 200 may correspond to one or more apparatuses of data security system 102, HSM 104 (e.g., one or more apparatuses of a system of HSM 104, etc.), and / or user apparatus 106 (e.g., one or more apparatuses of a system of user apparatus 106, etc.). In some non-limiting embodiments or aspects, one or more apparatuses of data security system 102, HSM 104 (e.g., one or more apparatuses of a system of HSM 104, etc.), and / or user apparatus 106 (e.g., one or more apparatuses of a system of user apparatus 106, etc.) may include at least one apparatus 200 and / or at least one component of apparatus 200. Figure 2 As shown, apparatus 200 may include a bus 202 , a processor 204 , a memory 206 , a storage component 208 , an input component 210 , an output component 212 , and a communication interface 214 .
[0053] The bus 202 may include components that permit communication between components of the device 200. In some non-limiting embodiments or aspects, the processor 204 may be implemented in hardware, software, or a combination of hardware and software. For example, the processor 204 may include a processor (e.g., a central processing unit (CPU), a graphics processing unit (GPU), an accelerated processing unit (APU), etc.), a microprocessor, a digital signal processor (DSP), and / or any processing component that can be programmed to perform a function (e.g., a field programmable gate array (FPGA), an application specific integrated circuit (ASIC), etc.). The memory 206 may include a random access memory (RAM), a read-only memory (ROM), and / or another type of dynamic or static storage device (e.g., flash memory, magnetic memory, optical memory, etc.) that stores information and / or instructions for use by the processor 204.
[0054] The storage component 208 may store information and / or software associated with the operation and use of the device 200. For example, the storage component 208 may include a hard disk (e.g., a magnetic disk, an optical disk, a magneto-optical disk, a solid-state disk, etc.), a compact disk (CD), a digital versatile disk (DVD), a floppy disk, a cassette, a magnetic tape, and / or another type of computer-readable medium, and a corresponding drive.
[0055] Input components 210 may include components that permit device 200 to receive information, such as through user input (e.g., a touch screen display, a keyboard, a keypad, a mouse, buttons, switches, a microphone, etc.). Additionally or alternatively, input components 210 may include sensors for sensing information (e.g., a global positioning system (GPS) component, an accelerometer, a gyroscope, an actuator, etc.). Output components 212 may include components that provide output information from device 200 (e.g., a display, a speaker, one or more light emitting diodes (LEDs), etc.).
[0056] The communication interface 214 may include a transceiver-type component (e.g., a transceiver, a separate receiver and transmitter, etc.) that enables the device 200 to communicate with other devices, for example, via a wired connection, a wireless connection, or a combination of a wired connection and a wireless connection. The communication interface 214 may permit the device 200 to receive information from another device and / or provide information to another device. For example, the communication interface 214 may include an Ethernet interface, an optical interface, a coaxial interface, an infrared interface, a radio frequency (RF) interface, a universal serial bus (USB) interface, Interface, cellular network interface, etc.
[0057] The device 200 can perform one or more processes described herein. The device 200 can perform these processes based on the processor 204 executing software instructions stored by a computer-readable medium such as the memory 206 and / or the storage component 208. Computer-readable media (e.g., non-transitory computer-readable media) are defined herein as non-transitory memory devices. The memory device includes a memory space located within a single physical storage device or a memory space extended across multiple physical storage devices.
[0058] The software instructions may be read into the memory 206 and / or storage component 208 from another computer-readable medium or from another device via the communication interface 214. When executed, the software instructions stored in the memory 206 and / or storage component 208 may cause the processor 204 to perform one or more processes described herein. Additionally or alternatively, hard-wired circuitry may be used in place of or in combination with software instructions to perform one or more processes described herein. Thus, the embodiments or aspects described herein are not limited to any specific combination of hardware circuitry and software.
[0059] The memory 206 and / or storage component 208 may include a data storage device or one or more data structures (e.g., a database, etc.). The device 200 can receive information from, store information in, transfer information to, or search for information stored in the data storage device or one or more data structures in the memory 206 and / or storage component 208.
[0060] supply Figure 2 The number and arrangement of components shown in FIG. are provided as examples. In some non-limiting embodiments or aspects, Figure 2 Compared to those shown in , device 200 may include additional components, fewer components, different components, or components arranged in a different manner. Additionally or alternatively, a set of components (e.g., one or more components) of device 200 may perform one or more functions described as being performed by another set of components of device 200.
[0061] Reference Figures 3A-3C and 4A-4C, Figures 3A-3C is a flow chart of a non-limiting embodiment or aspect of a process 300 for data security, and Figures 4A-4C FIG. 4 is a diagram of a non-limiting example or aspect of an implementation scheme 400 related to a data security system. Figures 4A-4CAs shown, the implementation 400 includes an application 402, an extensible data security service (SDSS) 404, and an HSM 104. In some non-limiting embodiments or aspects, one or more steps of the process 300 may be performed (e.g., completely, partially, etc.) by the data security system 102 (e.g., one or more devices of the data security system 102, etc.). For example, one or more steps of the process 300 may be performed (e.g., completely, partially, etc.) by the SDSS 404 of the data security system 102. For example, one or more steps of the process 300 may be performed (e.g., completely, partially, etc.) by the application 402 of the data security system 102. In some non-limiting embodiments or aspects, one or more steps of the process 300 may be performed (e.g., completely, partially, etc.) by another device or group of devices that is separate from or includes the data security system 102, such as the HSM 104 (e.g., one or more devices of the system of the HSM 104, etc.) and / or the user device 106 (e.g., one or more devices of the system of the user device 106, etc.).
[0062] like Figure 3A As shown, at step 302, process 300 includes receiving a random key from an HSM. For example, data security system 102 (e.g., SDSS 404, etc.) may receive a plurality of random keys (r1, r2, ... r3) from HSM 104. n ). For example, and if Figure 4A As shown at reference numeral 450, application 402 and SDSS 404 may be started (e.g., initiated, refreshed, activated, etc.), and at reference numeral 452, KeyPool Daemon in SDSS 404 may request and receive a plurality of random keys (r1, r2, ... r n ), such as a random number batch. Whenever the available password or DEK pool needs to be refreshed (for example, when the available number of passwords or DEKs meets a threshold number, etc.), the KeyPool Daemon can automatically request a new random number batch.
[0063] like Figure 3A As shown, at step 304, process 300 includes generating a public key. For example, data security system 102 (e.g., SDSS 404, etc.) may generate a public key based on a generator function (g) and a plurality of random keys (r1, r2, ... r n ) and generate multiple public keys (PK1, PK2, ...PK n ). For example, and if Figure 4A As shown in the figure mark 454, SDSS 404 can generate a public key PK according to the following equation (1): i :
[0064] PK i=g ri (1)
[0065] Among them PK i There are multiple public keys (PK1, PK2, ...PK n ), g is the generator function of group G, and r i are multiple random keys (r1, r2, ...r n ) in the random key.
[0066] like Figure 3A As shown, at step 306, process 300 includes generating a secret key. For example, data security system 102 (eg, SDSS 404, etc.) may generate a secret key based on a hash function (H) and a plurality of public keys (PK1, PK2, ... PK n ) and generate corresponding to multiple public keys (PK1, PK2, ...PK n ) of multiple secret keys (SK1, SK2, ...SK n ). For example, and if Figure 4A As shown in the reference numeral 456, SDSS 404 may generate a secret key SK according to the following equation (2): i :
[0067] SK i =HashToGroup(r i ) (2)
[0068] PK i =g ri
[0069] Among them, SK i are multiple secret keys (SK1, SK2, ...SK n ), HashToGroup is applied to multiple random keys (r1, r2, ... r n ) of the group G whose hash function H,r i are multiple random keys (r1, r2, ...r n ), and g is the generator function of group G.
[0070] like Figure 3A As shown, at step 308, process 300 includes providing a secret key to the HSM. For example, data security system 102 (e.g., SDSS 404, etc.) may provide multiple secret keys (SK1, SK2, ...SK n ). For example, and if Figure 4A As shown in the figure 458, SDSS 404 can provide multiple secret keys (SK1, SK2, ...SK n) to request a wrapped secret key. In this example, HSM 104 may utilize a key encryption key (KEK) to encrypt multiple secret keys (SK1, SK2, ...SK n ) to generate multiple passwords (C1, C2, ...C n ) (e.g., multiple wrapped secret keys, etc.).
[0071] like Figure 3A As shown, at step 310, process 300 includes receiving a password from the HSM. For example, data security system 102 (e.g., SDSS 404, etc.) may receive a plurality of secret keys (SK1, SK2, ...SK2) encrypted with KEK from HSM 104. n ) as multiple passwords (C1, C2, ...C n ). For example, and if Figure 4A As shown in the figure 460, SDSS 404 can receive multiple secret keys (SK1, SK2, ...SK2) encrypted by KEK from HSM 104. n ) as multiple passwords (C1, C2, ...C n ).
[0072] like Figure 3A As shown, at step 312, process 300 includes storing the password in a memory. For example, data security system 102 (eg, SDSS 404, etc.) may store a plurality of public keys (PK1, PK2, ... PK n ) associated with multiple passwords (C1, C2, ...C n For example, multiple passwords (C1, C2, ...C n ) may include multiple secret keys (SK1, SK2, ...SK n ), and multiple secret keys (SK1, SK2, ...SK n ) can correspond to multiple public keys (PK1, PK2, ...PK n For example, multiple passwords (C1, C2, ...C n ) in the password C i SK Can be used with multiple public keys (PK1, PK2, ...PK n ) in the corresponding public key PK i are stored in memory in association with each other. In this example, and as Figure 4A As shown in the reference numeral 462, SDSS 404 can store multiple public keys (PK1, PK2, ...PK n ) associated with multiple passwords (C1, C2, ...C n ).
[0073] like Figure 4A As shown in the reference numeral 464 of the flowchart 300, the SDSS 404 may delete the plurality of secret keys (SK1, SK2, ...SK n ) and / or multiple random keys (r1, r2, ...r n For example, multiple secret keys (SK1, SK2, ...SK n ) and / or multiple random keys (r1, r2, ...r n ) may not be stored in memory for a long period of time (e.g., only for the time required to generate the secret key and / or provide the secret key to the HSM for wrapping, etc.). Thus, data security is improved by shortening the amount of time that the secret is kept in memory.
[0074] like Figure 4A As shown in the figure 466, the application 402 can request and receive one or more passwords and public key pairs stored in the memory from the SDSS 404. i SK ,PK i For example, application 402 may request and receive one or more password and public key pairs from SDSS 404. i SK ,PK i ] for encrypting one or more data files and / or one or more chunks of data files. In some non-limiting embodiments or aspects, access and / or control of the application 402 on the data security system 102 may be provided via the user device 106 (e.g., via a user interface of the user device 106, etc.).
[0075] like Figure 3B As shown, at step 314, process 300 includes receiving a data chunk for encryption. For example, data security system 102 (eg, application 402, SDSS 404, etc.) may receive a data chunk (M i ) for encryption. For example, the data security system 102 (eg, the application 402, the SDSS 404, etc.) may receive another data chunk (M j ) is used for encryption. In this example, and if Figure 4B As shown in the figure 468, the application 402 can receive the data block (M i )(and / or additional data chunks (M j ) etc.) are used for encryption.
[0076] In some non-limiting embodiments or aspects, a data chunk may include a portion of a data file. For example, application 402 may group or split a data file or a larger data chunk into multiple data chunks. For example, application 402 may group a 10Kb file into ten 1Kb data chunks. In this example, application 402 may use different cryptographic and public key pairs [C i SK ,PK i ] to encrypt each of the plurality of data chunks. For example, the application 402 may use a password and a public key pair [C i SK ,PK i ] to derive DEK to block the data (M i ) is encrypted using a different password and public key pair [C i SK ,PK i ]'s other password and public key pair [C j SK ,PK j ] to derive another DEK (eg, DEK') to access another data chunk (M j ) is encrypted, as described in more detail below. Therefore, even if the password and public key pair [C i SK ,PK i ] is cracked, the entire file or each data block cannot be recovered by a malicious party, because each data block is based on a different password and public key pair [C i SK ,PK i ] for encryption.
[0077] like Figure 3B As shown, at step 316, process 300 includes generating a DEK for each data chunk. For example, data security system 102 (e.g., application 402, SDSS 404, etc.) may generate a DEK based on a hash function (H), a plurality of public keys (PK1, PK2, ... PK n ) in the public key (PK i ) and a random number (R). For example, the data security system 102 (eg, the application 402, the SDSS 404, etc.) may generate a DEK based on a hash function (H), a plurality of public keys (PK1, PK2, ... PK n ) in the other public key (PK j ) and another random number (R) to generate another DEK (e.g., DEK'). In this example, and as Figure 4B As shown in the figure 470, the application 402 can derive or generate the DEK according to the following equation (3):
[0078] DEK=H(PK i R ) (3)
[0079] Where H is the hash function, PK i There are multiple public keys (PK1, PK2, ...PK n ), and R is a random number.
[0080] like Figure 3B As shown, at step 318, process 300 includes encrypting each data chunk using a different DEK. For example, data security system 102 (eg, application 402, SDSS 404, etc.) may encrypt each data chunk using a DEK. i ) is encrypted to generate an encrypted data block (C Mi For example, the data security system 102 (eg, the application 402, the SDSS 404, etc.) may use another DEK different from the DEK to access another data chunk (M). j ) to generate another encrypted data block (C Mj ). In this example, and if Figure 4B As shown in the figure 472 in FIG. 1 , the application 402 can use the DEK (and / or another DEK, etc.) to access the data block (M i )(and / or additional data chunks (M j ) etc.) to generate an encrypted data block (C Mi )(and / or another encrypted data block (C Mj ) etc.). In some non-limiting embodiments or aspects, the application 402 may use Advanced Standard Encryption with Galois / Counter Mode (AES-GCM) encryption technology to encrypt the data chunks (M i Therefore, as described above, even if the DEK is cracked, the entire file or each data block encrypted by the application cannot be recovered by a malicious party because each data block is encrypted by a different DEK.
[0081] like Figure 3B As shown, at step 320, process 300 includes generating a header for each encrypted data block. For example, data security system 102 (eg, application 402, SDSS 404, etc.) may generate a header including a plurality of passwords (C1, C2, ..., C n ) corresponds to multiple public keys (PK1, PK2, ...PK n ) in the public key (PK i )'s password (C i) and a header (Hdr) of key-encapsulated data. For example, the data security system 102 (eg, the application 402, the SDSS 404, etc.) may generate a header including a plurality of passwords (C1, C2, ..., C n ) corresponds to multiple public keys (PK1, PK2, ...PK n ) in another public key (PKj) of another cipher (C j ) and another header (Hdr') of the additional key encapsulated data. In this example, and as Figure 4B As shown in the reference numeral 474 in FIG. 1 , the application 402 may generate a password (C i )(and / or password(C j )) and the header (Hdr) of the key encapsulated data (and / or the additional header (Hdr')).
[0082] In some non-limiting embodiments or aspects, for an encrypted data block (C Mj ) may include a hash H(PK) of the corresponding public key. i ), corresponding password (C i ), random number generator function g R , the hash of the corresponding public key is self-multiplied to the power H(PK) of the hash (H) of the corresponding DEK i ) H(DEK) For example, the header (Hdr) can be expressed as H(PK i )||(C i )||g R ||H(PK i ) H(DEK) Similarly, the other header (Hdr') can be expressed as H(PK j )||(Cj)||g R ||H(PKj) H(DEK ' ) .
[0083] like Figure 3B As shown, at step 322, process 300 includes storing, for each data chunk, a ciphertext including a header and an encrypted data chunk in a database. For example, data security system 102 (e.g., application 402, SDSS 404, etc.) may store a ciphertext including a header (Hdr) and an encrypted data chunk (C Mi For example, the data security system 102 (eg, the application 402, the SDSS 404, etc.) may store in a database the ciphertext (CT) including the additional header (Hdr') and the additional encrypted data chunk (C Mj ). In this example, and as Figure 4BAs shown in the reference numerals 476 and 478 in FIG. 1 , the application 402 may create a packet including a header (Hdr) and an encrypted data block (C Mi ) )(and / or additional headers (Hdr')) and additional encrypted data chunks (C Mj ) (and / or additional ciphertext (CT')) and store the ciphertext in a database. For example, the header (e.g., Hdr, Hdr', etc.) may serve as and / or be referred to as a key encapsulation mechanism (KEM), and the encrypted data chunk (e.g., C Mi , C Mj etc.) may act as and / or be referred to as a data encapsulation mechanism (DEM).
[0084] like Figure 3C As shown, at step 324, process 300 includes receiving a request to decrypt a ciphertext. For example, data security system 102 (e.g., application 402, SDSS 404, etc.) may receive a request to decrypt a ciphertext (CT). For example, data security system 102 (e.g., application 402, SDSS 404, etc.) may receive a request to decrypt another ciphertext (CT'). In this example, and as Figure 4C As shown at reference numerals 480 and 482 in FIG. 1 , the application 402 may provide a request for a secret key to decrypt a ciphertext (CT) (and / or another ciphertext (CT')) including a header (Hdr) (and / or a ciphertext (CT) (and / or another header (Hdr') of another ciphertext (CT')) to the SDSS 404. For example, a request to decrypt a batch or set of ciphertexts may be received, and a request for a secret key to decrypt each ciphertext in the batch or set may be provided to the SDSS 404.
[0085] like Figure 3C As shown, at step 326, process 300 includes providing a password to the HSM. For example, data security system 102 (e.g., application 402, SDSS 404, etc.) may provide a password (C ) to HSM 104 in response to receiving a request to decrypt the ciphertext (CT). i For example, data security system 102 (eg, application 402, SDSS 404, etc.) may provide additional ciphertext (CT') to HSM 104 in response to receiving a request to decrypt additional ciphertext (CT'). j ). In this example, and if Figure 4C As shown in the figure 484, SDSS 404 can extract the password (C) from the header (Hdr) (and / or the additional header (Hdr')) i )(and / or password(C j )), and provide the extracted password to HSM 104 (Ci , C j ) and decryption code (C i , C j ) to recover the secret key (SK i SK j ). For example, a request to decrypt the extracted password batch or set may be provided to HSM 104. For example, HSM 104 may utilize KEK to decrypt the password (C i , C j ) to obtain the secret key (SK i SK j ). Thus, instead of sending the entire file to the HSM 104 for decryption or decrypting the entire file with a single header, which increases operational overhead and processing time, non-limiting embodiments or aspects of the present disclosure may send only the extracted password to the HSM 104 for decryption, sending each data chunk of the file with a different header / password to the HSM for encryption, which increases operational overhead and processing time but improves security by achieving forward secrecy.
[0086] like Figure 3C As shown, at step 328, process 300 includes receiving a secret key from the HSM. For example, data security system 102 (e.g., application 402, SDSS 404, etc.) may receive a plurality of secret keys (SK1, SK2, ...SK n ) corresponds to multiple public keys (PK1, PK2, ...PK n ) in the public key (PK i )'s secret key (SK i ), the public key is used to generate the encrypted data block (C Mi For example, the data security system 102 (eg, the application 402, the SDSS 404, etc.) may receive a plurality of secret keys (SK1, SK2, ...SK n ) corresponds to multiple public keys (PK1, PK2, ...PK n ) in the other public key (PK j )'s other secret key (SK j ), the additional public key is used to generate a key for generating an additional encrypted data block (C Mj ) of another DEK (e.g., DEK'). In this example, and as Figure 4C As shown in the figure 486, SDSS 404 can receive multiple secret keys (SK1, SK2, ...SK n ) corresponds to multiple public keys (PK1, PK2, ...PK n ) in the public key (PKi )'s secret key (SK i ), the public key is used to generate the encrypted data block (C Mi ) and / or receive multiple secret keys (SK1, SK2, ...SK n ) corresponds to multiple public keys (PK1, PK2, ...PK n ) in the other public key (PK j )'s other secret key (SK j ), the additional public key is used to generate a key for generating an additional encrypted data block (C Mj ) (eg, DEK′). For example, SDSS 404 may receive from HSM 104 a batch or set of secret keys corresponding to a batch or set of passwords submitted for decryption.
[0087] In some non-limiting embodiments or aspects, and as Figure 4C As shown in the reference numeral 488, SDSS 404 may be based on a secret key (SK i ) and another secret key (SK j ) and provide the token to the application 402 for deriving a DEK based on the token and key encapsulation data and deriving another DEK' based on the token and further key encapsulation data. For example, the token may include a secret key (SK i ) and another secret key (SK j ) (e.g., each secret key in a batch or set of secret keys requested from HSM 104 corresponds to each secret key in a batch or set of data chunks provided by application 402 for decryption, etc.) Thus, a one-time token for decrypting a batch of data chunks or files may be provided.
[0088] like Figure 3C As shown, at step 330, process 300 includes deriving a DEK based on a secret key. For example, data security system 102 (eg, application 402, SDSS 404, etc.) may derive a DEK based on a secret key (SK) received from HSM 104. i ) and the key to encapsulate the data and derive the encrypted data block (C Mi ) of the DEK. For example, the data security system 102 (eg, the application 402, the SDSS 404, etc.) may generate a DEK based on an additional secret key (SK j ) and another key to encapsulate the data and derive the key for generating another encrypted data block (C Mj ) of another DEK (e.g., DEK'). In this example, and as Figure 4CAs shown in the reference numeral 490, the application 402 and / or the SDSS 404 may analyze the header (Hdr) and based on the secret key (SK) received from the HSM 104 i ) and the key to encapsulate the data and derive the encrypted data block (C Mi ) and analyzes the additional header (Hdr') and based on the additional secret key (SK j ) and another key to encapsulate the data and derive the key for generating another encrypted data block (C Mj ) is another DEK (e.g., DEK'). For example, the DEK can be derived according to the following equation (4):
[0089] DEK=H(g R,SKi ) (4)
[0090] Where H is the hash function, g is the generator function, R is a random number, and SK i is the secret key.
[0091] In some non-limiting embodiments or aspects, Figure 4C As shown in FIG. 492, the application 402 and / or the SDSS 404 may verify the derived DEK (and / or the additional derived DEK'). For example, the application 402 and / or the SDSS 404 may verify the derived DEK according to the following equation (5):
[0092] H(PK i )==(H(PK i ) H(DEK) ) 1 / H(DEK) (5)
[0093] Where H is a hash function and PK i is the public key.
[0094] like Figure 3C As shown, at step 332, process 300 includes providing the derived DEK for decrypting the encrypted data chunk, such as Figure 4C For example, the data security system 102 (eg, the application 402, the SDSS 404, etc.) may provide the derived DEK for use in encrypting the encrypted data chunk (C Mi ) is decrypted to obtain the data block (M i In this example, the data security system 102 (eg, the application 402, the SDSS 404, etc.) can utilize the derived DEK to encrypt the encrypted data chunk (C Mi ) is decrypted to obtain the data block (M iFor example, the data security system 102 (eg, the application 402, the SDSS 404, etc.) may utilize the derived additional DEK (eg, DEK′) to provide additional encrypted data chunks (C Mj ) to obtain another data block (M j In this example, the data security system 102 (eg, the application 402, the SDSS 404, etc.) may utilize the derived additional DEK to encrypt additional encrypted data chunks (C Mj ) to obtain another data block (M j In some non-limiting embodiments or aspects, the application 402 may use Advanced Standard Encryption with Galois / Counter Mode (AES-GCM) encryption technology to encode the data chunks (M i ) to decrypt.
[0095] In some non-limiting embodiments or aspects, Figure 4C As shown in FIG. 496 , the application 402 may iteratively decrypt a batch or set of data chunks by: Mi decryption, update the header to the next header (eg, from header (Hdr) to another header (Hdr')), and move the key used to generate the DEK to the next key in the token (eg, from SKi to SK j Therefore, as mentioned above, even if the DEK is cracked, the entire file or each data block encrypted by the application cannot be recovered by a malicious party because each data block is encrypted by a different DEK.
[0096] Although embodiments or aspects have been described in detail for purposes of illustration and description, it should be understood that such detail is for that purpose only and that the embodiments or aspects are not limited to the disclosed embodiments or aspects, but, on the contrary, are intended to cover modifications and equivalent arrangements within the spirit and scope of the appended claims. For example, it should be understood that the present disclosure contemplates that, to the extent possible, one or more features of any embodiment or aspect may be combined with one or more features of any other embodiment or aspect. In fact, any of these features may be combined in a manner not specifically recited in the claims and / or disclosed in the specification. Although each dependent claim listed below may be directly dependent on only one claim, the disclosure of possible implementations includes each dependent claim in combination with each other claim in the claim set.
Claims
1. A computer-implemented method comprising: Using at least one processor to store multiple public keys (PK1, PK2, ...PK n ) associated with multiple passwords (C1, C2, ...C n ), wherein the plurality of passwords (C1, C2, ... C n ) includes multiple secret keys (SK1, SK2, ...SK n ), and wherein the plurality of secret keys (SK1, SK2, ... SK n ) corresponds to the multiple public keys (PK1, PK2, ...PK n ); Receiving data chunks M using at least one processor i For encryption; Using at least one processor based on the hash function H, the plurality of public keys (PK1, PK2, ... PK n ) i and a random number R to generate a data encryption key DEK; Using at least one processor to use the DEK to process the data block M i Encryption is performed to generate encrypted data block C Mi ; Generates a plurality of passwords (C1, C2, ... C n ) corresponding to the multiple public keys (PK1, PK2, ...PK n ) in the public key PK i Password C i and the header Hdr of the key encapsulated data; Using at least one processor, storing the header Hdr and the encrypted data block C in a database Mi The ciphertext CT; Receiving, using at least one processor, a request to decrypt the ciphertext CT; In response to receiving a request to decrypt the ciphertext CT, providing the ciphertext C to the hardware security module HSM using at least one processor i ; Receive the plurality of secret keys (SK1, SK2, ...SK3) from the HSM using at least one processor n ) corresponding to the multiple public keys (PK1, PK2, ...PK n ) in the public key PK i The secret key SK i , the public key is used to generate the encrypted data block C Mi the DEK; using at least one processor based on the secret key SK received from the HSM i and the key encapsulation data to generate the encrypted data block C Mi the DEK; as well as Using at least one processor to provide the derived DEK for use in encrypting the encrypted data chunk C Mi Decryption is performed to obtain the data block M i .
2. The computer-implemented method of claim 1 , further comprising: Receive a plurality of random keys (r1, r2, ... r3) from the HSM using at least one processor n ); using at least one processor based on a generator function g and the plurality of random keys (r1, r2, ... r n ) and generate the multiple public keys (PK1, PK2, ...PK n ); Using at least one processor based on the hash function H and the plurality of public keys (PK1, PK2, ... PK n ) and generate corresponding to the multiple public keys (PK1, PK2, ...PK n ) of the plurality of secret keys (SK1, SK2, ...SK n ); Provide the plurality of secret keys (SK1, SK2, ...SK3) to the HSM using at least one processor n ); as well as receiving, using at least one processor, from the HSM the plurality of secret keys (SK1, SK2, ...SK3) encrypted using the KEK; n ) as the plurality of passwords (C1, C2, ... C n ).
3. The computer-implemented method of claim 2, further comprising: The memory stores the plurality of public keys (PK1, PK2, ...PK n ) associated with the plurality of passwords (C1, C2, ... C n ), then deleting the plurality of secret keys (SK1, SK2, ...SK n ) and the plurality of random keys (r1, r2, ... r n ).
4. The computer-implemented method of claim 1 , wherein the key encapsulation data comprises a hash H(PK) of the public key. i ), the password C i , the random number generator function g R , and the hash of the corresponding public key is raised to the power H(PK) of the hash of the DEK i ) H(DEK) .
5. The computer-implemented method of claim 1 , further comprising: Receiving, with at least one processor, another data chunk M j For encryption; Using at least one processor based on the hash function H, the multiple public keys (PK1, PK2, ... PK n ) in the other public key PK j and another random number R to generate another data encryption key DEK'; The further data chunk M is processed by at least one processor using the further DEK′. j Encryption is performed to generate another encrypted data block C Mj ; Generates a plurality of passwords (C1, C2, ... C n ) corresponding to the multiple public keys (PK1, PK2, ...PK n ) in the other public key PK j Another password C j and another header Hdr' of another key encapsulation data; storing in the database, using at least one processor, the data including the further header Hdr′ and the further encrypted data chunk C Mj The other ciphertext CT'; receiving, with at least one processor, a request to decrypt the additional ciphertext CT'; In response to receiving a request to decrypt the further ciphertext CT', providing the further ciphertext C to the HSM using at least one processor j ; Receive the plurality of secret keys (SK1, SK2, ...SK3) from the HSM using at least one processor n ) corresponding to the multiple public keys (PK1, PK2, ...PK n ) in the other public key PK j The other secret key SK j , the other public key is used to generate the other encrypted data block C Mj The additional DEK'; using at least one processor based on the further secret key SK received from the HSM j and the further key encapsulation data to derive the further encrypted data chunk C Mj The additional DEK'; as well as Providing, with at least one processor, a further derived DEK for use in encrypting the further encrypted data chunk C Mj Decryption is performed to obtain the additional data block M j .
6. The computer-implemented method of claim 5, further comprising: Based on the secret key SK, at least one processor i and the additional secret key SK j And generate token; deriving, with at least one processor, the DEK based on the token and the key encapsulation data; as well as The further DEK' is derived with at least one processor based on the token and the further key encapsulation data.
7. A computing system comprising: Memory; One or more processors coupled to the memory and programmed and / or configured to: The memory stores a plurality of public keys (PK1, PK2, ...PK n ) associated with multiple passwords (C1, C2, ...C n ), wherein the plurality of passwords (C1, C2, ... C n ) includes multiple secret keys (SK1, SK2, ...SK n ), and wherein the plurality of secret keys (SK1, SK2, ... SK n ) corresponds to the multiple public keys (PK1, PK2, ...PK n ); Receive data chunk M i For encryption; Based on the hash function H, the multiple public keys (PK1, PK2, ...PK n ) i and a random number R to generate a data encryption key DEK; The data block M is queried using the DEK i Encryption is performed to generate encrypted data block C Mi ; Generate a plurality of passwords (C1, C2, ... C n ) corresponding to the multiple public keys (PK1, PK2, ...PK n ) in the public key PK i Password C i and the header Hdr of the key encapsulated data; The header Hdr and the encrypted data block C are stored in the database. Mi The ciphertext CT; receiving a request to decrypt the ciphertext CT; In response to receiving a request to decrypt the ciphertext CT, providing the password C to the hardware security module HSM i ; Receive the plurality of secret keys (SK1, SK2, ...SK n ) corresponding to the multiple public keys (PK1, PK2, ...PK n ) in the public key PK i The secret key SK i , the public key is used to generate the encrypted data block C Mi the DEK; Based on the secret key SK received from the HSM i and the key encapsulation data to generate the encrypted data block C Mi said DEK; and The derived DEK is provided for use in encrypting the encrypted data chunk C Mi Decryption is performed to obtain the data block M i .
8. The system of claim 7, wherein the one or more processors are further programmed and / or configured to: Receive multiple random keys (r1, r2, ... r n ); Based on the generator function g and the plurality of random keys (r1, r2, ... n ) and generate the multiple public keys (PK1, PK2, ...PK n ); Based on the hash function H and the multiple public keys (PK1, PK2, ...PK n ) and generate corresponding to the multiple public keys (PK1, PK2, ...PK n ) of the plurality of secret keys (SK1, SK2, ...SK n ); Provide the plurality of secret keys (SK1, SK2, ...SK n );and Receive the plurality of secret keys (SK1, SK2, ...SK3) encrypted with the KEK from the HSM n ) as the plurality of passwords (C1, C2, ... C n ).
9. The system of claim 8, wherein the one or more processors are further programmed and / or configured to: The memory stores the plurality of public keys (PK1, PK2, ...PK n ) associated with the plurality of passwords (C1, C2, ... C n ) after which the plurality of secret keys (SK1, SK2, ...SK n ) and the plurality of random keys (r1, r2, ... r n ).
10. The system of claim 7, wherein the key encapsulation data comprises a hash H(PK) of the public key. i ), the password C i , the random number generator function g R , and the hash of the corresponding public key is raised to the power H(PK) of the hash of the DEK i ) H(DEK) .
11. The system of claim 7, wherein the one or more processors are further programmed and / or configured to: Receive another data chunk M j For encryption; Based on the hash function H, the multiple public keys (PK1, PK2, ...PK n ) in the other public key PK j and another random number R to generate another data encryption key DEK'; The further data chunk M is then processed using the further DEK′. j Encryption is performed to generate another encrypted data block C Mj ; Generate a plurality of passwords (C1, C2, ... C n ) corresponding to the multiple public keys (PK1, PK2, ...PK n ) in the other public key PK j Another password C j and another header Hdr' of another key encapsulation data; The data block comprising the further header Hdr' and the further encrypted data block C is stored in the database. Mj The other ciphertext CT'; receiving a request to decrypt the further ciphertext CT'; In response to receiving a request to decrypt the further ciphertext CT', providing the further ciphertext C to the HSM j ; Receive the plurality of secret keys (SK1, SK2, ...SK n ) corresponding to the multiple public keys (PK1, PK2, ...PK n ) in the other public key PK j The other secret key SK j , the other public key is used to generate the other encrypted data block C Mj The additional DEK'; Based on the further secret key SK received from the HSM j and the further key encapsulation data to derive the further encrypted data chunk C Mj said additional DEK'; and Providing a further derived DEK for use in encrypting said further encrypted data chunk C Mj Decryption is performed to obtain the additional data block M j .
12. The system according to claim 11, further comprising: Based on the secret key SK i and the additional secret key SK j And generate token; deriving the DEK based on the token and the key encapsulation data; and The further DEK' is derived based on the token and the further key encapsulation data.
13. A computer program product comprising program instructions which, when executed by at least one processor, cause the at least one processor to: Store multiple public keys (PK1, PK2, ...PK n ) associated with multiple passwords (C1, C2, ...C n ), wherein the plurality of passwords (C1, C2, ... C n ) includes multiple secret keys (SK1, SK2, ...SK n ), and wherein the plurality of secret keys (SK1, SK2, ... SK n ) corresponds to the multiple public keys (PK1, PK2, ...PK n ); Receive data chunk M i For encryption; Based on the hash function H, the multiple public keys (PK1, PK2, ...PK n ) i and a random number R to generate a data encryption key DEK; The data block M is queried using the DEK i Encryption is performed to generate encrypted data block C Mi ; Generate a plurality of passwords (C1, C2, ... C n ) corresponding to the multiple public keys (PK1, PK2, ...PK n ) in the public key PK i Password C i and the header Hdr of the key encapsulated data; The header Hdr and the encrypted data block C are stored in the database. Mi The ciphertext CT; receiving a request to decrypt the ciphertext CT; In response to receiving a request to decrypt the ciphertext CT, providing the password C to the hardware security module HSM i ; Receive the plurality of secret keys (SK1, SK2, ...SK n ) corresponding to the multiple public keys (PK1, PK2, ...PK n ) in the public key PK i The secret key SK i , the public key is used to generate the encrypted data block C Mi the DEK; Based on the secret key SK received from the HSM i and the key encapsulation data to generate the encrypted data block C Mi said DEK; and The derived DEK is provided for use in encrypting the encrypted data chunk C Mi Decryption is performed to obtain the data block M i .
14. The computer program product of claim 13, wherein the instructions further cause the at least one processor to: Receive multiple random keys (r1, r2, ... r n ); Based on the generator function g and the plurality of random keys (r1, r2, ... n ) and generate the multiple public keys (PK1, PK2, ...PK n ); Based on the hash function H and the multiple public keys (PK1, PK2, ...PK n ) and generate corresponding to the multiple public keys (PK1, PK2, ...PK n ) of the plurality of secret keys (SK1, SK2, ...SK n ); Provide the plurality of secret keys (SK1, SK2, ...SK n );and Receive the plurality of secret keys (SK1, SK2, ...SK3) encrypted with the KEK from the HSM n ) as the plurality of passwords (C1, C2, ... C n ).
15. The computer program product of claim 14, wherein the instructions further cause the at least one processor to: The memory stores the plurality of public keys (PK1, PK2, ...PK n ) associated with the plurality of passwords (C1, C2, ... C n ) after which the plurality of secret keys (SK1, SK2, ...SK n ) and the plurality of random keys (r1, r2, ... r n ).
16. The computer program product of claim 13, wherein the key encapsulation data comprises a hash H(PK) of the public key. i ), the password C i , the random number generator function g R , and the hash of the corresponding public key is raised to the power H(PK) of the hash of the DEK i ) H(DEK) .
17. The computer program product of claim 13, wherein the instructions further cause the at least one processor to: Receive another data chunk M j For encryption; Based on the hash function H, the multiple public keys (PK1, PK2, ...PK n ) in the other public key PK j and another random number R to generate another data encryption key DEK'; The further data chunk M is then processed using the further DEK′. j Encryption is performed to generate another encrypted data block C Mj ; Generate a plurality of passwords (C1, C2, ... C n ) corresponding to the multiple public keys (PK1, PK2, ...PK n ) in the other public key PK j Another password C j and another header Hdr' of another key encapsulation data; The data block comprising the further header Hdr' and the further encrypted data block C is stored in the database. Mj The other ciphertext CT'; receiving a request to decrypt the further ciphertext CT'; In response to receiving a request to decrypt the further ciphertext CT', providing the further ciphertext C to the HSM j ; Receive the plurality of secret keys (SK1, SK2, ...SK n ) corresponding to the multiple public keys (PK1, PK2, ...PK n ) in the other public key PK j The other secret key SK j , the other public key is used to generate the other encrypted data block C Mj The additional DEK'; Based on the further secret key SK received from the HSM j and the further key encapsulation data to derive the further encrypted data chunk C Mj said additional DEK'; and Providing a further derived DEK for use in encrypting said further encrypted data chunk C Mj Decryption is performed to obtain the additional data block M j .
18. The computer program product of claim 17, wherein the instructions further cause the at least one processor to: Based on the secret key SK i and the additional secret key SK j And generate token; deriving the DEK based on the token and the key encapsulation data; and The further DEK' is derived based on the token and the further key encapsulation data.
Citation Information
Patent Citations
Method and system for ensuring high data safety
CN105871858A
Systems and methods for securing data
CN107533616A