Arduino Ethernet SSL TLS HTTPS POST GET Request

Mit dem Ethernet Shield (W5100) kann der Arduino netzwerkfähig gemacht werden. Gängige Protokolle wie TCP, UPD oder auch HTTP werden von diesem Shield problemlos unterstützt. Es gibt dafür auch sehr viele Bibliotheken, die den Programmieraufwand sehr erleichtern. Damit wird es auch Anfängern sehr leicht gemacht, einen Arduino mit dem Internet zu verbinden. Nachdem SSL heutzutage im WWW der Sicherheitsstandard ist, wird der Ruf nach verschlüsselten Datenübertragungen im Internet der Dinge immer lauter. In diesem Artikel geht es um die Kompatibilität von SSL/TLS HTTPS Requests mit dem Arduino und den möglichen Alternativen.

Warum überhaupt HTTPS?

Nachdem HTTPS Standard auf fast jedem Webserver ist, kommt es vermehrt vor, dass der Webserver herkömmliche HTTP-Anfragen gar nicht mehr annimmt. In diesem Fall muss ein Mikrocontroller Datenpakete über HTTPS senden, um den Server damit überhaupt erst erreichen zu können. Oftmals wird das SSL-Zertifikat gar nicht vom Mikrocontroller geprüft, denn es geht ja "nur" um die Datenübertragung. Wird das SSL-Zertifikat wirklich geprüft, könnten damit auch sensible Daten übertragen werden. Außerdem würde HTTPS auch bei einer bidirektionalen Verbindung sinn machen, da hier einen Steuerbefehl vom Server zum Controller schwieriger manipuliert werden kann.

Wie aufwendig ist HTTPS?

Was für einen Browser heutzutage absolut keine Herausforderung ist, ist für einen kleinen Mikrocontroller eine extreme Herausforderung. Im Gegensatz zu HTTP müssen neben den Nutzdaten und Headern noch sämtliche Schlüssel erzeugt, geprüft und ausgetauscht werden. Im Hintergrund laufen während der Übertragung viele mathematische Prozesse ab, die sehr viel Prozessorleistung und Zwischenspeicher erfordern.

Warum der Arduino kein HTTPS kann

Zum einen ist der Prozessor für TLS sehr langsam, würde es aber mit viel Zeit trotzdem schaffen. Auch das Ethernet-Shield am Arduino wäre theoretisch für einen HTTPS-Request geeignet. Primär scheitert es letztendlich am Arbeitsspeicher vom Arduino, der für die SSL/TLS Verschlüsselung einfach zu klein ist.

Welche Alternativen gibt es?

Neuere Boards mit schnelleren Prozessoren und mehr Arbeitsspeicher sind in der Regel dafür geeignet. Boards die speziell für das Internet der Dinge ausgelegt sind, wie z.B. der ESP8266 oder ESP32 unterstützen SSL/TLS und haben dafür auch genug Ressourcen. Aber auch hier benötigt ein HTTPS-Request einige Sekunden, bis dieser fertig abgearbeitet ist. Aber auch Linux basierende Arduino Boards oder MKR Boards würden die Leistung erbringen.

Oft gelesen

Anzeige:

Social Media

Newsletter