Frage

Ich habe eine schöne öffentliche Domain verwendet C++ DES-Implementierung vorher, aber jetzt brauche ich eine einfache, grundlegende und schnelle Kryptographie für ein eingebettetes System.

Es muss nicht unzerbrechlich sein, aber es muss den Gelegenheits-Hacker abschrecken (d. h. nichts, was für Geld- oder Identitätsdiebstahl verwendet werden könnte, sondern andere persönliche Daten, die auf Speicherkarten übertragen werden und verloren gehen oder in die falschen Hände geraten könnten). ).

Aufgrund des begrenzten Speichers dieses Prozessors würde ich etwas bevorzugen, das in diskreten Blöcken (512 Byte oder weniger) kodieren kann.

Das Projekt ist nicht Open Source und wird keine Bibliotheken verwenden, was meines Wissens die Optionen weiter einschränkt – Public Domain ist am besten, aber BSD/Apache/etc wahrscheinlich akzeptabel ...

Ich zögere, mein eigenes zu rollen (wie es jeder tun sollte).

-Adam

War es hilfreich?

Lösung

Wenn Sie nur nach einer Verschleierung suchen, ist XOR mit einer geheimen Konstante die kleinste Implementierung, die Sie finden werden.Es wäre auch trivial, das Problem zu lösen, da es bei der Suche nach den gebräuchlichsten englischen Buchstaben für die Häufigkeitsanalyse anfällig ist.

Wenn Sie einen stärkeren Algorithmus benötigen, würde ich empfehlen, sich Blowfish anzusehen, der tendenziell klein und schnell ist.Es benötigt immer noch Speicher für Tabellen, aber hoffentlich funktioniert es für Ihre Anwendung.

Bruce Schneier stellte den Blowfish-Algorithmus ausdrücklich in den öffentlichen Bereich und lehnte Patente ab.Seine Implementierung in C (und auch andere Implementierungen) finden Sie hier seine Seite.Diese Quelle trägt keinen Urheberrechtshinweis.Ich vermute, dass auch der Quellcode gemeinfrei ist, aber möglicherweise ist eine etwas genauere Überprüfung erforderlich.

Andere Tipps

RC4 ist einfach und schnell.

Dieselbe Person, die die C++-DES-Implementierung veröffentlicht hat, hat auch a veröffentlicht C Rijndael-Verschlüsselungsalgorithmus - Ich hätte ein bisschen mehr auf seiner Website herumstöbern sollen, The Winziger Verschlüsselungsalgorithmus (wissenschaftliche Arbeit hier) hat auch einen sehr kleinen C-Implementierungsbedarf.

Kugelfisch sieht gut aus und ist wahrscheinlich das beste dieser drei, was die Sicherheit betrifft.

Ich beginne mit dem TEA (geringer Code- und Speicherbedarf), schließe ihn aber ein, damit ich später bei Bedarf zu einem anderen Algorithmus wechseln kann.Es weist in seinen früheren Implementierungen deutliche Schwächen auf, könnte aber für dieses Projekt sogar übertrieben sein.

-Adam

Du könntest einen gebrauchen Pseudozufallszahlengenerator (PRNG), um eine wiederholbare Folge von Wörtern zu generieren, die Sie dann mit dem entsprechenden Wort in Ihrem Datenstrom XOR-verknüpfen.(Sender und Empfänger müssen im Voraus die Parameter kennen, die zur Erzeugung der Pseudozufallsfolge verwendet werden.)

Dieser Ansatz ist nicht unumstößlich, stellt aber einen Fortschritt im Vergleich zur Verwendung einer Konstante für die XOR-Verknüpfung dar – und PRNGs sind sehr einfach zu implementieren und bestehen normalerweise aus einer Multiplikation und einer Modulo-Operation für jedes Wort.

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top