Programming target device
By generating security configuration files with different value sets, the problem of inaccurate security information configuration in the prior art is solved, and the security functions and deployment efficiency of target devices are improved.
Patent Information
- Application Number
- CN201980027657.8
- Authority / Receiving Office
- CN · China
- Patent Type
- Patents(China)
- Current Assignee / Owner
- Priority Date
- 2018-02-23
- Filing Date
- 2019-02-21
- Publication Date
- 2025-01-03
- Estimated Expiration
- 2039-02-21
AI Technical Summary
In the prior art, when deploying computer software code to a target device, the security information configuration is inaccurate and inefficient, resulting in the target device being unable to perform security functions, such as verifying digital certificates, affecting deployment efficiency.
By generating basic security profiles, security profiles with different value sets are generated based on inputs at different deployment stages, which are used to configure the security parameters of the target device, including digital certificates and password keys, etc., to ensure the accuracy of security information in each stage and efficiency.
It realizes the rapid and accurate change of the safety information required by the target device, improves programming efficiency, and ensures the normal operation of the safety functions of the device.
Smart Images

Figure CN112005235B_ABST
Abstract
Description
Technical Field
[0001] The present disclosure relates to programming at least one target device, and more particularly to providing a security profile for programming at least one target device. Background Art
[0002] Computer software code is typically deployed to one or more target computing devices in multiple stages.
[0003] During the development phase, developers write application software code and make changes to the written application software code. During the testing phase, testers test the application software code, and when all tests are completed, the process moves to the production phase, where the tested application software code is deployed on target devices for use by end users. In the production phase, instead of deploying the application software code to all target devices at once, it can be deployed to a smaller pool of target devices first and then to all target devices or deployed in stages gradually to catch any last-minute issues.
[0004] In addition to the application software code, security information is also required to configure the target device. The security information can be deployed to the target device, for example, for each target device, a digital certificate (also commonly referred to as a cryptographic certificate) is usually deployed to the target device.
[0005] For security reasons, different security information is used at each stage of deploying computer software code to one or more target computing devices. For example, a developer uses a development cryptographic key to develop application software code but does not have access to a production cryptographic key. Summary of the invention
[0006] For each stage of deploying computer software code onto a target device, security personnel must create the security information required to configure the target device.
[0007] The inventors have recognized that this manual process is slow and results in inaccurate security information provided for configuring a target device at a particular stage because security personnel must remember every security parameter in the security information that must be configured for each deployment stage.
[0008] The inventors have recognized that this can result in the target device being configured with security information that renders the target device unable to perform security functions (e.g., unable to verify a digital certificate received from another computing device, and thereby unable to establish a communication link with the other computing device). This makes deployment of computer software code inefficient because human resources are required to diagnose which security parameters in the security information are misconfigured for a particular deployment stage.
[0009] According to one aspect, a method for providing a security profile for programming at least one target device is implemented on a computing device and includes: obtaining a base security profile, the base security profile defining at least one security parameter having a configurable value; in response to receiving an input from a user via an input device of the computing device, generating a first security profile based on the base security profile, wherein generating the first security profile includes: for each security parameter of at least one security parameter, assigning a value in a first value set to the security parameter by: (i) retrieving a value in the first value set from a first data storage location coupled to the computing device and setting the configurable value of the security parameter using the retrieved value; or (ii) associating the security parameter with an instruction for retrieving a value in the first value set and setting the configurable value of the security parameter using the retrieved value, the instruction selected from one or more instructions; in response to receiving an input from a user via an input device of the computing device, The user receives additional input and generates a second security profile based on the basic security profile, wherein generating the second security profile includes: for each security parameter of at least one security parameter, assigning a value in a second value set to the security parameter by: (i) obtaining a value in the second value set from a second data storage location coupled to the computing device, and setting a configurable value of the security parameter using the obtained value; or (ii) associating the security parameter with an instruction for obtaining a value in the second value set and setting a configurable value of the security parameter using the obtained value, the instruction being selected from the one or more instructions, wherein the second value set is different from the first value set; outputting the first security profile for programming at least one target device for use by a first type of user; and outputting the second security profile for programming at least one target device for use by a second type of user, the second type of user being different from the first type of user.
[0010] The at least one security parameter may include at least one digital certificate parameter associated with a digital certificate for programming onto the at least one target device.
[0011] At least one digital certificate parameter includes one or more of the following: an issuer name parameter with a configurable value that defines the issuer of the digital certificate; a validity period parameter with a configurable value that defines the validity period of the digital certificate; a subject name parameter with a configurable value that defines the subject of the digital certificate; a public key parameter with a configurable value that defines the public key of the digital certificate; a device serial number parameter with a configurable value that defines the target device onto which the digital certificate is to be programmed; and a certificate signature parameter with a configurable value that defines the signature of the digital certificate.
[0012] The at least one security parameter may include at least one cryptographic key parameter associated with a cryptographic key for programming onto the at least one target device.
[0013] The at least one cryptographic key parameter may include one or more of: at least one symmetric key parameter having a configurable value that defines a symmetric key; and at least one private key parameter having a configurable value that defines a private key in an asymmetric key pair.
[0014] The at least one security parameter may include at least one processor parameter used to program a processing unit on each of the at least one target device.
[0015] The at least one processor parameter includes one or more of the following: a debug interface parameter with a configurable value defining whether to enable or disable a debug interface on the processing unit; a JTAG interface parameter with a configurable value defining whether to enable or disable a JTAG interface on the processing unit; a USB interface parameter with a configurable value defining whether to enable or disable a USB interface on the processing unit; a serial interface parameter with a configurable value defining whether to enable or disable a serial interface on the processing unit; a network interface parameter with a configurable value defining whether to enable or disable a networking interface on the processing unit; a feature enablement parameter with a configurable value defining whether to enable or disable a feature for application software executed on the processing unit; and a readout parameter with a configurable value defining whether to enable or disable external access to a memory coupled to the processing unit.
[0016] The data storage may be coupled to the computing device, the data storage may include a first data storage location and a second data storage location. The data storage may be a secure data storage.
[0017] A non-secure data memory and a secure data memory may be coupled to the computing device, the non-secure data memory may include a first data storage location, and the secure data memory may include a second data storage location.
[0018] The secure data storage may be a hardware security module.
[0019] The one or more instructions may include at least one of the following: instructions for randomly generating a value; instructions for obtaining a value from a remote data storage device, the instructions including an identifier of the remote data storage device and a data storage location on the remote data storage device; instructions for generating a value using at least one value of at least one additional security parameter assigned to a basic security profile; and instructions for generating a value based on a date or time, the date or time being the date or time when the instruction is executed; and instructions for obtaining a value from a target device in at least one target device.
[0020] The method may include: outputting a first security configuration file to transmit it to a first data packet generation module, the first data packet generation module is configured to generate a first programming data packet based on the first security configuration file, and output it to a first device programming module for programming at least one target device; and outputting a second security configuration file to transmit it to a second data packet generation module, the second data packet generation module is configured to generate a second programming data packet, and output it to a second device programming module for programming at least one target device.
[0021] The first security profile may include at least one security parameter associated with the corresponding instruction, and the first data packet generation module is implemented on the computing device, and the method also includes: for each security parameter of the at least one security parameter associated with the corresponding instruction, the first data packet generation module executes the instruction associated with the security parameter to obtain a value in the first value set and uses the obtained value to set a configurable value of the security parameter.
[0022] The first security profile may include multiple security parameters each associated with a corresponding instruction, and the first data packet generation module is distributed on multiple computing devices, the multiple computing devices include the computing device and at least one remote computing device, the method also includes: outputting the first security profile to a component of the first data packet generation module on the computing device; for one or more security parameters among the multiple security parameters each associated with the corresponding instruction, the component of the first data packet generation module: (i) executes the instruction associated with the security parameter to obtain a value in a first value set and uses the obtained value to set a configurable value of the security parameter; and then (ii) outputs the first security profile to another component of the first data packet generation module on the remote computing device in at least one remote computing device.
[0023] The first security profile may be output via a communication interface of the computing device for transmission to at least one remote computing device including a first data packet generation module.
[0024] The second security profile may include at least one security parameter associated with the corresponding instruction, and the second data packet generation module is implemented on the computing device, and the method also includes: for each security parameter of the at least one security parameter associated with the corresponding instruction, the second data packet generation module executes the instruction associated with the security parameter to obtain a value in the second value set and uses the obtained value to set a configurable value of the security parameter.
[0025] The second security profile may include multiple security parameters each associated with a corresponding instruction, and the second data packet generation module is distributed on multiple computing devices, the multiple computing devices include the computing device and at least one remote computing device, the method also includes: outputting the second security profile to a component of the second data packet generation module on the computing device; for one or more security parameters among the multiple security parameters each associated with the corresponding instruction, the component of the second data packet generation module: (i) executes the instruction associated with the security parameter to obtain a value in a second value set and uses the obtained value to set a configurable value of the security parameter; and then (ii) outputs the second security profile to another component of the second data packet generation module on the remote computing device in at least one remote computing device.
[0026] The second security profile may be output via a communication interface of the computing device for transmission to at least one remote computing device including a second data packet generation module.
[0027] The first data packet generation module may be identical to the second data packet generation module, and the first device programming module may be identical to the second device programming module.
[0028] The first data packet generation module and the second data packet generation module may be separate modules, and the first device programming module and the second device programming module may be separate modules.
[0029] The method may also include a data packet generation module for instructing the following operations: receiving application software; generating a programming data packet based on a generated security profile and the application software, the generated security profile corresponding to a first security profile or a second security profile; encrypting the programming data packet using a transmission encryption key to generate an encrypted programming data packet; and outputting the encrypted programming data packet to a device programming module for programming at least one target device, the device programming module corresponding to a first device programming module or a second device programming module.
[0030] The base security profile may define at least one security parameter having a non-configurable value.
[0031] According to another aspect of the present disclosure, a computer program product for providing a security profile for programming at least one target device is provided, the program product comprising code embodied on a computer-readable medium and configured to perform the above method when executed on a processing device of a computing device.
[0032] The code may be provided on a carrier such as a disk, CD- or DVD-ROM, a programmed memory (e.g., a non-volatile memory (e.g., flash memory) or a read-only memory (firmware)). The code (and / or data) used to implement embodiments of the invention may include source code, object code or executable code, or assembly code in a conventional programming language (interpreted or compiled) such as C. As will be appreciated by those skilled in the art, such code and / or data may be distributed among a plurality of coupled components that communicate with each other.
[0033] According to another aspect of the present disclosure, a computing device for providing a security profile for programming at least one target device is provided, the computing device comprising: an input device; and a security profile generation module, the security profile generation module being configured to: obtain a basic security profile, the basic security profile defining at least one security parameter having a configurable value; in response to receiving an input from a user via the input device, generate a first security profile based on the basic security profile, wherein generating the first security profile comprises: for each security parameter of at least one security parameter, the security profile generation module assigning a value in a first value set to the security parameter by: (i) obtaining a value in the first value set from a first data storage location coupled to the computing device and setting a configurable value of the security parameter using the obtained value; or (ii) associating the security parameter with an instruction for obtaining a value in the first value set and setting a configurable value of the security parameter using the obtained value, the instruction being selected from one or more of the following: a plurality of instructions; in response to receiving additional input from a user via the input device, generating a second security profile based on the basic security profile, wherein generating the second security profile comprises: for each security parameter of at least one security parameter, the security profile generation module assigning a value in a second value set to the security parameter by: (i) obtaining a value in the second value set from a second data storage location coupled to the computing device and setting a configurable value of the security parameter using the obtained value; or (ii) associating the security parameter with an instruction for obtaining a value in the second value set and setting a configurable value of the security parameter using the obtained value, the instruction being selected from the one or more instructions, wherein the second value set is different from the first value set; outputting the first security profile for programming at least one target device for use by a first type of user; and outputting the second security profile for programming at least one target device for use by a second type of user, the second type of user being different from the first type of user.
[0034] These and other aspects will be apparent from the embodiments described below.The scope of the present disclosure is not intended to be limited by this summary nor to implementations necessary to solve any or all disadvantages noted. BRIEF DESCRIPTION OF THE DRAWINGS
[0035] Some preferred embodiments of the present disclosure will now be described, by way of example only, and with reference to the accompanying drawings, in which:
[0036] Figure 1 A system for programming a target device is shown;
[0037] Figure 2 A schematic block diagram of a user terminal is shown;
[0038] Figure 3 A schematic block diagram showing an example basic security profile; and
[0039] Figure 4 is a flow chart of a process for providing a security profile for programming at least one target device. DETAILED DESCRIPTION
[0040] During the development of application software, it may be necessary to change the security parameters associated with the application software to enable debugging or testing of the application software. For example, additional interfaces (e.g., USB or serial) that allow detailed progress information to be extracted from the device may be enabled, thereby allowing identification and diagnosis of faults in the application software. In addition, the password protection of the software image can use an alternative certificate chain hierarchy so that only the target device in the company's own business premises can load the development and test versions of these software images. In another example, the password key of the certificate chain hierarchy used to develop the application software code may need to be changed during the production phase. This advantageously prevents developers from accessing the password key to be programmed into the target device, thereby preventing any malicious attempts to damage the security of the target device. For example, by preventing developers from accessing the password key to be programmed into the target device, any malicious attempts to program more than the agreed number of target devices are prevented. The extra devices generated by programming more than the agreed number are called cloned devices. Cloned devices may have the effect of degrading the capabilities of genuine (i.e., non-cloned) target devices because servers designated to communicate with genuine target devices may become overburdened with requests from cloned (i.e., non-genuine) devices, which may consume the server's computing resources in the process of repairing, updating, or maintaining the cloned devices.
[0041] Embodiments of the present disclosure enable security information required to configure a target device to be easily and accurately changed to provide efficient programming of the target device.
[0042] Embodiments will now be described by way of example only.
[0043] First reference Figure 1 , Figure 1A system 100 for programming a target device is shown. The term "target device" is used herein to refer to a programmable device (eg, a microprocessor, a microcontroller, etc.).
[0044] The system 100 includes a security profile generation module 102. The security profile generation module 102 is a component of a user terminal operated by security personnel 105. The security profile generation module 102 may be coupled (via a wired or wireless connection) to a secure data storage 104.
[0045] Figure 2 A user terminal 200 is shown being operated by security personnel 105. The user terminal 102 includes a central processing unit ("CPU") 202, an input device 210 (e.g., a keyboard, a mouse, a touch-sensitive display, a touchpad, and / or a microphone), and a display 212 such as a screen or a touch screen is connected to the central processing unit 202. The CPU 202 is connected to a communication interface 208 for wired or wireless communication with an external computing device. The user terminal 200 also includes a memory 206 for storing data as is known in the art. The memory 206 may be a permanent memory, such as a ROM. Alternatively, the memory 206 may be a temporary memory, such as a RAM. The memory 206 is a non-secure data storage because it stores data in plain text (e.g., in an unencrypted form).
[0046] Figure 2 Also shown is an operating system ("OS") 204 executing on the CPU 202. Running on top of the OS 204 is the security profile generation module 102. The security profile generation module 102 provides a user interface displayed on the display 212 for the security personnel 105 to interact with the security profile generation module 102. Once launched, the security personnel 105 can make appropriate selections by interacting with the user interface provided by the security profile generation module 102 using one or more input devices 210.
[0047] like Figure 2 As shown, the user terminal 200 may be coupled to a secure data storage 104. The secure data storage 104 may be, for example, a hardware security module (HSM).
[0048] The security profile generation module 102 is configured to generate a security profile for use in programming a target device by modifying a basic security profile in response to input from the security personnel 105. The term "security profile" is used herein to refer to a profile that can be stored in a memory of the device programming module 122 by the device programming module 122 and from which information is queried and extracted in order to program the target device. The term "basic security profile" is used herein to refer to a profile used to generate a security profile. This profile used to generate a security profile is referred to herein as a "basic" security profile because it is used as a template form from which different security profiles can be generated. Therefore, the basic security profile can be regarded as a basic security template.
[0049] The basic security profile, described in more detail below, defines a plurality of security parameters for configuring a target device, wherein at least one security parameter has a configurable value. The basic security profile may also additionally define at least one security parameter having a non-configurable value. The basic security profile is displayed in a user interface of the security profile generation module 102, which is displayed on the display 212. The basic security profile explicitly indicates which security parameters in the basic security profile must be configured by the security personnel 105 before a security profile can be generated for programming the target device.
[0050] To generate a security profile, each security parameter having a configurable value is assigned a value (which may include letters, numbers and / or symbols) by the security personnel 105 interacting with a user interface provided by the security profile generation module 102 .
[0051] Each security profile generated by the security profile generation module 102 is generated based on the same basic security profile with a different value set, where the different value set is used to assign values to security parameters with configurable values in the basic security profile to generate the corresponding security profile. Reference to "different value sets" is used herein to refer to value sets having at least one value that is different between the two sets. That is, a first value set used to generate a first security profile may have one or more common values with a different value set used to generate a second security profile.
[0052] The security personnel 105 interacts with the user interface provided by the security profile generation module 102 to assign a value to each security parameter having a configurable value in the basic security profile to generate a security profile.
[0053] The security personnel 105 assigns a value to each security parameter profile having a configurable value by: (i) obtaining the value from a data storage location coupled to the user terminal 200 (e.g., from the memory 206 or the secure data storage 104) and setting the configurable value of the security parameter using the obtained value; or (ii) associating the security parameter with an instruction for obtaining the value and setting the configurable value of the security parameter using the obtained value.
[0054] One example security profile that security profile generation module 102 may generate is development profile 106. Security personnel 105 use development value sets to assign values to security parameters that have configurable values in a base security profile.
[0055] like Figure 1 As shown, the security configuration file generation module 102 is configured to send the development configuration file 106 to the application generation module 110. The application generation module 110 is a component of a user terminal operated by a developer 108, who develops application software 112 to be deployed on a target device. The developer 108 uses the development configuration file 106 during the development of the application software 112. Once written, the application generation module 110 outputs both the development configuration file 106 and the application software 112 to the development data package generation module 126.
[0056] Once development data packet generation module 126 receives development configuration file 106, development data packet generation module 126 is configured to process development configuration file 106 to determine whether there are any security parameters associated with instructions (rather than actual values) in development configuration file 106. For each security parameter in development configuration file 106 that is associated with an instruction, development data packet generation module 126 is configured to execute the instruction to obtain a value for the security parameter and to set a configurable value for the security parameter using the obtained value. In other words, development data packet generation module 126 is configured to "populate" development configuration file 106 so that each security parameter in development configuration file 106 is associated with a value.
[0057] Once this is done, the development data package generation module 126 is configured to generate a development programming data package 130 to send to a development device programming module 132. The development programming data package 130 includes the application software 112 and the development configuration file 106 for programming the target device during the development phase (where each security parameter in the development configuration file 106 has an associated value). The development device programming module 132 is implemented on the computing device and is used to program the application software 112 onto the target device and program the security information onto the target device using the development configuration file 106 in the development programming data package 130.
[0058] Development data packet generation module 126 may be implemented on one or more of: (i) a user terminal operated by developer 108; (ii) one or more independent computing devices (different from the user terminal operated by developer 108 and the computing device including development device programming module 132); and (iii) a computing device including development device programming module 132. Expressed in another way, development data packet generation module 126 may be implemented on a single computing device or distributed across multiple computing devices.
[0059] Once the development phase is complete, the security profile generation module 102 is configured to generate one or more additional security profiles 114 .
[0060] The security profile generation module 102 is configured to send the generated security profile 114 to the data packet generation module 116. The generated security profile 114 is used to program the target device. The data packet generation module 116 also receives the application software 112, which may come from the developer 108 (e.g., Figure 1 As shown) operated by a user terminal or from the user terminal 200 (if once written, the application generation module 110 returns the application software 112 to the user terminal 200).
[0061] Once data packet generation module 116 receives security configuration file 114, data packet generation module 116 is configured to process security configuration file 114 to determine whether there are any security parameters associated with instructions (rather than actual values) in security configuration file 114. For each security parameter in security configuration file 114 that is associated with an instruction, data packet generation module 116 is configured to execute the instruction to obtain a value for the security parameter and to set a configurable value for the security parameter using the obtained value. In other words, data packet generation module 116 is configured to "populate" security configuration file 114 so that each security parameter in development configuration file 106 is associated with a value.
[0062] Once this is done, the data packet generation module 116 is configured to generate a programming data packet 120 for sending to a device programming module 122. The programming data packet 120 includes the application software 112 and the generated security configuration file 114 (where each security parameter in the security configuration file 114 has an associated value). The device programming module 122 is implemented on the computing device and is used to program the application software 112 onto the target device and program security information onto the target device using the generated security configuration file 114 in the programming data packet 120.
[0063] Data packet generation module 116 may be implemented on one or more of: (i) user terminal 200; (ii) one or more independent computing devices (different from both user terminal 200 and the computing device including device programming module 122); and (iii) a computing device including device programming module 122. Expressed in another way, development data packet generation module 116 may be implemented on a single computing device or distributed across multiple computing devices.
[0064] The generated security profile 114 may be a test profile. The security personnel 105 uses a test value set to assign values to security parameters with configurable values in the basic security profile to generate a test profile. The test value set is different from the development value set. In this example, the data packet generation module 116 is configured to generate a test data packet for sending it to the device programming module 122.
[0065] Alternatively, the generated security profile 114 may be a production profile. The security personnel 105 uses the production value set to assign values to security parameters with configurable values in the basic security profile to generate the production profile. The production value set is different from the development value set and the test value set. In this example, the data packet generation module 116 is configured to generate a production data packet for sending it to the device programming module 122.
[0066] The data packet generation module 116 can encrypt the generated programming data packet 120 with a cryptographic key (referred to as a "transmission encryption key" elsewhere in this document) before sending it to prevent unauthorized interception of the programming data packet 120 during transmission from the data packet generation module 116 to the device programming module 122.
[0067] The cryptographic key used to encrypt the programming data packet 120 may be a symmetric cryptographic key. In this example, the data packet generation module 116 stores the symmetric cryptographic key used to encrypt the programming data packet 120 in the secure data memory 118, and the device programming module 122 stores the symmetric cryptographic key used to decrypt the encrypted programming data packet 120 in the secure data memory 124. Alternatively, the cryptographic key used to encrypt the programming data packet 120 may be a public key in a linked public / private key pair. In this example, the data packet generation module 116 may store the cryptographic key (public key) used to encrypt the programming data packet 120 in the memory 206 (in an embodiment where the data packet generation module 116 is implemented on the user terminal 200) or the secure data memory 118, and the device programming module 122 stores the private key in the linked public / private key pair in the secure data memory 124. The private key is used to decrypt the encrypted programming data packet 120. Note that the decryption key in the above example may be in the target device itself - such as where the programming data packet 120 includes an update to the application software 112 rather than the application software 112 originally programmed into the device.
[0068] For example, in the example scenario where the security profile generation module 102 generates a production profile using a basic security profile, it is desired to encrypt the production data packet using a transport encryption key before sending it to the device programming module 122 to prevent unauthorized interception of the production profile during transmission from the data packet generation module 116 to the device programming module 122.
[0069] like Figure 1 As shown, the security profile generation module 102 is associated with the secure data store 104 .
[0070] Development data packet generation module 116 is associated with data storage 128, while development device programming module 122 is associated with data storage 134. Data packet generation module 116 is associated with secure data storage 118, while device programming module 122 is associated with secure data storage 124.
[0071] The term "secure data storage" is used herein to refer to: (i) a data storage that stores data in an encrypted form, for example, the secure data storage may be a hardware security module (HSM); or (ii) a data storage that stores data in an unencrypted form (i.e., plain text), but the data storage is located in a secure environment, for example, the data storage is located in a locked room to which only a select number of personnel have access.
[0072] As discussed above, in some embodiments, the data packet generation module 116 is implemented on one or more computing devices remote from the user terminal 200. In these embodiments, the security profile generation module 102 is configured to send the generated security profile 114 to the data packet generation module 116 on the remote computing device via the communication interface 208. The communication link between the user terminal 200 and the remote computing device including the data packet generation module 116 may be a wired and / or wireless communication link.
[0073] The security profile generation module 102 may encrypt the generated security profile 114 with a cryptographic key before transmission to prevent unauthorized interception of the security profile 114 during transmission from the user terminal 200 to the remote computing device including the data packet generation module 116 .
[0074] The cryptographic key used to encrypt the generated security profile 114 may be a symmetric cryptographic key. In this example, the security profile generation module 102 stores the symmetric cryptographic key used to encrypt the generated security profile in the secure data storage 104, and the data packet generation module 116 stores the symmetric cryptographic key used to decrypt the encrypted security profile in the secure data storage 118. Alternatively, the cryptographic key used to encrypt the generated security profile 114 may be a public key in a linked public / private key pair. In this example, the security profile generation module 102 may store the cryptographic key (public key) used to encrypt the generated security profile in the memory 206 or the secure data storage 104, and the data packet generation module 116 stores the private key in the linked public / private key pair in the secure data storage 118. The private key is used to decrypt the encrypted security profile.
[0075] Reference now Figure 3 , Figure 3 An example basic security profile used to generate a security profile in an embodiment of the present disclosure is shown.
[0076] The basic security profile 300 defines a number of security parameters.
[0077] The plurality of security parameters in the basic security profile 300 include at least one security parameter having a configurable value. That is, when the security personnel 105 interacts with the user interface provided by the security profile generation module 102, the security personnel 105 can modify the values associated with these specific security parameters in the basic security profile 300.
[0078] Therefore, for security parameters having configurable values in the basic security profile 300, the security personnel 105 is able to modify the basic security profile 300 using a first set of values to generate a first security profile for programming a target device for use by a first type of user (e.g., a development profile for programming a target device for developers to check the operation of their application software), wherein the first set of values is to be substituted into and / or referenced in the basic security profile; and then, using the same basic security profile 300, generate different security profiles for programming the target device for use by different types of users (e.g., a production profile for programming the target device for use by end users of the target device) using different sets of values to be substituted into and / or referenced in the basic security profile.
[0079] The security parameters with configurable values in the basic security profile 300 may include one or more of the following: at least one digital certificate parameter associated with a digital certificate for programming onto a target device; at least one cryptographic key parameter associated with a cryptographic key for programming onto at least one target device; at least one processor parameter for programming a processing unit on each target device in at least one target device.
[0080] As noted above, the security parameters having configurable values in the base security profile 300 may include at least one digital certificate parameter associated with a digital certificate for programming onto a target device.
[0081] As is well known in the art, digital certificates are verified using certificate chains.
[0082] Digital certificate parameters having configurable values are associated with one or more certificate chains 302. The certificate chain 302 typically includes a root certificate 304, one or more intermediate certificates 308, and one or more device certificates 312.
[0083] Each target device is programmed with at least a unique device certificate 312 , and may additionally be programmed with one or more intermediate certificates 308 and / or a root certificate 304 .
[0084] The digital certificate parameters with configurable values in the base security profile 300 are associated with one or more certificates to be programmed onto the target device.
[0085] That is, the basic security profile 300 includes a device certificate parameter 314 having a configurable value in the basic security profile 300, the device certificate parameter 314 being associated with the device certificate 312 to be programmed onto the target device. The basic security profile 300 may additionally include an intermediate certificate parameter 310 having a configurable value in the basic security profile 300 and / or a root certificate parameter 306 having a configurable value in the basic security profile 300, the intermediate certificate parameter 310 being associated with the intermediate certificate 308 to be programmed onto the target device, the root certificate parameter 306 being associated with the root certificate 304 to be programmed onto the target device.
[0086] Each of the device certificate parameters 314, the intermediate certificate parameters 310, and the root certificate parameters 306 may include one or more of the following: (i) an issuer name parameter having a configurable value that defines the issuer of the digital certificate; (ii) a validity period parameter having a configurable value that defines the validity period of the digital certificate; (iii) a subject name parameter having a configurable value that defines the subject of the digital certificate; (iv) a public key parameter having a configurable value that defines the public key of the digital certificate; (v) a device serial number parameter having a configurable value that defines the target device onto which the digital certificate is to be programmed; and (vi) a certificate signature parameter having a configurable value that defines the signature of the digital certificate. It will be understood that these are merely example certificate parameters in the basic security profile 300 that may have configurable values, and that embodiments extend to other certificate parameters not mentioned herein.
[0087] As an example, when using the security profile generation module 102 to generate a development profile based on the basic security profile 300, the security personnel 105 can assign a value to the validity period parameter 314, which indicates a limited validity period (e.g., one week or one month) of the device certificate to be programmed on the target device, and when using the security profile generation module 102 to generate a production profile based on the basic security profile 300, the security personnel 105 can assign a value to the validity period parameter 314, which indicates an unlimited validity period of the device certificate to be programmed on the target device, such as a device certificate.
[0088] Additionally or alternatively, the base security profile 300 may include cryptographic key information 316 for deploying one or more cryptographic keys onto each target device. For each target device, the cryptographic key information 316 includes at least one cryptographic key parameter 322 associated with a cryptographic key for programming onto the target device.
[0089] At least one cryptographic key parameter 322 associated with the target device may include a symmetric key parameter having a configurable value that defines a symmetric key for programming onto the target device for use by the target device when communicating with other computing devices. At least one cryptographic key parameter 322 associated with the target device may include a private key parameter having a configurable value that defines a private key in an asymmetric key pair for programming onto the target device for use by the target device when decrypting information received from other computing devices.
[0090] Additionally or alternatively, the base security configuration file 300 may include device processor configuration information 320 for configuring security settings of a processing unit on each target device. The device processor configuration information 320 includes at least one processor parameter 322 having a configurable value for programming a processing unit on each target device.
[0091] At least one processor parameter 322 may include one or more of the following: (i) a debug interface parameter having a configurable value that defines whether a debug interface on the processing unit is to be enabled or disabled; (ii) a JTAG interface parameter having a configurable value that defines whether a JTAG interface on the processing unit is to be enabled or disabled; (iii) a USB interface parameter having a configurable value that defines whether a USB interface on the processing unit is to be enabled or disabled; (iv) a serial interface parameter having a configurable value that defines whether a serial interface on the processing unit is to be enabled or disabled; (v) a networking interface parameter having a configurable value that defines whether a networking interface on the processing unit is to be enabled or disabled; (vi) a feature enablement parameter having a configurable value that defines whether a feature for application software executed on the processing unit is to be enabled or disabled; and (vii) a readout parameter (e.g., a lock parameter) having a configurable value that defines whether external access to a memory coupled to the processing unit is to be enabled or disabled.
[0092] As an example, when using the security profile generation module 102 to generate a development profile based on the basic security profile 300, the security personnel 105 can assign the configurable value of the debug interface parameter to a value that enables the debug interface on the processing unit (to allow developers to perform debugging operations on the application software programmed onto the target device), and when using the security profile generation module 102 to generate a production profile based on the basic security profile 300, the security personnel 105 can assign the configurable value of the debug interface parameter to a value that disables the debug interface on the processing unit (to prevent the end user from performing debugging operations on the application software programmed onto the target device).
[0093] The plurality of security parameters in the basic security profile 300 may include at least one security parameter having a non-configurable value. That is, when the security personnel 105 interacts with the user interface provided by the security profile generation module 102, the security personnel 105 cannot modify the values associated with these specific security parameters in the basic security profile 300. That is, whenever a security profile is generated using the basic security profile 300, the security profile includes the security parameters having these non-configurable values.
[0094] Figure 4 is a flow chart of a process for providing a security profile for programming at least one target device. Figure 4 The steps shown are implemented by the security profile generation module 102 .
[0095] In step S402, the security profile generation module 102 obtains the basic security profile 300. The security profile generation module 102 may obtain the basic security profile 300 by retrieving the basic security profile 300 from the previously created storage 206. Alternatively, the basic security profile 300 may be obtained by: in response to the security personnel 105 making appropriate selections by interacting with a user interface provided by the security profile generation module 102 using one or more input devices 210, the basic security profile 300 is generated.
[0096] At step S404 , in response to determining whether a value set to be substituted into and / or referenced in the basic security profile 300 has been input by the security personnel 105 , the security profile generation module 102 determines whether to generate a security profile.
[0097] If the security personnel 105 has entered a value set to be substituted into the basic security profile 300 and / or referenced in the basic security profile 300, the process proceeds to step S406, where the security personnel 105 interacts with the user interface provided by the security profile generation module 102 to assign values to each security parameter in the basic security profile that has a configurable value, thereby generating a security profile, which may be, for example, a development profile, a test profile, or a production profile. It will be understood that reference to these types of security profiles is only for illustrative purposes, and the security profile generation module 102 may generate additional or alternative types of security profiles based on the basic security profile 300.
[0098] The security personnel 105 assigns a value to each security parameter having a configurable value in the basic security profile 300 by: (i) retrieving the value from a data storage location coupled to the user terminal 200 (e.g., from the memory 206 or the secure data storage 104) and setting the configurable value of the security parameter using the retrieved value; or (ii) associating the security parameter with an instruction for obtaining the value and setting the configurable value of the security parameter using the obtained value.
[0099] Depending on the type of security profile being generated, development data package generation module 126 or data package generation module 116 may execute any instructions associated with the security parameters in the generated security profile.
[0100] The instructions entered by security personnel 105 may take a variety of forms.
[0101] One example of an instruction that may be associated with a security parameter having a configurable value in a basic security profile is an instruction for the data packet generation module to randomly generate a value for the security parameter. For example, when generating a test and / or production profile, the security personnel 105 may choose to associate a public key parameter (in the basic security profile) associated with the device certificate 312 for programming onto one of the target devices with an instruction for the data packet generation module 116 to randomly generate a public / private key pair and set the public key parameter using the value of the randomly generated public key.
[0102] Another example of an instruction that may be associated with a security parameter having a configurable value in a base security profile is an instruction to the data packet generation module to obtain a value from a remote data store, the instruction including an identifier of the remote data store and a data storage location on the remote data store. For example, when generating a development profile 106, the remote data store referenced in the instruction to the development data packet generation module 126 may be the data store 128 or the data store 134. When generating a test and / or production profile, the remote data store referenced in the instruction to the data packet generation module 116 may be the secure data store 118 (in an embodiment where the data packet generation module 116 is implemented on a computing device remote from the user terminal 200) or the secure data store 124.
[0103] Yet another example of an instruction that may be associated with a security parameter having a configurable value in a basic security profile is an instruction for the data packet generation module to generate a value for a security parameter using values assigned to one or more other security parameters in the basic security profile. For example, the security personnel 105 may choose to associate a signature parameter (in the basic security profile) associated with a device certificate 312 for programming onto one of the target devices with an instruction for the data packet generation module to encrypt multiple security parameters associated with the device certificate 312 (including a public key parameter associated with the device certificate 312) using a value assigned to a private key parameter associated with the intermediate certificate 308 (at a level immediately above the device certificate 312 in the certificate chain 302) to generate a value for the signature parameter.
[0104] Yet another example of an instruction that may be associated with a security parameter having a configurable value in a basic security profile is an instruction to the data packet generation module to generate a value for the security parameter based on a date or time at which the instruction was executed on (by) the data packet generation module. For example, the security parameter may be a certificate creation date parameter or a certificate creation time parameter associated with a device certificate 312 for programming onto one of the target devices. It should be understood that in this example, the instruction indicates that the data packet generation module is to generate a value for the security parameter without using values assigned to one or more other security parameters in the basic security profile.
[0105] Yet another example of an instruction that may be associated with a security parameter having a configurable value in a base security profile is an instruction for the data packet generation module to retrieve a value from a target device that is being programmed by communicating with a device programming module 122, 132. For example, when generating a development profile, security personnel 105 may choose to associate a device serial number parameter associated with a device certificate 312 for programming onto a target device with an instruction for development data packet generation module 126 to request development device programmer 132 to read the device serial number that is hard-coded on the device and feed the device serial number back to development data packet generation module 126, and development data packet generation module 126 to set the value of the device serial number parameter in device certificate 312 to the read device serial number. Similarly, when generating a production configuration file, the security personnel 105 may choose to associate the device serial number parameter associated with the device certificate 312 used to be programmed onto the target device with the following instructions: the data packet generation module 116 requests the device programming module 122 to read the device serial number hard-coded on the device and feed the device serial number back to the data packet generation module 116, and the data packet generation module 126 sets the value of the device serial number parameter in the device certificate 312 to the device serial number read.
[0106] Once the security configuration file is generated, the security configuration file generation module 102 outputs the security configuration file in step S408 for programming at least one target device.
[0107] from Figure 4 It is obvious that another security profile can be generated subsequently. This other security profile can be used to program the same target device that was programmed using the previously generated security profile. Alternatively, this other security profile can be used to program a target device different from the target device that was programmed using the previously generated security profile.
[0108] from Figure 4 It is apparent from the feedback loop that when another security profile is to be generated, the security profile generation module 102 uses the same basic security profile 300 to generate the other security profile. Therefore, the basic security profile 300 clearly indicates which security parameter(s) with configurable values in the basic security profile 300 must be assigned values before the security profile can be generated. In the basic security profile 300, the security parameters with configurable values can be associated with undefined values to clearly indicate to the security personnel 105 that the security parameters must be assigned values before the security profile can be generated. In addition, the security parameters with non-configurable values in the basic security profile 300 prevent accidental modification of these security parameters, which may lead to programming errors.
[0109] Typically, any function described herein can be implemented using software, firmware, hardware (e.g., fixed logic circuits), or a combination of these implementations. The term "module" as used herein generally refers to software, firmware, hardware, or a combination thereof. In the case of software implementation, a module represents a program code that performs a specified task when executed on a processor (e.g., CPU). The program code can be stored in one or more computer-readable memory devices. The features of the technology described below are platform-independent, meaning that these technologies can be implemented on various commercial computing platforms with various processors.
[0110] Although the present disclosure has been described according to the preferred embodiments described above, it should be understood that these embodiments are illustrative only and the claims are not limited to those embodiments. Those skilled in the art will be able to make modifications and alternatives based on the present disclosure, which are considered to fall within the scope of the appended claims. Each feature disclosed or shown in this specification may be incorporated into the present disclosure alone or in any appropriate combination with any other features disclosed or shown herein.
Claims
1. A method of providing a first security profile for programming a first target device and a second security profile for programming a second target device, the method being implemented on a computing device and comprising: obtaining a basic security configuration file, the basic security configuration file defining at least one security parameter having a configurable value; In response to receiving input from a user via an input device of the computing device, generating the first security profile based on the base security profile, wherein generating the first security profile comprises: for each of the at least one security parameter, assigning a value from the first value set to the security parameter by associating the security parameter with instructions for obtaining a value from the first value set and setting a configurable value of the security parameter using the obtained value, the instructions being selected from one or more instructions, wherein the one or more instructions comprise at least one of the following: instructions for randomly generating said value; instructions for obtaining the value from a remote data store, the instructions for obtaining the value from a remote data store comprising an identifier of the remote data store and a data storage location on the remote data store; instructions for generating said value using at least one value of at least one further security parameter assigned to said base security profile; instructions for generating the value based on a time, the time being the time at which the instructions for generating the value based on the time are executed; and instructions for obtaining the value from the first target device or the second target device; generating a second security profile based on the base security profile in response to receiving additional input from a user via the input device, wherein generating the second security profile comprises: for each of the at least one security parameter, assigning a value from a second value set to the security parameter by: (i) retrieving the value from the second value set from a second data storage location coupled to the computing device and setting a configurable value of the security parameter using the retrieved value; or (ii) associating the security parameter with instructions for obtaining the value from the second value set and setting the configurable value of the security parameter using the retrieved value, the instructions being selected from the one or more instructions, wherein the second value set is different from the first value set; outputting the first security configuration file for use in programming the first target device for use by a first type of user; and The second security configuration file is output for use in programming the second target device for use by a second type of user, the second type of user being different from the first type of user.
2. The method according to claim 1, wherein: The at least one security parameter includes at least one digital certificate parameter associated with a digital certificate for programming onto at least one of the first target device and the second target device.
3. The method according to claim 2, wherein: The at least one digital certificate parameter includes one or more of the following: an issuer name parameter with a configurable value defining the issuer of said digital certificate; a validity period parameter with a configurable value defining the validity period of the digital certificate; a subject name parameter with a configurable value defining the subject of the digital certificate; public key parameters having configurable values defining a public key of the digital certificate; defining a device serial number parameter having a configurable value for at least one of the first target device and the second target device onto which the digital certificate is to be programmed; as well as A certificate signing parameter with configurable values defining the signature of the digital certificate.
4. The method according to claim 1, wherein: The at least one security parameter includes at least one cryptographic key parameter associated with a cryptographic key for programming onto at least one of the first target device and the second target device.
5. The method according to claim 4, wherein: The at least one cryptographic key parameter includes one or more of the following: defining at least one symmetric key parameter having a configurable value of the symmetric key; and At least one private key parameter having a configurable value is defined for a private key in an asymmetric key pair.
6. The method according to any one of claims 1 to 5, wherein: The at least one security parameter includes at least one processor parameter used to program a processing unit on each of the first target device and the second target device.
7. The method according to claim 6, wherein: The at least one processor parameter includes one or more of the following: a debug interface parameter having a configurable value defining whether to enable or disable a debug interface on the processing unit; a JTAG interface parameter having a configurable value defining whether to enable or disable a JTAG interface on the processing unit; a USB interface parameter having a configurable value defining whether to enable or disable a USB interface on the processing unit; a serial interface parameter having a configurable value defining whether to enable or disable a serial interface on the processing unit; a networking interface parameter having a configurable value defining whether to enable or disable a networking interface on the processing unit; a feature enablement parameter having a configurable value defining whether to enable or disable a feature for application software executing on the processing unit; as well as A readout parameter having a configurable value defines whether external access to a memory coupled to the processing unit is to be enabled or disabled.
8. The method according to any one of claims 1 to 5, wherein: A data store is coupled to the computing device, the data store comprising a first data storage location and a second data storage location.
9. The method according to claim 8, wherein: The data storage is a secure data storage.
10. The method according to any one of claims 1 to 5, wherein: A non-secure data memory and a secure data memory are coupled to the computing device, the non-secure data memory including a first data storage location and the secure data memory including a second data storage location.
11. The method according to claim 9, wherein: The secure data storage is a hardware security module.
12. The method according to any one of claims 1 to 5, wherein: The method comprises: outputting the first security configuration file to transmit the first security configuration file to a first data packet generation module, the first data packet generation module being configured to generate a first programming data packet based on the first security configuration file to output the first programming data packet to a first device programming module for programming the first target device; and The second security configuration file is output to transmit the second security configuration file to a second data packet generation module, and the second data packet generation module is configured to generate a second programming data packet to output the second programming data packet to a second device programming module for programming the second target device.
13. The method according to claim 12, wherein: The first security profile includes at least one security parameter associated with the corresponding instruction, and the first data packet generation module is implemented on the computing device, and the method further includes: For each of the at least one security parameter associated with a corresponding instruction, the first data packet generation module executes the instruction associated with the security parameter to obtain the value in the first value set and sets a configurable value of the security parameter using the obtained value.
14. The method according to claim 12, wherein: The first security profile includes a plurality of security parameters each associated with a corresponding instruction, and the first data packet generation module is distributed on a plurality of computing devices, the plurality of computing devices including the computing device and at least one remote computing device, the method further comprising: a component that outputs the first security profile to the first data packet generation module on the computing device; For one or more security parameters of the plurality of security parameters each associated with a corresponding instruction, the component of the first data packet generation module: (i) executes the instruction associated with the security parameter to obtain the value in the first value set and sets a configurable value of the security parameter using the obtained value; and then (ii) outputs the first security configuration file to another component of the first data packet generation module on a remote computing device in the at least one remote computing device.
15. The method according to claim 12, wherein: The first security profile is output via a communication interface of the computing device to transmit the first security profile to at least one remote computing device including the first data packet generation module.
16. The method according to claim 12, wherein: The second security profile includes at least one security parameter associated with the corresponding instruction, and the second data packet generation module is implemented on the computing device, and the method further includes: For each security parameter of the at least one security parameter associated with a corresponding instruction, the second data packet generation module executes the instruction associated with the security parameter to obtain the value in the second value set and sets a configurable value of the security parameter using the obtained value.
17. The method according to claim 12, wherein: The second security profile includes a plurality of security parameters each associated with a corresponding instruction, and the second data packet generation module is distributed on a plurality of computing devices, the plurality of computing devices including the computing device and at least one remote computing device, the method further comprising: a component that outputs the second security profile to the second data packet generation module on the computing device; For one or more security parameters of the plurality of security parameters each associated with a corresponding instruction, the component of the second data packet generation module: (i) executes the instruction associated with the security parameter to obtain the value in the second value set and sets the configurable value of the security parameter using the obtained value; and then (ii) outputs the second security configuration file to another component of the second data packet generation module on a remote computing device in the at least one remote computing device.
18. The method according to claim 12, wherein: The second security profile is output via a communication interface of the computing device to transmit the second security profile to at least one remote computing device including the second data packet generation module.
19. The method according to claim 12, wherein: The first data packet generation module is identical to the second data packet generation module, and the first device programming module is identical to the second device programming module.
20. The method according to claim 12, wherein: The first data packet generation module and the second data packet generation module are separate modules, and the first device programming module and the second device programming module are separate modules.
21. The method according to claim 13, wherein: The method further includes: the data packet generation module performs the following operations: receiving application software; generating a programming data packet based on the generated security profile and the application software, the generated security profile corresponding to the first security profile or the second security profile; encrypting the programming data packet using a transmission encryption key to generate an encrypted programming data packet; and The encrypted programming data packet is output to a device programming module for programming at least one of the first target device and the second target device, the device programming module corresponding to the first device programming module or the second device programming module.
22. The method according to any one of claims 1 to 5, wherein: The basic security profile defines at least one security parameter having a non-configurable value.
23. A computer program product for providing a first security profile for programming a first target device and a second security profile for programming a second target device, the computer program product comprising code embodied on a computer-readable medium and configured to perform a method according to any preceding claim when executed on a processing device of a computing device.
24. A computing device for providing a first security profile for programming a first target device and a second security profile for programming a second target device, the computing device comprising: Input devices; as well as A security configuration file generation module, wherein the security configuration file generation module is configured to: obtaining a basic security configuration file, the basic security configuration file defining at least one security parameter having a configurable value; In response to receiving an input from a user via the input device, generating the first security profile based on the basic security profile, wherein generating the first security profile comprises: for each of the at least one security parameter, the security profile generation module assigning a value in the first value set to the security parameter by associating the security parameter with instructions for obtaining a value in the first value set and setting a configurable value of the security parameter using the obtained value, the instructions being selected from one or more instructions, wherein the one or more instructions include at least one of the following: instructions for randomly generating said value; instructions for obtaining the value from a remote data store, the instructions for obtaining the value from a remote data store comprising an identifier of the remote data store and a data storage location on the remote data store; instructions for generating said value using at least one value of at least one further security parameter assigned to said base security profile; instructions for generating the value based on a time, the time being the time at which the instructions for generating the value based on the time are executed; and instructions for obtaining the value from the first target device or the second target device; generating a second security profile based on the base security profile in response to receiving additional input from a user via the input device, wherein generating the second security profile comprises: for each of the at least one security parameter, the security profile generation module assigning a value from a second value set to the security parameter by: (i) retrieving the value from the second value set from a second data storage location coupled to the computing device and setting a configurable value of the security parameter using the retrieved value; or (ii) associating the security parameter with instructions for obtaining the value from the second value set and setting the configurable value of the security parameter using the retrieved value, the instructions being selected from the one or more instructions, wherein the second value set is different from the first value set; outputting the first security configuration file for use in programming the first target device for use by a first type of user; and The second security configuration file is output for use in programming the second target device for use by a second type of user, the second type of user being different from the first type of user.
