Mengapa Kunci Blowfish Lebih Panjang Tidak Dapat Membaiki Blok 64 Bit
Kunci Blowfish boleh mencapai 448 bit sementara blok kekal 64 bit. Semak sifer yang dirundingkan dan rancang penggantian yang disokong dan bukannya kunci yang lebih panjang.
Satu profil VPN menawarkan Blowfish dengan kunci 448 bit, dan seseorang mencadangkan penggunaan kunci terpanjang untuk mengekalkan sifer. Panjang kunci itu nyata, tetapi ia adalah nombor yang salah untuk dioptimumkan. Blowfish mengubah blok 64 bit tanpa mengira panjang kunci, dan lebar blok itulah yang mengehadkan berapa banyak trafik yang boleh dilindungi oleh satu kunci dengan selamat. Jalankan semakan di bawah mengikut urutan dan berhenti pada yang pertama yang membersihkan perkhidmatan, kerana langkah kemudian tidak boleh membaiki langkah terdahulu.
Semak apa yang sebenarnya dirundingkan oleh rakan sebaya
Baca sifer saluran data dari kedua-dua hujung, bukan dari profil yang anda hendak gunakan. Konfigurasi klien boleh menyenaraikan beberapa sifer, dan yang dipilih ialah hasil rundingan antara dua pelaksanaan dan versi masing-masing. Tingkatkan verbositi log pada sambungan ujian dan baca baris saluran data, yang menamakan sifer dan saiz kunci yang benar-benar dimulakan.
Jika sifer yang dirundingkan ialah AES-GCM atau ChaCha20-Poly1305, berhenti di sini. Pembinaan itu menggunakan blok 128 bit dan mengesahkan muatan, jadi hujah perlanggaran 64 bit di bawah tidak terpakai kepadanya.
Asingkan panjang kunci daripada lebar blok
Blowfish menerima kunci dari 32 hingga 448 bit, dan dokumentasi penulis algoritma menyenaraikan kedua-dua nombor secara berasingan. Kunci ialah rahsia; blok ialah unit transformasi. Rahsia yang lebih panjang menyukarkan tekaan dan tidak melakukan apa-apa pada lebar blok yang diproses oleh sifer.
Dalam mod CBC, sifer digunakan pada blok lebar tetap, dirantai dengan blok teks sifer sebelumnya dan ditambah padding pada akhirnya. Bagi Blowfish lebar itu ialah 64 bit, atau lapan bait. Jadual kunci boleh sebesar yang anda mahu; rantaian masih bergerak lapan bait setiap kali.
Itulah sebabnya menaikkan panjang kunci bukan pengurangan risiko. Ia menangani kekerasan kasar terhadap kunci, manakala risiko perlanggaran di bawah ialah sifat lebar blok dan mod.
Terapkan aritmetik hari lahir pada saiz blok
Blok 64 bit mempunyai skala hari lahir kira-kira 2^32 blok yang disiferkan di bawah satu kunci sebelum perlanggaran menjadi mungkin. Setiap blok membawa lapan bait, jadi skala yang sama ialah kira-kira 2^35 bait, atau 32 GiB data di bawah satu kunci.
Anggapnya sebagai skala, bukan kuota. Perlanggaran adalah probabilistik, dan sama ada satu itu membocorkan sesuatu bergantung pada mod, corak trafik dan sama ada penyerang boleh mengenali atau mempengaruhi teks biasa di sekelilingnya. Bait pertama selepas 32 GiB bukan peristiwa penyahsiferan, dan 32 GiB pertama tidak diperakui selamat.
Penyelidik Sweet32 menunjukkan pada 2016 serangan praktikal terhadap sifer blok 64 bit, termasuk senario OpenVPN, dalam keadaan yang memerlukan pemerhatian dan penjanaan trafik. Tetapan lalai dan versi perisian yang diterbitkan mereka ialah konteks sejarah, bukan penerangan tentang penggunaan anda.
Tentukan sama ada penggunaan semula CBC penting di sini
Dalam CBC, blok teks sifer yang berulang bermakna dua blok teks biasa berbeza dengan hubungan yang diketahui, kerana XOR rantaian membatalkan dirinya. Penyerang yang boleh memerhati teks sifer dan mengetahui atau boleh mempengaruhi salah satu teks biasa mungkin boleh mendapatkan maklumat tentang yang lain. Kunci Blowfish tidak pernah diperlukan untuk itu.
Jadi soalan yang relevan ialah berapa lama kunci kekal dalam perkhidmatan, berapa banyak trafik yang melaluinya dan sama ada sesiapa boleh memerhati dan mengarahkan trafik itu. Penggantian kunci mengurangkan bilangan blok setiap kunci, tetapi selang masa bukan had bait: terowong yang sibuk boleh memindahkan lebih banyak data daripada yang terbiar dalam jam yang sama. Jika anda mengekalkan sifer lama, terbitkan had daripada pembinaan dan jumlah sebenar, bukan daripada nombor bulat.
Jika jumlah yang diukur bagi setiap kunci kekal jauh di bawah skala hari lahir, pendedahan itu lebih kecil. Ia masih bukan sifar dan masih menjadi sebab untuk merancang migrasi dan bukannya berhenti bimbang.
Ganti sifer, bukan kunci
Pindahkan perkhidmatan kepada sifer AEAD yang disokong dan sahkan bahawa kedua-dua rakan, versi mereka dan bahagian belakang kriptografi mereka boleh merundingkannya. Kunci Blowfish yang lebih panjang tidak mengubah apa-apa yang penting, dan meneka arahan baharu pada satu klien ialah cara terowong yang berfungsi menjadi rosak. Uji perubahan pada satu klien dan satu pelayan sebelum menyentuh seluruh armada. Simpan profil lama tersedia untuk pengunduran sehingga sifer baharu melepasi kitaran sambungan penuh.
Kekalkan pengesahan sijil dan pengesahan akaun semasa perubahan. Kedua-duanya menjawab soalan yang berbeza: log masuk yang berjaya tidak boleh melebarkan blok, dan sifer data yang lebih baik tidak memberi alasan untuk mempercayai pelayan yang salah.
Tutup semakan dengan membaca sifer yang dirundingkan sekali lagi pada sambungan baharu dan kemudian sahkan bahawa sifer lama tidak lagi diterima. Jika rakan masih menawarkannya, migrasi belum selesai, apa pun yang dikatakan profil di sebelah sana.