2011-01-01 4 views
0

Mit Sicherheit meine ich, dass codierte Zeichenfolge ist nicht von zufälligen Rauschen und unterscheidet sich bei jeder Verschlüsselung des gleichen Textes, so dass es unmöglich ist, den verwendeten Verschlüsselungsalgorithmus zu erraten oder einen Wörterbuchangriff auf den kodierten Text durchzuführen.Welche dieser Modi: cbc, cfb, ctr, ecb, ncfb, nofb, ofb, stream sind sicher und welche sind absolut no-no

Zweitens: Ausgabe String-Länge entspricht nicht auf einfache Weise der Eingabe String-Länge, so dass es nicht möglich ist, auf diesem Konto zu raten.

Drittens: es ist möglich, zu verifizieren, dass das angegebene Passwort falsch ist, so dass die Dekodierungsfunktion falsch anstelle der angeblich dekodierten Zufallszeichenfolge zurückgeben könnte.

--- edit: das ist, wie schnell Paar Algorithmus gegeben und Modus kodiert:

0.554 : cast-128 : ctr : 8 
0.556 : gost : ncfb : 8 
0.5562 : cast-128 : ecb : 8 
0.5566 : cast-128 : ncfb : 8 
0.5579 : gost : cbc : 8 
0.5596 : gost : cfb : 8 
0.5596 : gost : ofb : 8 
0.5601 : gost : ctr : 8 
0.5613 : cast-256 : cfb : 16 
0.5621 : twofish : cbc : 16 
0.5622 : rijndael-128 : ctr : 16 
0.5632 : twofish : cfb : 16 
0.5646 : rijndael-128 : cfb : 16 
0.5656 : rijndael-128 : ofb : 16 
0.5657 : rijndael-128 : ncfb : 16 
0.5658 : loki97 : cbc : 16 
0.5663 : gost : ecb : 8 
0.5667 : cast-128 : cfb : 8 
0.5674 : cast-128 : ofb : 8 
0.5675 : rijndael-128 : ecb : 16 
0.5684 : loki97 : ctr : 16 
0.5684 : rijndael-128 : nofb : 16 
0.5686 : loki97 : ecb : 16 
0.5688 : loki97 : cfb : 16 
0.5692 : gost : nofb : 8 
0.57 : saferplus : ecb : 16 
0.5701 : cast-256 : nofb : 16 
0.5704 : loki97 : ncfb : 16 
0.571 : twofish : ncfb : 16 
0.5719 : cast-256 : ecb : 16 
0.5728 : cast-256 : cbc : 16 
0.573 : twofish : ofb : 16 
0.5731 : cast-256 : ofb : 16 
0.5737 : loki97 : nofb : 16 
0.5741 : saferplus : ctr : 16 
0.5748 : twofish : ecb : 16 
0.575 : rijndael-192 : cfb : 24 
0.5759 : cast-256 : ctr : 16 
0.5769 : cast-128 : nofb : 8 
0.5776 : saferplus : ofb : 16 
0.5778 : saferplus : ncfb : 16 
0.5778 : twofish : nofb : 16 
0.5783 : rijndael-128 : cbc : 16 
0.5795 : rijndael-192 : ecb : 24 
0.5801 : rijndael-192 : cbc : 24 
0.5808 : rijndael-192 : nofb : 24 
0.5809 : saferplus : cbc : 16 
0.581 : saferplus : nofb : 16 
0.5829 : rijndael-192 : ctr : 24 
0.5837 : serpent : ctr : 16 
0.5845 : cast-256 : ncfb : 16 
0.5856 : xtea : ecb : 8 
0.5857 : serpent : cbc : 16 
0.5859 : xtea : ctr : 8 
0.5863 : saferplus : cfb : 16 
0.5877 : twofish : ctr : 16 
0.5881 : xtea : nofb : 8 
0.5887 : xtea : ofb : 8 
0.5891 : cast-128 : cbc : 8 
0.5892 : xtea : ncfb : 8 
0.5895 : rijndael-192 : ncfb : 24 
0.5913 : serpent : cfb : 16 
0.5918 : serpent : ofb : 16 
0.5934 : rijndael-256 : ecb : 32 
0.5935 : rijndael-256 : cbc : 32 
0.5936 : serpent : nofb : 16 
0.5943 : loki97 : ofb : 16 
0.595 : rijndael-192 : ofb : 24 
0.5958 : rijndael-256 : ctr : 32 
0.596 : blowfish-compat : cbc : 8 
0.5962 : serpent : ecb : 16 
0.5972 : rijndael-256 : cfb : 32 
0.5976 : rijndael-256 : ncfb : 32 
0.5977 : xtea : cbc : 8 
0.5982 : rc2 : ctr : 8 
0.5989 : blowfish-compat : cfb : 8 
0.599 : rc2 : cfb : 8 
0.6 : des : cfb : 8 
0.6002 : rc2 : nofb : 8 
0.6009 : blowfish-compat : ctr : 8 
0.6013 : rc2 : cbc : 8 
0.6021 : rc2 : ncfb : 8 
0.604 : rijndael-256 : nofb : 32 
0.6043 : blowfish-compat : ncfb : 8 
0.6043 : des : nofb : 8 
0.6055 : des : ecb : 8 
0.607 : blowfish : cbc : 8 
0.6078 : rc2 : ecb : 8 
0.6081 : blowfish-compat : nofb : 8 
0.6081 : des : cbc : 8 
0.6093 : blowfish : ecb : 8 
0.6098 : des : ofb : 8 
0.6105 : blowfish : cfb : 8 
0.6113 : blowfish-compat : ofb : 8 
0.6137 : rc2 : ofb : 8 
0.6139 : xtea : cfb : 8 
0.6141 : serpent : ncfb : 16 
0.6144 : des : ctr : 8 
0.6174 : blowfish : ofb : 8 
0.6184 : blowfish : ncfb : 8 
0.6218 : des : ncfb : 8 
0.6228 : blowfish-compat : ecb : 8 
0.6228 : rijndael-256 : ofb : 32 
0.6253 : blowfish : nofb : 8 
0.628 : blowfish : ctr : 8 
0.6343 : tripledes : ctr : 8 
0.6356 : tripledes : cfb : 8 
0.6365 : tripledes : cbc : 8 
0.6367 : tripledes : ncfb : 8 
0.6368 : tripledes : ecb : 8 
0.647 : tripledes : ofb : 8 
0.6582 : tripledes : nofb : 8 

Wenn man von oben nach unten, die sicherste sein wird?

+0

Hier fand ich die Antwort: http://StackOverflow.com/Questions/1220751/How-to-choose-an-aes-encryption-mode-cbc-ecb-ctr-ocb-cfb – rsk82

Antwort

0

Schauen Sie hier: http://en.wikipedia.org/wiki/Block_cipher_modes_of_operatio für etwas Hintergrund.

Es kommt wirklich darauf an. Einige haben bekannte Nachteile, Sie müssen sich wirklich die Kombinations-Chiffre/Verkettung ansehen und die Besonderheiten, wie Sie sie verwenden.

Für "gelegentliche Verwendung" können Sie argumentieren, dass der Blockchiffre-Modus nicht der empfindlichste Teil des krypographischen Systems ist.

Einige sind nur dann sinnvoll, wenn Sie eine Blockchiffre in eine Stromchiffre drehen will, zum Beispiel:

  • CTR
  • CFB
  • OFB

Also, wenn Sie ein tun müssen, das sind diese nicht nützlich für dich.

ECB ist der einfachste, Hauptnachteil ist, dass gleiche Klartextblöcke zu einem identischen Chiffretext führen. Es gibt wenig Grund, das heutzutage zu verwenden.

Adressiervolumen Ihre Punkte:

  1. nicht wirklich auf dem Blockchiffriermodus abhängen. Sie können salt verwenden oder das Kennwort N-mal verschlüsseln, um vorberechnete Tabellenangriffe zu vermeiden.

  2. Es passiert nicht. Eingang ist vor

  3. Nicht sicher Verschlüsselung gepolstert, was Sie meinen ...

Edit: Ich stimme mit Eugene, nicht das Rad neu erfinden, wenn Sie nicht brauchen!

+0

Wie kann ich PGP in verwenden PHP? Das sind zwei verschiedene Dinge. In PHP muss ich mcrypt dafür verwenden, schau dir die Tags an. – rsk82

+0

@ user393087 Was ist "muss" in Ihrem Fall? Ist das eine Anforderung an dich oder hast du entschieden, dass du "mcrypt" benutzen musst? mcrypt ist eine Bibliothek, OpenPGP ist eine Technologie, die mit mehreren Bibliotheken implementiert wird (aber das sollte zu einer anderen Frage gehen). Eine Option wird hier beschrieben: http://devzone.zend.com/article/1265 –

2

Zweitens: das macht keinen Sinn. Sie erkennen, dass das Ergebnis der Verschlüsselung von 4 Bytes sich vom Ergebnis der Verschlüsselung von 4 Megabyte unterscheidet, nicht wahr? Um die tatsächliche Länge zu maskieren (beim Verschlüsseln von Passwörtern und ähnlichem) wird Padding verwendet - die zu verschlüsselnden Daten werden mit einer bestimmten Anzahl von Bytes versehen und dann wird das Ganze verschlüsselt.Aber dann wieder gibt es einen Unterschied zwischen der Verschlüsselung 4-Byte-lange Passwort und 48-Byte-lange Passphrase (es sei denn, Sie Padding zu 64 Bytes verwenden, aber Sie haben die Idee).

Drittens: Hashes werden dafür verwendet. I.e. Sie fügen einen Hash Ihrer ursprünglichen Daten (oder einiger zusätzlicher Daten) mit Ihren verschlüsselten Daten hinzu. Nach der Entschlüsselung wird der Hash neu berechnet und mit dem gespeicherten Hash verglichen. Beachten Sie, dass der Timing-Angriff im Vergleich möglich ist, daher muss der Vergleich korrekt durchgeführt werden.

Im Allgemeinen - Sie versuchen, das Rad neu zu erfinden. Wenn Sie nur die Daten mit einem sicheren Schlüssel (oder sogar einem Passwort) verschlüsseln müssen, nehmen Sie OpenPGP. Es löst alle Fragen, die Sie gestellt haben und würde Sie fragen, während Sie die starke Verschlüsselung neu erfinden. Mit OpenPGP können Sie einfache Passphrases für die Verschlüsselung verwenden.

Verwandte Themen