Apa Itu Nonce VPN, dan Mengapa Penggunaan Ulang Merusak Terowongan
Nonce adalah nilai per pesan yang tidak boleh pernah berulang di bawah satu kunci, dan biasanya bergerak terbuka. Mengeditnya dengan tangan adalah kesalahan yang harus dihindari.
Kebanyakan orang menemui kata nonce di profil VPN dan menganggapnya sebagai rahasia bersama lain yang harus disalin antar rekan. Bukan. Nonce adalah nilai yang tidak boleh pernah berulang di bawah kunci yang sama, dan pada sebagian besar enkripsi berbasis nonce nilainya bergerak terbuka. Kebingungan itu tetap tidak berbahaya sampai seseorang mengeditnya dengan tangan, dan di situlah kerusakan sebenarnya dimulai.
Dari Mana Nonce Sebenarnya Berasal
Enkripsi terautentikasi membutuhkan nonce berbeda untuk setiap pesan yang dienkripsi di bawah kunci. Protokol memenuhi persyaratan itu dengan cara berbeda: penghitung yang naik secara monoton, garam yang digabungkan dengan pengenal paket, atau nilai acak yang cukup panjang. IKEv2 menukar nonce selama pertukaran awal, dan itu adalah masukan publik untuk derivasi kunci, bukan rahasia.
Keunikan bisa bersifat struktural atau probabilistik. Penghitung tidak bisa berulang sampai ia berputar, karena itu protokol menetapkan titik pembaruan kunci jauh sebelumnya. Nilai acak bergantung pada cukup banyak bit sehingga tabrakan tidak mungkin terjadi dalam batas pesan, yang merupakan argumen berbeda dengan mode kegagalan berbeda. Dokumentasi protokol menyebutkan metode mana yang berlaku, dan keduanya aman hanya selama batas yang dinyatakan dipatuhi.
| Design | Where uniqueness comes from | Exhaustion is handled by |
|---|---|---|
| AES-GCM records | An IV, typically a counter | Rekey before the counter wraps |
| ChaCha20-Poly1305 | A 96-bit nonce from a counter or generator | A message limit per key |
| WireGuard | A per-key 64-bit counter | Rekey at a message cap |
| OpenVPN AEAD | Packet identifier plus implicit key material | Rekey on the packet-id limit |
| IKEv2 | Fresh nonces per exchange | A new security association |
Berapa Biaya Penggunaan Ulang Sebenarnya
Menggunakan ulang nonce di bawah satu kunci bukanlah persoalan efisiensi kecil. Dengan GCM, dua pesan yang berbagi IV memungkinkan pengamat memulihkan kunci autentikasi dan menghitung eksklusif-atau dari dua teks terang. Konstruksi berbasis aliran menggunakan ulang aliran kunci dengan cara yang sama, yang mengubah teks tersandi menjadi teka-teki alih-alih rahasia.
Itulah sebabnya implementasi melakukan pembaruan kunci sebelum penghitung berputar, dan sebabnya mereka berhenti alih-alih melanjutkan ketika keadaannya tidak pasti. Reboot yang mengatur ulang penghitung sementara rekan masih memegang kunci lama, atau mesin virtual yang dipulihkan dari snapshot yang diambil di tengah sesi, adalah persis situasi yang batas-batas itu ada untuk mencegahnya. Tidak perlu penyerang; operasi biasa sudah cukup.
Mengapa Pengeditan Tangan adalah Perbaikan yang Salah
Penghitung, garam, dan pengenal paket adalah mesin keadaan yang dibagi oleh kedua ujung. Mengubah satu sisi membuat sisi lain tidak sinkron, dan terowongan gagal dengan cara yang tampak seperti masalah perutean. Tuas yang didukung adalah pertukaran kunci baru, yang mengatur ulang keadaan di kedua ujung sekaligus.
Kata sandi dan nonce juga memainkan peran berbeda. Kata sandi adalah masukan rahasia untuk derivasi kunci; nonce adalah masukan publik per pesan. Bidang profil berlabel nonce yang meminta rahasia panjang biasanya adalah kunci statis atau rahasia yang dibagikan sebelumnya dengan nama lain, jadi bacalah dokumentasi bidang itu alih-alih berasumsi.
Ketika sebuah saran menyangkut penanganan nonce, perbaikannya adalah versi perbaikan dari pengelola, bukan sandi lain atau kunci yang lebih pendek. Mengganti sandi untuk menghindari kata nonce memindahkan masalah alih-alih menyelesaikannya.
Membaca Peringatan Tanpa Menebak
Baris log tentang penghitung atau nonce biasanya menggambarkan keadaan yang hilang, bukan serangan. Periksa apakah salah satu rekan dimulai ulang, apakah mesin virtual kloningan menggunakan ulang identitas yang sama, dan apakah kedua ujung sepakat soal pengaturan pembaruan kunci. Lalu buat sesi baru dan perhatikan apakah pesannya kembali.
Pisahkan diagnosis dari kegagalan yang tidak terkait. Halaman yang tidak dapat dimuat, atau permintaan kredensial yang berulang, bukan bukti penggunaan ulang nonce, dan memperlakukannya sebagai bukti akan mengirim Anda ke lapisan kriptografis padahal masalahnya ada di atasnya.
Untuk penggunaan biasa, aturan amannya singkat: biarkan implementasi mengelola nonce, jaga kedua ujung pada versi yang didukung, dan perlakukan setiap pengaturan ulang keadaan sebagai alasan memperbarui kunci alih-alih mengedit nilai. Jika bidang profil tidak ada dalam dokumentasi vendor, jangan mengarang nilai untuknya. Memperbaiki terowongan dimulai dengan mengetahui lapisan mana yang Anda lihat.