Datenbankeinträge hashen und wieder enthashen

Installation und Anwendung von Datenbankschnittstellen wie SQLite, PostgreSQL, MySQL, der DB-API 2.0 und sonstigen Datenbanksystemen.
Antworten
Col.Mars
User
Beiträge: 14
Registriert: Mittwoch 7. März 2018, 10:26

Samstag 19. Mai 2018, 21:28

Hallo,
Ich habe ein Programm geschrieben, welches bei erkennen eines RFID Chips die dazugehörigen Personenbezogenen Daten anzeigt :D , da es sich jedoch um Personenbezogene Daten handelt müssen diese ja verschlüsselt werden. :|
Gibt es eine Möglichkeit, wie ich die Daten verschlüsselt speichern kann und dennoch später im Klartext wieder ausgeben kann ?
Sirius3
User
Beiträge: 8279
Registriert: Sonntag 21. Oktober 2012, 17:20

Samstag 19. Mai 2018, 21:48

„verschlüsseln“ impliziert, dass man die Daten mit dem richtigen Schlüssel auch wieder entschlüsseln kann.
__deets__
User
Beiträge: 3317
Registriert: Mittwoch 14. Oktober 2015, 14:29

Samstag 19. Mai 2018, 21:55

Enthashen geht nicht. Wenn das möglich wäre, könnte man aus einer md5 Summe ein Terabyte-Archiv rekonstruieren. Was toll wäre. Ist aber nicht.

Wenn du diese Daten speicherst mit dem Ziel gesetzlichen Vorgaben zur Datensparsamkeit zu genügen, darfst du sie nicht wieder entschlüsseln können. Wenn du das doch brauchst, ist es im Grunde egal ob die verschlüsselt sind oder nicht - du erhebst sie. Dann musst du entsprechend darauf hinweisen.
Col.Mars
User
Beiträge: 14
Registriert: Mittwoch 7. März 2018, 10:26

Samstag 26. Mai 2018, 16:29

Also brauche ich die Daten nicht verschlüsseln ?
Benutzeravatar
kbr
User
Beiträge: 918
Registriert: Mittwoch 15. Oktober 2008, 09:27

Samstag 26. Mai 2018, 16:44

Wenn personenbezogene Daten auf einem öffentlichen Weg übertragen werden, dann musst Du sie verschlüsselt übertragen.
Sirius3
User
Beiträge: 8279
Registriert: Sonntag 21. Oktober 2012, 17:20

Samstag 26. Mai 2018, 16:49

Am besten speichert man sie auch verschlüsselt. Was hast Du denn genau vor?
Benutzeravatar
DeaD_EyE
User
Beiträge: 207
Registriert: Sonntag 19. September 2010, 13:45
Wohnort: Hagen
Kontaktdaten:

Sonntag 27. Mai 2018, 14:47

Man könnte asymmetrische Verschlüsselung nutzen. GPG ließe sich z.B. dafür missbrauchen.
Die Anwendung hat den privaten Schlüssel zum entschlüsseln. Der öffentliche Schlüssel wird zum verschlüsseln der ID bzw. für die anderen Daten genommen.

Ansonsten eine symmetrische Verschlüsselung einsetzen. Wenn ich mich richtig erinnere ist GPG eine Kombination aus asymmetrischer + symmetrischer Verschlüsselung.
Bei einer asymmetrischen Verschlüsselung ist nur begrenzt Platz und deswegen speichert GPG dort den Schlüssel für die symmetrische Verschlüsselung.

Ich hoffe ich hab mich jetzt nicht zu umständlich ausgedrückt.
sourceserver.info - sourceserver.info/wiki/ - Support für HL2-Server
Col.Mars
User
Beiträge: 14
Registriert: Mittwoch 7. März 2018, 10:26

Dienstag 5. Juni 2018, 10:17

Die Datenübertragung findet nur im LAN zwischen einem Raspberry und einem Desktop statt. Ein Potentieller Hacker müsste sich also im LAN befinden (also das WPA2 Passwort knacken/kennen) und die MySQL Zugangsdaten kennen/knacken, bzw. das Speichermedium entwenden um an die Daten zu kommen.

@DeaD_Eye Kennst du da evtl ein Modul welches hilfreich wäre ? (Und ich glaube du meinst PGP und nicht GPG ?)
Benutzeravatar
__blackjack__
User
Beiträge: 1091
Registriert: Samstag 2. Juni 2018, 10:21

Dienstag 5. Juni 2018, 10:42

@Col.Mars: Wenn jemand das Speichermedium entwenden kann und dort dann die personenbezogenen Daten einfach so unverschlüsselt auslesen kann, dann sind die nicht ausreichend geschützt. Du musst entweder die Datenbank verschlüsseln wenn das DBMS so etwas bietet, oder den Datenträger auf dem das DBMS die Daten ablegt. Der Schlüssel dafür darf dann natürlich nicht auf dem selben Speichermedium gespeichert sein, denn dann kann man ja alles problemlos entschlüsseln und der Schutz ist keiner.

Was spricht gegen GPG?
“Capitalism is the astounding belief that the most wickedest of men will do the most wickedest of things for the greatest good of everyone.” – John Maynard Keynes
Benutzeravatar
DeaD_EyE
User
Beiträge: 207
Registriert: Sonntag 19. September 2010, 13:45
Wohnort: Hagen
Kontaktdaten:

Dienstag 5. Juni 2018, 10:54

Ein Modul wäre z.B. dieses: https://pythonhosted.org/gnupg/gnupg.html
AFIK wird gpg vom Betriebssystem genutzt. Früher gab es auch öfters Probleme aufgrund der unterschiedlichen gpg-Versionen.
Die Schlüsselpaare kannst du entweder mit dem Modul direkt erzeugen oder
du nutzt eine GUI, um die GPG-Keys anzulegen. Das Modul kann auf diese Schlüssel zugreifen.

Du könntest aber auch außerhalb von Python in der Shell Backups z.B. mit gpg direkt verschlüsseln, ohne das jetzt in Python implementieren zu müssen.
Was dann noch halt fehlen würde, wäre eine Verschlüsselung der aktiv genutzten Datenbank.

Ich behaupte mal einfach, dass in der Praxis so gut wie niemand eine Datenbankverschlüsselung einsetzt.
Egal wo du hinschaust, alle Datenbanken liegen offen unverschlüsselt auf dem Server.

Technisch ist das Problem bereits gelöst: https://mariadb.com/kb/en/library/data- ... ncryption/
Du kannst die Funktionalität des Servers nutzen, anstatt selbst an einer eigenen Lösung zu basteln.
sourceserver.info - sourceserver.info/wiki/ - Support für HL2-Server
DasIch
User
Beiträge: 2462
Registriert: Montag 19. Mai 2008, 04:21
Wohnort: Berlin

Dienstag 5. Juni 2018, 17:30

Du kannst Festplattenverschlüsselung auf Betriebsystem Ebene Regeln, damit sind die Daten "at-rest" verschlüsselt, für alles andere verbinde dich zur Datenbank mit TLS, damit sind die auch "in-transit" verschlüsselt.
Antworten