QuickBasic Tutorials
Autor: DarkBug Productions
Dieses Verfahren wird verwendet in CHEW Version 2.0 (engl.chew - kauen, zermalmen) - Download Beispielprogramm Vorwort: Dateiverschlüsselungen sind so alt wie die Computer selbst. Dabei sollten diese Daten immer "unlesbar" gemacht werden, um Manipulationen oder auch nur die Einsicht zu verhindern. Da ich jedoch keinem Programm traue, was ich nicht selber geschrieben habe, blieb mir keine andere Wahl, als mir ein Verschlüsselungsprogramm selbst zu schreiben. Die Routine muß folgende Voraussetzungen erfüllen:
Einleitung: Die recht hohe Sicherheit basiert auf einem gesteuerten Zufallsgenerator, der "Datenmüll" aus der Quelldatei erzeugt. Um die Verschlüsselungstiefe zu prüfen, habe ich den Datenblock von WAV und BMP Dateien verschlüsselt. Diesem Datenblock habe ich danach wieder den originalen Header verpaßt und geöffnet. Ergebniss: Aus einem recht unansehnlichen Bild von meiner Fresse wurde ein gleichmäßig, buntes, pixeliges (und recht beschauliches) Bild von überhaupt gar nichts. Aus einer klangvollen Musikdatei wurde ein gleichmäßiges, nervtötendes Rauschen. Arbeitsweise: Der Zufallsgenerator (RND) ist sicher nicht das, was der Name vermuten läßt. Denn in einem Computer passieren zwar "Unfälle", aber diese sind absolut nicht "zufällig". Der Zufallsgenerator (RND) kann zwar durch setzen eines Startwert (RANDOMIZE) gesteuert werden, aber er produziert dabei auch wirklich nur "zufällige" Zahlenreihen, auch wenn der Startwert immer der selbe ist. Um immer die selben "zufälligen" Zahlenreihen zu ermitteln, muß der RND einen "RESET" ausführen. Das geht über den Befehl "A = RND(-1)". Dieses Kommando resetiert den Zufallsgenerator vollständig, daß dieser danach keine "zufälligen" Zahlen mehr ermitteln kann (auch wenn diese immer noch "zufällig" aussehen). Nach einem solchen "RESET" kann der RND mit einem Startwert weiter gesteuert werden. Das Ergebnis sind "zufällig-aussehende" Zahlenreihen, die bei gleichen RANDOMIZE die gleichen Werte haben. Wenn nun die Wertebereiche des RND auf Bytegröße (0-255) begrenzt werden, kann man diese "nicht zufälligen" Zahlenreihen für eine "hundsgemeine" Verschlüsselung verwenden. Obwohl der RANDOMIZE nur Zahlenwerte mit maximal 64bit verarbeiten kann, ist eine Verschlüsselung dieser Art kaum (oder nur mit gigantischem Aufwand) zu knacken und der Aufwand würde in keinem Verhältnis zum Nutzen stehen. Im Beispielprogramm habe ich einen String (Block$ = "Arbeitsweise Chew") benutzt, der die Arbeitsweise veranschaulichen soll. Die Bildschirmausgabe ist zweckgebunden einfach.
|
|||