OpenVPN tls-crypt-v2: peranan kunci klien dan blob terbungkus
Profil tls-crypt-v2 mengandungi kunci kawalan klien dan salinan terbungkus yang hanya boleh dibuka oleh pelayan. Simpan setiap objek dan setiap langkah penghentian secara berasingan.
Menampal profil tls-crypt-v2 ke dalam tiket kelihatan tidak berbahaya sehingga anda mengira apa yang terkandung dalam fail. Kunci saluran kawalan klien terletak di sebelah salinan tersulit kunci yang sama, dan objek ketiga, kunci pembalut, tidak pernah meninggalkan pelayan yang menerima. Ketiga-tiganya menjawab soalan berbeza tentang jagaan, perkongsian dan penghentian. Memisahkannya menyelesaikan kebanyakan perdebatan dasar sebelum ia bermula.
Apa yang sebenarnya terkandung dalam profil
Separuh klien tls-crypt-v2 ialah kunci tambah salinan terbungkusnya. Klien menggunakan kunci biasa untuk perlindungan saluran kawalan dan menyerahkan salinan terbungkus kepada pelayan semasa persediaan, jadi pelayan memulihkan kunci yang sama tanpa menyimpan salinan teks biasa bagi setiap klien. Kunci pembalut menjadikan pemulihan itu mungkin dan hanya dimiliki oleh pihak yang menerima. Semua di bawah berpunca daripada tempat ketiga-tiga objek itu berada.
| Object | Where it lives | What can open it | What a leak costs |
|---|---|---|---|
| Server wrapping key | accepting servers only | the unwrap step inside the server | every wrapped copy issued to that group becomes readable |
| Wrapped client key | inside the client profile | the server wrapping key | it names a client and exposes its metadata, but not the key inside |
| Client control key | inside the client profile, usable as-is | the client that owns it | someone can open handshakes as that client until the server refuses the key |
Baca jadual mengikut jagaan, bukan mengikut nama, dan akibatnya timbul sendiri. Kehilangan kunci pembalut ialah peristiwa mahal, kerana tiada apa pun dalam profil boleh membinanya semula dan pemulihan jujur ialah mengeluarkan semula kumpulan. Profil yang bocor lebih murah tetapi jauh lebih biasa, kerana orang menampal profil ke dalam tiket dengan kepercayaan bahawa salinan terbungkus menjadikan fail selamat untuk dikongsi. Dua kegagalan itu memerlukan tindak balas berbeza, dan itulah sebabnya objek disimpan berasingan.
Mengapa salinan terbungkus bukan keseluruhan cerita
Profil membawa bahan klien yang boleh digunakan bersama pasangan terbungkusnya, jadi melindungi salinan untuk pelayan tidak mengatakan apa-apa tentang melindungi fail. Blob itu selamat dihantar dan tidak selamat diterbitkan. Metadata di dalamnya kelihatan kepada sesiapa yang menerima blob, termasuk sesiapa yang kemudian membaca tiket tempat ia ditampal.
Anggap profil sebagai kelayakan, bukan contoh konfigurasi. Fail yang bocor memberikan pemegangnya identiti klien yang berfungsi sehingga pelayan berhenti menerima identiti itu, dan pembalutan tidak melakukan apa-apa tentang tetingkap itu. Keluarkan satu profil bagi setiap klien supaya pengeluaran semula kekal sebagai keputusan satu fail, dan buat sandaran kunci pembalut secara berasingan daripada konfigurasi pelayan yang dibolehkannya. Tiada satu pun tabiat itu membaiki profil yang terjejas, tetapi kedua-duanya menentukan betapa cepat yang seterusnya dapat dibendung.
Di mana cangkuk pengesahan terletak dalam jabat tangan
Cangkuk pengesahan berjalan sebelum tindanan TLS didedahkan, dan tugasnya ialah memeriksa metadata yang dibawa dalam blob terbungkus. Ia menerima metadata itu serta persekitaran kecil yang didokumenkan, dan ia mempunyai lebih sedikit bahan berbanding cangkuk pengesahan identiti. Menganggap ia boleh melihat nama pengguna, keadaan sesi atau pemboleh ubah pemalam ialah cara biasa cangkuk ini ditulis dengan buruk. Baca bahagian manual cangkuk itu sendiri daripada meminjam jangkaan daripada cangkuk lain.
Status keluarnya ialah keputusan: hasil bukan sifar menolak klien dan hasil sifar membiarkan jabat tangan diteruskan. Oleh itu dasar mesti menyatakan apa yang berlaku apabila metadata hilang, tidak dapat dihuraikan atau tidak dijangka. Tulis laluan penolakan dahulu, kemudian tentukan nilai mana yang boleh diterima.
tls-crypt-v2 /etc/openvpn/server/tcv2-server.key
tls-crypt-v2-verify /etc/openvpn/server/verify-client-metadata.shDua baris itu ialah permukaan dasar pada pelayan: satu menamakan kunci pembalut, satu lagi menamakan program yang menilai setiap klien. Semua yang menarik terletak dalam skrip, yang layak mendapat kawalan versi dan semakan yang sama seperti mana-mana peraturan akses lain.
Akaun, sijil dan kunci kawalan bersara secara berasingan
Penerimaan awal saluran kawalan bukan pengesahan identiti, kerana ia berlaku sebelum pemeriksaan identiti TLS dan sebelum sebarang kebenaran akaun. Melumpuhkan akaun, membatalkan sijil dan menolak kunci kawalan klien ialah tiga tindakan dengan tiga mekanisme. Pelaksanaan yang hanya melakukan satu daripadanya mempunyai jurang, bukan dasar. Selaraskan ketiga-tiganya dengan sengaja, dan catat langkah mana menggunakan kuasa mana.
Masa ialah perbezaan kedua. Senarai penerimaan yang berubah terpakai kepada jabat tangan baharu, manakala sesi yang sudah terbentuk terus berjalan sehingga sesuatu menamatkannya. Mengira entri dalam senarai baharu sebagai bukti bahawa sesi lama telah tamat ialah cara klien yang dibuang kekal bersambung berjam-jam.
Kuasa yang tidak diselaraskan meninggalkan dua lubang yang mudah ditemui dalam amalan. Akaun boleh dilumpuhkan sementara kunci kawalannya masih membuka jabat tangan, dan sijil boleh dibatalkan sementara dasar metadata masih menerima klien yang sama. Kedua-duanya ialah kesilapan yang sama di tempat berbeza, kerana pengendali menganggap satu senarai sebagai seluruh kuasa. Letakkan ketiga-tiga senarai bersebelahan semasa pembuangan dan kesilapan itu menjadi kelihatan.
Mengeluarkan dan menarik balik profil
Pengeluaran ialah separuh yang mudah: cipta kunci klien di pihak penerima, serahkan profil kepada tepat seorang pemilik, kekalkan bahan pembalut terhad, dan jalankan program pengesahan yang sama pada setiap pelayan penerima. Kemasukan murah ialah sifat seluruh kumpulan, bukan hos terbaharu. Pelayan kedua dengan skrip yang lebih lama atau lebih longgar senyap-senyap menjadi laluan paling lemah dalam pelaksanaan.
Penarikan balik memerlukan ketiga-tiga langkah dalam urutan yang disengajakan. Tolak klien dalam cangkuk pengesahan supaya jabat tangan baharu gagal, batalkan sijilnya jika PKI digunakan, dan lumpuhkan akaun supaya kebenaran kemudian tidak mempunyai apa-apa untuk dibenarkan. Kemudian tamatkan sesi yang dibenarkan oleh penerimaan lama, kerana ia tidak akan menyedari mana-mana daripada ketiga-tiganya. Berlatih urutan itu pada klien yang anda mampu untuk merosakkannya.
Metadata dalam profil ialah input kepada dasar itu, bukan bukti bahawa kawalan akses sudah wujud. Dokumen reka bentuk OpenVPN 2.6 menerangkan objek dan sempadan yang dilukisnya, manakala penguatkuasaannya kekal dengan pengendali.