Kami sebelumnya
menulis bahwa Internet Engineering Council (IETF) telah menyetujui versi baru TLS - 1.3. Pekan lalu, protokol itu diakui sebagai standar. Hari ini - mari kita bicara tentang kemampuannya.
/ foto Charles Dyer CCFitur TLS 1.3
Mereka mulai bekerja memperbarui protokol pada tahun 2014. Secara tidak resmi, pekerjaan pada TLS 1.3 berakhir pada bulan Maret tahun ini, tetapi para insinyur membutuhkan beberapa bulan lagi untuk melakukan pemeriksaan tambahan.
Pembuat mengklaim bahwa versi final dari TLS 1.3 lebih aman dan produktif: semua yang diketahui (hari ini) kerentanan TLS 1.2 ditutup dalam algoritma enkripsi, dan proses "jabat tangan" dua kali lebih cepat dari pendahulunya. Pengembang juga
menambahkan kerahasiaan ke depan dan fitur-fitur baru seperti 0-RTT.
TLS 1.3 membuat jumlah terbesar dari perubahan signifikan dalam sejarah protokol. Untuk alasan ini, beberapa bahkan
menyarankan untuk menyebutnya TLS 2.0.
Sekarang setelah protokol TLS 1.3 versi baru (
RFC 8446 ) disetujui secara resmi, protokol ini tetap menerapkannya untuk semua koneksi jaringan.
Kesulitan implementasi
TLS memiliki semacam kompatibilitas ke belakang. Ketika koneksi dibuat antara klien dan server, versi protokol yang didukung dipertukarkan dan yang digunakan kedua pihak untuk bekerja dipilih. Namun, fitur ini tidak digunakan di mana-mana. Dengan munculnya TLS 1.3, lebih dari 3% server dengan dukungan TLS 1.2 hanya terputus alih-alih mengirimkan nomor versi yang didukung klien.
Masalah serupa terjadi dengan node perantara (
middlebox ). Karena fakta bahwa TLS tidak banyak berubah, hal-hal seperti firewall, NAT, dan load balancers menolak untuk bekerja dengan versi protokol yang baru.
Insinyur dijuluki fenomena osifikasi ini (osifikasi). Fakta bahwa beberapa pengembang tidak menggunakan fitur protokol yang fleksibel membuatnya sulit untuk memperkenalkan implementasi baru dari protokol tersebut. Sebagai analogi, peserta industri mengutip
contoh pintu lama. Jika Anda tidak menyentuhnya untuk waktu yang lama, loop akan berkarat, dan akan terbuka dengan derit.
/ foto Christopher Sessums CCTernyata protokol sebelumnya sudah usang, tetapi tidak akan berfungsi untuk memperkenalkan yang baru secara default. Lebih banyak tentang topik dapat ditemukan, misalnya, dalam studi tahun lalu dari IEEE (
PDF ).
Solusinya ditemukan oleh David Benjamin, mengerjakan Chromium. Dia menyarankan untuk menyamarkan pesan pertama dari klien yang mendukung TLS 1.3 sebagai pesan TLS 1.2. Dan itu berhasil: 3% server yang disebutkan berhenti memutuskan sambungan. Untuk situs perantara, Kyle Nekritz dari Facebook menyarankan menggunakan pendekatan yang sama. Ini mengurangi jumlah kerusakan sebesar 6,5% di Chrome dan 2% di Firefox.
Untuk memeriksa apakah middlebox kompatibel dengan versi protokol yang baru, Anda dapat menggunakan
tes yang dikembangkan di Cloudflare.
Cara menyederhanakan implementasi
Menurut Eric Rescorla, salah satu pengembang spesifikasi untuk TLS dan HTTPS, secara umum, mengimplementasikan TLS 1.3 tidak begitu sulit. Dewan teknik berusaha membuat proses ini sesederhana mungkin. TLS 1.3 menggunakan kunci dan sertifikat yang sama dengan TLS 1.2. Ini memungkinkan klien dan server untuk secara otomatis membuat koneksi melalui TLS 1.3 jika keduanya mendukung protokol versi baru.
Selain itu, ada sejumlah perpustakaan yang dapat membantu Anda menyebarkan protokol lebih cepat. Sebagai contoh, pada awal minggu lalu, Facebook
mentransfer perpustakaan TLS 1.3 Fizz-nya
ke open source . Fizz
mengurangi latensi saat mengirim data, serta beban pada CPU.
Para pengembang telah menyiapkan panduan tentang cara mulai menggunakan Fizz di Ubuntu 16.04 LTS. Itu ada
di dalam repositori resmi di GitHub (ia juga memiliki panduan untuk MacOS).
Pertama, Anda perlu menginstal
dependensi kebodohan dan
libsodium yang diperlukan:
sudo apt-get install \ g++ \ cmake \ libboost-all-dev \ libevent-dev \ libdouble-conversion-dev \ libgoogle-glog-dev \ libgflags-dev \ libiberty-dev \ liblz4-dev \ liblzma-dev \ libsnappy-dev \ make \ zlib1g-dev \ binutils-dev \ libjemalloc-dev \ libssl-dev \ pkg-config \ libsodium-dev
Selanjutnya, Anda perlu membuat dan menginstal kebodohan:
git clone https://github.com/facebook/folly mkdir folly/build_ && cd folly/build_ cmake configure .. make -j $(nproc) sudo make install
Kemudian Anda dapat melanjutkan untuk menginstal Fizz:
cd ../.. git clone https://github.com/facebookincubator/fizz mkdir fizz/build_ && cd fizz/build_ cmake configure ../fizz make -j $(nproc) sudo make install
Selain Fizz, ada perpustakaan lain di jaringan, misalnya,
wolfSSL ,
GnuTLS atau
rustls .
Protokol masa depan
Untuk akhirnya menyelesaikan masalah dengan "osifikasi" protokol, David Benjamin
mengusulkan selain versi resmi standar untuk menggunakan sejumlah variasi, yang akan dirilis setiap enam minggu (bersama dengan rilis versi Chrome baru). Dengan demikian, server dan node perantara akan diminta untuk mematuhi semua aturan untuk membangun koneksi, jika tidak sebagian besar klien tidak akan dapat terhubung ke layanan.
Karena hal ini, para pengembang berharap untuk menghindari kemungkinan macet dalam memuat halaman web, serta masalah serupa dengan versi TLS masa depan.
Keamanan keseluruhan jaringan diharapkan meningkat secara signifikan setelah diperkenalkannya TLS 1.3. Perpustakaan yang memfasilitasi penyebaran versi baru protokol harus berkontribusi pada distribusi massal.
PS Materi lain dari blog IaaS perusahaan kami:
Apa yang kami lakukan di IT-GRAD - area utama:
Infrastruktur Virtual (IaaS) | Hosting PCI DSS | Cloud FZ-152