AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren

Header von vhd-Dateien verschlüsseln

Ein Thema von neo4a · begonnen am 26. Dez 2013 · letzter Beitrag vom 27. Dez 2013
Antwort Antwort
neo4a

Registriert seit: 22. Jan 2007
Ort: Ingolstadt
362 Beiträge
 
Delphi XE2 Architect
 
#1

Header von vhd-Dateien verschlüsseln

  Alt 26. Dez 2013, 17:16
Ich möchte die direkte Nutzung von VHD-Dateien dahingehend unterbinden/erschweren, indem ich den Header-Bereich einer VHD verschlüssele und nur in einem kontrolliertem/embedded Umfeld frei gebe.

Einsatzgebiet ist dabei VirtualBox mit Win7x64 sowohl für Host als auch Client.

Eine volle Verschlüsselung der VHD ist nicht erforderlich und auch nicht gewünscht, da Host und Client bereits in einem Full-Disk-Encryption (FDE)-Umfeld auf SSD betrieben werden. Es geht hier wirklich nur darum, "spielende" Anwender von Versuchen abzuhalten, ihr virtuelles System "mal eben" per Datenträgerverwaltung als virtuelle Festplatte zu mounten.

Ich suche einen möglichst effektiven Ansatz, damit das Schreiben eines nur kleinen Teils einer großen Datei (>40GB) so schnell wie möglich realisiert werden kann. Hat vielleicht schon jemand mit solchen Szenarien Erfahrungen sammeln können?
Andreas
  Mit Zitat antworten Zitat
Benutzerbild von chaosben
chaosben

Registriert seit: 27. Apr 2005
Ort: Görlitz
1.358 Beiträge
 
Delphi XE2 Professional
 
#2

AW: Header von vhd-Dateien verschlüsseln

  Alt 26. Dez 2013, 20:02
Mal so ein Schnellschuss aus der Hüfte: Wie wärs, einfach die ersten 8 Byte mit eigenen Daten zu überschreiben (und später wieder das original 'conectix' rein zu schreiben)? Dann dürften doch die wenigsten Programme die Datei als VHD erkennen und dem unbedarften Nutzer ist erstmal ein Hindernis in den Weg gelegt worden.
Benjamin Schwarze
If I have seen further it is by standing on the shoulders of Giants. (Isaac Newton)
  Mit Zitat antworten Zitat
Benutzerbild von himitsu
himitsu

Registriert seit: 11. Okt 2003
Ort: Elbflorenz
43.016 Beiträge
 
Delphi 12 Athens
 
#3

AW: Header von vhd-Dateien verschlüsseln

  Alt 26. Dez 2013, 23:25
Warum verwendet ihr dann eigentlich VHD?

Ich könntet doch auch die VDI nehmen, welche VirtualBox standarmäßig verwendet.
Und dann müssen nur noch die Tools/Programme deinstalliert/geblockt werden, welche zum Mounten benötigt werden.
Garbage Collector ... Delphianer erzeugen keinen Müll, also brauchen sie auch keinen Müllsucher.
my Delphi wish list : BugReports/FeatureRequests
  Mit Zitat antworten Zitat
neo4a

Registriert seit: 22. Jan 2007
Ort: Ingolstadt
362 Beiträge
 
Delphi XE2 Architect
 
#4

AW: Header von vhd-Dateien verschlüsseln

  Alt 27. Dez 2013, 07:08
@chaosben:
Genau so. Nur wie mache ich das möglichst effektiv?

@himitsu:
Falls ich keine zufriedenstellende Lösung hinbekomme, wird wohl das Pattern "security by obscurity" zum Einsatz kommen

Wie bekommt man es hin, nur einen Teil einer sehr großen Datei auszutauschen bzw. zu schreiben, ohne gleich die gesamte Datei neu schreiben zu müssen?
Andreas
  Mit Zitat antworten Zitat
Benutzerbild von JamesTKirk
JamesTKirk

Registriert seit: 9. Sep 2004
Ort: München
604 Beiträge
 
FreePascal / Lazarus
 
#5

AW: Header von vhd-Dateien verschlüsseln

  Alt 27. Dez 2013, 07:26
Wenn ich das richtig im Kopf habe, dann liest TFileStream die Datei nie* komplett ein (es arbeitet mit WriteFile und ReadFile , welche das selbst nicht machen, zumindest wenn du keinen entsprechend großen Puffer übergibst ). Dann könntest du mit TStream.Write die ersten paar Byte ersetzen.

* ganz kleine Dateien eventuell ausgenommen

Gruß,
Sven
Sven
[Free Pascal Compiler Entwickler]
this post is printed on 100% recycled electrons
  Mit Zitat antworten Zitat
Benutzerbild von sx2008
sx2008

Registriert seit: 16. Feb 2008
Ort: Baden-Württemberg
2.332 Beiträge
 
Delphi 2007 Professional
 
#6

AW: Header von vhd-Dateien verschlüsseln

  Alt 27. Dez 2013, 08:49
Wie bekommt man es hin, nur einen Teil einer sehr großen Datei auszutauschen bzw. zu schreiben, ohne gleich die gesamte Datei neu schreiben zu müssen?
Das ist total easy:

Delphi-Quellcode:
const
  BLOCKSIZE = 1024
var
  stream : TStream;
  s : AnsiString;
begin
  stream := TFileStream.Create('datei.vhd', fmOpenReadWrite or fmShareDenyWrite);
  try
    SetLength(s, BLOCKSIZE);
    stream.ReadBuffer(s[1], Length(s)); // Block einlesen
    s := XORString(s, 'geheime passphrase zur Verschlüsselung'); // ver- oder entschlüsseln
    stream.Position := 0; // zurück auf Anfang
    stream.WriteBuffer(s[1], Length(s)); // Block überschreiben
  finally
    stream.Free;
  end;
end;
Der Code könnte kleine Fehler enthalten da ungetestet
Die Funktion XORString ist eine einfache XOR-Verschlüsselung.
Delphi-Quellcode:
function XORString(const text, key:AnsiString):AnsiString;
var
   i, j, keylen : Integer;
begin
   SetLength(Result, length(text));
   j := 1;
   keylen := Length(key);
   for i := 1 to Length(text) do
   begin
      Result[i] := chr(ord(text[i]) xor ord(key[j]));
      Inc(j);
      if j > keylen then j := 1;
   end;
end;
fork me on Github
  Mit Zitat antworten Zitat
Benutzerbild von himitsu
himitsu

Registriert seit: 11. Okt 2003
Ort: Elbflorenz
43.016 Beiträge
 
Delphi 12 Athens
 
#7

AW: Header von vhd-Dateien verschlüsseln

  Alt 27. Dez 2013, 09:32
Und wann willst du die VHD ver-/entschlüsseln?


Während sie verwendet wird, muß sie ja entschlüsselt sein.
Und wenn man sie sich dabei kopiert, bzw. kurz bevor sie wieder verschlüsselt wird, dann hat man eine entschlüsselte Kopie und kann sie gemütlich mounten.

Und ja, das kopieren dauert bestimmt etwas, aber während sie kopiert wird, kannst du nicht verschlüsseln,
somit knallt dann auch dein Verschlüsselungsversuch, womit dann womöglich sogar das Original unverschlüsselt bliebe.

Also braucht man die auch nur zu mounten, während sie noch entschlüsselt ist.



Es gibt also doch nur wenige Möglichkeiten:
- dem User verbieten auf die Datei zuzugreifen (sie überhaupt zu sehen), was aber schwer wird, wenn die in der VirtualBox geladen werden sollen
- - außer man unterbindet auch noch den Explorer, CMD und alle Open-/Save-Dialoge
- oder man verbietet ihm zumindestens das Mounten

- und zusätzlich natürlich muß man natürlich noch das Kopieren verbieten, also in ein anderes System, wo nichts verboten ist



Warum darf er das eigentlich nicht mounten?
An die Dateien darin kommt er über die laufende VBox-Instanz doch eh rankommen?
Garbage Collector ... Delphianer erzeugen keinen Müll, also brauchen sie auch keinen Müllsucher.
my Delphi wish list : BugReports/FeatureRequests

Geändert von himitsu (27. Dez 2013 um 09:38 Uhr)
  Mit Zitat antworten Zitat
Klaus01

Registriert seit: 30. Nov 2005
Ort: München
5.752 Beiträge
 
Delphi 10.4 Sydney
 
#8

AW: Header von vhd-Dateien verschlüsseln

  Alt 27. Dez 2013, 09:33
.. und wenn man keine xor Verschlüssung nutzen möchte,
dann sollte man noch darauf achten das die verschlüsselten Daten
in der Anzahl mehr geworden sein könnten.

Grüße
Klaus
Klaus
  Mit Zitat antworten Zitat
neo4a

Registriert seit: 22. Jan 2007
Ort: Ingolstadt
362 Beiträge
 
Delphi XE2 Architect
 
#9

AW: Header von vhd-Dateien verschlüsseln

  Alt 27. Dez 2013, 11:22
@sx2008:
Stimmt. So ist es tatsächlich einfach.

@himitsu:
Ich habe hier etwas spezielle und dadurch auch komplexe Einsatzszenarien und möchte gern die Kontrolle behalten, wie ein Benutzer vorgegangen ist.

Deine Fragen haben mich allerdings noch einmal meinen Ansatz überdenken lassen. Ich werde nun testen, inwieweit ich das Windows-eigene EFS dafür hernehmen kann, indem ich VBox per RunAs in einem speziell dafür angelegten Userkontext starte. Die Vhd wird natürlich auch unter diesem Benutzer verschlüsselt angelegt. Wenn es so funktioniert, wie ich es erhoffe, dann kann der VBox-Prozess problemlos auf diese Vhd zugreifen. Jeglicher Versuch, außerhalb des (speziellen) Benutzerkontextes mit diesen Daten zu arbeiten, wird dann scheitern.

Wir setzen EFS ja bereits für die Offline-Daten von Outlook ein und dort gibt es auch keine (Performance-) Probleme damit. Im Gegensatz zu allen Container-Lösungen (ala TrueCrypt) behält man so auch die dynamische Datenträger-Funktionalität bei, was bei den relativ kleinen SSD immer noch ein Muss ist. Die für den Zugriff erforderlichen Zertifikate muss man natürlich verwalten, damit die Vhd portabel bleibt.

Hier steht auch etwas dazu (insbesondere ganz am Ende)
Andreas

Geändert von neo4a (27. Dez 2013 um 11:31 Uhr)
  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 19:40 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