Passwortschutz im Microcontroller Debug Console

Gast #5125802
Lesenswert?

Hallo,

ich habe in meinem µC Code eine Debug Schnittstelle übers 
Terminal/Console. Mit einem Parser kann ich verschiedene Debug Ebenen 
öffnen. Diese sind Rollenbezogen, d.h. "User", "Wartungspersonal", 
"Superuser", "Entwickler".
Die Ebenen sollen mittels Passwort geschützt werden. Insbesondere der 
Bereich "Entwickler" hat keinen zu interessieren, da ich hier auch den 
kompletten Flash löschen kann.

Gibt es einen guten Codeabschnitt für die Passwortabfrage oder macht Ihr 
das klassisch über strncmp?

Ich hatte schon das Projekt:
https://github.com/cocagne/csrp als Ideengeber, aber die Jungs arbeiten 
mit OpenSSL. Ist vielleicht doch ein wenig übertrieben.

Bin für Ideen offen.

Gruß,
Freddy
#5125874
Lesenswert?

Peter II schrieb:
> das man im bin-file das Passwort im Klartext hat.

Ja das stimmt schon, aber dann müsste man erstmal darauf kommen, dass 
"dieser" Klartext dem Passwort entspricht (OK, Sicherheit ist was 
anderes)

Aber, wenn man das PW im Flash oder anderem Speicher (SD) ablegt, weil 
es vllt. für jeden USER angepasst werden kann, dann würde strncmp doch 
auch gehen, oder nicht?
#5125880
Lesenswert?

Adam P. schrieb:
> Aber, wenn man das PW im Flash oder anderem Speicher (SD) ablegt, weil
> es vllt. für jeden USER angepasst werden kann, dann würde strncmp doch
> auch gehen, oder nicht?

Natürlich geht es. Warum auch nicht. Nur sollte man einfach Passwörter 
nicht im Klartext irgendwohin legen. Du musst auch so sehen dass diese 
Passwörter vielleicht noch woanders genutzt werden. Es ist nicht ok, 
einen Nutzer ein Passwort eingeben zu lassen und es dann auslesbar zu 
speichern.
Speicher einen HA1 = MD5(realm:username:passwort) ab. Als Realm nimmst 
du einen festen String der deine Anwendung oder dein Gerät beschreibt.
#5125916
Lesenswert?

Adam P. schrieb:
> Alles klar, super!
>
> edit:
> Also könnte man beim Atmel SAM4 auch die interne AES nutzen?
> Würde dann wohl schneller laufen als eine Software-MD5, wahrscheinlich.

Man kann. Hat aber nicht die gleiche Wirkung. AES benötigt einen 
Schlüssel und ist der Schlüssel bekannt kann man das Passwort wieder 
entschlüsseln.
Und wo und wie willst du den Schlüssel ablegen? Merkst du was? Du drehst 
dich dann im Kreis.

Man nimmt Hashes weil man genau diese Umkehrung unmöglich machen will.
Gast #5125922
Lesenswert?

Peter II schrieb:
> Adam P. schrieb:
>> Also könnte man beim Atmel SAM4 auch die interne AES nutzen?
>> Würde dann wohl schneller laufen als eine Software-MD5, wahrscheinlich.
>
> das ist aber sehr schlecht wenn es schneller läuft. Dann kann man das
> System besser hacken. Für Passwörter will man verfahren die langsam
> sind.
>
> z.b. https://de.wikipedia.org/wiki/PBKDF2

Genau so würde ich es auch machen. Die Anzahl der Iterationen natürlich 
nur so hoch wählen, dass die Wartezeit noch erträglich ist.
Beitrag #5125924 wurde von einem Moderator gelöscht.
#5125946
Lesenswert?

Adam P. schrieb:
> Ja OK, klingt logisch! Danke.
>
> Also Software MD5 und wenn nötig noch eine Wartezeit nach 3
> Fehlversuchen :-D

Ja, aber du musst unterscheiden.

Will jemand das Passwort über die Console erraten, kannst du das mit 
einer Wartezeit im Programm usw. sehr gut abfangen.

Die vorgeschlagenen langsamen Algos kommen dann zum tragen wenn deine 
ganze Datenbank abhanden gekommen ist, und die Hashes dem Angreifer 
vorliegen und er eine Brute-Force Attacke darauf machen will.
Ich würde aber auch sagen, dass ich dem zeitlichen Aspekt hier nicht 
viel Beachtung schenken würde. Gesalzene MD5 Hashes wie HA1, bieten hier 
mehr als genug Widerstand.
Gast #5126008
Lesenswert?

Nachtrag:

J. F. schrieb:
> Was spricht denn gegen die Verwendung von strncmp?

damit hätte man sogar ein Sicherheitsproblem. Bei strncmp wird beim 
ersten unterschied abgebrochen. Die Funktion ist also langsamer je mehr 
Zeichen vom Passwort stimmen. Das könnte man ausnutzen im das Passwort 
zu knacken. Selbst ein einfachen sleep dahinter würde nicht reiche, man 
müsste ein sleep mit Random Zeit einabauen.
Gast #5132152
Lesenswert?

Danke für die vielen Ideen und Anregungen
Ich habe jetzt mein Passwort SHA1 kodiert und die Passwortabfrage 
dementsprechend angepasst.
Sicherlich gilt SHA1 momentan als knackbar, aber bei der von mir 
angedachten Anwendung ist dies erstmal ausreichend. Bei Gelegenheit 
werde ich mich nochmal damit auseinandersetzen wieviel Aufwand ein 
SHA256 wäre.

Viele Grüße
#5132162
Lesenswert?

Freddy schrieb:

> Sicherlich gilt SHA1 momentan als knackbar

Absolut ausreichend würde ich auch sagen. "Knackbar" ist bei Hash 
Algorithmen auch differenziert zu sehen.
In deinem Fall willst du nur verhindern dass jemand das Klartextpasswort 
bekommt, dafür bleibt immer nur Brute-Force und das ist immer Mist für 
den Angreifer.

MD5 gilt z.B. schon länger als "broken", aber nur was die 
Kollisionsresistenz angeht. D.h. signieren sollte man damit nicht mehr 
(tut man auch schon lange nicht mehr), aber für deinen Zweck immer noch 
sicher (abgesehen von den NUR 128 Bit Länge).
Ähnliches gilt auch für SHA1.

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