O ECB kipinde bir IV ile AES kullanmak mümkün mü?

4 Cevap php

http://php.net/manual/en/function.mcrypt-encrypt.php, ben ECB kipinde bir IV ile AES kullanarak aşağıdaki kodları gördüm itibaren

<?php
    $iv_size = mcrypt_get_iv_size(MCRYPT_RIJNDAEL_256, MCRYPT_MODE_ECB);
    $iv = mcrypt_create_iv($iv_size, MCRYPT_RAND);
    $key = "This is a very secret key";
    $text = "Meet me at 11 o'clock behind the monument.";
    echo strlen($text) . "\n";

    $crypttext = mcrypt_encrypt(MCRYPT_RIJNDAEL_256, $key, $text, MCRYPT_MODE_ECB, $iv);
    echo strlen($crypttext) . "\n";
?>

But from wiki http://en.wikipedia.org/wiki/Block_cipher_modes_of_operation, it says ECB does not need an IV. Is it really possible to use AES with an IV in ECB mode? In this ECB mode, will the additional IV provide a little bit more security comparing to when it is not used?

4 Cevap

IV kullanmak için hiçbir yolu yoktur bu yüzden ECB bloklar arasındaki zincirleme yapmaz. mcrypt tüm modüller için aynı API kullanır. ECB modül olarak tanımlanan işlev aşağıdaki çünkü IV basitçe, ECB için göz ardı edilir

int _has_iv() { return 0; }

ECB modunda bir IV kullanmak için hiçbir yolu yok. Eğer gerektiği gibi, bu, ancak, moot tür

Never Ever use ECB mode for Anything, Ever*.

Daha genel anlamda, muhtemelen doğrudan kripto ilkel kullanarak değil, böyle bir kripto kütüphanesi kullanarak olmamalıdır keyczar Bu kararların bu tür uzak soyutlar.

** Aslında bu tür 'güvenli' pseudorandom permütasyon olarak ECB için bazı çok özel kullanımları vardır - ama kesinlikle verileri şifreleyerek ilgili her şey için Avrupa Merkez Bankası'nı kullanarak olmamalıdır.

Her şeyden önce, bu IV koymak yerde olmazdı. ECB şifresiz blokları birer birer alarak ve ilgili ciphertexts üretmek için anahtar ile onları şifreleyerek çalışır. IV kullanmak için hiçbir yer sadece orada. Bu teori diyor ne kadar.

Ben MCRYPT_ENCRYPT nasıl çalıştığını ayrıntılarını bilmiyorum, ama ben ECB kullanırken sadece IV kullanmaz şüpheli olur. Farklı damar yolu sağlayan ECB şifreleyerek bunu deneyin. Sonuç aynı ise, fonksiyon sadece IV kullanmak değildir.

ECB is perfectly acceptable for Counter (CTR) Mode Encryption/Decryption: http://en.wikipedia.org/wiki/Block_cipher_modes_of_operation#Counter_.28CTR.29

TO'nun çözme is CTR Şifreleme.