Abgewandelter Hashing Algorithmus sicher?

Hallo,
Ich habe mir heute mal eine udf(sozusagen das C++ Header File für autoit) angeguckt die MD5 Hashes berechnet.In dieser UDF wird aber keine DLL oder so etwas genutzt sondern alles wird mit autoit Funktionen berechnet.

Meine Überlegung ist folgende:Man könnte die verwendeten Rechenoperationen doch ein wenig abändern damit der Hash nicht mehr als md5 hash erkannt wird und somit nicht mehr/schwerer zu knacken ist.
Denn die einzige Form des hashcracking die mir bekannt ist besteht darin zu sehr vielen Strings den md5 hash zu berechnen und dann den zum hash passenden String zu suchen.Da der cracker aber nicht weiß wie genau der hash berechnet wird kann er auch kein rainbowtable dazu erstellen.

Das wäre zum Beispiel für Login Datenbanken gut da der Angreifer der womöglich nur mit einer SQL injection an die DB gekommen ist keine Ahnung hat auf welche Art der hash berechnet wird.

Da man ja eigentlich beliebig viele neue Berechnungen einfügen kann oder bestehende abändern kann denke ich mal das das Verfahren etwas besser ist da man nur einen einzigen Befehl ändern muss damit der cracker sich die haare rauft weil es kein bekannter Algorithmus ist.

Was meint ihr?

Ich Poste den Code nachher (Bin gerade am tablet)
 
Zuletzt bearbeitet:
Sei dir sicher, dass auf kurz oder lang die richtigen bzw. falschen Leute (je nachdem wie man es sieht) den Code in die Hände bekommen und diesen knacken werden (genau wie mit jeder anderen Software, Kinofilm, Musik, etc. auch). Je mehr deine Software einen gewissen Bekanntheits-/Verbreitungsgrad erreicht, desto höher wird die Wahrscheinlichkeit, da sich mehr Leute dafür interessieren.
Deine Ideen hatte die Industrie mit ihren unzähligen Kopierschutzmechanismen und DRM-Kram auch schon aber wie du siehst sind sie mit diesem Katz-und-Maus-Spiel bis heute damit gescheitert. Echte Sicherheit erreicht man halt nur durch sichere kryptographische Verfahren, die offen gelegt werden und von Tausenden Leuten überprüft werden können. Oder ist MD5 geknackt und damit per se unsicher? ;)
 
MD5 ist schon geknackt und sollte auf gar keinen Fall mehr verwendet werden. Es ist es möglich eine Nachricht x und y zu finden, welche den selben Hash haben (hash kollision) und diese haben immernoch denselben Hash, falls man die Nachrichten erweitert (d.h. H(axb) = H(ayb)). Das ist natürlich der Tod für jeden Hash Standard. Der momentane Hash-"Standard" der noch als sicher eingestuft wird ist SHA-1.

Ganz generell aber, sollte man lieber auf kryptographische Verfahren setzen, welche offen gelegt werden (ganz nach Kerkhoff (Kerckhoffs)). Denn das ist eigentlich das wichtigste Prinzip in der Kryptographie: Security by obscurity funktioniert nicht. Das hat damals bei den alten Griechen/Römern (Skytale, Caesar-Verschlüsselung usw.) geklappt, aber heutzutage funktioniert es nicht mehr. Das liegt vor allem auch daran, dass wir die Möglichkeit haben kryptographische Verfahren durch Computerunterstützung sehr schnell zu analysieren. Daraus folgt auch: Wenn du keine wirkliche Ahnung von Kryptographie hast, dann verwende lieber Standards, welche vorhanden, offen und sicher sind :)
 
Da der cracker aber nicht weiß wie genau der hash berechnet wird kann er auch kein rainbowtable dazu erstellen.
Dagegen werden schon länger Salts benutzt ;)

----------
----------
der cracker sich die haare rauft weil es kein bekannter Algorithmus ist

Entwickler:
Code:
if (input != mysuper_secret_key) then you_fail("Error")
Entwickler: diesen 4096 bit Schlüssel für den Softwarestart wird kein Cracker berechnen können, meine Sofware ist sicher!!1
Cracker: *sucht und patcht JE zu JMP innterhalb von 2 Minuten, fertig*
----------
----------
Die 64 Operationen in der Hauptschleife der MD5 Berechnung lassen sich ja schon auf ~46 reduzieren. Und das "Neuerfinden des Rades" (vor allem, ohne ausreichende Kenntnisse auf diesem Gebiet) kann dafür sorgen, dass noch mehr Schwächen oder Kollisionen entstehen.

Anstatt sich auf die Geheimhaltung zu verlassen (der Böse Cracker(tm) kommt zwar an die DB, aber nicht an das Programm ;)? )
sollte man sich lieber PBKDF2 oder bcrypt anschauen. Hier muss der Angreifer ggf. raten, ob 1000, 1001 oder 10010 Runden verwendet wurden (was deutlich aufwändiger ist) ;)
 
Security through obscurity ist in der Kryptographier nie ein guter Ansatz.

Hashverfahren sind sicher, da ihr Algorithmus öffentlich ist und von vielen Experten untersucht wurde. Durch irgeneine unbedachte Änderung wird das Verfahren unter Umständen leicht brechbar - ok das ist natürlich etwas theoretisch da 0815-Cracker keine Algorithmen analysieren um dann Hashes zu brechen. Also einfach wie CDW sagt bcrypt benutzen - sicherer wird es nicht wenn man selber am Code herumpfuscht.

Dass kryptographische Verfahren öffentlich sein müssen nennt sich übrigens Kerckhoffs' Prinzip.
 
Zurück
Oben