Verschlüsselungsbibliothek für Arduino

9

Ich benutze ein Arduino, um eine Tastatur zu lesen und einen elektrischen Schlag bei der Eingabe der Tastatur-PIN zu öffnen. Für diese Skizze wollte ich eine leichte Verschlüsselung verwenden, um die PINs in EEProm zu speichern. Kennt jemand eine solche Bibliothek? Ich habe gehört, dass es mit TwoFish möglich sein könnte.

mad_z
quelle

Antworten:

12

Sie möchten keine Passwörter (PINs) verschlüsseln - Sie möchten sie hashen . Wenn jemand ein Passwort eingibt, hashen Sie dieses Passwort und vergleichen den Hash mit dem gespeicherten Hash. Der Vorteil dieser Methode (die seit über 30 Jahren verwendet wird) besteht darin, dass jemand, selbst wenn er die Quelle und die Hashes erhält, nicht erkennen kann, welche PINs mit den Hashes übereinstimmen, solange Sie eine ausreichend starke Hash-Funktion auswählen .

Sie möchten die Verschlüsselung nicht selbst implementieren, sondern die Bibliothek eines anderen Benutzers verwenden, insbesondere eine Bibliothek mit einer offenen Implementierung, die von einer großen Community getestet wurde. Die Verschlüsselung ist schwierig, das Testen ist schwierig und das Testen der Verschlüsselung ist verdammt schwierig. Lassen Sie es also von jemand anderem für Sie tun.

Sie sollten die AVR Crypto Library auschecken , die mit GPLv3 lizenziert ist. Es gibt auch eine Implementierung von Skein für AVR .

Craig Trader
quelle
1
Upvoted - Eine gute Ressource, die als Antwort auf die Frage festgelegt werden sollte.
Lou
9

Dieser Link, den Hristos gepostet hat, ist zwar möglicherweise nützlich, zählt aber sicherlich nicht als "Verschlüsselung". Es ist wirklich nur "Verschleierung".

Die richtige Kryptographie ist bekanntermaßen leicht zu verwechseln, selbst für Leute, die sich mit Mathematik auskennen.

Als Antwort auf den ursprünglichen Beitrag - Mit welchen Angriffsmethoden kann jemand auf die PINs im EEProm zugreifen? Sicher , wenn sie haben , dass weit in der Elektronik können sie nur „das rote Kabel schnippeln“ und die Tür öffnen?

Wenn Sie irgendwie tun ein System haben , in dem Angreifer halten den EEProm Inhalt bekommen könnte , ohne bereits genügend Zugang mit Ihrer Tür zu öffnen, möchten Sie wahrscheinlich es neu zu gestalten. Sie können sich Einweg-Hash-Funktionen ansehen, die dem Unix-Passwort-Hashing ähneln - auf diese Weise muss das EEProm keinen Entschlüsselungsschlüssel enthalten - das Problem ist, dass der Suchraum für PINs sehr klein ist - wenn ich die Hash-Version von herunterladen kann PIN, ich kann ziemlich schnell alle 10.000 möglichen PINs ausprobieren. Ich vermute, dass jeder moderne Laptop alle in wenigen Sekunden ausführen wird.

Bigiain
quelle
Ich stimme zu (und stimmte oben zu), ein Einweg-Hash wäre nützlich und wenn Sie das System programmieren, könnten Sie den Pin so lange machen, wie Sie möchten, z. B. 8 Ziffern ergeben 100 000 000 Kombinationen, was viel länger dauern sollte.
Amos
1

Das Problem, das ich sehe, ist, dass sie, wenn sie Ihre Pins sehen können, auch Ihr Programm sehen können, das Ihre Pins verschlüsselt / überprüft / entschlüsselt. Wenn sie Ihren Chip haben, können sie das Programm nicht einfach so ändern, dass immer ein positives Ergebnis (unter Umgehung der Prüfung) für jeden eingegebenen Pin erzielt wird.

Amos
quelle
1

Wie wollen Sie die verschlüsselten PINs entschlüsseln, um zu überprüfen, ob der Benutzer eine gültige PIN eingegeben hat? Sie müssen den Entschlüsselungsschlüssel speichern. Wenn der Angreifer Ihr E-Prom lesen kann, kann er auch Ihren Flash lesen, um den Verschlüsselungsschlüssel zu finden. Grundsätzlich wird Ihre gesamte Verschlüsselung völlig unbrauchbar. Auch wie die anderen Leute sagten, wenn er bereits die Fähigkeit hat, Ihren Chip zu lesen, könnte er einfach ein neues Programm schreiben. Es ist viel einfacher, die Tür einfach aufzutreten. Ich bezweifle, dass sich jemals jemand die Mühe machen würde, Ihren Chip zu hacken.

davr
quelle
1

Hier ist eine Methode zur einfachen Beschriftung in C, die leicht auf das Arduino portiert werden kann. Dies scheint der einfachste Weg zu sein, Daten mit den begrenzten Ressourcen des Arduino zu verschlüsseln.

-EDIT- Um den Schlüssel aus Ihrem Programm herauszuhalten, können Sie die Hälfte der PIN zum Schlüssel machen. Dies bedeutet, dass Ihr Programm die Schlüsselhälfte der PIN verwendet, um die in EEProm gespeicherte verschlüsselte 1/2 PIN zu entschlüsseln. Wenn der entschlüsselte Schlüssel von EEProm mit dem Teil Ihrer PIN übereinstimmt, der nicht der Schlüssel ist, wird die Tür entriegelt. Dies würde nur in einer Situation funktionieren, in der es den Eindringlingen nicht möglich ist, die Tür aufzubrechen oder den Arduino neu zu programmieren.

Hristos
quelle
Wenn sie jedoch keinen Zugriff auf Ihren Chip haben, müssen Sie den Pin nicht verschlüsseln.
Amos
1

Ich hasse es, die Frage nicht zu beantworten, während ich einen anderen frage, aber ...

Gibt es einen Grund, warum Ihr Gerät nicht manipulationssicher ist? Ich habe Druckknopfschalter in Schraubenlöchern gesehen, die "auf der Bank" implementiert wurden, um die Art von Manipulationen zu erkennen, über die Sie sich Sorgen machen. Dann ... hier kommt das Kind mit einer Butan-Mikrofackel, die es schafft, Ihren Chip zu erhalten, ohne etwas abzuschrauben (oder den Chip zu beschädigen). Irgendwie kannte er das Design Ihres manipulationssicheren Systems, das (hoffentlich auch) das Erkennen von Änderungen in umfasst Umgebungslicht und / oder Schall. Wenn sich die Abdeckung löst, werden beide ganz unterschiedlich. Tag oder Nacht.

Wenn dies der Fall ist, sollte es sich um ein zweiteiliges System handeln, bei dem die freigelegten Teile mit etwas kommunizieren, bei dem die Verschlüsselung einfacher implementiert werden kann. Außerdem berücksichtigen Prüfsummen (Hilfe) das Kind mit der Fackel.

Ich denke, Sie bitten einen Schraubenzieher, ein Hammer zu sein.

Tim Post
quelle
1

Diese Kommentare sind wirklich genau richtig. Es ist nichts Falsches daran zu experimentieren, um etwas über Verschlüsselung zu lernen, aber dies ist kein wirklich gutes Projekt, um solche Dinge zu lernen. Sie wollen wirklich ein gutes Lehrbuch und einen Computer, und wie @bigiain sagt, ist die Mathematik notorisch leicht falsch zu verstehen.

Um besser zu verstehen, wie Kryptografie funktioniert und was Sie erwartet, ist das Handbuch für angewandte Kryptografie ausgezeichnet und kostenlos:

Wenn Sie nur Ihr Projekt sichern möchten, ist dies eine ineffiziente Methode. Wenn Sie sich für Kryptografie interessieren, beginnen Sie mit diesem Buch und einem Computer.

Lou
quelle
Ich verstehe Kryptographie, lese Bruce Schneier und programmiere seit über zwanzig Jahren. Ich verstehe, dass die wirkliche Bedrohung darin besteht, die Tür aufzubrechen und an jeder Art von Arduino-Controller vorbei zu gehen. Ich kann es einfach nicht guten Gewissens mit Klartext-PINs im EEProm installieren, wenn es vermieden werden kann. Fly
Es gibt eine beliebige Anzahl einfacher Verschleierungsmethoden, die in dieser Rolle genauso effektiv sind, wenn Sie das Speichern von Klartext-PINs vermeiden möchten. Die oben genannten Antwortenden haben nur versucht, Ihnen zu helfen, zu verstehen, was Kryptografie tut und was nicht. Hier ist eine AES-Bibliothek: hoozi.com/Articles/AESEncryption.htm Ich möchte auch sagen, dass Sie Kryptografie nicht "verstehen", nur weil Sie sie 20 Jahre lang programmiert haben. Es ist ein ganz anderes Gebiet. Ein 20-jähriger Automechaniker ist ein erfahrener Mensch, aber ich würde nicht erwarten, dass er einen CAN-Bus von Grund auf neu entwirft. Überprüfen Sie bitte Ihre Einstellung.
Lou
Oh Gott ... 20 Jahre Codierung und Sie denken, es ist möglich, Laufzeitdaten zu verschlüsseln ????? Verlassen.
MickLH