Ist diese Passwortdatenbank sicher genug?

Registrierer

Erfahrenes Mitglied
Ich möchte wissen ob dieses Konstrukt als "Sicher" genug gelten kann, wenn ich dieses auf meinem Server gänzlich ohne Kekse und Sitzungen und über SSL betreibe.

Insbesondere interessiert mich, ob evtl. eine andere / bessere Verschlüsselungsmethode angebracht ist oder generelle Bedenken angebracht sind, wenn hier brisante Daten abgelegt werden sollen.
Dieser Auszug stellt nur den grundsätzlichen Ver- und Entschlüsselungsquelltext, so wie Eintrag und Abruf aus der DB dar.
  • Passwortver- und entschlüsselung per MYCRYPT
  • Kontrollschlüsselverschlüsselung per MD5
  • Datenübertragung per SSL
  • Verzeichnisschutz per htaccess
PHP:
<?
$schluessel = "geheimschluessel"; // muss bei Eintrag und Abruf per Input-Feld angegeben werden
$passwort   = "passwort"; // Passwort, welches verschlüsselt abgespeichert und abgerufen werden soll (ebenfalls per Input Feld)

// Eintragen
mysql_query("INSERT INTO tabelle (id,Passwort,phrase) 
VALUES('','".base64_encode(mcrypt_ecb (MCRYPT_3DES, $schluessel, base64_encode($passwort), MCRYPT_ENCRYPT))."','".md5($schluessel)."')");

// Abrufen / Anzeigen
$pw=mysql_query("SELECT * FROM tabelle WHERE phrase='".md5($schluessel)."'"); // Kontrollschlüssel wird abgefragt
while($row=mysql_fetch_array($pw)) {
  echo base64_decode(mcrypt_ecb (MCRYPT_3DES, $schluessel, base64_decode($row["Passwort"]), MCRYPT_DECRYPT));
}
?>
 
Moin,

das generelle Problem bei dieser Variante ist, dass du das Passwort überhaupt speicherst(ob nun verschlüsselt oder nicht, ist egal).

Wenn sich jemand Zugang zu dem Server verschafft, kann er:
A: sich die verschlüsselten Passwörter verschaffen
B: deine Verschlüsselungsmethode in Erfahrung bringen
C: die Passwörter entschlüsseln

daher: keine (verschlüsselten) Passwörter speichern, denn eine Verschlüsselung kann man entschlüsseln.

Stattdessen besser einen hash des Passwortes speichern(z.B. das von M-P erwähnte sha1)....soetwas kann man nicht entschlüsseln sondern nur erraten(bspw. über die genannten Rainbow-Tables oder Bruteforce).

Beantworte dir einfach die Frage: kannst du die Passwörter ermitteln? Wenn ja, dann ist es nicht sicher.
 
Wenn sich jemand Zugang zu dem Server verschafft, kann er:
OK, erste Hürde...
A: sich die verschlüsselten Passwörter verschaffen
B: deine Verschlüsselungsmethode in Erfahrung bringen
C: die Passwörter entschlüsseln
Zum entschlüsseln müßte man nun den Hash entschlüsseln bzw. das mit MYCRYPT verschlüsselte Passwort knacken. OK, zweite Hürde
Stattdessen besser einen hash des Passwortes speichern(z.B. das von M-P erwähnte sha1)....soetwas kann man nicht entschlüsseln sondern nur erraten(bspw. über die genannten Rainbow-Tables oder Bruteforce).
Da wäre jetzt die Frage wie sicher MYCRYPT ist wenn man den Schlüssel zum entschlüsseln NICHT hat.
Beantworte dir einfach die Frage: kannst du die Passwörter ermitteln? Wenn ja, dann ist es nicht sicher.
Also ich könnte es definitiv nicht.
 
Da wäre jetzt die Frage wie sicher MYCRYPT ist wenn man den Schlüssel zum entschlüsseln NICHT hat.
Hängt von dem verwendeten Algorhythmus ab. Du scheinst Triple-DES zu verwenden. Eine 192Bit-Synchron-Verschlüsselung. Wie bei vielen synchronen Verfahren ist die schwächste Stelle die Breite des Schlüssels und damit die Anzahl der Möglichkeiten. Hier eine kleine Anekdote zum Thema DES und Sicherheit: http://www.tropsoft.com/strongenc/des3.htm
 
Wir haben sogar zu diesem Thema ein Tutorial in unserem Repertoire.

Sicherheitsfokus: Passwörter sicher speichern

Optimalerweise solltest du dann noch [phpf]md5[/phpf] durch [phpf]sha1[/phpf] ersetzen.

Da du [phpf]mcrypt[/phpf] installiert hast, hast du evtl. sogar [phpf]mhash[/phpf] installiert und kannst dann sogar auf SHA512 zugreifen.
 
Na schön, ich hab eine Zeichenkette: FRSNVA+sft6V7/sv4b+ysg==

Und ich weiß, dass es mit base64 , mcrypt_ecb MCRYPT_3DES verschlüsselt worden ist.

Wie einfach ist es dies zu knacken?
 
Das Tutorial erklärt zwar sehr schön wie man Einwegverschlüsselung bewerkstelligen kann, verzichtet jedoch auf die Mehrwegverschlüsselung einzugehen.
Dank Eurer Tipps lege ich jetzt Schlüssel gesalzen per sha1 ab, das sollte reichen.

Aber die MYCRYPT Verschlüsselung der brisanten Daten ist für mich noch nicht hinreichend geklärt.
Habe ich dort noch Alternativen oder Möglichkeiten die Daten weiter zu verschleiern und dies wieder Rückgängig zu machen?
 
Zurück