Auf der Suche nach guten kleinen Umsetzung DES

Ich bin auf der Suche nach einem guten permissive-Lizenz (BSD/MIT-oder PD) DES-Implementierung in C, mit einem minimalen Laufzeit-Speicherverbrauch (d.h. minimale Anzahl von lese-schreib-Speicher, und vorzugsweise kleiner code/Tabelle Größe zu). Geschwindigkeit ist nicht ein Problem; in der Tat, in mancher Hinsicht langsamer ist besser, denn es bietet einige natürlichen Schutz gegen brute-force-login-versuche.

Allen traditionellen Implementierungen, die ich gesehen habe tun faul/Laufzeit Initialisierung von großen Tabellen, die ist, was ich versuche zu vermeiden. Ich würde gerne die Tabellen in static const Daten in binary -, und in der Tat dies ist, was ich Teils gehackt auf eine Umsetzung habe ich jetzt, aber ich Frage mich, ob es irgendwelche bestehenden Implementierungen, die einen besseren job machen, um die Größe der Tabellen auf Kosten der performance, so dass der binäre ist nicht so groß (~50kb der Tabellen).

Hinweis: ja, DES nervt. Die bestimmungsgemäße Ingebrauchnahme der Fall ist für die Umsetzung der crypt Funktion für den Umgang mit klassischen Passwort-logins.

  • Gibt es einen Grund, Sie wirklich wollen, um die Nutzung DES heute nicht mehr modernen algorithmen? Und was wollen Sie tun, wirklich alles verschlüsseln, oder die Implementierung einer hash-Funktion oder ähnliches auf Basis DES (wie Ihre Erwähnung von "brute-force-login" zeigt)?
  • Dies ist vermutlich für die Implementierung der POSIX - crypt(3) Funktion? Wenn ja, sollten Sie wahrscheinlich fügen Sie diesem Zusammenhang auf die Frage.
  • Ja, werde ich hinzufügen, dass.
  • Der Grund, warum der lookup-Tabellen verwendet werden, ist für die Geschwindigkeit. Haben Sie wollen zu optimieren für kleine Speicherbedarf, oder was? EDIT: Tatsächlich, ja, Sie haben erwähnt, dass, ich nicht zu Lesen.
  • Mein Verständnis ist, dass die sbox Tabellen notwendig sind und es schwierig oder unmöglich zu optimieren, aber das wird die permutation, die Tabellen sind nur Optimierungen für die Geschwindigkeit. Vielleicht sollte ich einfach RTF besser, genau herauszufinden, was Sie gewohnt sind, und ersetzen Sie die Tabelle lookups mit code zu tun, was Sie tun.
  • Warum gehst du nicht einfach nehmen crypt von BSD selbst?
  • Der code, den ich jetzt verwende ist indirekt abgeleitet von BSD crypt, aber es hat die Probleme, die ich in der Frage beschriebenen (~50k von Lesen-schreiben-Tabellen, von denen die meisten unnötig).
  • Sorry, ich bin immer noch nicht verkauft, die auf Ihrem DES ... müssen traditionelle crypt mit DES ist in sich leicht gebrochen, mit brute-force durch alle welche können Ihre gespeicherten (gehashte) Passwörter. Tun Sie wirklich brauchen, um zu gestatten, die Anmeldung mit bereits vorhandenen gespeicherten Passwort-Tabellen? Wenn nicht, besser, verwenden moderne algorithmen wie bcrypt oder PBKDF-2 mit einem geeigneten Faktor Arbeit. (Scrypt ist auch widerstandsfähiger gegen brute-force, aber möglicherweise nicht für Ihre "low-memory" - Anforderung.)
  • Ich Stimme den anderen algorithmen sind "besser", aber Sie sind nutzlos, hier im Sinne von nicht-treffen-Kompatibilität braucht. Hashes sind nicht zugänglich und so ist die einzige Schwäche DES crypt ist die Tatsache, dass nur 8 bytes des Passworts sind signifikant.

InformationsquelleAutor R.. | 2012-05-27
Schreibe einen Kommentar