Security

Integritätsschutz für Embedded-Systeme

20. November 2012, 9:59 Uhr | Oliver Winzenried
Diesen Artikel anhören

Fortsetzung des Artikels von Teil 2

Realisierung der Integritätsprüfung

Bild 3. Nach diesem Ablauf wird die ungeschützte Original-Software signiert und verschlüsselt.
Bild 3. Nach diesem Ablauf wird die ungeschützte Original-Software signiert und verschlüsselt.
© Elektronik

Nun gilt es, die Integritätsprüfung zu realisieren. Dazu muss zunächst die ungeschützte Original-Software signiert und verschlüsselt werden (Bild 3). Für die darauf folgenden Schritte wird der AxProtector verwendet, ein kommerzielles Tool zum Schützen von Software.

  • Berechnung des Hash-Werts der Original-Software.
  • Signieren des Hash-Werts mit dem privaten Schlüssel (Private Key) des Herausgebers.
  • Verschlüsseln der Original-Software unter Verwendung eines Schlüssels, der aus einem Seed-Wert aus der Original-Software, einem geheimen Schlüssel des Herausgebers und einigen Parametern, die der Herausgeber wählt, erzeugt wird.
  • Anhängen des Signaturzertifikats an die verschlüsselte Software.

passend zum Thema

Bild 4. Schema zum Ablauf des ersten Teils der Integritätsprüfung. Hier werden die zu ladende Software bzw. die Daten geprüft.
Bild 4. Schema zum Ablauf des ersten Teils der Integritätsprüfung. Hier werden die zu ladende Software bzw. die Daten geprüft.
© Elektronik

Der erste Teil der Integritätsprüfung nach vorn, d.h., Prüfung der zu ladenden Software oder Daten, besteht aus  den folgenden Schritten, die in der AxEngine von Wibu-Systems beim Laden der Anwendung ausgeführt werden (Bild 4):

  • Beim Vorhandensein einer passenden Lizenz wird die verschlüsselte Software entschlüsselt.
  • Das in den Credentials angehängte Zertifikat oder die Zertifikatskette wird gegen den öffentlichen Ursprungsschlüssel (Public Root Key) geprüft.
  • Der Hash-Wert über die entschlüsselte Original-Software wird berechnet.
  • Die Signatur über den Hash wird mit dem öffentlichen Schlüssel (Public Key) überprüft.

Zusätzlich zu diesen notwendigen Schritten können zur Erhöhung der -Sicherheit noch weitere Maßnahmen umgesetzt werden, z.B. eine ausgefeilte Handhabung der Zertifikate auf Zulässigkeit in bestimmten Geräten, auf Ablaufdatum oder auf eine Sperrliste. Daneben sind periodische Überprüfungen zur Laufzeit im Arbeitsspeicher des Systems denkbar (Watchdog).

Die Lösung mit CodeMeter führt folgende Schritte durch, die auch in automatisierten Build-Prozessen ablaufen können:

  • Verschlüsselung des Programmcodes, um statische Codeanalyse und Reverse Engineering zu verhindern.
  • Signieren des Programmcodes sowohl von Anwendungen als auch vom Betriebssystem-Image.
  • Speichern der geteilten Geheimnisse für die Entschlüsselung.
  • Speichern der privaten Signaturschlüssel auf Erstellerseite.
  • Überprüfung der Signaturen und Hashes beim Laden und zur Laufzeit.
Bild 5. Rückwärtsprüfung des Bootprozesses.
Bild 5. Rückwärtsprüfung des Bootprozesses.
© Elektronik

Rückwärtsprüfung

Die Prüfung durch das Betriebssystem, ob der Bootprozess korrekt durchgeführt wurde, oder die Integritätsprüfung des Betriebssystems durch die Anwendung ist nur deshalb schwierig durchzuführen, weil der folgende Schritt jeweils nur begrenzten Zugriff auf den vorherigen hat. Es wird eine Zustandsmaschine in einer vertrauenswürdigen Hardware benötigt. Konzepte dafür findet man bei der Trusted Computing Group, kurz TCG: Mittels Trusted Plattform Modules, kurz TPM, ist es möglich, korrekte Zustände in Registern zu speichern. Diese Register enthalten beispielsweise Messwerte des Bootloaders, die später vom Betriebssystem geprüft werden, um die Integrität des vorhergehenden Schrittes zu bestätigen, wie in Bild 5 dargestellt.

Die „Inner Shell“ ist dabei beispielsweise das Betriebssystem, die „Outer Shell“ der Bootloader. Das Trusted Device, z.B. ein TPM-Chip oder CodeMeter-Dongle, speichert den Zustand des Bootloaders; nur wenn dieser korrekt durchlaufen wird, kann das Betriebssystem anschließend starten. Dies gilt auch für die jeweils folgenden Stufen.

CodeMeter bietet hierfür eine sichere Zustandsmaschine: Die Funktion wird hier „Enabling“ genannt. Eine Entschlüsselung des Betriebssystems wird erst freigegeben, wenn der Boot-Prozess mit korrekter Integrität durchgeführt wurde. Außerdem werden gemeinsame Geheimnisse gespeichert und erst bei erfolgreichem vorherigen Schritt für den nächsten freigegeben.


  1. Integritätsschutz für Embedded-Systeme
  2. Angriffe und Schutz für Cyber-Physical Systems
  3. Realisierung der Integritätsprüfung
  4. Pre-Bootloader - der erste Schritt
  5. Grundbegriffe der Kryptografie

Lesen Sie mehr zum Thema


Das könnte Sie auch interessieren

Jetzt kostenfreie Newsletter bestellen!

Weitere Artikel zu WIBU-SYSTEMS AG

Weitere Artikel zu Cyber-Security