• Welcome to Simple Machines Community Forum. Please login or sign up.
December 08, 2021, 09:46:25 PM

News:

SMF 2.1 RC4 has been released! Try it out and help us test! :) Read more.


Passwortverschlüsselung

Started by Aragon4868, July 09, 2004, 07:42:22 AM

Previous topic - Next topic

Aragon4868

Hallo zusammen,

ich möchte eine eigene Abfrage starten und muss dazu die Usernamen und die Passwörter vergleichen. Jetzt ist für mich aber nicht zu erkennen, wie die Passwörter verschlüsselt werden. Ich hatte an MD5 gedacht, aber das scheint in diesem Fall nicht richtig zu sein. Weiss jemand von euch, wie verschlüsselt wird?

Vielen Dank im Voraus!

Pitti

doch is md5 mit noch bissi zeuch dazu ;)

schau in load.php  zeile 120+irgentwas
die func md5hmac steht irgentwo in den subs.php

gruß pitti
ps: hab mir sagen lassen, manche editoren (zb proton) besitzen suchfunktionen über mehrere datein ;)

Aragon4868

OK! Danke! Dann werde ich da wohl nicht weit kommen

Pitti


Aragon4868

Weil ich nicht weiss was die noch für ein eigenes Verfahren mit eingebracht haben und wenn es simpel ist, hätten sich die Progger das ja direkt klemmen können.

Ich dachte immer MD5 wäre für Passwörter sicher genug, da brauche man nicht noch mehr mit einbringen.

robo47


Pitti

hmm,

also erstens hab ich die betreffenden datein genannt, wo man nur mal reinschaun könnte.
zweitens wird md5 in reinform benutzt. nur die art wie das pw an die routine geht ist etwas speziel.
aus deiner farge hab ich geschlossen, daß du ahnung hast und nur den schubs brauchtest.

aber letztlich gibst du zu wenig infos rüber, was du machen möchtest.

lg pitti
ps: LogInOut.php könnte och ne gute stelle sein, um zu sehn wie smf die pw's vergleicht.
gebe aber zu, daß man ob des abartigen dateinamens nich gleich drauf kommt :D

Aragon4868

Quote from: robo47 on July 09, 2004, 01:27:24 PM
was willst du denn machen?
Erst einmal danke für eure Hilfe.

Ich möchte für einen Usernamen- und Passwortabgleich die DB des SMF benutzen. Das heisst, bevor ein User ein gewisses Script aufrufen darf, muss er sich erst eben authentifizieren. Dies soll wie geschrieben über die SMF DB gehen. Also quasi ein 2 Login nur nach meinen Bedürfnissen. Habe ich mich so vetständlich ausgedrückt :-\

Daniel D.

Könnte man doch auch über ein Board im Forum machen, wo dann halt nur registrierte User Zugriff hätten. Dort stellst Du dann das Script rein.

Sampaguita

Ich lasse bei die Leute über ein und die selbe DB sich einloggen für Forum und BackOffice. Einfach den Code von SMF in das Login kopiert - fertig. Derzeit überlege ich, wie ich die SESSION von Seite und Forum so abstimmen kann, daß das Login auf der gesamten Plattform läuft. Leider finde ich im Moment nicht die Zeit die SESSION von SMF mir mal genauer anzusehen, um sie entsprechend für meine Seite zu verwenden bzw. so zu modifizieren, daß sich die Leute das doppelte Login sparen können.

Im Prinzip ist es aber wirklich extrem einfach: Login-Prozedur in den eigenen Code kopieren (und die Datei natürlich entsprechend gut abdichten!).

Pitti

soweit ich mich erinnern kann, benutzt yabbse wie smf nur den cookie zur verifizierung.
schaut in die settings.php und fragt das ding in euren scripten auch ab.
besser noch ist, wenn man seine scripte ins forum incl aktion=aufruf integriert.

gruß pitti

Christian Land

Tja... würde SMF einfach MD5 nutzen und nicht diese total blödsinnige Variante mit dem Umweg, wäre die Interaktion mit so ziemlich alle anderen Scripts die so rumschwirren, wesentlich einfacher.........

Aber warum einfach wenns auch kompliziert geht....

Naja... der entscheidene Code fliegt in Sources/Load.php rum... um genauer zu sein in der Funktion "loadUserSettings"... dort werden die Cookies und die Session gecheckt, etc.

Gagus

Bei YabBB SE hat es mit dem rüberkopieren des ensprechenden codes gut geklappt, sollte hier auch kein problem sein, ich benutze für mein News-System die Forumsuser-DB :D

KIKA

Bei Yabb war es so, das das PW im Cokie 2x mit MD5 verschlüsselt war, und in der Datenbank nur 1x. Kann mir nicht vorstellen das das geändert wurde.
Also einfach das verschlüsselte PW aus der datenbank nochmal duch MD5 jagen, und dann mit dem PW aus dem Cookie vergleichen.

Gruß KIKA
Ich kann nix dafür
Nur weil du paranoid bist, heißt das noch lange nicht, das sie nicht hinter dir her sind...

Aragon4868

Hi all!

Ich mal wieder. Endlich habe ich mal Zeit gefunden mich an das besagte Thema zu begeben.

Wenn ich jetzt wie nachfolgend den Code bei mir im Script einbinde bekomme ich eine Fehlermeldung. Was läuft da schief?


...
// MD5 Encryption used for passwords.
function md5_hmac($data, $key)
{
$key = str_pad(strlen($key) <= 64 ? $key : pack('H*', md5($key)), 64, chr(0x00));
return md5(($key ^ str_repeat(chr(0x5c), 64)) . pack('H*', md5(($key ^ str_repeat(chr(0x36), 64)). $data)));
}

  $password = md5_hmac($password);
...

Fehlermeldung:
Warning: Missing argument 2 for md5_hmac() in C:\wampp2\htdocs\town\rlc_login.php on line 64

Vielen Dank für eure Hilfe

[Unknown]

$password = md5_hmac($password, strtolower($username));

-[Unknown]

Aragon4868

Vielen Dank für die Antwort. Nun ist die Fehlermeldung weg, aber die Passwortabfrage funktioniert immer noch nicht. Er gibt immer zurück, dass das PW falsch ist. Es ist aber definitiv richtig. Hier nochmal ein Auszug aus meinem Script. Vielleicht seht ihr ja den Fehler und  könnt mir helfen.


...
// MD5 Encryption used for passwords.
function md5_hmac($data, $key)
{
$key = str_pad(strlen($key) <= 64 ? $key : pack('H*', md5($key)), 64, chr(0x00));
return md5(($key ^ str_repeat(chr(0x5c), 64)) . pack('H*', md5(($key ^ str_repeat(chr(0x36), 64)). $data)));
}

  $password = md5_hmac($password, strtolower($username));
  $query = @mysql_query("SELECT realName, passwd FROM smf1_members WHERE realName = '".$_POST['username']."'") or die('Select ist
fehlgeschlagen!');
...


Vielen Dank für eure Hilfe!

robo47

hast du mal $password und $username ausgeben lassen? z.b. is irgendwo ne leerstelel davor oder am ende

Aragon4868

Vielen Dank!

Ich habe den Fehler gefunden. Habe mich vertippt gehabt. Durch das anzeigen der Variablen bin ich dem Fehler auf die Schliche gekommen. Password war richtig nur die Abfrage nicht.

Vielen Dank nochmals für eure Klasse Hilfe.

mediman

September 10, 2004, 02:49:04 AM #19 Last Edit: September 10, 2004, 08:22:32 AM by mediman
Quote from: Aragon4868 on July 09, 2004, 09:16:33 AM
Weil ich nicht weiss was die noch für ein eigenes Verfahren mit eingebracht haben und wenn es simpel ist, hätten sich die Progger das ja direkt klemmen können.

Ich dachte immer MD5 wäre für Passwörter sicher genug, da brauche man nicht noch mehr mit einbringen.
Reines md5 kann geknackt werden, auch wenn der Aufwand für das Hacken einer privaten Site vielleicht ein bissel groß ist.

Das sogenannte "eigene" Verfahren ist mehr als simpel. Hab grad mal reingekiekt.
Es handelt sich um ein simples "keyed" md5, nur etwa kompliziert gecodet um Scriptkiddies abzuschrecken. Ausserdem kenn ich kein Verfahren keyed bzw. random salted md5 zu cracken.

Du kannst, ich hab auch getutet, in den relvanten Files, die md5_hmac() gegen normales md5() austauschen. Das Risiko ist gering und du hat ein kompatibles md5 without alles!

mediman

p.s. alternativ koennte ich die Sourcen als zip hier postulieren
My Projects: http://ticker-oase.de 
Please do not PM me with support requests.

mediman

September 10, 2004, 03:38:58 AM #20 Last Edit: September 10, 2004, 06:27:09 AM by mediman
Für alle die, die z.b. weil sie fremde Programme benutzen und dort die Verschlüselung nicht ändern können, hier die Files, die SMF md5-kompatible machen.

Einfach die Files im Zip über die alten Sourcen kopieren...
Bereits registrierte User, die ja dann mit md5_hmac verschlüsselt sind, müssen per "Passwort vergessen" ein neues Passwort erzeugen lassen.

mediman
My Projects: http://ticker-oase.de 
Please do not PM me with support requests.

Christian Land

Quote from: mediman on September 10, 2004, 02:49:04 AM
Reines md5 kann decompiliert werden, auch wenn der Aufwand für das Hacken einer privaten Site vielleicht ein bissel groß ist.

"decompiliert" werden kann MD5 nicht ;D Es gibt keinen Weg um aus dem MD5-Hash die Ursprungszeichenkette zu berechnen. Was es gibt, sind allerdings Projekte die Datenbanken aufbauen, in denen für "gängige" Passwörter die MD5-Hashs abgelegt sind.

Das Problem ist, dass es ein theoretisches Papier über eine Möglichkeit gibt, Kollisionen zu berechnen. Sprich: einen Weg um relativ einfach eine Zeichenkette zu erzeugen die einen bestimmten MD5-Hash erzeugt. Eine chinesische Forschergruppe scheint da auch momentan sehr erfolgreich zu sein... allerdings wurde da noch nichts konkretes veröffentlicht, soweit ich weiss...

Problematisch wird die Sache, da auch SHA-1 (Secure Hash Algorithmus - ein anderer Algorithmus der Hash-Werte für beliebige Zeichenketten berechnet), welches eigentlich als sicherere Alternative zu MD5 gehandelt wurde, ebenfalls im Verdacht steht unsicher zu sein...

mediman

September 10, 2004, 04:47:11 AM #22 Last Edit: September 10, 2004, 11:01:15 AM by mediman
Zurückrechnen im echten Sinne von "decompilen" geht nicht, dass ist klar.
Aber eben über Tables lassen sich A-Za-z0-9 md5 Passwörter recht flink herausfinden.

Und leider gibt es immer noch so etwas: http://www.passcracking.com/Good_values_list.asp

mediman
My Projects: http://ticker-oase.de 
Please do not PM me with support requests.

Christian Land

Was ja das ist, was ich schon erwähnt hab ;D

Das Problem ist nur, das es wohl in absehbarer Zukunft keine Datenbank geben wird, die alle 2^128 mögliche Schlüssel (340282366920938463463374607431768211455 Stück, wenn ich mich nicht irre) beinhalten wird *g*

Viel schlimmer ist es, wenn ein Algorithmus gefunden wird, mit dem sich Kollisionen berechnen lassen.... also Zeichenketten die den gleichen MD5-Hash (oder SHA-1) erzeugen wie das "richtige" Passwort.. wenn man also zwar nicht sagen kann "Aha, der User nutzt 'blabla' als Passwort", aber man durchaus sagen kann: "Ich kenn zwar sein PW nicht, aber wenn ich 'schnuselmumpf' eingebe, komm ich trotzdem rein weil ich die gleiche MD5-Hash im System erzeuge"...

mediman

Dagegen ist ein keyed MD5 bzw. die hmac in Java gut...
Aber, wenn man vernünftigerweise ab und an das Passwort ändert, und nach Möglichkeit kein universelles Passwort für Alles und Jedes benutzt, ist man relativ sicher.

So interessante Websites haben wir alle nicht, dass man bis zu 300h wartet, um ein pobeliges privates Forum zu hacken.

mediman
My Projects: http://ticker-oase.de 
Please do not PM me with support requests.

andrea

Quote from: mediman on September 10, 2004, 06:02:27 AM
So interessante Websites haben wir alle nicht, dass man bis zu 300h wartet, um ein pobeliges privates Forum zu hacken.

Interessant hoffentlich schon. Aber zu stehlen gibt's bei den meisten wohl nix...

Andrea Hubacher
Ex Lead Support Specialist
www.simplemachines.org

Personal Signature:
Most recent work:
10 Aqua Themes for SMF



mediman

September 10, 2004, 06:26:20 AM #26 Last Edit: September 10, 2004, 06:34:48 AM by mediman
oda so...
wo ich die freche andrea seh...

in der ssi.php muss natürlich auch von md5_hmac umgestellt werden...
Danke für den Tipp Andrea  :-*

mediman

Warning: Wer SMF standalone einsetzt, sollte die md5_hmac nutzen. md5_hmac ist sicherer als md5!!!
My Projects: http://ticker-oase.de 
Please do not PM me with support requests.

Christian Land

Quote from: mediman on September 10, 2004, 06:26:20 AM
Warning: Wer SMF standalone einsetzt, sollte die md5_hmac nutzen. md5_hmac ist sicherer als md5!!!

Es spielt prinzipiell keine Rolle, was man einsetzt... theoretisch könnte man die Verschlüsselung auch ganz rausnehmen.... denn sobald man das Passwort auch nur in der verschlüsselten Form sehen kann, kann man den Account auch kapern... ;D *nur mal so anmerk*

mediman

Ja, gut. Wir alle kennen den großen Megagau bei vB, wo die [ img ] Funktion in IM´s dazu benutzt wurde die Cookies zu klauen.

Faktisch reicht ein codiertes Passwort, um sich einen Cookie selber zu backen.
md5 ist auch wirklich ausreichend.

P.S. Ich kenne einige professionelle Site, wo man die *.mdb runterladen kann, incl. aller Userdaten, und die sind alle noch online.

Trotz alledem, md5_hmac ist eine Spur sicherer als md5 alone...

just my 2.5 cents
My Projects: http://ticker-oase.de 
Please do not PM me with support requests.

Christian Land

Es verhindert zumindest, dass jemand der an Dein verschlüsseltes PW kommt, rausfinden kann was das PW ist... denn die meisten nutzen ja das gleiche Passwort an verschiedenen Stellen ;D Von daher.... ist es zumindest theoretisch sicherer *g*

mediman

Aba nur äussert theoretisch...

So, oder so... Das Posten der Sourcen mit standard md5, sollte eine Hilfe sein, um Software in SMF integrieren zu können, wo man weder ne Bridge anwenden kann, noch ein HMAC einfrimmeln kann.

mediman
My Projects: http://ticker-oase.de 
Please do not PM me with support requests.

roboter88


mediman

September 10, 2004, 12:03:32 PM #32 Last Edit: September 10, 2004, 12:46:34 PM by mediman
Grundsätzlich kannt du dein Passwort codieren mit was immer du willst. Beim Einloggen wird ja nur das kodierte PW erneut erzeugt und geguckt, ob es mit dem kodierten Teil in der DB identisch ist.
Die 1024bit RSA Verschlüsselung (PGP benutzt diese), ist schon länger im Verdacht gefährdet zu sein.

mediman
My Projects: http://ticker-oase.de 
Please do not PM me with support requests.

roboter88

Aber ist RSA nicht das sicherste was es atm gibt?
Bzw dauert halt 1 jahr :)

mediman

September 10, 2004, 12:19:06 PM #34 Last Edit: September 10, 2004, 12:48:45 PM by mediman
Nee, ist halt leider nicht sicher. Zwar so ziemlich das Sicherste was es gibt, aber nicht mehr ausreichend.

2003 brauchte man mit spezieller Hardware (TWIRL) 1 Jahr. Mittlerweile dürfte es deutlich schneller gehen.

Das Minimum an sicheren Keys liegt bei 2048 bit, machbar sind 4096, selbst auf Kleinstgeräten wie Handys, PDA´s und Co.

mediman

My Projects: http://ticker-oase.de 
Please do not PM me with support requests.

Christian Land

September 12, 2004, 03:19:23 PM #35 Last Edit: September 12, 2004, 03:22:05 PM by SnowCrash
Btw. es ist wohl nun möglich eine MD5-Kollision innerhalb einiger Stunden zu berechnen (also eine Zeichenkette die den gleichen Hash-Wert wie eine andere Zeichenkette erzeugt) - gleiches gilt für MD4, HAVAL-128 und RIPEMD-128. SHA-0 ist ebenfalls so gut wie geknackt (die Erweiterung des benutzten Verfahrens für SHA-1 ist ebenfalls schon im Gange)!

Wie gesagt: alleine die Tatsache, dass man eine Kollision finden kann, macht SMF/etc. nicht unsicherer als bisher! Vor Allem da das Verfahren auch nach wie vor nicht ermöglicht, das ursprüngliche Passwort herauszufinden! (weder beim normalen MD5 noch bei der Variante die SMF benutzt!)

Das Paper der Forscher die die Kollisionen gefunden haben, findet man übrigens hier: http://eprint.iacr.org/2004/199.pdf

mediman

My Projects: http://ticker-oase.de 
Please do not PM me with support requests.

Christian Land

Yup... aber was solls.... ich seh das generell erstmal weniger tragisch... denn so gaaaanz simpel und ohne Randbedingungen scheint das nicht zu sein... von daher würd ich sagen: teetrinken und abwarten ;D

mediman

Also ich erwarte auch nicht, dass jemand sich die Arbeit macht nur um private Sites zu hacken...

Fast jeder hat eine Anwendung laufen, die eine oder mehrere Backdoors mit sich bringt. Der eine nutzt einen Chat  und  denkt nicht an DHTML Entities und wundert sich wie plötzlich ein < bzw. > geht.

Der andere hat einen Server und 30 Root Kits am Laufen und freut ich über die doch so tolle Anwendung.

Bei mir sind die Brasilianer über imagemagick rein, einen Tag später war der Fix draussen, leider einen Tag zu spät.

mediman
My Projects: http://ticker-oase.de 
Please do not PM me with support requests.

Dudelsack

March 10, 2005, 09:17:28 AM #39 Last Edit: March 10, 2005, 03:52:04 PM by Dudelsack
Habe da eine eigene Seite erstellt, wo die User ein normales md5($blabla) Passwort haben...

Mediman hat da Files zur Verfügung gestellt (siehe hier) Und ich wollte wissen, ob diese aktuell (SMF 1.0.2) sind?

Ich frage weil ich folgende Fehlermeldung kriege:
QuoteFatal error: Call to undefined function: md5_hmac() in /home/www/web347/html/forums/Sources/LogInOut.php on line 177
, nachdem ich die Files ersetzt habe, und ich benutze v1.0.2
sorry for my bad english

mediman

Quote from: Dudelsack on March 10, 2005, 09:17:28 AM
Habe da eine eigene Seite erstellt, wo die User ein normales md5($blabla) Passwort haben...

Mediman hat da Files zur Verfügung gestellt (siehe hier) Und ich wollte wissen, ob diese aktuell (SMF 1.0.2) sind?

Ich frage weil ich folgende Fehlermeldung kriege:
QuoteFatal error: Call to undefined function: md5_hmac() in /home/www/web347/html/forums/Sources/LogInOut.php on line 177
, nachdem ich die Files ersetzt habe, und ich benutze v1.0.2

Sind nicht ganz aktuell, aber morgen sind sie es wieder ....
Sorry, hab grad ganz gut um die Ohren ...

Medi
My Projects: http://ticker-oase.de 
Please do not PM me with support requests.

Aragon4868

Hallo zusammen.
Wenn auch das Thema jetzt eine ganze Zeit ruhig war, würde ich es gerne nochmal aufgreifen.

Das gleiche Problem wie am Anfang, jetzt nur mit der Version 1.1 Beta 3.

Ich mache folgende Abfrage:

function md5_hmac($data, $key)
{
$key = str_pad(strlen($key) <= 64 ? $key : pack('H*', md5($key)), 64, chr(0x00));
return md5(($key ^ str_repeat(chr(0x5c), 64)) . pack('H*', md5(($key ^ str_repeat(chr(0x36), 64)). $data)));
}


$passwort1 = md5_hmac($passwort1, strtolower($login1));


Wende ich diese Funktion oder Abfrage auf die alte DB an, funktioniert es, nehme ich aber die neue Version, bekomme ich andere Werte. Hat sich bei der neuen Version was geändert, wenn ja was?

Vielen Dank im Voraus für eure Hilfe.

Advertisement: