IP Library Granted Patent US 10,360,396
Granted Patent B2
US 10,360,396 · App. 14/928,515 · Granted Jul 23, 2019

Token-based control of software installation and operation

Inventors: Daniel Jonas Major (Ottawa, CA); Michael Alievsky (Ottawa, CA); Robert David Turner (Kanata, CA); Adam Richard Schieman (Mississauga, CA)
Assignee: BlackBerry Limited
G06F21/6209G06F8/63G06F21/51G06F21/57G06F2221/033
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,360,396
App. No.
14/928,515
Granted
Jul 23, 2019
Kind
B2
Abstract

Described are a method and system of authorizing software execution on a computing device having a processor, the device storing a production key associated with software authorized for end-user release and storing a pre-release key associated with software not authorized for end-user release. The method includes determining that a signed software image is not signed with the production key; determining that the device has stored in memory thereon a pre-release token, the pre-release token containing data uniquely identifying the device and identifying the pre-release key; validating the pre-release token; and authenticating the signed software image using the pre-release key and, in response, permitting execution of the software image.

Claims (48)

1. A processor-implemented method of authorizing software execution on a computing device having a processor, the computing device storing a production key associated with software authorized for end-user release and storing a pre-release key associated with software not authorized for end-user release, the method comprising:

checking, by a bootloader executing on the computing device, a signature appended to an image of the software using the production key to determine whether the software is valid production software;

in response to determining that the software is not valid production software:

determining, by the bootloader, that the computing device has stored in memory thereon a pre-release token, the pre-release token including a signature provided by a remote security token management server and containing data uniquely identifying the computing device and identifying the pre-release key;

verifying, by the bootloader, that the pre-release token is unaltered and properly assigned to the computing device by checking the signature of the pre-release token;

in response to verifying that the pre-release token is unaltered and properly assigned to the computing device, authenticating, by the bootloader, the signed software image using the pre-release key, wherein authenticating the signed software image using the pre-release key comprises decrypting a signature associated with the software image using the pre-release key to obtain a decrypted image digest, and validating the decrypted image digest;

in response to determining that the software image is properly signed using the pre-release key, permitting, by the bootloader, execution of the software image; and

in response to determining that the software image is not properly signed using the pre-release key, blocking, by the bootloader, execution of the software image.

2. The method of claim 1 , wherein the pre-release token comprises a data structure having at least one field containing unique device-identifying data, and at least one field containing token type data, wherein the token type data identifies the pre-release key.

3. The method of claim 1 , wherein the data uniquely identifying the computing device includes a device serial number, and wherein validating the pre-release token comprises matching the device serial number from the pre-release token to a hard-coded device serial number on the computing device.

4. The method of claim 3 , wherein the data uniquely identifying the computing device further includes a processor ID number, and wherein validating the pre-release token further comprises matching the processor ID number from the pre-release token to a hard-coded processor ID number from the processor.

5. The method of claim 1 , further comprising determining that the token has not expired based on an expiry date within the token.

6. The method of claim 1 , further comprising initial operations of:

sending a token request to a security token management server; and

receiving the pre-release token for storage on the computing device.

7. The method of claim 6 , further comprising, at the security token management server:

receiving a whitelist authorization and token assignment for the computing device from an authorized user; and

in response to the token request,

confirming that the computing device is associated with the whitelist authorization,

generating a pre-release token record based on the token assignment, and

signing the pre-release token record to create the pre-release token.

8. A computing device, comprising:

a memory storing a production key associated with software authorized for end-user release and storing a pre-release key associated with software not authorized for end-user release;

a bootloader; and

a processor configured to execute the bootloader,

wherein the bootloader, when executed by the processor,

checks a signature appended to an image of the software using the production key to determine whether the software is valid production software;

in response to determining that the software is not valid production software:

determines that the computing device has stored in memory thereon a pre-release token, the pre-release token including a signature provided by a remote security token management server and containing data uniquely identifying the computing device and identifying the pre-release key,

verifies that the pre-release token is unaltered and properly assigned to the computing device by checking the signature of the pre-release token; and

in response to verifying that the pre-release token is unaltered and properly assigned to the computing device, authenticates the signed software image using the pre-release key, wherein authenticating the signed software image using the pre-release key comprises decrypting a signature associated with the software image using the pre-release key to obtain a decrypted image digest, and validating the decrypted image digest;

in response to determining that the software image is properly signed using the pre-release key, permits execution of the software image; and

in response to determining that the software image is not properly signed using the pre-release key, blocks execution of the software image.

9. The computing device of claim 8 , wherein the pre-release token comprises a data structure having at least one field containing unique device-identifying data, and at least one field containing token type data, wherein the token type data identifies the pre-release key.

10. The computing device of claim 8 , wherein the data uniquely identifying the computing device includes a device serial number, and wherein the bootloader validates the pre-release token by matching the device serial number from the pre-release token to a hard-coded device serial number on the computing device.

11. The computing device of claim 10 , wherein the data uniquely identifying the computing device further includes a processor ID number, and wherein the bootloader further validates the pre-release token by matching the processor ID number from the pre-release token to a hard-coded processor ID number from the processor.

12. The computing device of claim 8 , wherein the bootloader further determines that the token has not expired based on an expiry date within the token.

13. The computing device of claim 8 , wherein the computing device further includes an authboot application that, when executed, sends a token request to a security token management server, and receives the pre-release token for storage on the computing device.

14. A non-transitory computer-readable medium containing processor-executable instructions for authorizing software execution on a computing device having a processor, the computing device storing a production key associated with software authorized for end-user release and storing a pre-release key associated with software not authorized for end-user release, wherein the instructions, when executed, cause the processor to execute a bootloader which:

checks a signature appended to an image of the software using the production key to determine whether the software is valid production software;

in response to determining that the software is not valid production software:

determines that the computing device has stored in memory thereon a pre-release token, the pre-release token including a signature provided by a remote security token management server and containing data uniquely identifying the computing device and identifying the pre-release key;

verifies that the pre-release token is unaltered and properly assigned to the computing device by checking the signature of the pre-release token; and

in response to verifying that the pre-release token is unaltered and properly assigned to the computing device, authenticates signed software image using the pre-release key, wherein authenticating the signed software image using the pre-release key comprises decrypting a signature associated with the software image using the pre-release key to obtain a decrypted image digest, and validating the decrypted image digest;

in response to determining that the software image is properly signed using the pre-release key, permits execution of the software image; and

in response to determining that the software image is not properly signed using the pre-release key, blocks execution of the software image.

15. The non-transitory computer-readable medium of claim 14 , wherein the pre-release token comprises a data structure having at least one field containing unique device-identifying data, and at least one field containing token type data, wherein the token type data identifies the pre-release key.

16. The non-transitory computer-readable medium of claim 14 , wherein the data uniquely identifying the computing device includes a device serial number, and wherein the bootloader validates the pre-release token by matching the device serial number from the pre-release token to a hard-coded device serial number on the computing device.

Assignments (3)
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 →
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded Dec 18, 2015
From: ALIEVSKY, MICHAEL; MAJOR, DANIEL JONAS; TURNER, ROBERT DAVID; SCHIEMAN, ADAM RICHARD
To: BLACKBERRY LIMITED
Reel/Frame 037327/0796 →
Continuity (2)
Provisional Application 62247148 · Oct 27, 2015
Related Publication 20170116427A1 · Apr 27, 2017