Datenbankeinträge hashen und wieder enthashen

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

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: 17710
Registriert: Sonntag 21. Oktober 2012, 17:20

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

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

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

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

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

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/ - ausgestorbener Support für HL2-Server
Col.Mars
User
Beiträge: 14
Registriert: Mittwoch 7. März 2018, 10:26

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: 13003
Registriert: Samstag 2. Juni 2018, 10:21
Wohnort: 127.0.0.1
Kontaktdaten:

@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?
“Most people find the concept of programming obvious, but the doing impossible.” — Alan J. Perlis
Benutzeravatar
DeaD_EyE
User
Beiträge: 1012
Registriert: Sonntag 19. September 2010, 13:45
Wohnort: Hagen
Kontaktdaten:

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/ - ausgestorbener Support für HL2-Server
DasIch
User
Beiträge: 2718
Registriert: Montag 19. Mai 2008, 04:21
Wohnort: Berlin

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.
Beowolf
User
Beiträge: 1
Registriert: Donnerstag 7. März 2019, 18:03

Col.Mars hat geschrieben: 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 ?
Hallo,
hast Du das Programm noch im Einsatz?

Grüße
Manfred
Antworten