IP Library Granted Patent US 12,348,612
Granted Patent B2
US 12,348,612 · App. 18/241,491 · Granted Jul 1, 2025

System, method, and computer program product for data security

Inventors: Sivanarayana Gaddam (Santa Clara, CA); Yogesh Lokhande (Kada Agrahara, 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 12,348,612
App. No.
18/241,491
Granted
Jul 1, 2025
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 (107)

1. A computer-implemented method, comprising:

receiving, with at least one processor, from a hardware security module (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 ), a plurality of public keys (PK 1 , PK 2 , . . . PK n );

generating, with at least one processor, based on a hash function (H) and the plurality of public keys (PK 1 , PK 2 , . . . PK n ), a 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 );

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

storing, with at least one processor, in 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 ), wherein the plurality of ciphers (C 1 , C 2 , . . . C n ) includes the plurality of secret keys (SK 1 , SK 2 , . . . SK n ) encrypted with the 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 ); and

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 1 , r 2 , . . . r n ).

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

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 the hash function (H), a public key (PK i ) 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 i ) 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 the HSM, the cipher (C i );

receiving, with at least one processor, 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 i ) 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 i ) 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 ).

3. The computer-implemented method of claim 2 , wherein the key encapsulation data includes the hash of the public key H(PK i ), 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) .

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

receiving, with at least one processor, a further data chunk (M 1 ) 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 i , PK 2 , . . . PK n ), and a further random number (R);

encrypting, with at least one processor, the further data chunk (M 1 ) 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 i ) 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;

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 i );

receiving, with at least one processor, from the HSM, a further secret key (SK 1 ) 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 );

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 (M 1 ).

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

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

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′.

6. A system, comprising:

a memory;

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

receive, from a hardware security module (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 1 , r 2 , . . . r n ), a plurality of public keys (PK 1 , PK 2 , . . . PK n );

generating, with at least one processor, based on a hash function (H) and the plurality of public keys (PK 1 , PK 2 , . . . PK n ), a 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 );

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

store, 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 ), wherein the plurality of ciphers (C 1 , C 2 , . . . C n ) includes the plurality of secret keys (SK 1 , SK 2 , . . . SK n ) encrypted with the 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 ); and

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 ).

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

receive a data chunk (M i ) for encryption;

generate a data encryption key (DEK) based on the hash function (H), a public key (PK i ) 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 i ) 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 the 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 i ) 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 key encapsulation data includes the hash of the public key H(PK i ), 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) .

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

receive a further data chunk (M 1 ) 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 (C Mj );

generate a further header (Hdr′) including a further cipher (C i ) 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 i );

receive, from the HSM, a further secret key (SK 1 ) of the plurality of secret keys (SK i , 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 1 ).

10. The system of claim 9 , wherein the one or more processors are further programmed and/or configured 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′.

11. 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:

receive, from a hardware security module (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 1 , r 2 , . . . r n ), a plurality of public keys (PK 1 , PK 2 , . . . PK n );

generating, with at least one processor, based on a hash function (H) and the plurality of public keys (PK 1 , PK 2 , . . . PK n ), a 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 );

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

store, in 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 ), wherein the plurality of ciphers (C 1 , C 2 , . . . C n ) includes the plurality of secret keys (SK 1 , SK 2 , . . . SK n ) encrypted with the 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 ); and

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 ).

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

receive a data chunk (M i ) for encryption;

generate a data encryption key (DEK) based on the hash function (H), a public key (PK i ) 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 i ) 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 the 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 i ) 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 ).

13. The computer program product of claim 12 , wherein the key encapsulation data includes the hash of the public key H(PK i ), 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) .

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

receive a further data chunk (M 1 ) 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 (C Mj );

generate a further header (Hdr′) including a further cipher (C i ) 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 1 );

receive, from the HSM, a further secret key (SK 1 ) 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 1 ) 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 1 ).

15. The computer program product of claim 12 , 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 1 );

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 Sep 1, 2023
From: SIVANARAYANA GADDAM; YOGESH LOKHANDE; BIJU ABRAHAM
To: VISA INTERNTAIONAL SERVICE ASSOCIATION
Reel/Frame 064775/0725 →
Continuity (2)
Continuation 17217257 · Mar 30, 2021
Related Publication 20230421359A1 · Dec 28, 2023
References Cited (22)
US 8788803B2 · Irvine · 2014 [cited by applicant]
US 9483657B2 · Paul et al. · 2016 [cited by applicant]
US 10615969B1 · Griffin et al. · 2020 [cited by applicant]
US 11080412B1 · Moore · 2021 [cited by applicant]
US 11146390B2 · Chu et al. · 2021 [cited by applicant]
US 20040174997A1 · Yamamichi et al. · 2004 [cited by applicant]
US 20130111196A1 · Pasam et al. · 2013 [cited by applicant]
US 20130290703A1 · Resch et al. · 2013 [cited by applicant]
US 20150278531A1 · Smith et al. · 2015 [cited by applicant]
US 20170149564A1 · McCallum · 2017 [cited by applicant]
US 20170373841A1 · Nagai et al. · 2017 [cited by applicant]
US 20180176013A1 · Cheng · 2018 [cited by examiner]
US 20190114438A1 · Hersans et al. · 2019 [cited by applicant]
US 20200106608A1 · Lo · 2020 [cited by examiner]
US 20210124731A1 · Sewell et al. · 2021 [cited by applicant]
US 20220092207A1 · Ozaki et al. · 2022 [cited by applicant]
US 20220116776A1 · Spangler et al. · 2022 [cited by applicant]
CN 105871858A · 2016 [cited by applicant]
CN 107533616A · 2018 [cited by applicant]
CN 110417726A · 2019 [cited by applicant]
WO 2015160385A1 · 2015 [cited by applicant]
Song et al., “Efficient Attribute-Based Encryption with Privacy-Preserving Key Generation and Its Application in Industrial Cloud”, Security and Communication Networks, 2019, pp. 1-10. [cited by applicant]