Autor |
Beitrag |
IhopeonlyReader
Beiträge: 600
Erhaltene Danke: 23
Delphi 7 PE
|
Verfasst: Do 12.09.13 14:19
jfheins hat folgendes geschrieben : | Sie war nicht ganz einfach: Erst wurde die wahrscheinlichste Passwortlänge ermittelt, und danach anhand der Länge die Häufigkeitsanalyse für jeden Buchstaben separat durchgeführt. |
das ist das was ich meine, BUCHSTABEN!
Es werden nunmal bei Passwörtern eigentlich bestimmte Zeichen nie verwendet, bitte schaut euch mal folgende Liste an:
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:
| 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: 0 49: 1; 50: 2; 51: 3 52: 4; 53: 5; 54: 6 55: 7; 56: 8; 57: 9 58: :; 59: ;; 60: < 61: =; 62: >; 63: ? 64: @; 65: A; 66: B 67: C; 68: D; 69: E 70: F; 71: G; 72: H 73: I; 74: J; 75: K 76: L; 77: M; 78: N 79: O; 80: P; 81: Q 82: R; 83: S; 84: T 85: U; 86: V; 87: W 88: X; 89: Y; 90: Z 91: [; 92: \; 93: ] 94: ^; 95: _; 96: ` 97: a; 98: b; 99: c 100: d; 101: e; 102: f 103: g; 104: h; 105: i 106: j; 107: k; 108: l 109: m; 110: n; 111: o 112: p; 113: q; 114: r 115: s; 116: t; 117: u 118: v; 119: w; 120: x 121: y; 122: z; 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: Â; 195: à 196: Ä; 197: Å; 198: Æ 199: Ç; 200: È; 201: É 202: Ê; 203: Ë; 204: Ì 205: Í; 206: Î; 207: Ï 208: Ð; 209: Ñ; 210: Ò 211: Ó; 212: Ô; 213: Õ 214: Ö; 215: ×; 216: Ø 217: Ù; 218: Ú; 219: Û 220: Ü; 221: Ý; 222: Þ 223: ß; 224: à; 225: á 226: â; 227: ã; 228: ä 229: å; 230: æ; 231: ç 232: è; 233: é; 234: ê 235: ë; 236: ì; 237: í 238: î; 239: ï; 240: ð 241: ñ; 242: ò; 243: ó 244: ô; 245: õ; 246: ö 247: ÷; 248: ø; 249: ù 250: ú; 251: û; 252: ü 253: ý; 254: þ; 255: ÿ |
Welche Zeichen davon verwendet ihr in euren Passwörtern wirklich? Damit man eben diese anderen Zeichen (die die nie benutzt werden) nicht ausschließen kann, wollte ich diese direkt aus der Schlüsselerstellung rausnehmen.
So können auch 87 Bit schlüssel entstehen.. Das führt dazu, dass man es schwerer nach Buchstaben aufteilen kann. denn ein 87 Bit schlüssel wäre ein 696 Bit Schlüssel. Denn ab dann wiederholt sich der Schlüssel erst Byteweise, und soviel ich weiß arbeiten entschlüssel Byteweise und nicht Bit-Weise!
Ich könnte es auch so umbauen, dass ihr am Anfang ein Passwort eingebet, es dann in Bits umgewandelt wird (ihr seht nicht mehr Hallo sondern entsprechend 01101000 01000001 ... ) dann könntet ihr einzelne Bits ersetzten.
richy-f hat folgendes geschrieben : | Ansonsten wäre es auch interessant, wenn du erzählst wie du verschlüsselst. |
Naja, der string wird als ByteArray betrachtet und dann wird Byte für Byte vom Bytearray mit Byte für Byte von der Datei ge-Xor-t. Ist der ByteIndex über dem High(ByteArray) dann wird der Schlüssel erneut verwendet.
Beispiel:
Schlüssel/ Passwort: A ( Code: 65 -> ByteArray hat eine Länge von 1)
Zu Verschlüsselnde Wort: Aber (länge 4)
Wort in Bits ausgedrückt: 01000001 01100010 01100101 01110010
Schlüssel ( entschprechend oft hintereinandergehängt):
01000001 01000001 01000001 01000001
Quelltext 1: 2: 3: 4: 5: 6: 7: 8:
| 01000001 xor 01000001 = 0000 0000 01100010 xor 01000001 = 0010 0011 01100101 xor 01000001 = 0010 0100 01110010 xor 01000001 = 0011 0011 //Verschlüsselte Text: 00000000 00100011 00100100 00110011 (0-35-36-51) //als String #$3 //Wobei 0 nichts anderes als "nichts" oder halt "StringEnde" bedeutet |
_________________ Sucht "neueres" Delphi
Wer nicht brauch was er hat, brauch auch nicht was er nicht hat!
|
|
IhopeonlyReader
Beiträge: 600
Erhaltene Danke: 23
Delphi 7 PE
|
Verfasst: Do 12.09.13 16:03
Weiterer Vorschlag (vorallem für externe Speichermedien):
Ein String-Randomen ( zwischen 1 und 100 mb )
BeispielCode zum erzeugen der Strings:
Delphi-Quelltext 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:
| var S: String; Size, C: Cardinal; FS: TFileStream; const MinSize = 1024*1024 * 1; MaxSize = 1024*1024 *100; begin Randomize;
if SD.Execute then begin Size := Random( MaxSize-MinSize+1 ) + MinSize; setlength( S, Size ); For C:=1 to Size do S[C] := Char( Random(255)+1 ); FS := TFileStream.Create( SD.Filename, fmCreate or fmShareDenyWrite ); try FS.WriteBuffer( Size, SizeOf(Size) ); FS.WriteBuffer( Pointer(S)^, Size*SizeOf(Char) ); finally FS.Free; setlength( S, 0 ); end; end; end; |
Beim entschlüsseln müsste man dann (wenn extern-Medium-cryption an ist) die "Passwort" Datei laden. Und zusätzlich sein Passwort eingeben.
Hierdurch wäre sozusagen ein OneTimePad erstellt, dass dafür sorgt, dass man bestimme Ordner nur auf dem einem bestimmen PC öffnen kann, außer jemand merkt sich einen Schlüssel aus zwischen 1 und 100 Millionen Zeichen, wofür er teilweise nichtmal namen kennt
Für lokale Ordner würde dies natürlich nicht viel bringen, da das Pw ja auf dem Computer "unverschlüsselt" vorliegt. Da ist es mit und ohne "extern-cryption" genau so sicher wie mit.
_________________ Sucht "neueres" Delphi
Wer nicht brauch was er hat, brauch auch nicht was er nicht hat!
|
|
jfheins
Beiträge: 918
Erhaltene Danke: 158
Win 10
VS 2013, VS2015
|
Verfasst: Do 12.09.13 16:28
Der Post zeigt, dass du dich entweder wesenlich mehr oder wesentlich weniger mit Verschlüsselung beschäftigen solltest
Random() ist nämlich nur ein PRNG, und kann mit 2^32 verschiedenen Anfangswerten geseedet werden. Ist dieser Startwert bekannt, können alle anderen Werte berechnet werden. Also egal wie lang du deine " Schlüsseldatei" machst, sie enthält nur 32bit Information, der Rest ist redundant.
Für diesen Beitrag haben gedankt: FinnO, Marc., Martok
|
|
IhopeonlyReader
Beiträge: 600
Erhaltene Danke: 23
Delphi 7 PE
|
Verfasst: Do 12.09.13 18:08
deswegen CodeBeispiel !das es endgültig nach dem Prinzip funktioniert, wie es dort aufgeführt wird.
Und ich dache Random würde über die Systemzeit laufen, seit wann ist es eine "festgelegte Reihenfolge" (wenn auch 1 von 2^32) ?
Wo steht das?
Sonst würde ich gerne selber ein Random bauen, auf Kenntnis von Systemzeit, "normalem Random", Hardware, offene Prozesse, Resourcenverbrauch eines Prozesses (zufällig?) was weiß ich nicht was. Hauptsache es ist nicht direkt "zurückverfolgbar"...
aber es geht um die Idee
Und auch so (mit diesem code) wäre die Datei sicherer verschlüsselt als ohne diese extern-verschlüsselung.
_________________ Sucht "neueres" Delphi
Wer nicht brauch was er hat, brauch auch nicht was er nicht hat!
|
|
jaenicke
Beiträge: 19274
Erhaltene Danke: 1740
W11 x64 (Chrome, Edge)
Delphi 11 Pro, Oxygene, C# (VS 2022), JS/HTML, Java (NB), PHP, Lazarus
|
Verfasst: Do 12.09.13 20:33
IhopeonlyReader hat folgendes geschrieben : | Und ich dache Random würde über die Systemzeit laufen, seit wann ist es eine "festgelegte Reihenfolge" (wenn auch 1 von 2^32) ? |
Es legt nach einem solchen Algorithmus den Startwert fest. Und von da aus ist die Reihenfolge dann fest.
Setz einfach mal RandSeed auf einen bestimmten Wert. Du wirst sehen, dass du immer die gleichen Zufallszahlen der Reihe nach bekommst.
Zufällig sieht das normalerweise nur aus, weil dieser RandSeed zufällig festgelegt wird. Deshalb sollte man auch nur einmal Randomize aufrufen und nicht während das Programm läuft immer wieder, weil man sonst noch weniger Zufall drin hat.
In der Doku, wo sonst?
docwiki.embarcadero....5/de/System.RandSeed
|
|
BenBE
Beiträge: 8721
Erhaltene Danke: 191
Win95, Win98SE, Win2K, WinXP
D1S, D3S, D4S, D5E, D6E, D7E, D9PE, D10E, D12P, DXEP, L0.9\FPC2.0
|
Verfasst: Fr 13.09.13 10:28
Für den Einstieg verweise ich ansonsten einmal auf www.schneierfacts.com/facts/395 bzw. blog.cryptographyengineering.com/ - wenn Du dort durch bist und alles verstehst (auch den Links dort folgen), können wir gern noch einmal reden.
Tut mir leid, das so sagen zu müssen, aber auf schlechte Crypto bin ich allergisch.
_________________ Anyone who is capable of being elected president should on no account be allowed to do the job.
Ich code EdgeMonkey - In dubio pro Setting.
Für diesen Beitrag haben gedankt: Martok
|
|
Anwender
Beiträge: 62
Erhaltene Danke: 9
|
Verfasst: Fr 13.09.13 11:24
BenBE hat folgendes geschrieben : | Tut mir leid, das so sagen zu müssen, aber auf schlechte Crypto bin ich allergisch. |
Zuspieler der NSA würden sich allerdings sehr freuen ;D
_________________ neu hier
|
|
IhopeonlyReader
Beiträge: 600
Erhaltene Danke: 23
Delphi 7 PE
|
Verfasst: Fr 13.09.13 13:55
BenBE hat folgendes geschrieben : | Tut mir leid, das so sagen zu müssen, aber auf schlechte Crypto bin ich allergisch. |
ok, der Thread heißt
Zitat: | Xor- Ordner- Verschlüsselung |
und nicht
Zitat: | NSA sicherer Ordner Verschlüsselung |
Dem Threadthema habe ich denke ich angemessenes Programm vorliegen.
Natürlich wäre es schön, gerade nachdem man erfahren hat wie viel die NSA ausspioniert (dass es rausgekommen ist finde ich gut ).
Dass man deshalb gerne ein solch "NSA-sicheres" Programm hätte, verstehe ich, deshalb werde ich ab jetzt weitere Sicherheitsmaßnahmen einbauen und das ganze "sicherer" machen, ggf. könntest du direkt helfen (wenn du Lust hast). Das werde ich als "neues" Projekt/ Exe anhängen, da es vom Thema abweicht. Ggf. werde ich einen neuen Thread eröffnen.
_________________ Sucht "neueres" Delphi
Wer nicht brauch was er hat, brauch auch nicht was er nicht hat!
|
|
IhopeonlyReader
Beiträge: 600
Erhaltene Danke: 23
Delphi 7 PE
|
Verfasst: Sa 14.09.13 22:18
was sind für euch sichere Verschlüsselung, die eingebaut werden sollten? RSA, (Caesar, OneTimePad, Vigenere... )
_________________ Sucht "neueres" Delphi
Wer nicht brauch was er hat, brauch auch nicht was er nicht hat!
|
|
BenBE
Beiträge: 8721
Erhaltene Danke: 191
Win95, Win98SE, Win2K, WinXP
D1S, D3S, D4S, D5E, D6E, D7E, D9PE, D10E, D12P, DXEP, L0.9\FPC2.0
|
Verfasst: So 15.09.13 00:12
Für den Anfang sollten folgende reichen:
- Salsa20/12 mit Poly1305
- ECDH über GF(p), sei p >> 2^512
- Keccak als Stream-Cipher, gern auch mit 31*31 Planes, l=8, n=64 und r=1024
- Rjindael+Serpent+Twofish mit unabhängigen Keys
_________________ Anyone who is capable of being elected president should on no account be allowed to do the job.
Ich code EdgeMonkey - In dubio pro Setting.
|
|
IhopeonlyReader
Beiträge: 600
Erhaltene Danke: 23
Delphi 7 PE
|
Verfasst: Mo 16.09.13 16:20
danke,
liege ich richtig in der Annahme, dass eingebaute Standard-Verschlüsselungen nichts bringen?
Also einen Schlüssel der IMMER mit drübergelegt wird...
Eventuell könnte man dadurch die Entropie erhöhen, wenn man das Programm allerdings besitzt würde es keine Sicherheit bringen, ist das richtig?
_________________ Sucht "neueres" Delphi
Wer nicht brauch was er hat, brauch auch nicht was er nicht hat!
|
|
IhopeonlyReader
Beiträge: 600
Erhaltene Danke: 23
Delphi 7 PE
|
Verfasst: Mo 16.09.13 20:36
Salsa20/12 mit Poly1305 versteh ich leider nicht
ECDH über GF(p), sei p >> 2^512 das ist so wie ich das mitgekriegt habe werden a und b von verschiedenen Personen vorgegeben, wenn das ganze wie bei mir aber lokal ist, wird nur a oder b benötigt. wenn p>>2^512 dann muss ich uBigNum verwenden richtig?
Was soll ich mit der riesen Zahl bzw. dem 512 Bit-langem Schlüssel machen? xorn? Porgrammieren könnte ich es...
Keccak als Stream-Cipher, gern auch mit 31*31 Planes, l=8, n=64 und r=1024 mhhh.. sorry das ich nur bei Wikipedia schaue, aber dort ist es meiner Meinung nach blöd erklärt, und nach der Definition soll l zwischen (einschließlich) 0 und 6 liegen. Aber genau, verstehe ich das auch nicht, zumindest nicht so dass ich direkt lostippen könnte.
Rjindael+Serpent+Twofish mit unabhängigen Keys... was meinst du mit unabhänige keys? usereingabe, konstant, vom Programm erzeugt und abgespeichert?
Serpent kann implementiert werden, da es als Unit öffentlich zur Verfügung steht.
Tut mir leid, aber ich habe mich mit solchen "arten" noch nicht auseinandergesetzt. Vielleicht kann das jemand anderes mal mit eigenen Worten erklären? oder sind sie so komplex, dass sie eig. keiner "mal eben" tippen könnte und man immer fertige Units hernimmt?
_________________ Sucht "neueres" Delphi
Wer nicht brauch was er hat, brauch auch nicht was er nicht hat!
|
|
richy-f
Hält's aus hier
Beiträge: 15
Win 7, Win 8
C#,C++,Java,Assembler früher Delphi,Pascal
|
Verfasst: Mi 18.09.13 14:43
Die ganze Diskussion zeigt aufjedenfall, dass ein bißchen Lektüre nicht schaden würde, wie der ein oder andere schon angemerkt hat.
Ganz gut für den Einstieg war dieses Buch, hab ich mir zur Vorlesung gekauft : www.amazon.de/Introd...tocols/dp/1584885513
Ansonsten gibt es auch viele Scripte zu Signal & Codierungstheorie sowie dann insbesondere zu PKK etc. online im Web zum Download
Einfach nur mit xor zu verschlüsseln mit einem festen Passwort lässt sich aufjedenfall wirklich einfach knacken, wie Ende Seite 1 schon jmd erklärt hat. Für die Passwortlänge gibts auch spezielle Tricks und Möglichkeiten diese rauszufinden. Danach braucht man nur ausreichend Chiffretext und dröselt es in Häufigkeitsanalysen für jede Bitposition auf.
Das ganze mit einer Stromchiffre zu machen ist eben wie schon angemerkt auch nur begrenzt sicher. Nutzt man eigentlich nur für Daten die man übermittelt und kurzzeitig sicher sein sollen. Aber nichts für ne langfristige Ablage als Datei für sensible Daten.
|
|
IhopeonlyReader
Beiträge: 600
Erhaltene Danke: 23
Delphi 7 PE
|
Verfasst: Mi 18.09.13 16:38
danke, aber mir fehlt die Motivation 500 Seiten in Englischer Fachsprache zu lesen.. lieber deutsche Einfachaltung, wie xor. Die Erklärung ist einfach und verständlich. Viele der "modernen" Crypt-Methoden sind nur deshalb sicher, weil man nicht direkt versteht wie was genau funktioniert.
Wenn man es dann verstanden hat, merkt man das es viele Ansätze gäbe, es zu knacken.
Meiner Meinung nach ist Xor mit einem vernünftigen "random" Schlüssel (der ca 1/10 der Datei groß ist) sicher genug !
Für Stick-Diebe etc. reicht es jedenfalls vollkommen aus. Ebenso für "ich schau mal eben nach" leute. Es dient dazu den "normalen" Bürger von den Dateien fernzuhalten.
Ihr glaubt gar nicht, was ich da schon VIEL SCHLIMMERES gesehen habe. Es gab eine Anwendung mit einem Symbol von einem Ordner. Öffnete man sie zum "ersten" mal, so gab man einen Ordnerpfad an. angeblich war dieser dann sicher
Wenn man auf die Anwendung klickte (anstatt Verknüpfung) öffnete sich ein Passwort Dialog. gab man das richtige Passwort ein, so wurde der Ordner geöffnet. Sonst nicht. Allerdings konnte man über den normalen Explorer ebenso ohne Probleme in den Ordner und ihr glaubt nicht, wie viel % der Mitbürger das für "sicher" halten würden (meine Schätzung liegt bei 70 bis 80 % )...
_________________ Sucht "neueres" Delphi
Wer nicht brauch was er hat, brauch auch nicht was er nicht hat!
|
|
BenBE
Beiträge: 8721
Erhaltene Danke: 191
Win95, Win98SE, Win2K, WinXP
D1S, D3S, D4S, D5E, D6E, D7E, D9PE, D10E, D12P, DXEP, L0.9\FPC2.0
|
Verfasst: Do 19.09.13 08:56
IhopeonlyReader hat folgendes geschrieben : | danke, aber mir fehlt die Motivation 500 Seiten in Englischer Fachsprache zu lesen.. lieber deutsche Einfachaltung, wie xor. Die Erklärung ist einfach und verständlich. |
RSA passt auf ein T-Shirt., die wesentlichen Teile sind 2 Formeln und 2 Bedingungen.
Und wenn Du deutsche Fachliteratur lesen willst, nimm Security Engineering in der deutschen Übersetzung; wobei das Original deutlich mehr Spaß macht
IhopeonlyReader hat folgendes geschrieben : | Viele der "modernen" Crypt-Methoden sind nur deshalb sicher, weil man nicht direkt versteht wie was genau funktioniert. |
Die sind sicher, weil genug Menschen unabhängig von einander gezeigt haben, dass sie sich daran die Zähne ausgebissen haben.
IhopeonlyReader hat folgendes geschrieben : | Wenn man es dann verstanden hat, merkt man das es viele Ansätze gäbe, es zu knacken. |
Bitte unterscheide zwischen "cracked" und "broken". Kleiner, aber SEHR wichtiger Unterschied.
IhopeonlyReader hat folgendes geschrieben : | Meiner Meinung nach ist Xor mit einem vernünftigen "random" Schlüssel (der ca 1/10 der Datei groß ist) sicher genug ! |
Snake Oil.
IhopeonlyReader hat folgendes geschrieben : | Für Stick-Diebe etc. reicht es jedenfalls vollkommen aus. Ebenso für "ich schau mal eben nach" leute. Es dient dazu den "normalen" Bürger von den Dateien fernzuhalten. |
Die Stick-Diebe sind i.d.R. sehr gezielt hinter deinen Daten her und kennen sich da durchaus mit Krypto aus. Und für die anderen, nun ja: Deine Gefahrenanalyse weicht da ein wenig von der Realität ab.
IhopeonlyReader hat folgendes geschrieben : | Ihr glaubt gar nicht, was ich da schon VIEL SCHLIMMERES gesehen habe. Es gab eine Anwendung mit einem Symbol von einem Ordner. Öffnete man sie zum "ersten" mal, so gab man einen Ordnerpfad an. angeblich war dieser dann sicher
Wenn man auf die Anwendung klickte (anstatt Verknüpfung) öffnete sich ein Passwort Dialog. gab man das richtige Passwort ein, so wurde der Ordner geöffnet. Sonst nicht. Allerdings konnte man über den normalen Explorer ebenso ohne Probleme in den Ordner und ihr glaubt nicht, wie viel % der Mitbürger das für "sicher" halten würden (meine Schätzung liegt bei 70 bis 80 % )... |
Hausaufgabe bis nächste Woche: Bringe den Leuten bei, Snake Oil zu erkennen.
_________________ Anyone who is capable of being elected president should on no account be allowed to do the job.
Ich code EdgeMonkey - In dubio pro Setting.
Für diesen Beitrag haben gedankt: FinnO
|
|
|