[go: up one dir, main page]

CN110765437A - Module for securely providing assets to a target device - Google Patents

Module for securely providing assets to a target device Download PDF

Info

Publication number
CN110765437A
CN110765437A CN201911000015.7A CN201911000015A CN110765437A CN 110765437 A CN110765437 A CN 110765437A CN 201911000015 A CN201911000015 A CN 201911000015A CN 110765437 A CN110765437 A CN 110765437A
Authority
CN
China
Prior art keywords
ticket
pcd
module
appliance
data
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Granted
Application number
CN201911000015.7A
Other languages
Chinese (zh)
Other versions
CN110765437B (en
Inventor
M·哈姆贝格
B·C-M·琼
P·C·科彻
D·奥劳格林
D·A·波查夫
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Cryptographic Research Corp
Original Assignee
Cryptographic Research Corp
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by Cryptographic Research Corp filed Critical Cryptographic Research Corp
Priority to CN201911000015.7A priority Critical patent/CN110765437B/en
Publication of CN110765437A publication Critical patent/CN110765437A/en
Application granted granted Critical
Publication of CN110765437B publication Critical patent/CN110765437B/en
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING OR CALCULATING; COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F21/00Security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
    • G06F21/30Authentication, i.e. establishing the identity or authorisation of security principals
    • G06F21/31User authentication
    • G06F21/33User authentication using certificates
    • G06F21/335User authentication using certificates for accessing specific resources, e.g. using Kerberos tickets
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L63/00Network architectures or network communication protocols for network security
    • H04L63/08Network architectures or network communication protocols for network security for authentication of entities
    • H04L63/0853Network architectures or network communication protocols for network security for authentication of entities using an additional device, e.g. smartcard, SIM or a different communication terminal
    • GPHYSICS
    • G06COMPUTING OR CALCULATING; COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F21/00Security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
    • G06F21/60Protecting data
    • G06F21/602Providing cryptographic facilities or services
    • GPHYSICS
    • G06COMPUTING OR CALCULATING; COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F21/00Security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
    • G06F21/60Protecting data
    • G06F21/62Protecting access to data via a platform, e.g. using keys or access control rules
    • G06F21/6209Protecting access to data via a platform, e.g. using keys or access control rules to a single file or object, e.g. in a secure envelope, encrypted and accessed using a key, or with access control rules appended to the object itself
    • GPHYSICS
    • G06COMPUTING OR CALCULATING; COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F21/00Security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
    • G06F21/70Protecting specific internal or peripheral components, in which the protection of a component leads to protection of the entire computer
    • G06F21/71Protecting specific internal or peripheral components, in which the protection of a component leads to protection of the entire computer to assure secure computing or processing of information
    • G06F21/72Protecting specific internal or peripheral components, in which the protection of a component leads to protection of the entire computer to assure secure computing or processing of information in cryptographic circuits
    • GPHYSICS
    • G06COMPUTING OR CALCULATING; COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F21/00Security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
    • G06F21/70Protecting specific internal or peripheral components, in which the protection of a component leads to protection of the entire computer
    • G06F21/71Protecting specific internal or peripheral components, in which the protection of a component leads to protection of the entire computer to assure secure computing or processing of information
    • G06F21/73Protecting specific internal or peripheral components, in which the protection of a component leads to protection of the entire computer to assure secure computing or processing of information by creating or determining hardware identification, e.g. serial numbers
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L63/00Network architectures or network communication protocols for network security
    • H04L63/04Network architectures or network communication protocols for network security for providing a confidential data exchange among entities communicating through data packet networks
    • H04L63/0428Network architectures or network communication protocols for network security for providing a confidential data exchange among entities communicating through data packet networks wherein the data content is protected, e.g. by encrypting or encapsulating the payload
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L63/00Network architectures or network communication protocols for network security
    • H04L63/06Network architectures or network communication protocols for network security for supporting key management in a packet data network
    • H04L63/062Network architectures or network communication protocols for network security for supporting key management in a packet data network for key distribution, e.g. centrally by trusted party
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L67/00Network arrangements or protocols for supporting network services or applications
    • H04L67/50Network services
    • H04L67/60Scheduling or organising the servicing of application requests, e.g. requests for application data transmissions using the analysis and optimisation of the required network resources
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04WWIRELESS COMMUNICATION NETWORKS
    • H04W12/00Security arrangements; Authentication; Protecting privacy or anonymity
    • H04W12/04Key management, e.g. using generic bootstrapping architecture [GBA]
    • H04W12/043Key management, e.g. using generic bootstrapping architecture [GBA] using a trusted network node as an anchor
    • H04W12/0431Key distribution or pre-distribution; Key agreement
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04WWIRELESS COMMUNICATION NETWORKS
    • H04W12/00Security arrangements; Authentication; Protecting privacy or anonymity
    • H04W12/06Authentication
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04WWIRELESS COMMUNICATION NETWORKS
    • H04W12/00Security arrangements; Authentication; Protecting privacy or anonymity
    • H04W12/30Security of mobile devices; Security of mobile applications
    • H04W12/35Protecting application or service provisioning, e.g. securing SIM application provisioning
    • GPHYSICS
    • G06COMPUTING OR CALCULATING; COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2221/00Indexing scheme relating to security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
    • G06F2221/21Indexing scheme relating to G06F21/00 and subgroups addressing additional information or applications relating to security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
    • G06F2221/2107File encryption
    • GPHYSICS
    • G06COMPUTING OR CALCULATING; COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2221/00Indexing scheme relating to security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
    • G06F2221/21Indexing scheme relating to G06F21/00 and subgroups addressing additional information or applications relating to security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
    • G06F2221/2135Metering
    • GPHYSICS
    • G06COMPUTING OR CALCULATING; COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2221/00Indexing scheme relating to security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
    • G06F2221/21Indexing scheme relating to G06F21/00 and subgroups addressing additional information or applications relating to security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
    • G06F2221/2145Inheriting rights or properties, e.g., propagation of permissions or restrictions within a hierarchy
    • GPHYSICS
    • G06COMPUTING OR CALCULATING; COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2221/00Indexing scheme relating to security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
    • G06F2221/21Indexing scheme relating to G06F21/00 and subgroups addressing additional information or applications relating to security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
    • G06F2221/2149Restricted operating environment
    • GPHYSICS
    • G06COMPUTING OR CALCULATING; COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2221/00Indexing scheme relating to security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
    • G06F2221/21Indexing scheme relating to G06F21/00 and subgroups addressing additional information or applications relating to security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
    • G06F2221/2153Using hardware token as a secondary aspect
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L63/00Network architectures or network communication protocols for network security
    • H04L63/12Applying verification of the received information
    • H04L63/123Applying verification of the received information received data contents, e.g. message integrity

Landscapes

  • Engineering & Computer Science (AREA)
  • Computer Security & Cryptography (AREA)
  • Theoretical Computer Science (AREA)
  • Computer Hardware Design (AREA)
  • General Engineering & Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • Signal Processing (AREA)
  • Computer Networks & Wireless Communication (AREA)
  • Software Systems (AREA)
  • General Physics & Mathematics (AREA)
  • Computing Systems (AREA)
  • Mathematical Physics (AREA)
  • Health & Medical Sciences (AREA)
  • Bioethics (AREA)
  • General Health & Medical Sciences (AREA)
  • Storage Device Security (AREA)
  • Computer And Data Communications (AREA)
  • Management, Administration, Business Operations System, And Electronic Commerce (AREA)

Abstract

Embodiments described herein describe techniques for module management, including module creation and module deployment to a target device in an operational phase of a manufacturing lifecycle of the target device in a Cryptographic Manager (CM) environment. One embodiment includes a Root Authority (RA) device that receives a command to create a module and executes a module template to generate the module in response to the command. The module is deployed to an appliance device. When the set of instructions of the module is executed by the appliance device, a secure construction of a sequence of operations is caused to securely provide the data asset to the target device. The appliance device is configured to distribute the data asset to a Cryptographic Manager (CM) core of the target device.

Description

Module for securely providing assets to a target device
The present application is a divisional application of the chinese patent application having an application date of 2015, 5/4, application number of 201580031528.8, and an invention name of "module for safely providing assets to target device".
Background
Currently, system-on-a-chip (SoC) vendors may sell many different kinds of the same "integrated circuits" (also referred to as "chips" or "ICs"), each kind being configured for a particular application. IC configuration is typically accomplished by blowing one or more fuses or otherwise programming one-time programmable memory on the IC. This type of IC configuration is generally a one-way process and cannot be undone. One way to circumvent the permanence of the configuration process is to add redundant or spare bits within the one-time programmable memory that can be combined to modify the previous settings (e.g., by xoring multiple bits together to produce the last configuration setting). However, this type of redundancy has limited flexibility and requires additional fuses that occupy additional real estate on the IC. Additionally, having multiple fuses behind the set-up does not eliminate the need to perform multiple programming steps to configure the IC add cost. As such, configurations continue to be performed today by IC vendors (or contractors thereof), who then maintain an inventory of ICs having multiple fuse configurations.
Heterogeneous storage of the same IC is often inefficient. For example, stored ICs configured for a particular application are potentially wasted if they are over-produced or if the customer's IC configuration needs to be changed. Further, in some cases, order fulfillment may be deferred if the inventory of configured ICs is insufficient to meet demand. Moreover, existing models of configuration by IC vendors can limit the scope of actual business relationships and revenue stream practices (practicals) between IC vendors and downstream customers. For example, the present model may limit the ability to generate future revenue from the reconfiguration of the IC after its initial sale. If a downstream customer wishes to obtain features outside of the configured feature set, current ICs typically lack a means for unlocking this functionality and therefore have no opportunity to use downstream feature implementations as revenue streams.
Moreover, the need for security systems and applications is growing. Currently, it is said that secure ICs are often programmed with a secure key on the factory floor (on the factory floor). The security key may be used in various ways, such as, for example, protecting stored data, controlling access to digital content, or encrypting/verifying data used in a transaction. Today, these keys may be stored in one-time programmable memory, which may hold the key directly or hold a basic key that is used with cryptographic (cryptographic) functions that derive keys for various functions. Security is typically provided by performing a key loading process in a secure facility.
Drawings
The present disclosure is illustrated by way of example, and not by way of limitation, in the figures of the accompanying drawings.
FIG. 1 illustrates a network diagram of a password manager (CM) system in accordance with one embodiment.
Fig. 2 is a diagram illustrating messages between devices of the CM system of fig. 1, according to one embodiment.
FIG. 3 is a flow diagram illustrating a module lifecycle, according to one embodiment.
FIG. 4 is a flow diagram of a method of creating and deploying a module to an appliance device, according to one embodiment.
FIG. 5 is a flow diagram of a method of deploying a module to a CM library of a tester device, according to one embodiment.
Fig. 6 is a diagram illustrating messages between devices of the CM system of fig. 1 for pre-computed data (PCD) deployment authorization, according to one embodiment.
FIG. 7 is a flow diagram of a sequential PCD file at the time of generation and entry and two sequential PCD files after re-chunking, according to one embodiment.
FIG. 8 is a flow diagram of two non-sequential PCD files upon generation and entry and a non-sequential PCD file after consolidation in accordance with one embodiment.
FIG. 9 is a diagram illustrating a module, PCD, and ticket relationship, according to one embodiment.
FIG. 10 is a flow diagram of a PCD generation process in accordance with one embodiment.
Fig. 11 is a network diagram illustrating a high-bandwidth digital content protection (HDCP) import process, according to one embodiment.
FIG. 12 is a flow diagram of an input process for an input HDCP asset during an HDCP lifecycle, according to one embodiment.
Fig. 13 is a flow diagram of a method of generating and packaging PCD assets for secure deployment in a CM system, according to one embodiment.
Fig. 14 is a block diagram of ticket processing (ticketing) and HSM interaction daemon (THID) components, according to one embodiment.
FIG. 15 is a flow diagram of a method of performing ticket processing on a module to securely provide data assets to a target device, according to one embodiment.
FIG. 16 is a diagram of one embodiment of a computer system including a processor and a removable storage device interface connected to a removable storage device, according to one embodiment.
FIG. 17 is a diagram of region partitioning, according to one embodiment.
Detailed Description
Embodiments described herein describe techniques for providing a secure asset to a secure asset management infrastructure of a target device in one or more stages of a manufacturing lifecycle of the target device. The secure asset management infrastructure (also referred to as a CM ecosystem) includes a multi-device Cryptographic Manager (CM) system designed to implement hardware and software that provides use cases for secure chip manufacturing (hereinafter referred to as a "CM" system). The CM system includes various authorization, customization and testing subsystems and other processed manufacturing intended security devices. The CM system securely generates, processes and delivers a payload (sequence). It typically includes a CM root device (referred to herein as a "root device" or "CM root device"), one or more CM service appliances (referred to herein as "service devices" or "CM service devices"), a number of CM appliances (referred to herein as "appliances" or "CM appliances"), a tester device, and a number of CM cores and related software. The CM appliance in the CM ecosystem is a product of the CM core that securely generates, processes, and delivers a payload (also referred to as a sequence or module sequence) to a target device. The CM core is a hardware core capable of executing a set of commands, which is a building block for delivering functionality to a target device (also referred to as a product). The result of the execution of these commands is the goal of the CM system. The sequence may be digitally signed and/or carry other instances of cryptographic validity (e.g., MAC) that the CM core may verify to confirm the origin and validity of the sequence. This provides control over what data is to be accepted by (and which operations are to be performed by) the CM core, even though the communication channel used for the delivery sequence is untrusted. In one embodiment, the CM core is a CryptoManagerTMAnd (4) a core. CryptoManagerTMThe core is to provide activation and configuration for the featureA cryptographically controlled hardware core for management and security key management. CryptoManagerTMIntegrated into a system-on-a-chip (SoC) design and accessed via a register interface located on a SoC main bus. The module is a program, containing both instructions and data, the execution of which results in the secure construction of a sequence. The sequence may be binary data generated by a module running on the HSM within the commissioning appliance and consumed by the CM core. The secure execution of sequences by the CM core is a major goal of CM systems. The exact instruction set of the module may be defined as part of the CM system design.
The manufacture and assembly of electronic devices and other devices containing electronic components, such as microcontrollers, sensors, processes, etc., has increased along with the increased use of such hardware devices. To reduce manufacturing costs, many companies have outsourced aspects of the manufacturing process to third party companies. Some of these third party companies may be overseas and may be in jurisdictions where enterprise security is not as robust as other jurisdictions.
In the manufacture of certain devices, software, code, keys, and other important assets may be embedded or installed in hardware devices. Currently, these assets can be transferred from the customer to the manufacturing site of the storage medium, such as being stored on an optical disk. The management of these assets can be important to the security and revenue of the customer because it is not entirely satisfactory in all respects. Embodiments described herein provide secure asset management systems and techniques to securely provision assets to these hardware devices in an untrusted environment. The secure asset management system includes a number of components that cooperate to allow a customer to monitor and control the receipt and consumption of such assets during a manufacturing process performed by a third party manufacturer. The system includes remote components installed at third party manufacturers and components used by customers to communicate with and control the remote components. The asset may be digital data, such as a key or set of keys, a certificate, a unique device identifier, etc., that needs to be securely transferred to the consumer before the device can be prepared for sale to a customer.
Fig. 1 illustrates a network diagram of a CM system 100 according to one embodiment. The CM system 100 generally includes various password manager (CM) devices. The CM system 100 may provide a secure transaction and data reporting infrastructure designed to provide security keys and asset management capabilities to a target device 106 (e.g., a mobile device) through a web services interface. The user or customer for the CM system 100 may be a waferless semiconductor vendor producing chipsets for mobile devices, a system integrator (OEM) manufacturing mobile internet connected devices, and a Mobile Network Operator (MNO) deploying these devices on their wireless network, etc. Such customers subcontract some of the tooling of their equipment or components to third party manufacturers that operate remote manufacturing facilities, such as high volume manufacturing site 130. As a mission critical part of the customer's manufacturing and communication system, design priority for the CM system 100 is high availability and integrity.
The CM system 100 includes a provisioning device 110 that acts as an initial provisioning facility for devices and modules, which may be part of the CM system 100 or initial identification and credentials used to devices in the CM system 100. Such as illustrated in fig. 2, root device 102 receives data signed by provisioning device 110. The root device 102 is an entity that authorizes the installation, configuration, and operation of the CM system 100. The root device 102 may protect the master key and authorize setup, installation, configuration, and operation of components of the CM system 100 in any given site, such as the manufacturing site 130. For security reasons, in some embodiments, the provisioning apparatus 110 may not have a permanent connection to the rest of the CM system 100. In other words, the root device 102 may be considered an offline root authorizing settings and primary configuration parameters in the operation of the CM system. Typically, data is transferred to root device 102 and from root device 102 via a removable storage device such as a Universal Serial Bus (USB) flash drive. Computer systems are subject to a tradeoff between security and convenience. Given that the main task of the root authority is to protect the master keys that support the security of the entire CM deployment, the root authority design is driven by the need for security. Which is why the grant may be air-spaced (i.e., not connected to any computer network). Furthermore, HSM may be used to protect the most important keys stored by the root authority. Since the root grant is offline, it is not assumed to be continuously available. Thus, the root authority may authorize the scope of the license action in advance, such that the root authority need not be included when action needs to be taken. The authorizations of the root authorization are provided to the serving device, where a decision is made as to which authorizations will actually be used.
A service 107 (hereinafter "service") comprising one or more service devices 104 provides a way to centrally control and monitor the operation of the CM system 100 and provide data to an appliance cluster 109 (a collection of one or more appliance devices). The service device 104 is a hardware appliance that is used to facilitate central management of the CM system 100 and to provide data to the appliance cluster 109. Further, it distributes modules, data and security parameters to the target device 106 (via the commissioning appliance device 108). The target device 106 is a monolithic integrated circuit, typically containing a CM core. The service devices 104 of the service 107 may reside in the customer's physically secure enterprise data center 140 and may provide turnkey (turn-key) security services to the company to manage its assets in the remote manufacturing site 130. In another embodiment, the service 107 may include a plurality of service devices 104 at a plurality of data centers 140 connected by the enterprise network 105, as illustrated in fig. 1. Assets are digital data files, such as HDCP device key sets, that need to be securely transmitted to a target consumer (e.g., CM core). Assets are any sensitive data such as keys, serial numbers, and firmware that is securely managed by the CM system and provided to devices at various lifecycle stages from the manufacturing supply chain to the end user. Assets are typically device specific. For example, perso1, perso2, and device serialization records are assets. Digital content protection llc (dcp) is an organization that creates and sells HDCP keys. For example, a customer purchases its keys from the DCP and then introduces the HDCP keys into the CM service. The introduction process reformats the key file into a pre-computed (PCD) file and encrypts it so that only properly authorized appliances can access the PCD. The appliance cluster 109 is responsible for locally hosting the sensitive data to be transmitted to the target device 106 (e.g., CM core) during the process of manufacturing the target device 106 at the manufacturing site 130.
The ability to manage the distribution network of the appliance cluster 109 and provide PCD assets, ticket authorizations, signature sequences and modules across the network 103 of secure appliance devices 108 may be provided by a web service interface to users of the CM system 100. This appliance cluster 109 may be responsible for securely storing sensitive data locally in the manufacturing facility site 130 and for making this data highly available (with low latency during semiconductor device testing and/or manufacturing processes; the target device 106 may be integrated into the SoC design during the design phase of the SoC to provide cryptographic control of SoC feature activation, configuration management, and secure key management; in some embodiments, the target devices 106 each include a CM core, the CM core is a hardware core capable of executing a set of commands, which are building blocks for delivering functionality to a product (the target device 106), the result of the execution of these commands is the ultimate goal of the CM system 100. a Delegate (Delegate) is an entity to which the root device 102 grants a subset of the CM core programming capabilities, allowing data unknown to the root device 102 to be merged into a sequence destined for the target device 106 (e.g., CM core). The appliance device 108 is a server designed to provide secure computations, digital signatures, and sequence distribution to the target device 106 (e.g., CM core) incorporating the data provided by the delegating entity. Appliances 108 each include a Hardware Security Module (HSM)111 that serves as both a vault (vault) security protection sensitive data and a platform for execution of the module. Further, appliance device 108 generates, collects, secures, digitally signs, and provides various log information to the customer via service 107. An appliance cluster 109 (also referred to as a delegate cluster) is a set of delegate appliance devices 108 that provide increased availability of services provided by the delegate appliance devices 108. If a particular appliance device 108 is not able to fulfill the request, the tester device 112 may connect to any other appliance device 108 in the same appliance cluster 109 to continue service without a large interruption. Tester equipment 112 is the machine used in semiconductor device processing to test the equipment to function properly. The CM system uses tester equipment 112 to program data during wafer sort and package testing. The tester device 112 is generally an untrusted device located at the manufacturer's site 130 that is used to deliver the sequence to a particular target device 106 (e.g., a CM core). The tester device 112 is a device designed to perform verification, characterization, and high volume manufacturing testing. Tester equipment 112 runs a series of semiconductor tests, one or several of which will be part of the CM system operation. The tester device 112 relies on initiating communication with the cluster of commissioning appliances 109 and providing log information. The sequence is binary data generated by a module running on the HSM111 within the commissioning appliance 108 and consumed by the CM core. Secure execution of sequences by the CM core is a primary goal of the CM system 100. The tester device 112 may access a client library 114. The client library 114 may be a software component to be integrated with the primary application of the tester device 112. The client library 114 may be a client library provided by a cryptographic research company. Typical interactions initiated by the tester device 112 in the CM system 100 containing the CM core are described herein. In other embodiments, the interactions caused by the tester device 112 may be slightly different in non-CM core systems. When tester device 112 runs the "CRI" test, tester device 112 can invoke a script that sends a request to one of electrical devices 108. In response, appliance device 108 executes the protocols described herein that result in the secure delivery of the sequence to the CM core or cores used in a given test.
To make data available to the target device 106, the appliance cluster 109 can be connected to an asset management service, referred to as service 107, over a network 103 (such as the public internet, a private network, and/or combinations thereof), the network 103 such as the public internet, a private network, and/or combinations thereof. The appliance cluster 109 may reside in a data center of the outsourced manufacturing facility site 130 and may act as a proxy for the service 107. The appliance cluster 109 makes a secure highly available local inventory and ticket authorization of PCD assets available to the target device 106 (e.g., mobile device and chipset) during manufacturing using strong authentication and access control in a low latency manner.
Provisioning and/or installation of assets to devices may be referred to as asset management transactions. Asset management transactions may be managed by modules. A single appliance cluster 109 may run many modules and each module may be designed to provide a single type of transaction to a CM core enabled target device. Security sensitive computations required by the module are performed on HSM 111. The module, along with the tamper-proof HSM111, may consume a target device-specific authorization or ticket from a block (bulk) authorization file provided by the service 107 to the appliance device 108 or appliance cluster 109. A module is a program containing both instructions and data, the execution of which results in the secure construction of a sequence. Each instruction set of a module is defined as part of the CM system design. A module template is a program that defines the instruction set for the module. A module template is introduced by the root device 102 and its execution results in the creation of a module. The module template provides a mechanism for CM system extensibility. As described herein, a PCD is data distributed by a delegate appliance, typically computed offline, sent to the delegate appliance in batches (in bulk), indexed by an index, and transmitted as part of a sequence. The index may be independent of the serial number or other identifier of the target device. A PCD template is a description of how a PCD becomes an input for a particular type of module is formatted. A PCD type is a collection of PCDs based on a particular PCD template having particular properties such as uniqueness, serialization, and the like. For example, the PCD includes a key, serial number, etc. generated by the CM root that is securely encapsulated so that the CM-only core IP on the device can provide the data. For another example, the PCD includes keys from various vendors that are securely managed from the CM service to the target device (e.g., HDCP keys). When loaded into a service, the key data is converted into a PCD.
All assets within a given PCD type are indexed by tickets having the same ticket name. The ticket is data that enables enforcement of usage count limits and uniqueness/order issuance of CM core parameters. The ticket is authorized by the service operator and consumed by the CM module. The modules, PCD assets, and tickets are described in more detail below.
Generally, CM devices (e.g., 102, 104, and 108) must be trusted to provide the security foundation needed to manage, distribute, and program valuable electronic assets on behalf of a CRI client (or a client of a root authorized entity). Establishing a root of trust across the CM system 100 that can be used for verification of all devices is paramount to the overall security model of the CM infrastructure. To address the issue of securely establishing and provisioning security identifiers and credentials, provisioning device 110 (also referred to as a CRISP or CRISP device) may be used. CRISP can be used at the start point in the life cycle of any CM device. Before a CRISP can provision any new CM device, the CRISP first creates its own credentials and establishes itself as a third party that is trusted both by the entity that provides the asset (e.g., a cryptographic research company) and its customers who distribute the asset to CM devices in manufacture. CRISP provides the ability to switch the CM system 100 from operating with a key issued by CRI (e.g., a key provided by a cryptographic research company) to operating with a client-specific key typically generated by a Root Authority (RA).
It should be noted that portions of the description refer to components of the CM system 100 (such as roots, services, or appliances) as logical entities. Sometimes the internal structure of the logical entity is important. For example, a service entity typically includes two servers, a shared file system, a shared database, and so on. It is important within the context of the service 107 and each of these servers is considered a logical entity, each of which is referred to as a service device to distinguish it from the service entity (which represents the service device and the shared resource). Similarly, the root device 102 is a server that implements the functionality of root authorization; the appliance devices are individual servers (typically members of an appliance cluster 109 of the appliance devices 108). The target device 106 is a consumer of the functionality of the CM system 100, the target device 106 typically being the CM core of the target device. Root device 102, service device 104, and appliance device 108 each include a host computing device (e.g., a processor, etc.) and an embedded HSM 111. Some of the IDs and keys will be stored within HSM111 while others will be stored on the hard drive of the device. The exact location of the ID or key is determined based on its sensitivity and implementation details, as described herein. The ID is used to identify the component within the CM system 100. Some of the components are entities (e.g., service 107) while others are devices (e.g., service 104). Also, as used herein, Chip Series (Chip Series) refers to a collection of products that share the same security parameters within a CM core (e.g., a collection of products that share a common set of attributes such as RsbSigningKey). This concept is also reflected by the data model of root authority (RootAuthority). Each set of security parameters is encapsulated in a different chipries dataset on the root authority. The chipmaterial id is an identifier of chipmaterials. The ChipSeries name or alias is a code number used by a client of ChipSeries. A product is a collection of devices that share a common set of attributes, such as deviceID space. DeviceID is an identifier of the target device. The Product Name (Product Name) or Product alias may be a code number used by a customer of the Product. ChipID is the ID of the product and not the identifier of the chip, core or device.
The provisioning system may include one or more provisioning devices 110 (labeled CRISP device 110 in figure 1). CRISP device 110 acts as an initial key provisioning authority for all devices and modules in CM system 100, providing an activation identification and credentials for the device, providing a system such as a cryptographic research company (CRI system provisioning) CRISP entity. In particular, the root device 102 receives data signed by a providing device 110 such as illustrated in fig. 2: an appliance definition file specifying attributes of an appliance device and its HSM 111; a service definition file specifying attributes of the service device and its HSM; a modular template, a PCD template, a ChipSeries template, etc.
Information about all devices of CM system 100, in particular their IDs and their keys, will be passed to the root authority (root device 102) by CRISP device 110. This data serves as the basis for authorization of the root authority. For example, when a new service 107 is activated, a Root operator selects a service device 104 from a list of all service devices 104 known to the Root authority to establish the new service. It should be noted that in some cases it may be possible for root authorization to enter devices, modules, or other data that CRISP device 110 has not authorized. While the CM system 100 may operate in a meaningful way, such inputs may introduce untrusted elements and may have serious security and reliability consequences.
Fig. 2 is a diagram illustrating messages between devices of the CM system 100 of fig. 1, according to one embodiment. Fig. 2 illustrates a high-level overview of CM system messaging 200. These messages provide a visual representation of the messages in the CM system 100. They may be logically divided into the following functional groups: defining; activating; module distribution; distributing PCD; and ticket distribution roughly corresponding to the CM ecosystem lifecycle stages described above. The operation can also be subdivided into several specific phases: a module; PCD and ticket distribution. It should be noted that each numbered message may actually represent several messages, but has generally been represented to illustrate the message exchange. Also, the message depicted in FIG. 2 may contain several parts. The messages and associated functionality required to generate and process each message are described herein.
The partitioning of messages is due to two factors: the encoding requirements and file signatures for messages targeted at device 106 and HSM 111. For files targeted to HSMs, HSMs typically process input data encoded in a binary format. Thus, data targeted for HSM111 should be encoded in this manner. For device-targeted files, JSON may be used to encode data to be processed by a service device or appliance device for simplicity of processing. To avoid having the HSM111 parse JSON objects, messages can be divided into these two types: binary or JSON. One of the features of the HSM111 is a Backup recovery mechanism, which uses a Master Backup Key (MBK). Also, to operate, the HSM111 must have the MBK stored therein. MBKs are treated differently on roots, services and appliances. On the root device 102, the MBK is used for backup/restore operations as planned. On the service device 104 and the appliance device 108, the MBK may not be used and may be generated and stored on the HSM 111.
By definition, CRISP device 110 functions to provide initial verification of device identification and credentials, as described above. CRISP device 110 creates and distributes credentials that are used to establish a mutually authenticated Secure Shell (SSH) tunnel between service device 104 and appliance device 108 before it is activated. Furthermore, CRISP device 110 acts as a distributor of validated public information about the device to the root authority and on to other devices. For example, an ApplianceActivateConn key pair is used to provide appliance credentials for SSH authentication. The key pair is generated on appliance device 108 and its public key is sent to CRISP device 110 during the definition in appliance definition message 202. As part of the appliance definition, root device 102 receives the public key (along with other public keys of that and other kinds) in appliance definition message 202 from CRISP 210. The public key is distributed to the service device 104 that can securely communicate with the appliance device 108 using the public key. Additional definition messages may be used for the definition of other devices. For example, service definition message 204 can be received by CRISP device 110 from service device 104. As part of the service definition, root device 102 receives the public key (along with other public keys of that and other categories) in service definition message 208 from CRISP. Also, as part of the root definition, root device 102 can receive root definition message 210 from CRISP device 110.
Another important part of the definition is to provide a one-time-use password that allows for the verification of the activation message and delivery of encrypted data during activation, shared between the root device 102 and each of the devices (both the service device 104 and the appliance device 108). More broadly, a definition is the process of exchanging data between each of the devices and CRISP device 110, using physical proximity for its security, which is exploited during activation to guide security.
One of the primary functions of the root authority is to provide authority to the rest of the CM system 100. To activate, the devices of the CM system 100 may exchange an activation file via an activation message. This may be accomplished by transferring the signature file using a removable storage device (e.g., a USB flash drive). Each grant includes several files, some of which appear in pairs: a content file and a signature or hash file. When authorization needs to be delivered to the device itself (not the HSM 111), the message content is typically expressed in JSON format, while the binary format is used to target the authorization of the HSM 111. All this means that a typical authorization is a TAR file, containing several files. As illustrated in fig. 2, the service device 104 receives a service activation message 212 and an appliance activation message 214 from the root device 102. Appliance device 108 may receive appliance activation message 216 from service device 104.
The infrastructure configuration includes a set of authorizations provided by the root device 102 to the serving device in the form of a series of signature files. These files are processed by the service device 104 and some of them are also sent to the appliance device 108. For example, before the appliance 108 can perform any useful function as part of the CM system 100 (in addition to being upgraded), the appliance 108 needs to be activated. To do so, the root device 102 creates and signs an appliance activation message 214 and sends it to the service device 104. The transmission of this message constitutes the activation authorization. From the root device's perspective, this appliance activation has already been sent out, but it may not have any effect on the appliance device 108 itself for a long time. A Service operator may have a chance to take effect only if he decides to act on the provided authorization and forwards the received authorization. After receiving the appliance activation message 216 from the service device 104, the appliance device 108 verifies the signature thereon and applies the activation authorization only so that it can reach a valid state. It should be noted that a portion of the appliance activation authorization may be handled by the service device 104 itself. For example, this is how the service device 104 receives SSH credentials, which require using the SSH credentials to connect to the appliance 108 when the appliance 108 is activated. As described above, the root authority may authorize the scope of the license action in advance, such that it is not necessary to include the root authority when action needs to be taken. The authorizations (214,216) of the root authorization are provided to the service device 104, where a decision is made as to which authorizations will actually be used.
As illustrated in fig. 2, messages are used to securely exchange information about modules, PCDs and tickets between devices in the CM system. For example, the root device 102 receives a module template input message 220 to input a module template into the root device 102 and a PCD template input message 230 to input a PCD template into the root device 102. The modules, module templates, and PCD templates are described in more detail below. Service device 104 receives module input message 222 to input the module into service device 104 and module deploy message 224 to deploy the module to appliance device 108. Service device 104 receives PCD input message 232 entering the PCD into service device 104 and PCD deploy message 234 deploying the PCD to appliance 108. Appliance device 108 receives module input message 226 entering the module into appliance device 108 and module deploy message 228 deploying the module to target device 106. Appliance device 108 receives PCD input message 236 entering the PCD into appliance device 108. The PCD may be deployed to the target device 106 in conjunction with a module deployed to the target device 106. It should be noted that the PCD is used to provide data input to the module. In general, there are two main inputs to the module, including the PCD and the ticket. For example, to communicate the key to the CM core of the target device 106, the key is provided in the form of a PCD that is consumed by the module when it is executed in response to a request from the tester device 112. PCDs are a general reference to information related to PCDs, as described herein.
The service device 104 and the appliance device 108 may exchange ticket messages 240. Specifically, the appliance device 108 receives a ticket granting (grant) message 240 from the service device 104. A ticket in the form of a PCD is an input to a module when executed on a target device 106. Additional details regarding the ticket are described below.
One of the features of the CM system 100 is a command interpreter running on the requesting appliance 108 that executes the command sequence. There are basically two types of commands in sequence: one type cryptographically signed by a root authority, another type cryptographically signed by a delegate such as the service device 104). These sequences provide secure and verified programming instructions to the target device 106 (e.g., CM core).
Module
A module is a program containing instructions and data, the execution of which results in the secure construction of a sequence. The sequence is in turn defined as the binary output of the modules consumed by the CM core of the target device 106. Secure transmission of sequences to the CM core and its subsequent execution are the main goals of the CM system 100. In other words, the module encapsulates a different piece of functionality provided by the CM system 100. Execution of modules on the appliance device is delegated to the entity provided by the CM system 100 in the form of interaction with the end consumer device, which is typically the CM core.
Generally, a module is an application that securely provides data to a target device. The module originates in a root authority that it is authorized to run on a particular cluster of appliances at a particular manufacturing site. The module may process the encrypted asset as a device-unique non-replayable message in the form of a PCD asset from inventory on the appliance cluster. Some modules do not have PCDs and some modules do not have unique messages. Modules use a ticket system to ensure that assets are not duplicated or duplicated spent (double-spends). The modules contain information written to the equipment by the tester equipment that invokes the modules using the client library during the manufacturing process, such as during wafer sort or final test. Most modules also securely record device transactions on the appliance. The log entry includes tracking data, such as deviceId and a key identifier. The ticket system tracks module usage and may require inventory to ensure that each time a tester device writes to a device, the payload is unique to that device and prevents replay or double cost. The appliance device may already include an inventory of a specified number of PCDs and tickets for each module. The module may be deployed by a service operator to a selected cluster of appliances, but may first require authorization from the root. The service then maintains an inventory of PCDs and tickets required by each module at each appliance cluster at a sufficient level to cover production rates with tolerance for network connection failures or bandwidth fluctuations.
The modules provide flexibility and extensibility to the CM system architecture. New modules may be developed, tested and deployed on a running CM system 100 while it will support production using previously deployed modules. The module lifecycle is somewhat complex, which is a reflection of system requirements, invoking extensible mechanisms to provide yet unknown features to the running system without sacrificing any system security. The following describes various embodiments that provide module management throughout a module lifecycle.
FIG. 3 is a flow diagram illustrating a module lifecycle 300, according to one embodiment. At 302, the CRISP operator creates a module specification file (CM file). At 304, the CRISP operator uses the CRISP Command Line Interface (CLI) or other user interface run command (e.g., cmComplier command) to create a module template (CMT file). The CM file is used as input by CMComplier. At 306, operators (CRISP operator and Root operator) generate PCDs as needed using CRISP CLIs and Root CLIs. At 308, the module template and PCD template are transferred from the CRISP to the root via the thumb drive (or other removable storage device, as described herein). At 310, at the root CLI, the root operator runs a command (e.g., createModule command) to create a module. In one embodiment, for module M1, softHSM creates the module and HSM signs the module. Modules contain or use some or all of the following: PCD 305 (from CRISPs and/or roots); keys from the Root database (encrypted); parameters provided by the root operator; "placeholders" 311 for data later provided by appliance 108. It should be noted that in this exemplary embodiment, the module does not contain a PCD, but the module may require that the PCD be present on the appliance. The parameters of the module provided by the root operator may be specific feature bits for a specific management module. Which may include determining, for example, a memory offset of where to store the resulting key. At 312, the module with placeholder 311 is transferred from root device 102 to service device 104 via the thumb drive. At 314, at the root CLI, the root operator runs a command (createmoduledeplymentauthorization command) to generate a Module Deployment Authorization (Module Deployment Authorization). At 316, the module authorization file is transmitted from the root device 102 to the service 104 via the thumb drive. At 318, the service operator uploads a high-bandwidth digital content protection (HDCP) key file (from the DCP) for the HDCP module. The service operator requests that the service appliance 104 convert the PCD key to an HDCP encryption key formatted as a PCD file. At 320, service device 104 provides PCD 305 and ticket 307 to appliance device 108. Service device 104 may continue to grant tickets to appliance device 108 to give permission to cause appliance device 108 to execute the module. Service device 104 may query appliance 108 to determine an inventory status, and may send the PCD to appliance 108 when the inventory falls below a configuration limit. At 322, the module is deployed over a network to the appliance 108. In this embodiment, a deployment command (loadModule command) may be triggered when a service operator uses a user interface (GUI or CLI), when an appliance 108 is added to an appliance cluster 109 (not shown in fig. 3), and when a module is deployed to a new appliance 108.
At 324, using the tester CLI, the test method developer creates a test script 315 (e.g., lot _ test) and loads it onto the tester device 112. At 326, the test script 315 triggers the client library 114 to communicate to the appliance device 108, which invokes the module. At 328, client library 114 sends the parameters to appliance device 108, which appliance device 108 uses along with PCD 305 to generate a sequence of modules 313 that are sent to tester device 112. At 330, HSM111 of appliance device 108 assembles PCD 305 and tester information, signs the Delegated Signature Block (DSB) and creates a sequence of modules 313. At 332, the appliance device 108 sends the module sequence 312 to the client library 114 for the tester device 112 to send to the CM core.
In one embodiment, a root device receives a module template, a PCD template, and user input including arguments associated with a particular transaction type of a plurality of types. The module is generated and deployed to the appliance device based on the module template, the pre-computed data, and the parameters. When the module is executed on the appliance device, it results in a secure construction of a sequence of operations to be performed as transactions of a particular transaction type with respect to the target device (e.g., CM core).
In some embodiments, the module is generated by a root authority based on a module template. Module templates can be distributed by CRISP device 110 through a mechanism similar to that of device definition distribution. The module template basically defines the type of module based on the usage that the module needs to support. The use cases that are to be run as a single set of transactions between the appliance device and the CM core at the same production stage may use module templates that combine a set of desired functionalities. Based on the module template, a module for a particular chipSeries dataset will be created on the root device 102. The module, along with a module deployment message, will be distributed to the cluster of appliances to perform interactions with the CM core to provide the combined data to the target device.
Module management can be divided into two distinct CM system functions: module input and module deployment. At a high level, the module inputs are what the appliance device requires to perform before it can load the module into its HSM and service the tester device request with it. However, if a module deployment message is not received and processed for a particular module, it will not be able to perform its function. The module deploys a message delivery module key (moduleKey) that is used to encrypt sensitive information within the module. In addition, the module deployment message binds the module to a particular cluster. The modules may be named otherwise according to conventions, such as with a compound descriptor (the same as the module template name) that includes a description of the functionality of the module, a module domain, a reference to a module template parameter, and a version. For example, the names of the modules that provide serialization, cvdak (chipvendordeviceaeskey), and padak (provisioningauthordeviceaeskey) programming functionality for a product in development mode would be: srl _ cvdak _ padak _ productname _ dev _01, where the last parameter is a version, which is not technically part of the name, but usually accompanies it. The module template parameters may be provided during module creation and may be given references (handles). These references become part of the name of the module. For example, srl _ cvdak _ padak module templates require development patterns. The module template encodes the requirements and the root CLI prompts the root operator to enter the mode and reference (alias) for the selection. This reference will be used to identify the module. For example, in the module named srl _ cvdak _ padak _ productname _ dev _01, "dev" is a reference to the module template parameters.
The module is generated by the root device 102 by converting the module template into a module. The module template itself is a module. That is, the module template is a program running on the HSM interpreter within the root device 102. The result of the execution of a module template is another module. The module template defines the general functionality that will be performed by the module in response to requests from the tester device 112. For example, a module template may be created to perform serialization, provide a serial number to a CM core, and so on. However, some specific information about the CM core may be required to build the module to perform the serialization. The module template may be run by an interpreter on the root HSM to produce the module.
In one embodiment, the modules are transferred between the root device 102, the service device 104, and the appliance device 108 in a TAR archive 303. The service device 104 may save a particular module and deploy it on a different cluster of appliances by reusing it with a different module deployment authorization. The module itself is deployment neutral, in other words it can be deployed on any cluster of appliances. The module deploy message is the portion that deploys the module to the appliance cluster, including providing a moduleKey that is encrypted with the clusterKey to be delivered to the appliance/HSM. The appliance device verification module deploys the signature on the message, checks if the appliance device belongs to the application cluster specified in the message, and passes it to the HSM, where the moduleKey is unwrapped and stored.
In one embodiment, root device 102 includes a processor and a removable storage device interface configured to connect to a removable storage device. The processor is operable to receive a command to create a module. In response to the command, the processor executes the module template to generate a module. The processor deploys the module to the appliance device, for example, by storing the module to a removable storage device. In particular, the processor stores the module in the removable storage device via the removable storage device interface to communicate the module to the service device, and the service device is configured to distribute the module to the appliance device over the network. In some embodiments, the processor may generate the module using the PCD, a key, input from an operator (e.g., an argument associated with a particular transaction type), or any combination thereof. In another embodiment, the processor may utilize a placeholder generation module for data to be provided later, as described herein. The processor may generate a module deployment authorization and store the module deployment authorization in the removable storage device to communicate the module deployment authorization to the service device, which distributes the module to the appliance device over the network.
In one embodiment, the appliance device 108 includes a processor, a network interface, and a tester device interface coupled to the processor. The processor receives the module from the service device through the network interface and receives the communication from the CM client library of the tester device through the tester device interface. The CM client library is a set of functions that provide an interface from the tester device to the CM appliance cluster. In response to the communication, the processor invokes the module to generate a sequence of modules based on the parameters in the communication. The processor sends the module sequence to the CM client library for execution by the tester device to deliver the module sequence to the CM core of the target device during an operational phase of the manufacturing lifecycle of the target device. In another embodiment, appliance device 108 includes an HSM operable to assemble tester information and a PCD, sign a DSB, and create a sequence of modules using the tester information, the PCD, and the DSB. In another embodiment, the tester device is configured to deliver the sequence of modules to the CM core of the target device as part of a test script.
FIG. 4 is a flow diagram of a method 400 of creating a module and deploying the module to an appliance, according to one embodiment. Method 400 may be performed by processing logic that may comprise hardware (e.g., circuitry, dedicated logic, programmable logic, microcode, etc.), software, firmware, or a combination thereof. In one embodiment, the root device 102 of fig. 1-3 performs the method 400. In other embodiments, other components of the CM system 100 described herein may perform some or all of the operations of the method 400.
Referring to FIG. 4, method 400 begins with processing logic receiving a command to create a module (block 402). This module is the first application to securely provide data assets to the target device 106 (the CM core of the target device 106) during the operational phase of the target device's manufacturing lifecycle. In response to the command, processing logic executes the module template to generate a module (block 404). The module template is a second application that defines an instruction set for the module and the data asset. The processing logic deploys the module to the appliance device (block 406) and the method 400 ends. The set of instructions of the module, when executed by the appliance device, results in a secure construction of a sequence of operations to securely provide the data asset to the target device. The appliance device is configured to distribute the data asset to a cryptographic manager core of the target device.
In another embodiment, processing logic determines whether pre-computed data (PCD) has been received (block 408), the pre-computed data containing data assets (block 408). When the PCD has been received at block 408, processing logic generates a module with the PCD (block 410) and returns to block 406 to deploy the module to the appliance device. In another embodiment, processing logic retrieves the key from the root database and processing logic utilizes the PCD and the key generation module. In another embodiment, processing logic receives input from a root operator, and the input includes arguments associated with a particular transaction type. The processing logic utilizes a PCD and a parameter generation module. As described herein, the processing logic can utilize a placeholder generation module for data to be provided by the appliance device.
As described herein, the processing logic may deploy the module to the appliance device by storing the module in a removable storage device to communicate the module to the service device. The service device is configured to distribute the module to the appliance device over the network.
In another embodiment, the processing logic generates a module deployment authorization and stores the module deployment authorization to the removable storage device to communicate the module deployment authorization to the service device, and the service device is configured to distribute the module deployment authorization to the appliance device over the network. In another embodiment, the processing logic signs the module with a root module private key.
FIG. 5 is a flow diagram of a method 500 of deploying modules of a CM library of tester devices, according to one embodiment. Method 500 may be performed by processing logic that may comprise hardware (e.g., circuitry, dedicated logic, programmable logic, microcode, etc.), software, firmware, or a combination thereof. In one embodiment, the appliance device 108 of fig. 1-3 performs the method 500. In other embodiments, other components of the CM system 100 described herein may perform some or all of the operations of the method 500.
Referring to FIG. 5, method 500 begins with processing logic receiving a module from a serving device over a network (block 502). The processing logic determines whether a communication is received from a CM client library of the tester device (block 504). If no communication is received, processing logic continues until a communication is received. The communication includes parameters from the CM client library. In response to the communication, processing logic invokes the module to be executed to generate a sequence of modules based on the arguments (block 506). The processing logic sends the module sequence to the CM client library (block 508) and the method 500 ends. The tester script of the tester device delivers the sequence of modules to the CM core of the target device during an operational phase of the manufacturing lifecycle of the target device.
In another embodiment, processing logic assembles tester information and a PCD, signs a DSB, and creates a sequence of modules with the tester information, the PCD, and the DSB. The processing logic may instruct the HSM of the respective device to assemble the tester information and PDC, sign the DSB, and create a sequence of modules. The tester device is configured to deliver a sequence of modules to the CM core of the target device as part of a test script.
Precomputation data (PCD)
Pre-computed data or PCD for short is used as input to the module. Its generation and packaging may occur on different parts of the CM system depending on the type of PCD. In particular, it may be done either by the CM root or by CM Service. Generally, different types of PCDs correspond to different customer usage scenarios and thus different modules. However, the correspondence is not one-to-one (or mapped). Some modules do not require a PCD (e.g., Debug unlock module), while other modules may require multiple types of PCDs, such as a combined serialized/Perso 1/Perso2 module. It is also possible for multiple modules to consume a single type of PCD. For example, HDCP keys formatted as PCDs may be consumed by several different modules. The generation of PCD assets may or may not occur within CM system 100, i.e., HDCP keys are input into CM system 100 that is not generated. In such a case, PCD packaging is a stage when assets are introduced into the CM system 100 in the form of PCDs. For some types of pre-computed data, such as HDCP keys, PCD encapsulation may be performed by a service. For other types, such as Perso1, it will be authorized by the CM root. The CM root authority is a trusted offline entity that authorizes the module, CM appliance device, and cluster and generates the PCD. The CM root authority is not connected to the CM system. A third option is for providing the encapsulated PCD directly to a provisioning authority of the CM service (e.g., CRISP device 110). CM services are managed by a center of CM systems hosted by a customer or a cryptographic research company. The CM service manages the distribution network of the CM appliance cluster and the provision of pre-computed data (PCD) assets, ticket authorizations, signature sequences and modules across the network of CM appliance devices. The following describes message transmission for PCD deployment authorization.
In one embodiment, the root device 102 includes a processor and a removable storage device interface configured to connect to a removable storage device. The processor is operable to receive a first command to generate a PCD asset for a target device unique to the target device. In response to the first command, the processor generates PCD assets and packages the PCD assets for secure deployment of the PCD assets to the target device and exclusive use by the target device. The processor deploys the packaged PCD assets in the CM system for identification and tracking of the target device. In another embodiment, the processor is further operable to receive a CLI command that generates a set of PDC assets in batches based on a PCD template, wherein the PCD template is a description of how the PCD assets are formatted as inputs for a particular type of module. The processor generates PCD assets as part of the generation of the set of batched PCD assets and packages the generated PCD assets for secure deployment. The processor distributes the packaged PCD assets to the appliance devices of the CM system over the network. The appliance device will securely provide the PCD assets to the CM core of the target device using a particular type of module, a module being an application that when executed by the appliance device results in a secure construction of a sequence of operations to securely provide the PCD assets to the target device in an operational phase of the manufacturing lifecycle of the target device.
In another embodiment, the service device 104 includes a processor and a removable storage device interface configured to connect to a removable storage device. The processor is operable to receive a first command encapsulating a PCD asset for a target device. In response to the first command, the processor packages the PCD assets for secure deployment of the PCD assets to the target device and exclusive use by the target device. The processor deploys the packaged PCD assets in the CM system for identification and tracking of the target device. In another embodiment, PCD assets are generated external to the CM device. In response to the first command, the processor is further operable to input PCD assets, package the input PCD assets for the secure deployment, and distribute the packaged PCD assets over a network to the appliances of the CM system. The appliance device is to securely provide the PCD asset to the target device CM core using a module, which is an application that when executed by the appliance device results in a secure construction of a sequence of operations to securely provide the PCD asset to the target device in an operational phase of the target device manufacturing lifecycle.
Fig. 6 is a diagram illustrating messages between devices of the CM system of fig. 1 for PCD deployment authorization 600, according to one embodiment. For PCD deployment authorization, CRISP device 110 provides a message 602 containing a PCD generator, PCD template, and module template ID to root device 102. In another embodiment, the message 602 includes a PCD template, a template module ID, a PCD wrapping public key, a PCD wrapping key reference, and the like. The additional message may include the PCD wrapping public key signed by the entity signing key. Message 602 can be signed by a CRISP module key. The service, including serving device 104 (primary) and serving device 104(DR), and a shared database and storage receive message 604 to enter the CM root-encapsulated PCD. Message 604 may include a header and a payload of data (e.g., AEAD _ pcdinstancekey (record)). For CM root generated/packaged-based PCDs, the CLI command set may be used for the operator to generate PCD assets in batches based on the PCD template received in message 602 from CRISP device 110. The batch PCD assets may be exported from the root device 102 and imported into the CM service using a removable storage device such as a USB flash drive. Service device 104 may also enter message 606 with the key-delivered/service-packaged PCD. Message 606 may include a PCD instance key that is encrypted (wrapped) with a public service HSM key (e.g., E _ commonservicehsmkey (pcdinstancekey)). Alternatively, the message 606 may include a package identifier, PCD type, ticket type, record format, record index type, record individual identifier length, record size, and the like. Message 606 may be signed by a root authorization key to be verified by service device 104. As illustrated in the depicted embodiment, service device 104 and appliance device 108 store various data in their respective HSMs or in a hard disk or shared storage.
In one embodiment, a unique set of sensitive data assets for a target device is generated external to the target device. The CM device securely encapsulates the unique set of sensitive data assets to ensure that the unique set of sensitive data will be used exclusively by the target device. The CM device distributes the packaged unique set of sensitive data assets to the target device to provide subsequent identification and tracking of the target device.
Various embodiments of PCD generation and deployment are described below. The PCD may be stored and indexed in a record. Each entry (each PCD record) is referenced by an index. Each entry contains one or more fields for unencrypted data, encrypted data, and a Message Authentication Code (MAC) (e.g., a key cryptographic hash function). It is possible to parse unencrypted data for the purpose of detecting data duplication. The common information in the entries may include a file type, a ticket type, and metadata associated with the PCD. The metadata may specify where the PCD may be used. The PCD records should be unique, and each PCD record may have a globally unique identifier. The globally unique identifier may be sequential to a PCD for sequential access. Typically, the globally unique identifiers are sequential to the ticket-controlled PCD. In other embodiments, the globally unique identifier may be non-sequential to a lookup table PCD, where each individual PCD in the system maps to no more than one unique ticket. In some configurations, it is possible for one ticket to apply to no more than one PCD record, but it is not possible for a single PCD record to be referenced by no more than one ticket. The PCD records may be accessed sequentially or using table lookup (random access). In some embodiments, there may be a large number of PCD record entries, and the PCD file format should support a large number (2^32) of records. The PCD file format may be constructed to be relatively compact even without file compression. In other implementations, a PCD may be constructed to permit authentication of PCD file headers and individual PCD entries without knowledge of cryptographic keys. This is referred to as non-key integrity checking for data protection, which allows detection of file corruption without encryption keys. The PCD is also structured to permit integrity checking of the key, where it is possible for the entity that owns the key to also verify the complete entry. That is, the encrypted content may be verified after the content is decrypted. This may prevent malicious manipulation or key management problems.
In some implementations, PCD files may be chunked (divided into separate files) without knowledge of encryption keys and without changing block data fields. The single indexed PCD entry may be passed to the HSM in a manner that permits full key integrity checking for the PCD entry, PCD type, and ticket type. The PCD may be passed to the HSM as a single fully verifiable entry. This may be required for implementation of ticket binding.
As described herein, a PCD may be generated or input by a root, a service, a CRISP, or a third party. Modules and module templates may refer to PCDs, but PCDs do not refer to modules. CRISP device 110 can be used to establish PCD templates and file formats, and root device 102 can create, track, and manage PCD instantiations. PCD instantiation should fall within the template specification provided by CRISP. However, the root has the decision in identifying PCD instantiation, specifying parameters for the PCD, connecting the ticket to the PCD, and connecting the module to the PCD. The PCD generator should receive information about the instantiation of the PCD prior to generating the PCD. PCDs can be managed and distributed in PCD files or PCD-independent records. The PCD file is a storage mechanism for a plurality of PCD records. PCD files may be manipulated and referenced without knowledge of keys. The PCD file format is the primary mechanism for PCD storage and transmission. The CM service inputs and stores PCD in this form. This PCD-independent record is a "complete" PCD record, which is provided to the HSM for decryption, validation and ticket consistency checking, as illustrated in fig. 7-8.
FIG. 7 is a flow diagram 700 of a sequential PCD file at generation and entry and two sequential PCD files 702 after re-chunking, according to one embodiment. Sequential PCD files 702 may be sequential and contain records that are sequentially indexed. There is a direct correspondence between the index and the recording location within the file. These files generally convey data that is consumed sequentially. As illustrated in FIG. 7, sequential PCD file 702 includes an inner header 704, an outer header 706, and a plurality of PCD records 708-. Internal header 704 contains information shared by PCD record 708-712. The inner header 704 is unmodified after the sequential PCD file 702 is generated and is copied when the sequential PCD file 702 is re-chunked. The outer header 706 contains information about the particular PCD file instance. Which may be modified each time sequential PCD file 702 is re-chunked. PCD record 708-. For storage efficiency, information from the inner and outer headers is not copied in PCD record 708-. FIG. 7 also illustrates a sequential PCD file after re-chunking of sequential PCD file 702. In this case, new external headers 714 and 716 are generated to contain information relative to the particular PCD file instance (PCD file 718 and PCD file 720) after re-chunking. The internal header 704 and PCD record 708-. PCD record 708-. The separate record 722 may include a separate record header 724 that may be accessed by the index. A separate record header 724 may be transmitted or implied with PCD record 708. The data structure is a means by which a single indexed PCD entry may be verified and decrypted. For example, the CM appliance software passes the information of the PCD independent record 722 to the HSM in this form. Without additional PCD information, the HSM is able to fully decrypt and verify the PCD and ticket. PCD independent records 722 may be created from any of the sequential PCD files 702, 718, 720. The process of creating a separate record does not require an encryption key. Record 708 may contain a MAC, an encrypted data area, or both. The Initialization Vector (IV) and associated data required to perform these cryptographic operations reside entirely within the separate record 722. In some embodiments, a separate record header 704 is implied and not transmitted when PCD records are transmitted to the HSM.
FIG. 8 is a flow diagram 800 of two non-sequential PCD files 802, 820 and a non-sequential PCD file 822 after merging when generating and inputting according to one embodiment. The PCD file may also be non-sequential. These files contain records sorted by non-sequential indices. PCD files 802, 820 may be non-sequential and contain records sorted by non-sequential indices. File records are referenced using index lookups, and these files are sometimes referred to as lookup PCDs. As illustrated in fig. 8, PCD file 802 includes an inner header 804, an outer header 806, and a plurality of PCD records 808 and 812. Internal header 704 contains information shared by PCD records 808 and 812. The inner header 804 is unmodified after merging with the PCD file 820. The PCD file 822 is generated and the inner header 804 is copied after the classification 840 and merge records 808 and 812. The external header 806 contains information about the particular PCD file instance, PCD file 802. Which may be modified whenever PCD file 802 is merged, such as with PCD file 820. The PCD file 820 also includes an inner header 804 and an outer header 844. The inner header 804 is the same, but the outer header 844 contains information about the PCD file 820. PCD record 808 and 812 are separate PCD records each specified by a recordFormat identifier in the corresponding inner header 804. In this example, PCD file 802 includes two PCD records 808, 809, and PCD file 820 includes three PCD records 810 and 812. For storage efficiency, information from the inner and outer headers is not replicated in PCD records 808 and 812. FIG. 8 also illustrates the non-sequential PCD file 822 after the merge in which PCD records 808 and 812 are categorized 840. A new outer header 846 is generated. The outer header 846 contains information relative to the PCD file 820 with the classification of the recording PCD 808-812. The internal header 804 and PCD record 808 + 812 remain the same, but are now represented in a non-sequential PCD file 822 having categorized PCD records 808 + 812. PCD record 808-. The separate record 826 may include a separate record header 824 that may be accessed by the index via a lookup 842. A separate record header 824 may be transmitted or implied with PCD record 808. The data structure is a means by which a single indexed PCD entry may be verified and decrypted. For example, the CM appliance device software passes the information of the PCD independent record 826 to the HSM in this form. Without additional PCD information, the HSM is able to fully decrypt and verify the PCD and ticket. A PCD independent record 826 may be created from any of the PCD files 802, 820, 822. The process of creating a separate record does not require an encryption key. The record 808 may contain a MAC, an encrypted data area, or both. The Initialization Vector (IV) and associated data required to perform these cryptographic operations reside entirely within the separate record 826. In some implementations, a separate record header 704 is implicit and not transmitted when PCD records are transmitted to the HSM.
FIG. 9 is a diagram illustrating module, PCD and ticket relationships according to one embodiment. The PCD definition is record format 902(recordFormat), PCD template 904, and PCD type 906 (pcdType). Record format 902 identifies the specific data structure of each record. PCD templates 904 identify the kind of PCD asset used for a particular purpose, and each PCD template 904 references one record format 902 and includes metadata describing how the PCD file will be described or used. It should be noted that module template 908 refers to a particular PCD template 904. When the module 910 is authorized by the CM root, the operator specifies the PCD corresponding to the specified PCD template 904. PCD type 906 is an identifier for a particular instance of a PCD asset. Each PCD type 906 references one PCD template 904. The CM root creates a new PCD type 906. At PCD type 906, creation, association, ticket binding, keys, and parameters are fixed. The operating system will accumulate new identifiers over time for record format 902, PCD template 904, and PCD type 906. Since these definitions permeate through the system in a manner that cannot be easily recalled, the definitions of record format 902, PCD template 904, and PCD type 906 should not change after they have been established. Migration involves creating a new definition and overruling the old one over time. The particular PCD type 906 corresponds to the ticket type 912. The ticket type may be test, development, production, etc.
The following example describes how PCD records are located. For sequential data, the location of a record in a file is determined based on the record size (specified in the inner header) and the index range (specified in the outer header). For non-sequential data, an index search is performed. The record utilization index is stored in the first N bytes of the record as specified by the recordidividualdentidentifierLength. Since a single PCD file may not contain the full index space, the sequential index range specified by the outer header must be interpreted before determining whether the PCD file contains the index in question.
In some embodiments of the sequential data, the sequential data is processed (voted) with a ticket index that must also match the sequential index. A strong unique binding between the PCD element and the ticket is desirable. On the other hand, non-sequential data may not be processed by the ticket. While HSM module calls may be limited by the ticket, mapping to a non-sequential index is not possible for the ticket.
In some embodiments, sequential PCD files may be separated into smaller files for: (1) assigning different stripes to different CM services or CM appliances; or (2) generating smaller granularity PCDs that can be passed between CM service-CM appliance device connections.
Many kinds of recordformats may be defined to store various amounts and types of data in PCD records used at various points in the system process. The value of the recordFormat field in the inerHeader may be used to indicate the kind of recordFormat used in the PCD. Some exemplary records for a record may be: serialization information, personalization information, device identifiers, a variety of keys (e.g., provisioning authorization keys, HDCP keys, device keys, etc.), combinations of the foregoing, and the like. The following is an example of the PCD recordFormat definition:
each value assigned to a recordFormat will represent a different kind of recordFormat for PCD records. Each category of PCD record may store various types of data, such as keys, device identifiers, and other information. Such values may be encrypted or decrypted, and integrity check values may also be included in the PCD.
For example, a system may be defined in which recordFormat (represented in a system with a value of "2" in, for example, an ineerheader) may store data to be included in the provisioning of the target device. Such data may include device identifiers, chip family identifiers, and various key values. The data may be encrypted or decrypted and includes an integrity check value for the data in the record. An example of RecordFormat 2 in a separate record is provided in the following table (17 bytes).
Figure BDA0002241001610000281
Other values for recordFormat will indicate different kinds of PCD records with different categories, different fields and sizes, different descriptions, and different values. Another example is a recordFormat value indicating PCD for HDCP keys. Such a PCD would hold data such as sequential HDCP indices, HDCP key sets, Key Selection Vectors (KSVs), and integrity check values.
The recordFormat may be set up to disseminate a large number of different deviceId-specific keys. The file may be stored in a form that enables fast retrieval of the encryption key values. Unless otherwise indicated, PCD files should be managed and stored with records sorted by index, which may be, for example, the first few bytes of unencrypted record data.
pcdTemplate defines the PCD record format and provides context on how the record will be generated/used. It is referenced by a pcdTemplate identifier in the inner header. An example of the pcdTemplate field is shown in the following table.
Figure BDA0002241001610000292
Figure BDA0002241001610000301
The following table includes PCD generation inputs. An example of a PCD generation process may include the following global actions: checking for the presence of a value required for generation of a particular PCD type; semantic verification of metadata associated with a domain of the PCD type in question; checking for potential replication of newly generated PCD. The PCD generation process may include the following actions, each recorded: derivation of deviceiD; derivation of a key for each device; and the computation of integrity checks, which are included in the PCD records.
FIG. 10 is a flow diagram of a PCD generation process 1000 in accordance with one embodiment. The PCD generation process 1000 involves (1) generating an obfuscated deviceId value for each device in the output range (block 1002), (2) deriving an associated base key (block 1004), and (3) performing a diversification operation (1006). In other embodiments, other methods of generating the data set may be used, such as increasing the SNE through all deviceId values and test counters. The SNE, which represents a small number of encryptions, is used to make the serial number appear random so as to not reveal any information about the product yield. The generation of the look-up table PCD is almost the same as for pcdTemplate0x 00010001.
PCD type definition: pcdTypes is created at the CM root and references pcdTimeplate. Example fields specified by pcdType (and selected when pcdType is instantiated at the CM root) during creation are shown in the following tables.
Figure BDA0002241001610000311
PCD type information is transmitted from the CM root to a CM Service (PCD management), a Service-based PCD generator/inputter (HDCP), or a third party PCD generator/inputter (provisioning authority). PCD encryption and integrity checks may be done and the cryptographic scheme specified by recordFormat. The PCD may be encrypted. The following table includes PCD encryption keys.
Figure BDA0002241001610000312
Figure BDA0002241001610000321
For high bandwidth digital content protection (HDCP), the input process converts the key file from the digital content protection LLP directly to the PCD format in a single step. HDCP encrypts and protects content when it is transmitted as a digital data stream for display. Any device participating in the display chain requires an HDCP key to function. HDCP is composed of
Figure BDA0002241001610000322
Company development; permission of HDCP technique
Figure BDA0002241001610000323
The company's subsidiaries digital content protection LLC process. The HDCP key comprises forty 56-bit secret values (keys) and one non-secret 40-bit value (key selection vector KSV). The HDCP input process is summarized in fig. 11.
Fig. 11 is a network diagram illustrating an HDCP input process 1100 according to one embodiment. HDCP input process 1100 begins (1) with a new HDCP key being received, encrypted, and uploaded to a serving device (block 1102). The encrypted HDCP keys are propagated to appliance (2) (block 1104), and appliance (2) adds them to the sequence database (3) (block 1106). The root provides a Root Signature Block (RSB) and provides data (4) (block 1108), which is propagated to the appliance device (5) (block 1110). The appliance device reads the deviceId of the CM core (6) via the tester device (block 1112), and the tester device returns the deviceId (7) (block 1114). The appliance device looks up the derivedKey based on deviceId (8) (block 1116). The HDCP key is retrieved from the sequence DB, encrypted with the transport key, and wrapped with derivedKey (9) (block 1118). The appliance device constructs a sequence for burning the wrapping key (10) (block 1120). The sequence is sent to the CM core (11) (block 1122), and the CM core (11) executes. The sequence and indicates completion for the appliance via an interrupt or status update (12) (block 1124).
At input, HDCP keys are assigned a unique sequentially increasing 64-bit PCD index for UID assignment. A single PCD index is used for both reference and ticket processing purposes. A complete copy check (via KSV) may be performed as part of the input process. HDCP records that are not independently indexed within a particular PCD type may have a replicated KSV. The detected duplication results in rejection of the entire input set and requires manual intervention to resolve. This permits comprehensive blocking of the duplicate KSV at the input. In other embodiments, a judicious copy check may be done at the time of entry. This may be a quick return copy check at the beginning of the input process. The purpose of this check is to provide the user with a quick feedback that the HDCP disc has been entered. The check for quick returns need not be fully understood and KSV or other checking mechanisms may be used.
In other embodiments, the CM appliance device requires a record-specific cryptographic ticket issued by the CM service before HDCP records can be consumed for ticket enforcement. The complete CM ticket system must implement the one-time and unique nature of HDCP key provisioning. The CM service device may track the history of all issued KSV values and issue an alarm if a duplicate is detected in the log-based check. The copy check may be performed based on: (1) a log of KSVs referenced by the CM appliance, (2) a log of sequences of the CM appliance having KSVs, (3) a log of consumption tickets of the CM appliance, (4) a tester device log, and the like. The system may track enough metadata to enable an attack copy to be identified. For example, when the system is in a healthy mode of operation, a log-based alarm may be returned within 4 hours of providing the action. In other embodiments, the ticket may apply to situations other than HDCP key provisioning, as described herein.
For data security, the CM appliance may only access/manipulate unencrypted HDCP keys within the HSM. In PCD form, the KSV value must be readable without knowledge of the key. This enables the CM service apparatus and the CM appliance apparatus to perform the duplication check.
FIG. 12 is a flow diagram of an input (import) process 1200 for inputting (incomming) an HDCP asset in an HDCP lifecycle, according to one embodiment. HDCP 1202 decrypts using the PGP key and passphrase 1204 (block 1206). A basic integrity check with KSV database 1208 is performed to confirm proper PGP decryption (block 1210). This may be a quick clean (sanitry) copy check to ensure that the same HDCP key file has not been previously entered. The purpose of this check is to provide the user with a quick feedback that HDCP has been entered, wherein the integrated check can be performed later in the HDCP lifecycle. A file header is generated (block 1212). A PCD index is assigned to each record (block 1214). Using the UID counter 1216, the indices are sequential. Once the index has been allocated, it is never reused. The PCD record is encrypted (block 1218) into the PCD file 1222. A full KSV copy check (tagged DUP check database) is performed on all previously generated files stored in copy data store 1226 (block 1224). This process ensures that (1) a KSV is assigned to only a single UID, and (2) the KSV appears only once. The backup database used for the KSV comparison includes the PCD index, thereby enabling the location/tracking of replication. It should be noted that the same process can be used for other non-HDCP data if the checking is performed on a fully formed PCD file. If the replication checks for failure, the entire PCD may be rejected. If all checks complete successfully, replicated data store 1226 is incremented (augments) with the newly entered KSV. The CM service may augment its index tracking database to overwrite the new record. The process includes an index uniqueness check to ensure that there are no overlapping indices. The input is submitted by the CM service. At this time, the input and translation of the HDCP key file is considered successful.
The following description describes PCD lifecycle decisions. One is the life cycle of the serialized PCD. Serialized PCD is commonly referred to as wafer sort PCD. Each record includes serialized data and optionally perso1 key splits. Another PCD lifecycle decision is the following allocation/setup procedure: the CM root defines a new pcdType whenever chipSeries or chipId changes, and the CM root passes pcdType grants/definitions to the CM service device. Another PCD lifecycle decision is to generate a dependency type. PCD is generated by the CM root via a cmCoreVersion specific generator. All data/code required for generation is managed by the CM root. Another PCD life cycle decision is production generation. The CM Root generates the PCD to give the CM service sufficient inventory (such as inventory over 6 months). It should be recommended that ranges of devicedequental values be assigned to production and non-production services. PCD files may be imported directly into CM services.
An example of a PCD lifecycle is that of a p5 PCD. The offer authorization PCD is generated by the CRISP (as an offer authorization) and directly input to the CM service device. For the allocate/setup procedure, the CM root defines a new pcdType whenever the cmCoreVersion changes and passes pcdType grants/definitions to the CM service device. The CM root passes pcdType information to CRISP. The security and authentication apparatus is used to transfer pcdType information (specifically, internal header data and pcdTypeKey). CRISP generates (or chooses to reuse) the SNE parameter, master key, and other data associated with the provisioning authorydeviceaeskey. For generation dependencies, the PCD is generated by a CRISP via a generator that uses CRISP managed secrets for key generation and SNE sequence number generation. The encapsulation of the PCD (header, encryption) requires pcdType information from the root. For production generation, CRISP generates PCD to give CM services sufficient inventory (e.g., over 6 months). The PCD file is directly entered into the CM service.
An example of a PCD lifecycle is the lifecycle of a key lookup PCD. A key lookup PCD is used to convey a diversified basic set of keys. It is designed to be accessed as a look-up table. Key lookup PCDs are used to convey diversified values: chipVendo rDeviceAesKey indexed by deviceId; and provisioningA uthorityDeviceAesKey indexed by provisioningauthyid. For the assign/set-up decision for chipVendorDeviceAesKey, the CM root defines a new pcdType whenever: (1) chipSeries, (2) chipId, or (3) delegate ID changes. In practice, several pcdTypes may be created at a time for the delegated ID block. The CM root passes pcdType authorization/definition to the CM service device. For allocation/setup decisions for provisioning authordeviceaeskey, the CM root defines a new pcdType whenever: (1) cmCoreVersion or (2) ID change. In practice, several pcdTypes may be created at a time for the delegated ID block. The CM root passes pcdType authorization/definition to the CM service device and pcdType information to CRISP. The security and authentication apparatus is used to transfer pcdType information (specifically, internal header data and pcdTypeKey). For the generation of dependencies for chipVendorDeviceAesKey, PCD is generated by the CM root. All data/code required for generation is managed by the CM root. For the generation of dependencies for provisioning authorydeviceaeskey, PCD is generated by CRISP. CRISP managed secrets are used for key generation and SNE sequence number generation. The encapsulation of the PCD (header, encryption) requires pcdType information from the root. For production generation, lookup PCDs are typically generated in large quantities. The data file may be large, for example a 500M record (recordFormat 10 has 48 bytes/record) fitting in a 24GB PCD file. The performance is relatively high on a CPU core with an AES-NI accelerator. The PCD file is directly entered into the CM service.
To perform asset distribution, module deployment, log collection, and other basic functions, a service needs to get the current state of the appliance it manages. This is done using a GetState message and related JSON-RPC API calls. Using this approach, in conjunction with PCD removal and module removal, these two other messages allow the service to properly handle the state of the appliance. Messages originating at the service are signed using servicesigning priv, while those provided by the appliance are signed using appliancehsingpriv.
Embodiments described herein describe techniques for pre-computed data (PCD) asset generation and secure deployment of PCD assets to a target device in an operational phase of a manufacturing lifecycle of the target device in a Cryptographic Management (CM) environment. One embodiment includes a Root Authorization (RA) device that receives a first command for a unique PCD asset for a target device. In response, the RA device generates PCD assets and packages the PCD assets for secure deployment of the PCD assets to the target device and exclusive use by the target device. The RA device deploys the encapsulated PCD assets in the CM system for identification and tracking of the target device.
Fig. 13 is a flow diagram of a method 1300 of generating and packaging PCD assets for secure deployment in a CM system, according to one embodiment. Method 1300 may be performed by processing logic that may comprise hardware (e.g., circuitry, dedicated logic, programmable logic, microcode, etc.), software, firmware, or a combination thereof. In one embodiment, the root device 102 of fig. 1-3 performs the method 1300. In one embodiment, the service device 104 of fig. 1-3 performs the method 1300. In other embodiments, other components of the CM system 100 described herein may perform some or all of the operations of the method 1300.
Referring to fig. 13, method 1300 begins with processing logic generating or inputting a unique PCD asset for a target device (block 1302). The processing logic receives a command to encapsulate a unique PCD (block 1304). The processing logic packages the PCD assets for secure deployment of the PCD assets to the target device and exclusive use by the target device (block 1306). The processing logic deploys the packaged PCD assets in the CM system for identification and tracking of the target device (block 1308), and the method 1300 ends.
In one embodiment, the processing logic resides in a root device. In response to the command, processing logic generates PCD assets and packages the generated PCD assets for secure deployment. The PCD asset may be deployed by processing logic that stores the packaged PCD asset in a removable storage device to transfer the PCD asset to a service device of the CM system. The service device is configured to distribute the PCD assets over the network to the appliance devices of the CM system. The appliance device may securely provide PCD assets to the CM core of the target device using the module, and the PCD assets are inputs to the module. A module is an application that when executed by an appliance device results in a secure construction of a sequence of operations to securely provide PCD assets to a target device in an operational phase of its manufacturing lifecycle. In one embodiment, PCD assets are generated in response to Command Line Interface (CLI) commands that generate PCD assets in batches based on PCD templates. The PCD template is a description of how the PCD asset is formatted as input for a particular type of module. In another embodiment, the PCD template corresponds to a PCD type, the PCD type corresponding to a collection of PCD assets having a particular property of at least one of uniqueness or serialization. A set of PCD assets of a PCD type may be indexed.
In another embodiment, the processing logic resides in a service device. In response to the command, the service device generates and packages PCD assets for secure deployment. In another embodiment, the PCD assets are generated external to the service device, and processing logic of the service device inputs the PCD assets and packages the input PCD assets for secure deployment.
In one embodiment, the incoming PCD assets are HDCP keys. In other embodiments, the PCD assets generated are personalization keys or serialization keys, as described herein. The input PCD asset may be signed by a root authorized private key, and processing logic may verify the input PCD asset using the root authorized public key.
As described above, the PCD assets may be stored in a separate record, or as PCD records in a PCD file, the PCD file containing at least one additional PCD record. The PCD file may be a sequential PCD file or a non-sequential PCD file. The sequential PCD file may include: 1) an inner header containing information shared by the PCD record and at least one additional PCD record; 2) an outer header containing information relating to an instance of the sequential PCD file prior to any partitioning of the sequential PCD file; and 3) a PCD record and at least one additional PCD record. The non-sequential PCD file may include: 1) an inner header containing information shared by the PCD record and at least one additional PCD record; 2) an outer header containing information about an instance of a non-sequential PCD after merging of the first non-sequential PCD file and the second non-sequential PCD file; and 3) a PCD record and at least one additional PCD record.
In one embodiment, processing logic may partition a sequential PCD file into a first sequential PCD file and a second sequential PCD file. The processing logic generates a first outer header containing information about a first order of PCD files for the first order of PCD files such that the first order of PCD files includes an inner header, the first outer header containing information about the first order of PCD files and PCD records after the partitioning. The processing logic is also to generate a second outer header containing information related to the second order of PCD files, such that the second order of PCD files includes the inner header, the second outer header containing information related to the second order of PCD files and the at least one additional PCD record after the splitting.
In another embodiment, processing logic merges the first non-sequential PCD file and the second non-sequential PCD file into a non-sequential PCD file. Processing logic classifies the PCD record and at least one additional PCD record and generates an external header. In this embodiment, the first non-sequential PCD file may comprise: 1) an inner header, 2) a first outer header containing information about a first non-sequential PCD file; and 3) PCD records. The second non-sequential PCD file may include: 1) an inner header, 2) a second outer header containing information about a second order of PCD files; and 3) at least one additional PCD record.
Ticket sheet
A ticket may be used in (consumption and provision of; as used herein, of) a data asset such as a PCD asset, the ticket may be a digital file or data that enables the enforcement of usage count limits and uniqueness/continuous issuance of target device parameters.
The ticket or ticket authorization is a verifiable value that the module may require in order to run the transaction. Ticket authorizations can be generated and verified quickly (symmetric MAC) and can be issued by the appliance itself or by the appliance cluster point (peer). The ticket authorization may include an index value (e.g., to select a pre-computed record, a manufacturing serial number) and a ticket type and request identifier to prevent misuse or reuse.
A given ticket authorization may grant permission to the appliance device such that it is limited to running the module a particular number of times, such as once. The ticket authorization may become a serial number, which may then or later be encrypted to produce an encrypted serial number, or used as an index with the calculation data to reference the pre-calculation data. The ticket may be consumed by the appliance that created it or by the appliance point and may be limited to a particular request.
The ticket and its use in an asset management system may enable separation of management of the license from operations and data. For example, a ticket type that selects the HDCP key may be used by multiple modules. The ticket may allow the cluster members to share authorization while connected to prevent reuse of serial numbers, HDCP keys, and/or other credentials or data. If the connectivity of the appliance cluster is lost, the appliance device may meet its own ticket requirements. The ticket may be used to implement a limit on the number of transactions that an appliance device or cluster of appliances may make. When the appliance device 108 is connected, the service device 104 (service 107) may assign more ticket authorizations to the appliance device. The ticket authorization may be provided on an as needed or as used basis, or a greater number of ticket authorizations may be provided so that if connectivity is lost the appliance device may be targeted to operate during the time that an attempt to restore connectivity may be made. This may prevent downtime in the manufacturing facility.
Each appliance in the cluster of appliances may include a ticket issuer, which may be processing logic on the appliance that manages authorization of the ticket. The ticket issuer may operate to track available ticket resources at the cluster point, receive ticket requests from modules or points, send requests to local HSM daemons, or query the ticket issuer at the cluster point. The HSM may issue ticket authorizations sequentially, obey the scope authorized by the service device, and may react to a valid ticket or error message.
Tickets may be used to monitor inventory of assets and assess the status of assets. The common status of the assets consists of keys, data assets (pre-computed data) and ticket authorization inventory that are transmitted and stored on both the service and appliance devices. This may provide a local status of the asset, which is local to the manufacturing facility. Where a customer has or has contracted for the manufacture of equipment at multiple facilities, local status data may be combined with other local status data to provide global status data for the customer.
The status information may be provided to the customer in the user interface along with information needed to forecast future needs for pre-computed data and ticket authorization at the factory. Once demand can be estimated, the operator can set inventory so that the appropriate margin of inventory is distributed by the service 107 to each cluster of plant appliances for consumption in future production. A suitable minimum amount of pre-computed data and ticket authorization may be maintained on the appliance cluster to guarantee a specified production run time in the absence of plant connectivity given the estimated plant consumption rate.
Fig. 14 is a block diagram of a ticket processing and HSM interaction daemon (THID) component 1400 according to one embodiment. The THID component 1400 includes a THID external API 1402 and an HSM API 1404. The THID component 1400 may be provided to manage the HSM111 of the appliance device 108, particularly in connection with ticket authorization. The THID component 1400 may provide an interface to other components operating on the appliance device 108 (or on the appliance cluster 109) to access the HSM111 for confidentiality and integrity calculations. These calculations or operations may be fast path operations 1401 or slow path operations 1403. The fast path operations 1401 may be understood to originate from time critical operations of the tester device 112 to acquire a ticket or invoke a module, while the slow path operations 1403 may be understood to originate from those of the service queue 1408 or those other than the fast path operations 1401. The slow path operations 1403 may be operations to add tickets from the service 107 to the appliance device 108 (or appliance cluster 109), audit tickets used by a particular time or rate of ticket usage and other asset consumption information, and remove tickets. The THID component 1400 may provide a plurality of Application Programming Interfaces (APIs) to facilitate communication with other components in the appliance 108.
The THID component 1400 may accept multiple simultaneous requests. Since HSM111 can only service one request at a time, the requests can thus be serialized. The THID component 1400 may be the only path to the HSM111 in the appliance 108. The THID component 1400 includes a ticket cache 1406, the ticket cache 1406 maintaining a mapping 1410 of ticket names to sets of ticket volumes (with minimum and maximum ticket values) to effectively reflect the ticket state of the HSM 111. The ticket cache 1406 may be used to offload all ticket requests (e.g., GetTickets () requests) from the HSM111 and process them in the THID component 1400. Since the ticket state persists in the HSM111, at startup, the THID component 1400 may invoke an audit of the tickets on the HSM111 and initialize the ticket cache 1406 with the results of the audit or count. For example, the THID component 1400 calls Auditickets () on the HSM111 and initializes the ticket cache 1406 with the result. The ticket cache 1406 may additionally track "reserved" tickets in a separate peer map 1412, the peer map 1412 being an invoked ticket that is requested by a module daemon 1414 (e.g., via getpackets ()) but has not yet been sent back to the THID component 1400 for invoking a particular module (e.g., InvokeModule ()). Module daemon 1414 parses the CM module and prepares the relevant data and CM module management.
Thus, THID component 1400 may provide APIs that affect cache state, while other APIs do not. For example, the external API 1402 may issue commands to the service queue 1408 to add a ticket, audit a ticket, or remove a ticket. For example, the external API 1402 for the AddTocket (tickets, importCounter, hsmId, and signature) command returns a void. For another example, AuditTickets (challenge) returns (hsmId, tickets, importCounter), and RemoveTickets (tickets, importCounter, hsmId, signature) returns void. For module daemon 1414, external API 1402 may issue various commands: GetTickets (ticketNames) returns tickets; LoadModule (Module, signature, keys) returns to the modelHandle; UnloadModule (modelHandle) returns a void (not currently used by module daemon 1414); and InvokeModule (moduleHandle, input, tickets) return sequences (sequences). In other embodiments, THID component 1400 may include provisioning and activating associated APIs.
Most of the above goes directly to the HSM. The HSM API to THID 1404 may add tickets, audit tickets, remove tickets, load modules, upload modules, call modules, and the like. The HSM API 1404 may include the following: AddTocks (tickets, importCounter, hsmId, signature) returns void; AuditTickets (hsmId, challenge) returns (hsmId, tickets, importCounter) RemoveTickets (tickets, importCounter, hsmId, signature) returns void; LoadModule (Module, signature, keys) returns Module id; UnloadModule (modelId) returns void; and InvokeModule (module, input, tickets) return sequence (sequence).
For example, the APIs that affect the cache state may include APIs to get tickets, which may return tickets to be removed from the cache and entered into the reserved ticket map 1412; tickets are added to forward directly to the API of HSM111, and after HSM111 completes the operation, THID component 1400 may call an API (e.g., audiotickets ()) on HSM111 to audit tickets on HSM 111. The ticket cache 1406 may be purged and set to an audit state. This may allow the "add ticket" data to be completely opaque to the THID component 1400.
The currently reserved ticket is then removed from the ticket cache 1406 to keep the two sets disjoint. 3) AuditTickets () -after each explicit Auditickets () request from the service queue 1408, the ticket cache resynchronizes the ticket cache 1406 as is done for Add/RemovTickets () (primarily as a precaution against drift of module daemon 1414 crashes/call errors, etc.). The service queue 1408 may serve as a gateway for the CM appliance 108 for CM services. 4) InvokeModule () -upon successful invocation of the module, the ticket involved will be considered spent and removed from the reserved ticket map 1412. In the event of a failure, it may not be clear whether the reserved ticket map 1412 can be relied upon to infer that those tickets are not used up (unspent). The THID component 1400 may discard the ticket at the expense to prevent reuse of the ticket or pre-computed data. The re-synchronization (as described above) results in the discovery of any ticket THID component 1400 that has not been exhausted and has been conservatively discarded.
The THID component 1400 may act as a gateway to the HSM111 for transactions from the tester device 112 and the service device 104. The currently reserved ticket may then be removed from the ticket cache 1406 to keep the two sets disjoint. After a request to audit the ticket is made, the ticket cache 1406 may be resynchronized to prevent drift that may be caused by the module daemon 1414 crashing/calling errors, etc. The ticket may be used in a tracking system used by the CM system to implement the number of times the module may run on the appliance 108 and track the assets used by the module. The ticket ensures that the asset is not duplicated or duplicated in expense. The ticket includes data that enables enforcement of usage count limits and uniqueness/sequential issuance of CM core parameters. The ticket may be authorized by the root authority and consumed by the CM core.
In one embodiment, upon a crash and restart, the THID component 1400 will not have any ticket reserved, so any in-process module call in the module daemon 1414 (i.e., between GetTickets () and InvokeModule ()) will not meet the requirements of the THID that the ticket must reserve, so InvokeModule () will fail. If the module daemon 1414 crashes and restarts, or a simple error in a ticket request or module call to the THID component 1400, the reserved ticket may not be sent to the THID component 1400, which allows the reserved ticket to accumulate in the THID component 1400. Thus, in some embodiments, the reservation ticket may be time stamped and, once resynchronized, may be removed if it exceeds a certain threshold number of seconds old. This serves as a mechanism to terminate the reservation ticket in the THID component 1400 from accumulating.
In some instances, more modules may be assigned to the appliance device by service device 104 than may fit in the memory of HSM 111. THID component 1400 may load and unload modules to manage HSM's memory, which evicts one or more modules via a "least frequently used" policy. For example, module LRU may be used to manage memory for the HSM, evicted via the LRU policy. This may be particularly useful in deployments where multiple customers share an asset-t management system in an appliance cluster.
The ticket may be the only authorization information about what pre-computed data index has been spent, and since the THID component 1400 may have knowledge of the ticket, the THID component 1400 may perform a pre-computed data cleanup process to re-require disk space for the spent pre-computed data packets.
During normal operation, the THID component 1400 is the only interface to the HSM of the commissioning appliance. The THID component 1400 abstracts the ticket management process, synchronizes access with the HSM111, and manages the HSM's memory and other resources.
The HSM111 (and hence its interface point THID component 1400) has three main functions; 1) issue and spend asset management tickets; 2) running the HSM bit code; and 3) auditing. The bit code is run using the hsmnvokemodule call. However, the bit code is signed and may contain encryption components. The running bytecode may be split into two calls so that the HSM111 does not verify the signature and decrypt any encryption components on each call of the hsmdinvememodule. loadhsmpops loads a bit code into the HSM, verifies its signature and decrypts (and possibly dispatches) any encryption keys it may contain. The bit code is actually executed by the hsmnvokemodule call.
In one embodiment, the ticket may be completed in three phases: 1) loading the ticket from the service device into the THID part 1400 and HSM111 using an addtokens call; 2) the THID component 1400 uses the getTickets call to distribute tickets; and 3) the cost of the ticket by the HSM bit code in the hsmInvokeModule call.
There are two types of audits (one for the bit code and one for the ticket). The bytecode call may include a log call. This data is passed through the running hash and will also be recorded by the THID component 1400. HSM111 may be commanded to output and sign the hash. The HSM111 has limited memory so it will only store the running hash. The HSM111 may be commanded to output and sign its ticket related status. If some of this state is stored externally by the THID component 1400 (e.g., a low memory HSM proposal in an asset management ticket), then the THID component 1400 passes it through the HSM111 so that the HSM111 can sign it. The primary purpose of the THID component 1400 is to provide a uniform interface for all other components running on the appliance device to access the asset management HSM component for any confidentiality or integrity calculations.
There may be some anomalies. Because this is an RPC API, exceptions that can be thrown by client code fall into three categories: 1) if the memory is exhausted or a bug is encountered, the RPC library can throw std: logic _ error, std: bad _ alloc and the like. The client is not suggested to handle these exceptions (except for the last pause or equivalent) because it typically represents a serious error where recovery may not be an option. 2) If the RPC fails (wrong version at the server, connection interruption, logic error in the RPC library), the RPC library can throw CriRpc:: RpcException; 3) if the server throws an exception, the RPC library will relay it as CriRpc:: RelaydException. When some number of tickets are added, the tickets are passed as a vector of struct ticketstructs.
The HSM may maintain a count of the number of grants it has received from the serving device, which is also the expected counter value for the next grant. The HSM may check the counter value, check the signature, add the ticket to its inventory, and then increment its counter value. This prevents the authorization from being replayed.
There are two types of audits (one for the bit code and one for the ticket). The bytecode call may include a log call. This data is passed through the running hash and will also be recorded by the THID component 1400. The HSM111 may be commanded to output and sign the hash. The HSM111 has limited memory so it will only store the running hash. The HSM111 may be commanded to output and sign its ticket related status. If some of this state is stored externally by the THID component 1400 (e.g., a low memory HSM proposal in an asset management ticket), then the THID component 1400 passes it through the HSM111 so that it can be signed by the HSM 111.
The primary purpose of the THID component 1400 is to provide a unified interface to all other components running on the appliance to access the asset management HSM component for any confidentiality or integrity calculations. Because this is an RPC API, exceptions that can be thrown by client code fall into three categories: if it runs out of memory or encounters a bug, the RPC library can throw std:, logic _ error, std:, bad _ alloc. The client is not advised to handle these exceptions (except for the last pause or equivalent) because it typically represents a serious error in which recovery may not be an option. If the RPC fails (wrong version at the server, connection interruption, and logic error in the RPC library), the RPC library can throw CriRpc:: RpcException; if the server throws an exception, the RPC library will relay it as CriRpc:: RelaydException. The following table illustrates the THID component API according to one embodiment.
Figure BDA0002241001610000451
an example of an addkeys call is as follows:
Figure BDA0002241001610000462
to add some number of tickets to the system, the tickets are passed as vectors of the structural ticketStruct. The HSM111 maintains a count of the number of grants it has received from the serving device, which is also the expected counter value for the next grant. The HSM111 will check the counter value, check the signature, add the ticket to its inventory and then increment its counter value. This prevents the authorization from being replayed. The following table includes parameters and corresponding descriptions.
Figure BDA0002241001610000471
The structure ticketrolll can be represented as follows:
Figure BDA0002241001610000472
the enumeration of modeEnum can be expressed as follows:
Figure BDA0002241001610000473
the function loads a given ticket volume into the HSM.
Figure BDA0002241001610000481
The removeTickets call can be expressed as follows:
Figure BDA0002241001610000482
this function removes all tickets listed in the ticket input from the HSM. The following table includes parameters and corresponding descriptions.
Figure BDA0002241001610000483
Figure BDA0002241001610000491
The HSM first performs a ticket audit, generates a ticket Audit Structure and signs ("responseBeforeRemovTickets" | challenge | | ticket Audit Structure "). It then removes the given ticket, performs another audit, and signs ("responseefterremovtickets" | challenge | | ticket auditstruct). The following table includes the exceptions and corresponding descriptions
Figure BDA0002241001610000492
The getTickets call may be expressed as follows:
vector<uint64>getTickets(uint64ticketName,int n=1)
the following table includes the parameters and corresponding descriptions
Figure BDA0002241001610000493
The function returns a vector of at least one and at most n tickets with a given name. It tries to return n tickets but if less than n tickets are available quickly, it will return quickly rather than waiting for all n tickets.
The ticket may have cryptographic data associated with it for the scenario where the appliance device is used as external memory for the HSM. This data is held by the THID component 1400; it is not returned by the call.
The ticket returned by this call may only be spent by the same client using the hsmInvokeModule. It cannot be used by another process connected to the THID component. The getTickets call reserves only the ticket. If the invoker disconnects from the THID component before spending them, the THID component may give the same ticket to another client. The following table includes the exceptions and corresponding descriptions
The audiotickets call can be expressed as follows:
pair<ticketAuditStruct,
byteArray signature>
auditTickets(byteArray challenge)
the following table includes the parameters and corresponding descriptions
Figure BDA0002241001610000502
The response is ticketAuditStruct:
Figure BDA0002241001610000503
Figure BDA0002241001610000511
the tickets in the structure are not returned in any particular order. If a challenge is specified, HSM111 will generate a signature on ("responseAuditTickets" | challenge | | token AuudStruct). Otherwise, the signature will be an empty byteArray. The following table includes exceptions and corresponding descriptions.
The loadHSMOps call can be expressed as follows:
int loadHsmOps(byteArray module,byteArray signature,vector<byteArray>encryptedModuleKeys)
the following table includes parameters and corresponding descriptions.
Figure BDA0002241001610000513
The function loads a given module into the HSM. Any keys present in the module itself are encrypted with encryptedModuleKey; those keys are given to the THID component separately. The HSM may not have enough memory to store options for each module on the system. In this case, the THID component is responsible for managing the memory, loading and unloading code of the HSM according to load requirements. The following table includes exceptions and corresponding descriptions.
Figure BDA0002241001610000521
The hsmInvokeModule call may be expressed as follows:
the following table includes parameters and corresponding descriptions.
Parameter(s) Description of the invention
moduleHandle Module handle ID returned by loadhsmpops.
inputBlock Is input to the wrapped block of modules.
tickets Array of (ticket name, ticket number) pairs
return value The output of the HSM.
The function calls a module that has been preloaded with loadhsmpops. It must be given the modelhandle returned by the loadhsmpops call from the client. Likewise, the second element of the ticket argument must be the ticket number from the getTickets call that is returned to the client (the first element is the name of the ticket). Once the HSM code has run, its results are returned as an array of bytes. The following table includes exceptions and corresponding descriptions.
Figure BDA0002241001610000531
The commit log call may be expressed as follows:
logRecord
commitLog(byteArray log)
the external log message is added to the log chain of the HSM. The following table includes exceptions and corresponding descriptions.
Figure BDA0002241001610000532
The audiologs call can be expressed as follows:
pair<logRecord,byteArray>
auditLogs(byteArray challenge)
the audiologs uses the HSM audio key to sign the running hash of the current log. Challenges are used to prevent deferral and playback. It should be random. The following table includes exceptions and corresponding descriptions.
Figure BDA0002241001610000541
The THID component 1400 maintains a shadow copy of the state of the HSM111, minus the key. This means that the HSM code can be simpler and also means that the THID component 1400 does not need to request any information from the HSM111 other than cryptographic information. The THID component 1400 may also maintain some cryptographic information (according to CM ticket system specifications) outside the HSM111 (such as a hash tree). This is currently not desired to be used. This information is MAC by the cluster key if it is used, but resides outside HSM111 for memory reasons.
The ticket name is used to group the ticket types together. The ticket name may be 64 bits. Bytes have the following meaning:
MSB 6 5 4 3 2 1 LSB
supplier ID Ticket type Unique ID
The following ticket types are assigned:
Figure BDA0002241001610000542
Figure BDA0002241001610000551
in summary, a ticket is a signed authorization to run a module in a single instance. The control performed by the ticket provisioning module allows for copy prevention and provides for audit trails of such execution (audit logs). Internally, the ticket may be a pair of 64-bit strings, a ticket name, and a ticket ID. The ticket name indicates the ticket type. The ticket ID identifies a particular PCD record if a particular ticket name is associated with the PCD type. Such associations are collected in the "input" section of the module file. Internally, the HSM maintains a list of CurrentTickets for each of its known ticket names. It also maintains a counter (hsmTicketCounter) that is used to prevent replay attacks. The ticket may also be signed. Even though each ticket may not have a separate signature, the ticket volume (set of tickets) may have a signature. The verification of the signature may be used for ticket validation. There are three types of ticket related messages-audit, grant, and remove. Ticket auditing (Ticket Audit) collects the internal state of HSM111 and communicates it to the service. A Ticket Grant (Ticket Grant) provides a new Ticket to HSM111 while a Ticket remove (Ticket dump) removes the Ticket from HSM 111. The following diagram describes the content of each of the message types.
Since ticket communication occurs between the HSM111 and the serving device 104, the content of each of the messages needs to be asn.1 encoded. The following is the definition of the asn.1 message:
Figure BDA0002241001610000552
here, cmticks is defined as SEQUENCE rather than SET to reserve the ordering of elements. This may be useful for searching through the list of tickets if the service and appliance HSMs agree to sort the tickets and process the list in order.
The asn.1 format of the ticket granting message is defined below.
Figure BDA0002241001610000561
The ticket removal message is represented as follows:
Figure BDA0002241001610000562
FIG. 15 is a flow diagram of a method 1500 of performing ticket processing on a module to securely provide data assets to a target device, according to one embodiment. Method 1500 may be performed by processing logic that may comprise hardware (e.g., circuitry, dedicated logic, programmable logic, microcode, etc.), software, firmware, or a combination thereof. In one embodiment, the appliance device 108 of fig. 1-3 performs the method 1500. In one embodiment, the appliance device 108 or the THID component 1400 of FIG. 14 performs the method 1500. In other embodiments, other components of the CM system 100 described herein may perform some or all of the operations of the method 1500.
Referring to fig. 15, a method 1500 begins with receiving a module from a serving device of a CM system over a network (block 1502). The module is an application that securely provides data assets to a target device during an operational phase of the target device's manufacturing lifecycle. The processing logic determines whether a ticket is received from the service device over the network (block 1504). Once the ticket is received, processing logic validates the ticket (block 1506). When the ticket is validated, processing logic executes the module to securely provide the data asset to the target device (block 1508), and method 1500 ends. When the ticket is not verified, processing logic issues an alert of an invalid ticket (block 1510), and the method 1500 ends or the method 1500 returns to block 1504 to receive a determination whether another ticket is received.
In another embodiment, the ticket is a signed ticket authorization that permits a single execution of the module to prevent copying of the data asset and to prevent copying consumption of the data asset. The processing logic prevents copying of the data asset and copying consumption of the data asset after execution of the module authorized using the signed ticket. In another embodiment, processing logic uses the ticket to create an audit log of the execution of the module.
In one embodiment, the ticket includes a pair of N-bit strings, a ticket name indicating a ticket type associated with the type of data asset, and a ticket Identifier (ID) identifying a record of the particular data asset. In another embodiment, processing logic receives PCD assets over a network connected to the module and the ticket. The input section of the module file (including the module) associates the PCD type with the ticket type. Processing logic validates the ticket by comparing the current ticket type of the ticket to the ticket type in the input section of the module file. When the ticket type and the current ticket type match, the ticket is validated.
In one embodiment, the HSM of the appliance device maintains a list of current tickets for each of the ticket names known to the appliance device and maintains a counter that is used to prevent replay attacks. In another embodiment, processing logic receives at least one of the following ticket related messages: a first ticket related message from a serving device that obtains an internal state of the HSM and communicates the internal state to the serving device; a second ticket related message granting the HSM a new ticket; or a third ticket related message that removes the ticket from the HSM.
In another embodiment, processing logic validates the ticket by validating a ticket index for the data asset against a sequential index, wherein the data asset is sequential data. In another embodiment, the data asset is a PCD asset in a sequential PCD file that specifies a PCD type and a ticket type. Processing logic validates the ticket by comparing a current ticket type in the ticket to a ticket type of the PCD asset and comparing the current PCD type to a PCD type of the PCD asset. The ticket is validated when the current ticket type matches the ticket type of the PCD asset and the current PCD type matches the PCD type of the PCD asset.
In one embodiment, the data asset is an HDCP record containing an HDCP key, and the ticket is a key issued by the service device for the HDCP record. When the ticket is authenticated, processing logic consumes the HDCP key to enhance the single use and unique nature of HDCP key provisioning. Processing logic tracks a history of tickets issued by the service device and detects duplication in the history of tickets. Processing logic generates an alert when a duplication is detected in the history of the ticket.
In another embodiment, the data asset is an HDCP record that contains encrypted HDCP keys and a Key Selection Vector (KSV) value. Processing logic tracks the history of the KSV values and performs a log-based check of the history to detect an attack copy. The log-based check is based on at least one of: 1) referring to a log of the same one of the issued KSV values; 2) a log of sequences performed by the same one of the electrical devices having the issued KSV value, 3) a log of consumption tickets by the electrical devices; a ticket, or 4) a log of the tester device. Processing logic issues an alert when a copy is detected. In another embodiment, the HDCP record is stored in the PCD asset, and the KSV value in the PCD asset is readable by the appliance without knowledge of the HDCP key used by the HSM of the appliance to decrypt the encrypted HDCP key.
The following description includes some use cases. The core set of usage scenarios that serve as the basis for the CM system is outlined below.
Personalization
Personalization is the provision of unique device specific keys to the CM core. For safety reasons, it is broken down into two steps, called perso1 and perso 2. Essentially, at each step, the key partitions will be programmed into the CM core and recombined internally to produce device-specific keys.
Device serialization
Device serialization provides a unique serial number to the CM core. The serial number appears random to hide information about product yield; however it is a function of the number of sequences. This allows the indexing of pre-computed data to be used in device serialization and ensures ID uniqueness within a particular product.
Volatile RMA rescreening enable
When the chip is shipped to the field, the hardware required to test the chip during manufacturing is required to support the test features, also referred to as features designed for test (DFT), to be safely disabled. These features must also be safely enabled (enabled) later when the bad part is returned for failure analysis over the RMA channel. CryptoManagerTMA method is provided for our client to authenticate devices and provide rescreen test enable/disable operation for each device authorization.
Non-volatile RMA rescreening enable
The same as above except that it is not sustained by the power-on reset.
HDCP key management&Provide for
The CM system must support a security block (bulk) input from the HDCP key issuing the authorization and securely provide the unique HDCP key to the particular CM core. A mechanism must also be provided to bind each HDCP key to a unique identifier and track each HDCP key throughout its lifecycle.
Providing authorization key provisioning
The CM system must be able to provide a key to the CM core that is unknown to the client. These keys must also be bound to a unique identifier, and the pairing of such keys and their identifiers should be able to facilitate the use of such keys.
Figure 16 is a diagram of one embodiment of a computer system 1600, computer system 1600 including a processor 1602 and a removable storage device interface 1603 to connect to a removable storage device 1605, according to one embodiment. Removable storage device interface 1603 is configured to connect to a removable storage device 1605. The processor 1602 is operable to execute the instructions 1626 (or software) during a device definition phase of a manufacturing lifecycle of the CM device. The instructions 1626 may include instructions stored in the main memory 1604 or in the removable storage device 1805 and executed by the processor 1602 to perform various operations with respect to modules, PCDs, and tickets, as described herein. In one embodiment, computer system 1600 represents root device 102. In another embodiment, computer system 1600 represents service device 104. In another embodiment, computer system 1600 represents appliance 108. Alternatively, computer system 1600 may represent any of the other devices described herein (such as CRISP device 110).
In some cases, computer system 1600 may be connected (e.g., networked) to other machines in a LAN, an intranet, an extranet, or the internet. Computer system 1600 may be a host in the cloud, a cloud provider system, a cloud controller, a server, a client, or any other machine. Computer system 1600 may operate in the capacity of a server or a client machine in a client-server network environment, or a peer machine in a peer-to-peer (or distributed) network environment. The machine may be a Personal Computer (PC), a tablet PC, a console device or set-top box (STB), a Personal Digital Assistant (PDA), a cellular telephone, a web appliance, a server, a network router, switch or bridge, or any machine that executes a set of instructions (sequential or otherwise) that specify actions to be taken by that machine. Further, while only a single machine is illustrated, the term "machine" shall also be taken to include any collection of machines that individually or jointly execute a set (or multiple sets) of instructions to perform any one or more of the methodologies discussed herein.
Computer system 1600 includes a processor 1602 (e.g., a host processor or processing device), a main memory 1604 (e.g., Read Only Memory (ROM), flash memory, Dynamic Random Access Memory (DRAM), storage memory 1606 (e.g., flash memory, Static Random Access Memory (SRAM), etc.)), and a secondary memory 1618 (e.g., a data storage device in the form of a drive unit, which may include fixed or removable computer-readable storage media) that communicate with each other via a bus 1630.
Processor 1602 represents one or more general-purpose processing devices such as a microprocessor, central processing unit, or the like. More particularly, the processor 1602 may be a Complex Instruction Set Computing (CISC) microprocessor, Reduced Instruction Set Computing (RISC) microprocessor, Very Long Instruction Word (VLIW) microprocessor, processor implementing other instruction sets, or processors implementing a combination of instruction sets. The processor 1602 may also be one or more special-purpose processing devices such as an Application Specific Integrated Circuit (ASIC), a Field Programmable Gate Array (FPGA), a Digital Signal Processor (DSP), network processor, or the like.
In one embodiment, the processor 1602 may reside on a first integrated circuit and the main memory 1604 may reside on a second integrated circuit. For example, the integrated circuit may include a host computer (e.g., a CPU with one or more processing cores, an L1 cache, an L2 cache, etc.), a host controller, or other type of processor 1602. The second integrated circuit may comprise a memory device coupled to the master device and its primary functionality is dependent on the master device and may therefore be considered to expand the capabilities of the master device while not forming part of the core architecture of the master device. The memory device may be capable of communicating with the master device. For example, the memory device may be a single IC or a multi-IC module of any combination of single IC devices on a common integrated circuit substrate. The components of fig. 16 may reside on a "common carrier substrate," such as, for example, an integrated circuit ("IC") die substrate, a multi-IC module substrate, or the like. Alternatively, the memory device may reside on one or more printed circuit boards, such as, for example, a motherboard, a daughterboard, or other type of circuit board. In other embodiments, the main memory and the processor 1602 may reside on the same or different carrier substrates.
The computer system 1600 may include a chipset 1608, which refers to an integrated circuit or chipset designed to operate with the processor 1602 and control communication between the processor 1602 and external devices. For example, chipset 1608 may be a set of ICs on a motherboard that connects processor 1602 to super-speed devices, such as main memory 1604 and graphics controllers, and a low speed peripheral bus, such as a USB, PCI, or ISA bus, that connects the processing device to processing device 1610. In one embodiment, the removable storage device interface 1603 may be implemented in the chipset 1608.
Computer system 1600 may also include a network interface device 1622. The computer system 1600 may also include one or more peripheral devices 1610 such as a video display unit (e.g., a Liquid Crystal Display (LCD)), an alphanumeric input device (e.g., a keyboard), a cursor control device (e.g., a mouse), a signal generation device (e.g., a speaker), etc., which are connected to the computer system through a graphics port and a graphics chipset. Integrated circuit device "programming" may include, for example and without limitation: loading control values into registers or other storage circuitry within the device in response to host instructions; and thus control operational aspects of the device, establish device configuration or control operational aspects of the device through one-time programming operations (e.g., blowing fuses within configuration circuits during device production); and/or connecting one or more selected pins or other contact structures of the device to a reference voltage line (also referred to as a strap) to establish a particular device configuration or operational aspect of the device. The term "exemplary" is used to express examples rather than preferences or requirements.
Domain
The domains used in the CM system may be used to reflect a view of the division of the target devices 106 into smaller sets, such as customers corresponding to different products, chip families, Original Equipment Manufacturers (OEMs), and so forth. Domains may also be used in CM systems to determine the suitability of PCD templates and module templates. To elaborate on the split target device 106, the set of CM cores may belong to a particular chip family. As described above, a chip family refers to a collection of products that share the same security parameters within a CM core (e.g., a collection of products that share a common set of attributes, such as RsbSigningKey). For example, a set of CM cores may share a key pair that is representative of the sequence on the signature root (using RsbSigningPriv) and a set of other basic keys that provide for use by these cores. The set of CM cores that share the same key pair for a sequence may be considered a module domain. The set of CM cores may be partitioned based on product (also known as chipID), ChipSeries, etc. A particular product may belong to only a single chipSeries. Any CM core within a particular chipSeries may also belong to a certain product.
FIG. 17 is a diagram of domain partitioning 1700, according to one embodiment. Domain partition 1700 is a partition of target devices 106 (e.g., CM cores) for clients 1701. Domain partitioning 1700 includes a first level grouping based on chip family 1702(chipSeries 1-3). Each of the divisions of chip family 1702 includes a second level grouping based on products 1704. Each product 1704 includes multiple target devices 106, each of which includes CM core 1706 in this embodiment. In some cases, the third level grouping may be based on an Original Equipment Manufacturer (OEM) 1706. For example, within a family of chips 1702(chipSeries2), an OEM may include multiple target devices with CM cores 1706 from a first product type (product1) and multiple target devices with CM cores 1706 from a different product type (product 2). For another example, within the same chip family 1702(chipSeries2), another EOM may include multiple target devices with CM cores 1706 in the same product type (product 2). Also, as illustrated in FIG. 17, OEM 1706-based groupings may cover more than two Product types, such as illustrated in OEM1706 spanning three Product types (Product 1-3). Alternatively, domains may be defined based on other common attributes within the set of CM cores 1706.
The domain may be used to unify the creation of a particular asset based on a particular data set. For example, a module within chip family 1702(chipSeries1) may be based on the same root signature private key (e.g., RsbSigningPriv key). Alternatively, the CM core 1706 may be allocated (ported) according to other sets of metadata.
Also, all CM cores 1706 within a domain share a set of metadata. To specify several data values and keys in the CM core 1706, two packets may be used in the CM system, including CMNetlist and HW CONFIG. Netlist is a description of the parts or devices used to generate the CM core and their interconnections. The HW CONFIG value is output from the root to become part of the hardware Netlist, and may be a guest-specific value. There are several values (keys and IDs) that are shared by the CM system (e.g., root, module) and by the CM core hardware. For example, RsbSigningPub is used by CM core 1706 to verify the sequence it receives from electrical HSM111 through tester equipment 112. Another example of such a key is chipVendorDeviceAesKey. This key is used as a basic key for personalization. In particular, it is used to compute a verifier, which is checked by the CM core 1706 to verify the appliance 108. In addition to the key, a constant is required that becomes part of the Netlist. The following table contains example values of the part that can be output to become Netlist:
Figure BDA0002241001610000631
for a PCD or module, the creation of a particular entity based on the module (PCD template or module template) may be expressed as follows:
template + domain ═ entity
That is, to create a module, a module template may be selected and a domain may be specified. Different module templates may have different domain types, but a domain should be specified. Likewise, PCD type creation may use PCD templates and domains. The following description provides other examples of PCD type domains and module domains.
Module domain and PCD type domain
From a practical perspective, the notion of module domain and PCD type domain helps describe how many different modules or PCD types are created based on a particular module template or PCD template. To generate a module, the module template is limited to a particular module domain. For example, a module template may describe how to provide serialization and personalization (such as being named "serial + perso 12"). The particular module that provides serialization and personalization for a particular chipries (say "cs 12") will be named "serial + perso. cs 12" and may be used only with CM core 1706 belonging to chipries cs 12. Similarly, say that the PCD template "serial + perso 12" may provide device ID data and personalization data for chip ID "cid 123". All identifiers of PCD types based on the "serial + perso 12" template that provided the asset to "cid 123" would be a combination of the two and would be named "serial + perso12.cid 123". The following table includes an example use case with a PCD type domain and a module domain:
Figure BDA0002241001610000651
in the above description, numerous details are set forth. However, it will be apparent to one having ordinary skill in the art having had the benefit of the present disclosure that the embodiments of the present invention may be practiced without the specific details. In some instances, well-known structures and devices are shown in block diagram form, rather than in detail, in order to avoid obscuring the present description.
Some portions of the detailed description are presented in terms of algorithms and symbolic representations of operations on data bits within a computer memory. These algorithmic descriptions and representations are the means used by those skilled in the data processing arts to most effectively convey the substance of their work to others skilled in the art. An algorithm is here, and generally, conceived to be a self-consistent sequence of steps leading to a desired result. The steps are those requiring physical manipulations of physical quantities. Usually, though not necessarily, these quantities may take the form of electrical or magnetic signals capable of being stored, transferred, combined, compared, and otherwise manipulated. It has proven convenient at times, principally for reasons of common usage, to refer to these signals as bits, values, elements, symbols, characters, terms, numbers, or the like.
It should be borne in mind, however, that all of these and similar terms are to be associated with the appropriate physical quantities and are merely convenient labels applied to these quantities. Unless specifically stated otherwise as apparent from the above discussion, it is appreciated that throughout the description, discussions utilizing terms such as "encrypting," "decrypting," "storing," "providing," "deriving," "obtaining," "receiving," "verifying," "deleting," "performing," "requesting," "communicating," or the like, manipulate and transform data represented as physical (e.g., electronic) quantities within the computing system's registers and memories into other data similarly represented as physical quantities within the computing system memories or registers or other such information storage, transmission or display devices.
The word "example" or "exemplary" is used herein to indicate serving as an example, instance, or illustration. Any aspect or design described herein as "exemplary" or "exemplary" is not necessarily to be construed as preferred or advantageous over other aspects or designs. Rather, use of the word "example" or "exemplary" is intended to present concepts in a concrete fashion. As used in this disclosure, the term "or" is intended to mean an inclusive "or" rather than an exclusive "or". That is, unless specified otherwise or clear from context, "X comprises a or B" is intended to mean any of the natural inclusive permutations. That is, if X comprises A; x comprises B; or X includes both A and B, then "X includes A or B" is satisfied under the circumstances of either of the foregoing examples. In addition, the articles "a" and "an" as used in this disclosure and the appended claims should generally be construed to mean "one or more" unless specified otherwise or clear from context to be directed to a singular form. Moreover, unless so described, the use of the terms "an embodiment" or "one embodiment" or "an implementation" or "one implementation" throughout are not intended to mean the same embodiment or implementation.
Embodiments described herein may also relate to an apparatus for performing the operations herein. The apparatus may be specially constructed for the required purposes or it may comprise a general purpose computer selectively activated or reconfigured by a computer program stored in the computer. Such a computer program may be stored in a non-transitory computer readable storage medium, such as, but is not limited to, any type of disk including floppy disks, optical disks, CD-ROMs, and magnetic-optical disks, read-only memories (ROMs), Random Access Memories (RAMs), EPROMs, EEPROMs, magnetic or optical cards, flash memory, or any type of media suitable for storing electronic instructions. The term "computer-readable storage medium" should be taken to include a single medium or multiple media (e.g., a centralized or distributed database, and/or associated caches and servers) that store the one or more sets of instructions. The term "computer-readable medium" shall also be taken to include any medium that is capable of storing, encoding or carrying a set of instructions for execution by the machine and that cause the machine to perform any one or more of the methodologies of the present embodiments. The term "computer-readable storage medium" shall accordingly be taken to include, but not be limited to, solid-state memories, optical media, magnetic media, any medium that is capable of storing a set of instructions for execution by the machine and that cause the machine to perform any one or more of the methodologies of the present embodiments.
The algorithms and operations presented herein are not inherently related to any particular computer or other apparatus. Various general-purpose systems may also be used with programs in accordance with the teachings herein, or it may prove convenient to construct more specialized apparatus to perform the required method steps. The required structure for a variety of these systems will appear from the description below. In addition, the present embodiments are not described with reference to any particular programming language. It will be appreciated that a variety of programming languages may be used to implement the teachings of the embodiments as described herein.
The above description sets forth numerous specific details such as examples of specific systems, components, methods, etc., in order to provide a good understanding of several embodiments of the present invention. It will be apparent, however, to one skilled in the art that at least some embodiments of the invention may be practiced without these specific details. In other instances, well-known components or methods are not described in detail or are presented in simple block diagram format in order to avoid unnecessarily obscuring the present invention. Accordingly, the specific details set forth above are merely exemplary. The specific embodiments may vary from these exemplary details and still be contemplated to be within the scope of the present invention.
It is to be understood that the above description is intended to be illustrative, and not restrictive. Many other embodiments will be apparent to those of skill in the art upon reading and understanding the above description. The scope of the invention should, therefore, be determined with reference to the appended claims, along with the full scope of equivalents to which such claims are entitled.
While the present invention has been described with reference to specific embodiments thereof, it will be evident that various modifications and changes may be made thereto without departing from the broader spirit and scope of the invention. For example, features or aspects of any of the embodiments may be applied (at least where applicable) in combination with or in place of counterpart features or aspects thereof. The specification and drawings are, accordingly, to be regarded in an illustrative rather than a restrictive sense.

Claims (20)

1. A method, comprising:
receiving, by an appliance device of a Cryptographic Manager (CM) system from a service device of the CM system over a network, a module that is an application that securely provides data assets to a target device in an operational phase of a manufacturing lifecycle of the target device;
receiving, by the appliance device from the service device over the network, a ticket, wherein the ticket is digital data that grants permission to the appliance device to execute the module;
authenticating, by the appliance device, the ticket; and
executing the module by the appliance device when the ticket is validated, wherein executing the module results in a secure construction of a sequence of operations to securely provide the data asset to the target device.
2. The method of claim 1, wherein the ticket is a signed ticket authorization that permits the appliance device to execute the module a single time to prevent copying of the data asset and to prevent copying consumption of the data asset, wherein the method further comprises preventing copying of the data asset and copying consumption of the data asset after executing the module using the signed ticket authorization.
3. The method of claim 1, further comprising creating, by the appliance device, an audit log that executes the module using the ticket.
4. The method of claim 1, wherein the ticket includes a pair of N-bit strings, a ticket name representing a ticket type associated with the type of data asset, and a ticket Identifier (ID) identifying a particular data asset record.
5. The method of claim 1, further comprising receiving, by the application device from the service device over the network, pre-computed data (PCD) assets for the data assets related to the module and the ticket, wherein an input segment of a module file containing the module associates a PCD type with a ticket type, and wherein validating the ticket comprises comparing a current ticket type of the ticket to the ticket type in the input segment of the module file, wherein the ticket is validated when the ticket type and the current ticket type match.
6. The method of claim 1, wherein the appliance device comprises a Hardware Security Module (HSM), and wherein the method further comprises:
maintaining, by the HSM, a list of current tickets for each of the ticket names known to the appliance device; and
a counter used to prevent replay attacks is maintained by the HSM.
7. The method of claim 6, further comprising at least one of:
receiving, by the appliance device, a first ticket-related message from the service device to obtain an internal state of the HSM and transmitting the internal state to the service device;
receiving, by the appliance device, a second ticket-related message to grant a new ticket to the HSM; or
Receiving, by the appliance device, a third ticket-related message to remove the ticket from the HSM.
8. The method of claim 1, wherein validating the ticket comprises validating a ticket index relative to an ordered index for the data assets, wherein the data assets are ordered data.
9. The method of claim 1, wherein the data asset is a pre-computed data (PCD) asset in a PCD file specifying a PCD type and an order of ticket types, and wherein validating the ticket comprises:
comparing a current ticket type in the ticket with the ticket type of the PCD asset; and
comparing a current PCD type to the PCD type of the PCD asset, wherein the ticket is validated when the current ticket type matches the ticket type of the PCD asset and the current PCD type matches the PCD type of the PCD asset.
10. The method of claim 1, wherein the data asset is a high-bandwidth digital content protection (HDCP) record containing an HDCP key and the ticket is a key issued by the service device for the HDCP record, and wherein the method further comprises:
consuming the HDCP key when the ticket is authenticated to enforce the single use and unique nature of HDCP key provisioning;
tracking a history of tickets issued by the service device;
detecting a duplication in the history of the ticket; and
generating an alert when the duplication is detected in the history of the ticket.
11. The method of claim 1, wherein the data asset is an encrypted high-bandwidth digital content protection (HDCP) record containing HDCP keys and Key Selection Vector (KSV) values, and wherein the method further comprises:
tracking a history of the KSV values;
performing log-based checks of the history to detect an attack replication, wherein performing log-based checks is based on at least one of: 1) a log of the appliance referencing a same one of the issued KSV values, 2) a log of sequences performed by the appliance using the same one of the issued KSV values, 3) a log of tickets consumed by the appliance; a ticket, or 4) a log of the tester device; and
when the copy is detected, an alarm is raised.
12. The method of claim 11, wherein the HDCP record is stored in a pre-computed data (PCD) asset, and wherein the KSV value in the PCD asset is readable by the appliance without knowledge of the HDCP key used by a Hardware Security Module (HSM) of the appliance to decrypt the encrypted HDCP key.
13. An electrical device comprising:
a processor; and
a network interface coupled to the processor and communicatively coupled to a service device of a password manager (CM) system, wherein the processor is operable to:
receiving a module from the service device over a network, the module being an application that securely provides data assets to a target device in an operational phase of a manufacturing lifecycle of the target device;
receiving a ticket from the service device over the network, wherein the ticket is digital data that grants permission to the device to execute the module;
validating the ticket; and
executing the module when the ticket is validated, wherein the module, when executed by the appliance device, results in a secure construction of a sequence of operations to securely provide the data asset to the target device.
14. The appliance device of claim 13, wherein the ticket is a signed ticket authorization that permits the appliance device to execute the module a single time to prevent copying of the data asset and to prevent copying consumption of the data asset, wherein the processor is further operable to prevent copying of the data asset and copying consumption of the data asset after executing the module using the signed ticket authorization.
15. The appliance device of claim 13, wherein the processor is further operable to create an audit log of the execution of the module using the ticket.
16. The appliance device of claim 13, wherein the ticket includes a pair of N-bit strings, a ticket name representing a ticket type associated with the type of data asset, and a ticket Identifier (ID) identifying a particular data asset record.
17. The appliance device of claim 13, wherein the processor is further operable to:
receiving pre-computed data (PCD) assets from the service device over the network for the data assets connected to the module and the ticket, wherein an input segment of a module file containing the module associates a PCD type with a ticket type; and
comparing a current ticket type of the ticket to the ticket type in the input section of the module file to validate the ticket, wherein the ticket is validated when the ticket type and the current ticket type match.
18. The appliance device of claim 13, further comprising a Hardware Security Module (HSM), wherein the HSM is operable to:
maintaining a list of current tickets for each of the ticket names known to the appliance device; and
maintaining a counter used to prevent replay attacks, and wherein the processor is further operable to:
receiving a first ticket-related message from the serving device to obtain an internal state of the HSM and transmitting the internal state to the serving device;
receiving a second ticket-related message to grant a new ticket to the HSM; or
Receiving a third ticket-related message to remove the ticket from the HSM.
19. A service device, comprising:
a processor; and
a network interface coupled to the processor and communicatively coupled to an appliance device of a password manager (CM) system over a network, wherein the processor is operable to:
associating a ticket type with a pre-computed data (PCD) asset for a target device; and
sending a module, the PCD, and a ticket to the appliance device in the CM system over the network, wherein the ticket is digital data that grants permission to the appliance device to execute the module, wherein the ticket specifies a current ticket type, wherein the module is an application that securely provides the PCD to the target device in an operational phase of a manufacturing lifecycle of the target device, wherein the appliance device is to verify that the current ticket type in the ticket matches the ticket type specified in the PCD asset.
20. The service device of claim 19, wherein the processor is further operable to send a first ticket-related message to the appliance device to obtain an internal state of a Hardware Security Module (HSM) of the appliance device.
CN201911000015.7A 2014-05-07 2015-05-04 Module for securely providing assets to a target device Active CN110765437B (en)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN201911000015.7A CN110765437B (en) 2014-05-07 2015-05-04 Module for securely providing assets to a target device

Applications Claiming Priority (11)

Application Number Priority Date Filing Date Title
US201461989993P 2014-05-07 2014-05-07
US201461990050P 2014-05-07 2014-05-07
US201461990044P 2014-05-07 2014-05-07
US61/990,050 2014-05-07
US61/990,044 2014-05-07
US61/989,993 2014-05-07
US14/535,194 US10015164B2 (en) 2014-05-07 2014-11-06 Modules to securely provision an asset to a target device
US14/535,194 2014-11-06
CN201911000015.7A CN110765437B (en) 2014-05-07 2015-05-04 Module for securely providing assets to a target device
PCT/US2015/029077 WO2015171508A1 (en) 2014-05-07 2015-05-04 Modules to securely provision an asset to a target device
CN201580031528.8A CN106415571B (en) 2014-05-07 2015-05-04 Modules that deliver assets securely to target devices

Related Parent Applications (1)

Application Number Title Priority Date Filing Date
CN201580031528.8A Division CN106415571B (en) 2014-05-07 2015-05-04 Modules that deliver assets securely to target devices

Publications (2)

Publication Number Publication Date
CN110765437A true CN110765437A (en) 2020-02-07
CN110765437B CN110765437B (en) 2023-10-13

Family

ID=54368836

Family Applications (2)

Application Number Title Priority Date Filing Date
CN201580031528.8A Active CN106415571B (en) 2014-05-07 2015-05-04 Modules that deliver assets securely to target devices
CN201911000015.7A Active CN110765437B (en) 2014-05-07 2015-05-04 Module for securely providing assets to a target device

Family Applications Before (1)

Application Number Title Priority Date Filing Date
CN201580031528.8A Active CN106415571B (en) 2014-05-07 2015-05-04 Modules that deliver assets securely to target devices

Country Status (5)

Country Link
US (6) US10015164B2 (en)
EP (3) EP3140772B1 (en)
CN (2) CN106415571B (en)
TW (4) TWI716084B (en)
WO (3) WO2015171508A1 (en)

Families Citing this family (208)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US8312033B1 (en) 2008-06-26 2012-11-13 Experian Marketing Solutions, Inc. Systems and methods for providing an integrated identifier
US9665854B1 (en) 2011-06-16 2017-05-30 Consumerinfo.Com, Inc. Authentication alerts
US9843487B2 (en) * 2013-03-12 2017-12-12 Oracle International Corporation System and method for provisioning cloud services using a hybrid service management engine plugin
US9633322B1 (en) 2013-03-15 2017-04-25 Consumerinfo.Com, Inc. Adjustment of knowledge-based authentication
US10664936B2 (en) 2013-03-15 2020-05-26 Csidentity Corporation Authentication systems and methods for on-demand products
US9721147B1 (en) 2013-05-23 2017-08-01 Consumerinfo.Com, Inc. Digital identity
US10015164B2 (en) 2014-05-07 2018-07-03 Cryptography Research, Inc. Modules to securely provision an asset to a target device
US10356094B2 (en) * 2014-06-30 2019-07-16 Vescel, Llc Uniqueness and auditing of a data resource through an immutable record of transactions in a hash history
US10181051B2 (en) 2016-06-10 2019-01-15 OneTrust, LLC Data processing systems for generating and populating a data inventory for processing data access requests
US9729583B1 (en) 2016-06-10 2017-08-08 OneTrust, LLC Data processing systems and methods for performing privacy assessments and monitoring of new versions of computer code for privacy compliance
US10372935B1 (en) 2015-11-13 2019-08-06 Google Llc Selectively encrypting commit log entries
US10897352B2 (en) * 2015-12-16 2021-01-19 Rambus Inc. Cryptographic management of lifecycle states
US10063649B2 (en) * 2015-12-29 2018-08-28 Ca, Inc. Data translation using a proxy service
US10778435B1 (en) * 2015-12-30 2020-09-15 Jpmorgan Chase Bank, N.A. Systems and methods for enhanced mobile device authentication
US11424931B2 (en) 2016-01-27 2022-08-23 Blackberry Limited Trusted execution environment
US10599409B2 (en) * 2016-02-02 2020-03-24 Blackberry Limited Application lifecycle operation queueing
US11004125B2 (en) 2016-04-01 2021-05-11 OneTrust, LLC Data processing systems and methods for integrating privacy information management systems with data loss prevention tools or other tools for privacy design
US10423996B2 (en) 2016-04-01 2019-09-24 OneTrust, LLC Data processing systems and communication systems and methods for the efficient generation of privacy risk assessments
US12288233B2 (en) 2016-04-01 2025-04-29 OneTrust, LLC Data processing systems and methods for integrating privacy information management systems with data loss prevention tools or other tools for privacy design
US10706447B2 (en) 2016-04-01 2020-07-07 OneTrust, LLC Data processing systems and communication systems and methods for the efficient generation of privacy risk assessments
US11244367B2 (en) 2016-04-01 2022-02-08 OneTrust, LLC Data processing systems and methods for integrating privacy information management systems with data loss prevention tools or other tools for privacy design
US11562097B2 (en) 2016-06-10 2023-01-24 OneTrust, LLC Data processing systems for central consent repository and related methods
US10708305B2 (en) 2016-06-10 2020-07-07 OneTrust, LLC Automated data processing systems and methods for automatically processing requests for privacy-related information
US11057356B2 (en) 2016-06-10 2021-07-06 OneTrust, LLC Automated data processing systems and methods for automatically processing data subject access requests using a chatbot
US11366786B2 (en) 2016-06-10 2022-06-21 OneTrust, LLC Data processing systems for processing data subject access requests
US12299065B2 (en) 2016-06-10 2025-05-13 OneTrust, LLC Data processing systems and methods for dynamically determining data processing consent configurations
US11416589B2 (en) 2016-06-10 2022-08-16 OneTrust, LLC Data processing and scanning systems for assessing vendor risk
US11403377B2 (en) 2016-06-10 2022-08-02 OneTrust, LLC Privacy management systems and methods
US10169609B1 (en) 2016-06-10 2019-01-01 OneTrust, LLC Data processing systems for fulfilling data subject access requests and related methods
US10606916B2 (en) 2016-06-10 2020-03-31 OneTrust, LLC Data processing user interface monitoring systems and related methods
US11134086B2 (en) 2016-06-10 2021-09-28 OneTrust, LLC Consent conversion optimization systems and related methods
US12045266B2 (en) 2016-06-10 2024-07-23 OneTrust, LLC Data processing systems for generating and populating a data inventory
US10452866B2 (en) 2016-06-10 2019-10-22 OneTrust, LLC Data processing systems for fulfilling data subject access requests and related methods
US10467432B2 (en) 2016-06-10 2019-11-05 OneTrust, LLC Data processing systems for use in automatically generating, populating, and submitting data subject access requests
US11228620B2 (en) 2016-06-10 2022-01-18 OneTrust, LLC Data processing systems for data-transfer risk identification, cross-border visualization generation, and related methods
US11222309B2 (en) 2016-06-10 2022-01-11 OneTrust, LLC Data processing systems for generating and populating a data inventory
US10353673B2 (en) 2016-06-10 2019-07-16 OneTrust, LLC Data processing systems for integration of consumer feedback with data subject access requests and related methods
US10873606B2 (en) 2016-06-10 2020-12-22 OneTrust, LLC Data processing systems for data-transfer risk identification, cross-border visualization generation, and related methods
US11238390B2 (en) 2016-06-10 2022-02-01 OneTrust, LLC Privacy management systems and methods
US10853501B2 (en) 2016-06-10 2020-12-01 OneTrust, LLC Data processing and scanning systems for assessing vendor risk
US10909265B2 (en) 2016-06-10 2021-02-02 OneTrust, LLC Application privacy scanning systems and related methods
US10318761B2 (en) 2016-06-10 2019-06-11 OneTrust, LLC Data processing systems and methods for auditing data request compliance
US11138299B2 (en) 2016-06-10 2021-10-05 OneTrust, LLC Data processing and scanning systems for assessing vendor risk
US11188615B2 (en) 2016-06-10 2021-11-30 OneTrust, LLC Data processing consent capture systems and related methods
US11200341B2 (en) 2016-06-10 2021-12-14 OneTrust, LLC Consent receipt management systems and related methods
US10706176B2 (en) 2016-06-10 2020-07-07 OneTrust, LLC Data-processing consent refresh, re-prompt, and recapture systems and related methods
US12118121B2 (en) 2016-06-10 2024-10-15 OneTrust, LLC Data subject access request processing systems and related methods
US11366909B2 (en) 2016-06-10 2022-06-21 OneTrust, LLC Data processing and scanning systems for assessing vendor risk
US10282559B2 (en) 2016-06-10 2019-05-07 OneTrust, LLC Data processing systems for identifying, assessing, and remediating data processing risks using data modeling techniques
US10503926B2 (en) 2016-06-10 2019-12-10 OneTrust, LLC Consent receipt management systems and related methods
US12136055B2 (en) 2016-06-10 2024-11-05 OneTrust, LLC Data processing systems for identifying, assessing, and remediating data processing risks using data modeling techniques
US10592648B2 (en) 2016-06-10 2020-03-17 OneTrust, LLC Consent receipt management systems and related methods
US12381915B2 (en) 2016-06-10 2025-08-05 OneTrust, LLC Data processing systems and methods for performing assessments and monitoring of new versions of computer code for compliance
US11025675B2 (en) 2016-06-10 2021-06-01 OneTrust, LLC Data processing systems and methods for performing privacy assessments and monitoring of new versions of computer code for privacy compliance
US11416109B2 (en) 2016-06-10 2022-08-16 OneTrust, LLC Automated data processing systems and methods for automatically processing data subject access requests using a chatbot
US11354435B2 (en) 2016-06-10 2022-06-07 OneTrust, LLC Data processing systems for data testing to confirm data deletion and related methods
US10282700B2 (en) 2016-06-10 2019-05-07 OneTrust, LLC Data processing systems for generating and populating a data inventory
US10685140B2 (en) 2016-06-10 2020-06-16 OneTrust, LLC Consent receipt management systems and related methods
US10565397B1 (en) 2016-06-10 2020-02-18 OneTrust, LLC Data processing systems for fulfilling data subject access requests and related methods
US10713387B2 (en) 2016-06-10 2020-07-14 OneTrust, LLC Consent conversion optimization systems and related methods
US10839102B2 (en) 2016-06-10 2020-11-17 OneTrust, LLC Data processing systems for identifying and modifying processes that are subject to data subject access requests
US10572686B2 (en) 2016-06-10 2020-02-25 OneTrust, LLC Consent receipt management systems and related methods
US10949170B2 (en) 2016-06-10 2021-03-16 OneTrust, LLC Data processing systems for integration of consumer feedback with data subject access requests and related methods
US11144622B2 (en) 2016-06-10 2021-10-12 OneTrust, LLC Privacy management systems and methods
US10607028B2 (en) 2016-06-10 2020-03-31 OneTrust, LLC Data processing systems for data testing to confirm data deletion and related methods
US11354434B2 (en) 2016-06-10 2022-06-07 OneTrust, LLC Data processing systems for verification of consent and notice processing and related methods
US10706379B2 (en) 2016-06-10 2020-07-07 OneTrust, LLC Data processing systems for automatic preparation for remediation and related methods
US10796260B2 (en) 2016-06-10 2020-10-06 OneTrust, LLC Privacy management systems and methods
US11023842B2 (en) 2016-06-10 2021-06-01 OneTrust, LLC Data processing systems and methods for bundled privacy policies
US10776517B2 (en) 2016-06-10 2020-09-15 OneTrust, LLC Data processing systems for calculating and communicating cost of fulfilling data subject access requests and related methods
US10565161B2 (en) 2016-06-10 2020-02-18 OneTrust, LLC Data processing systems for processing data subject access requests
US10496803B2 (en) 2016-06-10 2019-12-03 OneTrust, LLC Data processing systems and methods for efficiently assessing the risk of privacy campaigns
US11222142B2 (en) 2016-06-10 2022-01-11 OneTrust, LLC Data processing systems for validating authorization for personal data collection, storage, and processing
US10740487B2 (en) 2016-06-10 2020-08-11 OneTrust, LLC Data processing systems and methods for populating and maintaining a centralized database of personal data
US11087260B2 (en) 2016-06-10 2021-08-10 OneTrust, LLC Data processing systems and methods for customizing privacy training
US11651104B2 (en) 2016-06-10 2023-05-16 OneTrust, LLC Consent receipt management systems and related methods
US11651106B2 (en) 2016-06-10 2023-05-16 OneTrust, LLC Data processing systems for fulfilling data subject access requests and related methods
US10496846B1 (en) 2016-06-10 2019-12-03 OneTrust, LLC Data processing and communications systems and methods for the efficient implementation of privacy by design
US11410106B2 (en) 2016-06-10 2022-08-09 OneTrust, LLC Privacy management systems and methods
US11341447B2 (en) 2016-06-10 2022-05-24 OneTrust, LLC Privacy management systems and methods
US10776514B2 (en) 2016-06-10 2020-09-15 OneTrust, LLC Data processing systems for the identification and deletion of personal data in computer systems
US11188862B2 (en) 2016-06-10 2021-11-30 OneTrust, LLC Privacy management systems and methods
US10878127B2 (en) 2016-06-10 2020-12-29 OneTrust, LLC Data subject access request processing systems and related methods
US10997315B2 (en) 2016-06-10 2021-05-04 OneTrust, LLC Data processing systems for fulfilling data subject access requests and related methods
US10437412B2 (en) 2016-06-10 2019-10-08 OneTrust, LLC Consent receipt management systems and related methods
US11461500B2 (en) 2016-06-10 2022-10-04 OneTrust, LLC Data processing systems for cookie compliance testing with website scanning and related methods
US11210420B2 (en) 2016-06-10 2021-12-28 OneTrust, LLC Data subject access request processing systems and related methods
US11222139B2 (en) 2016-06-10 2022-01-11 OneTrust, LLC Data processing systems and methods for automatic discovery and assessment of mobile software development kits
US11544667B2 (en) 2016-06-10 2023-01-03 OneTrust, LLC Data processing systems for generating and populating a data inventory
US10242228B2 (en) 2016-06-10 2019-03-26 OneTrust, LLC Data processing systems for measuring privacy maturity within an organization
US10678945B2 (en) 2016-06-10 2020-06-09 OneTrust, LLC Consent receipt management systems and related methods
US11416798B2 (en) 2016-06-10 2022-08-16 OneTrust, LLC Data processing systems and methods for providing training in a vendor procurement process
US11416590B2 (en) 2016-06-10 2022-08-16 OneTrust, LLC Data processing and scanning systems for assessing vendor risk
US11392720B2 (en) 2016-06-10 2022-07-19 OneTrust, LLC Data processing systems for verification of consent and notice processing and related methods
US10896394B2 (en) 2016-06-10 2021-01-19 OneTrust, LLC Privacy management systems and methods
US11074367B2 (en) 2016-06-10 2021-07-27 OneTrust, LLC Data processing systems for identity validation for consumer rights requests and related methods
US10846433B2 (en) 2016-06-10 2020-11-24 OneTrust, LLC Data processing consent management systems and related methods
US10204154B2 (en) 2016-06-10 2019-02-12 OneTrust, LLC Data processing systems for generating and populating a data inventory
US10726158B2 (en) 2016-06-10 2020-07-28 OneTrust, LLC Consent receipt management and automated process blocking systems and related methods
US10909488B2 (en) 2016-06-10 2021-02-02 OneTrust, LLC Data processing systems for assessing readiness for responding to privacy-related incidents
US11625502B2 (en) 2016-06-10 2023-04-11 OneTrust, LLC Data processing systems for identifying and modifying processes that are subject to data subject access requests
US11675929B2 (en) 2016-06-10 2023-06-13 OneTrust, LLC Data processing consent sharing systems and related methods
US10783256B2 (en) 2016-06-10 2020-09-22 OneTrust, LLC Data processing systems for data transfer risk identification and related methods
US10509894B2 (en) 2016-06-10 2019-12-17 OneTrust, LLC Data processing and scanning systems for assessing vendor risk
US11475136B2 (en) 2016-06-10 2022-10-18 OneTrust, LLC Data processing systems for data transfer risk identification and related methods
US11294939B2 (en) 2016-06-10 2022-04-05 OneTrust, LLC Data processing systems and methods for automatically detecting and documenting privacy-related aspects of computer software
US10997318B2 (en) 2016-06-10 2021-05-04 OneTrust, LLC Data processing systems for generating and populating a data inventory for processing data access requests
US11227247B2 (en) 2016-06-10 2022-01-18 OneTrust, LLC Data processing systems and methods for bundled privacy policies
US11038925B2 (en) 2016-06-10 2021-06-15 OneTrust, LLC Data processing systems for data-transfer risk identification, cross-border visualization generation, and related methods
US11138242B2 (en) 2016-06-10 2021-10-05 OneTrust, LLC Data processing systems and methods for automatically detecting and documenting privacy-related aspects of computer software
US11157600B2 (en) 2016-06-10 2021-10-26 OneTrust, LLC Data processing and scanning systems for assessing vendor risk
US12052289B2 (en) 2016-06-10 2024-07-30 OneTrust, LLC Data processing systems for data-transfer risk identification, cross-border visualization generation, and related methods
US10885485B2 (en) 2016-06-10 2021-01-05 OneTrust, LLC Privacy management systems and methods
US10798133B2 (en) 2016-06-10 2020-10-06 OneTrust, LLC Data processing systems for data-transfer risk identification, cross-border visualization generation, and related methods
US11586700B2 (en) 2016-06-10 2023-02-21 OneTrust, LLC Data processing systems and methods for automatically blocking the use of tracking tools
US10430740B2 (en) 2016-06-10 2019-10-01 One Trust, LLC Data processing systems for calculating and communicating cost of fulfilling data subject access requests and related methods
US10454973B2 (en) 2016-06-10 2019-10-22 OneTrust, LLC Data processing systems for data-transfer risk identification, cross-border visualization generation, and related methods
US10438017B2 (en) 2016-06-10 2019-10-08 OneTrust, LLC Data processing systems for processing data subject access requests
US10510031B2 (en) 2016-06-10 2019-12-17 OneTrust, LLC Data processing systems for identifying, assessing, and remediating data processing risks using data modeling techniques
US10762236B2 (en) 2016-06-10 2020-09-01 OneTrust, LLC Data processing user interface monitoring systems and related methods
US10284604B2 (en) 2016-06-10 2019-05-07 OneTrust, LLC Data processing and scanning systems for generating and populating a data inventory
US11151233B2 (en) 2016-06-10 2021-10-19 OneTrust, LLC Data processing and scanning systems for assessing vendor risk
US10452864B2 (en) 2016-06-10 2019-10-22 OneTrust, LLC Data processing systems for webform crawling to map processing activities and related methods
US10769301B2 (en) 2016-06-10 2020-09-08 OneTrust, LLC Data processing systems for webform crawling to map processing activities and related methods
US10706131B2 (en) 2016-06-10 2020-07-07 OneTrust, LLC Data processing systems and methods for efficiently assessing the risk of privacy campaigns
US10776518B2 (en) 2016-06-10 2020-09-15 OneTrust, LLC Consent receipt management systems and related methods
US11727141B2 (en) 2016-06-10 2023-08-15 OneTrust, LLC Data processing systems and methods for synching privacy-related user consent across multiple computing devices
US11343284B2 (en) 2016-06-10 2022-05-24 OneTrust, LLC Data processing systems and methods for performing privacy assessments and monitoring of new versions of computer code for privacy compliance
US10275614B2 (en) 2016-06-10 2019-04-30 OneTrust, LLC Data processing systems for generating and populating a data inventory
US11301796B2 (en) 2016-06-10 2022-04-12 OneTrust, LLC Data processing systems and methods for customizing privacy training
US10803200B2 (en) 2016-06-10 2020-10-13 OneTrust, LLC Data processing systems for processing and managing data subject access in a distributed environment
US11438386B2 (en) 2016-06-10 2022-09-06 OneTrust, LLC Data processing systems for data-transfer risk identification, cross-border visualization generation, and related methods
US10565236B1 (en) 2016-06-10 2020-02-18 OneTrust, LLC Data processing systems for generating and populating a data inventory
US10585968B2 (en) 2016-06-10 2020-03-10 OneTrust, LLC Data processing systems for fulfilling data subject access requests and related methods
US11481710B2 (en) 2016-06-10 2022-10-25 OneTrust, LLC Privacy management systems and methods
US10944725B2 (en) 2016-06-10 2021-03-09 OneTrust, LLC Data processing systems and methods for using a data model to select a target data asset in a data migration
US11277448B2 (en) 2016-06-10 2022-03-15 OneTrust, LLC Data processing systems for data-transfer risk identification, cross-border visualization generation, and related methods
US10848523B2 (en) 2016-06-10 2020-11-24 OneTrust, LLC Data processing systems for data-transfer risk identification, cross-border visualization generation, and related methods
US10592692B2 (en) 2016-06-10 2020-03-17 OneTrust, LLC Data processing systems for central consent repository and related methods
US11336697B2 (en) 2016-06-10 2022-05-17 OneTrust, LLC Data processing systems for data-transfer risk identification, cross-border visualization generation, and related methods
US10586075B2 (en) 2016-06-10 2020-03-10 OneTrust, LLC Data processing systems for orphaned data identification and deletion and related methods
US10614247B2 (en) 2016-06-10 2020-04-07 OneTrust, LLC Data processing systems for automated classification of personal information from documents and related methods
US11146566B2 (en) 2016-06-10 2021-10-12 OneTrust, LLC Data processing systems for fulfilling data subject access requests and related methods
US10416966B2 (en) 2016-06-10 2019-09-17 OneTrust, LLC Data processing systems for identity validation of data subject access requests and related methods
US10509920B2 (en) 2016-06-10 2019-12-17 OneTrust, LLC Data processing systems for processing data subject access requests
US11418492B2 (en) 2016-06-10 2022-08-16 OneTrust, LLC Data processing systems and methods for using a data model to select a target data asset in a data migration
US10949565B2 (en) 2016-06-10 2021-03-16 OneTrust, LLC Data processing systems for generating and populating a data inventory
US10642870B2 (en) 2016-06-10 2020-05-05 OneTrust, LLC Data processing systems and methods for automatically detecting and documenting privacy-related aspects of computer software
US11636171B2 (en) 2016-06-10 2023-04-25 OneTrust, LLC Data processing user interface monitoring systems and related methods
US11100444B2 (en) 2016-06-10 2021-08-24 OneTrust, LLC Data processing systems and methods for providing training in a vendor procurement process
US11295316B2 (en) 2016-06-10 2022-04-05 OneTrust, LLC Data processing systems for identity validation for consumer rights requests and related methods
US10235534B2 (en) 2016-06-10 2019-03-19 OneTrust, LLC Data processing systems for prioritizing data subject access requests for fulfillment and related methods
US11328092B2 (en) 2016-06-10 2022-05-10 OneTrust, LLC Data processing systems for processing and managing data subject access in a distributed environment
US10440062B2 (en) 2016-06-10 2019-10-08 OneTrust, LLC Consent receipt management systems and related methods
US11520928B2 (en) 2016-06-10 2022-12-06 OneTrust, LLC Data processing systems for generating personal data receipts and related methods
US10706174B2 (en) 2016-06-10 2020-07-07 OneTrust, LLC Data processing systems for prioritizing data subject access requests for fulfillment and related methods
US10127024B2 (en) * 2016-06-23 2018-11-13 International Business Machines Corporation Managing reuse of assets in a workflow management system
TWI748982B (en) * 2017-01-24 2021-12-11 香港商阿里巴巴集團服務有限公司 Data message processing method and data storage system
US10990707B1 (en) * 2017-03-30 2021-04-27 Comodo Security Solutions, Inc. Device for safe data signing
US10013577B1 (en) 2017-06-16 2018-07-03 OneTrust, LLC Data processing systems for identifying whether cookies contain personally identifying information
WO2019217925A1 (en) 2018-05-11 2019-11-14 Lattice Semiconductor Corporation Key provisioning systems and methods for programmable logic devices
US10979232B2 (en) * 2018-05-31 2021-04-13 Motorola Solutions, Inc. Method for provisioning device certificates for electronic processors in untrusted environments
US10911234B2 (en) 2018-06-22 2021-02-02 Experian Information Solutions, Inc. System and method for a token gateway environment
US11159658B2 (en) * 2018-07-23 2021-10-26 Moj.Io, Inc. Homogenization of telematics data through unified messaging protocol
US10803202B2 (en) 2018-09-07 2020-10-13 OneTrust, LLC Data processing systems for orphaned data identification and deletion and related methods
US11544409B2 (en) 2018-09-07 2023-01-03 OneTrust, LLC Data processing systems and methods for automatically protecting sensitive data within privacy management systems
US11144675B2 (en) 2018-09-07 2021-10-12 OneTrust, LLC Data processing systems and methods for automatically protecting sensitive data within privacy management systems
US11237744B2 (en) * 2018-12-28 2022-02-01 Verizon Media Inc. Method and system for configuring a write amplification factor of a storage engine based on a compaction value associated with a data file
GB2584909B (en) * 2019-06-21 2022-11-23 Secure Thingz Ltd Secure provision of Programmable Devices
US11941065B1 (en) 2019-09-13 2024-03-26 Experian Information Solutions, Inc. Single identifier platform for storing entity data
US11743194B2 (en) * 2019-11-19 2023-08-29 Bit Discovery Inc. Asset ranking and classification systems and methods
US11228423B2 (en) 2020-01-12 2022-01-18 Advanced New Technologies Co., Ltd. Method and device for security assessment of encryption models
US11343148B2 (en) 2020-03-09 2022-05-24 Microsoft Technology Licensing, Llc Secure management of devices
US10783174B1 (en) 2020-03-20 2020-09-22 Coupang Corp. Systems and methods for collection, management, and distribution of data using a crowdsourced knowledge database
US11233632B1 (en) * 2020-07-02 2022-01-25 Cal-Chip Electronics Specialty Products, Inc. Connected secure key redistribution system and method
CN113884779A (en) * 2020-07-03 2022-01-04 致茂电子(苏州)有限公司 Authority check key and open architecture type automatic test system with same
WO2022011142A1 (en) 2020-07-08 2022-01-13 OneTrust, LLC Systems and methods for targeted data discovery
WO2022026564A1 (en) 2020-07-28 2022-02-03 OneTrust, LLC Systems and methods for automatically blocking the use of tracking tools
US20230289376A1 (en) 2020-08-06 2023-09-14 OneTrust, LLC Data processing systems and methods for automatically redacting unstructured data from a data subject access request
US11768746B2 (en) * 2020-08-31 2023-09-26 Cryptography Research, Inc. Maintaining secure session state with failover during endpoint provisioning
US11444771B2 (en) 2020-09-08 2022-09-13 Micron Technology, Inc. Leveraging a trusted party third-party HSM and database to securely share a key
CN111935175B (en) * 2020-09-14 2020-12-29 华芯生物科技(武汉)有限公司 Data encryption transmission method of detection equipment
US11436373B2 (en) 2020-09-15 2022-09-06 OneTrust, LLC Data processing systems and methods for detecting tools for the automatic blocking of consent requests
US20230334158A1 (en) 2020-09-21 2023-10-19 OneTrust, LLC Data processing systems and methods for automatically detecting target data transfers and target data processing
WO2022076373A1 (en) 2020-10-05 2022-04-14 OneTrust, LLC Systems and methods for detecting prejudice bias in machine-learning models
WO2022099023A1 (en) 2020-11-06 2022-05-12 OneTrust, LLC Systems and methods for identifying data processing activities based on data discovery results
US20240111884A1 (en) * 2020-12-18 2024-04-04 Google Llc Authenticating a File System Within Untrusted Storage
WO2022159901A1 (en) 2021-01-25 2022-07-28 OneTrust, LLC Systems and methods for discovery, classification, and indexing of data in a native computing system
US11442906B2 (en) 2021-02-04 2022-09-13 OneTrust, LLC Managing custom attributes for domain objects defined within microservices
WO2022170254A1 (en) 2021-02-08 2022-08-11 OneTrust, LLC Data processing systems and methods for anonymizing data samples in classification analysis
US11601464B2 (en) 2021-02-10 2023-03-07 OneTrust, LLC Systems and methods for mitigating risks of third-party computing system functionality integration into a first-party computing system
US11775348B2 (en) 2021-02-17 2023-10-03 OneTrust, LLC Managing custom workflows for domain objects defined within microservices
WO2022178219A1 (en) 2021-02-18 2022-08-25 OneTrust, LLC Selective redaction of media content
US11662716B2 (en) 2021-02-26 2023-05-30 Kla Corporation Secure remote collaboration for equipment in a manufacturing facility
EP4305539A1 (en) 2021-03-08 2024-01-17 OneTrust, LLC Data transfer discovery and analysis systems and related methods
US11562078B2 (en) 2021-04-16 2023-01-24 OneTrust, LLC Assessing and managing computational risk involved with integrating third party computing functionality within a computing system
WO2023277883A1 (en) * 2021-06-29 2023-01-05 Hewlett-Packard Development Company, L.P. Production procedure device modifications
WO2023283460A1 (en) * 2021-07-08 2023-01-12 Data I/O Corporation Secure device programming system with hardware security module and security interop layer
US11822669B2 (en) * 2021-07-12 2023-11-21 Dell Products L.P. Systems and methods for importing security credentials for use by an information handling system
US12153704B2 (en) 2021-08-05 2024-11-26 OneTrust, LLC Computing platform for facilitating data exchange among computing environments
WO2023069464A1 (en) * 2021-10-20 2023-04-27 Cryptography Research, Inc. Secure asset management infrastructure for enforcing access control policies
US20230205919A1 (en) * 2021-12-23 2023-06-29 Cryptography Research, Inc. Multi-platform use case implementations to securely provision a secure data asset to a target device
US12373773B2 (en) 2022-05-19 2025-07-29 T-Mobile Usa, Inc. Telecommunications hardware asset location tracking systems and methods
US11620142B1 (en) 2022-06-03 2023-04-04 OneTrust, LLC Generating and customizing user interfaces for demonstrating functions of interactive user environments
US20240022410A1 (en) * 2022-07-15 2024-01-18 Cryptography Research, Inc. Securely provisioning a secure data asset to a target device using an authorization token
US12124700B2 (en) * 2022-09-23 2024-10-22 Qualcomm Incorporated Loading multi-segmented software image files into memory using a nested file structure
US12056471B2 (en) 2022-10-14 2024-08-06 Evernorth Strategic Development, Inc. Architecture for automatically generating computer-executable code for querying networked relational database management systems
CN118202616A (en) * 2023-06-16 2024-06-14 中国银联股份有限公司 Data encryption and decryption method, device, equipment, system and storage medium

Citations (6)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
EP1416353A2 (en) * 2002-10-30 2004-05-06 NTT DoCoMo, Inc. Communication device, program and recording media
CN101228770A (en) * 2005-07-27 2008-07-23 国际商业机器公司 System and method for securely sending documents to authorized recipients
US7624432B2 (en) * 2005-06-28 2009-11-24 International Business Machines Corporation Security and authorization in management agents
US7877461B1 (en) * 2008-06-30 2011-01-25 Google Inc. System and method for adding dynamic information to digitally signed mobile applications
EP2341457A2 (en) * 2009-12-03 2011-07-06 Osocad Remote LLC System and method for loading application classes
CN103229143A (en) * 2010-09-28 2013-07-31 施耐德电气美国股份有限公司 Service provider within network service -oriented architecture with extensible and customizable calculation engines

Family Cites Families (24)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
DE69827405T2 (en) 1997-03-24 2005-05-19 Visa International Service Association, Foster City SYSTEM AND METHOD FOR A MULTIPURPOSE CHIP CARD THAT ENABLES SUBSEQUENT STORAGE OF AN APPLICATION TO THIS CARD
US7279176B1 (en) 1999-09-02 2007-10-09 Rice University Nitric oxide-producing hydrogel materials
TW200604768A (en) * 2004-07-26 2006-02-01 Lealea Technology Co Ltd Monitoring and control management system
US20060080172A1 (en) 2004-10-13 2006-04-13 Softcoin, Inc. Method, system, and software for electronic media driven promotions that include off-line actions
US8074262B2 (en) * 2005-05-13 2011-12-06 Intel Corporation Method and apparatus for migrating virtual trusted platform modules
CA2510366C (en) 2005-06-14 2013-02-26 Certicom Corp. System and method for remote device registration
US8769127B2 (en) * 2006-02-10 2014-07-01 Northrop Grumman Systems Corporation Cross-domain solution (CDS) collaborate-access-browse (CAB) and assured file transfer (AFT)
US8019320B2 (en) * 2007-01-05 2011-09-13 Macronix International Co., Ltd. System and method of managing contactless payment transactions using a mobile communication device as a stored value device
US8752165B2 (en) 2008-05-29 2014-06-10 Apple Inc. Provisioning secrets in an unsecured environment
US8856322B2 (en) * 2008-12-19 2014-10-07 Openpeak Inc. Supervisory portal systems and methods of operation of same
EP2452298A4 (en) 2009-07-10 2014-08-27 Certicom Corp System and method for performing serialization of devices
EP2282577B1 (en) * 2009-07-27 2012-05-23 Institute for Imformation Industry Wireless communication apparatus, header compression method thereof, and header decompression method thereof
US9961550B2 (en) * 2010-11-04 2018-05-01 Itron Networked Solutions, Inc. Physically secured authorization for utility applications
US8737417B2 (en) * 2010-11-12 2014-05-27 Alcatel Lucent Lock-less and zero copy messaging scheme for telecommunication network applications
US20120204254A1 (en) * 2011-02-04 2012-08-09 Motorola Mobility, Inc. Method and apparatus for managing security state transitions
US8843764B2 (en) 2011-07-15 2014-09-23 Cavium, Inc. Secure software and hardware association technique
WO2013033388A1 (en) * 2011-08-30 2013-03-07 Yeager C Douglas Systems and methods for authorizing a transaction with an unexpected cryptogram
US9390526B2 (en) * 2011-11-17 2016-07-12 Oracle International Corporation Method, system, and computer program product for forming a relative location map based on user-specified decision criteria
US9054874B2 (en) * 2011-12-01 2015-06-09 Htc Corporation System and method for data authentication among processors
CA2877839C (en) * 2012-06-28 2021-07-27 Ologn Technologies Ag Secure key storage systems, methods and apparatuses
EP2736214B1 (en) * 2012-11-27 2015-10-14 Nxp B.V. Controlling application access to mobile device functions
TWI456427B (en) * 2012-12-12 2014-10-11 Inst Information Industry Major management apparatus, authorized management apparatus, electronic apparatus for delegation management, and delegation management methods thereof
CN105765598B (en) * 2013-12-24 2020-11-24 英特尔公司 Privacy enforcement via localized personalization
US10015164B2 (en) 2014-05-07 2018-07-03 Cryptography Research, Inc. Modules to securely provision an asset to a target device

Patent Citations (6)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
EP1416353A2 (en) * 2002-10-30 2004-05-06 NTT DoCoMo, Inc. Communication device, program and recording media
US7624432B2 (en) * 2005-06-28 2009-11-24 International Business Machines Corporation Security and authorization in management agents
CN101228770A (en) * 2005-07-27 2008-07-23 国际商业机器公司 System and method for securely sending documents to authorized recipients
US7877461B1 (en) * 2008-06-30 2011-01-25 Google Inc. System and method for adding dynamic information to digitally signed mobile applications
EP2341457A2 (en) * 2009-12-03 2011-07-06 Osocad Remote LLC System and method for loading application classes
CN103229143A (en) * 2010-09-28 2013-07-31 施耐德电气美国股份有限公司 Service provider within network service -oriented architecture with extensible and customizable calculation engines

Also Published As

Publication number Publication date
US9923890B2 (en) 2018-03-20
US20180295127A1 (en) 2018-10-11
US20220329587A1 (en) 2022-10-13
US10015164B2 (en) 2018-07-03
US11895109B2 (en) 2024-02-06
US20150326567A1 (en) 2015-11-12
EP3140772A1 (en) 2017-03-15
WO2015171508A1 (en) 2015-11-12
US11310227B2 (en) 2022-04-19
US20150326540A1 (en) 2015-11-12
US20150326541A1 (en) 2015-11-12
WO2015171511A1 (en) 2015-11-12
EP3140773B1 (en) 2021-03-03
TW201606561A (en) 2016-02-16
TW201941095A (en) 2019-10-16
EP3140774B1 (en) 2022-07-06
CN106415571A (en) 2017-02-15
TWI702511B (en) 2020-08-21
TW201606560A (en) 2016-02-16
EP3140774A1 (en) 2017-03-15
EP3140772B1 (en) 2020-01-15
TWI676914B (en) 2019-11-11
TW201606559A (en) 2016-02-16
US20200267142A1 (en) 2020-08-20
US9584509B2 (en) 2017-02-28
EP3140773A1 (en) 2017-03-15
TWI716084B (en) 2021-01-11
TWI662434B (en) 2019-06-11
WO2015171509A1 (en) 2015-11-12
US10581838B2 (en) 2020-03-03
CN110765437B (en) 2023-10-13
CN106415571B (en) 2019-11-05

Similar Documents

Publication Publication Date Title
US11895109B2 (en) Securely provisioning a target device
JP6427099B2 (en) Integrated Circuit Secure Function and Key Management
CN109328352B (en) Targeted Security Software Deployment
US9160723B2 (en) Framework for provisioning devices with externally acquired component-based identity data
US20240364536A1 (en) Provisioning a volatile security context in a root of trust
US20240179006A1 (en) Performing verified restore of data assets in a cryptographic device
US20240022410A1 (en) Securely provisioning a secure data asset to a target device using an authorization token
US20250023872A1 (en) Secure asset management infrastructure for enforcing access control policies
US20230205919A1 (en) Multi-platform use case implementations to securely provision a secure data asset to a target device
US20240427921A1 (en) Supply chain security manager

Legal Events

Date Code Title Description
PB01 Publication
PB01 Publication
SE01 Entry into force of request for substantive examination
SE01 Entry into force of request for substantive examination
GR01 Patent grant
GR01 Patent grant