Datenbank sichern

Lucaaa

Bekanntes Mitglied
Hallo!
Mein Programm soll Daten in einer Datenbank speichern. (Passwörter, Kreditkarteninfos...) (Nein, ich kann die Passwörter nicht als Hash speichern, da ich diese noch anzeigen muss).
(Die Datenbank ist lokal gespeichert (kein SQL server usw.)

Meine Frage ist nun, wie ich die Daten am besten Schütze?
- entweder die einzelnen Daten vor dem schreiben verschlüsseln und vor dem anzeigen entschlüsseln ?
- oder einfach die ganze Datei byte für byte entschlüsseln. (Obwohl das eher unpraktisch wäre, da ich die unverschlüsselte Datei dann zwischenspeichern müsste)
- oder gibt es da noch eine dritte Variante? (ich nutze sqllite, könnte das aber wenn notwendig ändern)

Ich würde das ganze gern mit einem Passwort machen, das beim Start meines Programms eingegeben werden muss. (Also kein gespeicherter Key). Wie speichere ich dieses Passwort am sichersten zwischen? einfach in einer Variable? oder irgendwie anders?

Danke schonmal für eure Hilfe 🙂
 
Ganz einfach. Das Passwort was am Anfang eingegeben werden muss wird natürlich nur als Hash gespeichert um den Login abzugleichen. Das darf niemals in wie auch immer gecrypteter Form gespeichert werden.
Dieses Passwort benutzt du nun als Secret key zum encrypten der anderen Passwörter mit welchem Algorytmus auch immer gerade der aktuell beste und sicherste ist.

Gruß

Claus
 
Dieses Passwort benutzt du nun als Secret key zum encrypten der anderen Passwörter
Das mit dem als Hash gespeichertem Passwort war mir schon klar 😀.
Die Frage ist nun wie ich die Datenbank damit sichere.
Soll ich einfach jeden Datensatz vor dem Schreiben ver- und vor dem anzeigen entschlüsseln, (So hab ich das bisher immer mit Textdateien gemacht) oder gibt es eine Möglichkeit die gesamte Datenbank zu sichern? insbesondere wenn es darum geht, das Passwort auch wieder zu ändern (Oder die Entsperrung durch Fingerabdruck zu ermöglichenk…)
 
Die ganze DB zu verschlüsseln macht doch überhaupt keine Sinn. Willst du vor jedem Query die ganze Datenbank entschlüsseln und danach wieder verschlüsseln? Vor allem weist du je nach DB ja gar nicht welche Dateien dazu gehören.

MySQL. MariaDB und andere bieten für sowas auch schon fertiges an

https://dev.mysql.com/doc/refman/5.7/en/innodb-tablespace-encryption.html

Da Must du gar nichts selber machen.

Noch einfacher ist es einfach eine verschlüsselte Festplatte als Speichermedium zu nehmen. Das bietet eigentlich auch jedes OS heute von Hause aus an. Aber darauf hast du keinen Einfluss wenn du Software für andere entwickelst.

Gruß

Claus
 
Noch einfacher ist es einfach eine verschlüsselte Festplatte als Speichermedium zu nehmen. Das bietet eigentlich auch jedes OS heute von Hause aus an. Aber darauf hast du keinen Einfluss wenn du Software für andere entwickelst.
Also werden nur die einzelnen Datensätze verschlüsselt gespeichert - Gut.
Verschlüsselte Festplatte ist in sofern nicht geeignet, da ich die Datenbank exportieren lassen können will. D.h. ein User kann reinschreiben, und ein anderer lesen (Oder derselbe (Backup)). Kann ich denn dann auch mit diesem SQL sicherungsdings das Passwort ändern, bzw. mit Fingerabdruck entschlüsseln?
 
Also werden nur die einzelnen Datensätze verschlüsselt gespeichert
Zumindest bei SEE werden Seiten verschlüsselt. Bei MySQL InnoDB Tablespace Encryption das ganze Tablespace, wobei ich auf die Schnelle nicht finden konnte, wie genau das zu verstehen ist. Hier bleiben die Logs im Gegensatz zu SEE unverschlüsselt.

Kann ich denn dann auch mit diesem SQL sicherungsdings das Passwort ändern, bzw. mit Fingerabdruck entschlüsseln?
Passwort ändern: ja. Bei SEE s. Abschnitt "Changing the encryption key", bei MySQL steht das im ersten Absatz: "The decrypted version of a tablespace key never changes, but the master encryption key can be changed as required. This action is referred to as master key rotation."

Fingerabdruck: das Problem ist die reproduzierbare Ermittlung der biometrischen Daten. Hier wird i.d.R. eine DB benötigt, die ihrerseits verschlüsselt sein muss...
 

Neue Themen


Zurück
Oben