IP Library Granted Patent US 11,784,798
Granted Patent B2
US 11,784,798 · App. 17/217,257 · Granted Oct 10, 2023

System, method, and computer program product for data security

Inventors: Sivanarayana Gaddam (Santa Clara, CA); Yogesh Lokhande (Karnataka, IN); Biju Abraham (Fremont, CA)
Assignee: Visa International Service Association
H04L9/0822H04L9/0643H04L9/30
View Patent ↗
Loading inventors, assignments & file history…
Monitor This Case
Get email alerts when status or documents change.
Order Certified Copies
Most orders are placed with the USPTO same day — all within 24 business hours.
Order via The Patent Place →
Pre-filled with this patent's details
Quick Facts
Patent No.
US 11,784,798
App. No.
17/217,257
Granted
Oct 10, 2023
Kind
B2
Abstract

Systems, methods, and computer program products for data security store, in memory, a plurality of ciphers in association with a plurality of public keys, the plurality of ciphers including a plurality of secret keys encrypted with a key encryption key, and the plurality of secret keys corresponding to the plurality of public keys; receive, a data chunk for encryption; generate, a data encryption key based on a hash function, a public key of the plurality of public keys, and a random number; encrypt, the data chunk with the data encryption key to generate an encrypted data chunk; generate, a header including a cipher of the plurality of ciphers corresponding to the public key of the plurality of public keys and key encapsulation data; and store, in a database, a cipher text including the header and the encrypted data chunk.

Claims (110)

1. A computer-implemented method comprising:

storing, with at least one processor, in memory, a plurality of ciphers (C 1 , C 2 , . . . C n ) in association with a plurality of public keys (PK 1 , PK 2 , PK n ), wherein the plurality of ciphers (C 1 , C 2 , . . . C n ) includes a plurality of secret keys (SK 1 , SK 2 , SK n ) encrypted with a key encryption key (KEK), and wherein the plurality of secret keys (SK 1 , SK 2 , SK n ) correspond to the plurality of public keys (PK 1 , PK 2 , PK n );

receiving, with at least one processor, a data chunk (M i ) for encryption;

generating, with at least one processor, a data encryption key (DEK) based on a hash function (H), a public key (PK 1 ) of the plurality of public keys (PK 1 , PK 2 , PK n ), and a random number (R);

encrypting, with at least one processor, the data chunk (M i ) with the DEK to generate an encrypted data chunk (C Mi );

generating, with at least one processor, a header (Hdr) including a cipher (C i ) of the plurality of ciphers (C 1 , C 2 , . . . C n ) corresponding to the public key (PK 1 ) of the plurality of public keys (PK 1 , PK 2 , PK n ) and key encapsulation data;

storing, with at least one processor, in a database, a cipher text (CT) including the header (Hdr) and the encrypted data chunk (C Mi );

receiving, with at least one processor, a request to decrypt the cipher text (CT);

in response to receiving a request to decrypt the cipher text (CT), providing, with at least one processor, to a hardware security module (HSM), the cipher (C i );

receiving, with at least one processor, from the HSM, a secret key (SK 1 ) of the plurality of secret keys (SK 1 , SK 2 , SK n ) that corresponds to the public key (PK 1 ) of the plurality of public keys (PK 1 , PK 2 , PK n ) used to generate the DEK used to generate the encrypted data chunk (C Mi );

deriving, with at least one processor, based on the secret key (SK 1 ) received from the HSM and the key encapsulation data, the DEK used to generate the encrypted data chunk (C Mi ); and

providing, with at least one processor, the derived DEK for decrypting the encrypted data chunk (C Mi ) to obtain the data chunk (M i ).

2. The computer-implemented method of claim 1 , further comprising:

receiving, with at least one processor, from the HSM, a plurality of random keys (r 1 , r 2 , r n );

generating, with at least one processor, based on a generator function (g) and the plurality of random keys (r 1 , r 2 , r n ), the plurality of public keys (PK 1 , PK 2 , PK n );

generating, with at least one processor, based on the hash function (H) and the plurality of public keys (PK 1 , PK 2 , PK n ), the plurality of secret keys (SK 1 , SK 2 , SK n ) that correspond to the plurality of public keys (PK 1 , PK 2 , PK n );

providing, with at least one processor, to the HSM, the plurality of secret keys (SK 1 , SK 2 , SK n ); and

receiving, with at least one processor, from the HSM, the plurality of secret keys (SK 1 , SK 2 , SK n ) encrypted with the KEK as the plurality of ciphers (C 1 , C 2 , . . . C n ).

3. The computer-implemented method of claim 2 , further comprising:

after storing, in the memory, the plurality of ciphers (C 1 , C 2 , . . . C n ) in association with the plurality of public keys (PK 1 , PK 2 , PK n ), deleting, with at least one processor, the plurality of secret keys (SK 1 , SK 2 , SK n ) and the plurality of random keys r 2 , r n ).

4. The computer-implemented method of claim 1 , wherein the key encapsulation data includes the hash of the public key H(PK 1 ), the cipher (C i ), a generator function of the random number g R , and the hash of the corresponding public key raised to a power of the hash of the DEK H(PK i ) H(DEK) .

5. The computer-implemented method of claim 1 , further comprising:

receiving, with at least one processor, a further data chunk (M j ) for encryption;

generating, with at least one processor, a further data encryption key (DEK′) based on the hash function (H), a further public key (PK j ) of the plurality of public keys (PK 1 , PK 2 , PK n ), and a further random number (R);

encrypting, with at least one processor, the further data chunk (M j ) with the further DEK′ to generate a further encrypted data chunk (C Mj );

generating, with at least one processor, a further header (Hdr′) including a further cipher (C j ) of the plurality of ciphers (C 1 , C 2 , . . . C n ) corresponding to the further public key (PK 1 ) of the plurality of public keys (PK 1 , PK 2 , PK n ) and further key encapsulation data;

storing, with at least one processor, in the database, a further cipher text (CT′) including the further header (Hdr′) and the further encrypted data chunk (C Mj );

receiving, with at least one processor, a request to decrypt the further cipher text (CT′);

in response to receiving a request to decrypt the further cipher text (CT′), providing, with at least one processor, to the HSM, the further cipher (C Mj );

receiving, with at least one processor, from the HSM, a further secret key (SK i ) of the plurality of secret keys (SK 1 , SK 2 , SK n ) that corresponds to the further public key (PK 1 ) of the plurality of public keys (PK 1 , PK 2 , PK n ) used to generate the further DEK′ used to generate the further encrypted data chunk (C Mj );

deriving, with at least one processor, based on the further secret key (SK j ) received from the HSM and the further key encapsulation data, the further DEK′ used to generate the further encrypted data chunk (C Mj ); and

providing, with at least one processor, the further derived DEK for decrypting the further encrypted data chunk (C Mj ) to obtain the further data chunk (MO.

6. The computer-implemented method of claim 5 , further comprising:

generating, with at least one processor, a token based on the secret key (SK i ) and the further secret key (SK j );

deriving, with at least one processor, based on the token and the key encapsulation data, the DEK; and

deriving, with at least one processor, based on the token and the further key encapsulation data, the further DEK′.

7. A computing system comprising:

a memory;

one or more processors coupled to the memory and programmed and/or configured to:

store, in the memory, a plurality of ciphers (C 1 , C 2 , . . . C n ) in association with a plurality of public keys (PK 1 , PK 2 , PK n ), wherein the plurality of ciphers (C 1 , C 2 , . . . C n ) includes a plurality of secret keys (SK 1 , SK 2 , SK n ) encrypted with a key encryption key (KEK), and wherein the plurality of secret keys (SK 1 , SK 2 , SK n ) correspond to the plurality of public keys (PK 1 , PK 2 , PK n );

receive, a data chunk (M i ) for encryption;

generate, a data encryption key (DEK) based on a hash function (H), a public key (PK 1 ) of the plurality of public keys (PK 1 , PK 2 , PK n ), and a random number (R);

encrypt, the data chunk (M i ) with the DEK to generate an encrypted data chunk (C Mi );

generate, a header (Hdr) including a cipher (C i ) of the plurality of ciphers (C 1 , C 2 , . . . C n ) corresponding to the public key (PK 1 ) of the plurality of public keys (PK 1 , PK 2 , PK n ) and key encapsulation data;

store, in a database, a cipher text (CT) including the header (Hdr) and the encrypted data chunk (C Mi );

receive, a request to decrypt the cipher text (CT);

in response to receiving a request to decrypt the cipher text (CT), provide, to a hardware security module (HSM), the cipher (C i );

receive, from the HSM, a secret key (SK i ) of the plurality of secret keys (SK 1 , SK 2 , SK n ) that corresponds to the public key (PK 1 ) of the plurality of public keys (PK 1 , PK 2 , PK n ) used to generate the DEK used to generate the encrypted data chunk (C Mi );

derive, based on the secret key (SK i ) received from the HSM and the key encapsulation data, the DEK used to generate the encrypted data chunk (C Mi ); and

provide, the derived DEK for decrypting the encrypted data chunk (C Mi ) to obtain the data chunk (M i ).

8. The system of claim 7 , wherein the one or more processors are further programmed and/or configured to:

receive, from the HSM, a plurality of random keys (r 1 , r 2 , r n );

generate, based on a generator function (g) and the plurality of random keys r 2 , r n ), the plurality of public keys (PK 1 , PK 2 , PK n );

generate, based on the hash function (H) and the plurality of public keys (PK 1 , PK 2 , PK n ), the plurality of secret keys (SK 1 , SK 2 , SK n ) that correspond to the plurality of public keys (PK 1 , PK 2 , PK n );

provide, to the HSM, the plurality of secret keys (SK 1 , SK 2 , SK n ); and

receive, from the HSM, the plurality of secret keys (SK 1 , SK 2 , SK n ) encrypted with the KEK as the plurality of ciphers (C 1 , C 2 , . . . C n ).

9. The system of claim 8 , wherein the one or more processors are further programmed and/or configured to:

after storing, in the memory, the plurality of ciphers (C 1 , C 2 , . . . C n ) in association with the plurality of public keys (PK 1 , PK 2 , PK n ), delete the plurality of secret keys (SK 1 , SK 2 , SK n ) and the plurality of random keys (r 1 , r 2 , r n ).

10. The system of claim 7 , wherein the key encapsulation data includes the hash of the public key H(PK 1 ), the cipher (C i ), a generator function of the random number g R , and the hash of the corresponding public key raised to a power of the hash of the DEK H(PK i ) H(DEK) .

11. The system of claim 7 , wherein the one or more processors are further programmed and/or configured to:

receive a further data chunk (M i ) for encryption;

generate a further data encryption key (DEK′) based on the hash function (H), a further public key (PK i ) of the plurality of public keys (PK 1 , PK 2 , PK n ), and a further random number (R);

encrypt the further data chunk (M j ) with the further DEK′ to generate a further encrypted data chunk (Cm);

generate a further header (Hdr′) including a further cipher (C j ) of the plurality of ciphers (C 1 , C 2 , . . . C n ) corresponding to the further public key (PK i ) of the plurality of public keys (PK 1 , PK 2 , PK n ) and further key encapsulation data;

store, in the database, a further cipher text (CT′) including the further header (Hdr′) and the further encrypted data chunk (C Mj );

receive, a request to decrypt the further cipher text (CT′);

in response to receiving a request to decrypt the further cipher text (CT′), provide, to the HSM, the further cipher (C j );

receive, from the HSM, a further secret key (SK j ) of the plurality of secret keys (SK 1 , SK 2 , SK n ) that corresponds to the further public key (PK j ) of the plurality of public keys (PK 1 , PK 2 , PK n ) used to generate the further DEK′ used to generate the further encrypted data chunk (C Mj );

derive, based on the further secret key (SK j ) received from the HSM and the further key encapsulation data, the further DEK′ used to generate the further encrypted data chunk (C Mj ); and

provide the further derived DEK for decrypting the further encrypted data chunk (C Mj ) to obtain the further data chunk (M j ).

12. The system of claim 11 , further comprising:

generating a token based on the secret key (SK i ) and the further secret key (SK j );

deriving, based on the token and the key encapsulation data, the DEK; and

deriving, based on the token and the further key encapsulation data, the further DEK′.

13. A computer program product comprising at least one non-transitory computer-readable medium including program instructions that, when executed by at least one processor, cause the at least one processor to:

store, in memory, a plurality of ciphers (C 1 , C 2 , . . . C n ) in association with a plurality of public keys (PK 1 , PK 2 , PK n ), wherein the plurality of ciphers (C 1 , C 2 , . . . C n ) includes a plurality of secret keys (SK 1 , SK 2 , SK n ) encrypted with a key encryption key (KEK), and wherein the plurality of secret keys (SK 1 , SK 2 , SK n ) correspond to the plurality of public keys (PK 1 , PK 2 , PK n );

receive, a data chunk (M i ) for encryption;

generate a data encryption key (DEK) based on a hash function (H), a public key (PK 1 ) of the plurality of public keys (PK 1 , PK 2 , PK n ), and a random number (R);

encrypt the data chunk (M i ) with the DEK to generate an encrypted data chunk (C Mi );

generate a header (Hdr) including a cipher (C i ) of the plurality of ciphers (C i , C 2 , . . . C n ) corresponding to the public key (PK 1 ) of the plurality of public keys (PK 1 , PK 2 , PK n ) and key encapsulation data;

store, in a database, a cipher text (CT) including the header (Hdr) and the encrypted data chunk (C Mi );

receive a request to decrypt the cipher text (CT);

in response to receiving a request to decrypt the cipher text (CT), provide to a hardware security module (HSM), the cipher (C i );

receive, from the HSM, a secret key (SK i ) of the plurality of secret keys (SK 1 , SK 2 , SK n ) that corresponds to the public key (PK 1 ) of the plurality of public keys (PK 1 , PK 2 , PK n ) used to generate the DEK used to generate the encrypted data chunk (C Mi );

derive, based on the secret key (SK i ) received from the HSM and the key encapsulation data, the DEK used to generate the encrypted data chunk (C Mi ); and

provide, the derived DEK for decrypting the encrypted data chunk (C Mi ) to obtain the data chunk (M i ).

14. The computer program product of claim 13 , wherein the instructions further cause the at least one processor to:

receive, from the HSM, a plurality of random keys (r 1 , r 2 , r n );

generate, based on a generator function (g) and the plurality of random keys r 2 , r n ), the plurality of public keys (PK 1 , PK 2 , PK n );

generate, based on the hash function (H) and the plurality of public keys (PK 1 , PK 2 , PK n ), the plurality of secret keys (SK 1 , SK 2 , SK n ) that correspond to the plurality of public keys (PK 1 , PK 2 , PK n );

provide, to the HSM, the plurality of secret keys (SK 1 , SK 2 , SK n ); and

receive, from the HSM, the plurality of secret keys (SK 1 , SK 2 , SK n ) encrypted with the KEK as the plurality of ciphers (C 1 , C 2 , . . . C n ).

15. The computer program product of claim 14 , wherein the instructions further cause the at least one processor to:

after storing, in the memory, the plurality of ciphers (C 1 , C 2 , . . . C n ) in association with the plurality of public keys (PK 1 , PK 2 , PK n ), delete the plurality of secret keys (SK 1 , SK 2 , SK n ) and the plurality of random keys (r 1 , r 2 , r n ).

16. The computer program product of claim 13 , wherein the key encapsulation data includes the hash of the public key H(PK 1 ), the cipher (C i ), a generator function of the random number g R , and the hash of the corresponding public key raised to a power of the hash of the DEK H(PK i ) H(DEK) .

17. The computer program product of claim 13 , wherein the instructions further cause the at least one processor to:

receive a further data chunk (M j ) for encryption;

generate a further data encryption key (DEK′) based on the hash function (H), a further public key (PK j ) of the plurality of public keys (PK 1 , PK 2 , PK n ), and a further random number (R);

encrypt the further data chunk (M j ) with the further DEK′ to generate a further encrypted data chunk (Cm);

generate a further header (Hdr′) including a further cipher (C j ) of the plurality of ciphers (C 1 , C 2 , . . . C n ) corresponding to the further public key (PK j ) of the plurality of public keys (PK 1 , PK 2 , PK n ) and further key encapsulation data;

store, in the database, a further cipher text (CT′) including the further header (Hdr′) and the further encrypted data chunk (C Mj );

receive a request to decrypt the further cipher text (CT′);

in response to receiving a request to decrypt the further cipher text (CT′), provide, to the HSM, the further cipher (C j );

receive, from the HSM, a further secret key (SK i ) of the plurality of secret keys (SK 1 , SK 2 , SK n ) that corresponds to the further public key (PK i ) of the plurality of public keys (PK 1 , PK 2 , PK n ) used to generate the further DEK′ used to generate the further encrypted data chunk (C Mj );

derive, based on the further secret key (SK j ) received from the HSM and the further key encapsulation data, the further DEK′ used to generate the further encrypted data chunk (C Mj ); and

provide, the further derived DEK for decrypting the further encrypted data chunk (C Mj ) to obtain the further data chunk (M j ).

18. The computer program product of claim 17 , wherein the instructions further cause the at least one processor to:

generate a token based on the secret key (SK i ) and the further secret key (SK j );

derive, based on the token and the key encapsulation data, the DEK; and

derive, based on the token and the further key encapsulation data, the further DEK′.

Assignments (1)
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded Apr 1, 2022
From: GADDAM, SIVANARAYANA; LOKHANDE, YOGESH; ABRAHAM, BIJU
To: VISA INTERNATIONAL SERVICE ASSOCIATION
Reel/Frame 059470/0325 →
Continuity (1)
Related Publication 20220321327A1 · Oct 6, 2022