Hackerboard Wiki HaboBlog
Hackerboard bei Facebook Hackerboard bei Google+ Hackerboard bei Twitter

[HaBo]

 
Cryptography & Encryption Ver- und Entschlüsselung, Algorithmen, Kryptoanalyse ? Kryptographie in der Praxis. Blowfish, Triple-DES, XOR u.a.

Vigereere mit CBC-Mode und Teilklartext knacken?

Diskussion: Vigereere mit CBC-Mode und Teilklartext knacken? im Forum Cryptography & Encryption, in der Kategorie Security Area; Anzeige Guten Tag Leute! Ich sitze nun seit ca 5 Wochen vor einem Verschlüsseltem Text der mit dem Vigeneere Algrorithmus ...

Antwort
Alt 13.02.08, 15:04   #1 (permalink)
 
Registriert seit: 01.01.08
Yellow Leistung: Facit NTK
Likes: 0
Unhappy Vigereere mit CBC-Mode und Teilklartext knacken?

Anzeige

Guten Tag Leute!

Ich sitze nun seit ca 5 Wochen vor einem Verschlüsseltem Text der mit dem Vigeneere Algrorithmus verschlüsselt wurde. Doch um die Sache Komplizierter zu machen wurde das im CBC-Modus verschlüsselt.

Ein Teil des Plaintextes ist bekannt!

Meine Frage lautet nun: "Wie knacke ich am besten den Chipertext?".

Ich habe mich mit dem Vigeneere Algorithmus denke ich ganz gut vertraut gemacht. Das man eine reine Vigeneere mit einer Analyse knacken kann ist mir bekannt. Doch ich komme mit dem CBC einfach nicht zurecht!

Ich habe mich schon öfters hingesetzt und mit C und C++ versucht eine Brute and Force dafür zu schreiben. Doch irgendwie bin ich entweder zu dumm oder ich mache es mir einfach zu schwer!?

Kann mir bitte einer einen Rat geben wie ich sowas am besten knacke?

Liebe Grüße

Yellow

PS: Für die die gerne wissen wollen wofür das ist, kann ich nur sagen das ich nichts unmoralisches etc vor habe. Es handelt sich einfach nur um eine Übung die ich einfach nicht hinbekomme!

Yellow ist offline   Mit Zitat antworten
Alt 14.02.08, 10:48   #2 (permalink)
Moderator
 
Benutzerbild von Elderan
 
Registriert seit: 30.03.04
Elderan Leistung: 8086
Likes: 14
Standard

Hallo,
wenn du einen Teil des Klartextes kennst, sollte das doch eigentlich kein Problem sein? Berechne einfach für diesen Abschnitt den Schlüssel, und wenn du eine ganze Schlüssellänge so zusammen bekommst, bist du doch schon fertig.

Wenn man keinen Plaintext kennt, ist das Vorgehen auch nicht viel schwerer.

Angenommen du kennst die Schlüssellänge, dann betrachtest du jeden Buchstaben der mit dem selben Schlüsselbuchstaben verschlüsselt wurde.
Diese kannst du dann analysieren, fängst beim 1. Buchstaben an, entschlüsselst diesen mit dem Geimtextbyte der vor diesem Stand usw..
Am Ende kannst du dann einfach die Buchstabenhäufigkeit ermitteln, verstellen um wieviel diese verschoben ist, fertig.


Denn der CBC Mouds lässt sich bei der polyalphabetischen Substitution sehr leicht entfernen.

Angenommen du hast den IV von 3, dann folgt:
Code:
  5 6 6  <= Plaintext
  1 2 3  <= Key
  6 8 9  <= Ohne CBC (Plaintext + Key)

3  5  6   6   <= IV + Plaintext
   8  15  23  <= Plaintext + letzter Geheimtext
   1  2   3 
3  9  17  26  <= Mit CBC


So nun die Umkehrung:
  9  17  26 
- 3   9  17
= 6   8   9 <= Geheimtext ohne CBC
Wenn du den CBC erstmal entfernt hast, ist der Rest ja bekannt
Elderan ist offline   Mit Zitat antworten
   
HaBOT
 
- Anzeige -

Werbung ist gerade online    
Alt 14.02.08, 12:54   #3 (permalink)
Themenstarter
 
Registriert seit: 01.01.08
Yellow Leistung: Facit NTK
Likes: 0
Standard

Lieber Elderan!

Danke für deine Hilfestellung.

Doch muß ich gestehen das ich das verschlüsseln mit dem CBC nicht wirklich verstanden habe.

Ich kenne nur den Chipper und einen Teilplain. Kenne aber keinen IV.

Ich habe schon locker 8-10 PDF Dateien auf meinem Rechner die mir die Verschlüsselung mit Ceasar und Vigeneere erklären. Doch ich raffe die Berechnung mit dem IV nicht.

Es wird immer nur sehr sparsahm auf den IV eingegangen. Und ich komme leider mit den FORMELN wie diese immer erklärt sind nicht klar.

Ich wäre dir wirklich sehr sehr dankbar wenn du mir eine einführung in den CBC-Modus erleutern könntest. Ich habe Google und Co schon sooft benutzt das ich schon fast am aufgeben war. Doch dank deines Beitrages, sehe ich wieder etwas Hoffnung das ich das vieleicht doch nochmnal verstehen

Bist du so nett und gibst mir einen Einblick in den CBC-Modus und vieleicht auch mit einem Netten Beispiel?

Wenn nicht dann danke ich dir auf jedenfall schonmal für den bereits geschriebenen Beitrag.

Liebe grüße

Yellow
Yellow ist offline   Mit Zitat antworten
Alt 14.02.08, 14:49   #4 (permalink)
Moderator
 
Benutzerbild von Elderan
 
Registriert seit: 30.03.04
Elderan Leistung: 8086
Likes: 14
Standard

Hallo,
hmm zum CBC gibts eigentlich nicht viel zu erzählen.

Du wählst einen meist zufälligen Initialisierungsvektor, bei der polyalphabetischen Substitution wäre dies dann eben 1 Buchstaben, bei AES o.ä. ein 128 Bit Block.

Wenn du nun einen Block verschlüsseln möchtest, machst du erst eine XOR Verknüpfung von dem Block mit dem letzten Geheimtext. Das Ergebnis wird dann verschlüsselt.

Der 1. Block, den man verschlüsselt wird XOR (o.ä.) Verknüpft mit dem IV.

Code:
Hast den Plaintext
1 2 3

Key:
4 5 6

Und den IV = 3, dann gehst du wie folgt vor:

1. Block + IV (bzw. meistens XOR)
1 + 3 = 4

Dann wird 4 verschlüsselt:
4 + 4 = 8 

Oder anders dargestellt:

  1  2  3  | Plaintext
  4        | Plaintext XOR/+ letzten Geheimtext
  4  5  6  | Key
3 8        | Ausgabe/Geheimtext

So, wenn du nun 1+3=4 verschlüsselt hast, gehst du zum nächsten Block, also 2 und verknüpfst diesen mit dem letzten Geheimtext, also 8

   1   2   3  | Plaintext
   4  10      | Plaintext XOR/+ letzten Geheimtext
   4   5   6  | Key
3  8  15      | Geheimtext


Dies machst du immer so weiter

Oder z.B. als PHP Code:
PHP-Code:
<?php
$key 
= array(1,2,3,4);
$plaintext = array(56789101112);
$iv 3;
$geheimtext = array($iv);

$letzter_geheimtext $iv;
for(
$i=0;$i<count($plaintext);$i++) {
   
//CBC 'anwenden', also aktueller Plaintext XOR (oder +) des letzten Geheimtextes
   
$cbc_anwenden $plaintext[$i] + $letzter_geheimtext;
  
   
//Eingabe normal verschluesseln
   
$verschluesselt $cbc_anwenden $key[$i%count($key)];

   
//Ergebnis zur Ausgabe hinzufuegen
   
$geheimtext[] = $verschluesselt;

   
//Letzer Geheimtext = aktueller Geheimtext
   
$letzter_geheimtext $verschluesselt;
}

echo 
"<pre>";
print_r($geheimtext);
?>
Normalerweise verwendet man eine XOR Verknüpfung (dieses Plus mit Kreis in der Grafik von Wikipedia), hängt aber eben von der Implementierung von Vigen?re ab (wobei ich noch nie von einem CBC für Vigen?re gehört habe, der auch nicht viel bringt).


Der IV ist meistens der erste Geheimtextblock, hängt aber alles von der Implementierung ab
Elderan ist offline   Mit Zitat antworten
Alt 14.02.08, 15:09   #5 (permalink)
Themenstarter
 
Registriert seit: 01.01.08
Yellow Leistung: Facit NTK
Likes: 0
Standard

Lieber Elderan!

Ich kann dir garnicht ausdrücken wie sehr ich mich über deine Beiträge freue *schleim*. Es ist sehr hilfreich. Besonders noch der PHP code

Wenn ich von dir jetzt nicht zu viel verlange: "Wie kann ich das jetzt wieder entschlüsseln wenn ich den IV nicht kenne?".

Hey auf jedenfall erstmal ein Dickes danke. Dieser Beitrag wird bestimmt auch vielen Anderen Helfen die mal diese Frage haben sollten

Yellow
Yellow ist offline   Mit Zitat antworten
Alt 14.02.08, 15:30   #6 (permalink)
Moderator
 
Benutzerbild von Elderan
 
Registriert seit: 30.03.04
Elderan Leistung: 8086
Likes: 14
Standard

Hallo,
den IV brauchst du nur für die Entschlüsselung des 1. Geheimtextblock, alle anderen kannst du ohne IV entschlüsseln.
Schau dir mal das Bild bei Wikipedia für die entschlüsselung an, evt. hilft dir das weiter. Hab keine Zeit mehr mehr zu schreiben
Elderan ist offline   Mit Zitat antworten
Alt 14.02.08, 17:55   #7 (permalink)
Themenstarter
 
Registriert seit: 01.01.08
Yellow Leistung: Facit NTK
Likes: 0
Standard

Ich danke dir jetzt erstmal für deine Mühen!

Wenn ich nicht weiterkomme, werde ich mich einfach nochmal melden !

Danke Elderan!
Yellow ist offline   Mit Zitat antworten
Alt 15.02.08, 17:43   #8 (permalink)
Moderator
 
Benutzerbild von Elderan
 
Registriert seit: 30.03.04
Elderan Leistung: 8086
Likes: 14
Standard

Hallo,
das freut mich, ansonsten hier der (ungeteste) Code zum entschlüsseln:

PHP-Code:
<?php
$key 
= array(1,2,3,4);
$plaintext = array(56789101112);
$iv 3;
$geheimtext = array($iv);

$letzter_geheimtext $iv;
for(
$i=0;$i<count($plaintext);$i++) {
   
//CBC 'anwenden', also aktueller Plaintext XOR (oder +) des letzten Geheimtextes
   
$cbc_anwenden $plaintext[$i] + $letzter_geheimtext;
  
   
//Eingabe normal verschluesseln
   
$verschluesselt $cbc_anwenden $key[$i%count($key)];

   
//Ergebnis zur Ausgabe hinzufuegen
   
$geheimtext[] = $verschluesselt;

   
//Letzer Geheimtext = aktueller Geheimtext
   
$letzter_geheimtext $verschluesselt;
}

echo 
"<pre>";
print_r($geheimtext);

//Entschluesseln:
$iv $geheimtext[0];
$letzter_geheimtext $iv;

$plaintext = array();

for(
$i=1;$i<count($geheimtext);$i++) {
  
$klartext $geheimtext[$i] - $key[ ($i-1)%count($key) ]; //Entschluessen, $i-1 da $i hier bei 1 anfängt
  
$plaintext[] = $klartext $letzter_geheimtext//CBC rückgängig machen
  
$letzter_geheimtext $geheimtext[$i];
}

print_r($plaintext);

?>

Den CBC könnte man auch ohne die Entschlüsselung löschen, in etwa so:

PHP-Code:
<?php

$geheimtext 
= array(...Wie Oben...);
$geheimtext_ohne_cbc = array();
for(
$i=1;$i<count($geheimtext);$i++)
  
$geheimtext_ohne_cbc[] = $geheimtext[$i]-$geheimtext[$i-1];

?>
Ist aber alles ungetestet, aber so in etwa würde es aussehen.
Elderan ist offline   Mit Zitat antworten
Alt 15.02.08, 20:40   #9 (permalink)
Themenstarter
 
Registriert seit: 01.01.08
Yellow Leistung: Facit NTK
Likes: 0
Standard

Ich weiß nicht was ich sagen soll Elderan, außer vieleicht ein dickes...

DANKE SCHÖN

Werde den Code in C++ umschreiben !

PS: Wenn ich fertig bin mit dem Proggy, sage ich bescheid. Kann dann gerne den Source rausgeben
Yellow ist offline   Mit Zitat antworten
Antwort
   
- Anzeige -

Werbung ist gerade online    

[HaBo] » Security Area » Cryptography & Encryption » Vigereere mit CBC-Mode und Teilklartext knacken?
Themen-Optionen
Ansicht

Forumregeln
Es ist Ihnen nicht erlaubt, neue Themen zu verfassen.
Es ist Ihnen nicht erlaubt, auf Beiträge zu antworten.
Es ist Ihnen nicht erlaubt, Anhänge hochzuladen.
Es ist Ihnen nicht erlaubt, Ihre Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks sind aus
Pingbacks sind aus
Refbacks sind aus


Ähnliche Themen
Thema Autor Forum Antworten Letzter Beitrag
WLAN 'Promiscous Mode' v01d WLAN-Zone 6 28.03.06 17:08
use strict und der Substitution Mode menace Code Kitchen 2 15.01.06 20:49
DWL-610 im Monitoring Mode [D-Link] c°bry WLAN-Zone 0 23.10.05 13:34
Treiber für promiscuous mode Micralon Network · LAN, WAN, Firewalls 12 07.07.05 01:42
UTF8-mode Deathevel Linux/UNIX 4 25.02.04 17:30


1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61