CodeLock 60 - Endlich ein sicheres Zahlenschloss!


Das vorgestellte digitale Zahlenschloss kann kleine bis mittelgroße Schließanlagen mit Elektromotor oder Elektromagnet direkt ansteuern. Im Ruhezustand verbraucht die Steuerelektronik überhaupt keinen Strom. Ein netzunabhängiger Betrieb aus Batterien oder Akkus ist grundsätzlich möglich. Das Schloss kann zwei längere Schlüssel von bis zu 60 Stellen (!) verwalten, die sich gegenseitig absichern. Selbstverständlich sind sämtliche Hardware- und Software-Details dieser Lösung lückenlos offengelegt.



Polemik

Projekt

Hardware

Firmware

Software

Nachbau

Bedienung

Anmerkungen

Download

Index


Zahlenschlösser ...

"Was wir im Kopf haben, müssen wir nicht als Stigma der digitalen Versklavung am Leib tragen!"

Es muss nicht immer gleich ein Zugangskontrollsystem mit Chipkarten, Transpondern, Zeiterfassung, Fingerabdruckscanner, Gesichtserkennung und Internetanbindung sein. Weniger totalitär ist oft menschlicher!
Vielleicht sind Zahlenschlösser deswegen im privaten Bereich relativ beliebt. Ein Zahlenschloss funktioniert bekanntlich ohne physische Schlüssel, Biometrie-Gedöns und Vernetzungswahnsinn. Eine Zahlenkombi kann nicht wirklich verloren gehen oder geklaut werden. Das Missbrauchsrisiko und die Gefahr, einen Finger oder ein Auge zu verlieren, sind eher gering. Dabei bietet das gute elektronische Zahlenschloss tausend- bis millionenfach höhere Sicherheit im Vergleich zu mechanischen Schlössern - wenn wir bereit sind, uns etwas längere Kombinationen einzuprägen.
Die bürgerrechtliche Dimension: Karten und Geräte, die wir gar nicht erst anschaffen müssen, bedeuten weniger unkalkulierbare Risiken und mehr Freiheit. Das wird sich spätestens dann für uns auszahlen, wenn den unbedarften Nutzern ihre vom Mainstream, Staat und Geheimdiensten aufgeschwatzte "Hochtechnologie" endgültig um die Ohren fliegt.

Gute Zahlenschloss-Ideen? (Ich würd' auch erstmal schlechte nehmen ...)

"Professionelle Sicherheitstechnik" - Preislich anspruchsvolle Produkte namhafter Anbieter "überzeugen" durch Markennamen, Design, Werbegelaber und gestylte Prospekte. Oder auch nicht. Die wirkliche Sicherheit kann niemand kritisch beurteilen, solange wesentliche technische Details nicht offengelegt sind. Welche "undokumentierten Features" in einer Alarmzentrale, einem Zugangskontrollsystem oder Codeschloss noch enthalten sind, davon können Kunden und Subunternehmer nichts ahnen. Es sei denn, sie betreiben selbst ein aufwendiges Reverse-Engineering, besorgen sich den Quellcode der Firmware, um die notwendige Transparenz herzustellen... Anderenfalls bleibt es eine Black Box, die mutmaßlich "Hintertürchen" für gewisse Dienste, staatliche Schnüffler und andere kriminelle Elemente offenhält. Na, besten Dank!

Bausätze und Module - Hier werden schon die einfachsten Sicherheitsregeln missachtet. Oft genug handelt es sich bei diesen "Codeschlössern" um Supersimpelschaltungen, bei denen sogar noch die ganz alten Tricks (Anzapfen und Messen einzelner Tastaturleitungen) zum Schummelerfolg führen. Es fällt außerdem auf, dass viele Module, die bei namhaften Versendern unter verschiedenen Bezeichnungen erhältlich sind, dieselbe oder nur unwesentlich abgewandelte Schaltungen enthalten. Tastatur und Auswerteelektronik im selben Gehäuse... miserable Energieeffizienz, eigener Netztrafo erforderlich... Hallooo, jemand zuhause???

Bastelprojekte aus'm Internet - Alles toll, alles sicher, weil "Open Source"? Da sollte man meinen, dass die schlechten Projekte irgendwann auch wieder von der Bildfläche verschwinden oder wenigstens nachgebessert werden. Pustekuchen! Meine Hauptkritikpunkte:  Fehlende räumliche Trennung zwischen Tastatur und Schloss; fehlende zeitliche Trennung zwischen Codeeingabe und Codeprüfung; umständliche Bedienung; lächerliche Codelänge unter 10 Ziffern; Manipulation an Tastaturleitungen ermöglicht Angriff; HF-anfälliges Design; überdimensionierter Mikrocontroller, aufgeblähte Software; Schaltstufe nur für bestimmte Schließanlagen geeignet; inflationäre Verwendung von LED/LCD; erschreckender Ruhestromverbrauch; unsinnige Features professioneller Produkte nachgeäfft; Verwendung von Uralt-Bauteilen (typisch Berufsschule); endloses Drecksgeschwafel ohne Realitätsbezug (typisch Diplomarbeit)... usw. usw.

Genug gemeckert. Jetzt wollen wir mal sehen, wie es richtig gemacht wird !



Projekt "CodeLock"

  1. Ein Codeschloss ist ein Codeschloss: Einziges Eingabegerät ist eine gewöhnliche Zahlentastatur. Die Bedienung ist einfach und logisch angelegt. Auf unnötige LEDs und sinnbefreite Display-Meldungen, wie "Bitte Code eingeben", oder "Tür offen" verzichten wir. Sinnvoll ist eine optische Rückmeldung über den eingeschalteten Zustand an sich. Optional gibt es auch ein akustisches Feedback, die allseits beliebten Tastatur-Quittierungstöne. (Das Gepiepse ist jedoch zur erfolgreichen Nutzung des Codeschlosses nicht unbedingt notwendig.)

  2. Unabhängiger Betrieb: Dieses Codeschloss wird durch Drücken der Sternchentaste [*] überhaupt erst eingeschaltet, d. h. mit der Stromversorgung verbunden. Im Ruhezustand hat die Schaltung keinen messbaren Stromverbrauch. Somit ist die Stromversorgung aus Batterien oder Akkus grundsätzlich möglich. Wir können es uns sogar leisten, den Betriebsstrom für das Codeschloss UND für das elektrische Schließsystem aus derselben Batterie zu beziehen, wenn diese Batterie den kurzzeitigen Spitzenstrom übernehmen kann. Bei kleineren DC-Motoren oder Elektromagneten ist das in der Regel gar kein Problem. Die Batterie wird in den sehr viel längeren Ruhepausen überhaupt nicht beansprucht, sodass die Gefahr einer unbemerkten Tiefentladung mit dieser Schaltung sehr gering ist.
    Für solche Bereitschaftsanwendungen kommen leistungsfähige und kompakte Lithiumbatterien, aber auch die aus der Alarmtechnik bekannten Bleigel-Akkus infrage. Vernünftig dimensionierte Elektronik, Elektromechanik und eine eigene wartungsfreie Batterie - SO sieht eine wirklich unabhängige Sicherheitskomponente aus!

  3. Flexibel einsetzbare Schaltstufen: Leistungsschalter sind robuste Kleinrelais. Sie können in dieser Auslegung verschiedene Gleichstrommotoren im Rechts-Links-Lauf, bistabile Elektromagnete oder bistabile Leistungsrelais mit einem Stoßstrom von bis zu 4 Ampere direkt steuern.
    Zur Klarstellung: Das vorliegende Schaltkonzept liefert also bereits an seinem Schaltausgang den positiv oder negativ gepolten Betriebsstrom für einen E-Motor oder E-Magneten. Das Schalten von Pseudoschließanlagen, wie etwa "Türsummern", wird nicht direkt unterstützt.
    Potenzialfreie Ausgänge wären mit geringen Änderungen an der Schaltung selbst oder durch Erweiterung um ein bipolares Relais bzw. zwei Relais-Dioden-Kombinationen möglich. Damit lassen sich dann, je nach Relaistyp, fast beliebig hohe Leistungen (auch Wechselstromverbraucher) schalten.

  4. Die Hardware ist, wie eingangs erwähnt, auf energiesparenden Betrieb und Zuverlässigkeit angelegt.
    Das Herz des Zahlenschlosses ist ein AVR-Mikrocontroller ATtiny2313, welcher sich schon in zahlreichen anderen Projekten als äußerst zuverlässig erwiesen hat.

  5. Die vorgeschlagene Firmware mit der Bezeichnung "CodeLock 60" kann zwei bis zu 60-stellige Zahlencodes verwalten, die frei wählbar sind. Der eine Code ist für die alltägliche Benutzung gedacht, der "User-Code". Er darf natürlich auch kürzer sein, wenn er ab und zu gewechselt wird. Ein weiterer Zugangscode ist für den Notfall vorgesehen, hier "Master-Code" genannt. Dieser Master-Code ist der (einzige!) Nachschlüssel, den es gibt. Falls wir den User-Code tatsächlich einmal vergessen haben, ermöglicht der Master-Code das Öffnen des Schlosses und löscht den bisherigen User-Code. Auch der Master-Code wird allein vom Nutzer definiert und kontrolliert. Irgendwelche "geheime" Codes und Tastenkombinationen sind nicht vorgesehen. Meine Firmware ist komplett offengelegt.

  6. Eine kleine Software für den PC hilft bei der Generierung und Sicherung von Zufallsschlüsseln. Sie erzeugt nebenbei auch Textdateien und eine kompatible EEPROM-Datei im Hexformat, die wir bei Ersteinrichtung des Zahlenschlosses direkt per ISP in den ATtiny brennen können.

  7. Anbindung an Haustechnik / Alarmsystem: Das Codeschloss war zwar ursprünglich als Standalone-Komponente konzipiert, aber es ist möglich, den Betriebszustand der Schaltung anhand verschiedener Ausgänge durch ein "übergeordnetes System" auszuwerten. Außerdem kann eine allgemeine Freigabe des Codeschlosses über einen separaten Eingang erzwungen werden. Wer es wirklich so haben will, könnte also ein "override" des Codeschlosses über den Schaltausgang eines RFID-Lesers oder dergleichen vornehmen, ohne den Rest des Schließsystems zu ändern. Maßgeschneiderte Lösungen durch Hardware- und Firmware-Modifikationen sind natürlich ebenfalls denkbar, zumal der Mikrocontroller noch ein paar Portleitungen frei hat.

  8. Alle Details sind offengelegt. Meine Aussage, dass dieses Zahlenschloss einsame Spitze ist, dass ich keinen Geschäftssinn hege, und dass diese Lösung keine Hintertürchen enthält, ist en detail nachvollziehbar :-)

Das gute Zahlenschloss in den Händen des mündigen Anwenders: Freiheit und Sicherheit!

Nach oben | Index



Anwendungsbeispiele


Tresorschloss: Die Schaltung war ursprünglich für einen Einbautresor konzipiert, dessen Originalelektronik keinen vertrauenswürdigen Eindruck machte, während der Riegelmechanismus recht robust ausgelegt war, nämlich mit einem Gleichstrommotor mit Untersetzungsgetriebe und Endschaltern zur Positionserfassung. Ein erhöhter Motorstrom fließt immer nur für kurze Zeit. Daher lassen sich solche Codeschlösser mit Primärbatterien oder Akkus sehr lange betriebsbereit halten. Die Anwendung bleibt also vollkommen netzunabhängig. Inzwischen liegen mit weiteren ähnlichen Anwendungen die besten Erfahrungen vor. Auch Schließmechanismen mit Elektromagnet (Solenoid) und teilweiser Handbetätigung können mit dieser Schaltung bedient werden.


Fahrradschloss: Eine witterungsfeste, wasserdichte Kompaktversion des Zahlenschlosses ist in der Testphase. Kleine Anekdote: Mein "Fahrrad-Schutz-System" aus den frühen 00ern verfügte über einen extrem lautstarken Alarm, einen Peilsender für's 10-Meter-Band, sowie eine CS-Gaskartusche. Tatsächlich hat es in dieser Zeit niemand gewagt, mein Rad auch nur anzurühren, solange das System eingeschaltet war. Bis zu dem Tag, an dem ich das Teil einmal zu Wartungszwecken komplett abmontieren musste... schluchz... Drei Dinge habe ich daraus gelernt: 1. Die Welt ist schlecht. 2. Normale Fahrradschlösser beeindrucken keinen Kriminellen. 3. Ein unbekanntes System, das möglicherweise Giftgas versprüht, hat offensichtlich noch eine gewisse abschreckende Wirkung.


Elektrische Verbraucher: Eine "Deluxe-Kindersicherung" für elektrische und elektronische Geräte und Maschinen. Die CodeLock-Schaltung kann mit wenig Zusatzaufwand ein bistabiles Netzrelais oder einen bistabilen Schütz direkt ansteuern.


Scharfschalten von Alarmsystemen: Ähnlich wie Freigeben/Sperren von elektrischen Verbrauchern. Ein gepoltes bistabiles Relais wird der CodeLock-Einheit nachgeschaltet und stellt dann die benötigten Arbeits- oder Ruhestromkontakte bereit.


Türschloss: Die räumliche Aufteilung dürfte klar sein. "Draußen" Zahlentastatur, "drinnen" Elektronik, Riegelmechanismus und ein Bedienknopf für das bequeme Ver- und Entriegeln von berechtigter Seite. Vernünftigerweise sollten wir uns für den Fall absichern, dass die Elektronik einmal versagt oder die Elektromechanik blockiert. Einige Motorriegel für den Einbau ins Türblatt haben einen Einsatz für gewöhnliche Profilzylinder. Mit einem mechanischen Schlüssel lässt sich die Tür also auf jeden Fall öffnen. Dieses Notfallschloss sollte aber nicht unbedingt von außen erkennbar sein. Was nützt uns ein hochsicheres Zahlenschloss, das mit etwas Lockpicking-Knoffhoff doch wieder leicht umgangen werden kann.


Nach oben | Index




Schaltplan

Zahlenschloss mit ernsthafter Codelänge und vielseitiger Motorsteuerung
(Download enthält diesen Schaltplan in Druckauflösung, sowie Platinenlayout und alle weiteren Unterlagen.)


Nach oben | Index


Hardware

An dieser Stelle werde ich Einiges zur elektronischen Auslegung von "CodeLock" sagen. Zur benutzerfreundlichen Logik und zur Sicherheitsphilosophie verweise ich auf die Abschnitte Kurzanleitung und Firmware!


Stromversorgung (X1): Das Zahlenschloss soll autonom funktionieren und in keiner Weise von einem Energienetz abhängig sein, zumal sich schon hieraus neue Sabotagemöglichkeiten eröffnen würden.
Das vorgestellte Zahlenschloss trennt sich konsequenterweise von der Stromquelle ab, wenn es nicht benutzt wird. Das bedeutet, der Stromverbrauch im ungenutzten Zustand liegt mit dieser Schaltung bei Null!
Und das funktioniert so: Ein PNP-Transistor T3 (BC327) liegt als Schalter im Strompfad zwischen Batterie und Logikteil. Seine Basis wird über R7 (47 k) auf Emitterpotenzial gezogen, sodass der Transistor normalerweise sicher sperrt. Wird jedoch die Taste Sternchen [*] auf der Zahlentastatur gedrückt, so fließt über R23, den Matrixkontakt X1-Y4 sowie über R10 ein erster Basisstrom für T3 von wenigen Milliampere gegen Masse. Der Transistor schaltet durch und versorgt VR1 mit der unstabilisierten Batteriespannung. Dahinter liegt der Mikrocontroller, der jetzt seine auf maximal 5 Volt stabilisierte Versorgungsspannung bekommt.
Der Mikrocontroller muss sich nach dem Kaltstart erst einmal die weitere Stromversorgung sichern. Dazu gibt er einen High-Pegel über die Portleitung PD1 aus. Damit wird T4 durchgesteuert, welcher nun die Basis von T3 dauerhaft gegen Masse zieht. Nach getaner Arbeit (oder Timeout) kann und wird der Controller die Stromversorgung wieder trennen. Sobald die Controller-Versorgungsspannung weggefallen ist, kann das Zahlenschloss erst wieder durch Sternchen [*] oder MASTER-KEY neugestartet werden.
Unter Berücksichtigung des Spannungsgefälles an T3 und VR1 kann der Mikrocontroller in einem weiten Batteriespannungsbereich von ca. 4...24 Volt zuverlässig arbeiten. Für den Betrieb des Zahlenschlosses und eines elektromotorischen/elektromagnetischen Schließers oder eines Leistungsschalters stehen also eine Reihe von Optionen offen.
Die echte Abschaltung der Versorgungsspannung schont aber nicht nur die Batterien, sie bedeutet auch einen Sicherheitsvorteil. Bei den üblichen 08/15-Codeschlössern läuft der Controller meist rund um die Uhr. Damit ist er auch permanent angreifbar, etwa durch gezielt eingekoppelte EM-Strahlung.
Für VR1 wurde bewusst ein konventioneller Linearregler (78L05) verwendet, weil dieser robust ist, schon ab ca. 6 Volt Eingangsspannung einen ausgezeichneten Schutz vor Störimpulsen aus dem Arbeitsstromkreis bietet, und seinerseits keine neuen Störungen erzeugt. Der Linearregler zieht allerdings einen Ruhestrom von ca. 5 mA ("quiescent current", siehe Datenblatt zum 78L05). Das ist in diesem Schaltungskonzept aber nicht weiter schlimm, da die Stromzufuhr ja vor dem Spannungsregler unterbrochen wird.
Für Testzwecke oder ISP-Sessions muss die Versorgungsspannung allerdings dauerhaft anliegen. Dafür überbrücken wir einfach X6 (MASTER KEY), sodass T3 permanent einen Basisstrom erhält, der die Controller-Versorgungsspannung durchschaltet.
Beim Einsatz als Türschloss schließen wir an X6 einen Taster an, der das Öffnen oder Schließen per einfachem (kurzen oder langen) Tastendruck ermöglicht.
Der Motor-Steuerkreis hängt also in der Grundausstattung dieser Schaltung an derselben Batterie, wie der Mikrocontroller. Das ist wegen der Schutzwirkung durch den Spannungsregler auch relativ unproblematisch, da etwaige Lastschwankungen auf der Batteriespannung überhaupt nicht bis zum Controller durchschlagen. Tests mit einer 9-V-Anlage haben gezeigt, dass der Controller nicht einmal bei mechanisch blockiertem DC-Motor "aussteigt". Die Hardware ist so angelegt, dass es auf jeden Fall zum Lastabwurf kommt, wenn der Controller gestört wird. Es ist mit dieser Schaltung sehr unwahrscheinlich, dass Batterien ungewollt "leergesaugt" werden und man sich unwiederbringlich aussperrt. (Nichtsdestotrotz sollten wir dennoch einen "Plan B" für den Fall haben, dass die Elektronik versagt.)
Die Batteriespannung richtet sich nach der Motorspannung. Die Spulenspannung der Relais richtet sich nach der Batteriespannung. Hier ist alles zwischen ca. 6V und 24V erlaubt.


Mikrocontroller: Die Ablaufsteuerung übernimmt IC1, ein AVR-Mikrocontroller vom Typ ATtiny2313. Der Controller braucht in dieser Anwendung keine besonders hohe und genaue Taktfrequenz, im Gegenteil. Zum Schutz vor möglichen "kompromittierenden Abstrahlungen" ist die Taktfrequenz so niedrig wie möglich anzusetzen. Mehr dazu weiter unten.


Schaltstufe / Motorbremse (X2): Re1 und Re2 bilden eine klassische H-Brücke, d. h. die Anschlüsse X2a und X2b können durch Re1 und Re2 jeweils auf Masse oder an Plusspannung gelegt werden. Ein angeschlossener DC-Motor lässt sich durch Polaritätsumkehr mit voller Leistung im Links- oder Rechtslauf fahren. Da immer zwei Kontaktsätze parallel geschaltet sind, kann die Brücke schon mit den hier verwendeten Miniaturrelais einen Spitzenstrom von bis zu 4 A schalten.
Voraussetzung ist natürlich, dass das Motorgehäuse gegen die Plus- und Minusleitung isoliert ist, was aber normalerweise der Fall ist. Es ist unbedingt wünschenswert, dass ein angeschlossener DC-Motor bereits am Chassis durch Verdrosselung und Kondensatoren entstört ist. Die beiden MKS-Kondensatoren C3+C4 sind lediglich als ergänzende Maßnahme gedacht.
Die Serienwiderstände R1 und R2 begrenzen den Motorstrom, falls es zu einer Blockade kommt. Auch ein PTC oder eine Polyfuse könnten an dieser Stelle vorteilhaft eingesetzt werden.
R1 und R2 werden so dimensioniert, dass der Kurzschlussstrom den Maximalwert von ca. 4 A nicht erreicht, aber der DC-Motor bei schwächelnden Batterien noch ausreichend Kraft entwickelt. Ein geeigneter Wert liegt, je nach regulärem Motorstrom, zwischen ca. 2...10 Ohm.
Im Ruhezustand liegen beide Anschlüsse X2a und X2b wie gesagt direkt auf Masse. Der Motor wird in diesem Zustand also direkt kurzgeschlossen. Diese Tatsache können wir bei kleineren Motoren bedenkenlos als Kurzschlussbremse einsetzen.
Anders, als bei einer Endstufe mit MOSFETs ist die Bremswirkung auch dann noch uneingeschränkt vorhanden, wenn der Rest der Schaltung vollkommen stromlos ist! Damit werden mechanische Manipulationsversuche durch "Rütteln und Schütteln" weiterhin erschwert.
Größere DC-Motore ab ca. 2 A sollten aus voller Fahrt lieber nicht per direktem Kurzschluss gebremst werden (hohe Schwungmasse, hoher Generatorstrom). Hier bremst man üblicherweise erst mit einem Lastwiderstand ab.
Eine solche "Soft-Bremse" ist mit dieser Schaltung ebenfalls möglich: Werden beide Terminals X2a und X2b auf die Plusleitung gelegt, so fließt der vom noch drehenden Motor generierte Rückstrom über die Reihenschaltung der Serienwiderstände ab und wird dort gefahrlos verheizt. Auch in diesem Fall entstehen keine Störungen für den Elektronikteil.
Für größere Motorriegel kann die CodeLock-Firmware entsprechend modifiziert werden (siehe Anmerkungen zur Firmware).


Endschalter (X3): Endschalter liefern die wichtige Information, ob der Riegel komplett eingefahren oder ausgefahren wurde.
Es wäre auch möglich, den Elektromotor an einen Anschlag zu fahren und nach Ablauf der ungefähren Stellzeit abzuschalten. Doch selbst wenn die Mechanik dafür ausgelegt ist, der Motor würde an den Endpunkten doch einen erheblichen Strom ziehen, der die Batterien unnötig belastet. (Dieser Modus ist "Plan B", falls kein Signal vom Endschalter kommt. Die Steuerung wird den Motor dann nach einem Timeout von drei Sekunden abschalten.)
Die Endschalter werden an ES1 (Pin 1+2) sowie ES2 (Pin 3+4) von X3 angeschlossen. Es sollten potenzialfreie Schalter sein. Der Schleifenstrom kommt vom Mikrocontroller.
Wenn die Signalleitungen zu den Endschaltern in unmittelbarer Nähe zu den Motorleitungen geführt werden (müssen), könnten hier Funkenstörungen aus der Motorleitung einkoppeln. Sicherheitshalber sollten wir die Zuleitungen zu den Endschaltern auf jeden Fall symmetrisch auslegen, d.h. für beide Endschalter zwei Adern vorsehen und auf der Seite des Schalters KEINE Verbindung mit dem Chassis herstellen.
Es hat sich aber gezeigt, dass die relativ hochohmigen Eingänge (mit den internen Pullups zwischen 20 und 50 kOhm) bei der Auswertung dieses anspruchslosen Signals kein Problem darstellen, zumal die Firmware das Signal extrem großzügig filtert. Wichtiger ist der Schutz des Controllers vor induktiv eingekoppelten Spannungsspitzen, die ihn theoretisch auch beschädigen könnten. Als Mindestschutz sind daher die Abblockkondensatoren C7+C8 (je 100nF keramisch) vorgesehen.


Tastatur (X4): Hier ist der direkte Anschluss einer Zahlentastatur (3 x 4 Matrix) vorgesehen. Eine Tastatur mit Einzelkontakten kann hier NICHT eingesetzt werden.
Die CodeLock-Firmware nutzt eine sehr niedrige Multiplexfrequenz von nur ca. 25 Hz zur Erkennung der gedrückten Tasten. Dennoch ist der Anschluss einer Zahlentastatur über meterlange Leitungen keine triviale Angelegenheit. Wer hier eine "abhörsichere" Lösung anstrebt, sollte bedenken, dass die steilen Rechtecksignale, wie sie direkt aus dem Mikrocontroller kommen, ein reiches Spektrum an Oberwellen haben. Diese hochfrequenten Komponenten werden über ein längeres, ungeschirmtes Kabel natürlich abgestrahlt. Sie können mit entsprechender Ausrüstung noch auf etliche Meter Entfernung nachgewiesen und möglicherweise hinsichtlich der gedrückten Tasten ausgewertet werden.
Es ist schon erschreckend, wie viele Hobbybastler aber auch kommerzielle Anbieter diese Tatsachen in ihren Schaltungsentwürfen vollkommen ignorieren. Hier sind Portleitungen bis zur Zahlentastatur durchverbunden und die oberwellenreichen Rechteckimpulse gelangen ungefiltert nach draußen. Konkrete Links auf solche Pfuschlösungen werde ich aus Rücksicht auf die Profilierungsinteressen armseliger Entwickler, die Profitinteressen skrupelloser Hersteller und das Abmahnunwesen schmieriger Anwaltskanzleien an dieser Stelle nicht angeben. Eine einfache Web-Suche nach Begriffen, wie "Zahlenschloss", "Codesschloss", "Selbstbau" usw. liefert jedoch jede Menge Aufreger.
Das können wir doch besser! Die Serienwiderstände R15-R21 sind nicht nur eine bewährte Schutzmaßnahme gegen direkten Kurzschluss zwischen Portleitungen. Sie bewirken nebenbei eine Erhöhung der Leitungsimpedanz. Auf diese Weise wird das angeschlossene Kabel weniger "resonanzfreundlich" und der Oberwellenanteil der Matrixsignale verringert sich auf dem freien Leitungsabschnitt.
Die Wirksamkeit dieser Maßnahme lässt sich nachweisen. Subjektiv (Kurzwellenempfänger) waren die Abstrahlungen unserer CodeLock-Schaltung an ungeschirmten Leitungen und Tastaturen schon kaum nachweisbar und sehr unspezifisch. An einem Probeaufbau, bei dem alle Komponenten mit üblichen Maßnahmen geschirmt waren, konnte ich mit Amateurmitteln in mehr als 10 cm (Zentimetern) Entfernung rein gar nichts mehr messen.
Die Serienwiderstände haben vermutlich auch eine Schutzwirkung gegen aktive HF-Angriffe, da auch ein von außen eingekoppeltes Signal bis zum (nichtlinearen und daher als Modulator wirkenden) Controller-Port ebenfalls stark bedämpft wird.
Diese Drosselwirkung lässt sich noch erheblich verbessern, indem wir R15-R21 jeweils stehend mit einer Ferritperle ausstatten.
Die Tastaturzuleitung sollte ein möglichst kurzes geschirmtes Kabel oder ein Flachbandkabel mit abwechselnden Masseleitungen sein. Leider ist man auf dem weiten Feld der HF-Technik vor "frequenzselektiven Überraschungen" nie ganz sicher... Was bis in den UHF-Bereich wie ein vorbildlich geschirmtes System aussieht, kann sich unter Mikrowellenbeschuss wieder ganz anders darstellen... :(


LED (X5): Hier liegt nach dem Einschalten die unstabilisierte Betriebsspannung (abzüglich 0,7 V wegen T3) an. Über X5 können wir also nicht nur eine Kontroll-LED, sondern bei Bedarf auch die Beleuchtung einer Tastatur anschließen. Der Vorwiderstand R12 richtet sich nach dem gewünschten LED-Strom an der gegebenen Batteriespannung.


MASTER (X6): Dieser Anschluss geht über R8 (10k) an die Basis von T3 und ist unabhängig davon über die Diode D5 (BAT42) mit dem Porteingang PD0 von IC1 verbunden. Wenn wir diesen Anschluss mit einem Jumper kurzschließen, fließt dauerhaft Basisstrom für T3 und die Stromversorgung bleibt für Testzwecke oder zur Programmierung des Mikrocontrollers (über Zwischensockel) beliebig lange eingeschaltet.
Wenn wir das Zahlenschloss als Türschloss einsetzen wollen, brauchen wir in der guten Stube logischerweise eine Möglichkeit, die Tür bequem per Knopfdruck zu ver- und entriegeln, ohne irgendwelche Zahlencodes einzugeben. Zumal sich die Zahlentastatur ja draußen befindet...
Das moderne Pangdang zum eingesteckten oder griffbereiten Haustürschlüssel ist hier ein einfacher Taster! Ein kurzer Druck auf den MASTER-Knopf aktiviert das Schloss und ermöglicht ein Ver- und Entriegeln durch kurzen oder langen Tastendruck, da der Mikrocontroller dieses Signal ebenfalls über einen gesonderten Porteingang (PD0) auswertet. (Mehr dazu in der Beschreibung der Firmware.)
Der Eingang X6 ließe sich auch über ein Relais oder den offenen Kollektor einer anderen Schaltung ansteuern. Ein übergeordnetes Sicherheitssystem könnte auf diese Weise die Tür freigeben.


Überlegungen zu passiven und aktiven Angriffen per Hochfrequenz: Selbstverständlich soll die Elektronik eines Zahlenschlosses möglichst wenig Hochfrequenzenergie abstrahlen, damit passive HF-Angriffe von vornherein ausgeschlossen sind. In einem Worst-Case-Codeschloss wären die EM-Abstrahlungen so stark und eindeutig, dass ein Angreifer dem rechtmäßigen Benutzer auf viele Meter Entfernung gewissermaßen "per Funk über die Schulter schauen" kann, entsprechendes Equipment vorausgesetzt. (Stichworte: "Van-Eck-Phreaking", TEMPEST).
Bei aktiven HF-Angriffen würde ein Angreifer die Anlage mit gepulster Hochfrequenzenergie (Mikrowellen) bestrahlen, und aus dem reflektierten Signal Informationen über interne Betriebszustände des angegriffenen Systems zu gewinnen versuchen. Wenn die Schaltung einigermaßen umsichtig konzipiert ist, liefert ein solcher Angriff jedoch keine auswertbaren Rückstrahlprofile. Vielmehr werden sich die schwachen Modulationseffekte verschiedenster Komponenten (und benachbarter Geräte) überlagern und sind dann im Echosignal nicht mehr klar zu unterscheiden. Wenn ein Angreifer jedoch physischen Zugriff auf die Anlage bekommt, kann er eine Art "Wanze" an geeigneter Stelle einbauen. Dabei kann es sich um unverdächtig aussehende "Standardbauteile" handeln, die sich auch normalerweise passiv verhalten, d.h. mit passiven HF-Spürgeräten nicht so ohne Weiteres erkennbar sind. Erst bei Hochfrequenzbestrahlung mit einer bestimmten Wellenlänge entsteht ein ausgeprägtes Echosignal, das mit dem interessierenden Signal der Schaltung moduliert ist.
Schon die wenigen bekannt gewordenen Dokumente über die NSA-Abteilung 'ANT' deuten darauf hin, dass staatliche Schnüffler und andere gut ausgerüstete Kriminelle auf verschiedene maßgeschneiderte Varianten dieser sogenannten Rückstrahlverfahren zurückgreifen können.
Glücklicherweise sind dieselben Maßnahmen, die unnötige HF-Abstrahlung unterbinden, auch gegen HF-Einstrahlung wirkungsvoll. Ein hochwertiges Metallgehäuse ist eine der offensichtlichsten Gegenmaßnahmen. Weitere Anregungen:


Massebezug: Das vorgeschlagene Platinenlayout ermöglicht eine isolierte Montage, d.h. über die Schraubbefestigung entsteht keine leitende Verbindung von Schaltungsmasse zum Chassis. Es ist also möglich, die gesamte Schließelektronik potenzialfrei zu installieren, wenn auch Batteriehalter/Netzteil entsprechend massefrei sind.
Unter dem Aspekt der Störsicherheit (Funkenstörungen des Motors, passive und aktive HF-Angriffe) ist es jedoch im Allgemeinen besser, wenn die Schaltung einen eindeutigen Massebezug erhält. Hierfür sollten wir an genau einer Stelle die elektrische Verbindung zwischen Schaltungsmasse (Minuspol) und Chassis (Metallgehäuse) vornehmen.
Wenn der Tastenblock in einem separaten Metallgehäuse untergebracht ist, welches ansonsten keine Verbindung zu einer gemeinsamen Erdung (z.B. Metalltür) hat, dann sollte das Gehäuse über Schirm/Masse der Tastaturzuleitung geerdet werden. (Dafür ist die GND-Leitung X4-4 gedacht.)


Nach oben | Index



Hinweise zum Nachbau


Platine:
Die Leiterplatte im Format 100 x 53 mm liegt als Pixelgrafik mit exakter Skalierung auf 300 dpi vor. (Ich verwende keine proprietären Dateiformate, daher bitte ich von entsprechenden Anfragen abzusehen.)
Die Leiterbahn-Breiten im Bereich der Motorsteuerung sind wegen der zu erwartenden höheren Ströme etwas großzügiger ausgelegt. Die fertig bestückte und getestete Platine sollten wir später auf der Lötseite mit einem Schutzlack überziehen.


An die jeweilige Nennspannung des Elektromotors/Elektromagneten anzupassen:
Relais: DIL-Kleinrelais. Spulenspannung = unstabilisierte Batteriespannung = Nennspannung des Motors.
Erfolgreich getestete Relaistypen für 6 Volt:
Finder 30.22.9-6V (kann bis 2A schalten);
Takamisawa RY5W-K (nur kleine DC-Motore bis ca. 500 mA!)
Erfolgreich an 12 Volt eingesetzt:
Finder 30.22.9-12V
Da wir in dieser Anwendung immer zwei Kontaktsätze parallel schalten, erhöht sich die zulässige Strombelastung um theoretisch das Doppelte.

LED-Vorwiderstand R12 (Orientierungswerte):
Für Hintergrundbeleuchtung (z.B. Zahlentastatur "eao S.Series", grüne LEDs, Gesamtstrom ca. 50 mA):
6V ~ 100 Ohm    /    12V ~ 220 Ohm   /  24V ~ 470 Ohm
Für reine Anzeige-LED:
6V ~ 1kOhm   /    12V ~ 2,2 kOhm / 24V ~ 4,7 kOhm

Serienwiderstände /Shunts R1 + R2 (Strombegrenzung DC-Motor / Motorbremse):
Der Wert richtet sich nach dem Motor-Anlaufstrom: Typische Werte für diese Serienwiderstände liegen zwischen 2,2 und 10 Ohm bei 5 Watt Belastbarkeit.
Ein guter Ausgangspunkt für die Dimensionierung dieser Widerstände ist der halbe Motorinnenwiderstand. Damit ergibt sich üblicherweise immernoch ein ausreichender Anlaufstrom, und der Lastwiderstand bei "Soft-Bremsung" entspricht wegen der dann vorliegenden Serienschaltung der beiden Widerstände ungefähr dem Motorinnenwiderstand, was eine sehr günstige Anpassung bedeutet.

Andere Bauteile müssen innerhalb des zulässigen Betriebsspannungsbereichs von ca. 4...24 V nicht angepasst werden.


Stromversorgung/Batteriepack:
Batteriestecker X1 und Motorstecker X2 sollten hochwertig und für den zu erwartenden Spitzenstrom ausgelegt sein. Bis zu mehreren Ampere können wir auch noch Stiftleisten im 2,54-mm-Raster verwenden, wenn mehrere Stifte parallel geschaltet werden. Die Strombelastbarkeit erhöht sich dementsprechend und der Strompfad ist "redundant" ausgelegt. Dass alle Adern zur selben Zeit einen Bruch haben oder alle Kontakte auf einmal wackelig werden, ist bei dieser Art Steckverbindungen eher unwahrscheinlich. Wer dem Frieden nicht traut, kann aber auch Schraubklemmen zur Lötmontage im 7,5-mm-Raster einbauen. (Ähnliches gilt für den Motoranschluss X2.)


Bohrungen: 0,8 mm  für die meisten Bauteile;  1,0 mm  für Steckverbinder und Relais; 3,0 mm für Schraubbefestigungen (M3).

Nach oben | Index


Hall of Shame



Kommerzielles Zahlenschloss (Bedienteil)

  • Billiges Plastikteil

  • Üble Folientastatur

  • Nerviges Gepiepse

  • Unsinnige Uhrenfunktion
    ("Wieviel Uhr ist es?" - "Du, da muss ich mal kurz an meinem Tresor nachgucken...!"
    <bilderrahmenabhäng'>
    )

  • Batteriefach, Bedienteil und Display außen:
    sabotagefreundlich, elektromagnetisch nicht abgeschirmt und natürlich auch nicht gegen einen EMP geschützt!

  • Mechanisches Notschloss für Lockpicker leicht zugänglich
Kommerzielles Zahlenschloss (Elektronik)

  • China-Mikrocontroller "EM78P447"

  • Codespeicherung in externem EEPROM
    (geht's noch blöder?)

  • Obskure Firmware

  • Unzureichende Schlüssellänge nur max. 8 Stellen

  • Sehr wahrscheinlich mit "Hintertürchen"

  • Lapschige Motortreiber (SMD-Transistoren!)

  • Billiger Gesamteindruck





Nach oben | Index


Kurzanleitung "CodeLock"

AKTIVIEREN (allgemein)

*

USER-CODE BENUTZEN (hier "1234"):


* 1 2 3 4 #        = EIN, Quittierungstöne, ÖFFNET

Falscheingabe, mit [*] korrigiert
:

* 1243... * 1234 # = EIN, Quittierungstöne, ÖFFNET

Falscheingabe, unkorrigiert:

* 0815 #
     =   WARNTON, 8-Sekunden-Sperre, AUS

SCHLIESSEN (allgemein):

#

Zahlentastatur Vollmetall "S.Series" Firma "eao" [Foto: jt]
NORAD blast doors, Cheyenne Mountain, Colorado. USAF photo [License:  Public Domain, CC-PD, PD US Government]
USER-CODE ÄNDERN (bisher "1234" - neu "4321")

* 1234 #   = EIN, Quittierungstöne, ÖFFNET

* 4321 #  * 4321 #  * 4321 #

oder   * 4321 # 4321 # 4321 #

=  Sonderquittierung, Code geändert auf "4321"


Hinweise:

Bei Timeout vor dem letzten [#] wird der alte Code nicht geändert.
Die Eingabe eines "Nullcodes" (keine Ziffern) wird nicht zugelassen.

MASTER-CODE BENUTZEN
(hier "5678")

* 5678 # 

= EIN, Sonderquittierungstöne, ÖFFNET

MASTER-CODE ÄNDERN

Wie User-Code.

Hinweis:
Nach erfolgreichem Öffnen mit Master-Code wird bisheriger User-Code überschrieben.



"MASTER"-TASTE (an X6)


Kurzer Tastendruck:

= EIN, SCHLIESST     (wie [#] auf Zahlentastatur)


Langer Tastendruck ( > 0,5 s):

= EIN, ÖFFNET

Nächste Betätigung der regulären Zahlentastatur:
Riegel SCHLIESST

AKUSTISCHE SIGNALE

Tastendruck 0-9:   kurze Töne (nach Loslassen der Taste)

SCHLIESSEN:   langer Ton

FEHLER:   langer Ton

ERFOLG:  3x kurz

CODE GEÄNDERT:    9x kurz

User-Code:     hohe Tonfrequenz

Master-Code:  niedrigere Tonfrequenz

Weitere Hinweise:

Eingabepause länger als 8 Sekunden = Timeout = AUS
- STATUS DER TÜR BLEIBT UNVERÄNDERT

Beim Einschalten wird immer ein Schließvorgang ausgelöst,
falls das Schloss nicht sicher verriegelt war (Endschalter).

Warnung bei Spannungseinbruch:
Kurze Piepser in größerem Abstand (wie Rauchmelder mit schwacher Batterie).

"CodeLock 60" = Firmware mit jeweils 60 Ziffern für User-Code und  Master-Code




Nach oben | Index

Firmware

Die Firmware "CodeLock 60" ist in AVR-Assembler geschrieben. Jedes Detail ist anhand des offengelegten Quellcodes genauestens nachvollziehbar. Es gibt hier keine Unklarheiten bezüglich der tatsächlichen Programmstruktur, da keine eigenwilligen Compiler und obskure Bibliotheken im Spiel sind.



Nach oben | Index



Software

Wir brauchen paar neue Zahlenkombinationen für unser Schließsystem, haben aber nicht genug Phantasie?
Wir würden gern einen ultrakrassen 60-stelligen Master-Code einrichten, verspüren aber wenig Lust, die 60 Ziffern dreimal hintereinander einzuhämmern?

Zieh' dir das rein: Mein Kommandozeilentool "clkeys" erzeugt per Zufallsgenerator Schlüssel der gewünschten Länge, entweder als strukturierte Bildschirmausgabe (Fünfergruppen), sowie als kompatible EEPROM-Datei im Intel-Hex-Format. Die EEPROM-Datei können wir bei Erstprogrammierung des Mikrocontrollers per ISP direkt in den Mikrocontroller schreiben und sparen uns damit das mühsame und fehlerträchtige Eingeben eines längeren Master-Codes. Zusätzlich wird der Code als menschenlesbare Textdatei abgespeichert.


Reine Zufallsschlüssel

clkeys 10

USER-CODE:
64782 19503
... liefert 10-stelligen User-Code NUR als Bildschirmausgabe!

clkeys 10 > user.txt
... leitet die Bildschirmausgabe in eine Datei "user.txt" im aktuellen Arbeitsverzeichnis um.

clkeys 10 40 R:\security

USER CODE:
56120 99668 

MASTER CODE:
15795 36519 72335 14789 
99497 67493 71420 50641 

Filename: R:\security

... erzeugt einen User-Code von 10 Stellen und einen Master-Code mit 40 Stellen und folgende Dateien in Laufwerk R:

security.bin         EEPROM-Datei  im Binärformat
security.hex         EEPROM-Datei im Format Intel(R) Hex
security.txt         Bildschirmausgabe als ASCII-Textdatei

Aus Sicherheitsgründen empfehle ich, die Dateien direkt an ein verschlüsseltes Laufwerk oder eine Ramdisk zu senden.
Das 3. Argument (Dateiname) können wir auch weglassen. Dann verwendet das Programm als Dateiname einen eindeutigen Zeitstempel aus Datum und Uhrzeit. Wenn wir nur einen Laufwerksbuchstaben oder einen Pfad angeben, werden die Dateien mit dem Zeitstempel-Namen in diesem Pfad geschrieben, ansonsten in das Arbeitsverzeichnis von clkeys.

Siehe auch Help-Screen. (Aufruf nur clkeys ohne Parameter.)


Gleichverteilte Zufallsschlüssel

Der Zusatz "h" oder "H" hinter Argument 1 und/oder Argument 2 steht für "hypergeometrische Verteilung". Das bedeutet:
- Wenn wir 10 Ziffern auswürfeln, kommt jede Zahl von 0 bis 9 genau einmal vor.
- Wenn wir 20 Ziffern auswürfeln, kommt jede Zahl von 0 bis 9 genau zweimal vor, usw.

Bei Schlüssellängen mit einem glatten Vielfachen von 10 sind die Zahlen immer vollkommen gleichverteilt.

clkeys 10H 60H

USER CODE: hyper
32519 74680

MASTER CODE: hyper
44660 21416 18642 20735 
73207 94883 38579 68695 
92153 78359 52040 71190 

Filename: 20140404125010

Das Beispiel erzeugt obenstehende Bildschirmausgabe (natürlich mit anderen Zahlen) sowie die drei Dateien

20140404125010.bin   
20140404125010.hex    20140404125010.txt

mit hypergeometrischen (gleichverteilten) Zufallszahlen.

Vorteil hypergeometrischer Codes: Die Tasten werden gleichmäßig oft benutzt. Das senkt die Wahrscheinlichkeit, dass einzelne Kontakte vorzeitig ausfallen oder sich die akustischen Eigenschaften zunehmend verändern (Angriffe durch "Abhören" von Tastengeräuschen). Wenn wir ein von außen zugängliches Zahlenschloss (Türschloss) haben, könnte ein "Angreifer" die Fingerabdrücke von den Tasten abnehmen und auf diese Weise feststellen, welche Zahlen überhaupt gedrückt wurden; möglicherweise auch, wie oft. Bei einer sehr kurzen Kombination lässt sich mit dieser Information der Suchraum bereits massiv einschränken (Beispiel Geldautomat mit popeliger 4-stelliger PIN). Bei einem 10-stelligen Schlüssel aus gleichverteilten Ziffern ist dieser Angriff offensichtlich sinnlos geworden.

Nachteil: Die gleichverteilten Zahlencodes sind kryptografisch gesehen "schwächere" Schlüssel, als eine gleichlange reine Zufallszahl. Beispielrechnung mit 10 Stellen:
Der Schlüsselraum mit N rein zufälligen Dezimalziffern beträgt 10N (10 hoch N). Für N = 10 also 1010 = 10.000.000.000
Der Schlüsselraum mit N gleichverteilten Dezimalziffern beträgt N! (N-Fakultät). Für N = 10 also 10*9*8*7*6*5*4*3*2*1  = 3.628.800

Bei längeren Schlüsseln nähert sich das Verhältnis wieder an.


Nach oben | Index



Anmerkungen


Energiebedarf: Da das Zahlenschloss im Ruhezustand praktisch keinen Strom verbraucht, hängt die Batterielebensdauer im Wesentlichen nur vom kurzzeitigen Strombedarf der Schließanlage und der permanenten Selbstentladung der Zellen ab.
Im Zusammenspiel mit einem Getriebemotor lassen sich alkalische Primärzellen problemlos verwenden, und diese haben auch eine gute Lagerfähigkeit. Gute Erfahrungen habe ich jetzt mit den neuen Lithium-Zellen im üblichen Formfaktor von Mignon- oder Babyzellen gemacht. Sündhaft teuer, aber "halten ewig"!
Für stärkere Antriebe, die häufiger betätigt werden, ist der Umstieg auf NiMH- oder Bleigel-Akkus sinnvoller. Letztere sind üblicherweise als Stützbatterien in Alarmsystemen im Einsatz und für permanentes Nachladen gut geeignet.
Bestätigen kann ich, dass man mit einem Batteriepack aus Mignonzellen (ca. 1500 mAh) und einem DC-Getriebemotor, der kurzzeitig bis zu 1 A zieht, mindestens ein Jahr über die Runden kommt; auch wenn das Schloss mehrmals am Tag aktiviert wird.


Rechtliche Hinweise: Das vorgestellte Projekt "CodeLock" (Hardware, Software und Firmware) ist eine freie und offen dokumentierte Eigenentwicklung, die ich der Weltgemeinschaft unter den Bedingungen der Creative Commons - Namensnennung - Weitergabe unter gleichen Bedingungen kostenlos zur Verfügung stelle. Jedem steht es frei, das Zahlenschloss in der vorgestellten oder einer abgewandelten Form zu verwenden, es weiterzuentwickeln oder sogar kommerziell zu nutzen, solange dies mit den Lizenzbedingungen vereinbar ist. Konstruktive Verbesserungsvorschläge nehme ich gern entgegen! Ich behalte mir vor, Spezialversionen der Firmware unter anderslautenden Lizenzen zu veröffentlichen.



Nach oben | Index



Download




Links

  1. Interessantes zu Elektro-Riegeln (Firma Assa Abloy):
    http://www.assaabloy.de/Local/DE/Downloads/effeff/Kataloge%20dt/Elektro-Riegel/2.1901-072_Elektro-Riegel%20Katalog_03.pdf

  2. Lockpicking - sollte jeder mal gemacht haben: www.dieterade.de/schlosstypen.html

  3. Zahlenschlösser wie aus dem Horrorkabinett allerorten.

  4. Datenblätter:
    ATtiny2313 (Atmel Corporation): http://www.atmel.com/Images/doc2543.pdf
    PNP-Schalttransistor BC327: http://www.fairchildsemi.com/ds/BC/BC327.pdf
    Technische Erläuterungen Relais (Fa. Finder): http://gfinder.findernet.com//assets/Series/357/S41DE.pdf
    78L05 Spannungsregler: http://www.ti.com/lit/ds/symlink/lm78l05.pdf



Nach oben | Index


Erstveröffentlichung: 04/2014 ~ Letzte Änderung: 2/2016