GratisversandNur bis 18.12.2016

Maximum an Sicherheit: Das Nuki Verschlüsselungskonzept

08.10.2015 Türschloss, christoph.eibl
Liebe Nuki Fans,

Sicherheit ist einer der wichtigsten Faktoren, wenn es um Smart-Home Lösungen geht – insbesondere, wenn die eigene Haustüre geöffnet werden soll. Daher wollen wir euch nun zeigen, welche Verschlüsselungskonzepte wir verwenden, um euch ein Maximum an Sicherheit bieten zu können.

Nuki verwendet zur Kommunikation mit der Nuki App Bluetooth Low Energy. Um einen hohen Sicherheitsstandard zu erreichen haben wir auf die normale Bluetooth-Kommunikation ein eigenes Verschlüsselungsprotokoll aufgesetzt.​

End-to-End-Verschlüsselung
Jede Nuki App verwendet für die Kommunikation mit dem Nuki einen eigenen Schlüssel, der nur dem Nuki und der jeweiligen App bekannt ist. Niemand sonst kennt diesen Schlüssel.

Damit die per Bluetooth übertragenen Daten stets sicher vor Angreifern sind, werden die Daten bereits vor der Übertragung vom Sender (z.B. der App) verschlüsselt.
Erst die bereits verschlüsselten Daten werden per Bluetooth übertragen und beim Empfänger (z.B. dem Nuki) wieder entschlüsselt.

Zur Verschlüsselung der Daten wird NaCl eingesetzt, genauer gesagt crypto_secretbox_xsalsa20poly1305. Hierbei werden 32-Byte Schlüssel und 24-Byte Nonces verwendet.

Sehen wir uns dies mal Anhand eines vereinfachten Beispieles an.
1. Nehmen wir an, die App möchte den Befehl “unlock” senden. Dafür verschlüsselt sie diesen Befehl mit dem Schlüssel, der nur ihr und dem Nuki bekannt ist.

2. Anschließend überträgt die App die verschlüsselte Nachricht per Bluetooth zum Nuki.

3. Da das Nuki den Schlüssel ebenfalls kennt, kann es die erhaltene Nachricht entschlüsseln und den Befehl ausführen.

Nuki Encryption Damit ihr den Status eures Nukis auch von unterwegs einsehen und diesen auch von überall aus bedienen könnt, bieten wir euch die Nuki Bridge. Diese macht euer Nuki von überall aus erreichbar, indem sie eine dauerhafte Verbindung zu unseren Servern offen hält.
Dies könnte ein Angriffspunkt für potenzielle Angreifer sein. Daher sind auch sämtliche Daten, die von und zu euren Nukis über unsere Server und eure Bridges weitergeleitet werden, verschlüsselt. Hierbei wird ebenfalls jener Schlüssel verwendet, der nur eurem Nuki bzw. eurer App bekannt ist.

Kurzum bedeutet dies, egal auf welchem Weg eine Nachricht zwischen App und Nuki ausgetauscht wird, sie ist stets mit jenem Schlüssel verschlüsselt, der nur App und Nuki bekannt ist und kann auf dem Transportweg von niemandem entschlüsselt werden, auch nicht von unserem Server oder der Bridge.

Nuki Encryption Diffie-Hellman-Schlüsselaustausch
Ihr fragt euch nun vielleicht, wie der gemeinsame Schlüssel, mit dem App und Nuki ihre Nachrichten untereinander verschlüsseln, eigentlich in die App bzw. ins Nuki kommt, ohne dass dieser jemand anderem bekannt ist.
Hierfür findet während des Pairings zwischen App und Nuki ein Diffie-Hellman-Schlüsselaustausch statt, der es ermöglicht einen auf beiden Seiten bekannten geheimen Schlüssel zu erzeugen ohne diesen selbst jemals zu übertragen.

Dabei, wird auf beiden Seiten – App und Nuki – zunächst ein Schlüsselpaar aus einem geheimen und einem öffentlichen Schlüssel erzeugt. Anschließend sendet jede Seite der jeweils anderen ihren öffentlichen Schlüssel. Nun berechnet jede Seite aus dem eigenen geheimen und dem öffentlichen Schlüssel der anderen Seite den gemeinsamen Schlüssel.

Die Mathematik dahinter
Zunächst braucht es zwei Parameter, die beiden Seiten bekannt sein müssen. Einerseits eine sehr große Primzahl p und andererseits einen Faktor g. Im folgenden Beispiel werden hier bewusst sehr kleine Zahlen verwendet, um dies anschaulich darstellen zu können.
Wir verwenden also p = 17 und g = 3.

Beide Seiten erzeugen eine Zufallszahl (den geheimen Schlüssel).
Die App wählt also beispielsweise a = 9 und das Nuki wählt n = 7.

Nun berechnet jede Seite mittels gx mod p den öffentlichen Schlüssel.
Die App errechnet A = ga mod p = 39 mod 17 = 14 und sendet diesen öffentlichen Schlüssel zum Nuki. Nuki errechnet N = gn mod p = 37 mod 17 = 11 und sendet diesen öffentlichen Schlüssel an die App. Nun haben beide Seiten alle Informationen zur Berechnung des gemeinsamen Schlüssels mittels Xy mod p.
Nuki errechnet den Schlüssel mittels An mod p = 147 mod 17 und erhält 6.
Die App errechnet den Schlüssel mittels Na mod p = 119 mod 17 und erhält ebenfalls 6.
6 ist somit der gemeinsame geheime Schlüssel, der für die weitere Kommunikation verwendet wird.

Dieses Beispiel verwendet – wie bereits erwähnt – bewusst sehr kleine Zahlen zur Veranschaulichung. Tatsächlich werden hier 32-Byte Schlüssel verwendet und der gemeinsame Schlüssel wird zusätzlich noch mittels Key derivation aus dem errechneten Schlüssel abgeleitet.

Speicherung der Schlüssel
Die Schlüssel sind am Smartphone sicher und für den User bzw. andere Apps unerreichbar gespeichert. Dies setzt allerdings voraus, dass das Smartphone nicht gerootet/gejailbreaked wurde.

Sollte ein berechtigtes Smartphone verloren gehen, so kann dessen Berechtigung mithilfe eines anderen berechtigten Smartphones vom Nuki gelöscht werden. Sollte kein zweites berechtigtes Smartphone vorhanden sein, so kann entweder ein neues vor Ort via Bluetooth autorisiert, oder das Nuki auf Werkseinstellungen zurückgesetzt werden.

Challenge-Response
Um zu verhindern, dass ein Angreifer eine Nachricht – beispielsweise einen Entsperrbefehl – aufzeichnen und mit dieser aufgezeichneten Nachricht später einen erneuten Entsperrvorgang auslösen kann (eine sogenannte Replay-Attacke), verwenden wir das sogenannte Challenge-Response Verfahren.
Hierbei wird der anderen Seite über den verschlüsselten Kanal immer zuerst eine sehr große Zufallszahl übermittelt (Challenge), die die andere Seite auch in der Antwort (Response) angeben muss. Macht sie dies nicht, oder wird eine falsche Zufallszahl übermittelt, wird der Befehl abgelehnt.

Im Beispiel des Entsperrvorganges würde die App zunächst eine 32-Byte Zufallszahl erhalten und kann erst danach einen Entsperrbefehl, der diese Zufallszahl zwingend enthalten muss, an das Nuki senden.
Wird anschließend erneut ein Entsperrbefehl mit der selben Zufallszahl an das Nuki gesendet, so wird dieser vom Nuki abgelehnt.

Dies war ein kleiner Einblick in unser Sicherheitskonzept. Wir konnten euch hiermit hoffentlich zeigen, dass die Sicherheit eures Zuhauses eines unserer wichtigsten Anliegen ist und wir hierbei keinesfalls Abstriche machen.

Bis zum nächsten Mal und alles Gute,
Marc
Head of Tech