AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Sprachen und Entwicklungsumgebungen Sonstige Fragen zu Delphi Delphi Verschlüsslung - Daten ungeschützt im RAM
Thema durchsuchen
Ansicht
Themen-Optionen

Verschlüsslung - Daten ungeschützt im RAM

Ein Thema von Van HelF · begonnen am 30. Jul 2007 · letzter Beitrag vom 2. Aug 2007
Antwort Antwort
Van HelF

Registriert seit: 24. Okt 2005
Ort: Karlsbrunn
195 Beiträge
 
Delphi 7 Personal
 
#1

Verschlüsslung - Daten ungeschützt im RAM

  Alt 30. Jul 2007, 11:43
Hallo, ich benutze die DCPCrypt Komponenten um eine (text)datei zu verschlüsseln.
Nun ist mir aber aufgefallen, dass immer wenn ich die datei entschlüssele die daten im RAM liegen und das obwohl ich diese direkt verschlüsselt in einer stringlist speichere.
Dann ist mit aufgefallen, dass immer wenn ich die Decrypt prozedur aufrufe die daten im RAM liegen bleiben, auch das freigeben der DCP Komponenten löscht die daten nicht. Weiss jemand rat?

Hier der verwendete Code:

Delphi-Quellcode:
procedure decrypt(t:Tstrings;AESKey:string);
var
  i: integer;
  s: string;
  Cipher : TDCP_rijndael;
begin
  try
    Cipher :=TDCP_rijndael.create(nil);
    Cipher.InitStr(AESKey);
    t.Text:=HexStrToString(t.Text);
    for i:= 0 to t.Count-1 do
    begin
      s:=B64Decode(t.strings[i]);
      Cipher.DecryptCFB(S[1],S[1],Length(S)); <- ab hier liegen die daten im RAM
      t.strings[i]:= s;
    end;
    Cipher.Reset;
    Cipher.Burn;
  finally
    Cipher.free;
  end;
end;
  Mit Zitat antworten Zitat
Benutzerbild von sirius
sirius

Registriert seit: 3. Jan 2007
Ort: Dresden
3.443 Beiträge
 
Delphi 7 Enterprise
 
#2

Re: Verschlüsslung - Daten ungeschützt im RAM

  Alt 30. Jul 2007, 12:44
Die Speicherstelle überschreiben, was sonst.
Beim löschen von dynamischen Komponenten wird der speicherplatz nicht automatische mit Nullen überschreiben. Überhaupt gibt es für ein Byte im speicher ja keinen undefinierten Zustand. Wenn du den Speicherplatz verändern willst, musst du selber was drüberschreiben z.B. mit Fillchar.
Ob du jetzt in die Komponente reinkommst weis ich nicht. Aber dein Decrypteter Text liegt ja (soweit ich das sehe) auch in s und in t.strings[i] vor. Wenn du damit arbeiten willst, musst du ihn nunmal irgendwann entschlüsselt rumliegen haben.
Dieser Beitrag ist für Jugendliche unter 18 Jahren nicht geeignet.
  Mit Zitat antworten Zitat
franktron

Registriert seit: 11. Nov 2003
Ort: Oldenburg
1.446 Beiträge
 
Delphi 10.2 Tokyo Enterprise
 
#3

Re: Verschlüsslung - Daten ungeschützt im RAM

  Alt 30. Jul 2007, 12:58
Versuch mal

  FreeAndNil(Cipher); Statt Nur Cipher.Free;
Frank
Tux sein Lieblingsquellcode
While anzfische<TuxSatt do begin
Fisch:=TFisch.Create; Tux.EssenFisch(Fisch); Fisch.Free;inc(anzfische); end;
  Mit Zitat antworten Zitat
gammatester

Registriert seit: 6. Dez 2005
999 Beiträge
 
#4

Re: Verschlüsslung - Daten ungeschützt im RAM

  Alt 30. Jul 2007, 13:05
Zitat von franktron:
Versuch mal

  FreeAndNil(Cipher); Statt Nur Cipher.Free;

Davon wird der Inhalt von s nicht gelöscht! Der "String" auf dem Stack dürfte nur ein (erweiterter) Zeiger sein. Also vielleicht noch

Code:
for i:=1 to length(s) do s[i] := #ff;
Gruß Gammatester
  Mit Zitat antworten Zitat
xaromz

Registriert seit: 18. Mär 2005
1.682 Beiträge
 
Delphi 2006 Enterprise
 
#5

Re: Verschlüsslung - Daten ungeschützt im RAM

  Alt 30. Jul 2007, 13:09
Hallo,

wenn Du Speicher sicher überschreiben willst, solltest Du darauf achten, dass der Speicher nicht ausgelagert wird. Ansonsten steht der Text ja auch in der Auslagerungsdatei. Du musst also den angeforderten Speicher "festpinnen", und nach der Verarbeitung überschreiben. Hierfür gibt es spezielle Befehle in der Windows-Speicherverwaltung.

Gruß
xaromz
I am a leaf on the wind - watch how I soar
  Mit Zitat antworten Zitat
Matrix Scripter

Registriert seit: 20. Apr 2005
Ort: Freiburg
37 Beiträge
 
#6

Re: Verschlüsslung - Daten ungeschützt im RAM

  Alt 2. Aug 2007, 15:05
in den beispielen hab ich mal etwas von cipher.burn gelesen. könnte es das sein?
und btw. wie installiert man dcpcrypt denn unter turbo delphi explorer? bzw wie nutzt man es? muss man irgendwas kompilieren? welche unit muss man einbinden?
was ist verzweiflung?
  Mit Zitat antworten Zitat
OG Karotte
(Gast)

n/a Beiträge
 
#7

Re: Verschlüsslung - Daten ungeschützt im RAM

  Alt 2. Aug 2007, 15:56
Wenn ich mich recht entsinne, brauchst Du nur das Projekt (DCPCrypt) kompilieren (installieren der Komponenten funktioniert eh nicht in der Freeware Version des Turbo Explorer's). Natürlich müssen die Pfade zu den DCPCrypt-Verzeichnissen in den Optionen vom TE (Blibliothekspfad und Suchpfad) bzw. in den Projekt-Optionen deines Prog's gesetzt werden.
Anschliessend bindest Du nur noch die benötigten Units in ein entspr. Modul Deines Projekts ein:

Im folgenden wird zum Beispiel RC4 mit SHA1 verwendet:

Delphi-Quellcode:
unit MyCrypt;

interface
uses
 ..., DCPcrypt2, DCPrc4, DCPsha1;

...

implementation

...

function TCrypt.CodeData(const TheData:string; DoEncrypt:Boolean):string;
var
  Cipher: TDCP_rc4;
begin
  Result := '';
  if Trim(TheData) = 'then Exit;
  Cipher:= TDCP_rc4.Create(nil);
  Cipher.InitStr(myKeyPhrase, TDCP_sha1);// initialize the cipher with a hash of the passphrase

  ...

  FreeAndNil(Cipher);
end;
Eine Verwendung der Komponenten aus entspr. Palette ist also nicht notwendig.
  Mit Zitat antworten Zitat
Antwort Antwort


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