Delphi-PRAXiS
Seite 1 von 2  1 2   

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Datenbanken (https://www.delphipraxis.net/15-datenbanken/)
-   -   Delphi Verschlüsselung mit Masterkey (https://www.delphipraxis.net/206951-verschluesselung-mit-masterkey.html)

NoGAD 11. Feb 2021 16:09

Datenbank: ABS_Database • Version: 7.92 • Zugriff über: ABSTable

Verschlüsselung mit Masterkey
 
Hallo.

Die benutzte Datenbank ist für meine folgende Frage egal, es geht mir um ein Grundprinzip und ob das tauglich ist. Die hier benutzen Werte sind Beispiele, wenn ich z.B. 1000 für den Grundwert der Anzahl der UUID schreibe, sind dann später vielleicht auch 5000 oder 10.000. Wie geschrieben: Beispiele.


Folgende Idee hatte ich letzte Nacht, als ich nicht schlafen konnte:


Für neue Projekte würde ich gerne Datenbanken verschlüsseln und zwar so, dass ich das Passwort nicht im Code hinterlege, sondern bei der Installation oder dem erstem Aufruf des Programmes einen Schlüssel generiere.

Dies würde theoretisch über UUID ablaufen, indem ich eine Datei mit 1000 Stück davon fülle. Im Anschluss wird diese Datei mit einem Passwort gezippt. Es bleibt vielleicht eine Länge von 2/3 übrig. Nun würde diese gepackte Datei als Schlüssel herhalten.

In der Anwendung selbst bestimme ich nun 100 Offsets, durch welche einzelne Stellen aus der Datei herausgezogen werden. Somit baue ich mir einen Schlüssel zusammen und könnte dennoch im Notfall auf die Datenbank, welche mit diesen Offsets verschlüsselt sind, als Masterkey zugreifen.

Wichtig ist natürlich, dass diese gezippte Datei immer bestehen bleibt, wenn sie denn einmal benutzt worden wäre.


Was haltet ihr von dieser Idee?

LG Mathias

Andreas13 11. Feb 2021 17:49

AW: Verschlüsselung mit Masterkey
 
Hallo Mathias,
Du könntest den MasterKey auch über einen Fingerprint der Hard- und/oder Software erstellen: S. dazu z.B. https://www.delphipraxis.net/206768-...alisieren.html. Es wäre vielleicht einfacher.
Gruß, Andreas

NoGAD 11. Feb 2021 17:58

AW: Verschlüsselung mit Masterkey
 
Zitat:

Zitat von Andreas13 (Beitrag 1482787)
Hallo Mathias,
Du könntest den MasterKey auch über einen Fingerprint der Hard- und/oder Software erstellen: S. dazu z.B. https://www.delphipraxis.net/206768-...alisieren.html. Es wäre vielleicht einfacher.
Gruß, Andreas



Hallo Andreas,

hatte ich auch überlegt. Aber dann ist die Datenbank nicht mehr auf ein anderes System portierbar.

Lemmy 12. Feb 2021 06:27

AW: Verschlüsselung mit Masterkey
 
Hallo,

ich versteh nicht, was die Schlüsseldatei bringen soll.

Wenn die als Passwortersatz herhalten soll, dann muss die letztlich vom eigentlichen System (Programm) getrennt aufbewahrt sein. Sonst kann jeder der Zugriff auf den Rechner hat und das Programm starten kann, auch die Daten entschlüsseln.

Grüße

Andreas13 12. Feb 2021 08:04

AW: Verschlüsselung mit Masterkey
 
Hallo Mathias,
auch ich verstehe nicht genau, was Dein konkretes Ziel ist. Möchtest Du mit dem MasterKey erreichen,
a): daß nur die berechtigten User auf die DB zugreifen können, oder
b): daß nur auf der gegebenen Hardware auf die DB zugegriffen werden kann, oder
c): etwas darüber hinaus.
Gruß, Andreas
[edit]:
d): oder, daß nur mit Deinem Programm & gegebener Version auf die DB zugegriffen werden kann

generic 12. Feb 2021 12:19

AW: Verschlüsselung mit Masterkey
 
Ich hab nicht verstanden, was du erreichen willst.

Ich habe nur die bedenken, dass du etwas bauen willst, was sich unfreundlich für Kunden auswirken kann.
Was ist wenn der Rechner kaputt geht und der Kunde sein Backup auf einen neuen System einspielt. Verliert er dann die Daten?

Mavarik 12. Feb 2021 16:33

AW: Verschlüsselung mit Masterkey
 
OK, Du erzeugst 1000 UUID's also ich gehe davon aus Du meinst GUID's den UUID's sind eher so iPhone Geräte ID's…
Egal..

Von diesen 1000 die Du gespeichert hast, nimmt die Anwendung 100. OK

Und dann?

Willst Du jeden Datensatz mit einem anderen Key aus den 100 verschlüsseln? Warum dann 1000 erzeugen?
Jeder Datensatz müsste dann den Offset speichern...
Dann kannst Du auch einen Random String erzeugen den Du speicherst und diesen (Salt) mit einem Schlüssel verbinden.

OK... Ich frage dann lieber auch noch mal, was willst Du damit erreichen?

Mavarik

NoGAD 12. Feb 2021 17:09

AW: Verschlüsselung mit Masterkey
 
Liste der Anhänge anzeigen (Anzahl: 2)
Ich habe einmal ein Beispiel programmiert.

Vielleicht könnt ihr dazu noch Kommentare abgeben, ob das praktikabel ist.

Code:
Ziel der Übung war, einen Algorithmus zu erstellen, mit welchem ein Schlüssel unabhängig von eingesetzter Hardeware erstellt werden kann.

Im Schritt 1 wird eine Anzahl x an UUID erzeugt und diese in einer Textdatei gespeichert.
Im Schritt 2 wird die Textdatei verschlüsselt. Hier wäre es noch möglich, ein festes Passwort zu benutzen, ist aber nicht nötig.
Im Schritt 3 werden zufällig eine Anzahl von Zahlen erstellt. Diese werden im folgenden Schritt als Offsets für die Positionen in der gezippten Datei herangezogen.
Im Schritt 4 wird die gezippte Datei als String gelesen und über die Offsets ein Zahlenwert des jeweiligen Zeichens erstellt.
Diese Zahlenwerte werden zu einer großen Kette vereint, welches am Ende den Code abbildet.

Für die Nutzung des Codes sind zwei Dinge wichtig.

1. Die gezippte Datei muss permanant verfügbar sein.
2. Die Offsets müssen als Liste/Array vorliegen.

Dieser Algorithmus ist nur eine schematische Darstellung und kann beliebig geändert werden.

Nochmal zur Erklärung:

Ich suche eine Möglichkeit, ein Passwort zu erstellen, welches ich als Programmierer nicht kenne.
Dieses Passwort soll eine Datenbank (in meinem Fall ABSDatabase) verschlüsseln.

Gleichzeitig möchte ich aber im Bedarfsfall eine Möglichkeit haben, Menschen, die eine Datenbank mit meinem Programm benutzen, im Ernstfall Hilfe zu leisten. Hier kommt das generierte Passwort ins Spiel. Durch festgelegte Offsets im Programmcode kann ich aus der erstellten Datei diesen errechnen, um die Datenbank zu öffnen. Aber von Haus aus, ist es eben niemandem so einfach, an die Daten der Datenbank zu gelangen.

Ist das so verständlicher?


LG Mathias

Lemmy 12. Feb 2021 18:20

AW: Verschlüsselung mit Masterkey
 
Zitat:

Zitat von NoGAD (Beitrag 1482864)
Nochmal zur Erklärung:

Ich suche eine Möglichkeit, ein Passwort zu erstellen, welches ich als Programmierer nicht kenne.

eine gute Verschlüsselung überlässt das Passwort dem Anwender. Wenn der Entwickler ein "Masterpasswort" besitzt, dann stinkt das gewaltig!


Zitat:

Zitat von NoGAD (Beitrag 1482864)
Code:
Für die Nutzung des Codes sind zwei Dinge wichtig.

1. Die gezippte Datei muss permanant verfügbar sein.

Und genau das ist auch das Problem: Wie oben von mir beschrieben. Sicherheit funktioniert NUR MIT dem Anwender. Keinesfalls ohne ihn. Überlass dem Anwender ein gutes Passwort einzugeben, versuch ne ausreichende Länge festzulegen und empfiehl den Einsatz eines Passwortmanager.

Grüße

NoGAD 12. Feb 2021 19:03

AW: Verschlüsselung mit Masterkey
 
Zitat:

Zitat von Lemmy (Beitrag 1482869)
eine gute Verschlüsselung überlässt das Passwort dem Anwender. Wenn der Entwickler ein "Masterpasswort" besitzt, dann stinkt das gewaltig!


Und genau das ist auch das Problem: Wie oben von mir beschrieben. Sicherheit funktioniert NUR MIT dem Anwender. Keinesfalls ohne ihn. Überlass dem Anwender ein gutes Passwort einzugeben, versuch ne ausreichende Länge festzulegen und empfiehl den Einsatz eines Passwortmanager.

Grüße

Hallo,

Wie oft beschrieben wird, soll es auch eine gute Idee sein, über die Hardware-ID einen Schlüssel zu erzeugen. Das entspricht dann aber auch nicht Deinem Hinweis. Wie ist das dann zu bewerten?

Einen Masterkey, wie ich ihn vorgestellt habe, erfüllt für meine Bedürfnisse viel mehr, als ein bloßes Passwort.
Eine Datenbank, welche für ein Mehrbenutzersystem bereit gestellt wird, sollte ja eigentlich gerade nicht mit einem Anwenderpasswort versehen werden, da ansonsten hier wieder viel zu viel Daten abgegriffen werden könnten. Mit meiner Idee wäre dem eine Hürde gesetzt.
Am Ende entscheidet in meinem vorgestellten Fall ja der Anwender/Systembetreuer, ob ich Zugriff auf den Schlüssel bekommen dürfte. Für eine reine Programmentwicklung ist der dann aber überhaupt nicht notwendig.

Wie schon geschrieben, es ist eine Idee. Und in meinen Augen, für mein Programm wäre es eine sehr gute Möglichkeit, das ganze Systemunabhängig nutzen zu können.

Lieben Gruß Mathias :-)


Alle Zeitangaben in WEZ +1. Es ist jetzt 13:37 Uhr.
Seite 1 von 2  1 2   

Powered by vBulletin® Copyright ©2000 - 2022, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2021 by Daniel R. Wolf