Google Groups no longer supports new Usenet posts or subscriptions. Historical content remains viewable.
Dismiss

Daten in DB verschlüsseln

5 views
Skip to first unread message

Daniel Walz

unread,
Mar 29, 2019, 1:00:02 PM3/29/19
to
Hallo,

ich habe für einen Verein die Betreuung der Website übernommen.

Da gibt es u.a. eine Datenbank mit den Mitgliedern, die sich einloggen
können. Wie ich festgestellt habe, sind die Passwörter unverschlüsselt
in der DB gespeichert. Meine erste Idee war ein PHP-Script, wo ich die
Passwörter auslese, mittels password_hash verschlüssele und mittels
Update wieder hochlade (und dann natürlich die entsprechenden Seiten
ändere, wo das PW abgefragt wird).

Jetzt habe ich aber gesehen, dass MySQL selber auch
Encryption-Funktionen zur Verfügung stellt:
https://dev.mysql.com/doc/refman/5.5/en/encryption-functions.html

Somit müsste es ja möglich sein, die PW direkt in der DB mittels MySQL
zu verschlüsseln, ohne sie herunterzuladen. Meine zwei Fragen dazu:

1. Welche der vielen Methoden ist zu empfehlen?
2. Wie würde eine Abfrage aussehen, mit der ich auf einen Rutsch alle PW
in der Datenbank verschlüssele? Geht das mit UPDATE, den Wert auszulesen
und gleich wieder verschlüselt anzulegen? Ich habe trotz mehrfacher
Versuche keine funktionierende Abfrage zustande gebracht.

Danke für Eure Hinweise!

Daniel



Claus Reibenstein

unread,
Mar 29, 2019, 2:19:17 PM3/29/19
to
Daniel Walz schrieb am 29.03.2019 um 18:00:

> 2. Wie würde eine Abfrage aussehen, mit der ich auf einen Rutsch alle PW
> in der Datenbank verschlüssele? Geht das mit UPDATE, den Wert auszulesen
> und gleich wieder verschlüselt anzulegen?

Ja, das geht.

Ich würde aber für die verschlüsselten Passwörter erst einmal eine neue
Spalte anlegen (nennen wir sie mal encpw). Dann können die Mitglieder
ganz normal weiterarbeiten, und Du bist auf der sicheren Seite, falls
beim Verschlüsseln irgendetwas schiefgeht.

Dann kommt die Verschlüsselung. Nehmen wir an, die Tabelle heißt pwtab
und die Passwortspalte pw. Nehmen wir ferner an, Du möchtest SHA-512 als
Verschlüsselung nehmen. Dann sollte Folgendes den gewünschten Erfolg
bringen:

UPDATE pwtab SET encpw = SHA2(pw, 512);

Gruß
Claus

Axel Schwenke

unread,
Mar 29, 2019, 4:24:38 PM3/29/19
to
On 29.03.2019 18:00, Daniel Walz wrote:
> ich habe für einen Verein die Betreuung der Website übernommen.
> Da gibt es u.a. eine Datenbank mit den Mitgliedern, die sich einloggen
> können. Wie ich festgestellt habe, sind die Passwörter unverschlüsselt
> in der DB gespeichert.

Das ist eine ziemlich blöde Idee. Passwörter sollte man _niemals_ im
Klartext speichern.

Meine erste Idee war ein PHP-Script, wo ich die
> Passwörter auslese, mittels password_hash verschlüssele

hashen != verschlüsseln

> Jetzt habe ich aber gesehen, dass MySQL selber auch
> Encryption-Funktionen zur Verfügung stellt
> Somit müsste es ja möglich sein, die PW direkt in der DB mittels MySQL
> zu verschlüsseln, ohne sie herunterzuladen. Meine zwei Fragen dazu:
>
> 1. Welche der vielen Methoden ist zu empfehlen?

Passworte nicht verschlüsseln, sondern hashen. Am besten mit einem /salted/
Hash. Wenn dir der Unterschied nicht klar ist, dann lies das _jetzt_ nach!

https://de.wikipedia.org/wiki/Kryptographische_Hashfunktion
https://de.wikipedia.org/wiki/Salt_(Kryptologie)

> 2. Wie würde eine Abfrage aussehen, mit der ich auf einen Rutsch alle PW
> in der Datenbank verschlüssele? Geht das mit UPDATE

Ja. Wobei es sinnvoll sein kann, eine Zeit lang Hashes und Klartext-
Passwörter in der Datenbank zu halten. So lange bis klar ist, daß es mit den
Hashes funktioniert.

Wirklich gut macht man das so, daß der Server für ein Login eine Zufallszahl
(challenge) mitschickt. Der Browser hashed das eingegebene Passwort. Und
dann bildet er einen zweiten Hash (response) aus dem Zufallswert und dem
Hash. Den schickt er zum Server. Da der Server sowohl den Password-Hash als
auch die Zufallszahl kennt, kann er die Operation ebenfalls ausführen und
vergleichen, ob der Browser das Richtige geschickt hat. Ein Angreifer erhält
jedoch keine verwertbare Information.

Es gibt fertige Frameworks dafür. Stichwort: Challenge–response authentication

Daniel Walz

unread,
Apr 1, 2019, 7:34:10 AM4/1/19
to
Claus Reibenstein schrieb am 29.03.2019 um 19:19:
> Daniel Walz schrieb am 29.03.2019 um 18:00:
>
>> 2. Wie würde eine Abfrage aussehen, mit der ich auf einen Rutsch alle PW
>> in der Datenbank verschlüssele? Geht das mit UPDATE, den Wert auszulesen
>> und gleich wieder verschlüselt anzulegen?
>
> Ja, das geht.
>
> Ich würde aber für die verschlüsselten Passwörter erst einmal eine neue
> Spalte anlegen (nennen wir sie mal encpw). Dann können die Mitglieder
> ganz normal weiterarbeiten, und Du bist auf der sicheren Seite, falls
> beim Verschlüsseln irgendetwas schiefgeht.

Das war der Punkt, wo ich gehangen bin, weil ich es in die gleiche
Spalte schreiben wollte. Die neue Spalte macht es einfacher und sicherer.

Danke!

Daniel

Daniel Walz

unread,
Apr 1, 2019, 7:35:53 AM4/1/19
to
Axel Schwenke schrieb am 29.03.2019 um 21:24:
> Passworte nicht verschlüsseln, sondern hashen. Am besten mit einem /salted/
> Hash. Wenn dir der Unterschied nicht klar ist, dann lies das _jetzt_ nach!
>
> https://de.wikipedia.org/wiki/Kryptographische_Hashfunktion
> https://de.wikipedia.org/wiki/Salt_(Kryptologie)
>
>> 2. Wie würde eine Abfrage aussehen, mit der ich auf einen Rutsch alle PW
>> in der Datenbank verschlüssele? Geht das mit UPDATE
>
> Ja. Wobei es sinnvoll sein kann, eine Zeit lang Hashes und Klartext-
> Passwörter in der Datenbank zu halten. So lange bis klar ist, daß es mit den
> Hashes funktioniert.
>
> Wirklich gut macht man das so, daß der Server für ein Login eine Zufallszahl
> (challenge) mitschickt. Der Browser hashed das eingegebene Passwort. Und
> dann bildet er einen zweiten Hash (response) aus dem Zufallswert und dem
> Hash. Den schickt er zum Server. Da der Server sowohl den Password-Hash als
> auch die Zufallszahl kennt, kann er die Operation ebenfalls ausführen und
> vergleichen, ob der Browser das Richtige geschickt hat. Ein Angreifer erhält
> jedoch keine verwertbare Information.
>
> Es gibt fertige Frameworks dafür. Stichwort: Challenge–response authentication

Danke für die ausführliche Antwort! Ich werde im ersten Schritt mal eine
Verschlüsselung machen, im zweiten Schritt mich mit Hashes beschäftigen.

Gruß
Daniel


Peter J. Holzer

unread,
Apr 8, 2019, 3:12:00 PM4/8/19
to
On 2019-03-29 17:00, Daniel Walz <danie...@gmx.de> wrote:
> ich habe für einen Verein die Betreuung der Website übernommen.
>
> Da gibt es u.a. eine Datenbank mit den Mitgliedern, die sich einloggen
> können. Wie ich festgestellt habe, sind die Passwörter unverschlüsselt
> in der DB gespeichert. Meine erste Idee war ein PHP-Script, wo ich die
> Passwörter auslese, mittels password_hash verschlüssele und mittels
> Update wieder hochlade (und dann natürlich die entsprechenden Seiten
> ändere, wo das PW abgefragt wird).
>
> Jetzt habe ich aber gesehen, dass MySQL selber auch
> Encryption-Funktionen zur Verfügung stellt:
> https://dev.mysql.com/doc/refman/5.5/en/encryption-functions.html
>
> Somit müsste es ja möglich sein, die PW direkt in der DB mittels MySQL
> zu verschlüsseln, ohne sie herunterzuladen. Meine zwei Fragen dazu:
>
> 1. Welche der vielen Methoden ist zu empfehlen?

Keine.

Ich kann mich nur Axels Ansicht anschließen: Von Passwörtern speichert
man einen salted Hash. Nicht den Klartext, nicht das verschlüsselte
Passwort, und nicht einen einfachen Hash.

Da MySQL out of the box keine vernünftigen Passwort-Hash-Algorithmus
bietet, verwendest Du besser, was Dir PHP bietet, sprich password_hash.
Das schaut recht brauchbar aus.

hp


--
_ | Peter J. Holzer | Fluch der elektronischen Textverarbeitung:
|_|_) | | Man feilt solange an seinen Text um, bis
| | | h...@hjp.at | die Satzbestandteile des Satzes nicht mehr
__/ | http://www.hjp.at/ | zusammenpaßt. -- Ralph Babel

R. Schneider

unread,
Jul 3, 2019, 2:30:30 AM7/3/19
to
Am Mon, 08 Apr 2019 21:11:59 +0200 schrieb Peter J. Holzer:
>
> Ich kann mich nur Axels Ansicht anschließen: Von Passwörtern speichert
> man einen salted Hash. Nicht den Klartext, nicht das verschlüsselte
> Passwort, und nicht einen einfachen Hash.
>
> hp

nicht das verschlüsselte
> Passwort,

Das verstehe ich nicht. Wärest Du so nett und erklärst mir das ?
Warum das auch nicht ? Dafür verschlüsselt man doch Dinge.

Gruß
Ralf


--
http://[2a02:908:f761:8e80:cd52:dcf0:9991:b727]:8080/Profil

Claus Reibenstein

unread,
Jul 3, 2019, 5:39:10 AM7/3/19
to
R. Schneider schrieb am 03.07.2019 um 08:30:

> Am Mon, 08 Apr 2019 21:11:59 +0200 schrieb Peter J. Holzer:
>
>> Ich kann mich nur Axels Ansicht anschließen: Von Passwörtern speichert
>> man einen salted Hash. Nicht den Klartext, nicht das verschlüsselte
>> Passwort, und nicht einen einfachen Hash.
>>
>> hp
>
> nicht das verschlüsselte
>> Passwort,

Du hast einen merkwürdigen Zitierstil ...

> Das verstehe ich nicht. Wärest Du so nett und erklärst mir das ?
> Warum das auch nicht ? Dafür verschlüsselt man doch Dinge.

... und du plenkst.

Man verschlüsselt Dinge, damit man sie wieder entschlüsseln kann.
Passwörter werden jedoch nicht entschlüsselt. Statt dessen wird bei der
Eingabe eines Passworts ein Hash erzeugt, der mit dem hinterlegten Hash
verglichen wird.

Gruß
Claus

R. Schneider

unread,
Jul 4, 2019, 2:28:18 AM7/4/19
to
Danke. Das verstehe sogar ich.

Wie sollte ich denn eine Tapete von Zeilen zitieren, damit man weiß, was
ich meine ?

Ich plenke, weil ich es so besser lesen kann und es nichts kostet. Ich
hasse auch Proportionalschrift, die die Buchstaben zusammengedrückt
darstellt, so dass 3 kleine L so breit sind wie ein kleines M.

Alexander Goetzenstein

unread,
Jul 4, 2019, 3:54:58 AM7/4/19
to
Hallo,

Am 04.07.19 um 08:28 schrieb R. Schneider:
> Wie sollte ich denn eine Tapete von Zeilen zitieren, damit man weiß, was
> ich meine ?
>
> Ich plenke, weil ich es so besser lesen kann und es nichts kostet.

da Du selbst Schwierigkeiten beim Zitieren ansprichst:
Plenken erschwert den meisten anderen Lesern die flüssige Lektüre (bspw.
bleibe ich immer wieder an geplenkten Stellen hängen), und es erschwert
das Zitat mit Umbruch, weil es immer wieder vorkommt, dass ein
Satzzeichen auf die Folgezeile umgebrochen wird. Du bist mit Deiner
Vorliebe also wohl ziemlich alleine und frönst ihr auf Kosten der
Anderen, die es lesen und wohl auch beantworten sollen.
Bewerte es selbst.

Was den Umbruch langer Zeilen angeht: Thunderbird (den ich nutze) hat
eine Funktion "neu umbrechen" <Strg>+R für den Fall, dass der
automatische Zeilenumbruch fehlschlägt -vielleicht findet sich diese
oder eine ähnliche Funktion auch in anderen Mailprogrammen.


--
Gruß
Alex

Stefan Mayer

unread,
Jul 4, 2019, 4:00:26 AM7/4/19
to
R. Schneider am Donnerstag, 4. Juli 2019 (08:28):

> Ich plenke, weil ich es so besser lesen kann und es nichts kostet.

Es kostet Dich Deine Reputation.

> Ich hasse auch Proportionalschrift, die die Buchstaben zusammengedrückt
> darstellt, so dass 3 kleine L so breit sind wie ein kleines M.

Also bei mir sind drei kleine "l" nicht so breit wie ein kleines "m". Genau
genommen ist ein kleines "m" genau ein Drittel von drei kleinen "l".

lll
m

Was hindert Dich daran a.) eine Schriftart mit fester Laufweite zu wählen und
b.) HTML ausschalten (falls aktiviert)? Dein Problem wären gelöst und der Pfad
aus der "funzt net !!!"-Grube stünde Dir wieder offen.

Schönen Tag noch.
ciao, Stefan

R. Schneider

unread,
Jul 4, 2019, 8:38:47 AM7/4/19
to
Du meinst, dass ich künstliche Zeilenumbrüche einfüge, passt nicht ins
Bild ? Das läßt sich vermeiden.

R. Schneider

unread,
Jul 4, 2019, 8:45:46 AM7/4/19
to
Am Thu, 04 Jul 2019 10:00:25 +0200 schrieb Stefan Mayer:

> R. Schneider am Donnerstag, 4. Juli 2019 (08:28):
>
>> Ich plenke, weil ich es so besser lesen kann und es nichts kostet.
>
> Es kostet Dich Deine Reputation.
>
>> Ich hasse auch Proportionalschrift, die die Buchstaben zusammengedrückt
>> darstellt, so dass 3 kleine L so breit sind wie ein kleines M.
>
> Also bei mir sind drei kleine "l" nicht so breit wie ein kleines "m".
> Genau genommen ist ein kleines "m" genau ein Drittel von drei kleinen
> "l".
>
> lll m
Ja, jetzt sehe ich es, aber das betrifft nicht diese Gruppe, sondern war
generell gemeint. Oft kann ich in Schreiben, die mich erreichen keine
gedruckte Schrift mehr ändern.
>
> Was hindert Dich daran a.) eine Schriftart mit fester Laufweite zu
> wählen und b.) HTML ausschalten (falls aktiviert)? Dein Problem wären
Nicht "Pobleme" ?
> gelöst und der Pfad aus der "funzt net !!!"-Grube stünde Dir wieder
> offen.
Den Satz kapiere ich nicht.
>
> Schönen Tag noch.
> ciao, Stefan
Gut. Lassen wir es dabei.

Alexander Goetzenstein

unread,
Jul 4, 2019, 9:25:11 AM7/4/19
to
Hallo,

Am 04.07.19 um 14:38 schrieb R. Schneider:
> Du meinst, dass ich künstliche Zeilenumbrüche einfüge, passt nicht ins
> Bild ?

Du scheinst mich gründlich missverstanden zu haben. Es ist mir zu
anstrengend, Dir das haarklein aufzudröseln, und es dürfte hier auch
sonst niemanden mehr interessieren. Entweder verstehst du es doch noch,
oder eben nicht -Deine Sache.


--
Gruß
Alex

R. Schneider

unread,
Jul 5, 2019, 3:49:38 AM7/5/19
to
Eine solche Plattform dient der Kommunikation. Wenn Du das nicht willst,
ist es mir recht. Wenn Du schon erkennst, dass ich Dich "gründlich
missverstanden" habe, wäre es sinnvoll dieses aufzuklären, da diese
Feststellung alleine sinnlos ist.

R. Schneider

unread,
Jul 5, 2019, 3:55:28 AM7/5/19
to
Am Thu, 04 Jul 2019 15:17:12 -0400 schrieb Andreas Kohlbach:
> Du bist zum einem beim Plenken nicht konsequent. Du könntest vor den
> Kommas und dem Punkt auch ein Leerzeichen lassen. ;-)
Das wäre auch für mich zu viel.
>
> Zum anderen sollte man bedenken, dass man für die anderen schreibt. Die
> überwältigende Mehrzahl mag kein Plenken, weil das den Lesefluss stört .
>
> Besonders unschön, wenn wegen des Plenkens das Satzzeichen allein in die
> nächste Zeile rutscht, wie das beim Beantworten dieses Artikels im
> Paragraf über diesem passiert sollte, bei dem ich absichtlich ein
> Leerzeichen vor dem Punkt einfügte.
Jetzt habe ich mehr verstanden. Ich bemühe mich allerdings meine
Satzzeichen korrekt zu setzen und so das Verständnis durch Kenntlichmachung
der Nebensätze zu erhöhen. Dies ist ein weitaus größeres Ärgernis, wenn es
unterbleibt, weil es auch das Verstehen erschwert.
0 new messages