Beschreibung description
Verfahren für das Konfigurieren eines Sicherheitsmoduls mit mindestens einem abgeleiteten Schlüssel Procedure for configuring a security module with at least one derived key
Moderne Datenverarbeitungsanlagen benötigen für kryptographi- sche Operationen wie Verschlüsselung von Daten oder Authenti- fizierung von Systemen oder ( Software- ) Modulen untereinander sogenannte Vertrauensanker (Trust Anchor) . Ein Trust Anchor oder Trust Point bildet die Basis für den Schutz von Geräten, z.B. IOT-Geräte oder Feldgeräte bzw. Datenverarbeitungsanla gen wie beispielsweise Embedded Systemen oder Steuerrechnern. Mittels eines Trust Anchors kann das Vertrauen in das unkom- promittierte Funktionieren der Datenverarbeitungsanlage beim Systemstart und/oder während des laufenden Betriebs gewähr leistet werden. Ein Trust Anchor kann einen kryptographischen Schlüssel umfassen, der beispielsweise für einen sicheren Boot-Vorgang oder für die Authentisierung der Datenverarbei tungsanlage oder für das Nutzen einer Schlüsseldatei der Da tenverarbeitungsanlage oder für das Bestätigen eines Be triebszustands der Datenverarbeitungsanlage oder für das Überprüfen einer Aktualisierungsdatei (Firmware Update) ver wendbar ist. Die Bezeichnung "Anchor" (deutsch: Anker) rührt daher, dass Sicherheits- oder Vertrauensstellungskonzepte der Datenverarbeitungsanlagen den Trust Anchor als Basis nutzen und dabei vorausgesetzt wird bzw. werden muss, dass der Trust Anchor selbst sicher und unkompromittiert ist. Modern data processing systems require so-called trust anchors for cryptographic operations such as encryption of data or authentication of systems or (software) modules with one another. A trust anchor or trust point forms the basis for protecting devices, e.g. IOT devices or field devices or data processing systems such as embedded systems or control computers. A trust anchor can be used to guarantee the uncompromised functioning of the data processing system when the system is started and / or during ongoing operation. A trust anchor can include a cryptographic key that is used, for example, for a secure boot process or for authentication of the data processing system or for using a key file of the data processing system or for confirming an operating status of the data processing system or for checking an update file (firmware Update) can be used. The term "anchor" (German: anchor) comes from the fact that security or trust concepts of the data processing systems use the trust anchor as a basis and it is or must be assumed that the trust anchor itself is secure and uncompromised.
Ein bekannter Trust Anchor ist beispielsweise das durch For example, a well-known trust anchor is through
ISO/IEC 11889 im Jahre 2009 spezifizierte Trusted Platform Module (TPM) , das in jedem modernen PC vorhanden ist und von modernen Betriebssystemen für bestimmte kryptographische Ope rationen zwingend vorausgesetzt wird. Beispielsweise fußt die Festplattenverschlüsselung "BitLocker" des weitverbreiteten Betriebssystems "Windows" auf einem TPM. Es sind jedoch viel fältige andere Realisierungen eines Trust Anchors denkbar, beispielsweise ein Kryptocontroller, ein Authentisierungsbau-
stein oder ein in eine CPU integriertes Sicherheitselement (Secure Element) . ISO / IEC 11889 specified Trusted Platform Module (TPM) in 2009, which is available in every modern PC and which modern operating systems require for certain cryptographic operations. For example, the hard disk encryption "BitLocker" of the widely used "Windows" operating system is based on a TPM. However, many other implementations of a trust anchor are conceivable, for example a crypto controller, an authentication structure stone or a security element integrated in a CPU (secure element).
Es ist möglich, ein Sicherheitsmodul mit n>2 Schlüsseln zu betreiben. Es kann iterativ für alle l<i<n ein Schlüssel der Generation i aus dem Schlüssel der Generation i-1 abgeleitet und in einem Speicherabschnitt i gespeichert werden. Es kön nen damit nach Klassen geordnete kryptographische Operationen durchgeführt werden, wobei kryptographische Operationen der k-ten Klasse mit dem im k-ten Speicherabschnitt gespeicherten Schlüssel durchgeführt werden, wobei l<k<n. It is possible to operate a security module with n> 2 keys. A key of generation i can be derived iteratively for all l <i <n from the key of generation i-1 and stored in a memory section i. Cryptographic operations arranged according to classes can thus be carried out, with cryptographic operations of the kth class being carried out with the key stored in the kth memory section, where l <k <n.
Von gespeicherten Schlüsseln können weitere Schlüssel abge leitet werden, z.B. mittels einer Schlüsselableitungsfunktion (Key Derivation Function, KDF) . Die Ableitung von Schlüsseln basiert auf statischen Eigenschaften. Beispielsweise erfolgt eine Schlüsselableitung in Abhängigkeit einer Software- Binärdatei, festen Labels in einem Dateisystem, oder hartco dierten Ableitungswerten in einer Firmware. Erlangt ein An greifer die Kontrolle über einen Teil des Systems, z.B. durch Ausnutzen einer Softwareschwachstelle, sind die abgeleiteten Schlüssel nicht ausreichend geschützt. Insbesondere können die von anderen Softwarekomponenten verwendeten Schlüssel zu jedem Zeitpunkt durch einen Angreifer rekonstruiert (abgelei tet) werden. Other keys can be derived from stored keys, e.g. by means of a key derivation function (KDF). The derivation of keys is based on static properties. For example, a key derivation takes place as a function of a software binary file, fixed labels in a file system, or hard-coded derivation values in firmware. If an attacker gains control of a part of the system, e.g. by exploiting a software vulnerability, the derived keys are not sufficiently protected. In particular, the keys used by other software components can be reconstructed (derived) by an attacker at any time.
Es ist daher eine Aufgabe der vorliegenden Erfindung, ein Verfahren für die Handhabung von Schlüsseln anzugeben, wel ches gegenüber dem eingangs Genannten einen verbesserten Schutz gegen Angreifer aufweist. It is therefore an object of the present invention to provide a method for the handling of keys which has an improved protection against attackers compared to what was mentioned at the beginning.
Es ist Aufgabe der vorliegenden Erfindung, Verfahren und Vor- bzw. Einrichtungen bzw. Geräte mit gegenüber dem oben genann ten Stand der Technik zu verbessern. It is the object of the present invention to improve methods and devices or devices with respect to the prior art mentioned above.
Die Aufgabe wird durch die in den unabhängigen Ansprüchen an gegebenen Merkmale gelöst. In den abhängigen Ansprüchen sind vorteilhafte Weiterbildungen der Erfindung dargestellt.
Die Erfindung beansprucht ein Verfahren für das Konfigurieren eines Sicherheitsmoduls mit mindestens einem abgeleiteten Schlüssel, aufweisend folgende Schritte: The object is achieved by the features given in the independent claims. In the dependent claims, advantageous developments of the invention are presented. The invention claims a method for configuring a security module with at least one derived key, comprising the following steps:
- Bereitstellen eines Schlüssels; - Providing a key;
- Ableiten eines weiteren Schlüssels aus dem bereitgestellten oder aus einem zuvor aus dem bereitgestellten Schlüssel ab geleiteten Schlüssel, - Deriving a further key from the key provided or from a key previously derived from the key provided,
dadurch gekennzeichnet, dass in die Ableitung ein veränderba rer bzw. variabler digitaler Fingerabdruck als Schlüsselab leitungsparameter eingeht bzw. berücksichtigt wird, welcher abhängig von einer messbaren aktuellen Laufzeitkonfiguration einer mit dem Sicherheitsmodul kommunizierenden Laufzeitumge bung gebildet wird. characterized in that a changeable or variable digital fingerprint is included or taken into account as a key derivation parameter in the derivation, which is formed depending on a measurable current runtime configuration of a runtime environment communicating with the security module.
Das Konfigurieren des Sicherheitsmoduls erfolgt dabei während der Laufzeit der das Sicherheitsmodul betreibenden Laufzeit umgebung. Dadurch wird abhängig von der tatsächlichen aktuel len Laufzeitkonfiguration das Sicherheitsmodul umkonfigu riert. Dies kann einmalig, vorzugsweise aber wiederholt wäh rend der Laufzeit der Laufzeitumgebung erfolgen. Vorzugsweise wird bei der Durchführung der Schlüsselableitung der jeweils aktuelle Fingerprint der Laufzeitumgebung ermittelt und davon abhängig erfolgt die Schlüsselableitung. Dabei erfolgen Mes sungen zur Ermittlung des Fingerprints vorzugsweise ebenfalls bei der Durchführung der Schlüsselableitung. Eine Messung kann durch die Laufzeitumgebung selbst erfolgen und dem Si cherheitsmodul bereitgestellt werden. Dazu wird vorzugsweise ein spezieller Fingerprint-Messprozess (oder Fingerprint- Messprozess-Task) in der Laufzeitumgebung zusätzlich zu ande ren Prozessen ausgeführt. Der Messprozess kann z.B. durch ei nen Hypervisor von anderen Prozessen isoliert sein. Die Mes sung kann jedoch auf einem separaten Rechenkern (Core) einer Mehrkern-Laufzeitumgebung, auf einer separaten Messvorrich tung, z.B. einem separaten Mikrocontroller, oder durch das Sicherheitsmodul selbst erfolgen.
Das Sicherheitsmodul kann Teil eines Gerätes sein. Der be- reitgestellte Schlüssel kann ein Masterkey oder Initial schlüssel oder aus diesen abgeleitet sein. In Ausgestaltungen der Erfindung kann der Initialschlüssel so implementiert wer den, dass jedweder andere Zugriff unterbunden wird oder phy sikalisch unmöglich ist. The security module is configured during the runtime of the runtime environment operating the security module. This means that the safety module is reconfigured depending on the actual current runtime configuration. This can be done once, but preferably repeatedly during the runtime of the runtime environment. When the key is derived, the current fingerprint of the runtime environment is preferably determined and the key is derived as a function of this. Measurements to determine the fingerprint are preferably also carried out when the key is derived. A measurement can be carried out by the runtime environment itself and made available to the security module. For this purpose, a special fingerprint measurement process (or fingerprint measurement process task) is preferably carried out in the runtime environment in addition to other processes. The measurement process can be isolated from other processes, for example by a hypervisor. The measurement can, however, take place on a separate computing core (core) of a multi-core runtime environment, on a separate measuring device, for example a separate microcontroller, or by the security module itself. The security module can be part of a device. The key provided can be a master key or initial key or it can be derived from these. In embodiments of the invention, the initial key can be implemented in such a way that any other access is prevented or is physically impossible.
Die Laufzeitumgebung wird beispielsweise durch eine CPU bzw. Recheneinrichtung gebildet, welche das Sicherheitsmodul an spricht bzw. steuert bzw. mit ihr kommuniziert, wobei durch das erfindungsgemäße Verfahren das Sicherheitsmodul konfigu riert wird. The runtime environment is formed, for example, by a CPU or computing device, which addresses or controls or communicates with the security module, the security module being configured by the method according to the invention.
Die Laufzeiteigenschaften einer regulären, operativen Lauf zeitumgebung können erfasst werden und als Eingabeparameter für eine Schlüsselableitung verwendet werden. Die messbare bzw. überwachbare aktuelle Laufzeitkonfiguration liefert ei nen Fingerabdruck, der sich bei einem manipulierten System ändert. Manipulationen sind z.B. das Starten eines zusätzli chen Prozesses oder die Integritätsinformation von Betriebs daten. Der Fingerabdruck wird dynamisch zur Laufzeit bestimmt und geht als Schlüsselableitungsparameter in eine Schlüssel ableitungsfunktion oder als Schlüsselbildungsparameter in ei ne Schlüsselgenerierungsfunktion ein. Dies hat den Vorteil, dass bei einer veränderten Laufzeit-Integritätsinformation kryptographische Schlüssel des nicht-manipulierten Zustands nicht ermittelbar sind. The runtime properties of a regular, operational runtime environment can be recorded and used as input parameters for key derivation. The current runtime configuration that can be measured or monitored provides a fingerprint that changes if the system is manipulated. Manipulations are e.g. starting an additional process or the integrity information of operating data. The fingerprint is determined dynamically at runtime and is used as a key derivation parameter in a key derivation function or as a key generation parameter in a key generation function. This has the advantage that if the runtime integrity information is changed, cryptographic keys of the non-manipulated state cannot be determined.
Der oben genannte Schritt des Ableitens eines weiteren The above step of deriving another
Schlüssels kann (iterativ) ein- oder mehrfach wiederholt wer den. Zumindest eine kryptographische Operation kann mit Hilfe des abgeleiteten weiteren Schlüssels durchgeführt werden. Schlüsselwechselereignisse können beispielsweise spezielle Kommandos zur Schlüsselaktualisierung sein oder der Wechsel der übergeordneten Datenverarbeitungsanlage in einen anderen (Betriebs- ) zustand . Auch die Ausführung einer kryptographi- schen Operation kann als Schlüsselwechselereignis dienen, was die Implementierung von Schlüsseln zur lediglich einmaligen Verwendung für eine Operation (z.B. für das Verschlüsseln von
Daten) erlaubt, wobei diese Schlüssel anschließend noch für andere Operationen (z.B. für das Entschlüsseln oder Verifi zieren) zur Verfügung stehen können. The key can be repeated (iteratively) one or more times. At least one cryptographic operation can be carried out with the help of the derived further key. Key change events can be, for example, special commands for key updates or the change of the higher-level data processing system to another (operating) state. The execution of a cryptographic operation can also serve as a key change event, which means that the implementation of keys for only one-time use for an operation (eg for encrypting Data), whereby these keys can then be available for other operations (e.g. for decryption or verification).
Die messbare Laufzeitkonfiguration kann mindestens einen er mittelbaren Zustand der Laufzeitumgebung oder mindestens ei nen durch einen überwachbaren Ereigniseintritt ausgelösten Zustand der Laufzeitumgebung umfassen. Zustände der Laufzeit umgebung und/oder Ereigniseintritte sind hierbei messbare Laufzeiteigenschaften der Laufzeitumgebung zu einem bestimm ten Zeitpunkt. Diese Laufzeitkonfiguration kann einen variab len Fingerabdruck bilden (Runtime Integrity Fingerprint) , der die Integrität sicherstellt. Messbar zu einem bestimmten Zeitpunkt sind z.B. HW-Zähler, Realtimeclock, Meta-Info (zu laufenden Prozessen bzw. zum Dateisystem, Dateieigenschaften, dezidierte Dateien, zustandsbestimmende Sicherheitsmechanis men, statische Daten, Dateiinhalte, Prozessname, Prozessnum mer, Prozesspriorität, Watchdog, Benchmarkfunktionen, Zustand der Peripherie, Stromverbrauchsprofil, Profil einer elektro magnetischen Abstrahlung etc. The measurable runtime configuration can comprise at least one ascertainable state of the runtime environment or at least one state of the runtime environment triggered by a monitorable event occurrence. States of the runtime environment and / or occurrences of events are measurable runtime properties of the runtime environment at a certain point in time. This runtime configuration can form a variable fingerprint (Runtime Integrity Fingerprint), which ensures the integrity. Measurable at a certain point in time are e.g. Hardware counter, real-time clock, meta-info (on running processes or on the file system, file properties, dedicated files, state-determining security mechanisms, static data, file contents, process name, process number, process priority, watchdog, benchmark functions, state of the peripherals, power consumption profile, profile electromagnetic radiation etc.
Vorteilhaft wird eine Einwegfunktion für die Schlüsselablei tung verwendet. Eine Einwegfunktion ist eine Funktion, bei der aus dem abgeleiteten Schlüssel nur mit sehr hohem Aufwand (bzgl. Rechenleistung und Speicher) auf den zugrundeliegenden Schlüssel geschlossen werden kann. A one-way function for the key derivative is advantageously used. A one-way function is a function in which the key on which it is based can only be deduced from the key with a great deal of effort (with regard to computing power and memory).
Bei den überwachbaren bzw. messbaren Laufzeiteigenschaften handelt es sich sowohl um statische Eigenschaften (z.B. der Prüfsumme eines read-only Dateisystems), als auch um dynami sche Eigenschaften (z.B. die aktuelle Laufzeit des Systems seit einem Power-on Reset - POR) . Die wiederholte Ableitung des gleichen Schlüssels wird somit an den Zustand der Lauf- zeitumgebung gebunden. Ändert sich dieser Zustand, entweder durch das vorgesehene Wechseln der Betriebsphase oder durch Änderungen in Folge eines Angriffs, werden andere Schlüssel abgeleitet. Auch können Seitenkanalinformationen als Finger-
print gemessen werden, z.B. das Zeitverhalten (z.B. Cache Ti ming) oder das Stromverbrauchsprofil. The monitorable or measurable runtime properties are both static properties (e.g. the checksum of a read-only file system) and dynamic properties (e.g. the current runtime of the system since a power-on reset - POR). The repeated derivation of the same key is thus linked to the status of the runtime environment. If this status changes, either due to the intended change in the operating phase or due to changes as a result of an attack, other keys are derived. Side channel information can also be used as finger print, e.g. the time behavior (e.g. cache timing) or the power consumption profile.
Ein Angriff (Änderungen, die zur Laufzeit auftreten, z.B. dem Starten eines schadhaften Prozesses nach Ausnutzen einer Softwareschwachstelle) kann zu einer Veränderung der Lauf- zeiteigenschaften der Laufzeitumgebung führen. Werden diese in einer Schlüsselableitung berücksichtigt, führen solche An griffe automatisch dazu, dass nicht mehr die gleichen Schlüs sel wie in einem integren Zustand des Gerätes abgeleitet wer den können und somit kritische Daten (z.B. verschlüsselte Da teien) vor einem Angreifer besser geschützt werden. An attack (changes that occur during runtime, e.g. starting a malicious process after exploiting a software vulnerability) can lead to a change in the runtime properties of the runtime environment. If these are taken into account in a key derivation, such attacks automatically lead to the fact that the same keys can no longer be derived as in an integral state of the device and thus critical data (e.g. encrypted files) are better protected against an attacker.
Die vorliegende Erfindung betrifft ferner ein Sicherheitsmo dul, ein Gerät sowie ein Computerprogrammprodukt. The present invention also relates to a safety module, a device and a computer program product.
Das beanspruchte Sicherheitsmodul ist konfigurierbar mit min destens einem abgeleiteten Schlüssel, aufweisend: The claimed security module can be configured with at least one derived key, having:
- eine Empfangseinheit für einen bereitgestellten Schlüssel; a receiving unit for a key provided;
- eine Ableiteinheit zum Ableiten eines weiteren Schlüssels aus dem bereitgestellten oder aus einem zuvor aus dem be- reitgestellten Schlüssel abgeleiteten Schlüssel, a deriving unit for deriving a further key from the key provided or from a key previously derived from the key provided,
gekennzeichnet durch marked by
eine Erzeugungseinheit, die dazu ausgelegt ist, einen verän derbaren bzw. variablen Fingerabdruck mit Hilfe einer messba ren aktuellen Laufzeitkonfiguration einer mit dem Sicher heitsmodul kommunizierenden Laufzeitumgebung zu bilden, wel cher als Schlüsselableitungsparameter in die Ableitung ein geht . a generation unit which is designed to generate a changeable or variable fingerprint with the aid of a measurable current runtime configuration of a runtime environment communicating with the security module, which is included in the derivation as a key derivation parameter.
Das Gerät mit einer Laufzeitumgebung weist ein solches Si cherheitsmoduls auf, gekennzeichnet durch The device with a runtime environment has such a security module, characterized by
- eine Bereitstellungseinheit zur Bereitstellung eines - A delivery unit for providing a
Schlüssels und Key and
- eine Messeinheit zum Messen einer aktuellen Laufzeitkonfi guration, mit deren Hilfe ein variabler Fingerabdruck gebil det wird, welcher als Schlüsselableitungsparameter in eine Ableitung eines weiteren Schlüssels aus dem bereitgestellten
oder aus einem zuvor aus dem bereitgestellten Schlüssel abge leiteten Schlüssels eingeht. - A measuring unit for measuring a current runtime configuration, with the help of which a variable fingerprint is formed, which is used as a key derivation parameter in a derivation of a further key from the provided or from a key previously derived from the key provided.
Das Computerprogrammprodukt umfassend computerausführbare An weisungen, welche, wenn in ein Gerät (z.B. Computer) geladen, zur Durchführung eines Verfahrens nach der oben genannten Art und Aus führungs formen ausgelegt sind. The computer program product comprises computer-executable instructions which, when loaded into a device (e.g. computer), are designed to carry out a method according to the above-mentioned type and embodiments.
Des Weiteren ist ein Computerprogramm (produkt ) umfassend Pro gramm-Code vorgesehen, der von mindestens einem Prozessor ausgeführt werden kann und der bewirkt, dass der mindestens eine Prozessor das erfindungsgemäße (Betriebs- ) Verfahren und dessen Aus führungs formen ausführt. Das Computerprogramm kann auf einem Gerät/Modul bzw. Vorrichtung der vorstehend genann ten Art ablaufen oder als Computerprogrammprodukt auf einem computerlesbaren Medium gespeichert sein. Furthermore, a computer program (product) comprising program code is provided which can be executed by at least one processor and which causes the at least one processor to execute the (operating) method according to the invention and its embodiments. The computer program can run on a device / module or device of the type mentioned above or be stored as a computer program product on a computer-readable medium.
Die Vorrichtungen, Einrichtungen bzw. Geräte, Module und Com puterprogramm (produkte ) können entsprechend der Weiterbildun gen/Ausführungsformen des vorgenannten Verfahrens und deren Weiterbildungen/Ausführungsformen und umgekehrt ausgebildet sein . The devices, devices or devices, modules and computer program (products) can be designed in accordance with the developments / embodiments of the aforementioned method and their developments / embodiments and vice versa.
Die oben beschriebenen Eigenschaften, Merkmale und Vorteile dieser Erfindung sowie die Art und Weise, wie diese erreicht werden, werden klarer und deutlicher verständlich im Zusam menhang mit der folgenden Beschreibung der Ausführungsbei spiele, die im Zusammenhang mit den Figuren näher erläutert werden. Dabei zeigt in schematischer Darstellung: The properties, features and advantages of this invention described above and the manner in which they are achieved will become clearer and more clearly understandable in connection with the following description of the exemplary embodiments, which are explained in more detail in connection with the figures. It shows in a schematic representation:
Die einzige Figur zeigt in schematischer Darstellung eines Gerätes D. Es sei darauf hingewiesen, dass die Erläuterung der Erfindung im Zusammenhang mit dem Gerät rein beispielhaft und ohne Beschränkung der vorliegenden Erfindung auf ein der artiges Gerät erfolgt. The single figure shows a schematic representation of a device D. It should be pointed out that the explanation of the invention in connection with the device is purely by way of example and without limiting the present invention to such a device.
In der Figur wird ein Gerät D gezeigt. Es wird der Zusammen hang zwischen Laufzeiteigenschaften einer Laufzeitumgebung R,
der Aufteilung in N verschiedene Systemzustände S1 bis SN und der Ableitung von entsprechenden Schlüsseln mit Hilfe eines Masterkeys MK dargestellt. Die grundlegende Funktionalität wird durch die Runtime Measurement Key Derivation Function (Laufzeitmessungsschlüsselableitungsfunktion) RM-KDF reali siert, welche in einem in das Gerät D integrierten oder mit dem Gerät D gekoppelten Sicherheitsmodul SD integriert ist. Sie kann auch verteilt realisiert sein, d.h. ein erster Teil der Runtime Measurement Key Derivation Function RM-KDF kann auf dem Sicherheitsmodul integriert, ein zweiter Teil der Runtime Measurement Key Derivation Function RM-KDF mit dem Sicherheitsmodul gekoppelt sein. In the figure, a device D is shown. The relationship between runtime properties of a runtime environment R, the division into N different system states S1 to SN and the derivation of corresponding keys with the help of a master key MK. The basic functionality is implemented by the Runtime Measurement Key Derivation Function (runtime measurement key derivation function) RM-KDF, which is integrated in a safety module SD integrated in device D or coupled to device D. It can also be implemented in a distributed manner, ie a first part of the runtime measurement key derivation function RM-KDF can be integrated on the safety module, and a second part of the runtime measurement key derivation function RM-KDF can be coupled to the safety module.
Die System- bzw. Laufzeitzustände 1 bis N unterscheiden sich in den Laufzeiteigenschaften einer oder mehrerer Komponenten, z.B. der zu dem Zeitpunkt der Schlüsselableitung laufenden Prozesse P, Dateisystemeigenschaften FS und Hardwarezustände HW wie z.B. dem Wert eines Hardware-Zählers. Soll ein Schlüs sel abgeleitet werden, bezieht die RM-KDF Messwerte (z.B. Einweg- bzw. Hashwerte von Dateien) aus der Laufzeitumgebung R. Welche Teile der Laufzeitumgebung gemessen werden sollen, wird dabei durch ein Messregelsystem MP (Measurement Policy) vorgegeben. Die Gesamtheit der Messwerte M, die z.B. mit ei nem fortlaufenden Hashwert festgehalten werden kann, dient anschließend, zusammen mit einem Master Key MK, als Eingabe parameter für eine Schlüsselableitungsfunktion KDF, z.B. auf Basis von HMAC-SHA256. Entspricht der Zustand einer gemesse nen Laufzeitkomponente aufgrund eines Angriffs nicht mehr dem erwarteten, z.B. durch das Starten eines nicht in dem Zustand vorgesehenen Prozesses durch einen Angreifer, wird auch der abgeleitete Schlüssel verändert. Mit dem Schlüssel geschützte Objekte sind somit nur in als gültig definierten Zuständen der Laufzeitumgebung zugänglich. The system or runtime states 1 to N differ in the runtime properties of one or more components, e.g. the processes P running at the time of key derivation, file system properties FS and hardware states HW such as the value of a hardware counter. If a key is to be derived, the RM-KDF obtains measured values (e.g. one-way or hash values from files) from the runtime environment R. Which parts of the runtime environment are to be measured is specified by a measurement control system MP (Measurement Policy). The totality of the measured values M, which e.g. can be recorded with a continuous hash value, then, together with a master key MK, serves as an input parameter for a key derivation function KDF, e.g. based on HMAC-SHA256. If the status of a measured runtime component no longer corresponds to the expected one due to an attack, e.g. if an attacker starts a process that is not intended in the state, the derived key is also changed. Objects protected with the key are therefore only accessible in the runtime environment states that are defined as valid.
Die Zustände 1 bis N werden implizit durch die Measurement Policy (Messregel) MP und den Zuständen der gemessenen Lauf- zeitkomponenten definiert. Die Measurement Policy MP kann für jeden Zustand unterschiedlich, oder für mehrere Zustände gleich sein. Es können dementsprechend mehrere RM-KDFs auf
einem Gerät D verwendet werden, welche unterschiedliche Mea- surement Policies, Ableitungsfunktionen KDFs und / oder Mas ter Keys MK verwenden. The states 1 to N are implicitly defined by the measurement policy (measurement rule) MP and the states of the measured runtime components. The measurement policy MP can be different for each state, or the same for several states. Accordingly, several RM-KDFs can be used a device D can be used, which use different measurement policies, derivation functions KDFs and / or master keys MK.
Die Measurement-Policy MP, die Measurement-Funktionen für die Gesamtheit der Messwerte M und Schlüsselableitungsfunktionen KDF können prinzipiell entweder in Software- oder Hardware komponenten realisiert werden. Der zur Ableitung verwendete Master Key MK kann dabei entweder in Hardware gespeichert werden (z.B. Hardware-based Trust Anchor), oder in Software (z.B. als Teil einer obfuskierten Routine) implementiert sein . The measurement policy MP, the measurement functions for the entirety of the measured values M and key derivation functions KDF can in principle be implemented either in software or hardware components. The master key MK used for derivation can either be stored in hardware (e.g. hardware-based trust anchor) or implemented in software (e.g. as part of an obfuscated routine).
Im Folgenden werden mehrere Möglichkeiten für messbare Lauf- zeiteigenschaften dargestellt. Diese können beliebig zu einer Measurement Policy MP kombiniert werden. Several possibilities for measurable runtime properties are shown below. These can be combined as required to form a Measurement Policy MP.
• Bisherige Laufzeit des Gerätes D seit einem Reset, z.B. mittels eines Hardware-Zählers oder einer Realtime Clock (Echtzeituhr) . Auch die bisherige Laufzeit der Software, z.B. eines Linux Kernels ( /proc/uptime ) kann hier ver wendet werden. • Previous running time of device D since a reset, e.g. by means of a hardware counter or a real-time clock. The previous runtime of the software, e.g. a Linux kernel (/ proc / uptime) can be used here.
• Performance-Laufzeitdaten (z.B. CPU-Last, Speicheraus lastung, Auslastung von Ein-/Ausgabeschnittstellen, z.B. Netzwerkschnittstellen, DMA-Transfer, Interrupt- Häufigkeit) . • Performance runtime data (e.g. CPU load, memory usage, usage of input / output interfaces, e.g. network interfaces, DMA transfer, interrupt frequency).
• Stromverbrauchsprofil, Profil einer elektromagnetischen Abstrahlung (z.B. zeitlicher Verlauf, Frequenzspektrum) • Power consumption profile, profile of electromagnetic radiation (e.g. chronological sequence, frequency spectrum)
• Meta-Informationen zu laufenden Prozessen P, z.B. der Benutzer, unter dem ein Prozess läuft, welcher Prozess diesen gestartet hat (Prozessbaum / Parent-Child Bezie hung von Prozessen / „Prozesskette")/ Prozesspriorität, Prozess-Nummer, SELinux-Domäne eines Prozesses, Name spaces und cgroups, in denen ein Prozess läuft. • Meta information on running processes P, eg the user under whom a process is running, which process started it (process tree / parent-child relationship of processes / "process chain") / process priority, process number, SELinux domain of a Processes, name spaces and cgroups in which a process is running.
• Aktuell eingehängte Dateisysteme und deren Eigenschaften• Currently mounted file systems and their properties
(z.B. read-only) . So können auch Schlüssel in Abhängig keit der vorhandenen, austauschbaren Peripherie- Bausteine - wie z.B. USB-Dongles - abgeleitet werden.
• Dedizierte Dateien, die die Integrität des aktuellen Systems widerspiegeln. Beispielsweise können sicher- heitskritische Ereignisse durch ein Host-Based Intrusion Detection System (HIDS) in spezielle Dateien geschrieben werden, die im Zuge der Schlüsselableitung mitgemessen werden. Eine weitere Möglichkeit ist, Konfigurationsda ten, die ein Einloggen auf das System beschränken (oder sogar ganz verhindern) , in die Messung mit einzubezie hen: Bei einem Angriff, bei dem die Konfiguration so verändert wird, dass ein Einloggen wieder möglich ist (insbesondere, um das System zur Laufzeit „von innen" beobachten zu können) , werden dann nur noch falsche Schlüssel abgeleitet. (e.g. read-only). In this way, keys can also be derived depending on the existing, exchangeable peripheral components - such as USB dongles. • Dedicated files that reflect the health of the current system. For example, security-critical events can be written into special files by a host-based intrusion detection system (HIDS), which are also measured in the course of the key derivation. Another possibility is to include configuration data that restrict logging in to the system (or even prevent it completely) in the measurement: In the event of an attack in which the configuration is changed in such a way that logging in is possible again (in particular, in order to be able to observe the system "from inside" during runtime), only wrong keys are then derived.
• Der Zustand bestimmter Sicherheitsmechanismen kann mit- einbezogen werden. Auf einem Linux-basierten System kön nen so nur die für eine Anwendung richtigen Schlüssel abgeleitet werden, wenn einer oder mehrere Sicherheits mechanismen in einem bestimmten Zustand sind (z.B. • The status of certain security mechanisms can be included. On a Linux-based system, only the correct keys for an application can be derived if one or more security mechanisms are in a certain state (e.g.
SELinux im „Enforcing" Modus) . SELinux in "Enforcing" mode).
• Es können statische Daten, wie beispielsweise eine Hard- ware-ID, oder Konfigurationsdateien im Dateisystem mit gemessen werden. Wird die Runtime Measurement Key Deri vation Function RM-KDF in einer anderen Umgebung ausge führt (andere Hardware und somit Hardware-ID, andere Konfiguration) , oder werden die als statisch angenomme nen Dateien manipuliert, werden somit andere Schlüssel abgeleitet . • Static data such as a hardware ID or configuration files in the file system can also be measured. If the runtime measurement key derivation function RM-KDF is executed in a different environment (different hardware and thus hardware ID, different configuration), or if the files assumed to be static are manipulated, different keys are derived.
• Es kann auf das Vorhandensein bestimmter Dateiinhalte geprüft werden, die z.B. aus einer Provisioning-Phase des Gerätes vorhanden sein sollen. • It can be checked for the existence of certain file contents, e.g. from a provisioning phase of the device should be available.
• Meta-Informationen des Dateisystems, wie z.B. die Größe bestimmter Teile, Zugriffs- oder Änderungszeiten, Per missions, Nutzer / Owner, Ziele von symbolischen Links, etc . • Meta information of the file system, such as the size of certain parts, access or change times, performances, users / owners, targets of symbolic links, etc.
• Es kann miteinbezogen werden, wie die Runtime Measure ment Key Derivation Function RM-KDF verwendet bzw. auf gerufen wird. So kann diese z.B. die Prozesskette, aus gehend von der aufrufenden Komponente, bis zur Wurzel des Prozessbaumes miteinbeziehen . Dabei können z.B. die Namen der in der Prozesskette enthaltenen Prozesse fort-
laufend gehasht und als Teil des Schlüsselableitungspa rameters verwendet werden. So kann sichergestellt wer den, dass die richtigen Schlüssel nur im Zuge eines vor gesehenen Aufrufs abgeleitet werden können. • It can be included how the runtime measurement key derivation function RM-KDF is used or called. This can, for example, include the process chain, starting from the calling component, down to the root of the process tree. For example, the names of the processes contained in the process chain can be continued. continuously hashed and used as part of the key derivation parameter. This ensures that the correct key can only be derived in the course of a designated call.
• Es kann ein Watchdog (Hardware oder Software-Funktion) miteinbezogen werden, der die Integrität der Laufzeitum gebung überwacht. • A watchdog (hardware or software function) can be included that monitors the integrity of the runtime environment.
Es kann die Ausführungszeit einer speziell vorgesehenen It can specify the execution time of a specially provided
Benchmarkfunktion gemessen werden und diese - mit einem ge wissen Spielraum für normale Messvarianzen in die Ableitung mit einbezogen werden. Benötigt die Ausführung einer solchen Funktion beispielsweise 250ms mit einer Standardabweichung (Sigma) von 10ms, ergibt sich bei ( Integer- ) Division durch 100ms auf einem nicht-manipulierten Gerät mit 5-Sigma- Sicherheit der Wert 2. Einem Angreifer dagegen wird die Re produktion der abgeleiteten Schlüssel in einer simulierten bzw. emulierten Umgebung erschwert, weil nun zusätzlich auch die Performance des Devices hinreichend genau (im Beispiel: +/- 20%) nachgebildet werden muss. Benchmark function can be measured and this - with a certain margin for normal measurement variances - included in the derivation. If the execution of such a function requires, for example, 250ms with a standard deviation (Sigma) of 10ms, the (integer) division by 100ms on a non-manipulated device with 5-Sigma security results in the value 2. An attacker, on the other hand, can reproduce the derived key in a simulated or emulated environment is made more difficult because the performance of the device now also has to be simulated with sufficient accuracy (in the example: +/- 20%).
Die Applikationen, wobei eine Applikation in der Figur bei spielsweise mit AP gekennzeichnet ist, können mit Hilfe der Bibliothek zur Laufzeit Schlüssel ableiten, um eine krypto- graphische Operation mit Hilfe des abgeleiteten Schlüssels durchzuführen. Solche Operation können sicherheitskritische Objekte, beispielsweise verschlüsselte Dateisysteme, oder private Schlüssel für eine TLS-Verbindung schützen und darauf zugreifen. Soll ein Schlüssel abgeleitet werden, verwendet die Runtime Measurement Key Derivation Function RM-KDF die Measurement-Funktion und die Measurement Policy MP, um darin festgelegte Teile der Laufzeitumgebung oder festgelegte Er eignisse zu einem oder mehreren bestimmten Zeitpunkten zu messen bzw. zu ermitteln und als Laufzeitkonfiguration fest zulegen. Durch die Measurement-Funktion wird unter Verwendung von dedizierten Kernel-Schnittstellen Informationen zu aktu ell eingehängten Dateisystemen (Mounts), dem Zustand gewisser Peripheriebausteine (z.B. FPGA, GPIO, MAC Adresse), der bis-
herigen Laufzeit des Betriebssystems (Uptime) , statische In halte aus dem Dateisystem (Filesystem) und den Namen der Pro zesse in der Prozesskette des Aufrufers in einem laufenden Hashwert aggregiert. Der aggregierte Wert wird anschließend als Schlüsselableitungsparameter für eine Schlüsselablei tungsfunktion mit dem Master Key MK verwendet. Der abgeleite te Schlüssel Kl bis KN ist je nach aufrufender Applikation unterschiedlich, da diese unterschiedlichen Prozessketten an gehören . The applications, where an application is identified with AP in the figure, for example, can derive keys at runtime with the aid of the library in order to carry out a cryptographic operation with the aid of the derived key. Such operations can protect and access security-critical objects such as encrypted file systems or private keys for a TLS connection. If a key is to be derived, the Runtime Measurement Key Derivation Function RM-KDF uses the measurement function and the measurement policy MP to measure or determine parts of the runtime environment or specified events at one or more specific times and as Define the runtime configuration. The measurement function uses dedicated kernel interfaces to provide information on currently attached file systems (mounts), the status of certain peripheral components (e.g. FPGA, GPIO, MAC address), the runtime of the operating system (uptime), static content from the file system and the names of the processes in the process chain of the caller aggregated in a running hash value. The aggregated value is then used as a key derivation parameter for a key derivation function with the master key MK. The derived key Kl to KN is different depending on the calling application, since these belong to different process chains.
Ein aus der Laufzeitkonfiguration gebildeter variabler Fin gerabdruck FP und das Berücksichtigen als Schlüsselablei tungsparameter können als eine Konfiguration des Sicherheits moduls betrachtet werden. Die Applikationen können diese ab geleiteten Schlüssel z.B. für den Zugriff auf private Datei systeme verwenden. Versucht ein Angreifer mittels eines wei teren Prozesses ebenfalls mit Hilfe der Runtime Measurement Key Derivation Function RM-KDF einen Schlüssel abzuleiten, so wird dieser anders sein. Sowohl Offline-, als auch Online- Angriffe verändern in der Regel dynamische Eigenschaften ei ner Laufzeitumgebung (z.B. Konfigurationsdateien, Optionen von eingehängten Dateisystemen) . Der Zugriff auf Schlüssel aus gültigen Zuständen wird somit stark erschwert. A variable fingerprint FP formed from the runtime configuration and taking it into account as key derivation parameters can be viewed as a configuration of the security module. The applications can use these derived keys e.g. Use systems to access private file systems. If an attacker tries to derive a key by means of another process, also with the help of the Runtime Measurement Key Derivation Function RM-KDF, it will be different. Both offline and online attacks usually change dynamic properties of a runtime environment (e.g. configuration files, options of mounted file systems). Access to keys from valid states is therefore very difficult.
Die Erfindung hat den Vorteil, dass der Zugriff auf Schlüssel an den aktuellen Zustand von statischen und insbesondere dy namischen Eigenschaften der Laufzeitumgebung gebunden werden kann. Bei Eingriff in die Laufzeitumgebung (phys. Angriff, remote Angriff) kann die Schlüsselableitung beeinflusst wer den und somit gültige Schlüssel in einer nicht vertrauenswür digen Umgebung nicht mehr abgeleitet werden. Weiterhin kann die Zustandsabhängigkeit bewusst eingesetzt werden, um unter schiedliche Schlüssel zu unterschiedlichen Laufzeitphasen in Software bereitzustellen. Dies hat speziell den Vorteil, dass im Falle einer kompromittierten Laufzeitphase nicht die The invention has the advantage that access to keys can be linked to the current state of static and, in particular, dynamic properties of the runtime environment. If the runtime environment is interfered with (physical attack, remote attack), the key derivation can be influenced and thus valid keys can no longer be derived in an untrustworthy environment. Furthermore, the state dependency can be used deliberately in order to provide different keys for different runtime phases in software. This has the particular advantage that in the event of a compromised runtime phase, the
Schlüssel der aktuellen, als auch der anderen Phasen abgelei tet werden können.
Obwohl die Erfindung im Detail durch das bevorzugte Ausfüh rungsbeispiel näher illustriert und beschrieben wurde, so ist die Erfindung nicht durch die offenbarten Beispiele einge schränkt und andere Variationen können vom Fachmann hieraus abgeleitet werden, ohne den Schutzumfang der Erfindung zu verlassen . Keys of the current as well as the other phases can be derived. Although the invention has been illustrated and described in more detail by the preferred exemplary embodiment, the invention is not restricted by the examples disclosed and other variations can be derived therefrom by the person skilled in the art without departing from the scope of the invention.
Die Implementierung der vorstehend beschriebenen Prozesse o- der Verfahrensabläufe kann anhand von Instruktionen erfolgen, die auf computerlesbaren Speichermedien oder in flüchtigen Computerspeichern (im Folgenden zusammenfassend als computer lesbare Speicher bezeichnet) vorliegen. Computerlesbare Spei cher sind beispielsweise flüchtige Speicher wie Caches, Puf fer oder RAM sowie nichtflüchtige Speicher wie Wechseldaten träger, Festplatten, usw. The processes or procedures described above can be implemented using instructions that are available on computer-readable storage media or in volatile computer memories (hereinafter referred to collectively as computer-readable memories). Computer-readable memories are, for example, volatile memories such as caches, buffers or RAM as well as non-volatile memories such as removable data carriers, hard drives, etc.
Die vorstehend beschriebenen Funktionen oder Schritte können dabei in Form zumindest eines Instruktionssatzes in/auf einem computerlesbaren Speicher vorliegen. Die Funktionen oder Schritte sind dabei nicht an einen bestimmten Instruktions satz oder an eine bestimmte Form von Instruktionssätzen oder an ein bestimmtes Speichermedium oder an einen bestimmten Prozessor oder an bestimmte Ausführungsschemata gebunden und können durch Software, Firmware, Microcode, Hardware, Prozes soren, integrierte Schaltungen usw. im Alleinbetrieb oder in beliebiger Kombination ausgeführt werden. Dabei können ver schiedenste Verarbeitungsstrategien zum Einsatz kommen, bei spielsweise serielle Verarbeitung durch einen einzelnen Pro zessor oder Multiprocessing oder Multitasking oder Parallel verarbeitung usw. The functions or steps described above can be present in the form of at least one set of instructions in / on a computer-readable memory. The functions or steps are not tied to a specific set of instructions or to a specific form of instruction set or to a specific storage medium or to a specific processor or to specific execution schemes and can be implemented through software, firmware, microcode, hardware, processors, integrated circuits etc. can be run alone or in any combination. A wide variety of processing strategies can be used, for example serial processing by a single processor or multiprocessing or multitasking or parallel processing, etc.
Die Instruktionen können in lokalen Speichern abgelegt sein, es ist aber auch möglich, die Instruktionen auf einem ent fernten System abzulegen und darauf via Netzwerk zuzugreifen. The instructions can be stored in local memories, but it is also possible to store the instructions on a remote system and access them via the network.
Das Gerät D kann ein oder mehrere Prozessoren aufweisen. Der Begriff "Prozessor", "zentrale Signalverarbeitung", "Steuer einheit" oder "Datenauswertemittel " , umfasst Verarbeitungs-
mittel im weitesten Sinne, also beispielsweise Server, Uni versalprozessoren, Grafikprozessoren, digitale Signalprozes soren, anwendungsspezifische integrierte Schaltungen (ASICs), programmierbare Logikschaltungen wie FPGAs, diskrete analoge oder digitale Schaltungen und beliebige Kombinationen davon, einschließlich aller anderen dem Fachmann bekannten oder in Zukunft entwickelten Verarbeitungsmittel. Prozessoren können dabei aus einer oder mehreren Vorrichtungen bzw. Einrichtun gen bzw. Einheiten bestehen. Besteht ein Prozessor aus mehre- ren Vorrichtungen, können diese zur parallelen oder sequenti ellen Verarbeitung bzw. Ausführung von Instruktionen ausge legt bzw. konfiguriert sein.
The device D can have one or more processors. The term "processor", "central signal processing", "control unit" or "data evaluation means" includes processing medium in the broadest sense, for example servers, universal processors, graphics processors, digital signal processors, application-specific integrated circuits (ASICs), programmable logic circuits such as FPGAs, discrete analog or digital circuits and any combination thereof, including all others known to the person skilled in the art or developed in the future Processing agents. Processors can consist of one or more devices or devices or units. If a processor consists of several devices, these can be designed or configured for parallel or sequential processing or execution of instructions.