IP Library Granted Patent US 10,348,501
Granted Patent B2
US 10,348,501 · App. 15/207,332 · Granted Jul 9, 2019

Method and apparatus for a blackbox programming system permitting downloadable applications and multiple security profiles providing hardware separation of services in hardware constrained devices

Inventors: Ronald P. Cocchi (Seal Beach, CA); Michael A. Gorman (Cypress, CA); Jacob T. Carson (Long Beach, CA); Matthew A. Skubiszewski (Hermosa Beach, CA); David Ha (San Gabriel, CA)
Assignee: Inside Secure
H04L9/14H04L9/0836H04L9/0866H04L9/3263H04L63/062H04L63/0428H04L2209/16H04L2209/603H04L2463/061H04L2463/062H04L2463/101
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,348,501
App. No.
15/207,332
Granted
Jul 9, 2019
Kind
B2
Abstract

A method, apparatus, article of manufacture, and a memory structure for providing a security infrastructure that permits the programming of limited hardware resources that can accept newly downloaded applications and securely support a very large number of services offered by content providers each have the potential to utilize their own independent CAS/DRM system. The CE device owner can consume content from a variety of sources and enable switching among different and existing CAS/DRM security profiles as required by the content provider applications loaded in CE devices.

Claims (95)

1. In a system comprising at least one of a plurality of content providers providing media programs to consumers encrypted according to at least one of a plurality of conditional access systems provided by an associated conditional access system provider, a method of providing a root key, comprising:

(a) receiving content provider data unique to the at least one content provider;

(b) receiving conditional access system data comprising an identifier of the at least one conditional access system (CA_ID) and a customer product secret (CPS) unique to the associated conditional access system provider;

(c) generating a profile key from the customer product secret (CPS) and the identifier of the at least one conditional access system (CA_ID);

(d) receiving a chip key (SSK);

(e) generating a root key at least in part according to the profile key, the chip key (SSK), the content provider data, and the identifier of the at least one conditional access system (CA_ID); and

(f) decrypting at least one the media programs at least in part according to the root key, wherein the at least one of the media programs at least in part is encrypted according to a content key, wherein decrypting the at least one of the media programs at least in part according to the root key comprises:

(1) generating the content key from the root key;

(2) decrypting the at least one of the media programs at least in part according to the content key.

2. The method of claim 1 , wherein:

the chip key (SSK) is received in obfuscated form from a one-time programmed memory of a chip; and

the method further comprises de-obfuscating the obfuscated chip key (SSK) according to the content provider data.

3. The method of claim 2 , wherein:

the content provider data comprises a content provider key (Kcp) unique to the at least one content provider;

the chip key (SSK) is deobfuscated according to the content provider unique key (Kcp).

4. The method of claim 2 , wherein:

the conditional access system data further comprises an algorithm selection value;

de-obfuscating the obfuscated chip key comprises:

deobfuscating the obfuscated chip key (SSK) according to an algorithm selection value.

5. The method of claim 1 , wherein (c) and (e) are performed in a trusted execution environment of a system on a chip (SoC).

6. The method of claim 5 , wherein the chip key (SSK) is programmed into the SoC.

7. The method of claim 5 , wherein the chip key (SSK) is unique to a SoC product family.

8. The method of claim 5 , wherein the chip key (SSK) is unique to each SoC.

9. The method of claim 1 , wherein:

the conditional access system data further comprises an algorithm selection value; and

generating a root key at least in part according to the profile key, the chip key (SSK), the content provider data, and the identifier of the at least one conditional access system (CA_ID) comprises:

generating an intermediate key at least in part according to the chip key (SSK), the identifier of the at least one conditional access system (CA_ID), and the algorithm selection value;

generating a customer key at least in part according to the intermediate key, the profile key and the algorithm selection value; and

generating the root key according to the customer key.

10. The method of claim 9 , wherein:

the root key is further generated according to a module value;

generating the root key according to the customer key comprises:

generating the root key according to the customer key and the module value.

11. The method of claim 1 , wherein the content provider data further comprises the customer product secret (CPS).

12. The method of claim 1 , wherein;

the content provider data comprises a content provider key (Kcp) unique to the at least one content provider; and

generating a profile key from the customer product secret (CPS) and the identifier of the at least one conditional access system comprises:

(c1) generating the customer product secret (CPS), comprising:

receiving an array of first values and an index to the array of first values;

generating the customer product secret (CPS) from the array of values, the index, and the content provider key (Kcp);

(c2) generating a profile key from the generated customer product secret (CPS) and the identifier of the at least one conditional access system identifier (CA_ID).

13. The method of claim 12 , wherein generating a customer product secret (CPS) from the array of values, the index, and the content provider key (Kcp) comprises:

selecting a subset of the array of values according to the index; and

hashing the subset of the array values with the content provider key.

14. The method of claim 13 , wherein:

(c) and (e) are performed in a trusted execution environment of a system on a chip (SoC);

the array of first values are one time programmed permanently into the system on a chip (SoC) and are received from the SoC in the trusted execution environment;

the content provider data is included within an encrypted digital certificate;

receiving content provider data comprising a content provider key (Kcp) unique to the at least one content provider comprises decrypting the digital certificate;

the conditional access system data is included within a second encrypted digital certificate; and

receiving the conditional access system data comprises decrypting the second digital certificate.

15. In a system comprising at least one of a plurality of content providers providing media programs to consumers encrypted according to at least one of a plurality of conditional access systems provided by an associated conditional access system provider, an apparatus for providing a root key, comprising: a processor;

a memory communicatively coupled to the processor, the memory storing instructions comprising instructions for:

(a) receiving content provider data unique to the at least one content provider;

(b) receiving conditional access system data comprising an identifier of the at least one conditional access system (CA_ID) and a customer product secret (CPS) unique to the associated conditional access system provider;

(c) generating a profile key from the customer product secret (CPS) and the identifier of the at least one conditional access system (CA_ID);

(d) receiving a chip key (SSK);

(e) generating a root key at least in part according to the profile key, the chip key (SSK), the content provider data, and the identifier of the at least one conditional access system (CA_ID); and

(f) decrypting at least one of the media programs at least in part according to the root key, wherein the at least one of the media programs at least in part is encrypted according to a content key, wherein decrypting the at least one of the media programs at least in part according to the root key comprises:

(1) generating the content key from the root key;

(2) decrypting the at least one of the media programs at least in part according to the content key.

16. The apparatus of claim 15 , wherein:

the chip key (SSK) is received in obfuscated form from a one time programmed memory of a chip; and

the instructions further comprise instructions for de-obfuscating the obfuscated chip key (SSK) according to the content provider data.

17. The apparatus of claim 16 , wherein:

the content provider data comprises a content provider key (Kcp) unique to the at least one content provider; and

the chip key (SSK) is deobfuscated according to the content provider unique key (Kcp).

18. The apparatus of claim 15 , wherein the processor comprises a system on a chip (SoC) and instructions for performing (c) and (e) are executed in a trusted execution environment of the system on a chip (SoC).

19. The apparatus of claim 15 , wherein:

the conditional access system data further comprises an algorithm selection value; and

the instructions for generating a root key at least in part according to the profile key, the chip key (SSK), the content provider data, and the identifier of the at least one conditional access system (CA_ID) comprise instructions for:

generating an intermediate key at least in part according to the chip key (SSK), the identifier of the at least one conditional access system (CA_ID), and the algorithm selection value;

generating a customer key at least in part according to the intermediate key, the profile key and the algorithm selection value; and

generating the root key according to the customer key.

20. The apparatus of claim 19 , wherein:

the root key is further generated according to a module value;

the instructions for generating the root key according to the customer key comprise instructions for:

generating the root key according to the customer key and a module value.

21. The apparatus of claim 15 , wherein:

the content provider data comprises a content provider key (Kcp) unique to the at least one content provider; and

the instructions for generating a profile key from the customer product secret (CPS) and the identifier of the at least one conditional access system comprise instructions for:

(c1) generating the customer product secret (CPS), comprising instructions for:

receiving an array of first values and an index to the array of first values;

generating the customer product secret (CPS) from the array of values, the index, and the content provider key (Kcp);

(c2) generating a profile key from the generated customer product secret (CPS) and the identifier of the at least one conditional access system identifier (CA_ID).

22. The apparatus of claim 21 , wherein the instructions for generating a customer product secret (CPS) from the array of values, the index, and the content provider key (Kcp) comprise instructions for:

selecting a subset of the array of values according to the index; and

hashing the subset of the array values with the content provider key.

23. The apparatus of claim 22 , wherein:

(c) and (e) are performed in a trusted execution environment of a system on a chip (SoC);

the array of first values are one time programmed permanently into the system on a chip (SoC) and are received from the SoC in the trusted execution environment;

the content provider data is included within an encrypted digital certificate;

the instructions for receiving content provider data comprising a content provider key (Kcp) unique to the at least one content provider comprises decrypting the digital certificate;

the conditional access system data is included within a second encrypted digital certificate; and

the instructions for receiving the conditional access system data comprises decrypting the second digital certificate.

Assignments (7)
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded Dec 12, 2019
From: VERIMATRIX
To: RAMBUS INC.
Reel/Frame 051262/0413 →
PARTIAL RELEASE OF SECURITY INTEREST IN PATENT COLLATERAL Recorded Nov 21, 2019
From: GLAS SAS, AS AGENT
To: INSIDE SECURE
Reel/Frame 051076/0306 →
CHANGE OF ADDRESS Recorded Oct 16, 2019
From: VERIMATRIX
To: VERIMATRIX
Reel/Frame 050733/0003 →
CHANGE OF NAME Recorded Oct 7, 2019
From: INSIDE SECURE
To: VERIMATRIX
Reel/Frame 050647/0428 →
SECURITY INTEREST Recorded Feb 27, 2019
From: INSIDE SECURE
To: GLAS SAS, AS SECURITY AGENT
Reel/Frame 048449/0887 →
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded Feb 27, 2018
From: SYPHERMEDIA INTERNATIONAL, INC.
To: INSIDE SECURE S.A.
Reel/Frame 045053/0301 →
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded Oct 19, 2016
From: COCCHI, RONALD P.; GORMAN, MICHAEL A.; CARSON, JACOB T.; SKUBISZEWSKI, MATTHEW A.; HA, DAVID
To: SYPHERMEDIA INTERNATIONAL, INC.
Reel/Frame 040067/0846 →
Continuity (2)
Provisional Application 62191200 · Jul 10, 2015
Related Publication 20170012952A1 · Jan 12, 2017