tls-auth vs tls-crypt: apa yang dilindungi masing-masing di OpenVPN
tls-auth menandatangani paket kontrol, tls-crypt juga menyembunyikannya. Keduanya tidak menggantikan pemeriksaan sertifikat atau cipher data, dan ketidakcocokan tampak seperti keheningan.
Kedua opsi memakai berkas kunci bersama dan keduanya membuat lalu lintas jabat tangan lebih sulit dipalsukan, karena itu keduanya dianggap dua nama untuk fitur yang sama. Bukan begitu. Yang satu menandatangani paket kontrol, yang lain juga mengenkripsinya, dan tidak ada yang berhubungan dengan cipher yang melindungi muatan Anda.
Perbedaan itu penting ketika profil gagal terhubung, ketika tinjauan keamanan menanyakan apa yang dilindungi kunci, dan ketika seseorang menganggap berkas tambahan membuat terowongan terenkripsi dengan cara yang tidak jelas.
Apa yang sebenarnya dilindungi kunci bersama
Kunci yang dipakai opsi ini milik kanal kontrol: pertukaran yang menegosiasikan parameter, membuktikan identitas, dan menurunkan kunci data. Ini adalah rahasia yang dibagikan sebelumnya dan harus dimiliki kedua ujung sebelum jabat tangan dapat berlanjut. Karena berada sebelum pemeriksaan identitas, kunci yang salah menghentikan percakapan lebih awal daripada kata sandi yang salah. Urutan itulah yang menjelaskan mengapa mode kegagalannya begitu senyap.
tls-auth memakai rahasia itu untuk menghitung HMAC atas paket kontrol. Paket tanpa tanda tangan yang sah dibuang sebelum mencapai pemrosesan TLS yang lebih mahal, karena itu opsi ini sering disebut penyaring pertama, bukan pengganti TLS.
tls-crypt melangkah lebih jauh dengan mengenkripsi lalu lintas kontrol yang dilindungi selain mengautentikasinya. Isi sertifikat, nama cipher yang dinegosiasikan, dan detail jabat tangan lainnya tidak lagi terlihat di jaringan, dan pengamat tanpa kunci bahkan tidak dapat melihat versi TLS mana yang dicoba. Bagi penerapan yang khawatir membocorkan sidik jari VPN-nya, sifat itulah alasan utama memilihnya. Itu tetap rahasia kelompok, bukan kredensial per pengguna.
Tidak ada mekanisme yang menerbitkan identitas. Kunci bersama adalah rahasia kelompok, dan siapa pun yang memilikinya dapat memenuhi lapisan pemeriksaan itu.
Di mana kedua opsi berbeda
Perbedaan yang dapat diamati adalah apa yang dilihat pengamat. Dengan tls-auth jabat tangan terlihat tetapi tidak dapat diverifikasi tanpa kunci. Dengan tls-crypt jabat tangan tidak transparan bagi siapa pun yang tidak memegang kunci.
Konfigurasinya juga berbeda. tls-auth dipakai dengan nilai arah, sehingga satu sisi memakai separuh materi kunci dan sisi lain memakai separuh lainnya. tls-crypt memakai satu kunci di kedua arah, jadi direktif arah bukan bagian dari susunannya.
Kedua opsi saling eksklusif pada rilis modern. Profil sebaiknya membawa salah satunya, bukan keduanya, dan server serta klien harus sepakat mana yang dipakai, dengan materi kunci yang sama. Menyimpan direktif lama di samping yang baru adalah sisa migrasi yang umum. Hapus yang tidak aktif agar pembaca berikutnya tahu lapisan mana yang benar-benar berlaku.
Varian yang lebih baru, tls-crypt-v2, mengikat setiap klien ke kunci terbungkusnya sendiri sehingga mencabut satu klien tidak memerlukan penerbitan ulang kunci kelompok. Layak diketahui, tetapi itu opsi berbeda dan bukan sinonim dari kedua opsi di sini.
Mengapa ketidakcocokan tampak seperti tidak ada yang terjadi
Ketika materi bersama tidak cocok, rekan membuang paketnya tanpa memberi tahu pengirim alasannya. Tidak ada galat autentikasi untuk dibaca, karena paket itu tidak pernah mencapai lapisan yang akan menghasilkannya.
Klien mencoba lagi, server tidak berkata apa-apa, dan gejalanya tampak seperti masalah jaringan. Lalu orang menyalakan ulang layanan, mengetik ulang kata sandi akun, atau menghapus direktif perlindungan untuk «mengujinya», yang mengubah penerapan alih-alih mendiagnosisnya.
Baca di log server keluhan tingkat paket yang pertama, bukan baris percobaan ulang terakhir. Pastikan kedua sisi membawa opsi yang sama dengan materi kunci identik dan berkas kunci tidak dibuat ulang hanya di satu sisi.
Menghapus direktif bukan perbaikan yang aman. Itu mematikan lapisan perlindungan untuk setiap klien, dan terowongan yang berfungsi sesudahnya hanya membuktikan bahwa lapisan itulah ketidakcocokannya.
Apa yang masih harus dikonfigurasi terpisah
Opsi ini tidak memverifikasi siapa rekannya. Validasi sertifikat, jangkar kepercayaan, dan nama server yang diharapkan tetap menjadi persyaratan terpisah, dan tidak satu pun menjadi opsional karena ada kunci bersama.
Keduanya juga tidak memilih cipher data. Itu negosiasi terpisah yang dikendalikan oleh pengaturan kanal data pada kedua rekan, dan terowongan yang dilindungi oleh tls-crypt masih dapat memakai cipher yang tidak Anda maksudkan.
Terakhir, kunci bersama itu sendiri perlu penanganan. Perlakukan sebagai rahasia, distribusikan melalui kanal yang disetujui, dan gantilah ketika siapa pun yang memilikinya pergi. Karena dibagikan, paparannya adalah paparan setiap ujung yang memakainya.