Forum: Mikrocontroller und Digitale Elektronik Tamper Detection Mikrocontroller / Embedded System mit secure Key Storage


von Simon W. (wysi)



Lesenswert?

Hallo zusammen

Für ein LoRaWAN Gerät (node) suche ich Lösungen für sichere Hardware 
(Mikrocontroller, Verschlüsselung, Secure Key Storage, Tamper Detection)
Dabei sollen die Keys für das LoRaWAN sicher gespeichert werden und bei 
einem Angriff auf die Hardware gelöscht werden.
Bis jetzt habe ich folgende Varianten gefunden:

- ARM Cortex MCU mit Tamper detection (z.B NXP (Freescale) Kinetis 
Serie)
http://www.nxp.com/products/microcontrollers-and-processors/arm-processors/kinetis-cortex-m-mcus:KINETIS

- Externe Security Controller wie maxim integrated MAXQ1061 oder 
ATECC508A
https://www.maximintegrated.com/en/products/digital/microcontrollers/MAXQ1061.html

- LoRaWAN Secure Element TO136 von Trusted Objects
http://www.trusted-objects.com/lorawan-secure-modem.html

Die Anwendung der externen Kryptographie IC habe ich für symmetrische 
Verschlüsselungen nicht ganz verstanden. Der Plaintext geht dabei meines 
Wissens über I2C in den IC hinein und kommt verschlüsselt wieder heraus. 
Dies macht für mich wenig Sinn – Der Angreifer bekommt zwar den Key 
nicht zu Gesicht, kann aber seine Daten auch mit dem IC verschlüsseln.

Kenn sich jemand mit solchen Kryptographie IC aus?

Gibt es ander Lösungen?

: Bearbeitet durch User
von Stefan (Gast)


Lesenswert?

Was genau muss gesichert werden? Normalerweise funktioniert das ganze 
nach TLS Prinzip, nur dass tls alleine keine Authentication durchführt. 
weiterhin musst du die Applikation näher beschreiben. In 
Sicherheitskreisen gilt folgendes:
1) als erstes sicherstellen dass der Gesprächspartner der ist den er 
vorgibt zu sein : 2-way authentication
2) sicherstellen dass daten nicht von dritten geändert wurden auf dem 
transportweg
3) wenn 1+2) gegeben ist Verschlüsselung optional

Hier greift ecc508 ein. Zuständig für 1+2
3) erfolgt optional im mcu ( dieser muss aber wirklich hw gesichert sein 
wie der ecc508 pder eine smartcard, der von dir erwähnte mcu ist es 
nicht fa kein die shield usw).

Ecc508 macht also erstmal secure key storage, darauf erlaubt es eine 
root CA zu bilden, signer zu bilden und eine chain of trust zu bilden. 
Dazu nutzt er ecdsa zum verifizieren und unterschreiben von Nachrichten 
und ecdh zur session key generierung mit betonung auf session key. Die 
session ist zeitlich begrenzt und der key damit nur kurz gültig. Sind 
die Informationen super confidential, sollte die Nachricht zb in mehrere 
teile zerlegt werden und jeweils mit einem neuen session key 
verschlüsselt werden. Wichtig hier: der root key aus dem der session key 
generiert wird kommt nie aus dem chip raus. Der ecc508 macht keine 
encryption das macht die mcu. Das A&O ist aber, ob ich in der Lage bin 
zu authenifizieren und sicherzustellen dass die daten nicht geändert 
wurden und ich die security chain nachvollziehen kann.

Siehe Amazon AWS da wird expliziet der ecc508 empfohlen und verwendet. 
Genauso wolfssl.

von Simon W. (wysi)


Lesenswert?

Hallo Stefan

Vielen Dank für die Informationen.

Wenn ich dich richtig verstanden habe, sollen die externen Security 
Controller mit Asymmetrischen Verschlüsselung den Key für darauf 
folgende symmetrische Verschlüsselungen austauschen.

Ich beschreibe meine Anwendung noch etwas genauer:

LoRaWAN mit verwendung des offenen "The Things Network" kann kleine 
Datenmengen über weite Distanzen (bis zu 5km in der Stadt) mit wenig 
Energie übertragen.

Dabei wird die verfügbare Übertragungszeit pro Device auf 30 Sekunden 
pro Tag beschränkt. Je nach Empfangsstärke sind das 200 bis 5000 Bytes 
pro Tag.

In unserer Anwendung sollen regelmässig (z.B 5x pro Stunde) Messwerte 
verschlüsselt (AES) an einen Server übermittelt werden. Ich denke, dass 
der Overhead für die Authentifizierung mit Public und Private Key zu 
gross ist.

: Bearbeitet durch User
von Alex W. (a20q90)


Lesenswert?

Was für Sensorwerte sind das?

Solltet ihr gerade auch Feinstaubsensoren verwenden, denkt bitte daran 
was ihr mit einem Messwert der zuviel ggü. den amtlichen Messstationen 
anzeigt für einen Schaden anrichten könnt?

Esoteriker und Hypersensible nehmen dann lieber eure Messwerte als die 
einzig wahren an und schüren wieder Verschwörungstheorien der 
"Messwandlermafia"

In der Esoterik gilt:
"Das Ergebniss das mir am meisten für meine Ansichten oder daraus 
resultierende Einflusmöglichkeiten passt, ist das einzig richtige!"

von Simon W. (wysi)


Lesenswert?

Hallo Alex

Vielen Dank für deinen berechtigten Einwand.

In Zukunft könnten die Messwerte durchaus sensitive Daten von 
Stromzählern etc. sein. Zudem sollen über dieses LoRaWAN device auch 
Steuerungsaufgaben wahrgenommen werden. Dabei wird die Sicherheit 
wichtiger.

Weil man Hardware-Sicherheit schlecht nachträglich einbauen kann und 
diese bei IoT Devices gerne vernachlässigt wird, wollen wir möglichst 
früh damit beginnen.

Zudem muss natürlich immer abgeschätzt werden, welcher maximaler 
(finanzieller) Schaden entstehen kann, und welche finanziellen Mittel 
der Angreifer zur Verfügung hat.

von MaWin the one and only (Gast)


Lesenswert?

Uhm, ich gehöre wirklich nicht zu denen, die als Allererstes "lass die 
Finger davon" schreien, aber in deinem Fall scheint mir doch die 
Diskrepanz zwischen deinem Vorwissen und den Anforderungen extrem hoch 
zu sein... wer wirklich secure storage und tamper detection haben will, 
dem kann man keine Lösung mit Forumswissen anbieten!

Der externe Crypto Chip würde nichts weiter tun als die CPU intensiven 
Cryptierroutinen übernehmen, d.h. Encryption und Decryption für Dich 
machen (wie Du zunächst richtig vermutet hast, würde der "Urschlüssel" - 
der Skizze nach ein symmetrischer AES Schlüssel - den Coprozessor 
niemals verlassen). Da könnte sich zwar Jemand reinhängen, aber das wäre 
nicht meine unmittelbare Sorge - einmal weil ja Tamper Detection mit On 
Board wäre und zweitens Mal weil sicherlich das Wireless Protokoll 
Playback Attack Preventions beinhaltet, also z.B. Session Key Management 
oder CBC mit fortlaufenden IVs, wodurch nicht einfach ein Datenpaket in 
den Datenstrom eingeschmuggelt werden könnte (das würdest Du dann nach 
den Vorgaben des Moduls implementieren).

Das ist aber nur die Spitze des Eisbergs. Security ist wie ein 
Schlauchboot; Du kannst noch so viele Löcher stopfen - kommt noch eines 
rein, geht das Boot trotzdem unter. Wenn Du nicht schon einmal durch 
einen Audit Prozess durchgegangen bist, hast Du nicht die geringste 
Ahnung, wieviel Lochpotential in so einer Architektur drin ist - das 
geht schon mit dem Zufallszahlengenerator los (den man so oder so 
braucht aber an dem ein Security Profi ca. 200 Angriffspunkte findet).

Ich würde in diesem Fall die Dienste einer Zertifikationsstelle oder 
eines auf IT Security spezialisierten Unternehmens zurückgreifen, um 
zumindestens das erste Dutzend Sollbruchstellen zu identifizieren.

von Simon W. (wysi)


Lesenswert?

Vielen Dank für deine ausführliche Antwort.

In der Tat sehe ich das Thema Sicherheit als sehr anspruchsvoll. Aber 
wenn man gar nie damit anfängt, dann lernt man nichts neues und die 
Sicherheit wird auch nicht besser. Damit das System Standards standhält, 
ist es sicher notwendig, dass spezialisiert Firmen dafür eingesetzt 
werden.

Ich nehme an, dass mit der Tamper Detection eine Netz z.B um den I2C Bus 
erstellt würde, damit niemand Daten von diesem abfangen oder darauf 
senden kann.

Wenn dies nicht vorhanden wäre und der Angreifer aus dem Plaintext die 
Frame (=Session) Nummer erfahren könnte, dann könnte er diese für das 
nächste Packet einfach erhöhen und hätte somit den Playback Schutz 
umgangen.

Wie ich deinem Post entnehme, hast du Erfahrung im Gebiet Hardware 
Security.

Kannst du mir einen ARM Cortex wie z.B die Kinetis Reihe empfehlen?

Oder soll ich einen externen Security Kontroller verwenden?

: Bearbeitet durch User
von S. R. (svenska)


Lesenswert?

Definiere die Angriffsszenarien, vor denen du dich schützen willst.

Vergleiche den Wert deiner Daten (bzw. die Kosten im Fall eines 
erfolgreichen Angriffs) mit dem Aufwand, den ein Angreifer treiben muss 
und dem Aufwand, den du treiben musst, um diesen Angreifer abzuwehren.

Übliche Controller bieten einen Ausleseschutz (Lock-Bits, Fuse-Bits), 
der für die meisten Fälle hinreichend ist. Die Keys stehen dann einfach 
im Flash (oder EEPROM). Die Verschlüsselung ist zudem nicht 
zeitkritisch, darf also auch gern ein paar Sekunden pro Paket dauern 
(musst du mit dem Energieverbrauch abwägen, aber ein Extrachip dürfte 
schlechter sein). Bei den Winzpaketen ist der Key vermutlich sowieso 
länger als die Daten...

Eine einfache Tamper-Detection kann aus einer Plombe bestehen, oder 
einem Taster, der im geschlossenen Gehäuse konstant gedrückt ist. 
Alternativ geht auch eine Lichtschranke oder sogar ein Lichtsensor.

Hängt schlicht davon ab, wieviel Sicherheit du wirklich brauchst, und 
wieviel Sicherheit du vermarkten willst. Die haben in aller Regel 
sowieso nichts miteinander zu tun.

Nachtrag: Crypto ist nie die Lösung des Problems. Sie transformiert 
das ursprüngliche Problem in ein Schlüssel-Verwaltungs-Problem. Solange 
du also die Schlüsselverwaltung nicht sauber gelöst hast, ist der Rest 
reinste Makulatur.

: Bearbeitet durch User
von Meckerziege (Gast)


Lesenswert?

Ist das ein privates Projekt? Oder für die Arbeit?
Im zweiterem Fall solltest du dir professionelle Beratung suchen. Du 
lernst auch dabei, weil die Lösung üblicherweise mit dir zusammen 
geplant und entwickelt wird.
Kann bei Bedarf auch nen Kontakt herstellen.

von Daniel H. (Firma: keine) (commander)


Lesenswert?

Simon W. schrieb:
> Die Anwendung der externen Kryptographie IC habe ich für symmetrische
> Verschlüsselungen nicht ganz verstanden. Der Plaintext geht dabei meines
> Wissens über I2C in den IC hinein und kommt verschlüsselt wieder heraus.
> Dies macht für mich wenig Sinn – Der Angreifer bekommt zwar den Key
> nicht zu Gesicht, kann aber seine Daten auch mit dem IC verschlüsseln.
>
> Kenn sich jemand mit solchen Kryptographie IC aus?

Du solltest erst einmal eine Sicherheitsanalyse machen um 
herauszufinden, was überhaupt dein Angreifermodell ist und wo bzgl. 
dieses Angreifermodells deine Schwachstellen liegen. Und zwar nicht nur 
auf die Geräte im Feld sondern auf das Gesamtsystem. Davon ausgehend 
sollte dann ein geeignetes Sicherheitsmodell definiert und implementiert 
werden.

Am Ende könnte das Ergebnis sogar sein, dass du jeden x-beliebigen 
Controller nehmen und die Security in Software implementieren kannst, 
solange der Debug-Port dichtgemacht wird. Nicht jeder Angreifer verfügt 
über die Mittel um z.B. Side-Channel- oder Hardware-Angriffe zu fahren. 
Und die, die es können haben möglicherweise in diesem speziellen 
Anwendungsfall gar kein Interesse daran, da das zu erreichende Ziel es 
nicht wert ist.

Einfach einen Security-Controller in das System zu kippen und das Beste 
zu hoffen ist selten zielführend. Was nützt dir die beste 
Security-Implementierung, wenn am Ende jemand per Social-Engineering 
Zugriff auf das Backend erhält und dort bequem sämtliche Daten oder 
sogar die Geräteschlüssel abschnorcheln kann.

von Tiramisu (Gast)


Lesenswert?

>Du solltest erst einmal eine Sicherheitsanalyse machen um
>herauszufinden, was überhaupt dein Angreifermodell ist und wo bzgl.
>dieses Angreifermodells deine Schwachstellen liegen. Und zwar nicht nur
>auf die Geräte im Feld sondern auf das Gesamtsystem. Davon ausgehend
>sollte dann ein geeignetes Sicherheitsmodell definiert und implementiert
>werden.
>wenn am Ende jemand per Social-Engineering
>Zugriff auf das Backend erhält und dort bequem sämtliche Daten oder
>sogar die Geräteschlüssel abschnorcheln kann.

Genau! Technisch ist es eine "analoge" Lösung Messwerte (Luftdruck,
Stromzählerenergieverbauch) über einen verschlüsselten Kanal zu senden.
Ein Angreifermodell für einen abrechnungsrelevanten Stromzähler($$$) in
einem Privathaushalt hat ein anderes Modell als den Luftdruck eines
Sensors in eine Zentrale eines "Opensource-Wetterdaten"-Projektes
zu übertragen.

Sollte die Anwendung im KRITUS Umfeld(z.B. Stromversorger) sein, sind im
Gesetz "State-of-the-art" Vorgaben definiert. Ein professioneller 
Auditor
würde beispielsweise die Nase rümpfen, wenn der vorgeschlagene
persistente symmetrische AES-Key nicht regelmässig ausgetauscht
wird. Man kann sehr wohl bei kleinen
Installationen TLS/IPSEC/SSH basierte asymmetreiche Verfahren verwenden!
Bei den geringen Datenmengen wuerde eine ECDH/ECDSA wohl einmal am Tag
ausreichen.

Zurück zum Design des Gesamtsystem: Nehmen wir an, die Sensoren
im Feld sind "sicher" (nach einer Definition, die man niederschreiben
muss, denn wer im Besitz der Hardware ist und genügend finanzielle
Mittel --- Angreifermodell --- hat, kommt in den entsprechenden Laboren
an fast alles ran...), was ist mit der zentralen Stelle? Nehmen wir mal
an, Deine zentrale Infrastruktur sammelt Stromzählerdaten. Wie ist denn
da der zentrale Zugriff auf die Daten gestaltet? Kann ein von der Mafia
quersubventionierter Mitarbeiter die Daten so auswerten, dass er erkennt
wann die Kunden im grossen Sommerurlaub sind und die Einbruchkommandos
losschicken? (Stichwort: organisatorische und personelle Sicherheit).
Ich weiss, das interessiert einen Techniker erstmal nicht, aber der
Securityaudit erfolgt in der Regel top-down.

Tampersicherheit würde ich erstmal ausklammern. Taster sehe ich beim
ersten Gerät, dann weiss ich, wo ich bohren muss und was zu brücken 
ist...
Ich habe (akkuflankierte) Boxen gesehen, die Infrarotsensoren und
Ultraschallkomponenten hatten fuer sensitive Anwendungen,
die dann den Schluessel löschen, wenn der Akku zuneige geht und man
die Teile nicht wie rohe Eier behandelt.
Die HSMs bei Grossrechnern haben Sensoren drin, die eine Keylöschung
bewirken, wenn sie sich unter einem Röntgen wähnen. Wenn man die im
Flugzeug transportiert (Höhenstrahlung) und man legt Wert auf den
Erhalt der Schlüssel, muss man spezielle Maßnahmen ergreifen...
Wirkliche über Tasterchen hinausgehende Tampersicherheit ist teuer,
wieder vom Angreifermodell abhängig und leider kaum dokumentiert.
Für die meisten Angreifermodelle sollten aber EAL-zertifizierte
Smartcards ausreichen, die haben Strukturen auf Die-Ebene "dazugebaut",
die zumindest für ein normales Halbleiterlabor die Analyse
zu einer extremen Knobelei werden lassen.

Wie oben schon erwähnt: Krypto ist nicht trivial, man nimmt in dem 
Bereich
etwas, was sich vielfach bewährt hat und abgehangen ist (z.B. OpenSSL,
LibreSSL), die  haben die ganzen Bugs und Seitenkanalangriffe 
(hoffentlich)
schon hinter sich :-)

Sollte es etwas Zertifikatsbasiertes werden (da es hier nur gestreift
worden ist): Die Sicherheit der CA bzw. der CA-ausgebenden Kette ist
essentiell. Auch da kann man sich Inspirationen nichttechnischer Art
an den Betriebsbedingungen des Signaturgesetzes holen, technisch könnte
das eine Windows-CA oder gar ein (standalone) Linux auch hinbekommen...
Was passiert mit kompromittieren Sensoren (Stichwort OCSP, personelle
Organisation) und wie passt die CA-Infrastruktur im Officebereich
(Replacement z.B. 3 Jahre) zum Produktlifecycle der Sensoren (eher so 
Richting 10J gehend).

von Simon W. (wysi)


Lesenswert?

Vielen Dank für eure ausführlichen Beiträge!

Tiramisu schrieb:
> Man kann sehr wohl bei kleinen
> Installationen TLS/IPSEC/SSH basierte asymmetreiche Verfahren verwenden!
> Bei den geringen Datenmengen wuerde eine ECDH/ECDSA wohl einmal am Tag
> ausreichen.

Ich habe LoRaWAN boards gefunden, die asymmetrische Verschlüsselung 
(Elliptic Curve Cryptography) mit dem ATECC508 von Microchip/Atmel 
verwenden.

ATECC508:
http://www.microchip.com/design-centers/security-ics/cryptoauthentication/ecc

SODAQ Microchip ExLoRer LoRaWAN Test-Board:
https://www.thethingsnetwork.org/forum/t/sodaq-microchip-explorer/4111/15
https://shop.sodaq.com/en/explorer-eu.html

Bitte melde dich an um einen Beitrag zu schreiben. Anmeldung ist kostenlos und dauert nur eine Minute.
Bestehender Account
Schon ein Account bei Google/GoogleMail? Keine Anmeldung erforderlich!
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.