AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren

DB-Zugangsdaten verschlüsseln

Ein Thema von Ykcim · begonnen am 21. Aug 2018 · letzter Beitrag vom 27. Aug 2018
Antwort Antwort
Seite 2 von 6     12 34     Letzte » 
Benutzerbild von p80286
p80286

Registriert seit: 28. Apr 2008
Ort: Stolberg (Rhl)
6.413 Beiträge
 
Delphi 7 Personal
 
#11

AW: DB-Zugangsdaten verschlüsseln

  Alt 21. Aug 2018, 18:58
Man könnte ja auch einen base64(Hash(Password)) in der DB als Passwort hinterlegen.
Macht es etwas schwerer aber sicher?

Gruß
K-H
Programme gehorchen nicht Deinen Absichten sondern Deinen Anweisungen
R.E.D retired error detector
  Mit Zitat antworten Zitat
Benutzerbild von Zacherl
Zacherl

Registriert seit: 3. Sep 2004
4.626 Beiträge
 
Delphi 10.2 Tokyo Starter
 
#12

AW: DB-Zugangsdaten verschlüsseln

  Alt 21. Aug 2018, 19:22
Man könnte ja auch einen base64(Hash(Password)) in der DB als Passwort hinterlegen.
Nene, es geht ja um das Passwort um die DB-Connection erstmal aufzubauen.
Projekte:
- GitHub (Profil, zyantific)
- zYan Disassembler Engine ( Zydis Online, Zydis GitHub)
  Mit Zitat antworten Zitat
Benutzerbild von KodeZwerg
KodeZwerg

Registriert seit: 1. Feb 2018
2.278 Beiträge
 
Delphi 2010 Professional
 
#13

AW: DB-Zugangsdaten verschlüsseln

  Alt 21. Aug 2018, 19:36
Mit Hash meinte ich bestimmt was anderes als wie Du gerade.
Ich meinte, Hash in Datei speichern, im Programm, bei PW Abfrage, Hash auslesen, neuen Hash generieren, stimmt der Hash = DB damit füttern. Total simpel, angreifbar ist eh alles.
Gruß vom KodeZwerg
Wenn ein unerwarteter Fehler aufgetreten ist, frage ich mich immer, welche Fehler erwartet wurden...
  Mit Zitat antworten Zitat
Schokohase
(Gast)

n/a Beiträge
 
#14

AW: DB-Zugangsdaten verschlüsseln

  Alt 21. Aug 2018, 20:01
@Kodezwerg

Der TE will die Anwendung starten OHNE das DB-Kennwort vom Benutzer zu erfragen. Im Idealfall soll dem Benutzer das DB-Kennwort gar nicht bekannt sein.

Ein Hash ist in diesem Szenario völlig unsinnig, denn das Kennwort selber wird für die Anmeldung benötigt.

Einen anderen Hash als Hash gibt es nicht - da gibt es also keine Verwechselungsgefahr

@Ykcim

Wenn du das vernünftig bzgl. der Sicherheit umsetzen willst dann brauchst du z.B. eine REST-API. Dann hast du diese ganzen Probleme nicht

Geändert von Schokohase (21. Aug 2018 um 20:05 Uhr)
  Mit Zitat antworten Zitat
Benutzerbild von KodeZwerg
KodeZwerg

Registriert seit: 1. Feb 2018
2.278 Beiträge
 
Delphi 2010 Professional
 
#15

AW: DB-Zugangsdaten verschlüsseln

  Alt 21. Aug 2018, 20:20
@Kodezwerg
Der TE will die Anwendung starten OHNE das DB-Kennwort vom Benutzer zu erfragen. Im Idealfall soll dem Benutzer das DB-Kennwort gar nicht bekannt sein.
Korrekt, deswegen schrieb ich ja etwas was keine externen Komponenten benötigt. XOR.
da gibt es also keine Verwechselungsgefahr
Wenn man Aussagen wahllos miteinander verknüpft schon. Meine Aussage mit Hash galt dem Vorschlag (weder vom TE noch mir) mit der PW Eingabe.
Gruß vom KodeZwerg
Wenn ein unerwarteter Fehler aufgetreten ist, frage ich mich immer, welche Fehler erwartet wurden...
  Mit Zitat antworten Zitat
Ykcim

Registriert seit: 29. Dez 2006
Ort: NRW
651 Beiträge
 
Delphi 10.3 Rio
 
#16

AW: DB-Zugangsdaten verschlüsseln

  Alt 22. Aug 2018, 12:36
Hallo Zusammen,

komme erst jetzt dazu, die Sache wieder aufzunehmen...

Kurz noch ein paar Info's, denn aus den Antworten konnte ich erkennen, dass ich mich nicht klar genug ausgedrückt habe.

Ich habe in der Anwendung eine eigene Benutzerverwaltung mit Rechten, in der der User selber sein Kennwort vergibt. Dieses Kennwort hat nichts mit der DB zu tun, sondern nur mit der Anwendung.
Die Userverwaltungsdaten werden ebenfalls in der DB gespeichert.

Das Kennwort für die DB ist dem User unbekannt und soll auch so bleiben. Ich habe es aber in einer TXT-Datei gespeichert, aus der meine Anwendung es ausliest und die Verbindung zu DB aufbaut.

Mein Programm wird nur von Usern verwendet, die auch einen Zugang haben. Aber wenn ein Unbefugter die TXT-Datei mit den DB-Zugriffsdaten findet, könnte er an meinem Programm vorbei direkt auf die DB zugreifen... Und das möchte ich gerne verhindern

Ich werde Euren Ideen folgen und versuchen, eine gute Lösung zu entwickeln. Bei Fragen / Erfolg melde ich mich wieder.

Vielen Dank
Patrick
Patrick
  Mit Zitat antworten Zitat
rokli

Registriert seit: 21. Mär 2009
Ort: Rödinghausen
197 Beiträge
 
Delphi 10.3 Rio
 
#17

AW: DB-Zugangsdaten verschlüsseln

  Alt 22. Aug 2018, 13:22
Hallo,

das kannst Du dann ja recht einfach mit einem MD5 machen ...

Der User gibt sein PWD ein und Du speicherst den MD5Hash in der INI (oder in der DB Userverwaltung) ...

Delphi-Quellcode:
function f_MD5Hash(sVal : String) : String;
{-------------------------------------------------------------------------------
   f_Md5Hash

      Erzeugt einen MD5 Hash Wert, der nicht zurück gewandelt werden,
      kann aber verglichen.
      Benötigt wird mindestens in der uses: IdHashMessageDigest.
      die Rückgabe ist immer 32 Zeichen lang

      Input:   STRING
      Output:   STRING

-------------------------------------------------------------------------------}

var
   idmd5 : TIdHashMessageDigest5;
begin
   idmd5      := TIdHashMessageDigest5.Create;
   result   := idmd5.HashStringAsHex(sVal);
   idmd5.Free;
end;
Und wenn der User sich wieder anmeldet prüfst Du die Eingabe, in dem Du den INI-Wert gegen den berechneten Wert prüfst. Dadurch bist Du sogar raus, wenn der Benutzer sein PWD vergessen hast, weil auch Du es nicht wiederherstellen kannst. Und wenn der User sich nicht erinnern kann, löscht Du den Hash in der INI (oder DB Userverwaltung) und lässt ihn ein neues eingeben.

Gruß
Rolf
wenn nicht anders angegeben, schreibe ich zu D7, XE2 und MS SQL - ansonsten fragen Sie ihren Administrator oder einen Operator. Update 06/2019: Delphi 10.3 Rio,Enterprise
  Mit Zitat antworten Zitat
Schokohase
(Gast)

n/a Beiträge
 
#18

AW: DB-Zugangsdaten verschlüsseln

  Alt 22. Aug 2018, 13:31
@rokli

Es geht um die Zugangsdaten zur Datenbank, diese sollen dem Benutzer nicht bekannt sein.

Es geht nicht um die Zugangsdaten der Anwendung, die dem Benutzer sehr wohl bekannt sind, weil er diese selber festlegt (und diese sollten in der Datenbank nur als Hash gespeichert werden).

Um die Zugangsdaten der Anwendung aber überprüfen zu können muss es eine Verbindung zur Datenbank geben und dafür eben auch Zugangsdaten und diese sollen aber geheim sein (damit z.B. nicht jeder in der Datenbank herumpfuschen kann).

Dafür (und nur dafür) such der TE eine Lösung.

Geändert von Schokohase (22. Aug 2018 um 13:33 Uhr)
  Mit Zitat antworten Zitat
Benutzerbild von Zacherl
Zacherl

Registriert seit: 3. Sep 2004
4.626 Beiträge
 
Delphi 10.2 Tokyo Starter
 
#19

AW: DB-Zugangsdaten verschlüsseln

  Alt 22. Aug 2018, 13:45
Ich sehe leider keine Möglichkeit, wie man diesen Anwendungsfall unter den gegebenen Bedingungen absichern kann. Ob du die .txt nun verschlüsselst oder nicht, macht im Grunde keinen großen Unterschied. Du "schützt" dich vielleicht gegen Leute, die ausversehen mal einen Blick riskieren, aber wenn jemand wirklich an die Zugangsdaten gelangen will, bringt dir das komplett gar nichts. Wie gesagt, muss deine Anwendung ja auch den Schlüssel kennen, um die .txt vor dem Auslesen wieder entschlüsseln zu können. Dieser Schlüssel landet unweigerlich im Kompilat, weshalb man ihn daraus auch mit ein wenig Aufwand wieder extrahieren kann. Und schon ist der ganze "Schutz" futsch ...

Eine REST-API, wie sie von Schokohase schon vorgeschlagen wurde, hätte dieses Problem nicht. Direkter Zugriff auf die Datenbank ist IMMER unsicher, wenn du dem lokalen Client (Benutzer) nicht vertraust bzw. davon ausgehen kannst, dass deine Anwendung in falsche Hände gelangen könnte.

Selbst wenn du als schnellen Workaround nur die Authentifizierung über ein per SSL gesichertes Web-Interface realisierst und deine Anwendung nach erfolgreichem Login die Datenbank-Zugangsdaten gesendet bekommt, könnte der Nutzer sich immer noch mit einem Debugger dazwischenhängen und die unverschlüsselten Daten abgreifen, bevor deine Anwendung sie an die Datenbank überträgt
Projekte:
- GitHub (Profil, zyantific)
- zYan Disassembler Engine ( Zydis Online, Zydis GitHub)
  Mit Zitat antworten Zitat
Ykcim

Registriert seit: 29. Dez 2006
Ort: NRW
651 Beiträge
 
Delphi 10.3 Rio
 
#20

AW: DB-Zugangsdaten verschlüsseln

  Alt 22. Aug 2018, 13:48
Ja, das stimmt.

Ich habe das hier gefunden.
Delphi-Quellcode:
function XORCrypt(Data, Key: string): string;
var
  KeyLen: INTEGER;
  i: INTEGER;
begin
  KeyLen := Length(Key);
  for i := 1 to Length(Data) do
    Data[i] := Chr(Ord(Data[i]) xor Ord(Key[(i mod KeyLen) + 1]));
  Result := Data;
end;

procedure TForm1.Button1Click(Sender: TObject);
var Res:String;
begin
 Res:=XORCrypt(Edit1.Text,'Kennwort');
 Label1.Caption:=Res;
 Label2.Caption:=XORCrypt(Res,'Kennwort')
end;
Ich glaube verstanden zu haben, dass wenn man längere Texte damit "verschlüsselt", dass die Wiederholungen sichtbar werden. Aber wenn es sich nur um kurze Daten wir IP-Adresse, User, Passwort, Port und Schema handelt, sollte es klappen.

Den Key würde ich zwar fix im QuellCode hinterlegen. Aber wenn jemand sich soviel Mühe macht und den herausfindet, dann wird es eh schwer werden. Neugierige, fortgeschritten User würde ich so wohl fernhalten, ambitionierte Hacker ehe nicht.

Was meint ihr?

Gruß Patrick
Patrick
  Mit Zitat antworten Zitat
Themen-Optionen Thema durchsuchen
Thema durchsuchen:

Erweiterte Suche
Ansicht

Forumregeln

Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are aus

Gehe zu:

Impressum · AGB · Datenschutz · Nach oben
Alle Zeitangaben in WEZ +1. Es ist jetzt 21:28 Uhr.
Powered by vBulletin® Copyright ©2000 - 2019, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2019 by Daniel R. Wolf