Analisis formal telah dilakukan oleh Phil Rogaway pada 2011, di sini . Bagian 1.6 memberikan ringkasan yang saya transkripsikan di sini, menambahkan penekanan saya sendiri dalam huruf tebal (jika Anda tidak sabar, maka rekomendasinya adalah menggunakan mode CTR, tetapi saya menyarankan Anda membaca paragraf saya tentang integritas pesan versus enkripsi di bawah).
Perhatikan bahwa sebagian besar dari ini memerlukan IV untuk menjadi acak, yang berarti tidak dapat diprediksi dan karenanya harus dihasilkan dengan keamanan kriptografi. Namun, beberapa hanya memerlukan "nonce", yang tidak menuntut properti itu tetapi sebaliknya hanya mengharuskan itu tidak digunakan kembali. Oleh karena itu desain yang mengandalkan nonce lebih rentan kesalahan daripada desain yang tidak (dan percayalah, saya telah melihat banyak kasus di mana CBC tidak dilaksanakan dengan pemilihan IV yang tepat). Jadi, Anda akan melihat bahwa saya telah menambahkan dengan berani ketika Rogaway mengatakan sesuatu seperti "kerahasiaan tidak tercapai ketika IV adalah nonce", itu berarti bahwa jika Anda memilih IV Anda yang aman secara kriptografis (tidak dapat diprediksi), maka tidak ada masalah. Tetapi jika tidak, maka Anda kehilangan sifat keamanan yang baik. Jangan sekali-kali menggunakan kembali infus untuk mode-mode ini.
Juga, penting untuk memahami perbedaan antara integritas pesan dan enkripsi. Enkripsi menyembunyikan data, tetapi penyerang mungkin dapat memodifikasi data yang dienkripsi, dan hasilnya berpotensi diterima oleh perangkat lunak Anda jika Anda tidak memeriksa integritas pesan. Sementara pengembang akan mengatakan "tetapi data yang dimodifikasi akan kembali sebagai sampah setelah dekripsi", seorang insinyur keamanan yang baik akan menemukan kemungkinan bahwa sampah tersebut menyebabkan perilaku buruk dalam perangkat lunak, dan kemudian ia akan mengubah analisis itu menjadi serangan nyata. Saya telah melihat banyak kasus di mana enkripsi digunakan tetapi integritas pesan sangat dibutuhkan lebih dari enkripsi. Pahami apa yang Anda butuhkan.
Saya harus mengatakan bahwa meskipun GCM memiliki kedua enkripsi dan integritas pesan, itu adalah desain yang sangat rapuh: jika Anda menggunakan kembali IV, Anda kacau - penyerang dapat memulihkan kunci Anda. Desain lain kurang rapuh, jadi saya pribadi takut untuk merekomendasikan GCM berdasarkan jumlah kode enkripsi yang buruk yang saya lihat dalam praktiknya.
Jika Anda membutuhkan keduanya, integritas pesan dan enkripsi, Anda dapat menggabungkan dua algoritma: biasanya kita melihat CBC dengan HMAC, tetapi tidak ada alasan untuk mengikat diri Anda dengan CBC. Yang penting untuk diketahui adalah mengenkripsi terlebih dahulu, lalu MAC konten yang dienkripsi , bukan sebaliknya. Juga, IV harus menjadi bagian dari perhitungan MAC.
Saya tidak mengetahui masalah IP.
Sekarang untuk hal-hal baik dari Profesor Rogaway:
Memblokir mode sandi, enkripsi tetapi tidak integritas pesan
ECB : Blockcipher, mode mengenkripsi pesan yang merupakan kelipatan dari n bit dengan secara terpisah mengenkripsi setiap bagian n-bit. Properti keamanan lemah , metode bocor kesetaraan blok di kedua posisi blok dan waktu. Dari nilai warisan yang cukup besar, dan nilai sebagai blok bangunan untuk skema lain, tetapi moda tersebut tidak mencapai tujuan keamanan yang secara umum diinginkan dalam haknya sendiri dan harus digunakan dengan sangat hati-hati; ECB tidak boleh dianggap sebagai mode kerahasiaan "tujuan umum" .
CBC : Skema enkripsi berbasis IV, mode aman sebagai skema enkripsi probabilistik, mencapai indistinguishability dari bit acak, dengan asumsi IV acak. Kerahasiaan tidak akan tercapai jika IV hanya merupakan nonce , atau jika nonce dienkripsi dengan kunci yang sama yang digunakan oleh skema, seperti yang disarankan oleh standar secara salah. Ciphertext sangat mudah ditempa. Tidak ada keamanan serangan ciphertext (CCA) yang dipilih. Kerahasiaan tidak dapat diperoleh jika ada ramalan bantalan yang benar untuk banyak metode bantalan. Enkripsi tidak efisien karena secara inheren serial. Banyak digunakan, properti keamanan mode-privasi mode ini sering menyebabkan penyalahgunaan. Dapat digunakan sebagai blok bangunan untuk algoritma CBC-MAC. Saya tidak dapat mengidentifikasi kelebihan penting dibandingkan mode CTR.
CFB : Skema enkripsi berbasis IV, mode aman sebagai skema enkripsi probabilistik, mencapai ketidakterbandingan dari bit acak, dengan asumsi IV acak. Kerahasiaan tidak tercapai jika IV dapat diprediksi , atau jika dibuat oleh nonce yang dienkripsi dengan kunci yang sama dengan yang digunakan oleh skema, seperti yang disarankan oleh standar secara salah. Ciphertext bisa ditempa. Tidak ada keamanan CCA. Enkripsi tidak efisien karena secara inheren serial. Skema tergantung pada parameter s, 1 ≤ s ≤ n, biasanya s = 1 atau s = 8. Tidak efisien untuk memerlukan satu panggilan blockcipher untuk hanya memproses bit s. Mode ini mencapai properti "sinkronisasi diri" yang menarik; penyisipan atau penghapusan sejumlah karakter s-bit ke dalam ciphertext hanya sementara mengganggu dekripsi yang benar.
OFB : Skema enkripsi berbasis IV, mode aman sebagai skema enkripsi probabilistik, mencapai indistinguishability dari bit acak, dengan asumsi IV acak. Kerahasiaan tidak tercapai jika IV adalah nonce, meskipun urutan tetap IVs (misalnya, penghitung) berfungsi dengan baik. Ciphertext sangat mudah ditempa. Tidak ada keamanan CCA. Enkripsi dan dekripsi tidak efisien karena secara inheren berseri. Mengenkripsi secara alami string dengan panjang bit apa pun (tidak diperlukan bantalan). Saya tidak dapat mengidentifikasi kelebihan penting dibandingkan mode CTR.
RKPT : Skema enkripsi berbasis IV, mode ini mencapai ketidakterbandingan dari bit acak dengan asumsi nonce IV. Sebagai skema berbasis nonce aman, mode ini juga dapat digunakan sebagai skema enkripsi probabilistik, dengan IV acak. Kegagalan total privasi jika nonce digunakan kembali pada enkripsi atau dekripsi. Paralelabilitas mode sering membuatnya lebih cepat, dalam beberapa pengaturan jauh lebih cepat, daripada mode kerahasiaan lainnya. Blok bangunan penting untuk skema enkripsi terotentikasi. Secara keseluruhan, biasanya cara terbaik dan paling modern untuk mencapai enkripsi privasi saja.
XTS : Skema enkripsi berbasis IV, mode bekerja dengan menerapkan blockcipher tweakable (aman sebagai PRP kuat) untuk setiap potongan n-bit. Untuk pesan dengan panjang tidak dapat dibagi oleh n, dua blok terakhir diperlakukan secara khusus. Satu-satunya penggunaan mode yang diizinkan adalah untuk mengenkripsi data pada perangkat penyimpanan terstruktur-blok. Lebar sempit PRP yang mendasarinya dan perawatan blok akhir fraksional yang buruk adalah masalah. Lebih efisien tetapi kurang diinginkan daripada blockcipher PRP (secure-block) aman.
MAC (integritas pesan tetapi bukan enkripsi)
ALG1–6 : Kumpulan MAC, semuanya berdasarkan CBC-MAC. Terlalu banyak skema. Beberapa terbukti aman sebagai VIL PRF, beberapa sebagai FIL PRF, dan beberapa tidak memiliki keamanan yang terbukti. Beberapa skema mengakui serangan merusak. Beberapa mode diberi tanggal. Pemisahan kunci tidak cukup diperhatikan untuk mode yang memilikinya. Seharusnya tidak diadopsi secara massal, tetapi secara selektif memilih skema "terbaik" adalah mungkin. Akan lebih baik untuk tidak mengadopsi mode-mode ini, mendukung CMAC. Beberapa MAC ISO 9797-1 distandarisasi dan digunakan secara luas, terutama di perbankan. Versi standar revisi (ISO / IEC FDIS 9797-1: 2010) akan segera dirilis [93].
CMAC : MAC yang didasarkan pada CBC-MAC, modenya terbukti aman (sampai batas ulang tahun) sebagai (VIL) PRF (dengan asumsi blockcipher yang mendasari adalah PRP yang baik). Pada dasarnya biaya minimum untuk skema berbasis CBCMAC. Sifat serial serial masalah dalam beberapa domain aplikasi, dan penggunaan dengan blockcipher 64-bit akan membutuhkan penguncian ulang sesekali. Lebih bersih dari koleksi ISO 9797-1 MAC.
HMAC : MAC yang didasarkan pada fungsi hash kriptografi dan bukan blockcipher (meskipun sebagian besar fungsi hash kriptografis itu sendiri didasarkan pada blockciphers). Mekanisme menikmati batas keamanan yang dapat dibuktikan kuat, meskipun tidak dari asumsi yang lebih disukai. Berbagai varian yang berkaitan erat dalam literatur mempersulit untuk mendapatkan pemahaman tentang apa yang diketahui. Tidak ada serangan merusak yang pernah disarankan. Banyak terstandarisasi dan digunakan.
GMAC : MAC berbasis nonce yang merupakan kasus khusus GCM. Mewarisi banyak karakteristik baik dan buruk GCM. Tetapi persyaratan nonce tidak diperlukan untuk MAC, dan di sini ia membeli sedikit manfaat. Serangan praktis jika tag dipotong ke ≤ 64 bit dan tingkat dekripsi tidak dipantau dan dikurangi. Kegagalan total pada nonce-reuse. Penggunaan tetap tersirat jika GCM diadopsi. Tidak direkomendasikan untuk standardisasi terpisah.
enkripsi terotentikasi (enkripsi dan integritas pesan)
CCM : Skema AEAD berbasis non yang menggabungkan enkripsi mode CTR dan CBC-MAC mentah. Serial, membatasi kecepatan dalam beberapa konteks. Terbukti aman, dengan batas yang baik, dengan asumsi blockcipher yang mendasarinya adalah PRP yang baik. Konstruksi tidak bijaksana yang terbukti melakukan pekerjaan. Lebih mudah diimplementasikan daripada GCM. Dapat digunakan sebagai MAC berbasis nonce. Banyak terstandarisasi dan digunakan.
GCM : Skema AEAD berbasis non yang menggabungkan enkripsi mode CTR dan fungsi hash universal berbasis GF (2128). Karakteristik efisiensi yang baik untuk beberapa lingkungan implementasi. Hasil yang terbukti aman-aman dengan asumsi pemotongan tag minimal. Serangan dan batas keamanan yang dapat dibuktikan buruk dengan adanya pemotongan tag yang substansial. Dapat digunakan sebagai MAC berbasis nonce, yang kemudian disebut GMAC. Pilihan yang dipertanyakan untuk mengizinkan nonces selain 96-bit. Rekomendasikan batasi nonces ke 96-bit dan tag setidaknya 96 bit. Banyak terstandarisasi dan digunakan.