Setelah berbicara tentang proses jabat tangan pada TLS 1.2 kali ini team SSL Indonesia akan membahas proses jabat tangan pada TLS 1.3. Jabat tangan TLS 1.3 ini telah mengalami banyak perubahan dari TLS 1.2. Proses jabat tangan pada TLS 1.3 lebih pendek dibandingkan dengan TLS 1.2. Namun bukan berarti tingkat keamanan pada TLS 1.3 kalah dengan TLS 1.2. Team SSL Indonesia akan membahas secara mendalam tentang handshake SSL pada TLS 1.3
- Pada tahap pertama, proses jabat tangan TLS 1.3 sama saja seperti pada tahap TLS 1.2. Proses pengiriman pesan “client Hello” memulai jabat tangan, tetapi kali ini dikemas dengan lebih banyak informasi. TLS 1.3 melakukan upgrade dengan mengurangi jumlah cipher yang didukung dari 37 menjadi 5. Dalam konteks jabat tangan, klien dapat menebak apa perjanjian atau protocol pertukaran kunci yang akan digunakan.
- Tahap kedua, server akan merespon pesan “Server Hello” sama seperti jabat tangan pada TLS 1.2 dan sekaligus mengirimkan otentikasi sertifikat pada saat itu juga. Saat klien dan server sudah sepakat pada protocol AEAD. Server akan mengirimkan pembagian kunci, menghitung kunci sesi dan mengakhiri dengan pesan “Server Selesai”.
- Tahap ketiga, setelah melakukan pertukaran informasi. Klien akan mengotentikasi sertifikat SSL dan menggunakan dua bagian kunci untuk menghitung salinan sendiri dari kunci sesi. Ketika proses tersebut selesai maka pesan “Klien selesai” akan dikirimkan.
Biaya Proses Handshake SSL
Sejauh ini, salah satu keluhan tentang sertifikat SSL adalah server yang terlalu kaku dengan tambahan overhead, yang membawa persepsi bahwa HTTPS lebih lambat dari HTTP. Hal tersebut dikatakan karena proses jabat tangan sebelum munculnya TLS 1.2 merupakan proses yang mahal dan harus skala besar.
Proses jabat tangan ini merupakan proses yang sangat serius dan mengenakan biaya yang tinggi pada server. Proses jabat tangan pada TLS 1.2 akan sangat lambat jika dilakukan secara bersamaan dalam skala besar seperti proses otentikasi, enkripsi dan dekripsi.
Untuk situs web dengan skala kecil kemungkinan ini tidak akan mempengaruhi proses interaksi pada situs. Tetapi untuk situs web perusahaan yang mendapat ratusan ribu pengunjung setiap hari, ini bisa menjadi masalah besar.
Setiap iterasi baru dari jabat tangan mengambil langkah besar menuju proses yang lebih ringan. Proses pada TLS 1.2 diibaratkan melakukan perjalanan dua kali dalam proses jabat tangan dan melibatkan dua arah antara klien dan server, sementara TLS 1.3 satu kali proses meskipun melibatkan dua arah dengan dukungan untuk 0 RTT.
Tetapi bagian dari masalah dengan jabat tangan 1.2 sebenarnya tidak ada hubungannya dengan proses jabat tangan SSL itu sendiri, dan lebih berkaitan dengan salah satu metode untuk mencapainya yakni proses enkripsi yang bersifat asimetris, secara khusus bagian pertukaran kunci. Enkripsi asimetris 10.000 kali lebih lambat daripada enkripsi simetris.
Proses enkripsi berkaitan dengan proses pertukaran kunci public key dan private key. Pertukaran kunci ECC / Diffie-Hellman (ECDH), dengan perbandingan, lebih ringan, tetapi masih dapat membutuhkan sumber daya yang substansial dalam beberapa konfigurasi (ketika dipasangkan dengan ECDSA secara khusus). Semua ini adalah untuk mengatakan bahwa jabat tangan SSL secara historis mahal dan, jika tidak dikonfigurasi dengan benar, sering kali berskala buruk.
Perbandingan Perbaikan TLS 1.2 Handshake dan TLS 1.3 Handshake
Cara terbaik untuk memahami peningkatan yang dilakukan TLS 1.3 pada jabat tangan SSL adalah mulai dengan membahas perjalanan dua arah dari klien dan server. Agar terlihat lebih mudah, team SSL Indonesia merangkum penjelasan proses jabat tangan SSL dengan 10 langkah utama.
Secara optimal, jabat tangan 1.2 TLS membuat dua perjalanan bolak-balik. Ada skenario di mana perjalanan bolak-balik tambahan mungkin diperlukan, jadi ketika kita merujuk pada jumlah perjalanan bolak-balik yang kita bicarakan dalam skenario optimal. Berikut ilustrasi perjalanan proses Jabat tangan SSL pada TLS 1.2 dan TLS 1.3
Pada ilustrasi tersebut, proses jabat tangan TLS 1.3 hanya membuat satu kali perjalanan bolak balik, meskipun sedikit sangat tidak meyakinkan untuk lebih aman. Namun pada dasarnya proses handshake pada TLS 1.3 lebih cepat dan pastinya tidak kalah aman dengan TLS 1.2
Simplified Cipher Suite (Suite Cipher Sederhana)
Proses jabat tangan berkaitan dengan proses bolak balik pengiriman informasi dalam dukungan cipher suite. Seperti yang sudah dijelaskan bahwa Cipher suite merupakan kumpulan algoritma kriptografi. Pada TLS 1.2 panjang kriptografi atau cipher suites hingga 37 suite yang diterima oleh server ataupun browser.
Hal tersebut sangat tidak efisien karena, setiap kali ada penambahan atau kombinasi baru maka IANA (Internet Assigned Number Authority) harus mengelola 37 suites sandi baru atau yang berbeda.
Hal tersebut sangat buruk dikarenakan jumlah variabilitas yang sangat banyak yang dapat mengundang kesalahan konfigurasi, sehingga pengguna internet rentan mengetahui eksploitasi. Selain itu, hal tersebut juga menjadikan segala proses konfigurasi sertifikat SSL lebih membingungkan. Karena hal tersebut, IETF melakukan upgrade pada TLS 1.3 dengan mengurangi jumlah cipher yang didukung dari 37 menjadi 5 cipher suites. Hal tersebut juga akan berpengaruh pada aktivitas negosiasi cipher suites sehingga tahap dalam enkripsi dan dekripsi sertifikat SSL menjadi lebih mudah dan cepat. Aktivitas negosiasi cipher suites:
- Jenis sertifikat yang didukung
- Fungsi Hash yang didukung (SHA1, SHA2)
- Fungsi kode otentikasi pesan (MAC)
- Tanda tangan digital
- Algoritma pertukaran kunci (private key dan public key)
- Cipher enkripsi simetris
- Mode sandi
Terdapat algoritme yang berbeda dalam cipher suite TLS 1.2, ini merupakan proses negosiasi yang terjadi pada TLS 1.2:
- Key Exchange (Pertukaran Kunci)
- Authentication (Otentikasi)
- Bulk Cipher
- Hashing Algorithm
Sedangkan pada TLS 1.3 hanya melalui 2 proses negosiasi saja:
- Bulk Cipher
- HKDF (KMAC Based Extract and Expand Key Derivation Function Hash
Pada proses tersebut dapat kita lihat bahwa IETF memberikan dukungan pada semua algoritma yang paling aman, paling efisien dan menghapus proses pertukaran kunci yang panjang. Skema Ephemeral Diffie-Hellman sekarang menjadi satu-satunya cara efisien untuk mengirimkan informasi, berbagi kunci saat memulai proses handshake. Enkripsi RSA sepenuhnya telah dihapus bersama dengan semua skema pertukaran kunci statis lainnya.
Perbedaan Handshake TLS 1.2 dan TLS 1.3
Hal penting yang haru kita ketahui bahwa TLS 1.3 merupakan hasil perbaikan dari TLS 1.2 untuk meningkatkan kinerja dengan mengjapus skema pembuatan kunci statis. Serta skema kerentanan yang diketahui dapat mengurangi jumlah opsi pertukaran dengan berbasis Ephemeral Diffie-Hellman. Jabat tangan TLS 1.3 meningkatkan otentikasi pesan dan tanda tangan digital. Dengan kata lain bahwa tanda tangan digital padaTLS 1.3 merupakan tanda tangan modern yang menangani otentikasi pesan dan server secara bersamaan.
Selain menghapus tahap exchange algorithm, TLS 1.3 juga menghilangkan enkripsi simetris lama atau cipher enkripsi massal (Bulk encryption Cipher). Berbicara tentang enkripsi simetris, ada dua jenis cipher yang termasuk didalamnya yakni Block cipher dan Stream cipher. Block cipher mengenkripsi data dalam blok berukuran tetap, namun jika pesan Anda tidak sesuai dengan panjang kunci maka Anda harus melakukan pemecahan pesan yang terlalu panjang dan menambah pesan yang terlalu pendek lalu dipasang kembali.
Ada banyak eksploitasi yang menargetkan padding yang digunakan oleh Block cipher. Jika berhasil menebak padding, akan lebih mudah untuk mendekripsi pesan atau menebak kuncinya. Jenis cipher yang lain adalah stream cipher, yang mengenkripsi aliran data dalam urutan pseudo-acak dengan panjang acak, yang disebut stream kunci. Stream cipher merupakan pilihan yang populer karena mudah diimplementasikan dan cepat.
Sebenarnya, cara terbaik untuk mengatasi masalah yang dihadapi pada block cipher adalah mengatur block cipher untuk bertindak seperti stream cipher. Ini disebut mode penghitung, dengan contoh paling populer adalah cipher block chaining (CBC). Hal tersebut yang membuat TLS 1.3 lebih unggul dibandingkan dengan TLS 1.2 karena TLS 1.3 telah menghapus block cipher. Selain itu TLS 1.3 juga menggabungkan enkripsi dan otentikasi pesan menjadi satu fungsi.