2008-09-06 8 views
9

Ich habe eine nette Public Domain C++ DES implementation vor, aber jetzt brauche ich einige einfache, grundlegende, schnelle Kryptographie für ein Embedded-System.Einfache Verschlüsselung Implementierung in C

Es muss nicht unzerbrechlich sein, aber es muss den gelegentlichen Hacker vereiteln (dh nichts, was für Geld oder Identitätsdiebstahl verwendet werden könnte, sondern andere persönliche Informationen, die auf Speicherkarten übertragen werden, die verloren gehen oder fallen könnten in die falschen Hände).

Aufgrund der begrenzten Speicherkapazität auf diesem Prozessor würde ich etwas bevorzugen, das in diskreten Blöcken (512 Bytes oder weniger) codieren kann.

Das Projekt ist nicht Open Source und wird nicht Bibliotheken verwenden, die ich kenne, Optionen weiter einschränkt - Public Domain am besten zu sein, aber BSD/Apache/etc wahrscheinlich akzeptabel ...

Ich bin zögerlich meine eigenen zu rollen (wie jeder sollte).

-Adam

Antwort

7

Wenn Sie gerade für Verschleierung, XOR mit einem geheimen konstanten suchen, ist so klein wie eine Implementierung Sie finden werden. Es wäre auch trivial zu brechen, da es anfällig für Häufigkeitsanalyse ist, nach den häufigsten englischen Buchstaben zu suchen.

Wenn Sie einen stärkeren Algorithmus benötigen, empfehle ich Blowfish zu betrachten, der dazu neigt, klein und schnell zu sein. Es erfordert immer noch Speicher für Tabellen, aber hoffentlich wird es für Ihre Anwendung funktionieren.

Bruce Schneier hat den Blowfish-Algorithmus explizit in die Öffentlichkeit gebracht und Patente für ungültig erklärt. Sie können seine Implementierung in C (und anderen Implementierungen) von his site erhalten. Diese Quelle enthält keinen Copyright-Hinweis. Ich vermute, dass der Quellcode auch in der Public Domain ist, aber ein bisschen mehr Kontrolle könnte notwendig sein.

2

Die gleiche Person, die die C++ DES-Implementierung veröffentlicht veröffentlichte auch eine C Rijndael Encryption Algorithm - ich um seine Website einen Bissen mehr stocherte haben sollte, The Tiny Encryption Algorithm (academic paper here) hat auch eine sehr kleine Implementierung Fußabdruck C.

Blowfish sieht gut aus, und ist wahrscheinlich die beste dieser drei soweit Sicherheit.

Ich beginne mit dem TEA (kleiner Code und Speicherbedarf), aber wickle es, damit ich später bei Bedarf zu einem anderen Algorithmus wechseln kann. Es hat bemerkenswerte Schwächen in seinen früheren Implementierungen, aber für dieses Projekt könnte sogar übertrieben sein.

-Adam

3

RC4 ist einfach und schnell.

1

Sie können eine Pseudorandom number generator (PRNG) verwenden, um eine wiederholbare Folge von Wörtern zu generieren, die Sie dann mit dem entsprechenden Wort in Ihrem Datenstrom XOR. (Sender und Empfänger müssen die Parameter im Voraus wissen, verwendet, um die Pseudo-Zufalls-Sequenz zu erzeugen.)

Dieser Ansatz nicht unzerbrechlich ist, aber es ist ein Schritt von einer Konstante für den XOR-ing mit - und PRNGs sind sehr einfach zu implementieren, typischerweise bestehend aus einer Multiplikation und Modulo-Operation für jedes Wort.