Menempelkan profil tls-crypt-v2 ke tiket terlihat tidak berbahaya sampai Anda menghitung isi berkasnya. Kunci kanal kendali klien duduk di samping salinan terenkripsi kunci yang sama, dan objek ketiga, kunci pembungkus, tidak pernah meninggalkan server penerima. Ketiganya menjawab pertanyaan berbeda tentang penyimpanan, pembagian, dan penghentian. Memisahkannya menyelesaikan sebagian besar perdebatan kebijakan sebelum dimulai.

Apa isi profil sebenarnya

Separuh klien dari tls-crypt-v2 adalah kunci plus salinan terbungkusnya. Klien memakai kunci polos untuk perlindungan kanal kendali dan menyerahkan salinan terbungkus kepada server saat penyiapan, sehingga server memulihkan kunci yang sama tanpa menyimpan salinan teks polos per klien. Kunci pembungkus memungkinkan pemulihan itu dan hanya boleh berada di sisi penerima. Semua di bawah ini mengikuti tempat ketiga objek itu berada.

ObjectWhere it livesWhat can open itWhat a leak costs
Server wrapping keyaccepting servers onlythe unwrap step inside the serverevery wrapped copy issued to that group becomes readable
Wrapped client keyinside the client profilethe server wrapping keyit names a client and exposes its metadata, but not the key inside
Client control keyinside the client profile, usable as-isthe client that owns itsomeone can open handshakes as that client until the server refuses the key

Bacalah tabel menurut penyimpanan, bukan menurut nama, dan konsekuensinya muncul sendiri. Kehilangan kunci pembungkus adalah peristiwa mahal, karena tidak ada apa pun dalam profil yang bisa merekonstruksinya dan pemulihan yang jujur adalah menerbitkan ulang grup. Profil yang bocor lebih murah tetapi jauh lebih umum, karena orang menempelkan profil ke tiket dengan keyakinan bahwa salinan terbungkus membuat berkas aman untuk dibagikan. Dua kegagalan itu membutuhkan tanggapan berbeda, dan itulah alasan objek-objek itu dijaga terpisah.

Mengapa salinan terbungkus bukan seluruh cerita

Profil membawa materi klien yang bisa dipakai bersama salinan terbungkusnya, jadi melindungi salinan untuk server tidak mengatakan apa pun tentang melindungi berkasnya. Blob itu aman dikirim dan tidak aman diterbitkan. Metadata di dalamnya terlihat oleh siapa pun yang menerima blob, termasuk siapa pun yang nanti membaca tiket tempat blob itu ditempel.

Perlakukan profil sebagai kredensial, bukan contoh konfigurasi. Berkas yang bocor memberi pemegangnya identitas klien yang berfungsi sampai server berhenti menerima identitas itu, dan pembungkusan tidak berbuat apa pun soal jendela itu. Terbitkan satu profil per klien agar penarikan tetap menjadi keputusan satu berkas, dan cadangkan kunci pembungkus terpisah dari konfigurasi server yang diaktifkannya. Tak satu pun kebiasaan itu memperbaiki profil yang telah dikompromikan, tetapi keduanya menentukan seberapa cepat yang berikutnya bisa dibatasi.

Di mana pancing verifikasi berada dalam jabat tangan

Pancing verifikasi berjalan sebelum tumpukan TLS dibuka, dan tugasnya memeriksa metadata yang dibawa dalam blob terbungkus. Ia menerima metadata itu plus lingkungan kecil yang terdokumentasi, dan ia punya lebih sedikit bahan daripada pancing autentikasi. Menganggapnya bisa melihat nama pengguna, status sesi, atau variabel plugin adalah cara biasa pancing ini ditulis dengan buruk. Bacalah bagian manual pancing itu sendiri alih-alih meminjam harapan dari pancing lain.

Status keluarnya adalah keputusan: hasil bukan nol menolak klien dan hasil nol membiarkan jabat tangan berlanjut. Karena itu kebijakan harus menyatakan apa yang terjadi ketika metadata hilang, tidak bisa diurai, atau tak terduga. Tulis dulu jalur penolakan, lalu putuskan nilai mana yang dapat diterima.

tls-crypt-v2 /etc/openvpn/server/tcv2-server.key
tls-crypt-v2-verify /etc/openvpn/server/verify-client-metadata.sh

Dua baris itu adalah permukaan kebijakan di server: satu menyebut kunci pembungkus, yang lain menyebut program yang menilai setiap klien. Semua yang menarik ada di skrip, yang layak mendapat kendali versi dan tinjauan yang sama seperti aturan akses lainnya.

Akun, sertifikat, dan kunci kendali pensiun terpisah

Penerimaan awal kanal kendali bukan autentikasi, karena terjadi sebelum pemeriksaan identitas TLS dan sebelum otorisasi akun apa pun. Menonaktifkan akun, mencabut sertifikat, dan menolak kunci kendali klien adalah tiga tindakan dengan tiga mekanisme. Penerapan yang hanya melakukan satu di antaranya memiliki celah, bukan kebijakan. Rekonsiliasikan ketiganya dengan sengaja, dan catat langkah mana menjalankan wewenang mana.

Waktu adalah pembeda kedua. Daftar penerimaan yang berubah berlaku untuk jabat tangan baru, sementara sesi yang sudah terbentuk terus berjalan sampai sesuatu mengakhirinya. Menghitung entri di daftar baru sebagai bukti bahwa sesi lama berakhir adalah cara klien yang dihapus tetap terhubung berjam-jam.

Wewenang yang tidak direkonsiliasi meninggalkan dua lubang yang mudah ditemukan dalam praktik. Akun bisa dinonaktifkan sementara kunci kendalinya masih membuka jabat tangan, dan sertifikat bisa dicabut sementara kebijakan metadata masih menerima klien yang sama. Keduanya adalah kesalahan yang sama di tempat berbeda, karena operator memperlakukan satu daftar sebagai seluruh wewenang. Letakkan ketiga daftar berdampingan saat penghapusan dan kesalahannya menjadi terlihat.

Menerbitkan dan menarik profil

Penerbitan adalah separuh yang mudah: buat kunci klien di sisi penerima, serahkan profil kepada tepat satu pemilik, jaga materi pembungkus tetap terbatas, dan jalankan program verifikasi yang sama di setiap server penerima. Penerimaan murah adalah sifat seluruh grup, bukan host terbaru. Server kedua dengan skrip yang lebih tua atau lebih longgar diam-diam menjadi jalur terlemah dalam penerapan.

Penarikan membutuhkan ketiga langkah dalam urutan yang disengaja. Tolak klien di pancing verifikasi agar jabat tangan baru gagal, cabut sertifikatnya jika PKI dipakai, dan nonaktifkan akun agar otorisasi berikutnya tidak punya apa pun untuk diotorisasi. Lalu akhiri sesi yang diizinkan penerimaan lama, karena sesi itu tidak akan menyadari satu pun dari ketiganya. Latih urutannya pada klien yang Anda mampu merusaknya.

Metadata dalam profil adalah masukan bagi kebijakan itu, bukan bukti bahwa kendali akses sudah ada. Dokumen desain OpenVPN 2.6 menjelaskan objek-objek dan batas yang mereka tarik, sementara penegakannya tetap pada operator.

Artikel terkait