Verschlüsselung testen



  • Abgesehen davon, daß andauernd %=0 gerechnet wird, was zum Absturz führt,

    schon bemerkt, daß die Verschlüsselung manchmal ein unterschiedliches Chiffrat erzeugt?

    pass1[pass2[cs%pass2.length()]]

    geht doch gar nicht. pass1 hat evtl nicht so viele Zeichen.



  • Ich kann mir vorstellen, dass man bei der chiffre eine Menge machen kann. Ich glaube, dass das Ding recht infach zu brechen ist, wenn man sich anschaut, welche Zusammenhänge es zwischen verschiedenen Passwörtern geben kann. Wahrscheinlich wird es darauf hinauslaufen, dass ich mit gut gewählten Kombinationen bereits eine Menge Passwörter ausschließen kann.



  • ableser schrieb:

    verschlüsseler schrieb:

    vector<char> data(20,0);
    

    Wenn du nur so wenig Daten verschlüsselst, ist sogar eine Vigenère-Verschlüsselung unknackbar (weil Schlüssellänge ≥ Textlänge). Poste hier bitte einmal die Ausgabe von vector<char> data(std::numeric_limits<std::size_t>::max(),0);

    Die Passwortlänge war kürzer als Textlänge. Was soll es bringen die Foren DB zu sprengen? Aber ein paar Zeichen mehr hab ich dir ausgegeben.

    volkard schrieb:

    Abgesehen davon, daß andauernd %=0 gerechnet wird, was zum Absturz führt,

    Du solltest ja auch nicht mit passwort = 0,0,0... bruteforcen, sondern nur ablesen und nicht ein bisschen rechnen oder denken, wie es SeppJ behauptet.

    schon bemerkt, daß die Verschlüsselung manchmal ein unterschiedliches Chiffrat erzeugt?

    pass1[pass2[cs%pass2.length()]]

    geht doch gar nicht. pass1 hat evtl nicht so viele Zeichen.

    Gefixt.

    #include <iostream>
    #include <vector>
    
    using namespace std;
    
    size_t charSum(std::string const& pass)
    {
    	size_t q = 1;
    	for(size_t i = 0; i<pass.length(); i++)
    	{
    		q+=pass[i];
    	}
    	return q;
    }
    
    void crypt( vector<char>& data, std::string const& pass1, std::string const& pass2, size_t startPos )
    {
    	if ( pass2.length() == 0 || pass1.length() == 0 || startPos >= data.size() )
    		return;
    	size_t p1 = 0;
    	size_t p11 = 0;
    	size_t p2 = 0;
    	size_t p22 = 0;
    	size_t s1 = 0;
    	size_t s2 = 0;
    	size_t k = pass1.length();
    	size_t k1 = 0;
    	size_t cs = charSum(pass1) + charSum(pass2);
    	size_t c = pass1[pass1.length()/3];
    	size_t ms = 1 + pass1[cs%pass1.length()] * pass1[pass2[cs%pass2.length()]%pass1.length()] * pass2[cs%pass2.length()] * pass2[pass1[cs%pass1.length()]%pass2.length()];
    	size_t m = pass2.length();
    	if (m>cs) ms *= data.size()/m-cs;
    	for(size_t i = startPos; i<data.size(); i++)
    	{
    		data[i] ^= pass1[p1];
    		data[i] ^= pass2[p2];
    		data[i] ^= pass1[p11] * pass2[p22];
    
    		p1++;
    		p1 %= pass1.length();
    
    		p2++;
    		p2 %= pass2.length();
    
    		s2 += k+c;
    		p22+= s2 % (1+pass1[p11]);
    		p22 %= pass2.length();
    
    		s1 += k1+m;
    		p11 += s1 % (1+pass2[p22]);
    		p11 %= pass1.length();
    
    		k++;
    		if ( k > pass1[k1] )
    		{
    			k = 0;
    			k1++;
    			k1 %= pass1.length();
    		}
    
    		size_t cm = 1 + pass2[p2] % pass1.length();
    		c+=pass1[p1]/cm;
    		c %= cs;
    
    		m+=pass2[p22];
    		m %= ms;	
    	}
    }
    
    int main(int argc, char** argv)
    {
    	vector<char> data(60,0);
    
    	string pass1;
    	cout << "passwort 1:\n";
    	cin >> pass1;
    
    	string pass2;
    	cout << "passwort 2:\n";
    	cin >> pass2;
    
    	crypt(data, pass1, pass2, 000);
    
    	for(int i = 15; i<data.size(); i++)
    	{
    		cout << i << ": " << (int)data[i] << "\n";
    	}
    }
    

    Die Ausgabe startet jetzt bei i = 15, weil 0 zu einfach ist.

    15: -19
    16: 103
    17: 1
    18: -74
    19: -118
    20: -13
    21: -37
    22: -125
    23: 56
    24: -36
    25: -24
    26: -72
    27: -75
    28: -100
    29: -36
    30: -66
    31: 92
    32: -31
    33: 119
    34: 126
    35: -105
    36: -2
    37: 63
    38: 45
    39: 11
    40: 86
    41: -54
    42: -45
    43: -72
    44: -127
    45: 56
    46: -124
    47: -46
    48: 9
    49: 101
    50: -31
    51: -3
    52: -20
    53: -62
    54: -108
    55: 93
    56: -19
    57: 18
    58: -45
    59: 110
    


  • verschlüsseler schrieb:

    Die Ausgabe startet jetzt bei i = 15, weil 0 zu einfach ist.



  • Die erste Stelle war bei Quelltext 0,0,0... zu einfach.

    SeppJ hat ja auch behauptet "Man kann an der Stelle wo der bekannte Quelltext steht direkt den Zustand des Zufallsgenerators ablesen.", da steht nix von am Anfang des bekannten Quelltexts.



  • verschlüsseler schrieb:

    Die erste Stelle war bei Quelltext 0,0,0... zu einfach.

    SeppJ hat ja auch behauptet "Man kann an der Stelle wo der bekannte Quelltext steht direkt den Zustand des Zufallsgenerators ablesen.", da steht nix von am Anfang des bekannten Quelltexts.

    Ich mache mich mal ran...


  • Mod

    Wo ist das Problem beim Ablesen? Wir wissen, du hast 0 XOR mit dem momentanen Wert deines "Zufallsgenerators" verschlüsselt. Entsprechend ist der herausgekommene verschlüsselte Text einfach 1:1 der momentane Zustand. Da wir den Algorithmus kennen würden, wenn du ihn hier mal sauber darlegen würdest (ich sehe immer noch nicht ein, wieso ich mir Code mit Variablennamen wie p1, p11, p2, usw. angucken sollte), könnte man sich mal überlegen, wie man von diesem Zustand aus auf die folgenden und die vorherigen Werte kommt. Dass das irgendwie möglich ist, ist so gut wie sicher, da du keinerlei Mechanismen konstruiert hast, die das verhindern und der Algorithmus direkt umkehrbar ist, da es bloß Verschiebeoperationen sind. Es braucht auch kein Mensch zu rechnen, das macht ein Computer.

    Im Gegensatz zu volkard habe ich aber keine Lust das an einem völlig willkürlichen Problem tatsächlich durchzuführen. Ich sehe schon voraus, wenn jemand es löst, wirst du ein paar Pluszeichen mit Minus vertauschen, eine vierte Ebene einführen und uns dann herausfordern, es noch einmal zu versuchen, ohne zu verstehen, dass das nichts bringt. Es reicht doch, dass du keine Gegenmaßnahmen eingebaut hast. Tatsächlich das Ding zu Knacken ist bloß ein 1000 Teile Puzzle. Viel Arbeit, aber machbar. Da hilft es auch nichts, wenn du dann im nächsten Versuch 2000 Teile nimmst.

    Wenn du hingegen durchdachte Maßnahmen präsentierst, eine Entschlüsselung unmöglich zu machen, dann wäre es mal interessant, es sich anzusehen, ob das auch tatsächlich alles sauber konstruiert ist.



  • SeppJ schrieb:

    Wo ist das Problem beim Ablesen? Wir wissen, du hast 0 XOR mit dem momentanen Wert deines "Zufallsgenerators" verschlüsselt. Entsprechend ist der herausgekommene verschlüsselte Text einfach 1:1 der momentane Zustand.

    Der Zustand der Zufallsgenerators ist bei dir die zuletzt ausgegebene Zahl? Ist das die offizielle Definition von Zustand eines Zufallsgenerators? Wäre aber irgendwie Qutatsch, ein Zufallszahlengenerator kann ja auch mehrmals die gleiche Zahl ausgeben. Der interne Zustand meines (und wohl auch jeden anderen) Zufallsgenerators enthält aber mehr Information, als die zuletzt ausgegebene Zahl.



  • SeppJ schrieb:

    Aufwand geht gegen Null. Ich meine wirklich Null. Nicht ein bisschen rechnen oder denken, sondern ablesen!

    SeppJ schrieb:

    Im Gegensatz zu volkard habe ich aber keine Lust das an einem völlig willkürlichen Problem tatsächlich durchzuführen.

    Ich finde das irgendwie witzig, SeppJ betont immer wieder, wie einfach es sei, das zu entschlüsseln.
    Auf der anderen Seite sagt er, dass er leider keine Lust darauf hat und schreibt mehrere seitenlange Posts darüber.
    SeppJ hat ganz sicher schon mehr als 10min ins formulieren seiner Posts investiert, aber die 1min um aus dem Kryptotext das Passwort "abzulesen", hat er sich nicht genommen.



  • @verschlüsseler: Bitte sage mir die Längen von pass1 und pass2.
    Damit kann ich besser fummeln. Sobald ich die erste Aufgabe gelöst habe, falls ich sie lösen kann, dann noch eine Aufgabe mit unbekannten Passwortlängen und nicht bei 15 anfangen, sondern irgendwo, auch in den vieltausenden.



  • ...



  • volkard schrieb:

    @verschlüsseler: Bitte sage mir die Längen von pass1 und pass2.
    Damit kann ich besser fummeln.

    Das schränkt den Suchraum aber ganzschön ein. 9 und 6.



  • @te
    Beschäftige dich besser 1,2 jahre mit kryptologie und du wirst verstehen was mir meinen... mit xor so wie du es praktizierst kannst du nur deine Gschwister davon abhalten dein 'cipher text' zu lesen ! Aber einer der es versteht wird es in wenigen Minuten brechen.



  • Im Gegensatz zu volkard habe ich aber keine Lust das an einem völlig willkürlichen Problem tatsächlich durchzuführen. Ich sehe schon voraus, wenn jemand es löst, wirst du ein paar Pluszeichen mit Minus vertauschen, eine vierte Ebene einführen und uns dann herausfordern, es noch einmal zu versuchen, ohne zu verstehen, dass das nichts bringt.

    Boing 👍

    @verschlüsseler:
    Schau dir mal das Programm CrypTool an. Dort kannst du unter anderem auch ein wenig mit den Analyse Optionen herumspielen. Aber eine scheinbare gute Verschlüsselung bringt dir auch nichts wenn dir ein Hacker mit Reverse Engineering zur Leibe rückt.

    Interresant auch "Breaking 104 bit WEP in less than 60 seconds" http://eprint.iacr.org/2007/120.pdf



  • @verschlüsseler:

    Bitte verschlüssele mir mal einen Text mit 200 Zeichen. Der Text als auch der Schlüssel soll bitte Englisch oder Deutsch sein. Ich will das Ganze mal durch die Analyse von CrypTool jagen.



  • Bitte ein Bit schrieb:

    @verschlüsseler:
    Schau dir mal das Programm CrypTool an. Dort kannst du unter anderem auch ein wenig mit den Analyse Optionen herumspielen. Aber eine scheinbare gute Verschlüsselung bringt dir auch nichts wenn dir ein Hacker mit Reverse Engineering zur Leibe rückt.

    Interresant auch "Breaking 104 bit WEP in less than 60 seconds" http://eprint.iacr.org/2007/120.pdf

    Bei WEP ist aber nicht grundsätzlich RC4 das Problem sondern unter anderem der zu kleine IV, übertragen des Inititalisierungsvektors in Plaintext und obendrein schwache Initialisierungsvektoren.



  • Bitte ein Bit schrieb:

    @verschlüsseler:

    Bitte verschlüssele mir mal einen Text mit 200 Zeichen. Der Text als auch der Schlüssel soll bitte Englisch oder Deutsch sein. Ich will das Ganze mal durch die Analyse von CrypTool jagen.

    Könntest du mit dem von mir geposteten Code ja auch relativ einfach selber machen.
    Hier:

    0: -4
    1: -102
    2: -14
    3: 73
    4: 13
    5: -37
    6: 69
    7: 115
    8: -59
    9: -81
    10: 100
    11: 103
    12: -128
    13: 106
    14: -121
    15: -127
    16: 117
    17: -36
    18: -8
    19: 67
    20: -5
    21: 40
    22: 1
    23: -40
    24: 64
    25: 110
    26: -42
    27: -57
    28: 30
    29: 53
    30: 124
    31: -2
    32: -42
    33: 126
    34: 97
    35: -47
    36: 50
    37: -121
    38: -9
    39: -60
    40: -98
    41: 32
    42: 122
    43: 103
    44: 63
    45: -92
    46: 77
    47: -81
    48: 88
    49: 127
    50: 18
    51: 105
    52: 124
    53: -114
    54: 105
    55: 4
    56: -18
    57: -93
    58: -9
    59: 52
    60: 119
    61: -106
    62: -102
    63: 49
    64: 4
    65: -52
    66: 84
    67: 122
    68: 112
    69: -45
    70: 57
    71: -78
    72: -71
    73: 58
    74: -13
    75: 114
    76: -16
    77: -7
    78: 96
    79: -94
    80: 47
    81: -86
    82: -32
    83: 107
    84: 110
    85: -98
    86: -50
    87: -64
    88: 74
    89: -58
    90: 15
    91: -30
    92: -93
    93: -34
    94: 1
    95: -106
    96: 108
    97: -35
    98: 15
    99: 66
    100: -4
    101: -53
    102: -29
    103: 37
    104: -71
    105: -119
    106: 74
    107: -105
    108: 98
    109: 83
    110: 3
    111: 17
    112: 44
    113: -38
    114: -72
    115: 87
    116: 88
    117: -116
    118: -76
    119: -55
    120: 106
    121: 120
    122: -92
    123: 102
    124: 65
    125: 26
    126: 2
    127: 97
    128: 100
    129: -11
    130: -108
    131: 114
    132: 111
    133: 92
    134: 31
    135: -107
    136: -62
    137: 98
    138: 19
    139: 103
    140: -5
    141: 47
    142: 0
    143: 63
    144: 126
    145: -117
    146: -82
    147: 115
    148: 58
    149: 70
    150: -14
    151: -19
    152: 79
    153: -123
    154: 39
    155: -23
    156: -37
    157: 8
    158: 93
    159: -4
    160: -34
    161: -18
    162: 8
    163: -97
    164: 68
    165: -40
    166: -36
    167: 53
    168: 47
    169: -88
    170: 13
    171: -8
    172: 111
    173: 23
    174: 8
    175: -56
    176: 86
    177: -26
    178: -2
    179: -23
    180: 78
    181: -16
    182: 14
    183: 33
    184: -109
    185: -119
    186: 100
    187: 122
    188: 55
    189: -94
    190: -42
    191: 100
    192: -32
    193: -46
    194: 104
    195: 34
    196: 23
    197: -122
    198: -43
    199: 6
    200: 83
    201: -31
    202: 126
    203: 82
    204: 78
    


  • -lowbyte- schrieb:

    @te
    Beschäftige dich besser 1,2 jahre mit kryptologie und du wirst verstehen was mir meinen... mit xor so wie du es praktizierst kannst du nur deine Gschwister davon abhalten dein 'cipher text' zu lesen ! Aber einer der es versteht wird es in wenigen Minuten brechen.

    Hab mir gerade mal AES angeschaut. Da wird auch ganz viel mit XOR verschlüsselt.
    http://de.wikipedia.org/wiki/Advanced_Encryption_Standard



  • sorry



  • @TE

    Weisst du was eine 5-fach Vollbitverschlüsselung ist? 😃
    Mal im ernst, ich meine X-Bücher zu diesem Thema lesen und verstehen, das impliziert automatisch hohe Mathematik, und sich jahrelang mit dem Thema beschäftigten... erst dann wirst du es richtig verstehen. Der Cipher Magenta zbsp. ist 100 mal besser durchdacht als dein Cipher, Shamir und Anderson fanden aber bereits während der 20-minütigen Präsentation des Algorithmus theoretische Angriffsmöglichkeiten. Kurze Zeit später bewiesen sie auch, dass dieser Angriff auch praktisch möglich ist und das Kryptosystem somit leicht zu brechen ist.

    Und mach mal dein Code nice, was momentan aber sowieso egal ist...


Anmelden zum Antworten