Frasa kunci yang dikongsi terlebih dahulu muncul dalam dokumentasi IPsec, OpenVPN dan WireGuard, tetapi merujuk tiga objek berbeza. Satu ialah rahsia pengesahan, satu melindungi saluran kawalan, dan satu lagi menambah bahan kepada jabat tangan yang sudah mempunyai identiti. Menganggapnya boleh saling ditukar menghasilkan sambungan yang gagal pada peringkat yang tidak dijangka sesiapa. Baca apa yang dilakukan medan itu dalam protokol tersebut sebelum menyalin nilai ke dalamnya.

Tiga protokol, tiga makna

Setiap protokol menetapkan tugas kunci dalam spesifikasinya sendiri, dan tugas-tugas itu tidak bertindih. Rahsia pengesahan membuktikan bahawa dua pihak mengetahui nilai yang sama. Kunci saluran kawalan melindungi rundingan yang menyusul. Tambahan pada jabat tangan mengubah jadual kunci tanpa mengubah siapa pihak-pihaknya.

Tiada satu pun peranan itu mengesahkan manusia, dan kekeliruan itulah yang paling banyak menghabiskan masa. Kunci yang dikongsi terlebih dahulu dipasang pada peranti atau get laluan sebelum pertukaran, jadi setiap pemegang kelihatan sama pada pihak lain. Sifat itu menguntungkan bagi pautan antara dua penghala dan menjadi risiko bagi perkhidmatan akses jauh dengan pekerja bernama. Simpan kelayakan akaun dan rahsia kriptografi dalam lajur berasingan dalam dokumen yang menerangkan penggunaan.

IPsec dan OpenVPN menggunakan perkataan itu secara berbeza

IKEv2 boleh mengesahkan pihak lain dengan rahsia yang dikongsi terlebih dahulu dan bukan sijil, dan nilainya mesti sama pada kedua-dua hujung. Kerana rahsia yang sama biasanya dikonfigurasikan untuk sekumpulan pihak, mana-mana pemegang boleh menyamar sebagai yang lain, dan pertukaran itu tidak memperoleh kerahsiaan ke hadapan daripada kunci identiti yang tidak pernah dimilikinya.

Pilihan tls-auth dan tls-crypt dalam OpenVPN melampirkan kunci statik pada saluran kawalan, menambah tandatangan HMAC atau menyulitkan rundingan itu sendiri. Kunci itu bukan kata laluan pengguna dan tidak menggantikan sijil klien. Membezakan keduanya penting semasa pembaharuan, apabila pertukaran kata laluan tidak menyentuh kunci saluran kawalan.

PSK WireGuard menambah, bukan mengenal pasti

Pihak-pihak WireGuard sudah mempunyai kunci awam dan peribadi Curve25519, dan jabat tangan mengesahkan identiti tersebut. Kunci yang dikongsi terlebih dahulu yang bersifat pilihan dicampur ke dalam kunci rantaian, menyumbang bahan simetri di atas pertukaran kunci awam.

Ia tidak menyediakan identiti sendiri dan tidak memberi akaun pengguna, jadi pengendali tidak dapat membezakan dua pemegang melalui PSK mereka. Kedua-dua hujung mesti membawa nilai yang sama, jika tidak jabat tangan gagal tanpa mesej ralat yang berguna. Itulah sebabnya putaran mesti dirancang untuk kedua-dua belah pihak serentak, bukan sebagai penyuntingan satu fail.

Periksa pengagihan, putaran dan pembuangan

Pengagihan ialah titik lemah setiap reka bentuk yang menggunakan satu rahsia di banyak tempat. Nilai yang ditampal dalam tetingkap sembang, disimpan dalam repositori atau digunakan semula antara persekitaran mengumpul salinan yang tidak dapat dihitung oleh sesiapa, dan setiap salinan secara senyap meluaskan julat kerosakan.

Teks Base64 bukan penyulitan. Rahsia yang disimpan di sebelah sijil awam dalam direktori yang sama masih rahsia dalam bentuk terbuka.

openssl rand -base64 32
sudo wg show wg0 preshared-keys
sudo grep -R -n 'psk' /etc/ipsec.d/ 2>/dev/null

Lakukan putaran mengikut jadual dan selepas setiap pendedahan yang disyaki, dengan mengemas kini setiap pihak yang dimaksudkan sebelum membatalkan nilai lama. Kemudian uji pautan dari kedua-dua hujung, kerana kunci yang tidak sepadan gagal pada jabat tangan dan kelihatan sama seperti masalah dinding api.

Dokumenkan rahsia mana yang melindungi peringkat mana, supaya penetapan semula kata laluan tidak pernah disalah anggap sebagai pembaharuan kunci kriptografi. Satu baris itu menjimatkan satu jam setiap kali seseorang mengaudit penggunaan.

Artikel berkaitan