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 1 von 3  1 23   
Schokohase
(Gast)

n/a Beiträge
 
#1

AW: DB-Zugangsdaten verschlüsseln

  Alt 24. Aug 2018, 08:50
Ich glaube, ihr habt hier ein Konzept Problem.
Das Konzept-Problem ist der direkte Zugriff vom Client auf die Datenbank und das in jeder Hinsicht. Zugriffs-Komponenten, Treiber, Zugangsdaten, etc.

Aber wieso wir? Ich habe das Problem nicht ...
  Mit Zitat antworten Zitat
ernschd

Registriert seit: 16. Jan 2008
166 Beiträge
 
Delphi XE8 Professional
 
#2

AW: DB-Zugangsdaten verschlüsseln

  Alt 24. Aug 2018, 09:54
Wie wäre es mit einem Zugriff auf die Datenbank per SSH-Tunnel? Dann könnte die Authentifizierung mittels Schlüsselpaar (Private-/Public-Key) erfolgen.
Wir verwenden beispielsweise für so ein System UniDac mit SecureBridge.
  Mit Zitat antworten Zitat
mkinzler
(Moderator)

Registriert seit: 9. Dez 2005
Ort: Heilbronn
39.880 Beiträge
 
Delphi 11 Alexandria
 
#3

AW: DB-Zugangsdaten verschlüsseln

  Alt 24. Aug 2018, 10:15
Es geht um die Zugangsdaten zur Datenbank. Da hilft ein Tunnel eher nicht. Zudem ist vermutlich/möglicherweise auch die Datenbank jeweils lokal. Auch bei einem ssh-Tunnel benötigt man zudem Zugangsdaten.

Zitat:
Ihr baut euch eine eigene Benutzerverwaltung! Das ist nicht notwendig.
Könnte man natürlich machen.Man macht sich hierbei aber abhängig vom entsprechenden DBMS. U.U. ist hierfür aber wieder ein Benutzer mit (teilw.) Adminrechten notwendig, dessen Zugangsdaten man u.U. in der Exe oder in Datei ablegen muss.

Zitat:
Das Konzept-Problem ist der direkte Zugriff vom Client auf die Datenbank und das in jeder Hinsicht. Zugriffs-Komponenten, Treiber, Zugangsdaten, etc.
Lokale Installationen mit lokaler Datenhaltung nun per sé schlecht? Cloud verpflichtend?

Bisher hatte er die Zuganngsdaten im Klartext(!) in einer Datei hinterlegt. Ein Ablage verschlüsselt wäre deutlich besser/sicherer. Dies abzulehnen, da knackbar finde ich paradox!
Markus Kinzler
  Mit Zitat antworten Zitat
Schokohase
(Gast)

n/a Beiträge
 
#4

AW: DB-Zugangsdaten verschlüsseln

  Alt 24. Aug 2018, 10:53
Zitat:
Das Konzept-Problem ist der direkte Zugriff vom Client auf die Datenbank und das in jeder Hinsicht. Zugriffs-Komponenten, Treiber, Zugangsdaten, etc.
Lokale Installationen mit lokaler Datenhaltung nun per sé schlecht? Cloud verpflichtend?
Geht es hier um eine lokale Installation mit lokaler Datenhaltung?

Ich bin davon ausgegangen, dass es mehrere Clients gibt und ein separaten DB-Server. Darauf beziehen sich meine Antworten und darum diese bitte auch in diesem Kontext und keinem anderen Kontext interpretieren.

Und was ist denn jetzt schon wieder mit Cloud? Nur weil REST-API? Die kann man nur in der Cloud haben?

Ja, das kann man Unwissenden evtl. so verkaufen, aber bitte lasst mich dann da raus.
  Mit Zitat antworten Zitat
ernschd

Registriert seit: 16. Jan 2008
166 Beiträge
 
Delphi XE8 Professional
 
#5

AW: DB-Zugangsdaten verschlüsseln

  Alt 24. Aug 2018, 10:57
Es geht um die Zugangsdaten zur Datenbank. Da hilft ein Tunnel eher nicht. Zudem ist vermutlich/möglicherweise auch die Datenbank jeweils lokal. Auch bei einem ssh-Tunnel benötigt man zudem Zugangsdaten.
Natürlich, aber mit der Schlüssel-Authentifizierung wird zumindest das Passwort nicht mehr benötigt.
Die übrigen Zugangsdaten könnten dann mit einer XOR-Verschlüsselung hinterlegt werden.
  Mit Zitat antworten Zitat
Benutzerbild von Zacherl
Zacherl

Registriert seit: 3. Sep 2004
4.629 Beiträge
 
Delphi 10.2 Tokyo Starter
 
#6

AW: DB-Zugangsdaten verschlüsseln

  Alt 24. Aug 2018, 11:43
Ein Ablage verschlüsselt wäre deutlich besser/sicherer. Dies abzulehnen, da knackbar finde ich paradox!
Es ist eben NICHT sicherer, das ist doch grade das Problem. Diese "Sicherheit" ist ein Trugschluss. Als Analogie kannst du dir einmal deine offene Tür vorstellen und einmal eine verschlossene Tür, bei der der Schlüssel in einem offenen Safe davorliegt. Die Datei zu verschlüsseln, aber den Key in der Anwendung zu hinterlegen ist das klassische "security through obscurity" (Verschleierungs-)Prinzip, was nicht umsonst in der IT-Security eins der verpöntesten Prinzipien überhaupt ist

Natürlich, aber mit der Schlüssel-Authentifizierung wird zumindest das Passwort nicht mehr benötigt.
Hier hast du doch das gleiche Problem. Ob nun jemand die Zugangsdaten unberechtigterweise klaut/anwendet, oder eben den Schlüssel ... Resultat ist das selbe: Unberechtigter Datenbankzugriff.

[...] Ich möchte die Zugriffsdaten einfach nicht mehr im Klartext da stehen haben...
Das müssen wir wohl akzeptieren. Dann hoffe ich mal für dich, dass dir das nicht irgendwann auf den Kopf fällt.
Projekte:
- GitHub (Profil, zyantific)
- zYan Disassembler Engine ( Zydis Online, Zydis GitHub)

Geändert von Zacherl (24. Aug 2018 um 12:42 Uhr)
  Mit Zitat antworten Zitat
Ykcim

Registriert seit: 29. Dez 2006
Ort: NRW
856 Beiträge
 
Delphi 12 Athens
 
#7

AW: DB-Zugangsdaten verschlüsseln

  Alt 24. Aug 2018, 10:25
Hallo Zusammen,

ich muss das Thema noch einmal aufgreifen.

Delphi-Quellcode:
function XORCrypt(Text,Passwort:string):string;
var
   x,y,lg : integer;
begin
   if length(Text)>0 then begin
      y:=1;
      lg:=length(Passwort);
      for x:=1 to length(Text) do begin
         Text[x]:=chr(ord(Text[x]) xor ord(Passwort[y]));
         if y=lg then begin
            y:=1
         end
         else begin
            inc(y);
         end;
      end;
   end;
   Result:=Text;
end;
Das ist die XOR-Verschlüsslungsfunktion.

Aber bei manchen Werten baut sie Mist. Z.B. wenn ich eine IP-Adresse mit 172. klappt das Entschlüsseln nicht mehr.
"17"=1
"1756789456"=1
"2756789456"=2
aber
"22756789456"=22756789456
Die 7 an der zweiten Stelle macht Schwierigkeiten. Ich weiß, aber sicherlich gibt es noch weitere Problemfälle.

Ist das bekannt und wie kann ich damit umgehen?


Vielen Dank
Patrick
Patrick

Geändert von Ykcim (24. Aug 2018 um 10:29 Uhr)
  Mit Zitat antworten Zitat
Benutzerbild von KodeZwerg
KodeZwerg

Registriert seit: 1. Feb 2018
3.691 Beiträge
 
Delphi 11 Alexandria
 
#8

AW: DB-Zugangsdaten verschlüsseln

  Alt 24. Aug 2018, 10:37
Bist Du nur an einer Reparatur Deiner Methode interessiert oder magst Du auch andere Verfahren per Code demonstriert bekommen?
Gruß vom KodeZwerg
  Mit Zitat antworten Zitat
Ykcim

Registriert seit: 29. Dez 2006
Ort: NRW
856 Beiträge
 
Delphi 12 Athens
 
#9

AW: DB-Zugangsdaten verschlüsseln

  Alt 24. Aug 2018, 10:43
Ich bin auch für andere Verfahren offen.
Allerdings sollten die angemessen sein und einfach implementierbar. Ich benötige für diese Anwendung keine Hochsicherheit und habe auch zu wenig Ahnung davon, als das ich jetzt mal eben auf die Schnelle umgesetzt bekomme... Bislang kam ich ganz ohne aus, aber langsam muss ich mir meine Gedanken machen.

Hoffe, dass ich nachvollziehbar
Patrick
Patrick
  Mit Zitat antworten Zitat
Benutzerbild von Uwe Raabe
Uwe Raabe

Registriert seit: 20. Jan 2006
Ort: Lübbecke
11.756 Beiträge
 
Delphi 12 Athens
 
#10

AW: DB-Zugangsdaten verschlüsseln

  Alt 25. Aug 2018, 14:37
Das ist die XOR-Verschlüsslungsfunktion.

Aber bei manchen Werten baut sie Mist.
Das liegt daran, daß man Unicode-Strings nicht einfach per XOR ver- und entschlüsseln kann. Das mag in früheren Delphi Versionen noch funktioniert haben, als ein Char noch ein Byte groß war und der OEM-Zeichensatz zu jedem Byte ein Zeichen kannte. Mit Unicode gilt das aber nicht mehr und man sollte dann auf Byte-Sequenzen für das Crypting ausweichen. Um weiterhin mit Strings arbeiten zu können, weil die Datentypen nun mal nicht so einfach im gesamten Programm umgestellt werden können, kann man die Byte-Sequenzen z.B. per Base64 encoden. Der String wird dabei aber etwas länger.
Delphi-Quellcode:
uses
  System.SysUtils, System.NetEncoding;

function Decrypt(const Source, Password: string): string;
var
  bPassword: TBytes;
  bSource: TBytes;
  I: Integer;
begin
  Result := '';
  bSource := TNetEncoding.Base64.DecodeStringToBytes(Source);
  bPassword := TEncoding.UTF8.GetBytes(Password);
  for I := 0 to Length(bSource) - 1 do begin
    bSource[I] := bSource[I] xor bPassword[I mod Length(bPassword)];
  end;
  result := TEncoding.UTF8.GetString(bSource);
end;

function Encrypt(const Source, Password: string): string;
var
  bPassword: TBytes;
  bSource: TBytes;
  I: Integer;
begin
  Result := '';
  bSource := TEncoding.UTF8.GetBytes(Source);
  bPassword := TEncoding.UTF8.GetBytes(Password);
  for I := 0 to Length(bSource) - 1 do begin
    bSource[I] := bSource[I] xor bPassword[I mod Length(bPassword)];
  end;
  result := TNetEncoding.Base64.EncodeBytesToString(bSource);
end;
Uwe Raabe
Certified Delphi Master Developer
Embarcadero MVP
Blog: The Art of Delphi Programming
  Mit Zitat antworten Zitat
Antwort Antwort
Seite 1 von 3  1 23   

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 07:17 Uhr.
Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024-2025 by Thomas Breitkreuz