EP4433925A1 - Verfahren zur erkennung von auf eine manipulation hindeutenden anomalien während eines sicheren startvorgangs einer softwaregesteuerten vorrichtung - Google Patents

Verfahren zur erkennung von auf eine manipulation hindeutenden anomalien während eines sicheren startvorgangs einer softwaregesteuerten vorrichtung

Info

Publication number
EP4433925A1
EP4433925A1 EP22812429.3A EP22812429A EP4433925A1 EP 4433925 A1 EP4433925 A1 EP 4433925A1 EP 22812429 A EP22812429 A EP 22812429A EP 4433925 A1 EP4433925 A1 EP 4433925A1
Authority
EP
European Patent Office
Prior art keywords
software
boot
attack
signal
aborted
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Withdrawn
Application number
EP22812429.3A
Other languages
English (en)
French (fr)
Inventor
Marc Sebastian Patric STÖTTINGER
Steffen Sanwald
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Aumovio Germany GmbH
Original Assignee
Continental Automotive Technologies GmbH
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by Continental Automotive Technologies GmbH filed Critical Continental Automotive Technologies GmbH
Publication of EP4433925A1 publication Critical patent/EP4433925A1/de
Withdrawn legal-status Critical Current

Links

Classifications

    • GPHYSICS
    • G06COMPUTING OR CALCULATING; COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F21/00Security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
    • G06F21/50Monitoring users, programs or devices to maintain the integrity of platforms, e.g. of processors, firmware or operating systems
    • G06F21/57Certifying or maintaining trusted computer platforms, e.g. secure boots or power-downs, version controls, system software checks, secure updates or assessing vulnerabilities
    • G06F21/575Secure boot
    • GPHYSICS
    • G06COMPUTING OR CALCULATING; COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F21/00Security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
    • G06F21/50Monitoring users, programs or devices to maintain the integrity of platforms, e.g. of processors, firmware or operating systems
    • G06F21/55Detecting local intrusion or implementing counter-measures
    • G06F21/556Detecting local intrusion or implementing counter-measures involving covert channels, i.e. data leakage between processes
    • GPHYSICS
    • G06COMPUTING OR CALCULATING; COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F21/00Security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
    • G06F21/50Monitoring users, programs or devices to maintain the integrity of platforms, e.g. of processors, firmware or operating systems
    • G06F21/55Detecting local intrusion or implementing counter-measures
    • G06F21/56Computer malware detection or handling, e.g. anti-virus arrangements
    • G06F21/566Dynamic detection, i.e. detection performed at run-time, e.g. emulation, suspicious activities
    • GPHYSICS
    • G06COMPUTING OR CALCULATING; COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F21/00Security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
    • G06F21/70Protecting specific internal or peripheral components, in which the protection of a component leads to protection of the entire computer
    • G06F21/71Protecting specific internal or peripheral components, in which the protection of a component leads to protection of the entire computer to assure secure computing or processing of information
    • G06F21/75Protecting specific internal or peripheral components, in which the protection of a component leads to protection of the entire computer to assure secure computing or processing of information by inhibiting the analysis of circuitry or operation
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L9/00Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols
    • H04L9/32Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols including means for verifying the identity or authority of a user of the system or for message authentication, e.g. authorization, entity authentication, data integrity or data verification, non-repudiation, key authentication or verification of credentials
    • H04L9/3234Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols including means for verifying the identity or authority of a user of the system or for message authentication, e.g. authorization, entity authentication, data integrity or data verification, non-repudiation, key authentication or verification of credentials involving additional secure or trusted devices, e.g. TPM, smartcard, USB or software token
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L9/00Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols
    • H04L9/32Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols including means for verifying the identity or authority of a user of the system or for message authentication, e.g. authorization, entity authentication, data integrity or data verification, non-repudiation, key authentication or verification of credentials
    • H04L9/3236Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols including means for verifying the identity or authority of a user of the system or for message authentication, e.g. authorization, entity authentication, data integrity or data verification, non-repudiation, key authentication or verification of credentials using cryptographic hash functions
    • H04L9/3242Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols including means for verifying the identity or authority of a user of the system or for message authentication, e.g. authorization, entity authentication, data integrity or data verification, non-repudiation, key authentication or verification of credentials using cryptographic hash functions involving keyed hash functions, e.g. message authentication codes [MACs], CBC-MAC or HMAC
    • GPHYSICS
    • G06COMPUTING OR CALCULATING; COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2221/00Indexing scheme relating to security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
    • G06F2221/03Indexing scheme relating to G06F21/50, monitoring users, programs or devices to maintain the integrity of platforms
    • G06F2221/033Test or assess software
    • GPHYSICS
    • G06COMPUTING OR CALCULATING; COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2221/00Indexing scheme relating to security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
    • G06F2221/03Indexing scheme relating to G06F21/50, monitoring users, programs or devices to maintain the integrity of platforms
    • G06F2221/034Test or assess a computer or a system
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L2209/00Additional information or applications relating to cryptographic mechanisms or cryptographic arrangements for secret or secure communication H04L9/00
    • H04L2209/88Medical equipments

Definitions

  • the present invention relates to a method for detecting or identifying anomalies during a secure starting process of a software-controlled device, such as occur, for example, when manipulation attempts are made.
  • the software Since the software is usually not monolithic and can be executed directly in the non-volatile memory, for example flash memory, the individual components for execution must be loaded from the non-volatile memory into the main memory.
  • Software components are usually stored in the non-volatile memory within a file system adapted to the memory type, so that they can be found using their file names.
  • the microprocessor Immediately after starting a software-controlled device, the microprocessor does not know the structure of the file system and can therefore not access the file system, so that special auxiliary software must first be loaded, which sets up the microprocessor for access to the file system of the non-volatile memory.
  • the special auxiliary software is first loaded and executed by the firmware of a computer system from a specified memory area, the boot sector, of a bootable medium. It is also known as a bootloader or launcher.
  • the bootloader then loads other parts of the operating software.
  • the bootloader can be divided into several levels that build on one another, it is then a multi-level bootloader. This division into stages is z. This is done, for example, if the boot loader's program code does not fit completely in the boot sector of a start medium. Only the first stage is then initially loaded and executed, which then loads and executes the second stage, of which the first stage only knows the length, the block number and the identification of the medium.
  • the second stage can now deal with the specific file system of the medium and loads the third stage, for example, using a file name.
  • the third stage is now the actual boot loader, which loads, for example, a configuration file containing a selection menu or software components required for the operation of the device, possibly in a predetermined sequence.
  • This multi-level structure of the bootloader has several advantages; in the case described above, the file of the actual boot loader to be loaded in the third stage can be changed as desired or even physically moved on the medium, since the second stage can already deal with the medium's file system and the third stage can find it using the file name. In addition, such a boot loader is not subject to the limitations of the length of a boot block or boot sector.
  • Certain devices are subject to special requirements for tamper-proof operation, e.g. devices that control complex machines in such a way that regulatory approved and above all safe working points or areas are maintained, or machines that store or process data of high personal, business or social value .
  • the devices can be set up to only load signed software components during a starting process.
  • the signature of each respective software component is checked before execution, and a security component is set up during the starting process, which is intended to detect manipulation of software modules during operation of the device and, if necessary, to set up countermeasures.
  • This procedure is also referred to as secure boot or "secure boot”.
  • MAC message authentication code
  • MAC algorithms require two input parameters: the data to be protected and a secret key. A checksum is calculated from both, the message authentication code.
  • a secret key is stored in a secure memory or memory area of the device, which is otherwise only known to a software manufacturer authorized for the device.
  • the software manufacturer calculates a MAC for this key and its software component.
  • the software component and the associated MAC are stored in a non-volatile memory of the device, from where it is read into a working memory when required and executed by a microprocessor.
  • a security function calculates the MAC for the software component stored in non-volatile memory using the key stored in the secure memory area of the device and compares the calculated MAC with the MAC stored for the software component.
  • the security function interprets the agreement of both values as a successful integrity test, ie it assumes that the software component was installed by an authorized software manufacturer that knows the secret key and it has not been modified in non-volatile memory.
  • MACs are either based on block ciphers, on hash functions or are specially developed MACs.
  • a common method for MAC calculation, the HMAC is based on cryptographic hash functions and is used in SSL and IPsec communication methods, for example.
  • a common method based on block ciphers is the Cipher-Based Message Authentication Code (CMAC) specified in NIST Special Publication 800-38B, which is used in conjunction with AES or Triple DES cipher methods.
  • CMAC Cipher-Based Message Authentication Code
  • a side-channel attack may include, but is not limited to, manipulation of the microprocessor's clock speed, which enables the attacker to more easily manipulate address and data lines between the microprocessor and the non-volatile memory, causing the microprocessor to manipulate code or code from another than the originally intended memory address where attacker-generated unauthorized code resides.
  • an attacker In a CMAC-based secure boot process, an attacker usually tries to change the last block of the software or software component immediately after a successfully completed CMAC verification of authentic software or software component and before it is executed, e.g. by directly accessing interfaces of a memory or on the data lines that connect the memory to the processor. If, for example, an AES-based CMAC is used, the attacker will change the last 128-bit block after successful authentication, which usually contains the program instructions to be executed last, in order to carry out an attack on the secure boot process.
  • the attacker will try to get the processor to execute program code provided by it in another memory area, which contains, for example, a user created by the attacker and his access data, or via a communication link not provided for in the original software or software component set up an interface.
  • the change will result in an error in the majority of attempts, ultimately triggering a restart of the device.
  • the attacker will therefore vary the changes to the last block of software after each restart until the device executes the program code in the other memory area and he obtains the desired access. Since the attack is not aimed at access provided by the device in regular operation, but at something else attempts are made to manipulate the device, in the present example by reducing the clock frequency and manipulating address and data lines, this type of attack is also referred to as a side channel attack.
  • side-channel attacks on a CMAC-based secure boot process are characterized, among other things, by frequent changes to at least one block of software during the boot process, multiple consecutive failed boots, multiple restart attempts within a short period of time after an operating time that falls below a predetermined minimum operating time, although the restart is on successfully, unusual resource allocations during the boot process, and/or manipulation of the clock speed before the boot process.
  • the manipulation of the clock frequency is primarily intended to simplify external access to address and data lines.
  • Such attacks usually take place offline, i.e. locally, without the attacked device having a network connection through which the attack could be detected, so that the owner or manufacturer of a device is not aware of the taps and therefore cannot take any countermeasures .
  • a method for securely booting a control device is known from DE 102019127856 A1.
  • This includes a hardware security module (HSM) and a host.
  • HSM hardware security module
  • HSM hardware security module
  • US 9740863 B2 discloses a device and a method for protecting a secure boot process against side channel attacks.
  • the device consists of cryptography-capable hardware for an initial boot process.
  • a non-volatile memory is provided for storing manipulated starting processes.
  • a comparison unit compares the number of manipulated starts against a maximum value. The comparison can be based on the times read from a first real-time clock and a second clock in the non-volatile memory. Based on this comparison, control logic transfers control from the first to a second start process.
  • a bootloader is installed on the device.
  • the bootloader is a software program that performs many functions. These functions may include checking the incoming software image checksum for integrity, decrypting the incoming software image using a secret key, erasing data in the FLASH memory, installing the new software image in the FLASH memory and include other functions.
  • the bootloader uses various techniques to keep track of the versions of the software image to be installed. The procedure also counts the number of uncompleted attempts made when attempting to update the software image. By monitoring these parameters, the bootloader can detect when a malicious actor is attempting a side-channel attack. In reaction then the bootloader cannot allow loading a new software image or access to the secret key.
  • a monitoring module assigned to the microcomputer checks at least one function of the microcontroller and generates a signal if a malfunction of the microcontroller is detected.
  • the signal causes the microcontroller to restart, at least indirectly.
  • the restart at least one software element running during the operation of the microcontroller is restarted.
  • At least one item of status information is stored in a memory, with the status information comprising at least the status of an instruction counter and with the memory not being immediately overwritten or erased during a restart.
  • the status information stored in the memory is accessed and the status information for an analysis of a software error is made available.
  • the method according to the invention described below for detecting the type of attack on a secure boot process is preferably carried out in a separate monitoring component which executes the method in parallel with the actual boot process.
  • the method can also be used as a be implemented separate process of a bootloader, which is stored as part of a firmware preferably unchangeable or changeable only by passing other security functions and is started first.
  • the method includes reading out as a first component, which is carried out before a first authentication of a software or software component to be loaded or before a hash value or a checksum is checked for the last block of the software or software component and possibly further blocks at least one operating parameter from at least one system component required for the operation of the microprocessor and comparing the at least one operating parameter read out with corresponding stored reference values.
  • the at least one operating parameter can relate, for example, to a supply voltage provided by a power management unit or a clock of the system or of the microprocessor and other components provided by a clock generator.
  • Associated reference values are preferably read from a particularly secure memory area and/or can be stored in a cryptographically secure manner. If the comparison shows a difference, a first signal is output, which signals a recognized side channel attack and a failed start process, and the method and the further start process are ended or aborted. Otherwise, other components of the method are executed.
  • the method also includes as a second component, which is also carried out before a first authentication of a software or software component to be loaded or before a hash value or a checksum is checked for the last block of the software or software component and, if necessary, further blocks Checking the state of a flag that is set during a boot process that has not yet completed successfully. If the flag is set, a second signal is output, which signals a detected attack and a failed start process, and the method and the further start process are ended or aborted. If the flag was not set during the test, it will be afterwards is set, and other components of the method are executed.
  • the flag is preferably set in a non-volatile memory so that it retains its status for a longer period of time even without a power supply.
  • This component can be used, among other things, to detect error injection attacks, which often lead to a reset at a certain point before the end of the start process, e.g. due to a signal from a watchdog that detects a start process that has stopped after some time due to an illegal change in software or software components detects, or Due to an attacker-induced so-called "hard” reset, ie, a reset forced by disconnecting the device from the power supply. Because the flag was not cleared as intended when the boot process completed properly, it can be detected during the subsequent boot process.
  • the method also includes, as a third component, the calculation of an authentication code for software or software components to be loaded and, as a first test step, the comparison of the calculated authentication code with the authentication code of the previous start-up process read from a memory. If the comparison shows a difference, a third signal is output, which signals a detected error injection attack and a failed start process, and the method and the further start process are terminated or aborted. Otherwise, as a second test step, the previously calculated authentication code is compared with a reference code read from a memory, preferably a secure memory or memory area. If the comparison shows a difference, a fourth signal is output, which signals a detected error injection attack and a failed start process, and the method and the further start process are terminated or aborted.
  • the stored authentication code of the previous boot process is replaced by the authentication code calculated for the current boot process, the flag that is set during a boot process that has not yet been successfully completed is deleted, and the process ends. If necessary, a Signal are output, which signals a successfully completed safe boot process.
  • a hash value or a checksum can be calculated for the first test step of the third component over the last block of the software or software component and possibly further blocks and with a value stored from the previous boot for the same blocks.
  • the effort for the first test step can be kept small, and the more complex calculation of the authentication code only has to be carried out if no attack has been detected in this first test step.
  • a general error in the software or software component e.g. due to a memory error, will show identical hash values or checksums over several boot processes, while the hash values or checksums in an attack usually differ from the last block with each boot process due to the change will differ.
  • the method can include a fourth component which monitors a corresponding correct multiple execution of the third component.
  • the fourth component involves comparing a value associated with a stage currently to be loaded with a reference value associated with that stage.
  • the value associated with the stage currently being loaded may be part of a file containing the program code, or may be found in a table by file name or other characteristics.
  • the reference value for each stage of the secure boot process or the table can be read out from a secure memory or memory area, for example.
  • a counter value can be stored in the software or software component of each stage, which counter value is compared with the current counter value. After the software or software component of a stage has been successfully processed, the counter is incremented before the next stage is loaded, so that a new counter value is available for comparison for the next stage. The counter is initially reset when the fourth component of the procedure is called, and the software or
  • the first level software component contains the value 0 accordingly.
  • a fifth signal is output, which signals a detected error injection attack and a failed start process, and the method and the further start process are terminated or aborted.
  • the counter values which allow the affected software or software component to be identified, can also be provided for evaluating the type of attack and/or stored for later improvement of security.
  • the execution of the boot process will continue and the fourth component will check the subsequent stages until the last stage of the boot process indicated by the corresponding reference value has been loaded.
  • clear time information is stored at the beginning and/or after the successful completion of the starting process, preferably in a secure memory or memory area and/or encrypted with a secret key stored in the device.
  • current time information is compared with the stored time information. If the difference between the two pieces of time information is less than a specified value or is negative, a sixth signal is output, which signals a recognized attack and a failed start process. The procedure is then ended and the further start process is aborted.
  • multiple points in time of successive restart processes are stored and the number of restart processes within a predetermined first period of time is compared with an allowable maximum value.
  • a sixth signal is issued, indicating an attack detected and a failed boot.
  • the procedure is then ended and the further start process is aborted.
  • This refinement is particularly suitable when sufficiently precise time information that is independent of the system is not available immediately at the beginning of the starting process, but only after the system has started, for example from an external time signal such as GPS, NTP server, DCF-77 Radio signal or the like provided.
  • error injection attacks are also characterized by a number of specific events or characteristics, including manipulation of the clock speed, frequent reboots of the first device after a cold start, i.e. starting after a long period of inactivity, or a so-called "hard" reset, or the Repeated execution of the same software section and interruptions in the entire verification chain during the boot process, with only a certain stage of the boot process being repeatedly executed and verified, and with unsuccessful verification being aborted.
  • a hard reset can be detected, for example, using the flag for a boot process that has not yet been successfully completed.
  • Another flag can be set by software running after a properly executed boot if this triggers a restart of the device, so that the states of the two flags can be used to distinguish the reason for the restart.
  • the flag can be deleted, for example, while it was previously set.
  • the beginning and/or the successful completion of the starting process are determined based on a power consumption that is typical for these events, e.g corresponding data provided by a power management IC.
  • the power consumption reaches a minimum between successive starts and then increases again rapidly.
  • the beginning of the starting process is determined using a reset signal output by a microprocessor.
  • Such reset signals are frequently used to start further components of the first device, which also have to be put into an operating state only when the first device is in operation.
  • the allocation of at least one system resource of the first device is monitored during the starting process, for example the frequency with which a processor cache is emptied and reassigned to the same process and/or rewritten for this process.
  • the number of allocations of the same system resource to the same process within a predetermined second time period is compared to a maximum value specified for that system resource. If the number of allocations of the same system resource to the same process exceeds the predetermined maximum value, a seventh signal is issued, which signals a detected attack and a failed start process. In addition, the procedure is ended and the further start process is aborted.
  • the term process can be used for any software or software component, a thread or the like stand. This refinement can be used particularly preferably in multiprocessor systems or systems with multi-core processors, in which the method is executed exclusively and securely on one of the processors or processor cores, but access to processor-internal system resources can be recorded more easily.
  • a device comprises one or more processors and volatile and non-volatile memories assigned to them, which are communicatively connected to one another by means of one or more data lines or data buses.
  • Computer program instructions are stored in the non-volatile memory which, when executed by the at least one processor, set up the device for executing one or more embodiments of the method according to the invention.
  • a computer program product contains instructions which, when executed by a microprocessor of a device, cause the latter to carry out one or more refinements and further developments of the method described above.
  • the computer program product can be stored on a computer-readable medium or data carrier.
  • the medium or data carrier can be physically embodied, e.g. as a hard disk, CD, DVD, flash memory or the like, but the medium or data carrier can also comprise a modulated electrical, electromagnetic or optical signal which can be transmitted by a computer using of an appropriate receiver and can be stored in the memory of the computer.
  • the method according to the invention makes it possible to detect side-channel or error injection attacks on a secure boot process with a lower demand on system resources and system performance compared to classic cryptographic methods.
  • time-critical starting processes for software or software components which must be completed within a specific maximum time e.g. in a system context of several at least partially parallel running processes of a system or several communicatively connected devices, the possibility of being able to detect attacks almost simultaneously during the starting process without significantly delaying it is advantageous.
  • the method according to the invention can therefore be used advantageously wherever resource-saving detection of side channel or error injection attacks is required for a secure starting process, for example in Internet of Things (loT) devices or a distributed sensor infrastructure.
  • LoT Internet of Things
  • the software or software component implementing the method is preferably loaded early and before other software or other software components, ideally as part of the boot loader, so that the security functions are available as quickly as possible.
  • at least individual parts of the method can be executed by a dedicated security processor, which is permanently programmed.
  • FIG. 1 shows a flowchart of an exemplary method for detecting a side-channel attack on an AES-CMAC-based secure boot process
  • FIG. 2 shows an exemplary block diagram of a device set up to carry out one or more aspects of the method according to the invention.
  • Figure 1 shows a flowchart of an exemplary method 100 for
  • Detection of a side channel attack on an AES-CMAC based secure Starting process of a microprocessor-controlled device 200 The aim here is to detect manipulation of the last 128-bit block of the starting process. For the present example, it is assumed that a reset is carried out for each incorrect verification of the software.
  • An AES-CMAC procedure is used to check authenticity and integrity, with the same key being used at every stage of the boot process.
  • a first component I the presence of a side channel attack is checked.
  • step 101 at least one currently set operating parameter of at least the system component 208 necessary for the operation of microprocessor 202, e.g.
  • step 102 If the comparison shows that the operating parameter(s) currently set does not match the reference value(s), "IT" branch of step 102, the method branches off to step 130, in which a signal is output which signals that a side-channel attack has been detected and that secure boot failed. Appropriate countermeasures can then be taken in response to the signal.
  • step 102 If the comparison shows that the currently set operating parameters match the reference values, "Y" branch from step 102, the method branches off to step 103 of a second component II, in which it is checked whether a flag "Starting process not yet successfully completed “ is deleted. If the flag is set, i.e., not cleared, "N" branch from step 103, the method branches to step 130, in which a signal is output which signals that the previous boot process was not completed correctly, that an attack is present and secure boot failed. Appropriate countermeasures can then in turn be taken in response to the signal.
  • step 104 If the flag is cleared, i.e. not set, "Y" branch from step 103, it is set in step 104.
  • the software provided for the secure boot process or the corresponding software components can now be loaded, with further security checks being carried out.
  • step 105 of a fourth component IV a counter for successfully completed stages of the current starting process is reset, and in step 106 it is checked whether the counter for successfully completed stages of the starting process matches a reference value for the current stage.
  • the reference value for each stage of the secure starting process can be stored in a secure memory area, for example.
  • the software or software component of the stage can be identified, for example, using its file name or other characteristics, and can be compared with a correspondingly assigned reference value.
  • a counter value for example, can be stored in the software or software component of each stage, which is compared with the current counter value.
  • the software or software component of the first stage accordingly contains the value 0 since the counter was reset in step 105.
  • Each software or software component of a stage increments the counter after successful processing, so that a new counter value is available for comparison for the next stage.
  • any value can also be written to a memory after successful processing, which is read out by each stage, with each software or software component then having to be programmed with the corresponding value from the previous stage. This is particularly possible when all stages are provided by a manufacturer who knows the values.
  • This security feature can detect when a stage of the secure boot process has been skipped or skipped.
  • step 107 of a third component III the software or software component to be loaded is authenticated according to the respective implementation in the device, e.g. a CMAC for the software or software component to be loaded is calculated, stored and in Step 108 compared with the also stored result of the authentication of the previous secure boot process.
  • a CMAC for the software or software component to be loaded is calculated, stored and in Step 108 compared with the also stored result of the authentication of the previous secure boot process.
  • the correct value for the previous secure boot can be written to memory, or an inaccurate error message and abort of the boot can be suppressed in some other way.
  • step 108 If the comparison shows that the results of the two immediately consecutive authentication processes differ from each other, "N" branch of step 108, it can be assumed that an error injection attack is present, which is typically associated with blocks of software or software components that are changed at each start process and therefore a different MAC is calculated on each boot, and that the secure boot failed.
  • the method correspondingly branches off to step 130, in which a signal is output which indicates that an error injection attack is present and that the secure boot process has failed.
  • step 109 the result of the authentication is compared with a reference value read from a secure memory area for the authentication of this software or software component. If the comparison shows that the authentication result also matches the authentication reference value, "Y" branch of step 109, the authentication result from step 107 is stored in step 110 as the new authentication result of the previous secure boot. The previously saved result will be overwritten.
  • An error injection attack can be quickly detected in step 108 by storing the most recent result of the authenticity check. If the values of two consecutive starts are identical, but still do not match the reference value, a memory error can be concluded, for example. A change in the value to be stored between steps 109 and 110 would also be recognized in this way.
  • step 111 the counter for the successfully completed stages of the starting process is incremented, and in step 112 it is checked whether the value of the incremented counter agrees with the stored reference value of the final stage of the starting process. In the positive case, "Y" branch of step 112, the flag "boot process not completed successfully” is cleared in step 113 and the safe boot process is successfully completed.
  • step 109 If the comparison in step 109 shows that the result of authentication does not match the reference value for authentication, "N" branch of step 109, in step 120 the flag "boot operation not successfully completed” is cleared and a signal is generated issued, to which those skilled in the art known countermeasures for secure boot bypassing attacks (bypassing attacks) can be initiated.
  • Figure 2 shows an exemplary block diagram of a device 200 set up to carry out one or more aspects of the method 100 according to the invention.
  • the device 200 comprises volatile and non-volatile memories 204, 206 and at least one other system component required for the operation of the microprocessor 202. for example a clock generator and/or a power management IC.
  • the elements of device 200 are communicatively coupled to one another via one or more data lines or buses 210 .
  • the non-volatile memory 206 contains computer program instructions that, when executed by the microprocessor 202, set up the apparatus to perform one or more aspects of the method of the invention.

Landscapes

  • Engineering & Computer Science (AREA)
  • Computer Security & Cryptography (AREA)
  • Theoretical Computer Science (AREA)
  • Software Systems (AREA)
  • Computer Hardware Design (AREA)
  • General Engineering & Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Physics & Mathematics (AREA)
  • Computer Networks & Wireless Communication (AREA)
  • Signal Processing (AREA)
  • Virology (AREA)
  • Health & Medical Sciences (AREA)
  • General Health & Medical Sciences (AREA)
  • Power Engineering (AREA)
  • Mathematical Physics (AREA)
  • Storage Device Security (AREA)

Abstract

Ein Verfahren zur Erkennung von auf eine Manipulation hindeutenden Anomalien während eines sicheren Startvorgangs einer softwaregesteuerten Vorrichtung umfasst u.a. die Prüfung von Betriebsparametern von für den Betrieb eines Mikroprozessors notwendigen Systemkomponenten, die Prüfung eines einen nicht ordnungsgemäß abgeschlossenen Startvorgang anzeigenden Flags, sowie die signaturbasierte Authentizitätsprüfung von zu ladender Software bzw. zu ladenden Softwarekomponenten. Bei mehrstufigen Startvorgängen werden einer jeweiligen Stufe zugeordnete Zählerwerte mit zugehörigen Referenzwerten verglichen. Jede Prüfung kann im Falle eines Fehlers ein Signal ausgeben, anhand dessen, ggf. zusammen mit weiteren Signalen, die Art eines Angriffs erkannt werden kann, so dass spezifische Gegenmaßnahmen eingeleitet werden können.

Description

Verfahren zur Erkennung von auf eine Manipulation hindeutenden Anomalien während eines sicheren Startvorgangs einer softwaregesteuerten Vorrichtung
FELD DER ERFINDUNG
Die vorliegende Erfindung betrifft ein Verfahren zur Erkennung bzw. Identifikation von Anomalien während eines sicheren Startvorgangs einer softwaregesteuerten Vorrichtung, wie sie bspw. bei Manipulationsversuchen auftreten.
HINTERGRUND
Eine Vielzahl moderner Vorrichtungen werden durch eine Software gesteuert, welche bei der Inbetriebnahme der jeweiligen Vorrichtung von einem Speichermedium gelesen und in einen Arbeitsspeicher übertragen wird, wo sie letztlich von einem Prozessor ausgeführt wird.
Da die Software in der Regel nicht monolithisch vorliegt und direkt in dem nichtflüchtigen Speicher, bspw. Flash-Speicher, ausgeführt werden kann, müssen die einzelnen Komponenten zur Ausführung von dem nicht-flüchtigen Speicher in den Arbeitsspeicher geladen werden. In den nicht-flüchtigen Speicher sind Softwarekomponenten in der Regel innerhalb eines auf den Speichertyp angepassten Dateisystems gespeichert, so dass sie anhand ihres Dateinamens auffindbar sind. Unmittelbar nach dem Start einer softwaregesteuerten Vorrichtung kennt der Mikroprozessor die Struktur des Dateisystems nicht und kann daher nicht auf das Dateisystem zugreifen, so dass zunächst eine spezielle Hilfssoftware geladen werden muss, welche den Mikroprozessor für den Zugriff auf das Dateisystem des nicht-flüchtigen Speichers einrichtet.
Die spezielle Hilfssoftware wird als erstes durch die Firmware eines Computersystems aus einem festgelegten Speicherbereich, dem Bootsektor, eines startfähigen Mediums geladen und ausgeführt wird. Sie wird auch als Bootloader oder Startprogramm bezeichnet. Der Bootloader lädt dann weitere Teile der Betriebssoftware. Der Bootloader kann in mehrere aufeinander aufbauende Stufen unterteilt sein, es handelt sich dann um einen mehrstufigen Bootloader. Diese Unterteilung in Stufen wird z. B. dann gemacht, wenn der Programmcode des Bootloaders nicht vollständig im Bootsektor eines Startmediums Platz findet. Es wird dann zunächst nur die erste Stufe geladen und ausgeführt, die dann die zweite Stufe, von der die erste Stufe nur die Länge, die Block-Nummer und die Identifikation des Mediums kennt, geladen und ausgeführt wird. Die zweite Stufe kann nun mit dem konkreten Dateisystem des Mediums umgehen und lädt bspw. anhand eines Dateinamens die dritte Stufe. Die dritte Stufe ist nun der eigentliche Bootloader, der bspw. eine ein Auswahlmenü enthaltende Konfigurationsdatei oder für den Betrieb der Vorrichtung erforderliche Softwarekomponenten ggf. in einer vorbestimmten Abfolge lädt.
Dieser mehrstufige Aufbau des Bootloaders hat mehrere Vorteile; so kann im oben beschriebenen Fall die in der dritten Stufe zu ladende Datei des eigentlichen Bootloaders beliebig verändert oder auch physisch auf dem Medium verschoben werden, da die zweite Stufe bereits mit dem Dateisystem des Mediums umgehen kann und die dritte Stufe anhand des Dateinamens finden kann. Außerdem unterliegt ein solcher Bootloader nicht den Beschränkungen der Länge eines Bootblocks bzw. Bootsektors.
Bestimmte Vorrichtungen unterliegen besonderen Anforderungen an einen manipulationssicheren Betrieb, bspw. Vorrichtungen, welche komplexe Maschinen so steuern, dass regulatorisch zugelassene und vor allem sichere Arbeitspunkte oder -bereiche eingehalten werden, oder Maschinen, welche Daten von hohem persönlichem, geschäftlichem oder gesellschaftlichem Wert speichern oder verarbeiten.
Wie in beinahe jedem Bereich der Technik wird auch hier immer wieder versucht, die Software solcher Vorrichtungen zu manipulieren, sei es um die Arbeitspunkte bzw. -bereiche zu verändern, oder um Zugriff auf Daten oder andere Werte zu erlangen. Um Manipulationsversuche der Software zu unterbinden, können die Vorrichtungen dazu eingerichtet sein, bereits während eines Startvorgangs nur signierte Softwarekomponenten zu laden. Die Signatur jeder jeweiligen Softwarekomponente wird vor der Ausführung überprüft, und beim Startvorgang wird eine Sicherheitskomponente eingerichtet, welche während des Betriebs der Vorrichtung Manipulationen an Softwaremodulen erkennen soll und ggf. Gegenmaßnahmen einrichten soll. Dieses Vorgehen wird auch als sicherer Startvorgang oder „secure boot“ bezeichnet.
Bei einem sicheren Startvorgang kann bspw. ein sogenannter Message Authentication Code (MAC) dazu dienen, Gewissheit über den Ursprung von Softwarekomponenten, Daten oder Nachrichten zu erhalten und deren Integrität zu überprüfen.
MAC-Algorithmen erfordern zwei Eingabeparameter: Die zu schützenden Daten und einen geheimen Schlüssel. Aus beidem wird eine Prüfsumme berechnet, der Message Authentication Code.
Die Integrität einer während des Startvorgangs zu ladenden Softwarekomponente, lässt sich mittels eines MAC wie folgt prüfen: In einem sicheren Speicher oder Speicherbereich der Vorrichtung ist ein geheimer Schlüssel gespeichert, welcher sonst nur noch einem für die Vorrichtung autorisierten Softwarehersteller bekannt ist. Der Softwarehersteller berechnet für diesen Schlüssel und seine Softwarekomponente einen MAC. Die Softwarekomponente und der zugehörige MAC werden in einem nichtflüchtigen Speicher der Vorrichtung gespeichert, von wo sie bei Bedarf in einen Arbeitsspeicher gelesen und von einem Mikroprozessor ausgeführt wird. Vor der Ausführung der Softwarekomponente berechnet eine Sicherheitsfunktion den MAC zu der im nichtflüchtigen Speicher gespeicherten Softwarekomponente mit dem in dem sicheren Speicherbereich der Vorrichtung gespeicherten Schlüssel und vergleicht den berechneten MAC mit dem zu der Softwarekomponente gespeicherten MAC. Die Übereinstimmung beider Werte interpretiert die Sicherheitsfunktion als erfolgreichen Integritätstest, d.h., es wird angenommen, dass die Softwarekomponente von einem autorisierten Softwarehersteller bereitgestellt wurde, der den geheimen Schlüssel kennt, und sie wurde im nichtflüchtigen Speicher nicht verändert.
MACs basieren entweder auf Blockchiffren, auf Hash-Funktionen oder sind speziell entwickelte MACs. Ein gebräuchliches Verfahren zur MAC-Berechnung, der HMAC, basiert auf kryptographischen Hash-Funktionen und wird beispielsweise in SSL und IPsec Kommunikationsverfahren eingesetzt. Ein verbreitetes Verfahren basierend auf Blockchiffren ist der in der NIST Special Publication 800-38B spezifizierte Cipher-Based Message Authentication Code (CMAC), der in Verbindung mit AES oder Triple DES Chiffreverfahren verwendet wird.
Ein Angreifer kann nun versuchen, Kenntnis von dem geheimen Schlüssel zu erlangen, so dass er, wenn ein symmetrischer Schlüssel für die Softwareverifikation verwendet wird, eine gültige, authentische MAC für eine beliebige Software erzeugen kann. Diese wird dann bei der Prüfung als gültig erkannt und ohne Weiteres ausgeführt.
Je nach der Sicherung der Schlüssel kann dies für den Angreifer sehr aufwendig sein, so dass häufig auf eine andere Art versucht wird, eine veränderte Software oder Softwarekomponente in ein System einzuschleusen, bei der für die veränderte Software oder Softwarekomponente keine gültige Signatur erzeugt wird.
Dazu wird bei für einen sicheren Startvorgang eingerichteten Vorrichtungen versucht, bereits während des Startvorgangs, während welchem noch nicht alle Sicherheitsfunktionen bereitstehen und korrekt parametrisiert sind, Bedingungen herbeizuführen, die das Ersetzen von ursprünglichen Softwarekomponenten mit veränderten Softwarekomponenten ermöglichen können. Diese veränderten Softwarekomponenten können dann bspw. dazu dienen, einem Angreifer während des Startvorgangs oder des Betriebs der Vorrichtung Zugriff auf Betriebsparameter oder Zugangsdaten oder dergleichen zu gewähren, mittels derer letztlich das eigentliche Ziel des Angriffs erreicht wird. Hierzu werden bspw. Seitenkanalangriffe verwendet. Seitenkanalangriffe umfassen u.a. Angriffe, die auf eine scheinbar mit der regulären Ausführung von Softwarekomponenten nicht verbundene System kom ponente oder einen scheinbar mit der Ausführung von Softwarekomponenten nicht verbundenen System parameter gerichtet sind, um den Mikroprozessor dazu zu bringen, nicht autorisierten Programmcode auszuführen. Ein Seitenkanalangriff kann u.a. eine Manipulation der Taktfrequenz des Mikroprozessors umfassen, welche den Angreifer dazu in die Lage versetzt, Adress- und Datenleitungen zwischen dem Mikroprozessor und dem nicht-flüchtigen Speicher einfacher manipulieren zu können, so dass der Mikroprozessor manipulierten Code oder Code von einer anderen als der ursprünglich vorgesehenen Speicheradresse ausführt, an der sich vom Angreifer erzeugter, nicht autorisierter Code befindet.
Bei einem CMAC-basierten sicheren Startvorgang versucht ein Angreifer in der Regel unmittelbar im Anschluss an eine erfolgreich abgeschlossene CMAC- Verifizierung einer authentischen Software oder Softwarekomponente und vor deren Ausführung den letzten Block der Software oder Softwarekomponente zu ändern, bspw. durch direkten Zugriff auf Schnittstellen eines Speichers oder auf die Datenleitungen, welche den Speicher mit dem Prozessor verbinden. Wenn bspw. ein AES-basierter CMAC verwendet wird, wird der Angreifer nach erfolgter Authentifizierung den letzten 128 Bit Block ändern, welcher in der Regel die als letztes auszuführenden Programminstruktionen enthält, um einen Angriff auf den sicheren Bootvorgang auszuführen. Dabei wird der Angreifer durch diese Änderung versuchen, den Prozessor dazu zu bringen, von ihm in einem anderen Speicherbereich bereitgestellten Programmcode auszuführen, welche bspw. einen vom Angreifer angelegten Benutzer und dessen Zugangsdaten enthält, oder eine in der ursprünglichen Software oder Softwarekomponente nicht vorgesehene Kommunikationsverbindung über eine Schnittstelle einrichtet. Die Änderung wird in der größten Zahl der Versuche zu einem Fehler führen, der letztlich einen Neustart der Vorrichtung auslöst. Der Angreifer wird daher nach jedem Neustart die Änderungen des letzten Blocks der Software variieren, bis die Vorrichtung den Programmcode in dem anderen Speicherbereich ausführt, und er den gewünschten Zugang erhält. Da der Angriff nicht auf von der Vorrichtung im regulären Betrieb bereitgestellte Zugänge gerichtet ist, sondern auf anderem Wege versucht wird, die Vorrichtung zu manipulieren, im vorliegenden Beispiel über die Reduzierung der Taktfrequenz und die Manipulation von Adress- und Datenleitungen, wird auch diese Art von Angriff als Seitenkanalangriff bezeichnet.
Seitenkanalangriffe auf einen CMAC-basierten sicheren Startvorgang zeichnen sich dementsprechend u.a. durch häufige Änderungen mindestens eines Blocks einer Software während des Startvorgangs, mehrere aufeinanderfolgende fehlgeschlagene Startvorgänge, mehrere Neustartversuche innerhalb einer kurzen Zeitperiode nach einer Betriebszeit, welche eine vorbestimmte minimale Betriebszeit unterschreitet, obgleich der Neustart an sich erfolgreich durchgeführt wurde, ungewöhnliche Ressourcenzuweisungen während des Startvorgangs, und/oder Manipulation der Taktfrequenz vor dem Startvorgang aus. Die Manipulation der Taktfrequenz soll vor allem dazu dienen, externe Zugriffe auf Adress- und Datenleitungen zu vereinfachen.
Derartige Angriffe erfolgen in der Regel offline, d.h., lokal, ohne dass eine Netzwerkverbindung der angegriffenen Vorrichtung besteht, über die der Angriff erkannt werden könnte, so dass der Besitzer oder Hersteller einer Vorrichtung von den Abgriffen keine Kenntnis erhalten und somit auch keine Gegenmaßnahmen ergreifen können.
Insbesondere bei mikroprozessorgesteuerten Vorrichtungen mit begrenzten Ressourcen, d.h., kleinem Speicher oder geringer Rechenleistung, können aufwendige Schutzmaßnahmen, welche Seitenkanalangriffe erkennen könnten, nicht ohne weiteres implementiert werden, ohne dass zumindest die System performance um ein nicht mehr tolerierbares Maß herabgesetzt wird.
Aus der DE 102019127856 A1 ist ein Verfahren zum sicheren Booten eines Steuergeräts bekannt. Dieses umfasst ein Hardware-Sicherheitsmodul (HSM) und einen Host. Nach dem Anlegen einer Spannung an das Steuergerät und zumindest partielles Booten des HSM wird überprüft, ob ein dem HSM zugeordneter Flag auf einen ersten Wert oder einen zweiten Wert gesetzt ist. Falls das Flag auf den zweiten Wert gesetzt ist, wird eine Integritäts- und Authentifizierungsüberprüfung einer dem Steuergerät zugeordneten Software durchgeführt. Falls das Flag auf den ersten Wert gesetzt ist, wird der Bootvorgang des HSM vervollständigt durch Übermitteln einer Aufforderung von dem HSM an den Host zum Booten des Host. Falls die Integritäts- und Authentifizierungsüberprüfung positiv ist, wird das Flag auf den ersten Wert gesetzt und ein Reboot des HSM eingeleitet. Nun wird erneut überprüft, ob das Flag auf den ersten Wert oder den zweiten Wert gesetzt ist. Der Bootvorgang des HSM wird vervollständigt durch Übermitteln einer Aufforderung von dem HSM an den Host zum Booten des Host, falls das Flag auf den ersten Wert gesetzt ist.
Die US 9740863 B2 offenbart eine Vorrichtung und eine Methode zum Schutz eines sicheren Startvorgangs gegen Seitenkanalangriffe. Die Vorrichtung besteht aus kryptographietauglicher Hardware für einen ersten Startvorgang. Daneben ist ein nichtflüchtiger Speicher zur Speicherung manipulierter Startvorgänge vorgesehen. Eine Vergleichseinheit vergleicht die Anzahl manipulierter Startvorgänge gegen einen Höchstwert. Der Vergleich kann basieren auf den ausgelesenen Zeiten einer ersten Echtzeituhr und einer zweiten Uhr des nichtflüchtigen Speichers. Basierend auf diesem Vergleich transferiert eine Kontrolllogik die Kontrolle vom ersten auf einen zweiten Startvorgang.
In der DE 102019008059 A1 wird ein System und ein Verfahren zum Minimieren der Wahrscheinlichkeit, dass der von einem Bootloader verwendete geheime Schlüssel kompromittiert wird, offenbart. Auf der Vorrichtung ist ein Bootloader installiert. Der Bootloader ist ein Softwareprogramm, das viele Funktionen durchführt. Diese Funktionen können das Prüfen der Prüfsumme des eingehenden Software-Image auf Integrität, das Entschlüsseln des eingehenden Software- Image unter Verwendung eines geheimen Schlüssels, das Löschen von Daten in dem FLASH-Speicher, das Installieren des neuen Software-Image in dem FLASH- Speicher und andere Funktionen beinhalten. Der Bootloader nutzt verschiedene Techniken zum Verfolgen der Versionen des zu installierenden Software-Image. Das Verfahren zählt auch die Anzahl unvollendeter Versuche, die bei dem Versuch der Aktualisierung des Software-Image unternommen werden. Durch Überwachen dieser Parameter kann der Bootloader feststellen, wenn ein böswilliger Akteur den Versuch eines Seitenkanalangriffs unternimmt. In Reaktion darauf kann der Bootloader das Laden eines neuen Software-Image oder Zugriff auf den geheimen Schlüssel nicht zulassen.
Die DE 102009000874 A1 beschreibt ein Verfahren und ein System zur Verbesserung der Analysierbarkeit von Softwarefehlem in einem Mikrocontroller. Ein dem Mikrocomputer zugeordnetes Überwachungsmodul überprüft mindestens eine Funktion des Mikrocontrollers und erzeugt ein Signal, falls eine Fehlfunktion des Mikrocontrollers erkannt wird. Das Signal bewirkt zumindest mittelbar einen Neustart des Mikrocontrollers. Bei dem Neustart wird mindestens ein während des Betriebs des Mikrocontrollers ablaufendes Softwareelement neu gestartet.
Während des fehlerfreien Betriebs des Mikrocontrollers wird mindestens eine Zustandsinformation in einem Speicher abgespeichert, wobei die Zustandsinformation mindestens den Stand eines Befehlszählers umfasst und wobei der Speicher bei einem Neustart nicht sofort überschrieben oder gelöscht wird. Während des Neustarts oder nach erfolgtem Neustart erfolgt ein Zugriff auf die in dem Speicher abgelegten Zustandsinformationen und die Zustandsinformation für eine Analyse eines Softwarefehlers wird zur Verfügung gestellt.
BESCHREIBUNG DER ERFINDUNG
Es ist daher eine Aufgabe der vorliegenden Erfindung, ein Verfahren vorzuschlagen, welches unterschiedliche Arten von Angriffen ohne nennenswerte Beeinträchtigung der System performance erkennt und entsprechende Informationen für die Einleitung oder Auslösung jeweils daran angepasster Gegenmaßnahmen bereitstellt.
Diese Aufgabe wird durch das in Anspruch 1 angegebene Verfahren gelöst. Vorteilhafte Ausgestaltungen und Weiterentwicklungen sind in den abhängigen Ansprüchen angegeben.
Das nachstehend beschriebene erfindungsgemäße Verfahren zur Erkennung der Art eines Angriffs auf einen sicheren Startvorgang wird vorzugsweise in einer separate Überwachungskomponente durchgeführt, welche das Verfahren parallel zu dem eigentlichen Bootprozess ausführt. Alternativ kann das Verfahren auch als separater Prozess eines Bootloaders implementiert sein, welcher als Bestandteil einer Firmware vorzugsweise unveränderbar oder nur unter Passieren weiterer Sicherheitsfunktionen änderbar gespeichert ist und als erstes gestartet wird.
Erfindungsgemäß umfasst das Verfahren als eine erste Komponente, welche vor einer ersten Authentifizierung einer zu ladenden Software oder Softwarekomponente oder vor der Prüfung eines Hash-Werts bzw. einer Prüfsumme über den letzten Block der Software oder Softwarekomponente und ggf. weitere Blöcke ausgeführt wird, das Auslesen mindestens eines Betriebsparameters aus mindestens einer für den Betrieb des Mikroprozessors notwendigen Systemkomponente und Vergleichen des mindestens einen ausgelesenen Betriebsparameters mit entsprechenden gespeicherten Referenzwerten. Der mindestens eine Betriebsparameter kann bspw. eine von einer Power Management Unit bereitgestellte Versorgungsspannung oder einen von einem Taktgenerator bereitgestellten Takt des Systems oder des Mikroprozessors und weiterer Komponenten betreffen. Zugehörige Referenzwerte werden vorzugsweise aus einem besonders gesicherten Speicherbereich ausgelesen, und/oder können kryptographisch gesichert gespeichert sein. Wenn der Vergleich einen Unterschied zeigt, wird ein erstes Signal ausgegeben, welches einen erkannten Seitenkanalangriff und einen fehlgeschlagenen Startvorgang signalisiert, und das Verfahren sowie der weitere Startvorgang werden beendet bzw. abgebrochen. Anderenfalls werden weitere Komponenten des Verfahrens ausgeführt.
Das Verfahren umfasst außerdem als eine zweite Komponente, welche ebenfalls vor einer ersten Authentifizierung einer zu ladenden Software oder Softwarekomponente oder vor der Prüfung eines Hash-Werts bzw. einer Prüfsumme über den letzten Block der Software oder Softwarekomponente und ggf. weitere Blöcke ausgeführt wird, das Prüfen des Zustands eines Flags, welches während eines noch nicht erfolgreich abgeschlossenen Startvorgangs gesetzt ist. Bei gesetztem Flag wird ein zweites Signal ausgegeben, welches einen erkannten Angriff und einen fehlgeschlagenen Startvorgang signalisiert, und das Verfahren sowie der weitere Startvorgang werden beendet bzw. abgebrochen. Wenn das Flag während der Prüfung nicht gesetzt war, wird es anschließend gesetzt, und weitere Komponenten des Verfahrens werden ausgeführt. Vorzugsweise wird das Flag in einem nichtflüchtigen Speicher gesetzt, so dass es seinen Zustand auch ohne Spannungsversorgung eine längere Zeit hält. Diese Komponente kann u.a. zur Erkennung von Fehlerinjektionsangriffen dienen, welche häufig an einer bestimmten Stelle vor dem Ende des Startvorgangs zu einem Reset führen, bspw. aufgrund eines Signals eines Watchdogs, der einen aufgrund einer unzulässigen Änderung einer Software oder Softwarekomponente stehen gebliebenen Startvorgang nach einiger Zeit erkennt, oder Aufgrund eines durch den Angreifer herbeigeführten sogenannten „harten“ Resets, d.h., einem Reset, der durch die Trennung der Vorrichtung von der Stromversorgung erzwungen wird. Da das Flag nicht, wie bei der ordnungsgemäßen Beendigung des Startvorgangs vorgesehen, gelöscht wurde, kann es bei dem darauffolgenden Startvorgang erkannt werden.
Das Verfahren umfasst außerdem als eine dritte Komponente das Berechnen eines Authentifizierungscodes einer zu ladenden Software oder Softwarekomponente und, als ersten Prüfschritt, das Vergleichen des berechneten Authentifizierungscodes mit dem aus einem Speicher ausgelesenen Authentifizierungscode des vorhergehenden Startvorgangs. Wenn der Vergleich einen Unterschied zeigt, wird ein drittes Signal ausgegeben, welches einen erkannten Fehlerinjektionsangriff und einen fehlgeschlagenen Startvorgang signalisiert, und das Verfahren sowie der weitere Startvorgang werden beendet bzw. abgebrochen. Anderenfalls wird der zuvor berechnete Authentifizierungscode, als zweiter Prüfschritt, mit einem aus einem Speicher, vorzugsweise einem sicheren Speicher oder Speicherbereich, ausgelesenen Referenzcode verglichen. Wenn der Vergleich einen Unterschied zeigt, wird ein viertes Signal ausgegeben, welches einen erkannten Fehlerinjektionsangriff und einen fehlgeschlagenen Startvorgang signalisiert, und das Verfahren sowie der weitere Startvorgang werden beendet bzw. abgebrochen. Wenn alle Komponenten ohne erkannten Angriff und Abbruch des Startvorgangs durchlaufen wurden, wird der gespeicherte Authentifizierungscode des vorhergehenden Startvorgangs durch den für den gegenwärtigen Startvorgang berechneten Authentifizierungscode ersetzt, das Flag, welches während eines noch nicht erfolgreich abgeschlossenen Startvorgangs gesetzt ist gelöscht, und das Verfahren beendet. Ggf. kann ein Signal ausgegeben werden, welches einen erfolgreich durchgeführten sicheren Startvorgang signalisiert.
Alternativ zur Berechnung eines Authentifizierungscodes für den Vergleich mit einem entsprechenden Authentifizierungscode eines vorhergehenden Startvorgangs, der u.ll. einen nicht unerheblichen Rechenaufwand mit sich bringt, kann für den ersten Prüfschritt der dritten Komponente ein Hash-Wert oder eine Prüfsumme, bspw. ein CRC-Wert, über den letzten Block der Software oder Softwarekomponente und ggf. weitere Blöcke berechnet werden und mit einem bei dem vorherigen Startvorgang gespeicherten Wert für dieselben Blöcke verglichen werden. Dadurch kann der Aufwand für den ersten Prüfschritt klein gehalten werden, und die aufwendigere Berechnung des Authentifizierungscodes muss erst erfolgen, wenn in diesem ersten Prüfschritt kein Angriff festgestellt wurde. Ein Vorteil ergibt sich daraus insbesondere bei Vorrichtungen, bei denen häufige Angriffe befürchtet werden.
Ein genereller Fehler in der Software oder Softwarekomponente, bspw. aufgrund eines Speicherfehlers, wird über mehrere Startvorgänge identische Hash-Werte oder Prüfsummen aufweisen, während die Hash-Werte oder Prüfsummen bei einem Angriff aufgrund der Änderung in der Regel des letzten Blocks bei jedem Bootvorgang voneinander abweichen werden.
Wenn ein mehrstufiger Startvorgang erfolgt, also mehrere Programme oder Softwarekomponenten nacheinander geladen werden, kann das Verfahren eine vierte Komponente umfassen, welche eine entsprechende korrekte mehrfache Ausführung der dritten Komponente überwacht. Die vierte Komponente umfasst das Vergleichen eines einer gegenwärtig zu ladenden Stufe zugeordneten Werts mit einem dieser Stufe zugeordneten Referenzwert. Der der gegenwärtig zu ladenden Stufe zugeordnete Wert kann bspw. ein Teil einer Datei sein, der den Programmcode enthält, oder anhand des Dateinamens oder anderer Merkmale in einer Tabelle auffindbar sein. Der Referenzwert für jede Stufe des sicheren Startvorgangs oder die Tabelle kann bspw. aus einem sicheren Speicher oder Speicherbereich auslesbar sein. Wenn die einzelnen Stufen in einer bestimmten Reihenfolge nacheinander abgearbeitet werden müssen kann in der Software bzw. Softwarekomponente jeder Stufe ein Zählerwert gespeichert sein, welcher mit dem aktuellen Zählerwert verglichen wird. Nach der erfolgreichen Abarbeitung der Software oder Softwarekomponente einer Stufe wird der Zähler inkrementiert, bevor die nächste Stufe geladen wird, so dass für die nächste Stufe ein neuer Zählerwert für den Vergleich zur Verfügung steht. Der Zähler wird bei Aufruf der vierten Komponente des Verfahrens zunächst zurückgesetzt, und die Software bzw.
Softwarekomponente der ersten Stufe enthält entsprechend den Wert 0.
Wenn der Vergleich einen Unterschied zeigt, wird ein fünftes Signal ausgegeben, welches einen erkannten Fehlerinjektionsangriff und einen fehlgeschlagenen Startvorgang signalisiert, und das Verfahren sowie der weitere Startvorgang werden beendet bzw. abgebrochen. Dabei können u.a. auch die Zählerwerte, welche eine Identifikation der betroffenen Software oder Softwarekomponente erlauben, zur Auswertung der Art des Angriffs bereitgestellt und/oder für eine spätere Verbesserung der Sicherheit gespeichert werden.
Wenn der Vergleich keinen Unterschied zeigt, wird die Ausführung des Startvorgangs fortgesetzt, und die vierte Komponente wird so lange die nachfolgenden Stufen überprüfen, bis die durch den entsprechenden Referenzwert angezeigte letzte Stufe des Startvorgangs geladen wurde.
Bei einer oder mehreren Ausgestaltungen des Verfahrens wird bei Beginn und/oder nach dem erfolgreichen Abschluss des Startvorgangs eine eindeutige Zeitinformation gespeichert, vorzugsweise in einem sicheren Speicher oder Speicherbereich und/oder mit einem in der Vorrichtung gespeicherten geheimen Schlüssel verschlüsselt. Bei jedem neuen Startvorgang wird, vorzugsweise vor der ersten Authentifikation einer Software oder Softwarekomponente, wird eine aktuelle Zeitinformation mit der gespeicherten Zeitinformation verglichen. Wenn die Differenz der beiden Zeitinformationen kleiner als ein vorgegebener Wert oder negativ ist, wird ein sechstes Signal ausgegeben, welches einen erkannten Angriff und einen fehlgeschlagenen Startvorgang signalisiert. Das Verfahren wird dann beendet und der weitere Startvorgang wird abgebrochen. Bei einer alternativen Ausgestaltung werden mehrere Zeitpunkte von aufeinander folgenden Neustartvorgängen gespeichert, und die Anzahl der Neustartvorgänge innerhalb eines vorgegebenen ersten Zeitraums wird mit einem zulässigen Höchstwert verglichen. Wenn die Anzahl der Neustartvorgänge über dem zulässigen Höchstwert liegt, wird ein sechstes Signal ausgegeben, welches einen erkannten Angriff und einen fehlgeschlagenen Startvorgang signalisiert. Das Verfahren wird dann beendet und der weitere Startvorgang wird abgebrochen. Diese Ausgestaltung ist insbesondere dann geeignet, wenn nicht unmittelbar bei Beginn des Startvorgangs eine ausreichend genaue, von dem System unabhängige Zeitinformation zur Verfügung steht, sondern erst nach erfolgtem Systemstart, bspw. von einem externen Zeitsignal wie etwa GPS, NTP-Server, DCF-77 Funksignal oder dergleichen bereitgestellt. Diese Ausgestaltungen nutzen die Erkenntnis, dass eine Vielzahl von Angriffen erfolglos abgebrochen und innerhalb kurzer Zeit wiederholt werden, wobei entweder kein erfolgreich abgeschlossener Startvorgang zustande kommt, oder die tatsächliche Betriebsdauer nach einem erfolgreichen Startvorgang unterhalb einer vorab festgelegten „normalen“ Mindestbetriebsdauer liegt.
Die beiden vorstehenden Ausgestaltungen sind insbesondere zur Erzeugung von Signalen für die Erkennung von Fehlerinjektionsangriffen gut geeignet, die im Allgemeinen eine ressourcenintensive Überwachung des Programmablaufs erfordern. Jedoch zeichnen sich auch Fehlerinjektionsangriffe durch eine Reihe spezifischer Ereignisse oder Merkmale aus, u.a. die Manipulation der Taktfrequenz, häufige Neustartvorgänge der ersten Vorrichtung nach einem Kaltstart, d.h., einem Start nach einer längeren Zeit des Nichtbetriebs, oder einem sogenannten „harten“ Reset, oder die wiederholte Ausführung desselben Softwareabschnitts und Unterbrechungen der gesamten Verifikationskette noch während des Bootvorgangs, wobei lediglich eine bestimmte Stufe des Bootvorgangs wiederholt ausgeführt und verifiziert wird, und wobei bei erfolgloser Verifikation ein Abbruch erfolgt. Die Erkennung eines harten Resets kann bspw. unter Nutzung des Flags für einen noch nicht erfolgreich abgeschlossenen Bootvorgang erfolgen. Von der nach einem ordnungsgemäß ausgeführten Startvorgang ausgeführten Software kann ein weiteres Flag gesetzt werden, wenn diese einen Neustart der Vorrichtung auslöst, so dass anhand der Zustände der beiden Flags eine Unterscheidung des Grunds für den Neustart erfolgen kann. Dabei kann bei einem ordnungsgemäßen Abschalten oder Versetzen der Vorrichtung in einen Ruhezustand das Flag bspw. gelöscht werden, während es zuvor gesetzt wurde.
Bei einer oder mehreren Ausgestaltungen des Verfahrens, bei dem bei Beginn und/oder nach dem erfolgreichen Abschluss des Startvorgangs eine eindeutige Zeitinformation gespeichert wird, werden der Beginn und/oder der erfolgreiche Abschluss des Startvorgangs anhand einer für diese Ereignisse typischen Leistungsaufnahme ermittelt, bspw. durch entsprechende, von einem Power Management IC bereitgestellte Daten. Typischerweise erreicht die Leistungsaufnahme zwischen aufeinanderfolgenden Startvorgängen ein Minimum, um danach rasch wieder anzusteigen.
Bei einer oder mehreren Ausgestaltungen des Verfahrens wird der Beginn des Startvorgangs anhand eines von einem Mikroprozessor ausgegebenen Reset- Signals bestimmt. Solche Reset-Signale werden häufig dazu genutzt, weitere Komponenten der ersten Vorrichtung zu starten, welche erst beim Betrieb der ersten Vorrichtung ebenfalls in einen Betriebszustand versetzt werden müssen.
Bei einer oder mehreren Ausgestaltungen des Verfahrens wird die Zuweisung mindestens einer System ressource der ersten Vorrichtung während des Startvorgangs überwacht, bspw. die Häufigkeit, mit der ein Prozessorcache geleert und einem selben Prozess wieder neu zugewiesen und/oder für diesen Prozess neu beschrieben wird. Die Anzahl der Zuweisungen derselben System ressource zu demselben Prozess innerhalb eines vorbestimmten zweiten Zeitraums wird mit einem für diese System ressource vorgegebenen Höchstwert verglichen. Wenn die Anzahl der Zuweisungen derselben Systemressource zu demselben Prozess den vorgegebenen Höchstwert überschreitet, wird ein siebtes Signal ausgegeben, welches einen erkannten Angriff und einen fehlgeschlagenen Startvorgang signalisiert. Außerdem werden das Verfahren beendet sowie der weitere Startvorgang abgebrochen. Der Begriff Prozess kann dabei für eine beliebige Software oder Softwarekomponente, einen Thread oder dergleichen stehen. Diese Ausgestaltung kann besonders bevorzugt in Multiprozessorsystemen oder Systemen mit Mehrkernprozessoren zum Einsatz kommen, in denen das Verfahren auf einem der Prozessoren oder Prozessorkernen exklusiv und gesichert ausgeführt wird, dabei aber dennoch leichter die Zugriffe auf prozessorinterne System ressourcen erfassen kann.
Gemäß einem weiteren Aspekt der Erfindung umfasst eine Vorrichtung einen oder mehrere Prozessoren sowie diesem bzw. diesen zugeordneten flüchtigen und nichtflüchtigen Speicher, die mittels einer oder mehreren Datenleitungen oder - busse kommunikativ miteinander verbunden sind. In dem nichtflüchtigen Speicher sind Computerprogramm Instruktionen gespeichert welche, wenn sie von dem mindestens einen Prozessor ausgeführt werden, die Vorrichtung zur Ausführung einer oder mehrerer Ausführungsformen des erfindungsgemäßen Verfahrens einrichten.
Ein Computerprogrammprodukt gemäß einem weiteren Aspekt der Erfindung enthält Befehle, die bei der Ausführung durch einen Mikroprozessor einer Vorrichtung diese dazu veranlassen, eine oder mehrere Ausgestaltungen und Weiterentwicklungen des vorstehend beschriebenen Verfahrens ausführen.
Das Computerprogrammprodukt kann auf einem computerlesbaren Medium bzw. Datenträger gespeichert sein. Das Medium bzw. der Datenträger kann physisch verkörpert sein, bspw. als Festplatte, CD, DVD, Flash-Speicher oder dergleichen, das Medium bzw. der Datenträger kann aber auch ein moduliertes elektrisches, elektromagnetisches oder optisches Signal umfassen, das von einem Computer mittels eines entsprechenden Empfängers empfangen und in dem Speicher des Computers gespeichert werden kann.
Das erfindungsgemäße Verfahren ermöglicht es, Seitenkanal- oder Fehlerinjektionsangriffe auf einen sicheren Startvorgang mit einer gegenüber klassischen kryptographischen Verfahren geringeren Beanspruchung der System ressourcen und der System leistung zu erkennen. Insbesondere bei zeitkritischen Startvorgängen von Software oder Softwarekomponenten, welche innerhalb einer bestimmten Maximalzeit abgeschlossen werden müssen, bspw. um in einem Systemkontext mehrerer zumindest teilweise parallel laufender Prozesse eines Systems oder mehrerer kommunikativ miteinander verbundener Vorrichtungen, ist die Möglichkeit vorteilhaft, Angriffe nahezu zeitgleich während des Startvorgangs erkennen zu können ohne diesen nennenswert zu verzögern.
Das erfindungsgemäße Verfahren kann demnach überall dort vorteilhaft eingesetzt werden, wo eine ressourcenschonende Erkennung von Seitenkanaloder Fehlerinjektionsangriffen auf einen sicheren Startvorgang benötigt wird, bspw. bei Geräten des Internet of Things (loT) oder einer verteilten Sensorinfrastruktur.
Vorzugsweise wird die das Verfahren implementierende Software oder Softwarekomponente frühzeitig und vor anderer Software oder anderen Softwarekomponenten geladen, idealerweise als Teil des Bootloaders, so dass die Sicherheitsfunktionen möglichst schnell bereitstehen. Alternativ oder zusätzlich können zumindest einzelne Teile des Verfahrens von einem dedizierten Sicherheitsprozessor ausgeführt werden, welcher fest programmiert ist.
KURZE BESCHREIBUNG DER ZEICHNUNG
Die Erfindung wird im Folgenden anhand der beigefügten Zeichnung näher erläutert. In der Zeichnung zeigt
Fig. 1 ein Flussdiagramm eines exemplarischen Verfahrens zur Erkennung eines Seitenkanalangriffs auf einen AES-CMAC basierten sicheren Startvorgang, Fig. 2 ein exemplarisches Blockdiagramm einer zur Ausführung eines oder mehrerer Aspekte des erfindungsgemäßen Verfahrens eingerichteten Vorrichtung.
Gleiche oder ähnliche Elemente können in den Figuren mit denselben Bezugszeichen referenziert sein.
BESCHREIBUNG VON AUSFÜHRUNGSBEISPIELEN
Figur 1 zeigt ein Flussdiagramm eines exemplarischen Verfahrens 100 zur
Erkennung eines Seitenkanalangriffs auf einen AES-CMAC basierten sicheren Startvorgang einer mikroprozessorgesteuerten Vorrichtung 200. Dabei wird auf die Erkennung einer Manipulation des letzten 128 Bit Blocks des Startvorgangs abgezielt. Für das vorliegende Beispiel wird angenommen, dass bei jeder fehlerhaften Verifikation der Software ein Reset ausgeführt wird. Bei der Überprüfung der Authentizität und Integrität wird ein AES-CMAC Verfahren genutzt, wobei auf jeder Stufe des Startvorgangs der gleiche Schlüssel verwendet wird. Zunächst wird in einer ersten Komponente I das Vorliegen eines Seitenkanalangriffs geprüft. Dazu wird in Schritt 101 mindestens ein derzeitig eingestellter Betriebsparameter mindestens für den Betrieb des Mikroprozessors 202 notwendigen Systemkomponente 208, bspw. einer Takterzeugungseinheit, der Vorrichtung 200 ausgelesen und in Schritt 102 mit aus einem sicheren Speicherbereich 206a ausgelesenen entsprechenden Referenzwerten verglichen. Wenn der Vergleich ergibt, dass der oder die derzeit eingestellten Betriebsparameter nicht mit dem oder den Referenzwerten übereinstimmt, „IT- Zweig von Schritt 102, zweigt das Verfahren zu Schritt 130 ab, in welchem ein Signal ausgegeben wird, welches signalisiert, dass ein Seitenkanalangriff erkannt wurde und dass der sichere Startvorgang fehlgeschlagen ist. Auf das Signal hin können dann entsprechende Gegenmaßnahmen ergriffen werden.
Wenn der Vergleich ergibt, dass die derzeit eingestellten Betriebsparameter mit den Referenzwerten übereinstimmen, „J“-Zweig von Schritt 102, zweigt das Verfahren zu Schritt 103 einer zweiten Komponente II ab, in dem geprüft wird, ob ein Flag „noch nicht erfolgreich abgeschlossener Startvorgang“ gelöscht ist. Falls das Flag gesetzt, d.h., nicht gelöscht ist, „N“-Zweig von Schritt 103, zweigt das Verfahren zu Schritt 130 ab, in welchem ein Signal ausgegeben wird, welches signalisiert, dass der vorige Startvorgang nicht korrekt beendet wurde, dass ein Angriff vorliegt, und dass der sichere Startvorgang fehlgeschlagen ist. Auf das Signal hin können dann wiederum entsprechende Gegenmaßnahmen ergriffen werden.
Ist das Flag gelöscht, also nicht gesetzt, „J“-Zweig von Schritt 103, wird es in Schritt 104 gesetzt. Nunmehr kann die für den sicheren Bootvorgang vorgesehene Software bzw. können die entsprechenden Softwarekomponenten geladen werden, wobei weitere Sicherheitsüberprüfungen erfolgen. In Schritt 105 einer vierten Komponente IV wird ein Zähler für erfolgreich durchlaufene Stufen des aktuellen Startvorgangs zurückgesetzt, und in Schritt 106 geprüft, ob der Zähler für die erfolgreich durchlaufene Stufen des Startvorgangs mit einem Referenzwert für die gegenwärtige Stufe übereinstimmt. Der Referenzwert für jede Stufe des sicheren Startvorgangs kann bspw. in einem sicheren Speicherbereich abgelegt sein. In diesem Fall kann die Software bzw. Softwarekomponente der Stufe bspw. anhand ihres Dateinamens oder anderer Merkmale identifiziert werden und mit einem entsprechend zugeordneten Referenzwert verglichen werden.
Wenn die einzelnen Stufen in einer bestimmten Reihenfolge nacheinander abgearbeitet werden müssen kann in der Software bzw. Softwarekomponente jeder Stufe bspw. ein Zählerwert gespeichert sein, welcher mit dem aktuellen Zählerwert verglichen wird. Die Software bzw. Softwarekomponente der ersten Stufe enthält demnach den Wert 0, da der Zähler im Schritt 105 zurückgesetzt wurde. Jede Software bzw. Softwarekomponente einer Stufe inkrementiert den Zähler nach der erfolgreichen Abarbeitung, so dass für die nächste Stufe ein neuer Zählerwert für den Vergleich zur Verfügung steht.
Anstelle einen Zähler zu inkrementieren kann nach der erfolgreichen Abarbeitung auch ein beliebiger Wert in einen Speicher geschrieben werden, der von jeder Stufe ausgelesen wird, wobei dann jeder Software oder Softwarekomponente der entsprechenden Wert der vorhergehenden Stufe einprogrammiert werden muss. Dies ist insbesondere dann möglich, wenn alle Stufen von einem Hersteller bereitgestellt werden, welcher die Werte kennt. Diese Sicherheitsfunktion kann erkennen, ob eine Stufe des sicheren Startvorgangs übersprungen bzw. ausgelassen wurde.
In Schritt 107 einer dritten Komponente III wird eine Authentifizierung der zu ladenden Software oder Softwarekomponente gemäß der jeweiligen Implementierung in der Vorrichtung durchgeführt, bspw. wird anhand eines in dem sicheren Speicherbereich gespeicherten geheimen Schlüssels eine CMAC für die zu ladende Software oder Softwarekomponente berechnet, gespeichert und in Schritt 108 mit dem ebenfalls gespeicherten Ergebnis der Authentifizierung des vorhergehenden sicheren Startvorgangs verglichen. Für den allerersten Startvorgang kann, ggf. in einer sicheren Umgebung, der korrekte Wert für den vorhergehenden sicheren Startvorgang in den Speicher geschrieben werden, oder auf anderem Wege eine unzutreffende Fehlermeldung und ein Abbruch des Startvorgangs unterdrückt werden. Wenn der Vergleich ergibt, dass die Ergebnisse der beiden unmittelbar aufeinanderfolgenden Authentifizierungsvorgänge voneinander abweichen, „N“-Zweig von Schritt 108, kann davon ausgegangen werden, dass ein Fehlerinjektionsangriff vorliegt, welcher typischerweise mit bei jedem Startvorgang geänderten Blöcken der Software oder Softwarekomponente einhergeht und daher bei jedem Startvorgang ein anderer MAC errechnet wird, und dass der sichere Startvorgang fehlgeschlagen ist. Das Verfahren zweigt entsprechend zu Schritt 130 ab, in welchem ein Signal ausgegeben wird, welches signalisiert, dass ein Fehlerinjektionsangriff vorliegt, und dass der sichere Startvorgang fehlgeschlagen ist.
Wenn der Vergleich ergibt, dass die Ergebnisse der beiden unmittelbar aufeinanderfolgenden Authentifizierungsvorgänge identisch sind, „J“-Zweig von Schritt 108, wird in Schritt 109 das Ergebnis der Authentifizierung mit einem aus einem sicheren Speicherbereich ausgelesenen Referenzwert für die Authentifizierung dieser Software oder Softwarekomponente verglichen. Wenn der Vergleich ergibt, dass das Ergebnis der Authentifizierung auch mit dem Referenzwert für die Authentifizierung übereinstimmt, „J“-Zweig von Schritt 109, wird das Ergebnis der Authentifizierung aus Schritt 107 in Schritt 110 als neues Ergebnis der Authentifizierung des vorhergehenden sicheren Startvorgangs gespeichert. Dabei wird das zuvor gespeicherte Ergebnis überschrieben. Durch das Speichern des jeweils aktuellsten Ergebnisses der Authentizitätsprüfung kann in Schritt 108 ein Fehlerinjektionsangriff schnell erkannt werden. Wenn die Werte zweier aufeinanderfolgender Startvorgänge identisch sind, aber dennoch nicht mit dem Referenzwert übereinstimmen, kann bspw. auf einen Speicherfehler geschlossen werden. Auch eine Änderung des zu speichernden Werts zwischen den Schritten 109 und 110 würde so erkannt werden. Im anschließenden Schritt 111 wird der Zähler für die erfolgreich durchlaufene Stufen des Startvorgangs inkrementiert, und in Schritt 112 wird geprüft, ob der Wert des inkrementierten Zählers mit dem gespeicherten Referenzwert der finalen Stufe des Startvorgangs übereinstimmt. Im positiven Fall, „J“-Zweig von Schritt 112, wird in Schritt 113 das Flag „nicht erfolgreich abgeschlossener Startvorgang“ gelöscht, und der sichere Startvorgang ist erfolgreich beendet.
Wenn der Vergleich in Schritt 109 ergibt, dass das Ergebnis der Authentifizierung nicht mit dem Referenzwert für die Authentifizierung übereinstimmt, „N“-Zweig von Schritt 109, wird in Schritt 120 das Flag „nicht erfolgreich abgeschlossener Startvorgang“ gelöscht, und es wird ein Signal ausgegeben, auf das hin dem Fachmann bekannte Gegenmaßnahmen für secure boot bypassing attacks (Umgehungsangriffe) eingeleitet werden können.
Figur 2 zeigt ein exemplarisches Blockdiagramm einer zur Ausführung eines oder mehrerer Aspekte des erfindungsgemäßen Verfahrens 100 eingerichteten Vorrichtung 200. Die Vorrichtung 200 umfasst neben einem Mikroprozessor 202 flüchtigen und nichtflüchtigen Speicher 204, 206 sowie mindestens eine weitere, für den Betrieb des Mikroprozessors 202 notwendige Systemkomponente, bspw. einen Taktgenerator und/oder ein Power Management IC. Die Elemente der Vorrichtung 200 sind über eine oder mehrere Datenleitungen oder -busse 210 kommunikativ miteinander verbunden. Der nichtflüchtige Speicher 206 enthält Computerprogramminstruktionen die, wenn sie von dem Mikroprozessor 202 ausgeführt werden, die Vorrichtung zur Ausführung einer oder mehrerer Ausgestaltungen des erfindungsgemäßen Verfahrens einrichten.
LISTE DER BEZUGSZEICHEN (Teil der Beschreibung)
100 Verfahren
101 Auslesen Betriebsparameter Takterzeugungseinheit
102 Vergleich mit Referenzwerten der Betriebsparameter
103 Flag gesetzt?
104 Flag setzen
105 Zähler für Stufen zurücksetzen
106 passt der Zählerstand zu der aktuellen Stufe des Startvorgangs?
107 Authentifizierungscode/Hash-Wert/Prüfsumme berechnen
108 passt der Authentifizierungscode/Hash-Wert/die Prüfsumme zu dem vorhergehenden Startvorgang?
109 Vergleichen des Authentifizierungscodes/Hash-Werts/der Prüfsumme mit entsprechendem Referenzwert
110 Authentifizierungscode/Hash-Wert/Prüfsumme speichern
111 Zähler inkrementieren
112 letzte Stufe erreicht?
113 Flag löschen
120 Secure boot bypassing attack (Umgehungsangriff) erkannt, Startvorgang fehlgeschlagen
130 Seitenkanalangriff erkannt, Startvorgang fehlgeschlagen
200 Vorrichtung
202 Mikroprozessor
204 flüchtiger Speicher
206 nicht-flüchtiger Speicher
206a sicherer Speicherbereich
208 weitere System kom ponente
210 Energieleitung bzw. DatenleitungZ-bus

Claims

22
ANSPRÜCHE
1 . Verfahren (100) zur Erkennung der Art eines Angriffs auf einen sicheren Startvorgang einer mikroprozessorgesteuerten Vorrichtung (200), umfassend:
- Auslesen (101 ) mindestens eines Betriebsparameters aus mindestens einer für den Betrieb des Mikroprozessors (202) notwendigen
System kom ponente (208) und Vergleichen (102) des mindestens einen ausgelesenen Betriebsparameters mit entsprechenden gespeicherten Referenzwerten wobei, wenn der Vergleich einen Unterschied zeigt, ein erstes Signal, welches einen erkannten Seitenkanalangriff und einen fehlgeschlagenen Startvorgang signalisiert ausgegeben und das Verfahren beendet sowie der weitere Startvorgang abgebrochen werden,
- Prüfen (103) des Zustands eines Flags, welches während eines noch nicht erfolgreich abgeschlossenen Startvorgangs gesetzt ist, wobei bei gesetztem Flag ein zweites Signal ausgegeben wird, welches einen erkannten Fehlerinjektionsangriff und einen fehlgeschlagenen Startvorgang signalisiert und das Verfahren beendet sowie der weitere Startvorgang abgebrochen werden, wobei bei nicht gesetztem Flag dieses im Anschluss an die Prüfung gesetzt wird,
- Berechnen eines Hash-Wertes oder einer Prüfsumme über mindestens einen Block der Software oder Softwarekomponente, und Vergleichen mit einem bzw. einer für denselben mindestens einen Block der Software oder Softwarekomponente bei dem vorhergehenden Startvorgang gespeicherten Hash-Wertes bzw. Prüfsumme, oder Berechnen (107) eines Authentifizierungscodes einer zu ladenden Software oder Softwarekomponente, und Vergleichen (108) des berechneten Authentifizierungscodes mit dem aus einem Speicher ausgelesenen Authentifizierungscode des vorhergehenden Startvorgangs, wobei, wenn der Vergleich einen Unterschied zeigt, ein drittes Signal ausgegeben wird, welches einen erkannten Angriff und einen fehlgeschlagenen Startvorgang signalisiert und das Verfahren beendet sowie der weitere Startvorgang abgebrochen werden, - Berechnen (107), sofern nicht bereits zuvor erfolgt, eines Authentifizierungscodes einer zu ladenden Software oder Softwarekomponente und Vergleichen (109) des berechneten Authentifizierungscodes mit einem aus einem Speicher ausgelesenen Referenzcode, wobei, wenn der Vergleich einen Unterschied zeigt, ein viertes Signal ausgegeben wird, welches einen erkannten Fehlerinjektionsangriff und einen fehlgeschlagenen Startvorgang signalisiert und das Verfahren beendet sowie der weitere Startvorgang abgebrochen werden,
- Ersetzen (110) des aus dem Speicher ausgelesenen Authentifizierungscodes des vorhergehenden Startvorgangs mit dem für den gegenwärtigen Startvorgang berechneten Authentifizierungscode, und Löschen (113) des Flags, welches während eines noch nicht erfolgreich abgeschlossenen Startvorgangs gesetzt ist. Verfahren (100) nach Anspruch 1 , außerdem umfassend, wenn der Startvorgang mehrstufig gestaltet ist:
- Vergleichen (106) einer gegenwärtigen Stufe eines mehrstufigen Startvorgangs mit einem dieser Stufe zugeordneten Referenzwert, wobei, wenn der Vergleich einen Unterschied zeigt, ein fünftes Signal ausgegeben wird, welches einen erkannten Fehlerinjektionsangriff und einen fehlgeschlagenen Startvorgang signalisiert und das Verfahren beendet sowie der weitere Startvorgang abgebrochen werden, und wobei anderenfalls die Ausführung des Startvorgangs und das Laden nachfolgender Stufen so lange fortgesetzt wird, bis die durch den entsprechenden Referenzwert angezeigte letzte Stufe des Startvorgangs geladen wurde. Verfahren (100) nach Anspruch 1 oder 2, außerdem umfassend:
- Speichern einer eindeutigen Zeitinformation bei Beginn und/oder nach erfolgreichem Abschluss des Startvorgangs,
- Vergleichen, bei jedem neuen Startvorgang, einer aktuellen Zeitinformation mit der bei einem vorherigen Startvorgang gespeicherten Zeitinformation, wobei, wenn der Vergleich eine Differenz zeigt, die kleiner als ein vorgegebener Wert ist, ein sechstes Signal ausgegeben wird, welches einen erkannten Angriff und einen fehlgeschlagenen Startvorgang signalisiert und das Verfahren beendet sowie der weitere Startvorgang abgebrochen werden. Verfahren (100) nach Anspruch 1 oder 2, außerdem umfassend:
- Speichern einer eindeutigen Zeitinformation bei Beginn und/oder nach erfolgreichem Abschluss des Startvorgangs,
- Vergleichen, bei jedem neuen Startvorgang, der Anzahl der vorhergehenden Neustartvorgänge innerhalb einer vorgegebenen Zeit mit einem zulässigen Höchstwert, wobei, wenn die Anzahl der Neustartvorgänge über dem zulässigen Höchstwert liegt, ein sechstes Signal ausgegeben wird, welches einen erkannten Angriff und einen fehlgeschlagenen Startvorgang signalisiert und das Verfahren beendet sowie der weitere Startvorgang abgebrochen werden. Verfahren nach Anspruch 3 oder 4, wobei der Beginn und/oder der erfolgreiche Abschluss eines Startvorgangs anhand einer für diese Ereignisse typischen Leistungsaufnahme ermittelt werden. Verfahren nach Anspruch 3 oder 4, wobei der Beginn eines Startvorgangs anhand eines von einem Mikroprozessor ausgegebenen Reset-Signals bestimmt wird. Verfahren nach einem der vorhergehenden Ansprüche, außerdem umfassend:
- Überwachen der Zuweisung mindestens einer System ressource der ersten Vorrichtung (10) während des Startvorgangs, und
- Vergleichen der Anzahl der Zuweisungen einer selben System ressource zu einem selben Prozess innerhalb eines vorbestimmten zweiten Zeitraums mit einem für diese System ressource vorgegebenen Höchstwert, wobei, wenn die Anzahl der Zuweisungen derselben System ressource zu demselben Prozess den vorgegebenen Höchstwert überschreitet, ein siebtes Signal ausgegeben wird, welches einen erkannten Angriff und einen 25 fehlgeschlagenen Startvorgang signalisiert und das Verfahren beendet sowie der weitere Startvorgang abgebrochen werden.
8. Vorrichtung (200) mit mindestens einem Prozessor (202), flüchtigem (204) und nicht-flüchtigem (206) Speicher und mindestens einer weiteren, für den Betrieb des Mikroprozessors notwendigen Systemkomponente (208), die über eine oder mehrere Datenleitungen bzw. einen oder mehrere Datenbusse (210) kommunikativ miteinander verbunden sind, wobei in dem nichtflüchtigen Speicher (206) Computerprogramminstruktionen abrufbar gespeichert sind welche, wenn sie von dem mindestens einen Prozessor (202) ausgeführt werden, die Vorrichtung (200) zur Ausführung des Verfahrens (100) nach einem der vorhergehenden Ansprüche 1 bis 10 einrichten.
9. Computerprogrammprodukt umfassend Befehle, die bei der Ausführung des Programms durch einen Mikroprozessor (202) einer Vorrichtung (200) diese veranlassen, das Verfahren (100) nach einem oder mehreren der Ansprüche 1 bis 7 auszuführen.
10. Computerlesbares Medium, auf dem das Computerprogrammprodukt nach Anspruch 9 gespeichert ist.
EP22812429.3A 2021-11-18 2022-11-15 Verfahren zur erkennung von auf eine manipulation hindeutenden anomalien während eines sicheren startvorgangs einer softwaregesteuerten vorrichtung Withdrawn EP4433925A1 (de)

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
DE102021212994.3A DE102021212994B3 (de) 2021-11-18 2021-11-18 Verfahren zur Erkennung von auf eine Manipulation hindeutenden Anomalien während eines sicheren Startvorgangs einer softwaregesteuerten Vorrichtung
PCT/DE2022/200269 WO2023088523A1 (de) 2021-11-18 2022-11-15 Verfahren zur erkennung von auf eine manipulation hindeutenden anomalien während eines sicheren startvorgangs einer softwaregesteuerten vorrichtung

Publications (1)

Publication Number Publication Date
EP4433925A1 true EP4433925A1 (de) 2024-09-25

Family

ID=84362818

Family Applications (1)

Application Number Title Priority Date Filing Date
EP22812429.3A Withdrawn EP4433925A1 (de) 2021-11-18 2022-11-15 Verfahren zur erkennung von auf eine manipulation hindeutenden anomalien während eines sicheren startvorgangs einer softwaregesteuerten vorrichtung

Country Status (5)

Country Link
US (1) US20250013752A1 (de)
EP (1) EP4433925A1 (de)
JP (1) JP7696063B2 (de)
DE (1) DE102021212994B3 (de)
WO (1) WO2023088523A1 (de)

Families Citing this family (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
DE102022201901A1 (de) * 2022-02-23 2023-08-24 Robert Bosch Gesellschaft mit beschränkter Haftung Mitigation einer manipulation von software eines fahrzeugs
TWI830443B (zh) * 2022-10-18 2024-01-21 新唐科技股份有限公司 針對攻擊進行處置的安全處理裝置、方法與電子設備

Family Cites Families (12)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2004206683A (ja) 2002-12-11 2004-07-22 Nihon Intelligence Corp システム管理装置、方法及びプログラム、管理サーバシステム及びその制御方法並びに保険方法、セキュリティプログラム、セキュリティ管理方法、コンピュータ及びサーバコンピュータ
DE102009000874A1 (de) 2009-02-16 2010-08-19 Robert Bosch Gmbh Verfahren zur Verbesserung der Analysierbarkeit von Softwarefehlern in einem Mikrocontroller
KR20120092222A (ko) * 2011-02-11 2012-08-21 삼성전자주식회사 보안 부팅 방법 및 보안 부트 이미지 생성 방법
US9165143B1 (en) * 2013-03-15 2015-10-20 Xilinx, Inc. Image file generation and loading
US9740863B2 (en) 2014-11-25 2017-08-22 Intel Corporation Protecting a secure boot process against side channel attacks
EP3026557A1 (de) 2014-11-28 2016-06-01 Thomson Licensing Verfahren und Vorrichtung zur Bereitstellung von Überprüfungsanwendungsintegrität
US10057243B1 (en) 2017-11-30 2018-08-21 Mocana Corporation System and method for securing data transport between a non-IP endpoint device that is connected to a gateway device and a connected service
JP2020091698A (ja) 2018-12-06 2020-06-11 キヤノン株式会社 情報処理装置及びその制御方法
US10769280B2 (en) 2018-12-13 2020-09-08 Silicon Laboratories, Inc. Side channel attack countermeasures for secure bootloading
NL2022902B1 (en) * 2019-04-09 2020-10-20 Univ Delft Tech Integrated circuit device for loT applications
US20220179960A1 (en) 2019-06-10 2022-06-09 Google Llc Secure Verification of Firmware
DE102019127856B4 (de) 2019-10-16 2025-09-18 Avl Software And Functions Gmbh Verfahren zum sicheren Booten eines Steuergeräts und Steuergerät

Also Published As

Publication number Publication date
WO2023088523A1 (de) 2023-05-25
JP7696063B2 (ja) 2025-06-19
JP2024540573A (ja) 2024-10-31
US20250013752A1 (en) 2025-01-09
DE102021212994B3 (de) 2023-04-20

Similar Documents

Publication Publication Date Title
DE60303753T2 (de) Selektives Erkennen von böswilligem Rechnercode
DE202011111121U1 (de) System zum Erfassen komplexer Schadsoftware
DE102022105069A1 (de) Systeme, verfahren und vorrichtungen für gesicherte nichtflüchtige speicher
EP3752911B1 (de) Verfahren zum installieren eines programmcodepakets in ein gerät sowie gerät und kraftfahrzeug
EP4396715B1 (de) Automatische analyse einer ausnutzbarkeit von schwachstellen eines software-images
EP4433925A1 (de) Verfahren zur erkennung von auf eine manipulation hindeutenden anomalien während eines sicheren startvorgangs einer softwaregesteuerten vorrichtung
EP3811260B1 (de) Kryptografiemodul und betriebsverfahren hierfür
DE102021104326A1 (de) Sichere speicherverbesserungen für authentifizierungssysteme
EP4463784B1 (de) Dynamische integritätsüberwachung einer auf einem gastrechner ausgeführten container-laufzeitumgebung
DE102019127856B4 (de) Verfahren zum sicheren Booten eines Steuergeräts und Steuergerät
DE102014204417A1 (de) Vorrichtung und Verfahren zum Detektieren einer Manipulation an einem Programmcode
DE102020207866A1 (de) Verfahren zum Durchführen einer abgesicherten Startsequenz eines Steuergeräts
DE102020207863A1 (de) Verfahren zur sicheren Aktualisierung von Steuergeräten
DE102019214678A1 (de) System und Verfahren zum beschleunigten und sicheren Starten eines Systems
DE102020207861A1 (de) Verfahren zur Durchführung einer abgesicherten Startsequenz eines Steuergeräts
EP3074862B1 (de) Verfahren für einen sicheren hochfahrablauf eines elektronischen systems
DE102005046696B4 (de) Verfahren zum Erzeugen von geschütztem Programmcode und Verfahren zum Ausführen von Programmcode eines geschützten Computerprogramms sowie Computerprogrammprodukt
EP3072080B1 (de) Verfahren und vorrichtung zum manipulationsschutz einer recheneinrichtung
EP4517570A1 (de) Verfahren und system zum überprüfen der integrität einer regelwerksdatenbank
WO2024156570A1 (de) Verfahren zum starten einer datenverarbeitungseinrichtung, datenverarbeitungseinrichtung und kraftfahrzeug
EP4682751A1 (de) Verfahren und vorrichtung zur integritätsprüfung einer ausführbaren funktion einer geräteinheit
DE102022200544A1 (de) Verfahren zur abgesicherten Bereitstellung eines zu schützenden Computerpro-gramms in einer Recheneinheit
DE102023136830A1 (de) Fahrzeugcomputersystem und -verfahren
DE102023115928A1 (de) Verfahren zum Starten einer Datenverarbeitungseinrichtung, Datenverarbeitungseinrichtung und Kraftfahrzeug
DE102024132407A1 (de) Mikrocontroller-Einheit, Verfahren und Computerprogramm zur Änderung von Anwendungen

Legal Events

Date Code Title Description
STAA Information on the status of an ep patent application or granted ep patent

Free format text: STATUS: UNKNOWN

STAA Information on the status of an ep patent application or granted ep patent

Free format text: STATUS: THE INTERNATIONAL PUBLICATION HAS BEEN MADE

PUAI Public reference made under article 153(3) epc to a published international application that has entered the european phase

Free format text: ORIGINAL CODE: 0009012

STAA Information on the status of an ep patent application or granted ep patent

Free format text: STATUS: REQUEST FOR EXAMINATION WAS MADE

17P Request for examination filed

Effective date: 20240618

AK Designated contracting states

Kind code of ref document: A1

Designated state(s): AL AT BE BG CH CY CZ DE DK EE ES FI FR GB GR HR HU IE IS IT LI LT LU LV MC ME MK MT NL NO PL PT RO RS SE SI SK SM TR

STAA Information on the status of an ep patent application or granted ep patent

Free format text: STATUS: THE APPLICATION HAS BEEN WITHDRAWN

18W Application withdrawn

Effective date: 20241203