IP Library Granted Patent US 9,209,980
Granted Patent B2
US 9,209,980 · App. 13/528,900 · Granted Dec 8, 2015

Provisioning a shared secret to a portable electronic device and to a service entity

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,209,980
App. No.
13/528,900
Granted
Dec 8, 2015
Kind
B2
Abstract

Systems and methods are provided for computing a secret shared with a portable electronic device and service entity. The service entity has a public key G and a private key g. A message comprising the public key G is broadcast to the portable electronic device. A public key B of the portable electronic device is obtained from a manufacturing server and used together with the private key g to compute the shared secret. The portable electronic device receives the broadcast message and computes the shared secret as a function of the public key G and the portable electronic device's private key b. The shared secret can be used to establish a trusted relationship between the portable electronic device and the service entity, to activate a service on the portable electronic device, and to generate certificates.

Claims (157)

1. A method to be performed by a manufacturing server, the method comprising:

broadcasting via a communication interface of the manufacturing server a message to one or more portable electronic devices {i}, the message including a public key G of a service entity that provides a service Y; and

for each portable electronic device i:

computing at the manufacturing server a shared secret A i as a function F of a private key g corresponding to the public key G and of a public key B i of the portable electronic device i;

computing at the manufacturing server a service-specific device identifier ID i , associated with the service Y, of the portable electronic device i by applying a first hash function to a concatenation of a service description value C Y associated with the service Y and one or more identifiers of the portable electronic device i, wherein the identifiers comprise a device identifier PIN i and a processor identifier PID i ;

computing at the manufacturing server a value T i by applying an advanced encryption standard (AES) algorithm to the shared secret A i and to a combination of a model description value C j of the portable electronic device i and the service-specific device identifier ID i ;

computing at the manufacturing server a shared key SK i by applying a second hash function to the value T i ; and

the manufacturing server providing the service-specific device identifier ID i and the shared key SK i to the service entity,

wherein a trusted relationship is established between the service entity and the portable electronic device i using the service-specific device identifier ID i and the shared key SK i .

2. The method as claimed in claim 1 , further comprising, for each portable electronic device i:

deriving at the manufacturing server a secondary private key q i from the shared secret A i ; and

deriving at the manufacturing server a secondary public key Q i from the secondary private key q i .

3. The method as claimed in claim 1 , wherein the message is a software update.

4. The method as claimed in claim 1 , wherein the message is available from a mobile application store.

5. A method to be performed by a portable electronic device X, the method comprising:

receiving at a communication interface of the portable electronic device X a broadcast message comprising a public key G of a service entity that provides a service Y;

computing a shared secret A X as a function F of the public key G and of a private key b X of the portable electronic device X;

computing a service-specific device identifier ID X , associated with the service Y, of the portable electronic device X by applying a first hash function to a concatenation of a service description value C Y associated with the service Y and one or more identifiers of the portable electronic device X, wherein the identifiers comprise a device identifier PIN X and a processor identifier PID X ;

computing a value T X by applying an advanced encryption standard (AES) algorithm to the shared secret A X and to a combination of a model description value C X of the portable electronic device X and the service-specific device identifier ID X ;

computing a shared key SK X by applying a second hash function to the value T X ; and

establishing a trusted relationship between the portable electronic device X and the service entity using the service-specific device identifier ID X and the shared key SK X .

6. The method as claimed in claim 5 , further comprising:

deriving a secondary private key q X from the shared secret A X ; and

deriving a secondary public key Q X from the secondary private key q X .

7. The method as claimed in claim 5 , further comprising:

sending, to the service entity, a registration request comprising the service-specific device identifier ID X .

8. A method to be performed by a service entity providing a service Y, the method comprising:

receiving at a communication interface of the service entity, from a manufacturing server, public keys {B i } and corresponding service-specific device identifiers {ID i }, associated with the service Y, for one or more portable electronic devices {i}, each service-specific device identifier ID i having been computed by applying a first hash function to a concatenation of a service description value C Y associated with the service Y and one or more identifiers of the portable electronic device i, wherein the identifiers comprise a device identifier PIN i and a processor identifier PID i ;

receiving at the communication interface of the service entity, from a particular portable electronic device X of the one or more portable electronic devices {i}, a registration request comprising a service-specific device identifier ID X of the particular portable electronic device X; and

for each portable electronic device i:

computing a shared secret A i as a function F of a private key g, of the service entity, and of the public key B i of the portable electronic device i;

computing a value T i by applying an advanced encryption standard (AES) algorithm to the shared secret A i and to a combination of a model description value C j of the portable electronic device i and the service-specific device identifier ID i ;

computing a shared key SK i by applying a second hash function to the value T i ; and

establishing a trusted relationship between the service entity and the particular portable electronic device X using a shared key SK X corresponding to the service-specific device identifier ID X of the particular portable electronic device X.

9. The method as claimed in claim 8 , further comprising, for each portable electronic device i:

deriving a secondary private key q i from the shared secret A i ; and

deriving a secondary public key Q i from the secondary private key q i .

10. The method as claimed in claim 9 , further comprising, for each portable electronic device i:

creating a certificate CERT i using the secondary public key Q i and the service-specific device identifier ID i .

11. The method as claimed in claim 8 , further comprising:

broadcasting a message to the one or more portable electronic devices {i}, the message including a public key G corresponding to the private key g of the service entity.

12. A method to be performed by a service entity providing a service Y, the method comprising:

receiving at a communication interface of the service entity, from a manufacturing server, service-specific device identifiers {ID i }, associated with the service Y, and corresponding shared keys {SK i } for one or more portable electronic devices {i}, each service-specific device identifier ID i having been computed by the manufacturing server by applying a first hash function to a concatenation of a service description value C Y associated with the service Y and one or more identifiers of the portable electronic device i, wherein the identifiers comprise a device identifier PIN i and a processor identifier PID i , and each shared key SK i having been computed by the manufacturing server by: computing a shared secret A i as a function F of a private key g, of the service entity, and of a public key B i of the portable electronic device i; computing a value T i by applying an advanced encryption standard (AES) algorithm to the shared secret A i and to a combination of a model description value C j of the portable electronic device i and the service-specific device identifier ID i ; and computing the shared key SK i by applying a second hash function to the value T i ;

receiving at the communication interface of the service entity, from a particular portable electronic device X of the one or more portable electronic devices {i}, a registration request comprising a service-specific device identifier ID X of the particular portable electronic device X; and

establishing a trusted relationship between the service entity and the particular portable electronic device X using a shared key SK X that corresponds to the service-specific device identifier ID X of the particular portable electronic device X.

13. The method as claimed in claim 12 , further comprising, for each portable electronic device i:

deriving a secondary private key q i from the shared secret A i ; and

deriving a secondary public key Q i from the secondary private key q i .

14. The method as claimed in claim 13 , further comprising, for each portable electronic device i:

creating a certificate CERT i using the secondary public key Q i and the service-specific device identifier ID i .

15. A manufacturing server comprising:

a processor;

a communication interface coupled to the processor; and

a memory coupled to the processor, the memory storing code which, when executed by the processor, causes the processor to perform:

broadcasting via the communication interface a message to one or more portable electronic devices {i}, the message including a public key G of a service entity that provides a service Y; and

for each portable electronic device i:

computing at the manufacturing server a shared secret A i as a function F of a private key g corresponding to the public key G and of a public key B i of the portable electronic device i;

computing at the manufacturing server a service-specific device identifier ID i , associated with the service Y, of the portable electronic device i by applying a first hash function to a concatenation of a service description value C Y associated with the service Y and one or more identifiers of the portable electronic device i, wherein the identifiers comprise a device identifier PIN i and a processor identifier PID i ;

computing at the manufacturing server a value T i by applying an advanced encryption standard (AES) algorithm to the shared secret A i and to a combination of a model description value C j of the portable electronic device i and the service-specific device identifier ID i ;

computing at the manufacturing server a shared key SK i by applying a second hash function to the value T i ; and

the manufacturing server providing the service-specific device identifier ID i and the shared key SK i to the service entity via the communication interface,

wherein a trusted relationship is established between the service entity and the portable electronic device i using the service-specific device identifier ID i and the shared key SK i .

16. The manufacturing server as claimed in claim 15 , wherein the code, when executed by the processor, further causes the processor to perform, for each portable electronic device i:

deriving at the manufacturing server a secondary private key q i from the shared secret A i ; and

deriving at the manufacturing server a secondary public key Q i from the secondary private key q i .

17. A portable electronic device X comprising:

a processor;

a communication interface coupled to the processor through which a broadcast message is received, the broadcast message comprising a public key G of a service entity that provides a service Y; and

a memory coupled to the processor, the memory storing code which, when executed by the processor, causes the processor to perform:

computing a shared secret A X as a function F of the public key G and of a private key b X of the portable electronic device X;

computing a service-specific device identifier ID X , associated with the service Y, of the portable electronic device X by applying a first hash function to a concatenation of a service description value C Y associated with the service Y and one or more identifiers of the portable electronic device X, wherein the identifiers comprise a device identifier PIN X and a processor identifier PID X ;

computing a value T X by applying an advanced encryption standard (AES) algorithm to the shared secret A X and to a combination of a model description value C X of the portable electronic device X and the service-specific device identifier ID X ;

computing a shared key SK X by applying a second hash function to the value T X ; and

establishing a trusted relationship between the portable electronic device X and the service entity using the service-specific device identifier ID X and the shared key SK X .

18. The portable electronic device X as claimed in claim 17 , wherein the code, when executed by the processor, further causes the processor to perform:

deriving a secondary private key q X from the shared secret A X ; and

deriving a secondary public key Q X from the secondary private key q X .

19. The portable electronic device X as claimed in claim 17 , wherein the code, when executed by the processor, further causes the processor to perform:

sending, to the service entity, via the communication interface, a registration request comprising the service-specific device identifier ID X .

20. A service entity providing a service Y, the service entity comprising:

a processor;

a communication interface coupled to the processor, through which the service entity receives, from a manufacturing server, public keys {B i } and corresponding service-specific device identifiers {ID i }, associated with the service Y, for one or more portable electronic devices {i}, each service-specific device identifier ID i having been computed by applying a first hash function to a concatenation of a service description value C Y associated with the service Y and one or more identifiers of the portable electronic device i, wherein the identifiers comprise a device identifier PIN i and a processor identifier PID i , and through which the service entity receives, from a particular portable electronic device X of the one or more portable electronic devices {i}, a registration request comprising a service-specific device identifier ID X of the particular portable electronic device X; and

a memory coupled to the processor, the memory storing code which, when executed by the processor, causes the processor to perform, for each portable electronic device i:

computing a shared secret A i as a function F of a private key g, of the service entity, and of the public key B i of the portable electronic device i;

computing a value T i by applying an advanced encryption standard (AES) algorithm to the shared secret A i and to a combination of a model description value C j of the portable electronic device i and the service-specific device identifier ID i ; and

computing a shared key SK i by applying a second hash function to the value T i ;

and

establishing a trusted relationship between the service entity and the particular portable electronic device X using a shared key SK X corresponding to the service-specific device identifier ID X of the particular portable electronic device X.

21. The service entity as claimed in claim 20 , wherein the code, when executed by the processor, further causes the processor to perform, for each portable electronic device i:

deriving a secondary private key q i from the shared secret A i ; and

deriving a secondary public key Q i from the secondary private key q i .

22. The service entity as claimed in claim 21 , wherein the code, when executed by the processor, further causes the processor to perform, for each portable electronic device i:

creating a certificate CERT i using the secondary public key Q i and the service-specific device identifier ID i .

23. The service entity as claimed in claim 20 , wherein the code, when executed by the processor, further causes the processor to perform:

broadcasting via the communication interface a message to the one or more portable electronic devices {i}, the message including a public key G corresponding to the private key g of the service entity.

24. A service entity providing a service Y, the service entity comprising:

a processor;

a communication interface coupled to the processor, through which the service entity receives, from a manufacturing server, service-specific device identifiers {ID i }, associated with the service Y, and corresponding shared keys {SK i } for one or more portable electronic devices {i}, each service-specific device identifier ID i having been computed by the manufacturing server by applying a first hash function to a concatenation of a service description value C Y associated with the service Y and one or more identifiers of the portable electronic device i, wherein the identifiers comprise a device identifier PIN i and a processor identifier PID i , and each key SK i having been computed by the manufacturing server by: computing a shared secret A i as a function F of a private key g, of the service entity, and of a public key B i of the portable electronic device i; computing a value T i by applying an advanced encryption standard (AES) algorithm to the shared secret A i and to a combination of a model description value C j of the portable electronic device i and the service-specific device identifier ID i ; and computing the shared key SK i by applying a second hash function to the value T i , and through which the service entity receives, from a particular portable electronic device X of the one or more portable electronic devices {i}, a registration request comprising a service-specific device identifier ID X of the particular portable electronic device X; and

a memory coupled to the processor, the memory storing code which, when executed by the processor, causes the processor to perform:

establishing a trusted relationship between the service entity and the particular portable electronic device X using a shared key SK X that corresponds to the service-specific device identifier ID X of the particular portable electronic device X.

25. The service entity as claimed in claim 24 , wherein the code, when executed by the processor, further causes the processor to perform, for each portable electronic device i:

deriving a secondary private key q i from the shared secret A i ; and

deriving a secondary public key Q i from the secondary private key q i .

26. The service entity as claimed in claim 25 , wherein the code, when executed by the processor, further causes the processor to perform, for each portable electronic device i:

creating a certificate CERT i using the secondary public key Q i and the service-specific device identifier ID i .

27. A non-transitory computer readable medium storing instructions which, when executed by a processor of a manufacturing server, cause the processor to perform:

broadcasting a message to one or more portable electronic devices {i}, the message including a public key G of a service entity that provides a service Y; and

for each portable electronic device i:

computing a shared secret A i as a function F of a private key g corresponding to the public key G and of a public key B i of the portable electronic device i;

computing a service-specific device identifier ID i , associated with the service Y, of the portable electronic device i by applying a first hash function to a concatenation of a service description value C Y associated with the service Y and one or more identifiers of the portable electronic device i, wherein the identifiers comprise a device identifier PIN i and a processor identifier PID i ;

computing a value T i by applying an advanced encryption standard (AES) algorithm to the shared secret A i and to a combination of a model description value C j of the portable electronic device i and the service-specific device identifier ID i ;

computing a shared key SK i by applying a second hash function to the value T i ; and

providing the service-specific device identifier ID i and the shared key SK i to the service entity,

wherein a trusted relationship is established between the service entity and the portable electronic device i using the service-specific device identifier ID i and the shared key SK i .

28. The non-transitory computer readable medium as claimed in claim 27 , wherein the instructions, when executed by the processor, further causes the processor to perform, for each portable electronic device i:

deriving at the manufacturing server a secondary private key q i from the shared secret A i ; and

deriving at the manufacturing server a secondary public key Q i from the secondary private key q i .

29. A non-transitory computer readable medium storing instructions which, when executed by a processor of a portable electronic device X, cause the processor to perform:

receiving a broadcast message comprising a public key G of a service entity that provides a service Y;

computing a shared secret A X as a function F of the public key G and of a private key b X of the portable electronic device X;

computing a service-specific device identifier ID X , associated with the service Y, of the portable electronic device X by applying a first hash function to a concatenation of a service description value C Y associated with the service Y and one or more identifiers of the portable electronic device X, wherein the identifiers comprise a device identifier PIN X and a processor identifier PID X ;

computing a value T X by applying an advanced encryption standard (AES) algorithm to the shared secret A X and to a combination of a model description value C X of the portable electronic device X and the service-specific device identifier ID X ;

computing a shared key SK X by applying a second hash function to the value T X ; and

establishing a trusted relationship between the portable electronic device X and the service entity using the service-specific device identifier ID X and the shared key SK X .

30. The non-transitory computer readable medium as claimed in claim 29 , wherein the instructions, when executed by the processor, further causes the processor to perform:

deriving a secondary private key q X from the shared secret A X ; and

deriving a secondary public key Q X from the secondary private key q X .

31. The non-transitory computer readable medium as claimed in claim 29 , wherein the instructions, when executed by the processor, further causes the processor to perform:

sending, to the service entity, a registration request comprising the service-specific device identifier ID X .

32. A non-transitory computer readable medium storing instructions which, when executed by a processor of a service entity providing a service Y, cause the processor to perform:

receiving, from a manufacturing server, public keys {B i } and corresponding service-specific device identifiers {ID i }, associated with the service Y, for one or more portable electronic devices {i}, each service-specific device identifier ID i having been computed by applying a first hash function to a concatenation of a service description value C Y associated with the service Y and one or more identifiers of the portable electronic device i, wherein the identifiers comprise a device identifier PIN i and a processor identifier PID i ;

receiving, from a particular portable electronic device X of the one or more portable electronic devices {i}, a registration request comprising a service-specific device identifier ID X of the particular portable electronic device X; and

for each portable electronic device i:

computing a shared secret A i as a function F of a private key g, of the service entity, and of the public key B i of the portable electronic device i;

computing a value T i by applying an advanced encryption standard (AES) algorithm to the shared secret A i and to a combination of a model description value C j of the portable electronic device i and the service-specific device identifier ID i ; and

computing a shared key SK i by applying a second hash function to the value T i ;

and

establishing a trusted relationship between the service entity and the particular portable electronic device X using a shared key SK X corresponding to the service-specific device identifier ID X of the particular portable electronic device X.

33. The non-transitory computer readable medium as claimed in claim 32 , wherein the instructions, when executed by the processor, further causes the processor to perform, for each portable electronic device i:

deriving a secondary private key q i from the shared secret A i ; and

deriving a secondary public key Q i from the secondary private key q i .

34. The non-transitory computer readable medium as claimed in claim 33 , wherein the instructions, when executed by the processor, further causes the processor to perform, for each portable electronic device i:

creating a certificate CERT i using the secondary public key Q i and the service-specific device identifier ID i .

35. The non-transitory computer readable medium as claimed in claim 32 , wherein the instructions, when executed by the processor, further causes the processor to perform:

broadcasting a message to the one or more portable electronic devices {i}, the message including a public key G corresponding to the private key g of the service entity.

36. A non-transitory computer readable medium storing instructions which, when executed by a processor of a service entity providing a service Y, cause the processor to perform:

receiving, from a manufacturing server, service-specific device identifiers {ID i }, associated with the service Y, and corresponding shared keys {SK i } for one or more portable electronic devices {i}, each service-specific device identifier ID i having been computed by the manufacturing server by applying a first hash function to a concatenation of a service description value C Y associated with the service Y and one or more identifiers of the portable electronic device i, wherein the identifiers comprise a device identifier PIN i and a processor identifier PID i , and each key SK i having been computed by the manufacturing server by:

computing a shared secret A i as a function F of a private key g, of the service entity, and of a public key B i of the portable electronic device i;

computing a value T i by applying an advanced encryption standard (AES) algorithm to the shared secret A i and to a combination of a model description value C j of the portable electronic device i and the service-specific device identifier ID i ; and

computing the shared key SK i by applying a second hash function to the value T i ;

receiving, from a particular portable electronic device X of the one or more portable electronic devices {i}, a registration request comprising a service-specific device identifier ID X of the particular portable electronic device X; and

establishing a trusted relationship between the service entity and the particular portable electronic device X using a shared key SK X that corresponds to the service-specific device identifier ID X of the particular portable electronic device X.

37. The non-transitory computer readable medium as claimed in claim 36 , wherein the instructions, when executed by the processor, further causes the processor to perform, for each portable electronic device i:

deriving a secondary private key q i from the shared secret A i ; and

deriving a secondary public key Q i from the secondary private key q i .

38. The non-transitory computer readable medium as claimed in claim 37 , wherein the instructions, when executed by the processor, further causes the processor to perform, for each portable electronic device i:

creating a certificate CERT i using the secondary public key Q i and the service-specific device identifier ID i .

Assignments (4)
NUNC PRO TUNC ASSIGNMENT Recorded Jun 19, 2023
From: BLACKBERRY LIMITED
To: MALIKIE INNOVATIONS LIMITED
Reel/Frame 064271/0199 →
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded Jun 16, 2023
From: BLACKBERRY LIMITED
To: MALIKIE INNOVATIONS LIMITED
Reel/Frame 064104/0103 →
CHANGE OF NAME Recorded Aug 28, 2015
From: RESEARCH IN MOTION LIMITED
To: BLACKBERRY LIMITED
Reel/Frame 036504/0659 →
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded Aug 17, 2012
From: BOWMAN, ROGER PAUL; HANDOJO, NICOLAAS SANTOSO; NEILL, BRIAN PAUL; AGAR, JOHN MICHAEL; WOOD, ROBERT HENDERSON
To: RESEARCH IN MOTION LIMITED
Reel/Frame 028804/0650 →