Datensicherung im TEE

01.02.2017 / 0 Comments

Es werden mobil immer öfter sensible Informationen verarbeitet, zum Beispiel Authentifizierungen für empfindliche Logins oder die generelle Aufbewahrung von sensiblen Daten. Um einen ausreichenden Schutz dieser Daten zu gewährleisten, müssen Smartphone- und Betriebssystemhersteller neue Methoden entwickeln, um typische Angriffsszenarien zu vermeiden.

Eine mittlerweile weit verbreitete und erwiesene Methode ist hierbei das Trusted Execution Environment (TEE). Der folgende Artikel gibt eine Übersicht über die Funktionsweise des TEE sowie seine Vorteile und seine Rolle in der sicheren Authentifizierung.

Was ist ein Trusted Execution Environment (TEE)?

Ein Trusted Execution Environment (TEE) ist abgetrennter Bereich im Hauptprozessor eines Gerätes. Das TEE ist per Hardware technisch vom normalen Prozessor getrennt und hat eine eigene Firmware. Es stellt nur ein paar wenige sicherheitsrelevante Funktionen zur Verfügung, womit die Angriffsvektoren reduziert werden, da Firmware und Schnittstelle einfach gehalten sind und außerdem z.B. direkte Zugriffe auf den Speicher verhindert werden. In ARM-Prozessoren, die bei Smartphones üblich sind, ist dies durch die TrustZone umgesetzt, worauf z.B. Apple und Samsung setzen [1].
Die Ursprünge des TEE lagen im Schutz von urheberrechtlich geschütztem Material, zum Beispiel beim digitalen Videoverleih. Doch mittlerweile sind die Einsatzszenarien breit gefächert und decken auch den Identitätenschutz ab.

Insbesondere verhindert ein TEE dabei, dass kryptographische Schlüssel kopiert werden können, falls das Gerät zum Beispiel von Malware befallen ist. Hierzu wird ein asymmetrisches Schlüsselpaar in der TEE erzeugt und der erzeugenden App nur der Zugriff auf den öffentlichen Schlüssel gewährt. Der private Schlüssel ist nur dem TEE zugänglich und die App kann über die Schnittstelle Daten mit dem privaten Schlüssel signieren lassen. Selbst wenn das Endgerät kompromittiert wird, kann der Schlüssel im TEE nicht einfach ausgelesen werden.

Heutzutage besitzen die meisten Smartphones ein TEE. Unter Apple wurde die Secure Enclave integriert und ist in iPhones seit dem iPhone 5S und iOS 7 verfügbar. Dort wurde es benutzt, um die Fingerabdruck-Muster für Touch ID zu speichern. Seit iOS 9 besteht nun auch die Möglichkeit für Apps auf die Secure Enclave zuzugreifen und somit sensible Daten zu sichern.

In der Secure Enclave lässt sich ein Elliptic Curve Schlüsselpaar generieren (secp256r1). Davon kann man nur den Public Key auslesen, nicht jedoch den privaten Schlüssel. Außerdem hat man eine extra Funktion, um Daten in der Secure Enclave signieren zu lassen, wobei der Nutzer das Signieren dieser Daten immer per Fingerabdruck oder Geräte-PIN bestätigen muss. So ist sichergestellt, dass auch Malware, die die App übernommen hat, keinen Zugriff auf den privaten Schlüssel hat und auch keine Daten ohne eine Bestätigung vom Benutzer signieren kann. Andere asymmetrische Verfahren wie RSA oder andere Elliptische Kurven sind von Apple nicht vorgesehen. [2][3][4]

Unter Android gibt es seit Version 4.3 einen KeyStore der auch Hardware-TEEs unterstützt, falls das das Device unterstützt. Ab Android 6 kann man dies auch abfragen. [5] Somit kann bei der Registrierung einer Zwei-Faktor Authentifizierung bestimmt werden, ob das Gerät eine TEE besitzt und dementsprechend die Sicherungsmethode für den privaten Schlüssel gewählt werden.

Welche Vorteile bietet das TEE für den Verbraucher?

Informationen zur sicheren Zwei-Faktor Authentifizierung und Zertifikats-basierte Signatur mussten früher auf umständlichen Smartcards gespeichert werden. Eine rein Software-basierte Lösung schützt die sensiblen Daten des privaten Schlüssels (private Key) nicht ausreichend und der simple Passwortschutz bietet kaum Schutz vor z.B. Brute-Force Attacken.

Mit der Implementierung des TEE bieten sich komfortable neue Wege der Schlüsselsicherung an. Das TEE ist weitaus sicherer als eine einfache Speicherung des Schlüssels auf dem mobilen Endgerät. Durch das TEE wird der Schlüssel entsprechend sicher geschützt, ohne, dass umständliche zusätzliche Hardware genutzt werden muss (z.B. Smartcards). Der Nutzer kann sich so nur mit seinem Smartphone wirklich sicher authentifizieren. Ein entscheidender Fortschritt nicht nur im Schutz der Daten, sondern auch für komfortable Authentifizierungsangeboten.

Wie wird das TEE von der SecSign ID genutzt?

Für unsere Zwei-Faktor Authentifizierung und für die mobile Signatur haben wir zwei Methoden entwickelt, die einen wirklich sicheren Schutz dieser sensiblen Daten ermöglichen: das Safe Key Verfahren und die Schlüsselgenerierung als elliptische Kurven und die Speicherung des Schlüssels in der Trusted Execution Environment (TEE).

Bei der Registrierung einer SecSign ID wird ein Schlüsselpaar für die Authentifizierung auf dem Smartphone erzeugt. Die SecSign
App generiert dabei ein asymmetrisches Schlüsselpaar. Der öffentliche Schlüssel wird (SSL-verschlüsselt) zum Server übertragen und dann auf dem Smartphone gelöscht. Der andere, private Schlüssel wird mit dem Passcode (=PIN/Passwort) verschlüsselt (AES/SafeKey) und auf dem Smartphone gespeichert oder vom TEE gesichert.
Weder der Passcode noch der zugehörige private Schlüssel werden jemals übertragen und können deswegen auch nicht von einem Angreifer abgefangen werden.
Die ID wird unmittelbar auf dem entsprechenden Server gespeichert und kann direkt zur sicheren Authentifizierung genutzt werden.
Zur Authentifizierung benötigt der Nutzer den auf seinem Smartphone
verschlüsselt abgelegten privaten Schlüssel. Dieser ist entweder durch das SafeKey-Verfahren gegen Brute-Force-Angriffe (gegen die AES Verschlüsselung von dem RSA Schlüssel) geschützt oder durch ein Hardware-TEE. Der SafeKey-Mechanismus wird unter “Was ist das Safekey-Verfahren?” weiter erläutert.

Bei der Authentifizierung selber wird ein Challenge-Response Verfahren durchgeführt. Der Nutzer möchte sich anmelden und gibt seinen SecSign ID Benutzernamen bei einem Service ein. Dieser fragt den SecSign ID Server ob das Login durchgeführt werden darf. Der ID-Server wiederum schickt eine Zufallszahl an das SecSign App ID des Benutzers. Nach der Bestätigung vom Benutzer signiert das App den SHA256 Hash der Zufallszahl und schickt die Signatur zurück an den Server. Dieser kann nun mit Hilfe des bekannten Public Keys das Ergebnis verifizieren und dem anfragenden Service Bescheid geben ob die Authentifizierung erfolgreich war.
Dabei verlässt keine Information zum private Key das sichere TEE und kann damit auch nicht kompromittiert werden.

Die SecSign ID App erlaubt dem Nutzer jederzeit neue Schlüsselpaare für seine bestehenden IDs zu generieren, zum Beispiel nach Updates des Betriebssystems. Dabei wird jeweils der Schlüssel auf dem Smartphone und der Schlüssel des ID-Servers ersetzt.

Wie werden die Daten im TEE geschützt?

Das TEE läuft parallel zum sogenannten rich mobile operating system (mobile OS). Es läuft als hybrides System indem es sowohl Hardware als auch Software des Geräts nutzt. So kann es auf den Hauptprozessor und Speicher des Gerätes zugreifen, wird jedoch durch Hardwarekompenten vom Zugriff unauthorisierter Apps im mobile OS geschützt.
Das TEE dient als sicherer Speicher- und Prozessorort getrennt vom regulären rich OS und damit unerreichbar für Angriffe durch zum Beispiel Malware. Der private Schlüssel, der für die sichere Zwei-Faktor Authentifizierung und die Zertifikats-basierte Signatur genutzt wird, wird niemals aus dem TEE ausgelesen. Stattdessen wird ihm durch den Server eine Challenge zugespielt, die entsprechend signiert wird. Nur durch die Signatur wird die Authentifizierung ermöglicht. Informationen über den privaten Schlüssel können durch dieses Verfahren nicht abgefangen, entschlüsselt oder anderweitig erlangt werden.
Durch die interne API des TEE wird mit den sogenannten trusted Applications kommuniziert. Dadurch kann eine sichere Authentifizierung stattfinden, ohne direkte Informationen aus dem TEE dem rich OS verfügbar zu machen.

Was ist das Safekey-Verfahren?

Falls kein TEE benutzt wird, zum Beispiel bei älteren Geräten, wird der private Schlüssel durch das SafeKey-Verfahren geschützt. Der private RSA-Schlüssel wird mit dem eingegebenen Passwort verschlüsselt. Sofern kein Passwort vorhanden ist, weil etwa der Fingerabdruck als Zugriffsschutz gewählt wurde, werden 16 zufällige Bytes als Passwort genutzt und im Keychain des Geräts gespeichert. Aus dem Passwort wird mit dem Algorithmus PBKDF2 ein AES-Key-Encryption-Key abgeleitet.
Der private RSA-Schlüssel wird in einem Format als Eingabe für die Verschlüsselung genutzt, das sich von Zufallsdaten nicht unterscheiden lässt. Der private Exponent wird mit AES im CBC-Modus mithilfe des Key-Encryption-Keys verschlüsselt. Sollte ein Angreifer in den Besitz des verschlüsselten Schlüssels gelangen und beim Durchprobieren aller möglichen vierstelligen PINs auch den richtigen Schlüssel
erhalten, so kann er dies nicht erkennen. Der öffentliche Schlüssel befindet sich nur auf dem SecSign ID Server, nicht in der SecSign App. Um also zu prüfen, ob der private Schlüssel richtig entschlüsselt wurde, muss der Angreifer eine Authentifizierung gegenüber dem Server durchführen. Dieser hat jedoch einen Zähler für Fehlerversuche bei der Authentifizierung und sperrt den Schlüssel nach 10 Fehlversuchen. Deshalb ist selbst eine
vierstellige PIN für einen guten Schutz ausreichend. Das Verfahren ist unter dem Namen SafeKey patentiert.
Der durch das SafeKey-Verfahren geschützte verschlüsselte private Schlüssel des Nutzers wird in der Keychain des iPhones gespeichert. Er wird nur in ein iTunes- Backup übernommen, wenn dieses verschlüsselt ist.

Fazit

Wir bei SecSign arbeiten seit über 18 Jahren auf dem Gebiet der PKI und wissen, wie wichtig der Schutz der Schlüssel für Zwei-Faktor Authentifizierungen und Zertifikats-basierte Signaturen ist.

Viele Apple und Android Geräte enthalten einen TEE und können von uns unterstützt werden. Grundsätzlich nutzen alle Smartphones ARM-Prozessoren, die inzwischen standardmäßig die TrustZone enthalten. Wir gehen davon aus, dass in Zukunft alle Smartphones dieses Verfahren unterstützen. Außerdem verlangt Google seit Android 6 von allen Herstellern, dass, wenn sie einen Fingerabdruck nutzen, dieser in einem Hardware-TEE gesichert werden muss. [5]

Wenn Sie sich für die Absicherung im TEE interessieren, kontaktieren Sie uns gerne. Die öffentliche Version der SecSign ID nutzt momentan noch per Default die SafeKey Variante. Die TEE Methode wird allerdings schon von vielen unserer Kunden ausgiebig genutzt.
Mit dem nächsten Update kann der Kunde dann individuell die bevorzugte Methode bei der Registrierung auswählen.

Quellen

[1] https://en.wikipedia.org/wiki/ARM_architecture#TrustZone
[2] https://www.apple.com/business/docs/iOS_Security_Guide.pdf
[3] https://developer.apple.com/reference/security/ksecattrtokenidsecureenclave
[4[ https://developer.apple.com/videos/play/wwdc2015/706/
[5] https://developer.android.com/training/articles/keystore.html

Letzte Blog Einträge, Neuigkeiten & Funktionen

Crowd SSO

21.09.2017

Read More
Do NOT follow this link or you will be banned from the site!