IP Library Granted Patent US 9,430,655
Granted Patent B1
US 9,430,655 · App. 13/729,155 · Granted Aug 30, 2016

Split tokenization

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 9,430,655
App. No.
13/729,155
Granted
Aug 30, 2016
Kind
B1
Abstract

An improved technique involves providing protection of secrets by splitting the secret into secret shares and providing tokens for each secret share. Along these lines, a terminal splits a secret such as a credit card number into shares. The terminal then transmits each share to a separate and distinct token server. Each token server, upon receiving a secret share, generates a corresponding token and sends that token to an application server. In some cases, when a user at the application server requires access to the secret, the application server sends each token to the token server form which the token was generated. The token servers each send, in return, a secret share to the application server. The application server combines the secret shares to recover the secret.

Claims (146)

1. A method of protecting a secret, the method comprising:

performing a secret splitting operation that produces a first secret share and a second secret share;

sending the first secret share to a first token server, the first token server being constructed and arranged to i) generate a first token from the first secret share and ii) send the first token to an application server; and

sending the second secret share to a second token server that is different from the first token server, the second token server being constructed and arranged to i) generate a second token from the second secret share and ii) send the second token to the application server, the application server being constructed and arranged to recover the secret from the first secret share and the second secret share by exchanging the first token for the first secret share with the first token server and exchanging the second token for the second secret share with the second token server,

wherein sending the first secret share to the first token server causes the first token server to generate the first token and send the first token to the application server, and

wherein sending the second secret share to the second token server causes the second token server to generate the second token and send the second token to the application server.

2. A method as in claim 1 ,

wherein performing the splitting operation includes:

obtaining a random number from a random number generator,

producing the first secret share from the random number, and

generating the second secret share from the secret and the first secret share, an exclusive or operation performed on the first secret share and the second secret share producing the secret.

3. A method as in claim 2 ,

wherein sending the first secret share to the first token server includes:

performing an encryption operation on the first secret share using a first public key to produce an encrypted first secret share, the first token server being constructed and arranged to decrypt the encrypted first secret share using a first private key that had been generated with the first public key, and

performing the encryption operation on the second secret share using a second public key to produce an encrypted second secret share, the second public key being different from the first public key, the second token server being constructed and arranged to decrypt the encrypted second secret share using a second private key that had been generated with the second public key.

4. A method as in claim 3 , further comprising:

generating a random nonce from the random number generator;

wherein sending the first secret share to the first token server further includes:

performing the encryption operation on the random nonce using the first public key to produce a first encrypted random nonce, and

transmitting the first encrypted random nonce to the first token server; and

wherein sending the second secret share to the second token server further includes:

performing the encryption operation on the random nonce using the second public key to produce a second encrypted random nonce, and

transmitting the second encrypted random nonce to the second token server, the random nonce enabling the application server to verify that the secret is recoverable from the first secret share and the second secret share.

5. A method as in claim 4 , further comprising:

obtaining an address of the application server;

wherein sending the first secret share to the first token server further includes:

performing the encryption operation on the address using the first public key to produce a first encrypted address, and

transmitting the first encrypted address to the first token server; and

wherein sending the second secret share to the second token server further includes:

performing the encryption operation on the address using the second public key to produce a second encrypted address, and

transmitting the second encrypted address to the second token server.

6. A method as in claim 2 ,

wherein the first token server is further constructed and arranged to use a first key to generate the first token from the first secret share, and the second token server is further constructed and arranged to use a second key to generate the second token from the second secret share;

wherein the first token server and the second token server are further constructed and arranged to generate a shared key offset;

wherein sending the first secret share to the first token server includes:

sending a command to generate the shared key offset to the first token server;

wherein sending the second secret share to the second token server includes:

sending a command to generate the shared key offset to the second token server; and

wherein during a proactivization step, the first token server is further constructed and arranged to produce a new first token with a new first key which is the sum of the first key and the shared key offset, and the second token server is further constructed and arranged to produce a new second token with a new second key which is the difference between the second key and the shared key offset.

7. A method as in claim 6 ,

wherein the first token server and the second token server are further constructed and arranged to jointly generate a joint quantity based on the new first key upon receipt of a message, the new second key, and a combined token that is based on the first token and the second token, the joint quantity being equal to the product of the first secret share and the second secret share;

wherein transmitting the key offset to the first token server includes:

sending the message to the first token server; and

wherein transmitting the key offset to the second token server includes:

sending the message to the second token server.

8. A method as in claim 6 ,

wherein the first token server is further constructed and arranged to generate a first quantity based on the new first key and first token, and the second token server is further constructed and arranged to compute a second quantity based on the new second key and second token, the product of the new first quantity and the second new quantity being equal to the product of the first secret share and the second secret share;

wherein sending the command to generate the shared key offset to the first token server includes:

transmitting a message to the first token server to compute the first quantity; and

wherein sending the command to generate the shared key offset to the second token server includes:

transmitting a message to the second token server to compute the second quantity.

9. A method as in claim 8 ,

wherein the generation of the first token involves a product within a finite cyclic group having a generator of the secret and the generator raised to the power of the first key, and the generation of the second token involves a product within the finite cyclic group of the secret and the generator raised to the power of the second key;

wherein the generation of the first quantity involves a product within the finite cyclic group of the first token and an inverse of the generator raised to the power of the first key, and the generation of the second quantity involves a product within the finite cyclic group of the second token and an inverse of the generator raised to the power of the second key;

wherein sending the command to generate the shared key offset to the first token server further includes:

including in the message to the first token server another command to proactively take the power of the generator to the new first key as the new first key replaces the first key; and

wherein sending the command to generate the shared key offset to the second token server further includes:

including in the message to the second token server another command to proactively take the power of the generator to the new second key as the new second key replaces the second key.

10. A method as in claim 1 , further comprising:

performing, by the first token server, a tokenization operation which replaces the first secret share with the first token, the tokenization operation concealing the first secret share; and

performing, by the second token server, another tokenization operation which replaces the second secret share with the second token, the other tokenization operation concealing the second secret share.

11. A method of recovering a secret, the method comprising:

sending a first token to a first token server, the first token server being constructed and arranged to generate a first secret share in response to receiving the first token, the first secret share being based on the first token;

sending a second token to a second token server, the second token server being constructed and arranged to generate a second secret share in response to receiving the second token, the second secret share being based on the second token;

receiving the first secret share from the first token server;

receiving the second secret share from the second token server; and

performing a combination operation on the first secret share and the second secret share to produce the secret,

wherein the method further comprises:

in response to receiving the first token, retrieving, by the first token server, a corresponding first key from a first lookup table stored in a first storage device, the first storage device storing tokens and corresponding keys in entries of the lookup table;

in response to receiving the second token, retrieving, by the second token server, a corresponding second key from a second lookup table stored in a second storage device, the second storage device storing tokens and corresponding keys in entries of the lookup table;

generating, by the first token server, the first secret share based on the first token and the corresponding first key; and

generating, by the second token server, the second secret share based on the second token and the corresponding second key.

12. A method as in claim 11 ,

wherein performing the combination operation includes:

forming the product of the first secret share and the second secret share.

13. A method as in claim 11 , further comprising

applying a hash function to a nonce value to produce a hashed nonce, the nonce value having been received from both the first token server and the second token server to verify that the secret is recoverable from the first secret share and the second secret share;

wherein sending the first token to the first token server includes:

transmitting the hashed nonce to the first token server, the first token server being further constructed and arranged to i) receive the nonce value from a terminal that generated the nonce value, ii) apply the hash function to the nonce value to produce a hashed value, and iii) compare the hashed value to the received hashed to verify whether the first token was sent by the terminal; and

wherein sending the second token to the second token server includes:

transmitting the hashed nonce to the second token server, the second token server being further constructed and arranged to i) receive the nonce value from a terminal that generated the nonce value, ii) apply the hash function to the nonce value to produce a hashed value, and iii) compare the hashed value to the received hashed to verify whether the second token was sent by the terminal.

14. A method as in claim 11 , further comprising:

receiving the first token from the first token server;

receiving the second token from the second token server; and

performing another combination operation on the first token and the second token to produce a combined token, the first token and the second token being required to be recovered from the combined token before being sent to the first token server and the second token server, respectively.

15. A method as in claim 14 ,

wherein performing the other combination operation on the first token and the second token includes:

forming the product of the first token and the second token.

16. An electronic system constructed and arranged to protect a secret, the system comprising:

a terminal;

a first token server;

a second token server that is different from the first token server; and

an application server;

the terminal including:

a network interface;

memory; and

a controller including controlling circuitry coupled to the memory, the controlling circuitry being constructed and arranged to:

perform a secret splitting operation that produces a first secret share and a second secret share;

send the first secret share to the first token server, the first token server being constructed and arranged to i) generate a first token from the first secret share and ii) send the first token to an application server; and

send the second secret share to a second token server that is different from the first token server, the second token server being constructed and arranged to i) generate a second token from the second secret share and ii) send the second token to the application server, the application server being constructed and arranged to recover the secret from the first secret share and the second secret share by exchanging the first token for the first secret share with the first token server and exchanging the second token for the second secret share with the second token server,

wherein the controlling circuitry, when sending the first secret share to the first token server, causes the first token server to generate the first token and send the first token to the application server, and

wherein the controlling circuitry, when sending the second secret share to the second token server, causes the second token server to generate the second token and send the second token to the application server.

17. A system as in claim 16 ,

wherein performing the splitting operation includes:

obtaining a random number from a random number generator,

producing the first secret share from the random number, and

generating the second secret share from the secret and the first secret share, an exclusive or operation performed on the first secret share and the second secret share producing the secret.

18. A system as in claim 17 ,

wherein sending the first secret share to the first token server includes:

performing an encryption operation on the first secret share using a first public key to produce an encrypted first secret share, the first token server being constructed and arranged to decrypt the encrypted first secret share using a first private key that had been generated with the first public key, and

performing the encryption operation on the second secret share using a second public key to produce an encrypted second secret share, the second public key being different from the first public key, the second token server being constructed and arranged to decrypt the encrypted second secret share using a second private key that had been generated with the second public key.

19. A system as in claim 18 , further comprising:

generating a random nonce from the random number generator;

wherein sending the first secret share to the first token server further includes:

performing the encryption operation on the random nonce using the first public key to produce a first encrypted random nonce, and

transmitting the first encrypted random nonce to the first token server; and

wherein sending the second secret share to the second token server further includes:

performing the encryption operation on the random nonce using the second public key to produce a second encrypted random nonce, and

transmitting the second encrypted random nonce to the second token server, the random nonce enabling the application server to verify that the secret is recoverable from the first secret share and the second secret share.

20. A system as in claim 19 , further comprising:

obtaining an address of the application server;

wherein sending the first secret share to the first token server further includes:

performing the encryption operation on the address using the first public key to produce a first encrypted address, and

transmitting the first encrypted address to the first token server; and

wherein sending the second secret share to the second token server further includes:

performing the encryption operation on the address using the second public key to produce a second encrypted address, and

transmitting the second encrypted address to the second token server.

21. A computer program product having a non-transitory, computer-readable storage medium which stores code to protect a secret, the code including instructions to:

perform a secret splitting operation that produces a first secret share and a second secret share;

send the first secret share to the first token server, the first token server being constructed and arranged to i) generate a first token from the first secret share and ii) send the first token to an application server; and

send the second secret share to a second token server that is different from the first token server, the second token server being constructed and arranged to i) generate a second token from the second secret share and ii) send the second token to the application server, the application server being constructed and arranged to recover the secret from the first secret share and the second secret share by exchanging the first token for the first secret share with the first token server and exchanging the second token for the second secret share with the second token server,

wherein the code includes further instructions to, when the first secret share is sent to the first token server, cause the first token server to generate the first token and send the first token to the application server, and

wherein the code includes further instructions to, when the second secret share is sent to the second token server, cause the second token server to generate the second token and send the second token to the application server.

22. A method of protecting a secret, the method comprising:

performing a secret splitting operation that produces a first secret share and a second secret share;

sending the first secret share to a first token server, the first token server being constructed and arranged to i) generate a first token from the first secret share and ii) send the first token to an application server; and

sending the second secret share to a second token server that is different from the first token server, the second token server being constructed and arranged to i) generate a second token from the second secret share and ii) send the second token to the application server, the application server being constructed and arranged to recover the secret from the first secret share and the second secret share by exchanging the first token for the first secret share with the first token server and exchanging the second token for the second secret share with the second token server;

wherein the first token server is further constructed and arranged to use a first key to generate the first token from the first secret share, and the second token server is further constructed and arranged to use a second key to generate the second token from the second secret share;

wherein the first token server and the second token server are further constructed and arranged to generate a shared key offset;

wherein sending the first secret share to the first token server includes:

sending a command to generate the shared key offset to the first token server;

wherein sending the second secret share to the second token server includes:

sending a command to generate the shared key offset to the second token server; and

wherein during a proactivization step, the first token server is further constructed and arranged to produce a new first token with a new first key which is the sum of the first key and the shared key offset, and the second token server is further constructed and arranged to produce a new second token with a new second key which is the difference between the second key and the shared key offset,

wherein sending the first secret share to the first token server causes the first token server to generate the first token and send the first token to the application server, and

wherein sending the second secret share to the second token server causes the second token server to generate the second token and send the second token to the application server.

Assignments (23)
RELEASE OF SECURITY INTEREST RECORDED AT REEL/FRAME 56098/0534 Recorded Mar 5, 2026
From: MORGAN STANLEY SENIOR FUNDING, INC.
To: RSA SECURITY LLC
Reel/Frame 075041/0175 →
RELEASE OF SECURITY INTEREST RECORDED AT REEL/FRAME 56096/0525 Recorded Mar 5, 2026
From: JPMORGAN CHASE BANK, N.A.
To: RSA SECURITY LLC; RSA SECURITY USA LLC
Reel/Frame 075030/0744 →
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded Dec 23, 2024
From: RSA SECURITY LLC
To: RSA SECURITY LLC
Reel/Frame 069762/0401 →
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded Dec 23, 2024
From: RSA SECURITY LLC
To: RSA SECURITY USA, LLC
Reel/Frame 069762/0529 →
RELEASE OF SECURITY INTEREST IN PATENTS PREVIOUSLY RECORDED AT REEL/FRAME (045455/0001) Recorded May 20, 2022
From: THE BANK OF NEW YORK MELLON TRUST COMPANY, N.A., AS NOTES COLLATERAL AGENT
To: DELL MARKETING CORPORATION (SUCCESSOR-IN-INTEREST TO ASAP SOFTWARE EXPRESS, INC.); DELL MARKETING L.P. (ON BEHALF OF ITSELF AND AS SUCCESSOR-IN-INTEREST TO CREDANT TECHNOLOGIES, INC.); DELL USA L.P.; DELL INTERNATIONAL L.L.C.; DELL PRODUCTS L.P.; DELL MARKETING CORPORATION (SUCCESSOR-IN-INTEREST TO FORCE10 NETWORKS, INC. AND WYSE TECHNOLOGY L.L.C.); EMC CORPORATION (ON BEHALF OF ITSELF AND AS SUCCESSOR-IN-INTEREST TO MAGINATICS LLC); EMC IP HOLDING COMPANY LLC (ON BEHALF OF ITSELF AND AS SUCCESSOR-IN-INTEREST TO MOZY, INC.); SCALEIO LLC
Reel/Frame 061753/0001 →
TERMINATION AND RELEASE OF FIRST LIEN SECURITY INTEREST IN PATENTS RECORDED AT REEL 054155, FRAME 0815 Recorded Apr 29, 2021
From: UBS AG, STAMFORD BRANCH, AS COLLATERAL AGENT
To: RSA SECURITY LLC
Reel/Frame 056104/0841 →
FIRST LIEN INTELLECTUAL PROPERTY SECURITY AGREEMENT Recorded Apr 29, 2021
From: RSA SECURITY LLC
To: JPMORGAN CHASE BANK, N.A., AS COLLATERAL AGENT
Reel/Frame 056096/0525 →
TERMINATION AND RELEASE OF SECOND LIEN SECURITY INTEREST IN PATENTS RECORDED AT REEL 053666, FRAME 0767 Recorded Apr 29, 2021
From: JEFFERIES FINANCE LLC, AS COLLATERAL AGENT
To: RSA SECURITY LLC
Reel/Frame 056095/0574 →
SECOND LIEN INTELLECTUAL PROPERTY SECURITY AGREEMENT Recorded Apr 29, 2021
From: RSA SECURITY LLC
To: MORGAN STANLEY SENIOR FUNDING, INC., AS COLLATERAL AGENT
Reel/Frame 056098/0534 →
PARTIAL RELEASE OF SECURITY INTEREST Recorded Nov 24, 2020
From: CREDIT SUISSE AG, CAYMAN ISLANDS BRANCH
To: ASAP SOFTWARE EXRESS, INC.; DELL USA L.P.; DELL INTERNATIONAL L.L.C.; DELL MARKETING L.P.; DELL PRODUCTS L.P.; EMC CORPORATION; EMC IP HOLDING COMPANY LLC; FORCE10 NETWORKS, INC.; SCALEIO LLC; WYSE TECHNOLOGY L.L.C.
Reel/Frame 054511/0001 →
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded Sep 7, 2020
From: EMC IP HOLDING COMPANY LLC
To: RSA SECURITY LLC
Reel/Frame 053717/0020 →
RELEASE OF SECURITY INTEREST IN CERTAIN PATENTS PREVIOUSLY RECORDED AT REEL/FRAME (040136/0001) Recorded Sep 3, 2020
From: THE BANK OF NEW YORK MELLON TRUST COMPANY, N.A., AS AGENT
To: ASAP SOFTWARE EXPRESS; DELL USA L.P.; DELL INTERNATIONAL L.L.C.; DELL MARKETING L.P.; DELL PRODUCTS L.P.; EMC CORPORATION; EMC IP HOLDING COMPANY LLC; FORCE10 NETWORKS, INC.; SCALEIO LLC; WYSE TECHNOLOGY L.L.C.
Reel/Frame 054163/0416 →
RELEASE OF SECURITY INTEREST IN CERTAIN PATENTS PREVIOUSLY RECORDED AT REEL/FRAME (053546/0001) Recorded Sep 3, 2020
From: THE BANK OF NEW YORK MELLON TRUST COMPANY, N.A., AS AGENT
To: DELL INTERNATIONAL L.L.C.; DELL MARKETING L.P.; DELL PRODUCTS L.P.; DELL USA L.P.; EMC CORPORATION; FORCE10 NETWORKS, INC.; EMC IP HOLDING COMPANY LLC; WYSE TECHNOLOGY L.L.C.
Reel/Frame 054191/0287 →
RELEASE OF SECURITY INTEREST IN CERTAIN PATENTS PREVIOUSLY RECORDED AT REEL/FRAME (049452/0223) Recorded Sep 3, 2020
From: THE BANK OF NEW YORK MELLON TRUST COMPANY, N.A., AS AGENT
To: DELL INTERNATIONAL L.L.C.; DELL MARKETING L.P.; DELL PRODUCTS L.P.; DELL USA L.P.; EMC CORPORATION; EMC IP HOLDING COMPANY LLC; FORCE10 NETWORKS, INC.; WYSE TECHNOLOGY L.L.C.
Reel/Frame 054250/0372 →
FIRST LIEN PATENT SECURITY AGREEMENT Recorded Sep 1, 2020
From: RSA SECURITY LLC
To: UBS AG, STAMFORD BRANCH, AS COLLATERAL AGENT
Reel/Frame 054155/0815 →
SECOND LIEN PATENT SECURITY AGREEMENT Recorded Sep 1, 2020
From: RSA SECURITY LLC
To: JEFFERIES FINANCE LLC
Reel/Frame 053666/0767 →
SECURITY AGREEMENT Recorded Apr 22, 2020
From: CREDANT TECHNOLOGIES INC.; DELL INTERNATIONAL L.L.C.; DELL MARKETING L.P.; DELL PRODUCTS L.P.; DELL USA L.P.; EMC CORPORATION; FORCE10 NETWORKS, INC.; WYSE TECHNOLOGY L.L.C.; EMC IP HOLDING COMPANY LLC
To: THE BANK OF NEW YORK MELLON TRUST COMPANY, N.A.
Reel/Frame 053546/0001 →
SECURITY AGREEMENT Recorded Mar 21, 2019
From: CREDANT TECHNOLOGIES, INC.; DELL INTERNATIONAL L.L.C.; DELL MARKETING L.P.; DELL PRODUCTS L.P.; DELL USA L.P.; EMC CORPORATION; FORCE10 NETWORKS, INC.; WYSE TECHNOLOGY L.L.C.; EMC IP HOLDING COMPANY LLC
To: THE BANK OF NEW YORK MELLON TRUST COMPANY, N.A.
Reel/Frame 049452/0223 →
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded Sep 29, 2016
From: EMC CORPORATION
To: EMC IP HOLDING COMPANY LLC
Reel/Frame 040203/0001 →
SECURITY AGREEMENT Recorded Sep 21, 2016
From: ASAP SOFTWARE EXPRESS, INC.; AVENTAIL LLC; CREDANT TECHNOLOGIES, INC.; DELL USA L.P.; DELL INTERNATIONAL L.L.C.; DELL MARKETING L.P.; DELL PRODUCTS L.P.; DELL SOFTWARE INC.; DELL SYSTEMS CORPORATION; EMC CORPORATION; EMC IP HOLDING COMPANY LLC; FORCE10 NETWORKS, INC.; MAGINATICS LLC; MOZY, INC.; SCALEIO LLC; SPANNING CLOUD APPS LLC; WYSE TECHNOLOGY L.L.C.
To: THE BANK OF NEW YORK MELLON TRUST COMPANY, N.A., AS NOTES COLLATERAL AGENT
Reel/Frame 040136/0001 →
SECURITY AGREEMENT Recorded Sep 21, 2016
From: ASAP SOFTWARE EXPRESS, INC.; AVENTAIL LLC; CREDANT TECHNOLOGIES, INC.; DELL USA L.P.; DELL INTERNATIONAL L.L.C.; DELL MARKETING L.P.; DELL PRODUCTS L.P.; DELL SOFTWARE INC.; DELL SYSTEMS CORPORATION; EMC CORPORATION; EMC IP HOLDING COMPANY LLC; FORCE10 NETWORKS, INC.; MAGINATICS LLC; MOZY, INC.; SCALEIO LLC; SPANNING CLOUD APPS LLC; WYSE TECHNOLOGY L.L.C.
To: CREDIT SUISSE AG, CAYMAN ISLANDS BRANCH, AS COLLATERAL AGENT
Reel/Frame 040134/0001 →
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded Apr 26, 2016
From: VAN DIJK, MARTEN ERIK
To: EMC CORPORATION
Reel/Frame 038382/0611 →
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded Aug 12, 2013
From: STOCKTON, RACHAEL
To: EMC CORPORATION
Reel/Frame 030987/0155 →