Anda bisa memberikan kunci publik VPN Anda kepada rekan, penyedia, atau forum, dan terowongan tetap berjalan. Anda tidak bisa menyerahkan kunci privat, bahkan kepada staf dukungan, tanpa menyerahkan identitas yang dibuktikan kunci itu. Keputusan jarang sesederhana itu, karena orang keliru soal bagian pasangan mana yang mereka lihat, dan karena sebagian penerapan memperlakukan nilai publik sebagai nama. Tiga pemeriksaan menyelesaikannya: bagian mana yang Anda pegang, apa yang diikat penerapan padanya, dan berapa biaya penggantiannya.

Pemeriksaan satu: bagian pasangan mana yang ada di papan klip Anda

Kunci asimetris datang berpasangan, dan arah penurunannya adalah inti persoalannya. Di WireGuard kunci privat adalah 32 bita acak dan kunci publik dihitung darinya; arah sebaliknya tidak mungkin. wg genkey menulis nilai privat, wg pubkey menurunkan yang publik, dan hanya yang kedua yang layak masuk pesan kepada rekan.

wg genkey | tee private.key | wg pubkey > public.key
chmod 600 private.key
openssl x509 -noout -pubkey -in server.crt

Dunia sertifikat memakai pembagian yang sama dengan lebih banyak bagian bergerak. Sertifikat server membawa kunci publik plus nama, dan ditandatangani oleh kunci privat CA yang tidak pernah meninggalkan CA. Klien yang memverifikasi server itu membutuhkan sertifikat CA, yang bersifat publik, dan tidak berguna sama sekali bagi kunci penandatangan privat CA.

Jika Anda tidak yakin nilai mana yang Anda pegang, carilah penandanya, bukan nama berkasnya. Blok PEM yang diawali -----BEGIN PRIVATE KEY-----, atau bentuk lama BEGIN RSA PRIVATE KEY, adalah bagian rahasia. Nilai yang bisa Anda tempelkan tanpa penanda itu adalah kandidat untuk dibagikan, tergantung dua pemeriksaan berikutnya.

Pemeriksaan dua: apa yang diikat penerapan pada nilai publik itu

Keamanan kriptografis dan anonimitas adalah sifat yang berbeda. Kunci publik rekan WireGuard adalah pengenal yang stabil di dalam penerapan: konfigurasi server mencantumkannya, jabat tangan menyebutnya, dan administrator yang membaca log melihat string yang sama setiap kali rekan itu terhubung. Tempelkan kunci itu di samping pertanyaan tentang penyiapan Anda, dan Anda telah menautkan string itu ke semua hal lain dalam kiriman tersebut.

Sertifikat membocorkan identitas secara desain. Subject dan subject alternative name dapat dibaca, dan untuk sertifikat TLS yang dipercaya publik sertifikatnya sendiri diterbitkan ke log Certificate Transparency, yang bisa dicari. Tidak satu pun dari itu membuka kunci privat, dan semuanya membuka sebuah hubungan.

Di sinilah penerapan berbeda, dan itu menentukan jawabannya. Rekan uji sekali pakai di server lab adalah objek yang berbeda dari kunci yang mengidentifikasi endpoint site-to-site sebuah perusahaan, walaupun bitanya tampak identik.

Pemeriksaan tiga: apa yang bisa Anda cabut, dan seberapa cepat

Pemeriksaan ketiga memisahkan kedua bagian sepenuhnya. Kunci publik yang sudah diterbitkan bisa diganti sesuai jadwal Anda. Kunci privat yang sudah diterbitkan tidak bisa ditarik kembali: menghapus salinan Anda tidak menyentuh salinan yang sudah diambil, dan setiap rekan yang mempercayainya kini mempercayai sesuatu yang dipegang orang luar.

Pencabutan adalah tindakan konfigurasi, bukan kriptografis. WireGuard tidak menyertakan daftar pencabutan, jadi Anda menghapus rekan tersebut:

wg set wg0 peer <peer-public-key> remove
# then delete the [Peer] block from the config so it does not return on restart

OpenVPN penerapan yang dibangun di atas sertifikat mencabut sertifikatnya dan menerbitkan CRL yang benar-benar diperiksa server melalui crl-verify. Tanpa direktif itu, daftar pencabutan hanyalah hiasan. Bagaimanapun urutannya sama: terbitkan pengganti, distribusikan melalui saluran yang didukung, lalu pensiunkan identitas lama.

Kesalahan yang muncul dari mencampuradukkan tiga pemeriksaan

Sebagian besar kebocoran nyata bukanlah keputusan orang untuk menerbitkan kunci privat. Itu adalah seluruh profil yang ditempelkan ke forum: sebuah berkas .conf WireGuard dengan baris PrivateKey, sebuah bundel .ovpn dengan blok kunci inline, atau tangkapan layar jendela klien yang kebetulan memuat kolom kunci. Nilai publiknya mungkin tidak masalah; ia ikut bersama bagian yang bermasalah.

Alur kerja dukungan adalah sumber kedua. Tidak ada langkah verifikasi yang sah yang membutuhkan kunci privat Anda, karena pihak lain menurunkan yang diperlukannya dari bagian publik. Ketika sebuah formulir atau seseorang meminta nilai privat, jawaban yang benar adalah nilai publik ditambah perintah lokal yang menghasilkannya.

Log dan tangkapan layar termasuk kategori yang sama. Keluaran diagnostik bisa membawa materi kunci, pengenal sesi, dan alamat internal, dan menerbitkan semuanya untuk menjawab satu pertanyaan menukar sedikit kenyamanan dengan paparan yang lebih besar.

Setelah nilai privat bocor, pensiunkan identitasnya

Jika nilai privat benar-benar keluar, anggap identitas itu sudah dipensiunkan. Buat pasangan baru, pasang bagian publik di tempat rekan mengharapkannya, hapus rekan lama atau cabut sertifikat lama, dan periksa tempat-tempat Anda menerbitkannya. Anda tidak bisa menghapus salinan yang tidak Anda kendalikan, jadi penghapusan adalah soal masa depan, bukan masa lalu.

Lalu tuliskan distribusinya: kunci mana milik perangkat mana, siapa yang memegang salinan, bagaimana pengganti dikirimkan, dan siapa yang menghapus rekan yang dipensiunkan. Itulah bagian yang orang lupakan, dan itu yang menentukan berapa lama kebocoran tetap berguna.

Artikel terkait