Jouw sleutel tot de Smart Home-wereld
Nuki » Blog » Nuki News » Het concept van Nuki’s encryptie

Het concept van Nuki’s encryptie

08.10.2015

Beste Nuki fans,

Opmerking: Er is een bijgewerkte versie van deze blogpost waarin het versleutelingsconcept van Nuki op een eenvoudige en begrijpelijke manier wordt uitgelegd.

Veiligheid en beveiliging zijn twee van de belangrijkste eigenschappen van Smart Home-oplossingen, vooral als het gaat om het openen en op slot doen van je deur. In deze blog willen we je graag het encryptieconcept laten zien waarmee wij de maximale veiligheid van Nuki garanderen. ​

Nuki maakt gebruik van Bluetooth Low Energy om te communiceren met de Nuki-app. Om dit extra veilig te maken hebben we een zelfgemaakt encryptieprotocol toegevoegd, bovenop de standaard beveiliging van Bluetooth communicatie.

Eind-tot-eind-encryptie
Elke Nuki-app gebruikt zijn eigen sleutel om te communiceren met Nuki. Alleen jouw Nuki en jouw Nuki-app hebben deze sleutel.

Jouw data wordt versleuteld door de afzender (oftewel de Nuki-app) voordat de gegevensoverdracht plaatsvindt. Zo worden de gegevens altijd veilig verzonden. Dit betekent dat alleen versleutelde data wordt verzonden via Bluetooth en dat alleen de ontvanger deze ontsleutelt (oftewel het Nuki-apparaat).

Voor de versleuteling van jouw data gebruiken we NaCI (crypto_secretbox_xsalsa20poly1305) met 32-byte sleutels en 24-byte nonces.

Zo gaat dit bijvoorbeeld in z’n werk:
  1. In onze denkbeeldige situatie wil de app het commando “ontgrendelen” versturen. Hiervoor versleutelt de app het commando met een speciale sleutel. Alleen de Nuki-app en het Nuki-apparaat zelf krijgen deze sleutel.
  2. Daarna verstuurt de app het versleutelde bericht via Bluetooth naar jouw Nuki.
  3. Aangezien Nuki de sleutel heeft, kan deze het ontvangen bericht ontsleutelen en het commando succesvol uitvoeren.
Nuki Encryption Met de Nuki Bridge kun je de status van je slot bekijken en Nuki bedienen, zelfs op afstand. Met de Bridge heb je altijd toegang tot Nuki, waar je ook bent, omdat deze permanent is aangesloten op onze servers. Dit zou een potentiële zwakke plek voor hackers kunnen zijn. Daarom versleutelen we ook data die, via onze servers en jouw Bridges, doorgestuurd wordt van en naar jouw Nuki’s. Ook hier wordt een sleutel gebruikt die alleen jouw Nuki en de Nuki-app hebben.

Kortom, hoe de Nuki-app en Nuki hun data ook uitwisselen, het is altijd versleuteld met een sleutel die alleen de app en Nuki hebben. Niemand anders kan deze sleutel ontcijferen tijdens de overdracht. Zelfs niet onze eigen servers of de Bridge.

Nuki Encryption Diffie-Hellman-sleuteluitwisselingsprotocol
Je vraagt je misschien af hoe de informatie over de sleutel eigenlijk wordt gedeeld tussen de Nuki-app en Nuki, zonder dat anderen ervan af weten. Tijdens het koppelen van jouw Nuki en de Nuki-app vindt het Diffie-Hellman-sleuteluitwisselingsprotocol plaats. Dit maakt het mogelijk om een geheime sleutel aan te maken, die beide partijen vervolgens hebben, zonder de sleutel zelf daadwerkelijk te versturen.

Allereerst creëren zowel de Nuki-app als het Nuki-apparaat afzonderlijke sleutelparen die bestaan uit een geheime en een openbare sleutel. Tijdens de volgende stap wisselen ze hun openbare sleutels met elkaar uit. Ten slotte combineren jouw Nuki en de Nuki-app, voor elke overdracht, hun geheime sleutel met de openbare sleutel om zo de uiteindelijke, gedeelde sleutel te vormen.

De wiskunde die hier achter zit:
Allereerst hebben we twee parameters nodig die beide kanten kennen. Voor het eerste deel hebben we een heel groot priemgetal nodig p en voor het tweede deel gebruiken we de factor g. Om dit duidelijker te maken gebruiken we in het volgende voorbeeld kleine getallen: p = 17 en g = 3.

Beide kanten genereren een willekeurig nummer (de geheime sleutel).
Laten we ervan uitgaan dat de app a = 9 genereert en dat Nuki uitkomt op n = 7.

Nu berekenen beide kanten hun openbare sleutel met gx mod p.
De app berekent A = ga mod p = 39 mod 17 = 14 en verstuurt deze openbare sleutel naar jouw Nuki. Nuki daarentegen komt uit op N = gn mod p = 37 mod 17 = 11 en verstuurt deze openbare sleutel naar de App. Nu hebben beide kanten alle benodigde informatie om de gedeelde sleutel te berekenen met Xy mod p.
Nuki berekent An mod p = 147 mod 17 en komt uit op 6.
De app berekent Na mod p = 119 mod 17 en komt ook uit op 6.
En dus is 6 de gedeelde sleutel die gebruikt wordt voor verdere communicatie.

Zoals al eerder genoemd gebruiken we in dit voorbeeld met opzet hele kleine getallen om het zo transparant mogelijk te maken. In het echt maakt deze methode gebruik van 32-byte sleutels en wordt de gedeelde sleutel afgeleid van de berekende sleutel door middel van Key Derivation.

Opslag van de sleutels
De sleutels worden veilig opgeslagen op je smartphone en zijn niet toegankelijk voor andere apps of gebruikers. Dit is echter wel op voorwaarde dat je smartphone niet geroot of gejailbreaked is.

Als je smartphone kwijt raakt of gestolen wordt, kan de toestemming om Nuki te gebruiken worden verwijderd met een andere smartphone die toestemming heeft. Als er geen andere smartphone met toestemming is, kun je een nieuwe smartphone koppelen met jouw Nuki via Bluetooth of je kunt jouw Nuki simpelweg terugzetten naar de fabrieksinstellingen.

Challenge response-authenticatie
Om te voorkomen dat hackers een commando, bijvoorbeeld ‘ontgrendelen’, opnemen en deze hergebruiken om jouw deur te openen (een zogenoemde ‘replay-attack’), hebben we challenge response-authenticatie toegevoegd. De ene partij stuurt een heel lang willekeurig nummer (de challenge), die de andere partij moet toevoegen aan zijn antwoord (response). Als dit nummer niet wordt meegestuurd of niet overeenkomt, wordt het commando afgebroken.

Dit was een kort overzicht van ons beveiligingsconcept. Wij hopen dat we hebben kunnen laten zien dat wij de veiligheid en beveiliging van jouw huis als prioriteit zien.

Dit was een kort overzicht van ons beveiligingsconcept. Wij hopen dat we hebben kunnen laten zien dat wij de veiligheid en beveiliging van jouw huis erg belangrijk vinden.

Met vriendelijke groet,
Marc
Hoofd IT-afdeling

Vragen over Nuki?