Seien wir doch mal ehrlich. Die Verschlüsselung, Authentifizierung und die Sicherung eingebetteter Systeme ist schwierig. Zum Glück bieten Unternehmen wie Microchip Produkte, Tools und Tutorials an, die Ihnen das Leben leichter machen, wenn Sie die Sicherheit Ihrer Embedded Designs verbessern möchten.
In diesem Beitrag erklärt Datakey® die symmetrische Authentifizierung zwischen einem Host und einem (externen) Gerät und verweist Sie auf ein von Microchip entwickeltes Labor und Video, in dem gezeigt wird, wie dies mit Datakey CryptoAuthentication™ Speichertokens erreicht wird.
Bei der symmetrischen Authentifizierung (oder symmetrischen Schlüsselauthentifizierung oder symmetrischen Verschlüsselung) wird ein einziger gemeinsamer Schlüssel verwendet, der für die Ver- und Entschlüsselung von Daten eingesetzt wird. Der Schlüssel, auf den wir uns hier beziehen, ist kein physischer Schlüssel, sondern eher eine Zahlenfolge.
Ein Beispiel aus der realen Welt – ein medizinischer Einwegartikel
Neue Konzepte sind oft leichter zu begreifen, wenn wir sie mit einem realen Beispiel in Verbindung bringen können, so wie es Datakey® hier tut. Nehmen wir an, Sie arbeiten für einen Hersteller medizinischer Geräte. Sie haben eine eingebettete Steuereinheit (den Host, der das Steuerungssystem enthält) und ein Einwegprodukt, das an den Host angeschlossen wird. Das Einwegprodukt kann ein Schlauchset, ein Filterset, ein Katheter usw. sein. Anders als der Host hat das Einwegprodukt kein intelligentes Programm.
Wenn Sie mit dem Geschäftsmodell der Rasierklinge vertraut sind, ist dies ein gängiges Verkaufsmodell für medizinische Geräte mit Einwegartikeln: Sie verschenken die Maschine (den Host mit dem Prozessor) und verdienen Ihr Geld mit den Einwegartikeln. Da die Einwegprodukte oft relativ kostengünstig herzustellen sind, lassen sich mit ihnen hohe Gewinnspannen erzielen. Das erhöht die Anfälligkeit für gefälschte Geräte von Fremdherstellern. Um sicherzustellen, dass gefälschte Geräte nicht mit dem Host-Gerät funktionieren, werden wir jedem (“legitimen”) Einweggerät ein Datakey CryptoAuthentication Memory Token beilegen. Damit der Rechner läuft, muss der Bediener das Einweggerät anschließen und das Memory Token in den Host einführen. Der Host stellt dann fest, ob das Einweggerät legitim ist.
In diesem Beispiel verwenden wir die symmetrische Authentifizierung, um zu überprüfen, ob der im Einwegkit enthaltene CryptoAuthentication-Speicher-Token authentisch ist und als echt angesehen werden kann. Bei der symmetrischen Authentifizierung handelt es sich um einen Challenge/Response-Prozess, bei dem der Host (das medizinische Gerät mit dem eingebetteten Controller) ein Gerät herausfordert (in diesem Fall das Datakey CryptoAuthentication Speicher-Token, das dem Einwegartikel beiliegt). Wenn das Gerät authentisch ist, muss es mit den erwarteten Ergebnissen antworten.
Wie bereits erwähnt, verwendet die symmetrische Authentifizierung einen gemeinsamen Schlüssel. Das heißt, sowohl der Host als auch das Gerät teilen sich denselben geheimen Schlüssel. Da dieser gemeinsame Schlüssel geheim bleiben muss, ist es wichtig, diesen Schlüssel auf dem Host sicher zu speichern. Eine sehr gute Möglichkeit, dies zu tun, ist die Verwendung eines Microchip CryptoAuthentication Speicher-ICs, wie z.B. des ATECC608, auf dem Host. Dies ist der gleiche IC, der auch im Datakey IAT10.5Kb CryptoAuthentication Speicher-Token zu finden ist. Diese ICs haben auch eine eindeutige, nicht veränderbare Seriennummer, die ebenfalls im symmetrischen Authentifizierungsprozess verwendet wird. Microchip stellt die Bibliothek CryptoAuthLib zur Verfügung, die eine Vielzahl von Funktionen enthält, die wir zur Vereinfachung des Authentifizierungsprozesses nutzen können. Während wir durch den Prozess gehen, werden wir für jeden Schritt die zu verwendende Funktion aufrufen.
Ein Mikrocontroller-basierter Host mit einem internen CryptoAuthentication IC kommuniziert mit einem externen Datakey CryptoAuthentication Speicher-Token.
Symmetrischer Authentifizierungsprozess
Wenn der Speicher-Token (in der obigen Abbildung rechts dargestellt) in den Host eingesteckt wird, wird ein Interrupt ausgelöst, der anzeigt, dass ein Speicher-Token erkannt worden ist. Der Authentifizierungsprozess kann nun beginnen.
- Im obigen Diagramm sehen Sie, dass der Host-Mikrocontroller mit zwei ATECC608 CryptoAuthentication Speicher-ICs kommuniziert – einem auf dem Host und einem im Memory Token-Gerät. Die CryptoAuthLib-Software, die auf dem Host läuft, muss mit Informationen über die beiden ATECC608-ICs initialisiert werden. Dies geschieht mit der Funktion atcab_init. atcab_init kann wiederholt aufgerufen werden, um auszuwählen, mit welchem IC (Host oder Gerät) kommuniziert werden soll.
- Der Host beginnt den Authentifizierungsprozess, indem er das Memory-Token-Gerät nach seiner eindeutigen Seriennummer fragt. Hierfür verwenden wir die Funktion atcab_read_serial_number.
- Jetzt, da der Host die Seriennummer des Geräts kennt, kann er eine Aufforderung an das Gerät senden. Die Aufforderung besteht aus drei Komponenten:
-
- Zunächst generiert der Host eine Zufallszahl, die einmalig verwendet wird. Dies wird als Nonce bezeichnet (eine einmalig verwendete Zahl). Um die Zufallszahl zu erzeugen, verwenden wir die Funktion atcab_random. Sobald die Zufallszahl generiert wurde, kann sie als Challenge an das Memory Token Gerät gesendet werden.
- Die zweite Komponente der (Heraus-)forderung besteht, ist der gemeinsame geheime Schlüssel. Sowohl der Host als auch das Gerät haben denselben geheimen Schlüssel sicher in ihren jeweiligen ATECC608 CryptoAuthentication ICs gespeichert.
- Die dritte Komponente ist die Seriennummer des Datakey Speichertokens. Der Host hat diese Informationen in Schritt 1 angefordert, so dass sowohl der Host als auch dder Datakey dieselben drei Eingaben verwenden können.
Schritt-für-Schritt-Verfahren zur Authentifizierung eines Geräts mit Hilfe der symmetrischen Schlüsselauthentifizierung
Um die Herausforderung an den Datakey Speichertoken zu senden, verwendet der Host die Funktion atcab_mac. Die MAC-Funktion berechnet einen SHA-256 Digest aus der Seriennummer, der Challenge Nonce (der Zufallszahl) und dem gemeinsamen geheimen Schlüssel. Ein Digest ist die Ausgabesignatur einer Hash-Funktion (in diesem Fall der SHA-256 Hash-Algorithmus) für die zu hashenden Daten (in diesem Fall die Seriennummer, die Challenge und den gemeinsamen Schlüssel). Lassen Sie uns über die Bedeutung dieser drei Elemente sprechen:
Seriennummer
Die Seriennummer bedeutet, dass der Digest nur für dieses bestimmte Speichertoken gilt. Ein token mit einer anderen Seriennummer wird einen völlig anderen Digest erzeugen.
Zufallszahl
Die Zufallszahl, die Challenge (auf den Nonce), macht erneuert diese Challenge oder macht sie eindeutig (unique). Frühere oder zukünftige Herausforderungen würden eine andere Zufallszahl verwenden und einen anderen Digest erzeugen.
Gemeinsamer geheimer Schlüssel
In unserem Beispiel für medizinische Einwegartikel wäre ein gefälschtes Gerät mit einem CryptoAuthentication-Speicher-Token zwar in der Lage, auf die Herausforderung zu antworten, aber die Fälscher kennen den geheimen Schlüssel nicht, so dass er nicht mit dem Schlüssel auf dem Host übereinstimmt und einen anderen Prüfwert erzeugt. Das Vorhandensein des richtigen gemeinsamen geheimen Schlüssels zeigt an, dass der Einwegartikel (in diesem Beispiel) echt ist.
4. Die Aufforderung wird mit der Funktion atcab_mac an das Memory Token-Gerät gesendet, das den Digest erzeugt und diesen Wert an den Host zurückgibt. Der zurückgegebene Wert wird als Message Authentication Code (MAC) bezeichnet.
5. Nachdem der MAC zurückgegeben wurde, kann der Host nun überprüfen, ob der MAC vom Memory-Token-Gerät korrekt berechnet wurde. Der Host “kennt” dieselben drei Eingaben: die Seriennummer des Geräts, die Zufallszahl und er hat denselben geheimen Schlüssel. Da wir einen von einem anderen Gerät berechneten MAC überprüfen wollen, verwenden wir die Funktion atcab_checkmac (und nicht die Funktion atcab_mac). Die Funktion atcab_checkmac berechnet den SHA-256 Digest der drei Eingaben und vergleicht ihn mit dem vom Gerät zurückgegebenen MAC. Die Funktion gibt entweder Erfolg (sie stimmen überein) oder Misserfolg (sie stimmen nicht überein) zurück. Erfolg bedeutet, dass der Einwegartikel in unserem Beispiel echt ist und als vertrauenswürdig eingestuft werden kann.
Wir haben gerade bestätigt, dass ein echtes bzw. genehmigtes Einwegprodukt vorliegt, aber woher wissen wir, dass dieses Einwegprodukt (oder der Speichertoken) nicht bereits verwendet wurde? Ein CryptoAuthentication-Speichertoken kann auch dieses Problem lösen. Wie das gemacht wird, erläutern wir ein andermal.
Die Diskussion in diesem Blog-Artikel basiert auf LAB 1 – Symmetrische Authentifizierung eines entfernten Geräts, das im Microchip Laborhandbuch mit dem Titel “Developing Secure Applications with CryptoAuthentication Devices” behandelt wird. Dieses von Microchip entwickelte Labor wurde so modifiziert, dass es mit Datakey CryptoAuthentication Speichertoken verwendet werden kann. Weitere Informationen zu diesem Labor und ein Video, in dem Sie sehen können, welche Hard- und Software Sie benötigen und wie Sie diese richtig konfigurieren, finden Sie auf der How-to-Seite von Datakey: Verwendung von CryptoAuthentication Memory Tokens mit Microchip Quick Start Lab.
Weitere Informationen über Datakey CryptoAuthentication Memory Tokens und verwandte Produkte finden Sie auf unserer CryptoAuthentication Produktseite. Wenn Sie Fragen oder Kommentare zu diesem Blog-Artikel oder zu Datakey CryptoAuthentication Speicher-Token haben, kontaktieren Sie uns bitte.
CryptoAuthentication™ ist eine Marke von Microchip Technology Incorporated in den U.S.A. und anderen Ländern und wird unter Lizenz verwendet.
Dieser Blog erscheint im März 2024 im News-Bereich von www.datakey.com. Er erschien online und wird auf unserer Website mit freundlicher Genehmigung von Datakey wiedergegeben.