ArchiCrypt Live Bibliotheken AUSZUG

ArchiCrypt Live © Bibliotheken AUSZUG Dok.-Nr.: Ausgabedatum: Ausgabe-Nr.: ACLB-HB-0001 27.03.2003 3.8 Alle Rechte vorbehalten Weitergabe sowie Ver...
Author: Erna Stieber
12 downloads 1 Views 292KB Size
ArchiCrypt Live © Bibliotheken AUSZUG Dok.-Nr.: Ausgabedatum: Ausgabe-Nr.:

ACLB-HB-0001 27.03.2003 3.8

Alle Rechte vorbehalten

Weitergabe sowie Vervielfältigung dieser Unterlage, Verwertung und Mitteilung ihres Inhalts sind nur mit ausdrücklicher Zustimmung von Patric Remus erlaubt. Zuwiderhandlungen verpflichten zum Schadenersatz.

Softwareentwicklung Dipl.-Ing. Patric Remus Am Brunneck 6 D-85521Ottobrunn Telefon Telefax Email

(089) 66000893 (089) 66000875 [email protected]

Die Dokumentation ist bei Vertragsabschluß Bestandteil des Vertrages. Insbesondere Kapitel 2 (Liefergegenstand) und Kapitel 4(Leistungsmerkmale der Engine) beschreiben den Liefergegenstand und die Spezifikation (garantierte Leistungsmerkmale) der Engine. Copyright 1998-2003 Dipl.-Ing. Patric Remus - Seite 1 von 1 -

Änderungsregister

….

Copyright 1998-2003 Dipl.-Ing. Patric Remus - Seite 2 von 2 -

Inhaltsverzeichnis Seite 1. Vorbemerkung......................................................................................................4 2. Liefergegenstand..................................................................................................5 3. Änderungen gegenüber der Vorversion ...............................................................5 3.1. ArchiCrypt Live Engine..................................................................................5 3.1.1. Größe der Trägerdateien .......................................................................5 3.1.2. Dateisysteme .........................................................................................5 3.1.3. Tools ......................................................................................................5 3.1.4. Hot Brush Aside .....................................................................................5 3.2. ArchiCrypt Live NET Engine..........................................................................6 3.2.1. Größe der Trägerdateien .......................................................................6 3.2.2. Remote Formating .................................................................................6 3.2.3. Multireader Mode ...................................................................................6 3.2.4. Rotating Writer Mode .............................................................................6 3.2.5. Lazy Sync Mode ....................................................................................6 3.2.6. Cascading Containers............................................................................7 3.3. Wichtige Neuerungen für den Programmierer...............................................7 4. Merkmale der Engine ...........................................................................................7 4.1. Leistungsmerkmale .......................................................................................7 5. Überblick ............................................................................................................10 6. Fehler und Status Codes....................................................................................10 7. Funktionen..........................................................................................................11 7.1. ACLFormat.DLL ..........................................................................................11 7.1.1. Anlegen eines neuen Laufwerkes (dateibasiert) ..................................11 7.1.2. Anlegen eines neuen Laufwerkes (raw Modus) ...................................13 8. Technische Beschreibung ..................................................................................16 8.1. Zusammenarbeit mit dem Treiber ...............................................................16 8.2. Vorgänge beim Formatieren........................................................................17 8.2.1. Datenträgerstrukturen ..........................................................................17 8.2.2. Schlüsselgenerierung...........................................................................19 8.3. Verschlüsselung..........................................................................................20 8.3.1. Blowfish................................................................................................21 8.3.2. AES Advanced Encryption Standard....................................................21 8.3.3. SHA512................................................................................................23 9. Installation der Engine........................................................................................24 9.1. Namensgebung von Dateien.......................................................................24 9.2. Installation unter Win9x und Windows ME ..................................................24 9.3. Installation unter Win NT, 2000 und XP ......................................................24 9.3.1. Die Funktionsbibliothek zur Installation ................................................25 9.3.2. Pseudecode für Installations- /Updateprozedur ...................................29 10. Installationspaket ArchiCrypt Live NET Engine...............................................30 11. Backup und Recovery Funktion ......................................................................32

Copyright 1998-2003 Dipl.-Ing. Patric Remus - Seite 3 von 3 -

1. Vorbemerkung Die Bibliotheken dienen dazu, Ihnen die Einarbeitung in das komplexe und schwierige Thema der Dateisysteme, der Treiberprogrammierung und der Kryptographie zu ersparen. Sie bieten wenige, einfach aufgebaute aber äußerst mächtige Funktionen, die Sie in die Lage versetzen, in kürzester Zeit Anwendungen in beliebigen Entwicklungssystemen zu erstellen, die höchsten Ansprüchen an Performance, Usability und Sicherheit gerecht werden. Das vorliegende Handbuch soll den Nutzer der Funktionsbibliotheken in die Lage versetzen, die Bibliotheken ACLFormat.dll und ACLMount.dll so einzusetzen, dass neue Laufwerke im ArchiCrypt Live © Format erstellt und in das Windows Betriebssystem eingebunden werden können. ACHTUNG: Die Ihnen gelieferten Bibliotheken tragen unter Umständen abweichende Namen. Dies ist nötig, um Seiteneffekte mit Produkten anderer Engine-Nutzer zu vermeiden. Das Verstehen, insbesondere des technischen Teils der Beschreibung, setzt voraus, dass grundlegende Kenntnisse im Bereich der Microsoft Betriebssysteme vorhanden sind. WICHTIG Wie im Bereich des Softwareengineering üblich, wird mit Vor- und Nachbedingungen gearbeitet. Dies bedeutet, dass die Funktionen erwarten, dass Sie die Vorbedingungen exakt beachten. Nur so kann die Bibliothek von einem klar definierten Zustand ausgehend, ihre Aufgabe erfüllen. Bestimmte grundsätzliche Voraussetzungen werden dabei nicht explizit aufgeführt. Es sollte selbstverständlich sein, dass Sie dem Programm sinnvolle Parameter übergeben. Einen NULL Pointer als Parameter für einen Dateinamen zu übergeben, sollten Sie entsprechend unterlassen. Die Bibliothek fängt solche Fehler weitestgehend ab. Davon abgesehen sollten Sie es sich allerdings zur Gewohnheit machen, Unstimmigkeiten durch eigene Plausibilitätsprüfungen auszuschließen.

Copyright 1998-2003 Dipl.-Ing. Patric Remus - Seite 4 von 4 -

2. Liefergegenstand Mit diesem Handbuch wurden folgende Quelldateien und Binaries ausgeliefert: ACHTUNG: Die Namen insbesondere der Dateisystemtreiber, Bibliotheken und des Services können aufgrund von Anpassungen abweichen! ....

3. Änderungen gegenüber der Vorversion Die aktuelle Version der Echtzeitverschlüsselungsengine ist Version 5 (Stand 15.11.2002). Wesentliche Änderungen betreffen ausschließlich die Betriebssysteme Windows 2000 und XP. Neben der Beschreibung der „normalen“ Engine finden Sie in diesem Dokument auch die Beschreibung der ArchiCrypt Live NET Engine, die spezielle netzwerkunterstützende Funktionen besitzt.

3.1. ArchiCrypt Live Engine 3.1.1.

Größe der Trägerdateien

Die Beschränkung der Volumegrößen auf 2 Gigabyte ist aufgehoben und wurde auf 32 Gigabyte erweitert. Der Wert 32 Gigabyte wurde dabei bewusst gewählt und begründet sich durch die Beschränkung der NT Betriebssysteme, Laufwerke im FAT32 Format nur bis zu dieser Grenze erstellen zu können. Die Live Engine hat diese Beschränkung selbst nicht.

3.1.2.

Dateisysteme

Die Engine ist in der Lage, native FAT16/FAT32 Strukturen zu erstellen. Dennoch ist es sinnvoll und für NTFS sogar notwendig, beim Formatieren auf Funktionen des Betriebsystems zurückzugreifen. Mit Version 5 ist es nun möglich, die Betriebsystemfunktionen mit Hilfe der Engine anzuwenden und Laufwerke im FAT16/32 und NTFS Format beliebig oft zu formatieren.

3.1.3.

Tools

Live Laufwerke unterstützen Checkdisk. Das Programm kann mit dem Schalter /F und /X via Engine auf die Trägerdateien angewendet werden.

3.1.4.

Hot Brush Aside

Durch eine neue Technik ist es möglich, die Laufwerke unter Windows 2000 und XP trotz geöffneter Dateien zu schließen. (Man kann mit dieser Technik zum Beispiel ein Laufwerk schließen, obwohl der MS Windows Mediaplayer ein Musikstück abspielt. Dabei entstehen außer einer Copyright 1998-2003 Dipl.-Ing. Patric Remus - Seite 5 von 5 -

Fehlermeldung keine weiteren Nachteile.) Trotz der neuen Technik kann die Nutzung des Verfahrens logischerweise zu einem instabilen System führen.

3.2. ArchiCrypt Live NET Engine Die Live NET Funktionen können nur genutzt werden, wenn die Engine auf einem NT Betriebssystem ausgeführt wird. Es besteht daher keine Möglichkeit, von einem Windows 9x oder ME Rechner eine Datei über Netzwerk zu laden.

3.2.1.

Größe der Trägerdateien

Die NET Version ist in der Lage, trotz der normalen Begrenzung des Betriebsystems, Trägerdateien bis zu 32 Gigabyte via LAN zu nutzen. Die Größe wird dabei entweder durch das Hostsystem der Trägerdatei begrenzt, oder durch die künstliche 32 Gigabytegrenze der Engine bestimmt. Das Hostsystem kann dabei zum Beispiel W9x/ME/NT/2000 oder XP, Novell Netware ab Version 4.0.1 oder Linux Samba sein.

3.2.2.

Remote Formating

Trägerdateien können auf dem Hostsystem erstellt und nachträglich mit Betriebsystemmitteln als FAT16/FAT32 oder NTFS Datenträger über das Netzwerk formatiert werden.

3.2.3.

Multireader Mode

Eine Trägerdatei kann von beliebig vielen Clients im Nur-Lese-Modus geladen werden. Die Nur-Lesefunktion kann dabei selbstverständlich auch lokal genutzt werden um den schreibenden Zugriff zu verhindern.

3.2.4.

Rotating Writer Mode

Eine Trägerdatei lässt unabhängig von aktiven Clients einen Nutzer zu, der Schreibrechte auf dem Laufwerk ausübt. Das Schreibrecht kann dynamisch erteilt und entfernt werden. Der Wechsel muss dabei durch die Endanwendung organisiert und mit Hilfe der Engine durchgeführt werden.

3.2.5.

Lazy Sync Mode

Dieser Modus stellt sicher, dass Clients im Nur-Lese-Modus möglichst eine aktuelle Sicht auf die Daten haben. Ändert der Writer Daten, werden diese Daten ZEITVERZÖGERT auf den Clients angezeigt. Die Engine ist dabei so intelligent, dass sie Daten so aktualisiert, dass die Stabilität der Clients möglichst nicht beeinträchtigt wird. Selbst Anwendungen, die ein Reader ausführt können vom Writer gelöscht/geändert werden. Die Aktualisierung muss dabei durch die Endanwendung getriggert werden. Dies geschieht durch einen Versuch, Daten auf das schreibgeschützte Medium zu schreiben. Der Versuch scheitert selbstverständlich, die Sicht des Systems auf die Daten wird dabei aber aktualisiert. Copyright 1998-2003 Dipl.-Ing. Patric Remus - Seite 6 von 6 -

3.2.6.

Cascading Containers

Trägerdateien können aus Trägerdateien via LAN geladen werden. Daten können damit mehrfach abgesichert werden. Dadurch lässt sich ein mehrstufiges Sicherheitssystem erstellen. (Mitarbeiter können so zum Beispiel nur gemeinsam ein bestimmtes Laufwerk öffnen. Ein Mitarbeiter öffnet das äußere Laufwerk, der zweite das innere mit den eigentlichen Daten. Keiner kann ohne den Schlüssel des anderen an die Daten. Die Verschlüsselungen sind dabei unabhängig, d.h. dass die Daten mehrfach durch den Treiber bearbeitet werden. Kein einfaches XOR der Passworte!

3.3. Wichtige Neuerungen für den Programmierer ....

4. Merkmale der Engine Die ArchiCrypt Live Engine bietet Echtzeitverschlüsselung von Daten mit Hilfe virtueller Laufwerke. Echtzeit bedeutet hierbei, dass alle Daten, die auf das virtuelle Laufwerk geschrieben oder von diesem gelesen werden, ohne merklichen Zeitverzug ver- /entschlüsselt werden.

4.1. Leistungsmerkmale Kenngrößen Maximale Laufwerksgröße:

2 Gigabyte 32 Gigabyte 64 KByte

W98/ME W2000/XP Achtung: Falls Sie das Laufwerk im NTFS Format formatieren möchten, sollte es mindestens 1-2 Megabyte groß sein. 8; sofern Laufwerke innerhalb genügend anderer Laufwerke werden Laufwerke zur nur in der NET Version Verfügung stehen unterstützt.

Minimale Laufwerksgröße:

Maximale Anzahl Laufwerke Pro Rechner

Dateisystem der erstellten Laufwerke Trägerdateien bis 512 Megabyte

FAT16

Copyright 1998-2003 Dipl.-Ing. Patric Remus - Seite 7 von 7 -

Gleichzeitig Obergrenze für Laufwerke unter Windows NT 4.0, da dieses Betriebssystem lediglich FAT16 unterstützt. Anm.:Das FAT16 Dateisystem erlaubt höchstens 512 Einträge im Rootverzeichnis. Unter Windows XP ist es möglich über die Betriebssystemfunktionen

auch sehr kleine Trägerdateien im FAT32 Format anzulegen. Um Daten zwischen verschiedenen Systemen austauschen zu können, wird jedoch davon abgeraten. ab 512 Megabyte bis 2 GigaByte FAT32 Das NTFS Format kann nur unter NT/W2K/XP mit NTFS Hilfe der Betriebsystemfunktionen nachträglich hergestellt werden. Beachten Sie jedoch, dass NTFS Laufwerke niemals schreibgeschützt sein dürfen und die Daten nicht mehr von jedem System gelesen werden können. Die in der Dokumentation aufgeführte Möglichkeit, Partitionen und Datenträger direkt mit der Engine zu betreiben, gehört nicht zum garantierten Leistungsumfang. Der Einsatz dieser Option geschieht auf eigene Gefahr. Unter Windows 2000 und Windows XP können die Laufwerke nach dem Erstellen mit Betriebssystemmitteln formatiert werden. Unter Windows 95 OSR2, Windows 98, Windows 98SE und Windows ME ist ein nachträgliches Formatieren nicht möglich.

Verschlüsselungsverfahren / Passwortänderung

Angebotene Verschlüsselungsverfahren

Passwortänderung

AES

Schlüssellänge 256 BIT Blockgröße 128 BIT Rundenzahl 14 CBC Mode Blowfish Schlüssellänge 256 BIT Blockgröße 64 BIT Rundenzahl 16 CBC Mode Das (User)Passwort eines Laufwerkes kann beliebig oft geändert werden, sofern das alte Passwort bekannt und die Trägerdatei beschreibbar ist. Die Trägerdatei darf zu diesem Zeitpunkt nicht geladen sein.

Dynamisches Laden und Entladen der Laufwerke

Laufwerke können, sofern ein freier Laufwerksbuchstabe im System verfügbar ist, und noch keine 8 Laufwerke geladen sind, in das System eingebunden werden. Das dynamische Entfernen der Laufwerke ist genau dann möglich, wenn kein Prozess des Systems mehr auf das Laufwerk zugreift (Anm.: Bereits das Anzeigen des Inhaltes eines Laufwerkes führt dazu, dass das Laufwerk nicht geschlossen werden kann). Unter W2k und XP ist es möglich, die Laufwerke zu schließen, obwohl Anwendungen darauf zugreifen. Dies kann zu einem instabilen System führen. Die Funktion sollte also mit entsprechender Vorsicht genutzt werden. Copyright 1998-2003 Dipl.-Ing. Patric Remus - Seite 8 von 8 -

Das dynamische Laden von Trägerdateien, die sich auf CD-ROM befinden ist möglich; Die CDR / CDRW muss dabei folgenden Anforderungen genüge leisten: - Länge der Datei und Ordner Namen: ISO Level 1 - Zeichensatz: ISO 9660 - Keine Multisession CD / CD muss abgeschlossen sein - Keine Unterstützung von DirectCD und ähnlichen Verfahren Die Daten auf CDR / CDRW können nur gelesen werden. Die Trägerdatei darf auf keinen Fall im NTFS Format vorliegen, nut FAT16 oder FAT32 sind erlaubt.

Schutz der Trägerdateien vor versehentlichem Löschen

Die Engine schützt einen von Ihnen festgelegten Dateityp vor versehentlichem Löschen. Es handelt sich ausdrücklich nicht um einen Schutz gegen mutwillige Zerstörung der Trägerdateien.

Sicherheit der Trägerdateien gegen Zerstörung

Für das Betriebssystem ist eine Trägerdatei eine gewöhnliche Datei. Als Datei ist sie somit allen Gefahren einer gewöhnlichen Datei ausgesetzt. Die Datei kann durch Viren, Fehler in Programmen und Betriebssystemkomponenten, und durch Dritte manipuliert und beschädigt, und dadurch unbrauchbar werden. Der Nutzer eines auf der Engine basierenden Programms ist daher ausdrücklich auf den verantwortungsvollen Umgang mit wichtigen Daten(regelmäßige Backups) hinzuweisen. Darüber hinaus kann der Header eines Laufwerkes gesichert und bei Bedarf zurückgeschrieben werden. Ein Zugriff auf korrupte Trägerdateien ist mit diesen Maßnahmen gegebenenfalls möglich. Siehe auch Kapitel (Backup und Recovery Funktion). Beachten Sie bitte, dass Sie dem Endkunden mitteilen, dass der Umgang mit sehr großen Trägerdateien (> Sicherungsmedien), problematisch ist. Große Dateien sind statistisch deutlich anfälliger und sind sehr schwer mit Backupmitteln zu sichern.

Netzwerk

Copyright 1998-2003 Dipl.-Ing. Patric Remus - Seite 9 von 9 -

Geladene Trägerdateien können im Netzwerk freigegeben werden. Alle Daten werden dabei jedoch unverschlüsselt über das Netzwerk übertragen. Die NET Version erlaubt das Laden von Trägerdateien über das Netzwerk. Der zugreifende Nutzer benötigt entsprechende Schreib-/Leserechte für die Trägerdatei. Gleichzeitig muss das Verzeichnis in dem sich die Trägerdatei befindet als Netzlaufwerk auf dem Clientrechner eingebunden sein. (UNC Pfade werden also nicht unterstützt). Auf eine Trägerdatei können beliebig viele Nutzer lesend zugreifen. Gleichzeitig kann genau ein Nutzer mit Schreibrechten auf das Laufwerk zugreifen. Dabei werden Änderungen an Daten jedoch nur dann bei den Clients sichtbar, wenn diese einen Schreibversuch auf das schreibgeschützte Medium unternehmen. Insbesondere dann, wenn der Nutzer mit Schreibrechten umfangreiche Änderungen an den Daten vornimmt, kann es zu undefinierten Zuständen kommen. Daten die über das Netzwerk verschickt werden, sind verschlüsselt. Die Engine verschlüsselt die Daten, bevor sie über das Netz verschickt werden und entschlüsselt die Daten, wenn sie über das Netzwerk empfangen werden.

5. Überblick Die Bibliotheken kapseln alle Aufrufe, die direkt auf den Systemtreiber zugreifen. Dabei hat die ACLFormat Bibliothek im wesentlichen 2 Aufgaben. das Erstellen eines neuen Laufwerkes und die Änderung eines Laufwerkpasswortes Die Bibliothek ACLMount.dll hat die Aufgabe, bestehende Laufwerke in das System einzubinden und bereits eingebundene Laufwerke wieder aus ihm zu entfernen. Weiterhin werden Funktionen zum Schützen von Laufwerken angeboten, die es verhindern, dass die Trägerdateien versehentlich gelöscht werden können. Da für Verschlüsselungsmethoden, die eine Schlüssellänge von 256BIT nutzen, die Methode SHA512 genutzt werden sollte, wurde in der MOUNT-Bibliothek diese Funktion verfügbar gemacht.

6. Fehler und Status Codes Die Funktionen in den Bibliotheken geben bestimmte Werte zurück , die detaillierte Rückschlüsse auf die Vorgänge innerhalb der DLL zulassen. Insbesondere bei Eintritt eines Fehlers, kann man anhand der Fehlercodes die Fehlerursache zunächst genau bestimmen und anschließend beseitigen. Alle Fehlercodes befinden sich zentral in der Datei ACLCodes.h ... Copyright 1998-2003 Dipl.-Ing. Patric Remus - Seite 10 von 10 -

7. Funktionen Nachfolgend finden Sie eine Beschreibung der Funktionen, die durch die Bibliotheken von ArchiCrypt Live © zur Verfügung gestellt werden. Alle Funktionen werden derart beschrieben, dass zunächst der Funktionskopf vorgestellt wird. Dann werden Ihnen die sogenannten Vorbedingungen erläutert. Dabei handelt es sich um Bedingungen, die vor dem Aufruf der entsprechenden Bibliotheksfunktion erfüllt sein müssen. Triviale bzw. selbstverständliche Bedingungen werden nicht erläutert. Insbesondere die Allokation von Speicher für übergebene Parameter wird als selbstverständlich vorausgesetzt. Anschließend wird Ihnen die Bedeutung der einzelnen Parameter erklärt. Ähnlich den Vorbedingungen werden Ihnen abschließend zur Funktionserläuterung die Bedingungen erläutert, die Sie vorfinden, wenn die Bibliotheksfunktion Ihre Arbeit beendet hat.

7.1. ACLFormat.DLL Diese Bibliothek bietet zwei mächtige Funktionen die das Neuerstellen von ArchiCrypt Live © Laufwerken übernehmen und eine Funktion die es Ihnen ermöglicht, das Passwort eines Laufwerkes zu ändern. Gleichzeitig befinden sich innerhalb der Bibliothek Funktionen, die zur Generierung von Zufallsdaten und, damit verbunden, zur Schlüsselgenerierung genutzt werden. Der Zufallszahlengenerator nutzt dabei einen Maus- und einen Tastaturhook. Gleichzeitig werden verschiedene Windows API-Aufrufe getätigt. Der dadurch aufgebaute Zufallszahlenpool wird herangezogen, wenn es um den Masterkey des Laufwerkes und um den SALT Wert für den Nutzerschlüssel geht. Die genauen Abläufe bei der Schlüsselgenerierung werden weiter unten beschrieben. Die Hooks werden in dem Moment installiert, in dem die DLL in den Adressraum eines Prozesses geladen wird und deinstalliert, wenn die DLL vom Prozess gelöst wird. Die DLL prüft im Rahmen der Initialisierung, unter welchem Betriessystem gearbeitet wird. Gleichzeitig wird in dieser Phase zum Treiber Verbindung aufgenommen. Tritt während dieses Vorganges ein Fehler auf, liefern alle Funktionen die auf die Bibliothek zugreifen als Statuswert ACL_ERR_DRIVER_NOT_ATTACHED zurück, falls kein Treiber installiert ist, bzw. ACL_ERR_DRIVER_VERSION, falls die Version des installierten Treibers nicht korrekt ist, oder ACL_ERR_DRIVER_RESPONSE, falls der Treiber nicht auf Anfragen antwortet. Diese Fehler sind kritischer Natur. D.h. der Fehler kann im allgemeinen nicht ohne Programmneustart behoben werden. Unter umständen ist eine Neuinstallation des Treibers und ein Reboot des Rechners nötig.

7.1.1.

Anlegen eines neuen Laufwerkes (dateibasiert)

Mit dieser Funktion können Sie dateibasierte Laufwerke erstellen. Copyright 1998-2003 Dipl.-Ing. Patric Remus - Seite 11 von 11 -

int CreateNewVolume(

);

const char* szDeviceNameAndPath, const char * szPassword, __int64 * nFileSizeInKByte, PROGRESS fpProgress, CIPHER_ID CipherID, DWORD dwProgressDummy1, DWORD dwProgressDummy2

7.1.1.1. Vorbedingungen Auf dem Ziellaufwerk liegen für den aktuellen Nutzer entsprechende Schreib-/Leserechte vor. (sonst evtl. Fehlercode ACL_ERR_ACCESS_DENIED) nFileSizeInKByte > 64 und < 2 Gigabyte bzw. 32 Gigabyte Auf dem Ziellaufwerk ist Speicherplatz der Größe nFileSizeInKByte vorhanden!! Die Angabe von 80 bedeutet z.B.,dass ein Laufwerk der Größe 80 Kilobyte erstellt werden soll. Die Datei szDeviceNameAndPath existiert noch nicht!!! ansonsten wird, verursacht durch CreateFile(...), ein ACL_ERR_OS_ERROR zurückgeliefert!!! Das Passwort umfasst mindesten 1, höchstens jedoch 100 Zeichen

7.1.1.2. Parameter [IN]

const char * szDeviceNameAndPath z.B. "G:\\PatricRemus.acl";

[IN]

const char * szPassword z.B. "GeheimesPasswort"; mindestens 1 Zeichen, höchstens 100

[IN]

__int64 *nFileSize z.B. 1024; Hier übergebene Größe wird als Angabe in Kilobyte interpretiert!!!! Der Wert muss im Intervall [64 KByte , 2 Gigabyte] liegen.

[IN]

PROGRESS fpProgress;Funktionszeiger auf eine Fortschrittsfunktion Der Typ PROGRESS ist definiert als: typedef int (_stdcall * PROGRESS) (int,int,DWORD,DWORD); Hat der zweite int Wert den Wert ACL_PROGRESS_INIT, können Sie Ihre Fortschrittsanzeige initialisieren. Sie sollten den Maximalwert auf 100 einstellen, da in den Folgeaufrufen der prozentualle Fortschritt gemeldet wird. Falls der zweite Wert ACL_PROGRESS_PERCENTAGE_DONE ist, gibt der erste Wert an wie viel Prozent des Erstellprozesses bereits abgeschlossen sind. Copyright 1998-2003 Dipl.-Ing. Patric Remus - Seite 12 von 12 -

#define ACL_PROGRESS_INIT #define ACL_PROGRESS_PERCENTAGE_DONE

1 2

Geben Sie aus der Progessfunktion 0 zurück, wenn der Erstellvorgang fortgeführt werden soll, und > 0 wenn der Vorgang abgebrochen werden soll. Die beiden DWORD Parameter enthalten die Werte von DWORD dwProgressDummy1 und DWORD dwProgressDummy2 der Funktion CreateNewVolume(...) [IN]

CIPHER_ID: Eine Kennzahl zur Auswahl des Verschlüsselungsalgos. Gültig sind 11 für AES und 99 für BLOWFISH; cipherid{ID_AES = 11, ID_BLOWFISH = 99} CIPHER_ID;

[IN]

dwProgressDummy1 und dwProgressDummy2 sind zwei frei nutzbare Parameter. Die hier übergebenen Werte erhalten Sie unverändert beim Aufruf Ihrer PROGRESS Callbackfunktion zurück. Durch Nutzung dieser Parameter vermeiden Sie globale Variablen.

7.1.1.3. Rückgabewert und Nachbedingung Rückgabe von ACL_ERR_SUCCESS Datei szDeviceNameAndPath wurde mit Passwort szPassword in Größe nFileSize erstellt.

7.1.2.

Anlegen eines neuen Laufwerkes (raw Modus)

Mit dieser Funktion können Sie physikalische ArchiCrypt Live © Partitionen erstellen. Zur Zeit ist es damit möglich, Disketten unter Win NT/2K/XP in einem speziellen Format zu betreiben. int CreateNewRawDevice(

const char* szRawDevice, const char * szPassword, PROGRESS fpProgress, CIPHER_ID CipherID, DWORD dwProgressDummy1, DWORD dwProgressDummy1 )

7.1.2.1. Vorbedingungen Betriebssystem == NT/2k/XP Die physikalische Partition umfasst höchstens 2 Gigabyte Auf dem Ziellaufwerk liegen für den aktuellen Nutzer entsprechende Schreib-/Leserechte vor. (sonst evtl. Fehlercode ACL_ERR_ACCESS_DENIED).

Copyright 1998-2003 Dipl.-Ing. Patric Remus - Seite 13 von 13 -

Falls das Ziellaufwerk Daten enthält, werden diese auf jeden Fall überschrieben! Die Daten sind verloren! Also, vorher auf vorhandene Daten prüfen, und den Benutzer über Dialoge fragen, ob er sicher ist, dass er die Daten löschen möchte! Das Passwort umfasst mindesten 1, höchstens jedoch 100 Zeichen Die Ermittlung vorhandener physikalischer Partitionen ist insbesondere in Multibetriebssystemumgebungen problematisch. Unterschiedliche Dateisysteme (FAT in seinen Varianten, NTFS, Linux spezifisches Dateisystem) führen dazu, dass die Nutzersicht nicht die physikalischen Gegebenheiten wiederspiegelt. Insbesondere die Abbildung von Bezeichnungen auf physikalischer Ebene mit Bezeichnern, die der Nutzer interpretieren kann ist fast unmöglich (in Multidateisystemumgebungen!!). Die Aussage: „ \device\harddisk0\Partition1 entspricht aus Nutzersicht Laufwerk D:\ mit der Bezeichnung Daten“, ist nicht möglich! Der Einsatz dieser Funktion empfiehlt sich daher nur auf Systemen mit klar definierter und bekannter Hardwarekonfiguration.

7.1.2.2. Parameter [IN]

const char * szRawDevice z.B. "\\Device\\Floppy0" oder \\Device\\Floppy1

[IN]

const char * szPassword z.B. "GeheimesPasswort"; 1 Zeichen, höchstens 100

mindestens

Hier wird immer die Größe der gesamten Partition als Zielgröße gewählt. Entsprechend werden entsprechende Fehlercodes erzeugt, falls die Partition nicht die Mindestanforderungen an Größen erfüllt. [IN]

PROGRESS fpProgress;Funktionszeiger auf eine Fortschrittsfunktion Der Typ PROGRESS ist definiert als: typedef int (_stdcall * PROGRESS) (int,int,DWORD,DWORD); Hat der zweite int Wert den Wert ACL_PROGRESS_INIT, können Sie Ihre Fortschrittsanzeige initialisieren. Sie sollten den Maximalwert auf 100 einstellen, da in den Folgeaufrufen der prozentualle Fortschritt gemeldet wird. Falls der zweite Wert ACL_PROGRESS_PERCENTAGE_DONE ist, gibt der erste Wert an wie viel Prozent des Erstellprozesses bereits abgeschlossen sind. #define ACL_PROGRESS_INIT 1 #define ACL_PROGRESS_PERCENTAGE_DONE 2 Copyright 1998-2003 Dipl.-Ing. Patric Remus - Seite 14 von 14 -

Geben Sie aus der Progessfunktion 0 zurück, wenn der Erstellvorgang fortgeführt werden soll, und > 0 wenn der Vorgang abgebrochen werden soll. Ein bereits erstellte Datei wird im Falle eines Abbruchs gelöscht. Die beiden DWORD Parameter enthalten die Werte von DWORD dwProgressDummy1 und DWORD dwProgressDummy2 der Funktion CreateNewRawDevice (...) [IN]

CIPHER_ID: Eine Kennzahl zur Auswahl des Verschlüsselungsalgos wie unten definiert!!! Gültig sind 11 für AES und 99 für BLOWFISH;

cipherid{ID_AES = 11, ID_BLOWFISH = 99} CIPHER_ID; [IN]

dwProgressDummy1 und dwProgressDummy2 sind zwei frei nutzbare Parameter. Die hier übergebenen Werte erhalten Sie unverändert beim Aufruf Ihrer PROGRESS Callbackfunktion zurück.

7.1.2.3. Rückgabewert und Nachbedingung .....

Copyright 1998-2003 Dipl.-Ing. Patric Remus - Seite 15 von 15 -

8. Technische Beschreibung 8.1. Zusammenarbeit mit dem Treiber ArchiCrypt Live’s © Herzstück ist ein s.g. Dateisystemtreiber. Beim Start von Windows wird der Treiber geladen. Bereits nach dem Start werden vom Treiber alle Dateioperationen auf dem lokalen System überwacht. Durch diese Überwachung wird sichergestellt, dass die s.g. Trägerdateien, die Dateien also, die die virtuellen Laufwerke repräsentieren, nicht versehentlich gelöscht werden können. Wenn dem Treiber mitgeteilt wird, dass ein Laufwerk in das System einzubinden ist, wird der Treiber richtig aktiv. Er teilt Windows mit, dass ein neues Laufwerk im System aufgetaucht ist, und, dass alle Schreib-/Leseoperationen über ihn, den Treiber, abzuwickeln sind. Ebenso, wie zum Beispiel alle Daten die von oder zu einem CD-ROM Laufwerk gehen, über einen speziellen Treiber geleitet werden, übergibt Windows im Falle einer Schreiboperation die zu schreibenden Daten an den ArchiCrypt Live © Treiber. Sollen Daten von einem ArchiCrypt Live © Laufwerk gelesen werden, meldet Windows diesen Wunsch an den Treiber. Dieser führt dann alle Schreib-/ und Leseoperationen durch. NT/2K/XP Anwendung mit Engine Bibliotheken

ArchiCrypt Live © Treiber

%fF&7//hh(jk

Klartext Copyright 1998-2003 Dipl.-Ing. Patric Remus - Seite 16 von 16 -

Die Anwendung selbst merkt den Unterschied zwischen einem konventionellen Laufwerk und einem ArchiCrypt Live © Laufwerk nicht. Die Arbeit mit diesem Laufwerk gestaltet sich also für den Benutzer völlig transparent. Nachdem das Laufwerk mit Hilfe der Mount Funktion in das System eingebunden wurde, kann der Benutzer das Laufwerk wie jedes andere ansprechen. Um ein solches Laufwerk anzumelden, benötigen Sie die Funktion Mount aus der Bibliothek. Diese bindet das Laufwerk ein, und meldet dem Betriebssystem, dass für dieses Laufwerk alle Ein-/Ausgabeoperationen über den ArchiCrypt Live © Treiber erfolgen sollen. Zum Entfernen des Laufwerkes aus dem System benötigen Sie die Funktion UnMount. Achten Sie darauf, dass Laufwerke nur dann geschlossen werden können, wenn keine Anwendung im System auf das zu schließende Laufwerk zugreift. Meist wird das Schließen durch ein offenes Windows-Explorer-Fenster verursacht, welches den Inhalt des betroffenen Laufwerkes anzeigt. Unter Windows 2000 und XP ist es möglich, Laufwerke trotz geöffneter Dateien zu schließen. Allerdings kann das System durch dieses Vorgehen instabil werden.

8.2. Vorgänge beim Formatieren 8.2.1.

Datenträgerstrukturen

Das Formatieren erstellt Dateien, die intern das FAT Dateisystem nutzen. Das ursprüngliche FAT-Dateisystem ist 1977 von Microsoft entwickelt worden, um das Speichern von Daten auf Diskettenlaufwerken zu vereinfachen. ArchiCrypt Live © Laufwerke nutzen größenabhängig die FAT Systeme FAT 12 oder FAT 16, seit Version 4.0.1 nutzt die ArchiCrypt Live © Engine auch das wesentlich komplexere, aber deutlich flexiblere FAT32 System. FAT12 Ein FAT-Eintrag ist ein 12-Bit-Wert, mit dem 4086 Zuordnungseinheiten erfasst werden können. Aus diesem Grund wird FAT12 nur bei Datenträgern bis zu einer Größe von 16 MB, also vorwiegend bei Disketten benutzt. FAT16 FAT 16 ist für Festplatten mit einer Größe von bis zu zwei Gigabyte geeignet. Ein FAT-Eintrag ist hier ein 16-Bit-Wert, der maximal 65.526 (2^16) Zuordnungseinheiten ermöglicht. Bei einer maximalen Cluster-Größe von 32 Kilobyte können mit FAT16 also Datenträger bis zu zwei Gigabyte verwaltet werden. Copyright 1998-2003 Dipl.-Ing. Patric Remus - Seite 17 von 17 -

FAT32 Entgegen der Annahme, nutzt FAT32 nicht 32 BIT für jeden FAT Eintrag, sondern lediglich 28. Mit diesen 28 BIT und einer bestimmten maximalen Clustergröße ist es theoretisch möglich, Datenträger in einer Größe von 2 Terrabyte zu betreiben. In der Praxis sieht dies jedoch ganz anders aus. Jedes Microsoft Betriebssystem hat andere Maximalwerte der Größe bei der Unterstützung von FAT32 Laufwerken. Selbst Windows 2000 und Windows XP unterstützen FAT32 nur bis zu einer Größe von 32 Gigabyte. Dabei wird sogar unterschieden, ob ein solches Laufwerk erstellt, oder nur gelesen/beschrieben werden soll. ArchiCrypt Live © Laufwerke basieren bekanntlich auf s.g. Trägerdateien. Um entsprechend große Laufwerke betreiben zu können, muss das verwendete Betriebssystem also auch mit entsprechend großen Dateien umgehen können. Um die Trägerdateien zwischen den verschiedenen MS-Betriebssystemen austauschbar, also kompatibel, zu halten, bleibt letztlich nur die Variante zu wählen, welche von allen unterstützt wird. Daher bleibt die Maximalgröße vorerst auf 2 Gigabyte begrenzt, sofern auf Austauschbarkeit der Daten wert gelegt wird. Sollen die Daten nur auf Systemen gelesen werden, auf denen Windows 2000 oder Windows XP installiert ist, kann man Trägerdateien bis zu 32 Gigabyte erstellen. FAT32 bringt gleichzeitig enorme Vorteile hinsichtlich der Stabilität und des Handlings mit sich. Die Anzahl der Datei-/Verzeichniseinträge in oberster Verzeichnishierarchie (ROOT) ist nicht mehr auf 512 Einträge begrenzt. FAT und BOOTsektor sind doppelt vorhanden und garantieren somit größere Datensicherheit. Wesentlich leistungsfähiger ist das NTFS Format, welches den Einsatz entsprechend formatierter Trägerdateien jedoch auf die NT Systeme beschränkt. Um eine Trägerdatei in das Format NTFS zu konvertieren, muss der Träger zunächst im Format FAT16/32 über die DLL Funktion erstellt, anschließend gemountet und schließlich mit Betriebsystemmitteln im NTFS Format formatiert werden. BEACHTEN Sie bitte, dass NT 4.0 kein FAT32 Format versteht, Trägerdateien also höchstens 511 MByte groß sein sollten. Die folgende Tabelle stellt die Partitionsgröße in Abhängigkeit von der Cluster-Größe dar. Cluster-Größe 2 KB 4 KB 8 KB 16 KB 32 KB

Maximale Partitionsgröße bei FAT16 128 MB 256 MB 512 MB 1 GB 2 GB

Copyright 1998-2003 Dipl.-Ing. Patric Remus - Seite 18 von 18 -

8.2.1.1. Header Jedes ArchiCrypt Live © Laufwerk besitzt einen unverschlüsselten Sektor. In diesem Sektor sind verschiedene Kennzahlen gespeichert, die der Treiber benötigt, um das Laufwerk korrekt anzusprechen. Nachfolgende Tabelle gibt einen genauen Überblick über den Aufbau des Laufwerksheaders. ...

8.2.1.2. Bootsektor (FAT 16) Der Bootsektor für das FAT 32 System ist ähnlich aufgebaut. Der Aufbau des BIOS-Parameter Blocks unterscheidet sich in einigen Teilen. An anderen Stellen müssen die entsprechenden Werte „FAT-32“-gerecht belegt werden. Der Bootsektor liegt bereits im Verschlüsselten Teil des ArchiCrypt Live Laufwerkes.

...

8.2.2.

Schlüsselgenerierung

Die Schlüsselgenerierung ist ein hochkomplexer Vorgang, der neben der Nutzereingabe verschiedene Mechanismen nutzt, die das „Brechen“ des Passwortschutzes erheblich erschweren. ...

Copyright 1998-2003 Dipl.-Ing. Patric Remus - Seite 19 von 19 -

Maus UserKey „Geheim“

Tastatur

Betriebssystem

SALT [20 Byte] AB BF FF EF 5A.. Zufallszahlenpool

KDF PKCS5 SHA

AB BF FF EF 5A 53 23 12 EA A3 1B 2D DF EE 1000x

INIT Encryption

DK Derived Key

Encryption AES | Blowfish

E1 24 66 ....6F D8

Masterkey 12 EA A3 1B ...

Masterkey

Prüfwert 6F D8

23 AE 4B F6 ...

...

8.3. Verschlüsselung AES (Rijndael ) und Blowfish sind so genannte Blockverschlüsselungsmethoden, das heißt die zu verschlüsselnde Datei wird in gleichgroße Blöcke geteilt, die einzeln umgeformt werden. Es können nur vollständige Blöcke verschlüsselt werden: das bedeutet, dass die verschlüsselte Datei leicht größer als die Originaldatei ist. Je nach Betriebsmodus werden danach die einzelnen Blöcke noch miteinander verknüpft (z.B. ECB, CBC). Die Verschlüsselung der einzelnen Blöcke wird durch mehrmaliges Wiederholen verschiedener Algorithmen erreicht. Das Ziel ist es, eine möglichst homogene Durchmischung der Bits zu erreichen. In der verschlüsselten Datei sollten möglichst keine Regelmäßigkeiten mehr auftreten, denn durch solche kann es möglich sein, Rückschlüsse auf die Botschaft oder den Schlüssel zu finden. Das Bitmuster sollte rein zufällig aussehen. Eine verschlüsselte Datei lässt sich somit kaum noch komprimieren. Die Verschlüsselung einer Botschaft erfolgt über drei verschiedene Methoden. In einer ersten werden Zeichen ersetzt; man spricht von monoalphabetischer Verschlüsselung oder von Substitution. Hier wird zum Beispiel 'a' durch 'x' und 'b' durch 'd' ersetzt. Danach werden die Positionen der Zeichen untereinander vertauscht. Zeichenkombinationen werden zum Beispiel paarweise in der Reihenfolge vertauscht ( '123456' wird zu '214365' ). Da die Verschlüsselung nur durch den Schlüssel und nicht durch den Algorithmus bestimmt ist, wird in einer letzten Methode der Schlüssel Copyright 1998-2003 Dipl.-Ing. Patric Remus - Seite 20 von 20 -

eingebunden. So wird jedes Zeichen mit dem Schlüssel nochmals umgewandelt. Beispielsweise wird '5' mit dem Schlüssel '3' zu '8' ( 5+3 = 8 ). Die ganze Prozedur wird mehrmals über die gesamte Botschaft ausgeführt. Die Ver- und Entschlüsselung wird in ArchiCrypt Live © auf Sektorebene durchgeführt. Ein Sektor umfasst stets 512 Byte. Je nach verwendetem Algorithmus wird dieser zur Ver- oder Entschlüsselung unterschiedlich oft aufgerufen, bis letztlich der gesamte Sektor bearbeitet wurde. Die Anzahl der Aufrufe ist dabei von der Blockgröße abhängig. Für Blowfish mit einer Blockgröße von 64 BIT bedeutet dies, dass der Algorithmus 64 Mal durchlaufen wird, bei AES in der Umsetzung mit Blockgröße 128 BIT, genau 32 Mal. Der Modus, in dem die Algorithmen die Ver- und Entschlüsselung durchführen, ist der s.g. CBC Mode (Cipher Block Chaining). Der Initialisierungsvektor ist dabei eine Funktion des Laufwerksinitialisierunsgvektors, der Sektornummer und des Sektorinhaltes; der SektorIV ist also dynamisch.

8.3.1.

Blowfish

Blowfish wurde von Bruce Schneier 1995 entwickelt. Es ist ein 64 Bit Blockverfahren mit einer variablen Schlüssellänge von bis zu 448 Bits. Bei der Entwicklung des Verfahrens wurden die Schwerpunkte auf Schnelligkeit, Kompaktheit (benötigt nur 5KByte Speicher bei entsprechender Implementierung) und Einfachheit gelegt. Durch die Einfachheit sollen Implementierungsfehler vermieden werden. Die Schlüssellänge kann derzeit als sicher angesehen werden. Bei der in der ArchiCrypt Live Engine verwendeten Implementierung handelt es sich um die Reference source code for Blowfish Implementierung, zu beziehen unter: http://www.counterpane.com/ ArchiCrypt Live: Schlüssellänge

256 BIT

Blockgröße Rundenzahl

64 BIT 16

8.3.2.

AES Advanced Encryption Standard

Im September 1997 gründete das NIST (National Institute of Standards and Technology) den AES und suchte weltweit unter Sicherheitsfirmen und Universitäten nach einem neuen Algorithmus zur Datenverschlüsselung. Ziel war es, den bisherigen Standard DES (Data Encryption Standard) und dessen Erweiterung tripel DES zu ersetzen, da diese in Zukunft nicht mehr Copyright 1998-2003 Dipl.-Ing. Patric Remus - Seite 21 von 21 -

vollumfänglich den hohen Sicherheitsanforderungen genügen. Zudem ist der sichere tripel DES mit großem Rechenaufwand verbunden, was ihn stark verlangsamt und ihn somit für große Datendurchsätze ungeeignet macht. In einer ersten Runde wurden 15 Kandidaten für eine weitere Qualifikation zugelassen. Aus diesen wurden fünf Finalisten ausgewählt: MARS IBM (represented by Nevenko Zunic) RC6TM RSA Laboratories (represented by Burt Kaliski) Rijndael Joan Daemen, Vincent Rijmen Serpent Ross Anderson, Eli Biham, Lars Knudsen Twofish B.Schneier,J.Kelsey,D.Whiting D.Wagner,C.Hall,N.Ferguson Nach öffentlicher Prüfung wurde im Oktober 2000 der Rijndael als neuer Standard ausgewählt. Auch nach vielen kryptografischen Angriffen konnten keine Sicherheitslücken festgestellt werden, jedoch wie bei allen kryptografischen Verfahren kann die Sicherheit nicht bewiesen werden. Auch den anderen Mitbewerbern konnten keine Sicherheitslücken nachgewiesen werden, der Algorithmus Rijndael überzeugte jedoch in der Gesamtbewertung. Ausschlaggebend war die optimale Kombination von Flexibilität der Schlüssellänge und Blockgrösse, Geschwindigkeit, einfache Implementierbarkeit und Erweiterbarkeit. Nach Berechnungen des NIST braucht ein Rechner, der DES in einer Sekunde knacken könnte (255 Schlüsseltests pro Sekunde), für Rijndael mit 128 Bit Schlüssel 149 Billionen Jahre Rechenzeit. Das Universum ist weniger als 20 Milliarden Jahre alt. Das Verfahren der Datenverschlüsselung nach Rijndael (gesprochen "rheindahl") wurde von den belgischen Kryptoanalytikern Joan Daemen und Vincent Rijmen entwickelt. Inspiriert wurden sie von "SQUARE", einer 128-Bit Blockchiffre die ebenfalls von Joan Daemen und Vincent Rijmen stammt. Rijndael ist eine symmetrische Blockchiffre mit Schlüssellängen von 128 - 256 Bit grundsätzlich in Schritten von 32 Bit. Im weiteren können verschiedene Blockgrössen gewählt werden, ebenfals im Bereich von 128 - 256 Bit. Beim Entwurf wurde auf alle bekannten Attacken, wie lineare und differenzielle Kryptoanalyse eingegangen, sodass ein Angriff mit allen herkömmlichen Verfahren nicht effizienter ist als ein Brute-Force-Angriff . Der Rijndael Algorithmus ist ein bis auf das letzte Detail erarbeitetes Verfahren zur Datenverschlüsselung. Die große Flexibilität des Algorithmus' erlaubt einen weiten Einsatz in der Kryptographie. Das NIST erhofft sich das Verfahren für die nächsten 20-30 Jahre einsetzen zu können. Bei der in ArchiCrypt Live zur Anwendung kommenden Implementierung handelt es sich um eine Referenzimplementierung zu finden unter http://www.esat.kuleuven.ac.be/~rijmen/rijndael/.

Copyright 1998-2003 Dipl.-Ing. Patric Remus - Seite 22 von 22 -

Die Implementierung der Verschlüsselung orientiert sich am Dokument FIPS197 (FIPS = Federal Information Processing Standards Publication 197; vom 26 November 2001). Mit der in diesem Dokument eingeführten Nomenklatur beschreiben folgende Kenngrößen die Implementation des Verfahrens in ArchiCrypt Live: Schlüssellänge

256 BIT

Blockgröße [gemäß Standard]

128 BIT

Mit Schlüssellänge und Blockgröße Ist die Rundenzahl festgelegt auf:

8.3.3.

14

SHA512

Die eingesetzten Verschlüsselungsverfahren haben die Eigenschaft, dass die einzige Möglichkeit, unbefugt an Daten zu gelangen der s.g. Brute-Force Angriff ist. ArchiCrypt Live setzt die besonders sicheren Varianten mit einer Schlüssellänge von 256 BIT ein. Das von jeweilige Passwort wird dabei nicht direkt eingesetzt, sondern dient als Eingangsgröße für eine s.g. kryptografische Einweg-Hash-Funktion. Die notwendige Funktion muss 256 BIT liefern, die gegen s.g. Kollisionsattacken resistent sind. Die Umsetzung in ArchiCrypt Live orientiert sich dabei am SHS (Secure Hash Standard) des NIST (National Institut of Standards and Technology) und setzt das Verfahren SHA-512 ein. Einige fehlerhaft implementierte Programme nutzen SHA-256 um einen Schlüssel der Länge 256 BIT zu erzeugen, da ihre Entwickler irrtümlich davon ausgehen, dass alle 256 BIT kryptografisch sicher sind. Genaue Informationen dazu finden sich im Internet unter http://csrc.nist.gov/cryptval/shs.html

Copyright 1998-2003 Dipl.-Ing. Patric Remus - Seite 23 von 23 -

9. Installation der Engine Die nachfolgenden Hinweise beziehen sich zum einen auf die Namensgebung von Dateien, zum anderen auf die eigentliche Installation der Engine.

9.1. Namensgebung von Dateien ArchiCrypt Live Engine wird von uns selbst im Produkt ArchiCrypt Live eingesetzt. Um zu gewährleisten, dass die Produkte mit den Ihren koexistieren können, ist es notwendig, hinsichtlich der Namensgebung einige Grundsätze einzuhalten und bestimmte Absprachen zu treffen. Teilen Sie uns mit, welche Dateiendung Sie für die zu schützenden Träger/Containerdatein gewählt haben. Achten Sie bei Ihrer Wahl darauf, dass die Endung keine weithin genutzte Dateiendung ist. Den Service, der mit dem Namen ACLSymbols geliefert wird, können Sie theoretisch nennen wie Sie möchten. Halten Sie jedoch bitte Rücksprache um unnötige Kollisionen zu verhindern. Gleiches gilt für den Treiber, der mit dem Namen acl9x2.sys bzw. aclive2.sys geliefert wird. Halten Sie sich an den Grundsatz, DLL nicht in Systemverzeichnisse zu kopieren. Installieren Sie ACLMount und ACLFormat im entsprechenden Anwendungsverzeichnis.

9.2. Installation unter Win9x und Windows ME Unter diesen Betriebssystemen ist die Installation wie folgt durchzuführen: Kopieren Sie die Datei ACL9x2.vxd, die Sie nach Rücksprache mit uns umbenennen, in das Verzeichnis C:\Windows\System32\IOSUBSYS. Das Betriebssystem lädt beim Start alle Treiber, die sich in diesem Verzeichnis befinden. Entsprechend müssen Sie, um die Installation fertigzustellen, den Nutzer auffordern, das System neu zu starten. Auf gleiche Weise läuft die Deinstallation. Die Treiberdatei aus dem Verzeichnis löschen und Rechner neu starten.

9.3. Installation unter Win NT, 2000 und XP Die Installation unter diesen Betriebssystemen ist etwas komplizierter. Der Nutzer der die ArchiCrypt Live Engine installiert, bzw. das Programm welches die Installation vornimmt benötigt lokale Administratorrechte. Die Installation und Deinstallation kann dynamisch, das heißt im laufenden Betrieb erfolgen. Neben dem eigentlichen Treiber kommt unter den genannten Betriebssystemen ein Service zum Einsatz. Dieser Service übernimmt je nach Betriebssystem Copyright 1998-2003 Dipl.-Ing. Patric Remus - Seite 24 von 24 -

unterschiedliche Aufgaben. Allgemein führt der Service bestimmte Befehle aus, die Administrator- bzw. Systemrechte erfordern. Erst durch den Service ist es somit möglich, die Engine Nutzern zur Verfügung zu stellen, die selbst nicht über ausreichend Rechte verfügen. Der Service nutzt den Treiber und erstellt einen Kommunikationskanal zu diesem. Falls sich kein Kommunikationskanal erstellen lässt, wird der Service nicht gestartet. Dadurch kann auch die Anwendung, die über die Funktionsbibliotheken auf die Engine zugreift, nicht einwandfrei funktionieren. Der Status des Service lässt sich über die Bibliothek bzw. über direkte API Aufrufe ermittelt werden. Die Abhängigkeit des Services von dem Systemtreiber impliziert eine bestimmte Reihenfolge bei der Installation. Zunächst muss der Treiber installiert und gestartet werden. Erst nach der erfolgreichen Installation darf dann der Service installiert und gestartet werden. Die Deinstallation ist noch ein wenig kritischer. Der Treiber wird erst dann deinstalliert, wenn keine Anwendung im System mehr einen s.g. Kommunikationskanal zu ihm geöffnet hat, und, wenn keine Laufwerke mehr gemountet/geladen sind. Durch diese Fakten ergibt sich das folgende Vorgehen: Alle Laufwerke schließen. Service deinstallieren Treiber deinstallieren Da die Funktionen zur Arbeit mit Services und Treibern nicht unbedingt zum Handwerkszeug eines Programmierers gehören, haben wir eine Bibliothek erstellt, die Sie ausschließlich im Zusammenhang mit der Installation und Deinstallation der ArchiCrypt Live Engine nutzen dürfen.

9.3.1.

Die Funktionsbibliothek zur Installation

Die Bibliothek stellt vier Funktionen zur Verfügung, mit deren Hilfe Sie eine Installation und Deinstallation durchführen können. Zudem stellt sie eine Funktion bereit, mit der Sie feststellen können, ob der aktuelle Nutzer über Administratorrechte verfügt.

9.3.1.1. Fehlercodes Fehlercode

SERV_ERR_GEN_ERROR SERV_ERR_SUCCESS SERV_ERR_SCM_ATTACH

Wert Bedeutung -99 Allgemeiner Fehler 0 Die Funktion hat die Aufgabe erfolgreich durchgeführt 1 Fehler beim Verbinden mit dem Service Control Manager Copyright 1998-2003 Dipl.-Ing. Patric Remus - Seite 25 von 25 -

Fehlercode

Wert Bedeutung

SERV_ERR_SVC_OPEN

2

Fehler beim Öffnen des Service

SERV_ERR_SVC_QUERRY SERV_ERR_SVC_STATUS

3 4

Fehler beim Ausführen einer Statusabfrage Service hat ungültigen/unerwarteten Status

SERV_ERR_SVC_DELETE

5

Fehler beim Löschen des Service

SERV_ERR_SVC_EXISTANCE

6

Service existiert nicht

SERV_ERR_SCM_ADMIN_REQUIRE D SERV_ERR_SVC_CREATE SERV_ERR_SVC_START

7

Prozess verfügt nicht über Administratorrechte

8 9

Service konnte nicht erstellt werden Fehler beim Versuch den Service zu starten

SERV_ERR_SVC_RUNNING

10

Service konnte nicht richtig gestartet werden

SERV_ERR_DRIVER_CREATE SERV_ERR_NO_NT

11 12

Treiber konnte nicht installiert werden Fehler, kein NT Betriebssystem

9.3.1.2. Register Service Mittels dieser Funktion können Sie einen Service installieren und starten. Der Service wird dabei so installiert, dass er unter Systemkennung läuft und als Autostartservice ausgeführt wird. int RegisterService(

);

const char* ServiceName, const char * ServiceDisplayName, const char * ServicePathAndExeName

Parameter: ServiceName: ServiceDisplayName: ServicePathAndExeName:

Name des Service z.B. FileCRC Name wie er im Dienstemanager angezeigt wird z.B. FileCRC Service Pfad und Dateiname zum Service z.B. C:\Winnt\Dienste\FileCRCA.exe

Die Parameter werden anhand des nachfolgenden Screenshots erläutert:

Copyright 1998-2003 Dipl.-Ing. Patric Remus - Seite 26 von 26 -

ServiceName = Dienstname ServiceDisplayName = Anzeigename ServicePathAndExeName = Pfad zur EXE-Datei Der Parameter ServiceName ist von entscheidender Bedeutung. Die Deinstallation erfolgt einzig über diesen Parameter. Dies bedeutet, dass Sie bei der Wahl des Anzeigenamens mit äußerster Sorgfalt vorgehen müssen. Die Bezeichnung muss dabei eineindeutig sein. Rückgabe Fehlercode gemäß Fehlercodetabelle

9.3.1.3. Unregister Service Diese Funktion hält den gewünschten Service an und entfernt in aus dem System. int UnRegisterService (

Parameter: ServiceName:

const char *ServiceName ); Name des Service z.B. FileCRC

ServiceName muss dabei exakt mit der Bezeichnung übereinstimmen, die Sie bei der Installation mit RegisterService gewählt haben. Copyright 1998-2003 Dipl.-Ing. Patric Remus - Seite 27 von 27 -

Rückgabe: Rückgabe gemäß Fehlercodetabelle

9.3.1.4. Register Driver Mittels dieser Funktion können Sie einen Treiber installieren und starten. int RegisterDriver(

);

const char* DriverName, const char * DriverDisplayName, const char * DriverPathAndExeName

Parameter: DriverName: DriverDisplayName: DriverPathAndExeName:

Name des Treibers z.B. ACLive Anzeigename ACLive Treiber Pfad und Dateiname zum Treiber z.B. C:\Winnt\Dienste\FileCRCA.sys

Für die Parameter gilt entsprechendes wie unter RegisterService aufgeführt. Rückgabe: Rückgabe gemäß Fehlercodetabelle

9.3.1.5. Unregister Driver Stoppt den Treiber und deinstalliert diesen. int UnRegisterDriver(const char *DriverName); Parameter: DriverName:

Name des Treibers z.B. ACLive

Für die Parameter gilt entsprechendes wie unter UnregisterService aufgeführt. DriverName muss dabei exakt mit der Angabe unter RegisterDriver übereinstimmen. Rückgabe: Rückgabe gemäß Fehlercodetabelle

9.3.1.6. IsAdmin Die Funktion prüft, ab der aktuelle Nutzer unter dessen Kennung der Prozess ausgeführt wird, über Administratorrechte verfügt. Die Funktion ist nicht nötig um die restlichen Funktionen der Bibliothek zu nutzen, da diese selbst prüfen, ob ausreichend Rechte vorliegen. Copyright 1998-2003 Dipl.-Ing. Patric Remus - Seite 28 von 28 -

int IsAdmin(void); Parameter: Keine Rückgabe: Rückgabe gemäß Fehlercodetabelle. Falls Adminrechte vorliegen, wird der Wert SERV_ERR_SUCCESS zurückgegeben.

9.3.2.

Pseudecode für Installations- /Updateprozedur

In Ihrer Anwendung sollten Sie sicherstellen, dass lediglich eine Instanz aktiv ist. Falls Sie mehrere aktive Instanzen benötigen, stellen Sie sicher, dass Sie alle aktive Instanzen erreichen und gegebenenfalls beenden können. Dieses Verfahren ist notwendig, um zu gewährleisten, dass alle „Kommunikationskanäle“ zum Treiber geschlossen sind. Arbeiten Sie bitte mit einem Mutex via CreateMutex und nicht mit den beliebten aber fehlerträchtigen FindWindows Methoden. Mit Hilfe dieses Mutex können Sie in Ihrem Deinstallationsprogramm feststellen, ob noch eine Programminstanz geöffnet ist, die den Treiber an der erfolgreichen Deinstallation hindert. Pseudo-Code Installation/Update If not IsAdmin() then { GibNachrichtAus(‘Sie benötigen Administratorrechte zur Installation’); Abbrechen; } else if OneInstanceMutexAktiv() then { GibNachrichtAus(‘Sie müssen zunächst die Anwendung … beenden’); Abbrechen; } else if (SchließeAlleEventuellOffenenLaufwerke == FALSE) then { //Hier wird auf Funktionen der Bibliothek ACLMount.dll zurückgegriffen. GibNachrichtAus(’Sie müssen alle Anwendungen schließen, die auf ein noch geöffnetes Laufwerk zugreifen’); Abbrechen; } else //Sicherstellen, dass die eigene Anwendung keinen Kommunikationskanal //mehr zum Treiber unterhält und damit die //Deinstallation unterbrochen wird. Copyright 1998-2003 Dipl.-Ing. Patric Remus - Seite 29 von 29 -

if not (DriverDetach() == ACL_ERR_SUCCESS) then { GibFehlerMeldungAus; Abbrechen; } else if not (UnregisterService(.......) == SERV_ERR_SUCCESS) then { GibFehlerMeldungAus; Abbrechen; } else if not (UnregisterDriver(….) == SERV_ERR_SUCCESS) then { GibFehlerMeldungAus; Abbrechen; } else if not (RegisterDriver(….,….,….) == SERV_ERR_SUCCESS) then { GibFehlerMeldungAus; Abbrechen; } else if not (RegisterService(.......) == SERV_ERR_SUCCESS) then { GibFehlerMeldungAus; Abbrechen; }

10. Installationspaket ArchiCrypt Live NET Engine Für die NET- Version der Engine stellen wir ein Programm zur Verfügung, welches die Installation und Deinstallation der ArchiCrypt Live Engine übernimmt. Das Paket ACLEngine.exe verfügt über 2 grundsätzliche Modi, die es erlauben, die Installation mit einer grafischen Oberfläche auszuführen, oder die Installation unsichtbar ablaufen zu lassen. Im fensterlosen Modus werden keinerlei Dialoge oder Meldungen als Rückkopplung ausgegeben. Der Status der Installation wird über den ExitCode geliefert:

Copyright 1998-2003 Dipl.-Ing. Patric Remus - Seite 30 von 30 -

Fehlercode

ERR_SUCCESS_DO_RESTART

ERR_SUCCESS_WITHOUT_RESTART ERR_LIBRARY_NOT_FOUND

ERR_ADMIN_PRIVILEGES_REQUIRED

ERR_UNINSTALL_NOT_POSSIBLE_ WITH_THIS_VERSION

ERR_VOLUMES_MOUNTED

ERR_CRITICAL_INSTALLATION_ERROR

Wert Bedeutung 1 Erfolgreiche De-/Installation. Um die De-/Installation abzuschließen, muss der Rechner neu gestartet werden. 0 Erfolgreiche De-/Installation. Kein Neustart notwendig -3 Bibliothek für das Laden von Trägerdateien nicht gefunden. Das Installationsprogramm trägt die notwendige Bibliothek Huckepack und speichert die Datei bei Bedarf im temporären Verzeichnis. Der Fehler deutet auf eine Unstimmigkeit mit diesem Verzeichnis hin. -4 Der aktuelle Nutzer verfügt nicht über die notwendigen Rechte, um die Installation vorzubereiten. -5 Es ist eine Version installiert, die nicht mit dem aktuellen Installationsprogramm deinstalliert werden kann. -6 Es sind noch Laufwerke geladen. Diese müssen unbedingt zunächst geschlossen werden. Ein automatisches Schließen war dem Installationsprogramm nicht möglich! -7 Kritischer Fehler. De-/Installation des Services oder des Treibers war nicht möglich.

Neben den Modi, die steuern, wie die Installation mit dem Nutzer interagiert, gibt es die 2 Betriebsmodi, die festlegen, ob eine Installation oder Deinstallation durchgeführt werden soll. Die verschiedenen Betriebsmodi werden über Kommandozeilenparameter gesteuert. Installation mit GUI:

ACLEngine.exe

ohne GUI:

ACLEngine.exe /S bzw. ACLEngine.exe –S

Deinstallation mit GUI:

ACLEngine.exe /U bzw. ACLEngine.exe –U

ohne GUI:

ACLEngine.exe /U /S bzw. ACLEngine.exe –U -S Copyright 1998-2003 Dipl.-Ing. Patric Remus - Seite 31 von 31 -

WICHTIG: Die Datei ACLEngine.exe darf auf keinen Fall umbenannt werden!

11. Backup und Recovery Funktion ....

Copyright 1998-2003 Dipl.-Ing. Patric Remus - Seite 32 von 32 -