Forum: Mikrocontroller und Digitale Elektronik SMTP und POP3 mit SSL/TLS für Microcontroller


von Hanns-Jürgen M. (yogy)


Lesenswert?

Hallo zusammen,

seit einigen Jahren nutze ich kleine Controllersysteme zur 
Hausüberwachung oder zur Heizungssteuerung, die mir Statusmails senden 
und auch in der Lage sind, eMails zu empfangen.

Als HW nutze ich dazu Arduino-Hardware (Mega oder zunehmend  DUE) mit 
einem Wiznet W5100 oder W5500 Ethernetmodul, die ich über das 
Atmel-Studio in ANSI-C programmiere.

Vor über einem Jahr hat aber auch der letzte meiner eMail Provider den 
unverschlüsselten POP3-Zugriff  abgeschaltet. Und nur noch über 
SMTP2GO.COM kann ich unverschlüsselt versenden.

Ich möchte nun zumindest bei den DUE-Versionen SSL/TLS nachrüsten. Nur, 
irgendwie bin ich dazu zu blöde. Suchen im Internet führten mich u.a. zu 
WolfSSL (GITHUB), finde mich da aber nicht zurecht bzw. kann die 
notwenigen Routinen nicht extrahieren Zu Blöde?

Was brauche ich eigentlich?

Soweit ich das verstanden habe, sendet mir der Mailserver nach 
Kontaktierung seiner URL und dem zugehörigen Port seinen Schlüssel.

Den muß mein System nun mit einem eigenen Schlüssel „verknautschen“ und 
zurücksenden. (Die Verifizierung des Serverschlüssels lassen wir mal 
außen vor.) Dazu brauch ich "eigentlich" nur eine passende Routine.

Die weitere Kommunikation findet mit den üblichen SMTP/POP3  Befehlen 
etc. statt (?). Die jeweilige Übertragung wird dazu verschlüsselt bzw. 
entschlüsselt. Dazu brauche ich also weitere zwei Routinen. Mehr doch 
wohl nicht?

Was habe ich dabei mißverstanden bzw. übersehen? Wo finde ich die 
notwendigen Algorithmen oder gar Routinen dazu? Ich kaufe dazu auch 
gerne ein Buch.

Oder stellt eine TLS-Implementierung auf einem Arduino-DUE zu hohe 
Anforderungen an die Leistungsfähigkeit des Controllers SAM3X8E ?

Das Zwischenschalten eines Mailrelays (z.B. RasPI. mit Linux)  ist wegen 
des Stromverbrauchs und der Systemgröße unpassend und wäre wie „mit 
Kanonen auf Spatzen schießen“.

Danke für eure Tips.

von Frank K. (fchk)


Lesenswert?

Du brauchst AKTUELLE TLS-Standards. Die sind mit den aktuell geforderten 
Schlüssellängen schon heftig für einen Mikrocontroller, und es ist 
heftig komplexe Software. Veraltete Implementationen nützen Dir nichts, 
Du brauchst was aktuelles. Und die Anforderunegn steigen - von Jahr zu 
Jahr werden größere Schlüssellängen vorgeschrieben.

Gehe mal davon aus, dass Du mit Deinem Arduino-Zeugs am Ende bist. Du 
bräuchtest etwas deutlich stärkeres - so wie ein Teensy 4.1 mit 600 Mhz 
Cortex M7 oder ein STM32H7 System mit 480 MHz, und dazu ein 
Komplettpaket mit RTOS und Bibliotheksunterstützung wie NuttX, Zephyr 
oder etwas anderem in dieser Größenordnung. Da gibts dann auch 
TLS-Support.

Wenn Du Ver/Entschlüsselung aber nicht unbedingt brauchst, dann mach es 
doch ganz anders. Miete Dir einen kleinen VServer (z.B. bei NetCup ab 
3.99€ pro Monat) und installiere Dir dort einen eigenen Mailserver. Oder 
miete Dir Webspace und lasse da PHP-Skripte laufen, die mit Deinen 
Systemen über http oder nackte TCP-Verbindungen kommunizieren. Mit einem 
dieser Ansätze kannst Du bei Deiner bekannten Hard- und Software 
bleiben, musst dann eben halt zusätzliche Infrastruktur betreiben. Das 
ist dann halt so.

fchk

: Bearbeitet durch User
von Hmmm (hmmm)


Lesenswert?

Hanns-Jürgen M. schrieb:
> Das Zwischenschalten eines Mailrelays (z.B. RasPI. mit Linux)  ist wegen
> des Stromverbrauchs und der Systemgröße unpassend

Wenn Dein Router für OpenWRT geeignet ist, kannst Du darauf stunnel 
installieren. Dorthin verbindest Du Dich dann unverschlüsselt, und zum 
Mailprovider setzt es auf TLS um.

von Niklas G. (erlkoenig) Benutzerseite


Lesenswert?

Frank K. schrieb:
> so wie ein Teensy 4.1 mit 600 Mhz
> Cortex M7 oder ein STM32H7 System mit 480 MHz

Oder einen ESP32, in deren Software-Framework (ESP-IDF) ist TLS fix und 
fertig integriert. Spart auch das Kabel und den W5000 dank WiFi (aber 
die ESP32 haben auch Ethernet integriert).

Hanns-Jürgen M. schrieb:
> (Die Verifizierung des Serverschlüssels lassen wir mal
> außen vor.)

Ohne diese Verifikation ist die ganze Verschlüsselung aber vollkommen 
nutzlos.

Oder du lässt das mit der E-Mail ganz bleiben und sendest deinen Status 
stattdessen per MQTT oder auch Rest-API an einen Server, es dürften sich 
genug fertige Systeme finden die dir das dann schick präsentieren. 
MQTT+TLS ist bei den ESP32 fertig integriert, muss man nur aufrufen.

Hmmm schrieb:
> Wenn Dein Router für OpenWRT geeignet ist, kannst Du darauf stunnel
> installieren.

Da doch besser direkt einen Mailserver installieren, welcher dann 
forwardet.

von Andreas M. (amesser)


Lesenswert?

Frank K. schrieb:
> Zeugs am Ende bist. Du bräuchtest etwas deutlich stärkeres - so wie ein
> Teensy 4.1 mit 600 Mhz Cortex M7 oder ein STM32H7 System mit 480 MHz,

Bullshit. Ich kann Dir versichern das ein 100MHz Cortex M4 ausreicht um 
einen Webserver mit TLS laufen zu lassen. Für ein bischen SMTPS als 
Client langt der allemal.

An den TO: ganz so einfach wie Du Dir das vorstellst ist das mit SSL/TLS 
nicht. Im Prinzip musst Du deinen Datenverkehr komplett durch den TLS 
Layer schicken. Eine fertige Implementierung davon für Mikrocontroller 
wäre zum Beispiel mbedTLS.

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.