IP Library Granted Patent US 10,289,835
Granted Patent B1
US 10,289,835 · App. 15/180,284 · Granted May 14, 2019

Token seed protection for multi-factor authentication systems

Inventor: Salah Machani (Toronto, CA)
Assignee: EMC IP Holding Company LLC
G06F21/45H04L9/085H04L9/0894H04L63/0428H04L63/083H04L63/0861H04L2463/082
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 10,289,835
App. No.
15/180,284
Granted
May 14, 2019
Kind
B1
Abstract

New techniques are disclosed for protecting a token seed in a multifactor authentication system. A personal identification number is used to derive a fixed share, and the token seed is split, using a secret sharing technique, into a set of three shares made up of the fixed share, a remote share, and a local share, such that the token seed can only be reconstructed using any two of the three shares. The remote share is stored on a remote authentication server, and an encrypted version of the local share is stored on the user device. The remote share may be encrypted by performing a key wrapping operation on the remote share using the local share, and then storing the encrypted version of the remote share on the remote authentication server. The token seed, fixed share, remote share and local share may then be deleted from the user device.

Claims (69)

1. A method of protecting a token seed, the method comprising:

inputting, by a user device, a personal identification number from a user of the user device;

deriving a fixed share from the input personal identification number using a key derivation function;

splitting the token seed, using a secret sharing technique, into a set of three shares made up of the fixed share, a remote share, and a local share, wherein the token seed can only be reconstructed using any two of the three shares;

storing the remote share on a remote server at least in part by i) generating an encrypted version of the remote share by performing a key wrapping operation on the remote share using the local share as a key wrapping key, and ii) storing the encrypted version of the remote share on the remote server;

storing an encrypted version of the local share on the user device;

discarding the token seed, fixed share, remote share and local share from the user device; and

after the token seed has been discarded from the user device, i) generating a current token code by reconstructing the token seed on the user device using two of the three shares and generating the current token code using the reconstructed token seed, and ii) accessing a secure resource from the user device by presenting the current token code to an authentication server that is responsible for controlling access to the secure resource.

2. The method of claim 1 , wherein storing the encrypted version of the local share on the user device comprises:

generating a wrapped version of the local share by performing a key wrapping operation on the local share using a key wrapping key that is unique to the user device; and

storing the wrapped version of the local share on the user device.

3. The method of claim 2 , and further comprising generating the current token code by:

determining whether the user device is online or offline; and

in response to detecting that the user device is offline, reconstructing the token seed on the user device by a) inputting the personal identification number from the user of the user device, b) deriving the fixed share from the input personal identification number using the key derivation function, c) generating the local share by decrypting the encrypted version of the local share, d) reconstructing the token seed using the fixed share and the local share, and e) generating a current token code using the reconstructed token seed and a current time.

4. The method of claim 2 , and further comprising generating the current token code by:

determining whether the user device is online or offline; and

in response to detecting that the user device is online, reconstructing the token seed on the user device by a) inputting a biometric sample from the user of the user device, b) in response to the biometric sample matching a biometric template of an authorized user for the user device, establishing a secure communication connection between the user device and the remote server, c) retrieving the encrypted version of the remote share from the remote server over the secure communication connection between the user device and the remote server, d) decrypting the encrypted version of the local share by unwrapping the encrypted version of the local share using the key wrapping key that is unique to the user device, e) decrypting the encrypted version of the remote share by unwrapping the encrypted version of the remote share using the local share, f) reconstructing the token seed using the remote share and the local share, and g) generating a current token code using the reconstructed token seed and a current time.

5. The method of claim 1 , further comprising:

receiving an indication that the user of the user device has forgotten their personal identification number; and

in response to the indication that the user of the user device has forgotten their personal identification number, a) inputting a biometric sample from the user of the user device, b) in response to the biometric sample matching a biometric template for an authorized user of the user device, establishing a secure communication connection between the user device and the remote server, c) retrieving the encrypted version of the remote share from the remote server over the secure communication connection between the user device and the remote server, d) decrypting the encrypted version of the local share by unwrapping the encrypted version of the local share using the key wrapping key that is unique to the user device, e) decrypting the encrypted version of the remote share by unwrapping the encrypted version of the remote share using the local share, f) reconstructing the token seed using the remote share and the local share, g) receiving a new personal identification number, h) deriving a new fixed share from the new personal identification number using the key derivation function, i) splitting the token seed, using the secret sharing technique, into a set of three shares made up of the new fixed share, a new remote share, and a new local share, wherein the token seed can only be reconstructed using any two of the three shares, j) storing the new remote share on the remote server, k) storing an encrypted version of the new local share on the user device, and l) discarding the token seed, new fixed share, new remote share and new local share from the user device.

6. The method of claim 1 , further comprising, after the token seed has been discarded from the user device, subsequently reconstructing the token seed by:

at a first time while the user device is offline by i) deriving the fixed share from the personal identification number as input again from the user, ii) decrypting the encrypted version of the local share, and iii) reconstructing the token seed using the fixed share and the local share, and

at a second time while the user device is online and the user has forgotten the personal identification number by i) retrieving the encrypted version of the remote share from the remote server, ii) decrypting the encrypted version of the local share, iii) decrypting the encrypted version of the remote share using the local share, and iv) reconstructing the token seed using the remote share and the local share.

7. The method of claim 1 , further comprising, after the token seed has been discarded from the user device, and without maintaining a complete copy of the token seed within the user device, reconstructing the token seed both i) at times when the user device is offline, and ii) at other times when the user device is online and the user has forgotten the personal identification number.

8. An electronic device, comprising:

memory; and

processing circuitry coupled to the memory, the memory storing program code for protecting a token seed which, when executed by the processing circuitry, causes the processing circuitry to:

input a personal identification number from a user of the electronic device,

derive a fixed share from the input personal identification number using a key derivation function,

split the token seed, using a secret sharing technique, into a set of three shares made up of the fixed share, a remote share, and a local share, wherein the token seed can only be reconstructed using any two of the three shares,

store the remote share on a remote server at least in part by causing the processing circuitry to i) generate an encrypted version of the remote share by performing a key wrapping operation on the remote share using the local share as a key wrapping key, and ii) store the encrypted version of the remote share on the remote server,

store an encrypted version of the local share on the electronic device,

delete the token seed, fixed share, remote share and local share from the memory of the electronic device; and

after the token seed has been discarded from the user device, i) generate a current token code by reconstructing the token seed on the user device using two of the three shares and generating the current token code using the reconstructed token seed, and ii) access a secure resource from the user device by presenting the current token code to an authentication server that is responsible for controlling access to the secure resource.

9. The electronic device of claim 8 , wherein the program code, when executed by the processing circuitry, causes the processing circuitry to store the encrypted version of the local share on the electronic device by:

generating a wrapped version of the local share by performing a key wrapping operation on the local share using a key wrapping key that is unique to the electronic device; and

storing the wrapped version of the local share on the electronic device.

10. The electronic device of claim 9 , wherein the program code, when executed by the processing circuitry, further causes the processing circuitry to:

generate the current token code by causing the processing circuitry to:

determine whether the electronic device is online or offline, and

in response to detecting that the electronic device is offline, reconstruct the token seed on the device by a) inputting the personal identification number from the user of the electronic device, b) deriving the fixed share from the input personal identification number using the key derivation function, c) generating the local share by decrypting the encrypted version of the local share, d) reconstructing the token seed using the fixed share and the local share, and e) generating a current token code using the reconstructed token seed and a current time.

11. The electronic device of claim 9 , wherein the program code, when executed by the processing circuitry, further causes the processing circuitry to:

generate the current token code by causing the processing circuitry to:

determine whether the electronic device is online or offline, and

in response to detecting that the electronic device is online, reconstruct the token seed on the device by a) inputting a biometric sample from the user of the electronic device, b) in response to the biometric sample matching a biometric template of an authorized user for the electronic device, establishing a secure communication connection between the electronic device and the remote server, c) retrieving the encrypted version of the remote share from the remote server over the secure communication connection between the electronic device and the remote server, d) decrypting the encrypted version of the local share by unwrapping the encrypted version of the local share using the key wrapping key that is unique to the electronic device, e) decrypting the encrypted version of the remote share by unwrapping the encrypted version of the remote share using the local share, f) reconstructing the token seed using the remote share and the local share, and g) generating a current token code using the reconstructed token seed and a current time.

12. The electronic device of claim 8 , wherein the program code, when executed by the processing circuitry, further causes the processing circuitry to:

receive an indication that the user of the electronic device has forgotten their personal identification number; and

in response to the indication that the user of the electronic device has forgotten their personal identification number, a) input a biometric sample from the user of the electronic device, b) in response to the biometric sample matching a biometric template for an authorized user of the electronic device, establish a secure communication connection between the electronic device and the remote server, c) retrieve the encrypted version of the remote share from the remote server over the secure communication connection between the electronic device and the remote server, d) decrypt the encrypted version of the local share by unwrapping the encrypted version of the local share using the key wrapping key that is unique to the electronic device, e) decrypt the encrypted version of the remote share by unwrapping the encrypted version of the remote share using the local share, f) reconstruct the token seed using the remote share and the local share, g) receive a new personal identification number, h) derive a new fixed share from the new personal identification number using the key derivation function, i) split the token seed, using the secret sharing technique, into a set of three shares made up of the new fixed share, a new remote share, and a new local share, wherein the token seed can only be reconstructed using any two of the three shares, j) store the new remote share on the remote server, k) store an encrypted version of the new local share on the electronic device, and l) delete the token seed, new fixed share, new remote share and new local share from the memory of the electronic device.

13. A computer program product having a non-transitory computer readable medium which stores a set of instructions operable to protect a token seed, the set of instructions, when executed by processing circuitry, causing the processing circuitry to:

input, by a user device, a personal identification number from a user of the user device;

derive a fixed share from the input personal identification number using a key derivation function;

split the token seed, using a secret sharing technique, into a set of three shares made up of the fixed share, a remote share, and a local share, wherein the token seed can only be reconstructed using any two of the three shares;

store the remote share on a remote server at least in part by causing the processing circuitry to i) generate an encrypted version of the remote share by performing a key wrapping operation on the remote share using the local share as a key wrapping key, and ii) store the encrypted version of the remote share on the remote server;

store an encrypted version of the local share on the user device;

discard the token seed, fixed share, remote share and local share from the user device; and

after the token seed has been discarded from the user device, i) generate a current token code by reconstructing the token seed on the user device using two of the three shares and generating the current token code using the reconstructed token seed, and ii) access a secure resource from the user device by presenting the current token code to an authentication server that is responsible for controlling access to the secure resource.

14. The computer program product of claim 13 , wherein the set of instructions operable to protect the token seed, when executed by processing circuitry, further cause the processing circuitry to:

store the encrypted version of the local share on the user device at least in part by causing the processing circuitry to i) generate a wrapped version of the local share by performing a key wrapping operation on the local share using a key wrapping key that is unique to the user device, and ii) store the wrapped version of the local share on the user device.

15. The computer program product of claim 14 , wherein the set of instructions operable to protect the token seed, when executed by processing circuitry, further cause the processing circuitry to:

generate the current token code by causing the processing circuitry to:

determine whether the user device is online or offline; and

in response to detecting that the user device is offline, reconstruct the token seed on the user device by a) inputting the personal identification number from the user of the user device, b) deriving the fixed share from the input personal identification number using the key derivation function, c) generating the local share by decrypting the encrypted version of the local share, d) reconstructing the token seed using the fixed share and the local share, and e) generating a current token code using the reconstructed token seed and a current time.

16. The computer program product of claim 14 , wherein the set of instructions operable to protect the token seed, when executed by processing circuitry, further cause the processing circuitry to:

generate the current token code by causing the processing circuitry to:

determine whether the user device is online or offline; and

in response to detecting that the user device is online, reconstruct the token seed on the user device by a) inputting a biometric sample from the user of the user device, b) in response to the biometric sample matching a biometric template of an authorized user for the user device, establishing a secure communication connection between the user device and the remote server, c) retrieving the encrypted version of the remote share from the remote server over the secure communication connection between the user device and the remote server, d) decrypting the encrypted version of the local share by unwrapping the encrypted version of the local share using the key wrapping key that is unique to the user device, e) decrypting the encrypted version of the remote share by unwrapping the encrypted version of the remote share using the local share, f) reconstructing the token seed using the remote share and the local share, and g) generating a current token code using the reconstructed token seed and a current time.

17. The computer program product of claim 13 , wherein the set of instructions operable to protect the token seed, when executed by processing circuitry, further cause the processing circuitry to:

receive an indication that the user of the electronic device has forgotten their personal identification number; and

in response to the indication that the user of the electronic device has forgotten their personal identification number, a) input a biometric sample from the user of the electronic device, b) in response to the biometric sample matching a biometric template for an authorized user of the electronic device, establish a secure communication connection between the electronic device and the remote server, c) retrieve the encrypted version of the remote share from the remote server over the secure communication connection between the electronic device and the remote server, d) decrypt the encrypted version of the local share by unwrapping the encrypted version of the local share using the key wrapping key that is unique to the electronic device, e) decrypt the encrypted version of the remote share by unwrapping the encrypted version of the remote share using the local share, f) reconstruct the token seed using the remote share and the local share, g) receive a new personal identification number, h) derive a new fixed share from the new personal identification number using the key derivation function, i) split the token seed, using the secret sharing technique, into a set of three shares made up of the new fixed share, a new remote share, and a new local share, wherein the token seed can only be reconstructed using any two of the three shares, j) store the new remote share on the remote server, k) store an encrypted version of the new local share on the electronic device, and l) delete the token seed, new fixed share, new remote share and new local share from the memory of the electronic device.

Assignments (17)
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 →
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 →
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 →
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 →
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 →
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 (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 Mar 3, 2017
From: EMC CORPORATION
To: EMC IP HOLDING COMPANY LLC
Reel/Frame 041872/0001 →
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded Jul 13, 2016
From: MACHANI, SALAH
To: EMC CORPORATION
Reel/Frame 039148/0210 →
Cited By (4)
US 12,225,115 US 12,328,306 US 12,368,701 US 12,437,040