Forum: Mikrocontroller und Digitale Elektronik Codeeingabe sicher gestalten


von Matrixtastatur (Gast)


Lesenswert?

Ich bin bin kürzlich in Besitz einer Matrixtastatur gekommen und wollte 
ein wenig damit herumspielen. Heute bin ich über diesen 
(http://forums.hackaday.com/viewtopic.php?f=3&t=3040) Link gestolpert.

Dort wurde ein im Laden erwerbbarer Safe mittels Brute Force geknackt. 
Zwar gab es eine (temporäre) Sperre nach 3 Fehlversuchen, allerdings 
konnte man diese mittels Entfernen der Stromversorgung "aushebeln".

Nun frage ich mich wie man das Ganze sicher(er) implementiert.

Ich dachte daran bei x Fehlversuchen ein "Flag" ins EEPROM zu schreiben 
und dieses halt nach y Sekunden wieder zu löschen. Beim Initialisieren 
(sprich wenn die Stromversorgung zwischenzeitlich unterbrochen wurde) 
schaut man dann, ob das "Flag" im noch EEPROM vorhanden ist und fängt 
dann erneut an von y herunter zu zählen.

Damit kann es zwar passieren, dass jemand (im Worst-Case) nahezu doppelt 
solange warten muss wie vorgesehen, nämlich dann, wenn die Zeit fast 
abgelaufen war und die Stromversorgung unterbrochen wurde.

Andererseits reicht ein einzelnes Flag nicht aus. Man könnte ja auf die 
Idee kommen das Gerät bereits nach x-1 Fehlversuchen vom Strom zu 
trennen.

Hierfür sehe ich zwei Optionen. Die Anzahl der Fehlversuche in den 
letzten z Sekunden im EEPROM festhalten und ggf. keine neuen Versuche 
zulassen. Mittels eines Countdowns könnte man dann z.B. jede Minute eins 
vom im EEPROM gespeicherten Wert abziehen. Beim Initialisieren fängt der 
Countdown dann wieder von vorne an, ähnlich wie beim oben beschriebenen 
Fall des "Flags".

Das wirft allerdings die Frage der Haltbarkeit des integrierten EEPROMs 
auf. Wenn da jemand auf Biegen und Brechen das Ding mit Fehlversuchen 
bombardiert, dann geht das EEPROM eher oder später auch kaputt. Was dann 
passiert ist wohl schwer abzuschätzen, oder?

Wie seht ihr das? Gibt es effektive Mittel den o.g. "Angriff" zu 
unterbinden? Dabei beziehe ich mich hier nur auf den "elektronischen" 
Aspekt. Der mechanische Weg (nämlich Sägen, Brechen, Schneiden, Biegen, 
etc.) soll mal außen vor gelassen werden.

Und nein, ich will hier keinen Safe bzw. Tresor in Eigen-Regie bauen. 
Ich bin nur an theoretischen Aspekten interessiert das o.g. Problem in 
den Griff zu bekommen.

Vielen Dank für eure Ideen bzw. Vorschläge!

von Peter D. (peda)


Lesenswert?

Mach einfach eine Wartezeit nach jedem Reset rein, z.B. eine Minute.
Wer die Batterie rausnimmt, muß eine Minute warten bis zur ersten 
Eingabe.
Ist die Zeit rum, geht die CPU in Power-Down und wacht mit dem Interrupt 
beim Tastendruck auf.

von Eumel (Gast)


Lesenswert?

Peter Dannegger schrieb:
> Mach einfach eine Wartezeit nach jedem Reset rein, z.B. eine Minute.
> Wer die Batterie rausnimmt, muß eine Minute warten bis zur ersten
> Eingabe.
> Ist die Zeit rum, geht die CPU in Power-Down und wacht mit dem Interrupt
> beim Tastendruck auf.

Gute Idee, und natürlich die Wartezeit nach 3 Fehleingaben.

von Karol B. (johnpatcher)


Lesenswert?

Peter Dannegger schrieb:
> Wer die Batterie rausnimmt, muß eine Minute warten bis zur ersten
> Eingabe.

Ja, wobei das halt dann unter Umständen "benutzerunfreundlich" ist. Wenn 
nämlich jemand die Batterie(n) wechselt und dann versucht den Safe (aus 
Testzwecken) zu öffnen, dann muss er sich gedulden.

Aber hier scheint wie so oft der Widerspruch zwischen Bequemlichkeit und 
Sicherheit zu Tage zu kommen.

von Gerd E. (robberknight)


Lesenswert?

Du könntest so nen Supercap/Goldcap in den sicheren Teil des Safes 
einbauen. Die extern zugängliche Batterie lädt diesen und erst wenn er 
voll genug ist, wird die Eingabe freigeschaltet.

Damit hast Du dann für nen paar Tage genug Strom um Daten im RAM zu 
behalten (wie z.B. den Zählerstand) und einen Timer laufen zu lassen.

Außerdem würde ich die Wartezeiten nach kontinuierlichen Fehleingaben 
immer weiter verlängern. Also z.B. so:

3 Fehlversuche - 1 Min warten - 3 Fehlversuche - 2 Min warten - 3 
Fehlversuche - 4 Min warten usw.

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.