» Talarius, ein Verschlüsselungsprogramm mit Transposition auf Bit-Ebene bis 131072 Faktorielle!

C++ Debuging problem beim LernenNeuen Thread eröffnenNeue Antwort erstellenleft expression must be integral - Fehlermeldung mit Open Watcom Compiler
AutorNachricht
Junior 
Name: Voller Name als Anagramm: Fitje Weshoms
Geschlecht:
Fahrzeug: Yamaha YZF R6 Thundercat
Anmeldedatum: 15.07.2012
Beiträge: 92
Wohnort: Amberg, Oberpfalz
20.05.2013, 17:04
zitieren

Hallo Leute,


Hier ein Verschlüsselungs-Programm, das ich mal für den gcc Compiler geschrieben habe.
Talarius5 ist für die Linux-Konsole geschrieben, Talarius 12 mit Qt für KDE.

Zuerst einmal etwas grundlegendes:

Sämtliche Angaben sind ohne Gewähr und nur für Neulinge zu betrachten, also nur zur Einführung und als Anregung der Gedanken. Den Vertretern staatlicher Organe die diese Zeilen lesen, sei folgendes gesagt: Im Mittelalter gab es den italienischen Politiker und Geschichtsschreiber Namens Niccolò Machiavelli (*03.05.1469 bis +22.06.1527). Eines seiner Werke lautet Il Principe (Der Fürst).

In Abschnitt Nummer XXIII (23)
„Quomodo adulatores sint Fugiendi“ (Wie Schmeichler zu meiden sind) heißt es unter anderem:

„Berät sich ein Fürst, der selbst nicht klug ist, mit mehreren, so wird er nie
übereinstimmende Ratschläge erhalten und er selbst wird Sie nicht in Einklang
bringen können; jeder seiner Ratgeber wird an seinen eigenen Vorteil denken,
und der Fürst wird Sie weder zurechtweisen noch durchschauen können.“

Zusammengefasst heißt das:
„Gute Ratschläge, von wem Sie auch kommen mögen, erwachsen notwendig aus der Klugheit des Fürsten und nicht die Klugheit des Fürsten aus guten Ratschlägen.“ Um mit Machiavelli zu sprechen.

Etwas anders
könnte man dies mit Goethe ausdrücken. In seinem „Faust“ Der Tragödie zweiter Teil“(Klassische Walpurgisnacht) durch einen Satz von Mephistopheles:

„Das sind die saubern Neuigkeiten,
Wo aus der Kehle von den Saiten,
Ein Ton sich um den andern flicht.
Das Trällern ist bei mir verloren,
Es krabbelt wohl mir um die Ohren,
Allein zum Herzen dringt es nicht.„

Es gibt im Grunde genommen drei Grundarten der Verschlüsselung von Nachrichten:

Art der Technik.................... Bedeutung
1.Steganographie.................Verstecken von Nachrichten
2.Substitution........................Ersetzen der Bestandteile(Buchstaben) einer Nachricht
3.Transposition.....................Durcheinandermischen der Bestandteile einer Nachricht

Beispiele für Steganographie
Haben Sie schon im Fernsehen einen dieser alten Hollywood-Schinken gesehen, bei dem es um Spionage geht? Oft werden dort irgendwelche geheimen Dokumente mit Hilfe einer Minikamera fotografiert und dann als Mikrofilm zum Gegner transportiert. Solch ein Verfahren nennt man Steganographie. Im zweiten Weltkrieg dachte sich ein deutscher Soldat, als er einen Brief von der Front in seine Heimat schrieb, einen Scherz aus. In einem Feldpostbrief schrieb er unter anderem (Sinngemäße Kurzfassung):"Sieh doch einmal unter der Briefmarke nach!"

Die Gestapo nahm so vorsichtig wie möglich die Briefmarke ab. Darunter war zu lesen: "War es schwer Sie abzukriegen?" Der Scherz des Soldaten endete für Ihn mit dem Tod in einem Konzentrationslager. Wenn Schüler bei einem schriftlichen Test in der Schule Ihren Banknachbarn mit Hilfe kleiner Zettel Nachrichten geben welche Antwort auf eine Frage richtig ist, so ist das im Grunde genommen auch Stenographie. Ebenso wenn man die richtigen Antworten auf die Prüfungsfragen auf die Innenfläche der Hand schreibt, um so seinen Mitschülern Informationen zu geben.

Folgendes Beispiel soll erläutern, wie Beispielsweise eine ganz gewöhnliche Unterhaltung zwischen zwei Bekannten die sich bzw. in der Kneipe treffen, zur Übermittlung von Nachrichten herangezogen werden kann.

Sehen wir uns einmal folgende Worte eines Mannes in einem Brief zu seinem „alten Freund“ an:

Hallo Anton!

Nach so vielen schönen Jahren in Berlin an der guten alten Spree sahen wir uns heute
Nachmittag wieder.

Lesen wir nun die hervorgehobenen Buchstaben an, dann können Wir lesen:
Anschlag heute Nacht!


Zum Beispiel der Substitution ist die Enigma zu nennen. Also Polyalphabetische Substitution, Vigenere-Tafel.

Als Beispiel der Transposition ist das Anagram zu nennen.

Bei Dateien oder CDs müsste zuerst ein DIN-ISO-Abbild hergestellt werden. Daraus wird zum Beispiel mit einem speziellen Leseprogramm oder mit einem Hex-Editor die einzelnen Sektoren eingelesen, um bestimmte Bytes zu kopieren. Technisch gesehen reicht ein Programm zur Erstellung eines DIN-ISO-Abbildes einer CD, ein Leistungsfähiger HEX-Editor und etwas Arbeit.

Der Codeschlüssel könnte dabei wie folgt aussehen:
2-1,3-1, 4-1, 6-2,7-3,9-4,10-1,12-1,15-3-4,17-1,18-4-5,19-1-2-3-4-8

Die erste Zahl vor dem Bindestrich gibt das Wort, die darauf folgende Zahl den Buchstaben zur Erstellung
der Nachricht an.
Falls benötigte Bytes nicht auf der CD vorkommen, müsste der Schlüssel anders lauten:
Absolute Position des Bytes, Rechenart, Zusatzwert

Rechenarten:
0 = keine Operation
  1. = Addition
  2. = Subtraktion
Beispiel: 33, 2, 44 bedeutet: Byte Nr. 33, Subtraktion, 44 = Byte Nr.33 - 44
34, 1, 12 bedeutet: Byte Nr. 34, Addition, 12 = Byte Nr.34 + 12
24, 0, 92 bedeutet: Byte Nr. 24, Keine Operation, 92 = Byte Nr.34 = Byte Nr.34

Wenn zum Beispiel vom Dateibeginn...
das Byte Nr.33 der Dezimalwert 88 gelesen wird: 88 - 44 = 44.
das Byte Nr.34 der Dezimalwert 34 gelesen wird: 34 + 12 = 46.
das Byte Nr.24 der Dezimalwert 34 gelesen wird: 24 = 24 (da keine Rechenoperation stattfindet)
Der Schlüsselcode wird dann drei mal so lange als die codierte Nachricht.

Die Bytefolge lautet dann(dezimale Notation):
033, 002, 044, 034, 001, 012, 024, 000, 092
Für die Kennzeichnung der Rechenoperationen könnten natürlich auch andere dezimale Werte verwendet werden. So könnte man absolut jede irgendwie verwendbare Datenträger, egal in welcher Form, dazu verwenden, um Nachrichten zu verschlüsseln. Den Schlüssel selbst könnt man in einer Datei verstecken, um die Dechiffrierung nochmals zu erschweren. Auf diese Weise kann nahezu jeder Datenträger benutzt werden. Rein theoretisch sogar die Neujahrsansprache der Bundeskanzlerin oder des US-Präsidenten.






Talarius arbeitet auf Basis der Transposition. Aber natürlich auf Bit-Ebene. Dabei werden die zu
verschlüsselnden Dateien in gleiche Häppchen portioniert und diese Häppchen als Byte-Array
zusammengefasst. Danach werden die Bits dieses eindimensionalen Arrays verwürfelt.

Ursprünglich wurde dieses Programm aus einem Lottozahlengenerator heraus entwickelt.

Zuerst wird ein Zahlenarray von 8, 16,32,64,128, 256, 512, 1024 oder 2048, 4096, 8182 oder
16384(bei Talarius5), 32768, 65536, 131072(bei Talarius12) also die wählbare Verschlüsselungstiefe in Bit, erstellt, in dem jede Zahl nur einmal vorkommt.
Die Möglichkeiten der Zusammenstellung der Schlüsseldatei ist also

(Verschlüsselungstiefe in Bits -1) Faktorielle.

Dieses Zahlen-Array wird dann per Zufallsgenerator durcheinandergewirbelt.
Kommt jede Zahl nur einmal vor und es sollen die maximale Zahl der Möglichkeiten
errechnet werden, so ist die Anzahl der

Permutationen = 1*2*3*4*...........Anzahl der Elemente.

Jedoch verringert sich diese Zahl, wenn mehrere Elemente mehrfach vorkommen.
Da in der Dyadik ja nur mit zwei Elementen gerechnet wird
gibt es nur zwei Elemente (a und b) die innerhalb der Gruppe mehrfach auftreten.

Es muss folgendes bei der
Berechnung der Anzahl der möglichen Permutationen beachtet werden:
1 Gesamtanzahl der Elemente(Klassengröße, also alle Einsen und Nullen)
2 Gruppengröße der Elemente(Gruppengröße, die Zahl der Einsen und Nullen für sich betrachtet)

dann gilt : n = { (a+b)! /(a! b!)}

Über die möglichen sich daraus ergebenden Schlüsselmöglichkeiten:


Bei einer Verteilung von ca. 70% bei Einsen, und 30% bei Nullen haben wir eine Permutation von
X = 512! / (307!
205!)
X = 1.7421E+148 Möglichkeiten.

Wenn 512 Bit gewählt wurde.

Bei idealer 50-prozentiger Verteilung von Nullen und Einsen ergibt das folgende Tabelle:
Bytezahl... gesamt-Bitzahl .......mögliche Permutationen
1.......…..........8.........................70
2.....…............16.......................12870
4.....…............32.......................6.0108E+8
8.....…............64.......................1.83262E+18
16..................128......................2.39511E+37
32..................256......................5.76866E+75
64..................512......................4.72553E+152
128................1024....................4.48125e+306
256................2048....................5.69709e+614
512................4096....................1.30195e+1231
1024..............8192....................9.61516e+2436
2048..............16384 .................7.41605e+4929
4096..............32768..................??????
8192..............65536..................??????
16384............131072................??????

Denken wir uns nun Beispielsweise folgende Verteilung:
Gesamtzahl der Bytes der Datei:.........200
Bitzahl pro Zeichen:..............................8
Gesamtzahl aller Bitseiner Datei:.........1600
Anzahl der Einsen:...............................75%(1200)
Anzahl der Nullen:................................25%(400)

Dann sieht unsere "Formel" so aus:
n = (1600!) / ( (1200!) * (400!) )

Dabei ist n gleich1.29638E+389, also 1.29638 mal 10 hoch 389 groß.
Bei einer Verteilung von 75% zu 25% ergibt sich
bei einer Dateilänge von 32 Byte(=256 Bit) eine
Permutation von
n = 1.90438E 61, also 1.90438 mal 10 hoch 61.

Mehr Details dazu in der kleinen Anleitung, die in der ZIP-Datei liegt.

Es ist ein Zweiwege-Verschlüsselungsverfahren, zum
experimentieren und lernen reicht es allemal.

Geändert wurde am Programm, das die goto-Anweisungen jetzt ganz gestrichen wurden.
Die Dekodierung wird jetzt ganz unter einem Menu-Punkt 9 angesteuert, die Kodierung unter
Menuepunkt 8.

Nur die Kodierung bedarf mehrerer Schritte.
Alternative Vorgehensweise:

Zuerst Verschlüsselungstiefe wählen (Menu-Punkt 1).
Dann Zufallszahlen-Array erstellen(Menu-Punkt 2).
Nun dieses Array in einer Datei Abspeichern(Menu-Punkt 3).
Jetzt Programm beenden und neu Starten.
Danach mit Menu-Punkt 5 Die Schlüsseldatei neu laden.
Jetzt kann mit Menu-Punkt 8 die Quelldatei chiffriert werden.

Weil zur Kodierung die Quelldatei angepasst werden muss, wird diese in der Länge modifiziert.
Deshalb bitte nur mir Kopien arbeiten. Geändert wurde jetzt das die lästige Verlängerung der
Quelldatei bleibt, diese wird nach dem Kodierungsverfahren wieder auf Orginallänge zurück
gesetzt. Aber Vorsicht ist trotzdem angebracht.
Ebenso mit dabei ist jetzt die Möglichkeit, eine alte Schlüsseldatei einzulesen,
die Zahlen mit einem neuen Menue-Punkt einzulesen und neu zu verwirbeln. Das erschwert zusätzlich die Dekodierung.


Eine Beispieldatei ist auch dabei: test
Diese wurde mit der Schlüsseldatei key10 chiffriert und das ganze wieder dechiffriert zu
decoded.txt.
Das chiffrieren bedarf einer genauen Studie der Anleitung und Übung.

Richtig ist, das es sich hier um ein Zweiwege-Verschlüsselungsverfahren handelt. Ebenso kann es
sein, das Teile der Nachricht dann entschlüsselt werden, wenn der Schlüssel teilweise entziffert
wurde. Aber dafür können mehrdeutige Ergebnisse auftreten. Das heißt, das zufällig eine oder mehrere vollkommen andere Nachrichten entstehen können welche mit der echten überhaupt nicht übereinstimmen, beim Versuch die Datei zu entschlüsseln, wenn diese zufällig die selben Bitlängen haben.
Hier habe ich seit kurzem ein Verfahren für den Linux-Terminal veröffentlicht, welche nur für Text-Dateien zur Anwendung kommen kann die keine ASCII-Zeichen unter 32(Leerzeichen) enthalten, per vigenere-Tafel.
Man kann also durchaus diese zwei verschiedene oder andere Verfahren kombinieren.
Diese Programme habe ich ohne Key-Recovery-Feature geschrieben.
Dazu hätte ich das Programm um einen Generalschlüssel herum bauen müssen. Dazu bin ich
zu dämlich und zu ehrlich. Wer also die Schlüsseldatei verliert, Pech gehabt!
Das meine ich ERNST!!!!!!!!



Talarius 12 wurde auf LINUX mit Qt5 geschrieben. Der Quelltext liegt
in der ZIP-Datei. Eine Verschlüsselungstiefe bis 131072 Bit konnte bei der Version 12 erreicht werden. Leider Gottes konnte ich bisher keinen Fortschrittsbalken implementieren.
Bei der höchsten Verschlüsselungstiefe kann es schon mal dauern, bis die Zahlenreihe permutiert
ist. Bei 131072 Faktorielle sind das bei mir eine ganze Minute!
Benutzung auf eigene Gefahr!

Dient als Lehrmaterial.


Viel Erfolg von Guiseppe
Download der ZIP-Datei:

Talarius5.zip


zip

 Download

Dateigröße: 368,38KB
Heruntergeladen: 67 mal

talarius12.zip
Talarius12 ist mit Qt5 geschrieben. In der ZIP-Datei ist die fertige BIN-Version für Linux. Eine kleine Bedienungsanleitung ist auch dabei.


zip

 Download

Dateigröße: 1,13MB
Heruntergeladen: 51 mal


pn
Gast 
20.05.2013, 17:04
zitieren

Mach mit!

Wenn Dir die Beiträge zum Thread "Talarius, ein Verschlüsselungsprogramm mit Transposition auf Bit-Ebene bis 131072 Faktorielle!" gefallen haben oder Du noch Fragen hast oder Ergänzungen machen möchtest, solltest Du Dich gleich bei uns anmelden:



Registrierte Mitglieder genießen die folgenden Vorteile:
✔ kostenlose Mitgliedschaft
keine Werbung
✔ direkter Austausch mit Gleichgesinnten
✔ neue Fragen stellen oder Diskussionen starten
✔ schnelle Hilfe bei Problemen
✔ Bilder und Videos hochladen
✔ und vieles mehr...


Neuen Thread eröffnenNeue Antwort erstellen
Ähnliche BeiträgeRe:
Letzter Beitrag
Gliederungsübersicht - ab der ersten Ebene
Moin ! (werden heute zum Dauergast im Forum .-) ) für die Gestaltung eines Artikels gibt es die 4 Überschriftsebenen. Ich habe eben festgestellt das nicht immer eine Gliederungsübersicht in einem Artikel generiert wird. Kann mir einer sagen womit das...
von jan99
4
237
11.09.2014, 20:19
kghbln
© 2004 - 2024 www.programmierer-forum.de | Communities | Impressum |