Kann One-Way-SSL ein IoT-Gerät sichern?

9

Ich erwäge ein IoT-Gerät, das mit oder ohne Internetzugang mit meinem lokalen Netzwerk verbunden ist (Standardeinstellungen, kein VPN, kein NAT, keine DMZ). Mein Gerät wird als HTTP-Server ausgeführt, der einen RPC-Mechanismus mit Authentifizierung und Autorisierung bietet. Es bewirbt sich mit mDNS und ich spreche mit meiner mobilen App oder meinem RaspberryPi.

Es scheint, dass die Norm in der IoT-Entwicklung darin besteht, gegenseitiges (bidirektionales) SSL zu haben. Bedeutet das, dass One-Way-SSL meinen Verkehr nicht sichern kann? Warum?

Anmerkungen:

  • Ich verstehe die technischen Unterschiede zwischen Einweg- und Zweiweg-SSL, ich verstehe nicht, warum Einweg (fast) nie in der IoT-Produktion berücksichtigt wird.
  • Ich verstehe, dass es schwierig ist, gegenseitiges SSL für ein lokales Gerät zu haben: Sie müssen den öffentlichen Schlüssel und das Zertifikat des Servers für den Client freigeben und umgekehrt. One-Way hingegen scheint einfacher zu sein (erfordert keine Benutzeraktion).
  • Einige massenproduzierte Geräte wie Philips Hue hätten lieber einen offenen und ungesicherten lokalen http-Endpunkt als eine Einweg-SSL-Verschlüsselung. Warum sollte man diese Wahl treffen?
  • Ich erwarte, dass diese Frage nicht meinungsbasiert ist. Entschuldigung, wenn dies der Fall ist.
Valentin
quelle

Antworten:

8

SSL / TLS funktioniert gut, wenn sich der "Server" an einem bekannten Ort befindet (einem festen Hostnamen), der mit dem CN des vorgelegten Zertifikats übereinstimmen kann.

Dies funktioniert nicht gut für Geräte in Heimnetzwerken (z. B. die meisten IoT-Geräte), da diese dazu neigen, IP-Adressen von RFC1918-Blöcken zu erhalten und keine DNS-Einträge haben. Dies bedeutet, dass ihnen keine Zertifikate ausgestellt werden können (gut, aber die meisten Browser werden sie ablehnen). Aus diesem Grund verwenden Geräte wie Philips Hue ungesicherte HTTP-Endpunkte des Geräts. Sie sind im Wesentlichen auf den Zugriff auf das gesicherte Netzwerk angewiesen, um das Gerät zu schützen.

Wenn gegenseitiges TLS verwendet wird, wenn der Gerät eine Verbindung zu einem zentralen Dienst herstellt, verfügt der Client über ein eigenes Zertifikat / einen privaten Schlüssel, um zu authentifizieren, dass er im Namen des Eigentümers mit diesem zentralen Server handeln kann.

Zur Klärung Ihrer Frage müssen Sie das Serverzertifikat / den Serverschlüssel nicht an alle Clients verteilen, sondern nur das Zertifikat der Zertifizierungsstelle, die das Zertifikat ausgestellt hat, um zu beweisen, dass das Zertifikat vertrauenswürdig ist.

BEARBEITEN:

Ein gutes Beispiel für eine gesicherte lokale Geräteverbindung ist die Tradfri-Beleuchtung von IKEA, die COAP über DTLS mit einem vorinstallierten Schlüssel (in einem QR-Code) auf dem Gerät verwendet, mit dem ein Schlüssel pro Client generiert wird. Dies stellt den physischen Zugriff zum Einrichten eines neuen Clients sicher und schützt Daten im Flug im lokalen Netzwerk.

hardillb
quelle
Wenn der Host keinen festen DNS-Namen oder keine feste IP-Adresse hat, schlägt die normale Zertifikatsüberprüfung fehl, da das Zertifikat bestätigt, dass das Gerät an dieser Adresse derjenige ist, für den es sich ausgibt (normales "einseitiges" SSL). Für gegenseitig authentifiziertes SSL sollten Sie nicht für beide Parteien denselben Schlüssel / dasselbe Zertifikat verwenden. Der Server und der Client sollten erreichen, dass ihr eigenes Zertifikat / Schlüssel von einer vertrauenswürdigen
Zertifizierungsstelle
Danke für die Antwort und Entschuldigung für die lange Stille @hardillb. "Dies bedeutet, dass ihnen keine Zertifikate ausgestellt werden können (gut, aber die meisten Browser werden sie ablehnen)." In Anbetracht einer Kommunikation mit meinem IoT-Gerät sehe ich nicht, wann ich dazu einen Browser verwenden werde ... "Sie müssen das Serverzertifikat / den Serverschlüssel nicht an alle Clients verteilen, sondern nur das Zertifikat der Zertifizierungsstelle." Dies ist für Einweg-TLS richtig? Denn für gegenseitige glaube ich, dass Sie das Zertifikat und den Schlüssel geben müssen, was die Dinge viel schwieriger macht. In Bezug auf Tradfri dient der vorinstallierte Schlüssel der Authentifizierung und nicht der Verschlüsselung.
Valentin
Nein, der vorinstallierte Schlüssel von tradrfi dient zum Handshake und zum Erstellen eines Geräteschlüssels für die Verschlüsselung
hardillb
1

Im Allgemeinen ist TLS für viel mehr als x.509 geeignet, aber viele Implementierungen beschränken es auf nur x.509.

x.509 ist eine Technik für ein sicheres indirektes Vertrauen. "A" vertraut "B", wenn "B" ein Zertifikat hat, das von "C" signiert ist, und "C" von "A" als vertrauenswürdig eingestuft wird. Das funktioniert auch im wirklichen Leben; Sie vertrauen jemandem, den Sie nicht kennen, wenn ein Brief von einer vertrauenswürdigen Person unterschrieben vorgelegt wird. Vielleicht sehen Sie die Falle: Wenn der Brief sagt, geben Sie bitte eine Tasse Kaffee, die Sie Ihrem Auto nicht geben werden. Daher sind die zusätzlichen Informationen im Zertifikat auch für den Umfang des Vertrauens relevant. Aus diesem Grund enthält ein Server normalerweise seinen DNS-Namen oder seine IP-Adresse im Zertifikat. Im Allgemeinen können Sie unterschiedliche Informationen angeben (z. B. "Wohnzimmerlampe"), aber viele Implementierungen sind auch zumindest vorkonfiguriert, um das DNS / IP-Material zu verwenden / zu überprüfen. Und das alles funktioniert nur, wenn sich jemand um das Vertrauenswürdige kümmert. "

Wenn Sie Zeit damit verbringen können, überprüfen Sie Ihre Implementierung, wenn sie auch PSK-Verschlüsselungssuiten bietet. Wenn nicht, können Sie möglicherweise die "Validierungsprüfung" des Serverzertifikats anpassen. Aber es erfordert viel Lesen, um eine gute Lösung zu finden. Und manchmal bietet die verwendete TLS-Implementierung das einfach nicht.

Achim Kraus
quelle