SSH-Server und TLS auf einem AVR(32)

Gast #1967284
Lesenswert?

Ich habe schon ein paar Projekte mit ATmega und ENC28J60 realisiert.

Nun muss ich fuer ein Studienprojekt einen SSH-Server sowie TLS auf 
einem Mikrocontroller (vorgabe vom Prof) realisieren, bin dabei aber ein 
wenig skeptisch.

Mit einem ATmega duerfte das nicht zu stemmen sein.

Daher wuerde ich jetzt einen AVR32 in Betracht ziehen (AT32UC3A)...

OS (Linux) soll keins drauf laufen. Das soll alles  selbst entwickelt 
werden.

Was meint ihr? Hat vielleicht schonmal wer einen SSH-Server auf einem uC 
implementiert?
#1967299
Lesenswert?

Macht das wirklich Sinn?

Erstmal würde ich prophezeien, daß der Aufwand nicht unerheblich
ist (weil ssh selbst ja wieder Ansprüche stellt), aber sicher
machbar.

Aber angenommen, man bekommt die ssh-Seite hin: was dann?
Jemand macht eine Verbindung zu dem Rechner und findet - nichts.
Irgendwoher muß ja noch ein Kommandointerpreter kommen,
der auch etwas sinnvolles tut nach dem Verbindungsaufbau, und
ein Dateisystem, wenn man mit scp etwas hin- und herkopieren
will.

Irgendwie erscheint mir das ohne OS dahinter nicht ganz
schlüssig.
#1967373
Lesenswert?

Natuerlich geht es ohne OS, aber die Kommunikationsfunktionalitaet muss 
trotzdem da sein. Da laeuft eine Menge bis der erste Block der SSH 
Kommunikation kommt. Es kann durchaus Sinn machen ohne OS auskommen zu 
wollen. Der Controller ist ein ganzes Stueck kleiner. Das kleinste 
Linux, das mir bekannt ist benoetigt um die 32MByte. Wenn man nur SSH 
will, zB fuer ein Kreditkartenterminal wird man wahrscheinlich mit unter 
1MByte durchkommen.
Gast #1967657
Lesenswert?

Ja es soll eine Art Shell geben, die zur Konfiguration und Wartung 
dienen soll.

Ob das jetzt so Sinn ergibt oder nicht, steht ersteinmal nicht zur 
Debatte. Das ist Vorgabe vom Prof und nur diskutabel, wenn es nicht 
machbar ist (oder den Zeitrahmen von rund 10 Monaten mit 6 Wochenstunden 
sprengen wuerde).

Der Mikrocontroller verarbeitet potentiell personenbezogene Daten. Da 
der Controller auch ueber das Internet kommunizieren soll (ohne 
Hilfsmittel wie etwa einem zus. VPN-Router), muss eine Verschluessellung 
her.

Hier ist die Vorgabe, es sollen Protokolle verwendet werden, die mit der 
Standardsoftware auf jedem PC zu benutzen sind (mit jedem PC meint der 
Prof Rechner mit Unix-artigem BS; Windows-Maschinen bezeichnet er als 
"Spielzeug").
Das Kommunikationsprotokoll, ueber welches der Controller mit dem 
Verarbeitungsserver spricht, ist eine Eigenentwicklung vom Prof. Das 
soll mit TLS verschluesselt werden.

Bei der Auswahl vom Controllertyp habe ich relativ freie Wahl. Wichtig 
ist, dass das fertige Geraet moeglichst klein wird (Controller ohne 
externen Speicher).
#1967693
Lesenswert?

Popdog schrieb:
> Bei der Auswahl vom Controllertyp habe ich relativ freie Wahl. Wichtig
> ist, dass das fertige Geraet moeglichst klein wird (Controller ohne
> externen Speicher).

Such dir auf jedenfall einen, der im Notfall auch Linux laufen lassen 
könnte.
Wenn dann die Deadline immer näher rückt, hättest du zumindest einen 
Fallback-Plan um das Projekt doch noch zu retten.
Gast #1968695
Lesenswert?

>Das Kommunikationsprotokoll, ueber welches der Controller mit dem
>Verarbeitungsserver spricht, ist eine Eigenentwicklung vom Prof. Das
>soll mit TLS verschluesselt werden.

Vermutlich wird wegen TLS die openssl Library benutzt. Da koennte
es speichergroessenguenstiger sein, openssh (baut auf openssl auf)
zu nehmen.

VG,
Hans
#1969468
Lesenswert?

Hi,

Generell gilt daß SSH wesentlich mehr macht als nur eine verschlüsselte 
Verbindung herzustellen und zu authentifizieren. Bei SSH hast Du z.B. 
noch TCP-Forwarding, SCP, ....

TLS dagegen authentifiziert Dir Deine Verbindung und stellt Dir dann ein 
verschlüsseltes Socket zur Verfügung. Theoretisch gehen noch so Dinge 
wie nachträglich die Authentifizierung nochmal zu verändern. Das wird 
aber in der Praxis nicht genutzt und daher kannst Du auch gut drauf 
verzichten.

Daher würde ich sagen daß eine Implementation von TLS einfacher sein 
sollte als eine von SSH.

Auf einem richtigen OS (keinem Spielzeug ;-) kannst Du z.B. mit socat 
ganz locker eine TLS-verschlüsselte telnet-Sitzung aufmachen und so auf 
Deine Shell kommen.

Natürlich ist man als User eher SSH gewohnt und dort ist das mit den 
Zertifikaten auch einfacher gehandhabt als bei TLS. Aber das TLS musste 
"nur" einmal machen und darüber kannst Du dann sowohl das komische 
Protokoll von Deinem Prof als auch die Shell abwickeln. Auch z.B. ein 
kleiner SSL-Webserver wäre dann schnell gemacht.

SSH baut übrigens nicht auf SSL auf, sondern das openssh verwendet nur 
einige Crypto-Funktionen der openssl-Library für die Implementation.

Schau Dir mal einen der freien TCP/IP-Stacks wie z.B. lwip an. Darauf 
könntest Du aufbauen. Vielleicht kannst Du Dich ja mit den Entwicklern 
abstimmen so daß das ganze als Erweiterung mit aufgenommen werden kann. 
Davon würden dann einige Projekte profitieren.

Gruß,

Gerd

Antwort schreiben

Bitte melde dich an, um einen Beitrag zu schreiben.

oder

Mit Google-Account einloggen

Die Registrierung ist kostenlos und dauert nur eine Minute.

Jetzt registrieren