Method for writing data onto an IC and system for carrying out the method
Patent Information
- Application Number
- EP2024704321
- Authority / Receiving Office
- EP · EP
- Patent Type
- Applications
- Current Assignee / Owner
- Priority Date
- 2023-02-03
- Filing Date
- 2024-01-30
- Publication Date
- 2025-12-03
AI Technical Summary
Existing methods for writing data to ICs, particularly in security-relevant applications, face risks of data exposure due to temporary storage in non-volatile memory during transmission and processing, which can be accessed by unauthorized parties, especially in connected networks.
A method involving encrypting data packets for ICs, decrypting them exclusively in volatile memory, and ensuring only volatile memory is used for storage and processing, with a separate computer machine controlling access and erasing the memory post-processing to prevent data exposure.
Enhances the security of the data writing process by preventing unauthorized access and ensuring that decrypted data is not stored in non-volatile memory, thereby reducing the risk of data exposure during and after the writing process.
Smart Images

Figure EP2024052136_08082024_PF_FP
Abstract
Description
[0001] Method for writing data to an IC and system for carrying out the method
[0002] The invention relates to a method for writing data to an IC and a system for carrying out this method.
[0003] ICs are an essential component in electronic devices. They perform a wide variety of tasks, such as receiving and evaluating data and / or executing certain actions depending on conditions that control the IC's peripherals. They can also be used to store data.
[0004] Due to increasing digitalization, such ICs also perform security-relevant tasks, such as storing personal, security-relevant data, such as smart cards, bank cards, etc., or executing security-relevant and critical actions, for example, in the automotive sector. To perform these tasks, the IC is described with a so-called image. The information used to describe an IC with personal data or to execute security-relevant actions is generally referred to as data below.
[0005] ICs can be designed as EPROM, EEPROM or similar, although the invention is not limited to this. It is important that the IC used can be written to with the data intended for it in a programming machine. When reference is made to a programming machine in this embodiment, this is to be understood as a machine with which one or more ICs can be written to, in particular programmed, at the manufacturer's site, for example in a production facility. Such programming machines are used to write to a large number of sometimes different ICs. The written ICs are then fed into further production processes, such as installation in larger modules, packaging, etc. To counteract the potential for a possible attack, the data intended for the IC, which is usually developed in a development department, must be securely transferred to a programming machine that writes to the IC(s).Data should also not be accessible to third parties at a later date—for example, after the IC has been written to. This is usually the case when the data is (temporarily) stored on non-volatile memory.
[0006] In order to securely transmit the data intended for the IC, it is usually transmitted in encrypted form and can only be decrypted with a corresponding key.
[0007] US 2007 / 0038851 A1 discloses a programming machine capable of writing safety-relevant data to an IC by the manufacturer. The safety-relevant data is stored in a volatile memory of the programming machine. This data is then used to write to an IC.
[0008] Even though this known programming machine itself cannot retrieve the data after writing to the IC due to the use of volatile memory, the data must be available in decrypted form for the programming machine to write to the IC, or rather, must be transmitted to it in decrypted form. This poses the risk that the data may be (temporarily) stored in non-volatile memory during transmission to the programming machine and subsequently be retrieved unnoticed, especially since such programming machines are typically connected to a large computer network (e.g., LAN).
[0009] Against this background, the object of the invention is to propose a method that increases the security of the process for writing data to an IC. Furthermore, the object of the invention is to propose a retrofittable system for implementing the method.
[0010] The method-related problem is solved by a method for writing data to an IC with the following steps: 1. Providing a data packet in encrypted form containing the data to be written to the IC;
[0011] 2. Loading the encrypted data packet;
[0012] 3. Decrypting the encrypted data packet and storing the decrypted data packet exclusively in a volatile memory;
[0013] 4. Providing the decrypted data packet in the volatile memory for a programming machine;
[0014] 5. Writing to one or more ICs data of the decrypted data packet intended for the IC using the programming machine;
[0015] 6. After completing the writing of the IC(s): Erase the volatile memory.
[0016] The system-related object is achieved by a system for carrying out the method according to the invention, comprising a programming machine for writing to an IC and a computer machine with a volatile memory.
[0017] Advantageous embodiments emerge from the dependent claims and the description.
[0018] The core of the invention is to decrypt the data packet in preparation for writing to the IC, but to store the decrypted data packet exclusively in a volatile memory and make it available to the programming machine from this volatile memory. This also includes storing it in multiple volatile memories, if necessary.
[0019] To facilitate understanding of the implementation of the method, the system in which the inventive method is carried out will first be explained below. It is understood that the implementation of the method according to the invention is not limited to execution on the system described below, although this is preferred. A programming machine is coupled to a computing machine. This coupling is preferably set up such that the computing machine can only interact with a specific programming machine. Methods and methods for ensuring that the computing machine can only interact with a specific programming machine are well known to those skilled in the art. The coupling between the computing machine and the programming machine increases security.Using the computer machine as a separate machine from the programming machine simplifies control over the data flow between the programming machine and the external network, since the computer machine can usually be configured more precisely than the programming machine, for example, because the executed code can be accessed more easily in the computer machine than in the programming machine. Thus, existing programming machines can also be retrofitted so that the method according to the invention can be carried out on them. The computer machine can be implemented, for example, as a PC.
[0020] The computer machine has a processing unit for executing code as well as volatile memory, such as RAM.
[0021] The computer machine and the programming machine are preferably housed in a common housing to prevent the communication between the computer machine and the programming machine from being interfered with or intercepted. Physical access to the computer machine and the physical communication lines to the programming machine is thus not possible from the outside without opening the programming machine. The system thus formed, consisting of the computer machine and the programming machine, is referred to below as the programming machine system.
[0022] It is furthermore preferably provided that all external interfaces on the programming machine system, such as USB ports, CD and / or DVD drives, serial interfaces, etc., are deactivated or sealed.
[0023] The programming machine system is embedded in a network and has access to external network participants, such as a server for retrieving and storing data or data packets. Preferably, only the computer machine is connected to this network; the programming machine is only connected to the computer machine. The computer machine can thus control the programming machine's access to the network, since there is no physical connection between the programming machine and the network; the computer machine is interposed. Control by the computer machine is carried out by means of an access controller.This access controller can allow communication between the programming machine and the network bidirectionally (then the programming machine has read / write access to the network or to its participants) or unidirectionally (then the programming machine only has read access to the network or to the network participants).
[0024] The computer machine also has a state machine controlled by the processing unit. The state machine switches between normal mode and secure mode on command. The state machine switches the access controller according to the mode: in normal mode, bidirectional communication is possible, at least to relevant services and other network participants; in secure mode, only the aforementioned unidirectional communication is possible. The computer machine masks the programming machine's access to the network. Furthermore, when the state machine switches back from secure mode to normal mode, the volatile memory associated with the computer machine is erased.
[0025] It is understood that the access controller and / or the state machine referred to here can be physically integrated into the computing unit and / or implemented in software, or the tasks of the access controller and / or the state machine can be executed by the computing unit.
[0026] In detail, the process according to the invention—partially with reference to the system described above—can be described as follows: In a first step (step 1), a data packet is provided. The data packet is in encrypted form, for example, encrypted using asymmetric encryption. This allows a development department or a customer to encrypt the data to be written to the IC from their own end. The operator of the programming machine, or rather the programming machine system, generally has the necessary keys to decrypt this data packet.
[0027] The data packet always contains the data intended for describing the IC. This typically includes an image, which serves as the basic structure for describing the IC(s), and, if necessary, process-dependent customization data with which the image can be supplemented. In this case, the data packet can also include information on how the process-dependent customization data should be inserted into the image.
[0028] The customization data can be provided specifically; however, it can also be generated locally using a customer application. It is also conceivable that this data is retrieved from an external server, preferably via a secure connection.
[0029] Operating a programming machine typically requires additional configuration data that is machine-specific and may be coordinated with the data intended for the IC. This machine-specific configuration data can also be part of the data package.
[0030] The data packet may also contain additional data. The data packet may, for example, be in the form of an archive.
[0031] In a second step (step 2), the provided data packet is loaded into the process. This is done by a processing unit, either a processing unit physically assigned to the programming machine or—preferably—by the processing unit of the computer machine mentioned in the programming machine system described above. The encrypted data packet can be located, for example, on a server in a network environment. To load the data packet, it is retrieved from the server.
[0032] In the third step (step 3), the loaded, encrypted data packet is decrypted. The decrypted data packet is stored exclusively in volatile memory. Writing to non-volatile memory, such as a hard disk, is impossible. This is because even if storage space is freed / deleted on non-volatile memory, it is still possible for an attacker to reconstruct the previously stored data, especially if only a portion of the memory is overwritten, rather than the entire memory. This is common with non-volatile memory systems.
[0033] Preferably, the volatile memory is implemented as RAM, for example, as part of the aforementioned computer. This allows decryption to be performed locally on the computer; the result is then stored exclusively in RAM.
[0034] Before step 3 or after step 3, it is preferably provided to switch the programming machine system to the secure mode already explained above in order to prevent decrypted data from being sent to the network via the programming machine.
[0035] In the fourth step (step 4), the decrypted data packet is made available in the volatile memory for the programming machine. The programming machine is thus granted access to the volatile memory.
[0036] This can be achieved, for example, by emulating a drive in the volatile memory, which is then shared with the programming machine. Emulating a drive in the volatile memory, to which the programming machine is granted access, enables easy integration of the inventive method into existing production lines. Programming machines typically access external drives to retrieve the necessary data packets, or data, to write to one or more ICs.
[0037] Preferably, the emulated drive is only enabled at the computer machine-side interface to the programming machine and not at the computer machine-side interface to an external network.
[0038] If the volatile memory is nevertheless integrated into a network that also includes network participants outside the programming machine system, it can be provided to secure or encrypt the emulated drive with a key known only to the programming machine, for example in the form of a password.
[0039] In a fifth step (step 5), the programming machine writes the data from the decrypted data packet intended for the IC(s) to one or more ICs. The writing process is performed by the programming machine in the usual way and is well known to those skilled in the art. For this purpose, one or more ICs are fed to the programming machine, for example, via a mechanical feeder, placed on a corresponding contact socket, and then written to by the programming machine.
[0040] It is preferred that the decrypted data packet, or decrypted data extracted from it, be stored only in the programming machine's volatile memory. Other measures to ensure that the decrypted data cannot be intercepted by a third party from the programming machine are possible.
[0041] Depending on the programming machine, it is also possible for the data packet to consist exclusively of the data used to write to the IC; any additional configuration data can also be made available to the programming machine separately. Preferably, if the configuration data is made available to the programming machine separately, this is done analogously to the process described here. The configuration data is also generally stored encrypted and decrypted into a volatile memory using the method proposed here. It is only made available to the programming machine from the volatile memory.
[0042] In a sixth step (step 6), after the completion of writing to the IC(s) and multiple ICs, the volatile memory containing the decrypted data is erased. Erasing the data means that an attacker can no longer retrieve or reconstruct the data from the memory. This can be achieved, for example, by overwriting the entire volatile memory with different content. Grounding the volatile memory can also be provided, so that it is deactivated. This is automatically the case, in particular, if an attacker physically accesses and removes the volatile memory. Upon removal, the power supply is interrupted, meaning that the contents of the volatile memory are lost.
[0043] After clearing the memory, the system returns to normal mode. Switching to normal mode may also involve clearing the volatile memory (see above).
[0044] Typically, the data with which the IC is to be written, possibly supplemented by process-dependent customization data, is developed separately from the writing process of the programming machine in order to enable writing to an IC on different programming machine types. The machine-type-specific configuration data required to operate a programming machine type is therefore developed separately as part of a sample creation process on an individual of the respective programming machine type. For this purpose, the data to be written to the IC is written to the IC using the programming machine for test purposes and the IC is then validated to determine whether the writing process has led to the desired result. If this is not the case, the configuration data is adjusted, an IC is written to and validated again for test purposes, etc. This sample creation process is followed by a series production process in which a large number of identical or different ICs are produced.very similar ICs are written (the latter is the case if part of the data to be written to the IC includes process-dependent customization data). It is preferably provided that, even during this pattern creation process, the decrypted data for writing to the IC as well as the adapted configuration data are stored only in a volatile memory and not in a non-volatile memory.
[0045] In detail, the pattern creation process initially provides (step A) for carrying out steps 1 to 4 described above, with the proviso that the data packet in question is the data to be written to the IC(s), i.e. the image, possibly supplemented by process-dependent customization data.
[0046] In the next step (step B), the configuration data, such as machine-type-specific configuration data, is provided and, if necessary, created. This configuration data is also stored only in the volatile memory, specifically in such a way that it is made available to the programming machine. This provision can be carried out analogously to step 4.
[0047] A further step (step C) typically involves a functional test, after which the configuration data provided in step B is adjusted depending on the outcome. Once the configuration data has been finally provided, the configuration data and the data intended for writing to the IC are merged. This merged data is also referred to as a job. The merge can be done, for example, in an archive.
[0048] In the next step (step D), the job is encrypted. This encrypted job is stored in non-volatile memory. This can be on a server in a network environment, for example. This makes the encrypted job accessible to all network participants, including other programming machine systems. If the job is to be accessible to other programming systems, it is necessary to encrypt the job in such a way that other programming systems can also decrypt it.
[0049] Subsequently (step E), the volatile memory in which the decrypted data was previously stored is erased. This can be done analogously to step 6.
[0050] It can be planned that in step D, the encrypted job is not immediately saved to an external network participant, but initially only locally. Step E (deleting the volatile memory) is then executed. Only after the volatile memory has been deleted is a connection established to a network participant, such as a server, to save the encrypted job.
[0051] To carry out the series production process, steps 1 to 6 described above are then carried out, whereby the data package referred to therein is the job created in step C of the sample creation process.
[0052] The pattern creation process may also provide that before the encrypted data is decrypted, the programming machine system is switched to secure mode and after step E is switched back to normal mode.
[0053] The invention is explained in more detail with reference to the attached figure. It shows:
[0054] Fig. 1 : A schematic diagram of the programming machine system embedded in a network.
[0055] Figure 1 shows a programming machine system 1 embedded in a production process. In a development department 2, for example at a customer's, data is developed with which an IC 3 is to be written. This data is also referred to as an image. In addition, process-dependent customization data can be provided, which modifies the image with which a specific IC 3 is to be written, for example if the data is personal data. For example, process-dependent customization data can be different PIN codes to be written to the plurality of ICs. This data is transferred to a production system 4 in encrypted form. Asymmetric encryption is provided as the encryption method. The data is encrypted with the public key issued by production 4.
[0056] The encrypted data is transferred to the production system 4 and stored on a server 5 in the production system 4. For this purpose, the server 5 has non-volatile memory for securely storing the encrypted data.
[0057] In the production system 4, a large number of ICs 3 are to be written with the data developed by the development department 2 in a series production process. For this purpose, a programming machine 6 must first be set up accordingly in a sample creation process. The setup is carried out using configuration data specified by a setup technician. To configure the programming machine 6, it is necessary to test-write one or more ICs 3 with the data intended for the IC 3, using specific configuration data to check whether the set configuration data, in combination with the data intended for the IC 3, leads to the desired result. The configuration data is used to control peripherals 7 belonging to the programming machine 6, such as control units for writing to the IC 3, for performing validations, etc.
[0058] In order to make the data stored on the server 5, transmitted by the development department 2, decrypted and available to the programming machine 6 for writing to the IC 3, a computer machine 8 is part of the programming machine system 1. The computer machine 8 is coupled to the programming machine 6. The computer machine 8 is configured such that it can only work with a very specific programming machine 6; connecting another programming machine 6 results in the computer machine 8 not functioning, at least within the scope of functions provided for in the method described here. The parameters and methods required for the coupling are sufficiently known to those skilled in the art.
[0059] Communication between the computer machine 8 and the programming machine 6 is cable-based, for example, via a LAN. To prevent interception of the data exchanged between the programming machine 6 and the computer machine 8, the computer machine 8 is physically part of the programming machine system 1. This means that the computer machines 8 are housed in the same housing and protected against external access.
[0060] The programming machine 6 also has access to the network outside the programming machine system 1, for example to the server 5, via the computer machine 8. However, access from the programming machine 6 to the network outside the programming machine system 1 is controlled by the computer machine 8 via an access controller 11. The access controller 11 is connected to a state machine 12. It is understood that the access controller 11 and the state machine 12 can also be physically part of the computing unit 9; for explanatory purposes, these are shown separately in Figure 1.
[0061] The state machine 12 switches the programming machine system 1 between two states: the normal mode and the secure mode.
[0062] In normal mode, the access controller 11 is configured such that the programming machine 6 can communicate bidirectionally with the network outside the programming machine system 1, for example with the server 5; thus, read / write access exists.
[0063] If the state machine 12 receives information from the computing unit 9 that it should switch to secure mode, the state machine 12 transmits to the access controller 11 that the access rights of the programming machine 6 are to be restricted so that the programming machine 6 is no longer permitted to write outside the programming machine system 1; for the programming machine 6, only read access to the network outside the programming machine system 1 is granted.
[0064] To retrieve the data from the server 5, the data is retrieved by the computer machine 8 using a computing unit 9 and stored in a volatile memory 10, here a RAM of the computer machine 8.
[0065] Then, the secure mode of the programming machine system 1 is activated. Subsequently, the encrypted data stored in the volatile memory 10 is decrypted by the computing unit 9.
[0066] The decrypted data is also stored exclusively in the volatile memory 10. By avoiding storing the decrypted data in a non-volatile memory, the risk that an attacker can reconstruct the decrypted data is counteracted, even if the data in the non-volatile memory is considered deleted.
[0067] The data decrypted in the volatile memory 10 is then provided to the programming machine 6. For this purpose, a drive is emulated in the volatile memory 10, which the programming machine 6 can access with its computing unit 13. Configuration data previously transferred to the computer machine 8 and stored in the volatile memory 10, or in the emulated drive, are also retrieved by the computing unit 13 of the programming machine 6.
[0068] Equipped with this data, the programming machine 6 writes the data intended for the IC 3 to the IC 3; the configuration data are used for the control 7 of the programming machine 6.
[0069] If the configuration data have led to the desired result (the IC 3 has been properly written), the data intended for writing the IC 3 and the configuration data, both of which are stored in the volatile memory 10 of the computer machine 8, are combined into one job, namely in an archive.
[0070] The job or archive is then encrypted and stored on the server 5 by the computer machine 8.
[0071] Subsequently, the processing unit 9 sends the state machine 12 a command to switch back to normal mode. The state machine 12 then erases the volatile memory 10, for example, by grounding it, and sends a command to the access controller 11 to allow write access for the programming machine 6 on the network outside the programming machine system 1. This prevents the decrypted data from being intercepted by a third party.
[0072] Also indicated is a connection of the state machine 12 to the schematic housing of the programming machine system 1: If the housing is opened or another unexpected error occurs, the state machine 12 detects this and automatically switches to normal mode (erasing the volatile memory 10 and switching the access controller 11 to bidirectional mode).
[0073] The series production process proceeds in the same way, with the only difference being that the computer machine 8 retrieves not only the data intended for the IC 3 from the server 5, but also the entire job created in the sample creation process. The job includes the data intended for writing the IC 3 as well as the configuration data for the controller 7 of the peripherals of the programming machine 6.
[0074] This job is stored decrypted in the volatile memory 10 after the secure mode has been activated by the state machine 12 and made available to the programming machine 6, so that the programming machine 6 can write the data intended for the IC 3 using the provided configuration data. The invention has been described using an exemplary embodiment. Without departing from the scope of protection described by the claims, numerous further embodiments for implementing the inventive concept will become apparent to those skilled in the art without the need for further explanation within the scope of these statements.
[0075] List of reference symbols
[0076] programming machine system
[0077] Development Department
[0078] IC
[0079] Production system
[0080] server
[0081] programming machine
[0082] Control of the programming machine
[0083] computer machine
[0084] Computing unit of the computer machine
[0085] Volatile memory for computer machine
[0086] Access controller
[0087] state machine
[0088] Computing unit of the programming machine
Claims
Patent claims 1. Method for writing data to an IC (3) comprising the following steps: 1 . Providing a data packet in encrypted form containing the data to be written to the IC (3); 2. Loading the encrypted data packet; 3. Decrypting the encrypted data packet and storing the decrypted data packet exclusively in a volatile memory (10); 4. Providing the decrypted data packet in the volatile memory (10) for a programming machine (6); 5. Writing to one or more ICs (3) data of the decrypted data packet intended for the IC (3) by means of the programming machine (6); 6. After completing the writing of the IC(s) (3): Erase the volatile memory (10).
2. Method according to claim 1, characterized in that the provided encrypted data packet comprises, on the one hand, an image intended for writing to the IC(s) (3), optionally supplemented by process-dependent individualization data, and, on the other hand, configuration data for operating the programming machine (6) during the writing process.
3. Method according to claim 1, characterized in that the volatile memory (10) is a RAM of a computer machine (8) which is coupled to the programming machine (6).
4. Method according to claim 1, characterized in that the provision of the data in step 4 is carried out by emulating a drive in the volatile memory (10).
5. The method according to claim 1, characterized in that the programming machine (6) is integrated into a network environment and wherein in a normal mode the programming machine (6) can write data to a network participant (read / write access) and in a secure mode writing is not possible (read-only access) and wherein at the beginning of the method according to claim 1 the normal mode is activated, before step 3 a change is made to the secure mode and after step 6 a switch is made back to the normal mode.
6. Method according to claim 1, characterized in that in order to set up a series production process, a sample creation process is carried out in a preparatory step, comprising the following steps: A) carrying out steps 1 to 4 of claim 1, wherein said data packet is the data intended for writing to the IC(s) (3); B) providing configuration data for operating the programming machine (6) in the volatile memory (10) for the programming machine (6); C) merging the configuration data and the data intended to describe the IC(s) (3) into one job; D) Encrypting the job and storing the encrypted job in non-volatile memory; E) erasing the volatile memory (10); and wherein the steps of claim 1 are subsequently carried out to carry out the series production process, wherein said data packet is the job created in step C).
7. System for carrying out the method according to one of claims 1 to 6, comprising a programming machine (6) for writing to an IC (3) and a computer machine (8) with a volatile memory (10).
8. System according to claim 7, characterized in that the computer machine (8) is arranged in the housing of the programming machine (6) and the computer machine (8) is configured to erase the volatile memory (10) if the housing is unexpectedly penetrated or another unexpected behavior is detected.
9. System according to claim 7 or 8, characterized in that the computer machine (8) has a first interface and a further, second interface for data exchange and wherein the computer machine (8) and the programming machine (6) are coupled to one another via the first interface and the computer machine (8) is set up so that external data that are to be made available to the programming machine (6) are retrieved via the second interface by the computer machine (8) and passed on to the programming machine (6) via the first interface and data that the programming machine (6) is to make available to external machines are passed to the computer machine (8) via the first interface and passed on to the external machine via the second interface and wherein the computer machine (8) is further set up to prevent, in a secure mode, data,which the programming machine (6) wishes to make available to external machines, are passed on to the external machine.