Grup DH bersama, rahasia baru: mengapa serangan menjadi lebih murah
Rahasia sesi baru tidak memperbaiki grup medan hingga yang lemah. Menggunakan ulang satu grup menyebarkan tahap serangan termahal ke setiap pertukaran yang menegosiasikannya.
Parameter grup bersifat publik secara desain, dan justru publisitas itulah yang membuatnya mudah diabaikan. Dalam Diffie-Hellman medan hingga, modulus dan generator dibagi, sedangkan eksponen privat dan kunci sesi yang dihasilkan tidak. Tahap mahal dari serangan ayak medan bilangan bergantung pada grup, bukan pada satu pertukaran, sehingga satu grup lemah yang dipakai di mana-mana menjadi tanggung jawab bersama. Menyebut parameternya publik itu tepat sekaligus tidak pada tempatnya, karena biaya yang dipakai ulang adalah biaya menyerang grup itu.
Separuh publik bukan separuh yang rentan, dan di situlah jebakannya
Setengah argumen yang biasa mengatakan bahwa parameter diterbitkan dalam standar, jadi penyerang sudah mengetahuinya dan menyembunyikannya tidak akan mengubah apa pun. Kedua pernyataan itu benar, dan tidak satu pun mengikuti dari yang lain. Grup bawaan yang dikirim bersifat publik, dan grup privat yang Anda buat minggu lalu juga terlihat oleh siapa pun yang menyelesaikan jabat tangan. Kerahasiaan tidak pernah menjadi kendalinya; kekuatan dan validasi adalah kendalinya.
Yang berubah adalah berapa banyak tempat yang berbagi kelemahan yang sama. Satu organisasi yang membuat grup 2048-bit sendiri membayar biaya serangan sendiri, sedangkan nilai bawaan protokol yang dipilih jutaan orang mengamortisasi satu biaya ke mereka semua. Dalam arti itulah grup yang tidak umum tidak otomatis lebih baik. Grup tidak biasa yang terlalu kecil hanyalah rahasia bersama yang lebih kecil dengan lebih sedikit mata yang mengawasinya.
Validasi sama pentingnya dengan ukuran. Rekan yang mengirim modulus dengan faktor kecil, atau yang bentuknya tidak seperti yang diharapkan protokol, dapat membocorkan informasi tentang eksponen privat bahkan ketika panjang bitnya terlihat terhormat. Pustaka yang menolak parameter cacat di pintu masuk melakukan pekerjaan nyata, itulah sebabnya penguraian parameter buatan sendiri adalah tempat buruk untuk menghemat usaha.
Apa yang sebenarnya dibeli prakomputasi bagi penyerang
Ayak medan bilangan memiliki tahap yang hanya bergantung pada bilangan prima, dan keluarannya dapat dipakai ulang terhadap setiap pertukaran yang memakai bilangan prima itu. Itulah seluruh mekanisme di balik kekhawatiran historis: bagian mahal dibayar sekali, dan biaya marginal setiap sesi berikutnya turun. Eksponen baru tetap melindungi setiap pertukaran dari pengamat pasif, selama grupnya cukup besar untuk membuat pengayakan tidak mungkin. Kedua pernyataan itu cocok, dan sebagian besar perdebatan tentang topik ini muncul dari memilih satu dan membuang yang lain.
Makalah Logjam tahun 2015 menunjukkan penurunan ke Diffie-Hellman 512-bit kelas ekspor dan memperkirakan berapa biaya menyerang grup yang lebih besar dan banyak dipakai ulang dengan sumber daya besar. Demonstrasinya konkret, perkiraannya adalah perkiraan, dan tidak satu pun menjadi bukti bahwa sesi VPN tertentu berhasil didekripsi.
Kutip makalah itu untuk mekanismenya dan untuk penurunan yang didemonstrasikan, bukan sebagai pengukuran penerapan Anda. Statistik lama tentang berapa banyak server yang berbagi grup bawaan menggambarkan internet tahun itu, bukan jaringan yang dapat Anda periksa hari ini. Yang berguna untuk dibawa adalah pertanyaannya: apakah perangkat Anda masih menegosiasikan grup yang kecil atau divalidasi dengan lemah?
Terstandardisasi tidak sama dengan lemah
RFC 7919 mendefinisikan grup medan hingga bernama agar kedua ujung sepakat atas grup berdasarkan pengenal dan menerapkan kebijakan yang konsisten. Menjadi terstandardisasi adalah keuntungan, karena menghapus ambiguitas negosiasi dan memungkinkan implementasi menolak ukuran yang tidak didukung. Grup bernama menjadi lemah hanya ketika ukurannya berada di bawah kebijakan yang Anda klaim ikuti, bukan karena muncul dalam sebuah dokumen. Logika yang sama berlaku untuk grup kurva eliptik, yang memiliki struktur dan mode kegagalan berbeda.
Pisahkan konstruksinya saat Anda bernalar tentangnya. Kesimpulan tentang Diffie-Hellman medan hingga tidak mengatakan apa pun tentang X25519, dan kesimpulan tentang grup MODP 1024-bit tidak mengatakan apa pun tentang yang 3072-bit. Kebijakan kekuatan berlaku per mekanisme, per ukuran, dan per versi protokol, itulah sebabnya frasa kriptografi kuat bukan pernyataan yang dapat ditinjau.
Autentikasi adalah separuh lainnya, dan ia tidak menggantikan. Grup kuat tanpa verifikasi rekan meninggalkan penyerang di tengah, dan sertifikat yang sah tidak dapat menyelamatkan pertukaran 768-bit. Tinjau keduanya sebagai dua jalur independen, lalu pastikan keduanya benar-benar dinegosiasikan.
Baca grup yang dinegosiasikan pada koneksi nyata
Baca grup yang dinegosiasikan dari perangkat, bukan dari templat konfigurasi. Templat menjelaskan niat, dan nilai yang menarik adalah yang disepakati kedua ujung selama jabat tangan terakhir. Pada titik akhir IPsec, keluaran status biasanya mencetak proposal yang dipilih, termasuk grup MODP.
Tangkap baris itu sebelum dan sesudah perubahan kebijakan, dan simpan keduanya dalam catatan perubahan. Perbandingannya adalah buktinya.
ipsec statusall | grep -Ei "proposal|ESP|IKE"
openssl dhparam -in /etc/vpn/dh3072.pem -check -nooutJika setelah perubahan status masih menampilkan grup lama, koneksi tidak menegosiasikan ulang dan penyuntingan konfigurasi tidak membuktikan apa pun. Mulai ulang rekan atau bersihkan asosiasi keamanan, lalu baca status lagi. Kebijakan yang hanya diberlakukan pada koneksi baru akan meninggalkan terowongan berumur panjang pada parameter lama selama terowongan itu menyala.
Periksa grup dan identitas rekan secara terpisah
Pisahkan apa yang dilindungi grup dari siapa yang ada di ujung lain. Catat metode pertukaran kunci, ukuran grup, dan metode autentikasi sebagai tiga bidang, karena ketiganya gagal secara independen. Terowongan yang menegosiasikan grup 3072-bit tetapi menerima sertifikat apa pun bukan risiko yang sama dengan terowongan yang menyematkan rekan dan memakai grup 2048-bit.
Tuliskan kriteria penerimaan sebelum tinjauan dimulai, agar hasilnya perbandingan dan bukan pendapat. Ukuran grup minimum per versi protokol, daftar izin grup bernama, dan verifikasi rekan wajib sudah cukup untuk membuat keputusannya mekanis. Ambiguitas dalam daftar itulah yang mengubah tinjauan menjadi perdebatan, dan perdebatan tidak diperbaiki. Maka keluarannya adalah daftar titik akhir yang gagal pada aturan yang dinyatakan.
ipsec statusall | grep -Ei "peer|auth|cert"
openssl s_client -connect vpn.acme.example:443 -brief -cipher 'DHE-RSA-AES256-GCM-SHA384'Tutup lingkarannya dengan membaca ulang nilai yang dinegosiasikan setelah perbaikan. Berkas konfigurasi yang patuh bukan bukti bahwa sebuah terowongan mengambilnya. Keluaran status dan satu jabat tangan baru adalah buktinya, dan mengumpulkannya memakan waktu lebih sedikit daripada rapat tentang apakah keduanya diperlukan.