Hackerboard WikiHaboWeb Linkverzeichnis

[HaBo]

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

Rainbow-Tables in eigener Sache ...

Diskussion: Rainbow-Tables in eigener Sache ... im Forum Cryptography & Encryption, in der Kategorie Security Area; Hallo @all, prinzipiell ist mir die Funktionsweise von Rainbow-Tables bis auf eine Sache klar. Ich habe einen Algorithmus entwickelt um ...

Antwort
Alt 29.03.09, 17:53   #1 (permalink)
 
Benutzerbild von Hackse
 
Registriert seit: 31.07.06
Karma: 8
Hackse Leistung: Facit NTK
Standard Rainbow-Tables in eigener Sache ...


Hallo @all,
prinzipiell ist mir die Funktionsweise von Rainbow-Tables bis auf eine Sache klar.

Ich habe einen Algorithmus entwickelt um Rainbow Tables zu generieren und bin nun dabei die Suche des bekannten Hashes innerhalb des Rainbow-Tables zu programmieren.

Ich zitiere mal folgende Seite: http://kestas.kuliukas.com/RainbowTables/

Zitat:
The algorithm is:
1) Look for the hash in the list of final hashes, if it is there break out of the loop.
2) If it isn't there reduce the hash into another plaintext, and hash the new plaintext.
3) Goto the start.
4) If the hash matches one of the final hashes, the chain for which the hash matches the final hash contains the original hash.
... und auch das ist klar. In der Praxis ist es nun so, dass ich für eine Chain mit 10.000 Hashes auch 10.000 verschiedene Reduktionsalgorithmen verwende. :rolleyes: Daher stelle ich mir die Frage, mit welchem Reduktionsalgorithmus ich den zu findenden Hash reduzieren soll? Gäbe es nur einen Reduktionsalgorithmus, wäre das alles kein Problem, aber man möchte ja Kollisionen vermeiden und verwendet daher für jede Spalte einen eigenen Algorithmus. :)

Greetz
Hackse
Hackse ist offline  
Digg this Post!Add Post to del.icio.usBookmark Post in Technorati
Mit Zitat antworten
Alt 29.03.09, 18:16   #2 (permalink)
Moderator
 
Benutzerbild von Elderan
 
Registriert seit: 30.03.04
Karma: 64
Elderan Leistung: OpteronElderan Leistung: OpteronElderan Leistung: OpteronElderan Leistung: OpteronElderan Leistung: Opteron
Standard

Hallo,
für jeden einen eigen Reduktionsalgorithmus zu nutzen macht keinen Sinn. Nutze einen Algorithmus. Mit Kollisionen musst du leben.

Sprich:
In deiner Rainbowtable steht:
hash(red(hash(red(hash(red(hash(....red(Start1)... .)
hash(red(hash(red(hash(red(hash(....red(Start2)... .)
hash(red(hash(red(hash(red(hash(....red(Start3)... .)
....

Das es dabei zu Kollisionen kommen kann ist nunmal so und eigentlich kein Problem.
Elderan ist offline  
Digg this Post!Add Post to del.icio.usBookmark Post in Technorati
Mit Zitat antworten
Alt 30.03.09, 01:07   #3 (permalink)
Themenstarter
 
Benutzerbild von Hackse
 
Registriert seit: 31.07.06
Karma: 8
Hackse Leistung: Facit NTK
Standard

Hallo Elderan,
warum die statistische Wahrscheinlichkeit auf Kollisionen derart immens erhöhen? Ich sehe den Vorteil nicht. Bitte um Erläuterung.

Greetz
Hackse
Hackse ist offline  
Digg this Post!Add Post to del.icio.usBookmark Post in Technorati
Mit Zitat antworten
Alt 30.03.09, 10:33   #4 (permalink)
Moderator
 
Benutzerbild von Elderan
 
Registriert seit: 30.03.04
Karma: 64
Elderan Leistung: OpteronElderan Leistung: OpteronElderan Leistung: OpteronElderan Leistung: OpteronElderan Leistung: Opteron
Standard

Hallo,
wenn du 10 000 verschiedene Reduktionsalgorithmen verwendest, wie kannst du dann ausschließen, dass diese keine Kollisionen produzieren?
Die Wahrscheinlichkeit ist die selbe.


Sagen wir f ist ein Reduktionsalgorithmus, dieser geht doch von:
f: {0,1}^128 -> {a,b,c,...,0,1,...,9}^8

Also f bildet einen 128 bit String auf ein 8 stelliges Wort aus a-z,0-9 ab.


Wenn man nun noch ein g hat:
g: {0,1}^128 -> {a,b,c,...,0,1,...,9}^8


Dann ist die Wahrscheinlichkeit, dass f(m) = f(n) mit n != m die selbe wie f(m) = g(n), sofern f und g Random Oracles sind.

Dass eine Kollision bei hash() Auftritt ist mehr als unwahrscheinlich, bei guten Hashalgorithmen. BeiMD5 hat man beispielsweise auch versucht per Brute Force eine Kollision gefunden, und trotz enormer Rechenpower hat man es nicht geschafft.


Durch mehrere Reduktionsalgorithmen gewinnt man nichts, man macht alles nur komplizierter.
Elderan ist offline  
Digg this Post!Add Post to del.icio.usBookmark Post in Technorati
Mit Zitat antworten
Alt 30.03.09, 12:37   #5 (permalink)
Themenstarter
 
Benutzerbild von Hackse
 
Registriert seit: 31.07.06
Karma: 8
Hackse Leistung: Facit NTK
Standard

Zitat:
Original von Elderan
Hallo,
wenn du 10 000 verschiedene Reduktionsalgorithmen verwendest, wie kannst du dann ausschließen, dass diese keine Kollisionen produzieren?
Die Wahrscheinlichkeit ist die selbe.
(...)

Dann ist die Wahrscheinlichkeit, dass f(m) = f(n) mit n != m die selbe wie f(m) = g(n), sofern f und g Random Oracles sind.
Hallo Elderan,
für jede Chainspalte wird ein anderer Reduktionsalgorithmus verwendet. Sei N die Anzahl der Chainspalten und s eine Funktion, die innerhalb einer Chain die aktuell zu verarbeitende Spaltenzahl ausgibt, dann hat f(m) = f(n) mit n != m nur genau dann die selbe Eintrittswahrscheinlichkeit wie f(m) = g(n), wenn zusätzlich die Bedingung s(f[1](n)) = s(f[2](n)) erfüllt ist. Dies ist ein weiteres Kriterium, das die Wahrscheinlichkeit einer Kollision verringert.

In Worten:
Verwende ich nur einen Reduktionsalgorithmus, dann tritt eine Kollision genau dann auf, wenn ich an irgend einer Stelle der Rainbow-Table zwei verschiedene Hashes auf ein und denselben Klartext reduziere. Die Funktion wäre damit nicht mehr injektiv.
Verwende ich jedoch spaltenweise verschiedene Reduktionsalgorithmen, dann könnte eine Kollision nur dann auftreten, wenn ich in zwei Chains jedoch in genau der selben Spalte der Rainbow-Table zwei verschiedene Ciphers auf ein und denselben Klartext reduziere. Bei 10.000 Iterationen ist das Ganze somit sehr viel unwahrscheinlicher (Faktor 10.000).

Dass unter der Verwendung verschiedener Reduktionsalgorithmen und verschiedenen Ciphers in verschiedenen Spalten dennoch gleiche Ergebnisse resultieren können, sprich f(x) = g(y) mit x != y und s1 != s2, würde zu keiner Kollision führen, da unter der Verwendung verschiedener Reduktionsalgorithmen der weitere Chainverlauf unterschiedlich wäre, d.h. die Folgeglieder n wären wieder unterschiedlich: n(f(x)) != n(g(y)) mit x != y und s1 != s2

Greetz
Hackse
Hackse ist offline  
Digg this Post!Add Post to del.icio.usBookmark Post in Technorati
Mit Zitat antworten
Alt 30.03.09, 12:59   #6 (permalink)
Moderator
 
Benutzerbild von Elderan
 
Registriert seit: 30.03.04
Karma: 64
Elderan Leistung: OpteronElderan Leistung: OpteronElderan Leistung: OpteronElderan Leistung: OpteronElderan Leistung: Opteron
Standard

Hallo,
Zitat:
Ergebnisse resultieren können, sprich f(x) = g(y) mit x != y und s1 != s2, würde zu keiner Kollision führen, da unter der Verwendung verschiedener Reduktionsalgorithmen der weitere Chainverlauf unterschiedlich wäre,
Okay da hast du recht. Die Kollisionswahrscheinlichkeit der Reduktionsfunktion für einen Hashwert wäre die selbe, aber der weitere Verlauf bzw. die weitere Produktion der Wörter wäre verschieden.


Allerdings kommt da dann deine ursprüngliche Frage wieder ins Spiel:
Zitat:
Daher stelle ich mir die Frage, mit welchem Reduktionsalgorithmus ich den zu findenden Hash reduzieren soll
Antwort: Man müsste alle Startpositionen ausprobieren. Bei einer Chain Länge von 10 000 also 10 000 Startpositionen.

Man muss eben abwegen was man benötigt. Dies erhöht natürlich den Aufwand für das Heraussuchen des Hashwertes.

Man könnte auch über weniger Reduktionsalgorithmen nachdenken, beispielsweise über nur 100 oder 1000. Die man dann immer nacheinander verwendet.
Elderan ist offline  
Digg this Post!Add Post to del.icio.usBookmark Post in Technorati
Mit Zitat antworten
Antwort

[HaBo] » Security Area » Cryptography & Encryption » Rainbow-Tables in eigener Sache ...
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 an
Refbacks sind an


Ähnliche Themen
Thema Autor Forum Antworten Letzter Beitrag
verteiltes Rainbow Tables berechnen SyneX Cryptography & Encryption 1 01.01.09 20:09
Darf man Rainbow tables Verkaufen? p-g Cryptography & Encryption 11 29.11.08 15:38
Erzeugen von rainbow tables Iceman39 Cryptography & Encryption 2 26.09.06 21:35
LM Rainbow Tables piOo Cryptography & Encryption 1 05.12.05 10:19
Rainbow Tables im Cluster erzeugen? Taucha Cryptography & Encryption 2 14.05.05 12:48


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 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137 138 139 140 141 142 143 144 145 146 147 148 149 150 151 152 153 154 155 156 157 158 159 160 161 162 163 164 165 166 167 168 169 170 171 172 173 174 175 176 177 178 179 180 181 182 183 184 185 186 187 188 189 190 191 192 193 194