OpenVPN tanpa CA: cara peer-fingerprint mengesahkan rakan
Cap jari meminkan satu sijil, bukan rahsia bersama. Jejaki apa yang diliputi digest, bagaimana setiap sisi membina senarai izinnya dan apa kos pembaharuan.
Penggunaan kecil beralih kepada cap jari kerana pihak berkuasa sijil kelihatan seperti infrastruktur yang tiada siapa mempunyai masa untuk mengendalikannya. Naluri itu munasabah, tetapi jalan pintas yang orang ambil sebagai gantinya—menyalin satu rahsia saluran data ke kedua-dua hujung—tidak. Persediaan peer-fingerprint mengekalkan struktur TLS utuh: setiap sisi masih memegang kunci peribadi dan sijilnya sendiri, dan setiap sisi masih mengesahkan yang lain. Apa yang berubah ialah di mana pengesahan dipautkan: daripada pengeluar yang dipercayai kepada senarai pendek digest yang dipin. Kerana digest meliputi keseluruhan sijil dan bukan nama, pembaharuan menjadi operasi yang benar-benar mengambil masa.
Apa yang sebenarnya dijanjikan cap jari
Cap jari sijil ialah digest bagi keseluruhan sijil yang dikodkan DER, bukan kunci awamnya dan bukan nama subjeknya. Oleh itu dua sijil dengan nama yang sama dan kunci yang sama tetapi tarikh sah yang berbeza mempunyai cap jari yang berbeza. Itulah yang menjadikan pinning tepat, dan itu juga yang menjadikan pembaharuan mengganggu. Pin tidak boleh bermaksud mempercayai sesuatu kunci secara umum, kerana ia menamakan satu artifak pada satu saat dalam hayatnya. Sesiapa sahaja boleh mengetahui digest itu, dan mengetahuinya tidak membuktikan apa-apa dengan sendirinya.
openssl x509 -in server.crt -noout -fingerprint -sha256
openssl x509 -in client-07.crt -noout -fingerprint -sha256
Pemilikan kunci peribadi yang sepadan ialah yang membuktikan rakan itu memegang sijil tersebut, dan digest ialah cara pihak lain memutuskan sama ada ia memang menjangkakan sijil itu. Pemisahan itulah sebab reka bentuk ini bukan susunan rahsia bersama yang lama: kunci bersama mengesahkan sesiapa yang mengetahui bait yang sama, manakala pin mengesahkan satu sijil. Peranti lain mendapat entrinya sendiri dan bukan salinan rahsia yang sama, iaitu perbezaan kecil dalam fail dan besar dalam skop kerosakan.
Peta itu timbal balik, bukan simetri
Setiap titik akhir memerlukan dua perkara: kunci peribadinya bersama sijil, dan pernyataan tentang sijil rakan mana yang akan diterimanya. Pada klien, pernyataan itu ialah digest sijil pelayan; pada pelayan, ia ialah senarai digest klien yang didaftarkan. Contoh rasmi untuk persediaan kecil bagi Community 2.6 menunjukkan susunan dengan peer-fingerprint, dan ia wajar dibaca sebelum memilih model kepercayaan ini untuk penggunaan sebenar. Kedua-dua arah bukan satu senarai yang diterbalikkan, dan ia tidak gagal pada saat yang sama.
| Verification direction | What is pinned | What never leaves that endpoint | How a wrong pin shows up |
|---|---|---|---|
| Client checks the server | One digest, for the server certificate | The server private key | The client aborts during the TLS handshake |
| Server checks the client | A digest per enrolled client | Each client private key | The server rejects the peer before a tunnel exists |
Menambah peranti menyunting senarai izin pada pelayan, tanpa menyalin bahan peribadi klien sedia ada dan tanpa memindahkan kunci pelayan ke mana-mana. Kedua-dua arah juga gagal secara berasingan, yang berguna semasa diagnosis: sisi yang menutup jabat tangan ialah sisi yang jangkaannya tidak dipenuhi. Jika klien menolak pelayan, digest tidak sepadan dengan sijil yang dikemukakan. Jika pelayan menolak klien, digest klien itu tiada dalam senarai, atau klien mengemukakan sijil lain daripada yang didaftarkan.
Pendaftaran: bagaimana peranti baharu menyertai
Jana kunci dan sijil peranti baharu di tempat kunci peribadi akan tinggal, kemudian pindahkan hanya artifak awam kepada pihak yang perlu meminkannya. Pindahkan digest yang dijangka melalui saluran yang anda sudah percayai, dan bandingkan sijil penuh dan bukan nama yang kelihatan biasa. Digest yang disalin daripada muat turun tidak disahkan yang sama dengan sijil hanya membuktikan kedua-dua fail bersetuju antara satu sama lain. Ia pemeriksaan konsistensi, bukan pemeriksaan identiti, dan itulah cara paling senyap reka bentuk ini dilemahkan.
Pada pelayan, menambah digest ialah perubahan konfigurasi yang melalui pengurus biasa dan diikuti dengan sambungan semula. Sahkan peranti baharu bersambung dan peranti yang digestnya dibuang tidak lagi bersambung. Ujian yang hanya meliputi kes positif membiarkan senarai izin tidak disahkan, dan itulah keadaan anda enam bulan dari sekarang.
Pembaharuan ialah saat yang mahal
Setiap sijil tamat tempoh, dan sijil baharu mempunyai digest baharu walaupun kunci dan namanya kekal sama. Di bawah pengeluar, pembaharuan telus kepada rakan yang mempercayai pengeluar itu; di bawah pinning, ia peristiwa pendaftaran bagi setiap rakan yang memin sijil itu.
Rancang urutan sebelum tarikh luput dan bukan selepasnya. Agihkan digest baharu kepada pihak yang mengesahkannya, gunakan perubahan itu, dan hanya selepas itu tukar sijil pada titik akhir. Urutan itu tidak meninggalkan tetingkap di mana kedua-dua sisi tidak bersetuju sijil mana yang terkini. Jaga senarai itu sendiri dalam semakan, kerana senarai yang dipin mengumpul entri untuk peranti yang ditarik bulan lalu. Setiap entri lapuk ialah identiti yang masih mengesahkan jika kuncinya bertahan, jadi membuang satu ialah tindakan keselamatan dan bukan kerja rumah.
Apa yang tidak diputuskan oleh peta kepercayaan
Pengesahan ialah satu lapisan, dan peta yang dipin tidak mengatakan apa-apa tentang kolam alamat, laluan yang ditolak, MTU laluan atau dasar firewall. Semua itu kekal sebagai konfigurasi berasingan dengan mod kegagalan berasingan. Terowong yang disahkan tetapi tidak melepaskan sebarang trafik ialah siasatan berbeza daripada yang tidak pernah muncul.
Peta itu juga tidak berskala tanpa had, dan PKI berasaskan pengeluar ialah tempat penggunaan yang lebih besar berakhir. Keutamaan itu mengenai operasi dan bukan kriptografi, kerana menambah dan menarik identiti melalui satu pihak berkuasa lebih murah daripada menyunting senarai pada setiap rakan apabila armada bertambah. Jika sesuatu pelaksanaan klien tidak menyokong pilihan itu, jawapannya ialah model kepercayaan serasi yang didokumenkan oleh klien itu, atau pengganti yang disokong. Menyekat amaran pengesahan tidak menambah sokongan itu, dan seluruh nilai reka bentuk ini ialah pengesahan masih berlaku.