Mengapa SSL Berganti Nama Menjadi TLS pada Akhir 1990-an
(tim.dierks.org)- Di tengah perang browser pada pertengahan 1990-an, ketika kemungkinan terpecahnya SSL dari Netscape dan PCT dari Microsoft makin besar, industri berupaya menyatukannya sebagai satu standar terbuka
- SSL awal memiliki cacat sehingga tidak pernah dirilis, dan SSL 2, versi pertama yang benar-benar dipakai, digunakan selama beberapa tahun tetapi memiliki keterbatasan kriptografis dan praktis
- PCT milik Microsoft adalah ekstensi tersendiri berbasis SSL 2 yang disesuaikan untuk IE dan IIS, sementara Netscape merespons dengan SSL 3.0 agar tidak kehilangan kendali atas standar
- Netscape dan Microsoft menyepakati proses standardisasi terbuka di IETF, tetapi IETF perlu menghindari kesan hanya mengesahkan protokol Netscape apa adanya
- Pada akhirnya, SSL 3.0 mengalami beberapa perubahan dan namanya juga diganti; TLS 1.0 pada dasarnya dimulai dalam bentuk yang mendekati SSL 3.1
SSL dan PCT di Tengah Perang Browser
- Persaingan browser antara Netscape dan Microsoft pada pertengahan 1990-an juga memengaruhi standardisasi protokol keamanan
- Netscape mengembangkan protokol SSL
- Versi awalnya cepat dibobol karena cacat kriptografis dan tidak pernah dirilis
- Versi produksi pertamanya adalah SSL 2, yang digunakan selama beberapa tahun
- SSL 2 memiliki cacat kriptografis dan praktis, tetapi bukan krisis dramatis yang menuntut penggantian segera
- Microsoft memodifikasi SSL 2 dan menambahkan perluasan tersendiri untuk mendefinisikan PCT
- PCT adalah protokol turunan dari SSL 2
- Cakupan dukungannya terbatas pada IE dan IIS
- Netscape juga berusaha memperbaiki masalah SSL 2, tetapi tidak ingin Microsoft mengambil kepemimpinan atau kepemilikan atas standarnya
- Hasilnya, Netscape mengembangkan SSL 3.0 dengan perubahan yang lebih besar
Standardisasi IETF dan Nama TLS
- Banyak orang di industri dan komunitas berusaha menghindari situasi ketika protokol mengalami fork
- Consensus Development menyelenggarakan pertemuan antara perwakilan Netscape dan Microsoft
- Saat itu Tim Dierks bekerja di Consensus Development bersama Christopher Allen
- Ia menulis implementasi referensi SSL 3.0 berdasarkan kontrak dengan Netscape
- Bruce Schneier hadir dalam pertemuan tersebut, Paul Kocher yang merancang protokol SSL 3 kemungkinan juga hadir, dan Microsoft diwakili oleh Barbara Fox
- Sebagai hasil negosiasi, Microsoft dan Netscape sepakat agar IETF mengambil alih protokol tersebut dan melakukan standardisasi melalui proses terbuka
- Proses ini berujung pada Tim Dierks menyunting RFC
- Dalam proses standardisasi, SSL 3.0 mendapat beberapa perubahan
- Tujuannya adalah agar IETF tidak terlihat sekadar mengesahkan protokol Netscape begitu saja
- Karena alasan yang sama, nama protokolnya juga diganti
- TLS 1.0 yang lahir dengan cara ini sebenarnya merupakan versi yang mendekati SSL 3.1
1 komentar
Komentar Hacker News
Nomor versi tidak menunjukkan perbedaan protokol dengan baik, jadi malah lebih membingungkan
SSLv2 adalah SSL pertama yang disebarkan secara luas, tetapi punya banyak masalah, dan SSLv3 hampir merupakan protokol baru
TLS 1.0 mirip dengan SSLv3, tetapi sedikit diperbaiki dalam proses standardisasi IETF, sedangkan TLS 1.1 adalah revisi yang sangat kecil yang memperbaiki masalah cara penggunaan block cipher
TLS 1.2 adalah revisi skala menengah yang menanggapi kelemahan MD5 dan SHA-1 dengan menambahkan hash baru serta cipher suite AEAD seperti AES-GCM, dan TLS 1.3 memang menggunakan kembali sebagian unsur sebelum TLS 1.2, tetapi sebagian besarnya lebih dekat ke protokol baru
Semua protokol ini dirancang agar dapat melakukan negosiasi versi otomatis, sehingga klien dan server bisa melakukan upgrade secara independen tanpa kehilangan konektivitas
Salah satunya adalah session ticket, yang memungkinkan pelanjutan sesi di sisi server tanpa penyimpanan state yang tersinkron antarserver, dan yang lain adalah Server Name Indication, yang memungkinkan server memakai lebih dari satu sertifikat
Menjadikan versi-versi berikutnya v1.1, v1.2, v1.3 juga tampak seperti sikap keras kepala agar tidak mengakui bahwa mereset nomor versi itu secara objektif keliru
Microsoft saat itu adalah makhluk yang sama sekali berbeda, jadi kekacauan nama SSL/TLS tidak terasa terlalu aneh
M$ pada masa itu berusaha menguasai semuanya, dan menurut saya mereka bahkan sampai awal 2010-an belum berhenti mencoba memperlambat teknologi internet open source
Mereka berhasil membunuh Java Applet, dan saya rasa mereka juga membuat JavaScript serta CSS secara umum tertinggal bertahun-tahun
Pada awal 2000-an, di perusahaan saya ada tekanan untuk mendukung “teknologi” terbaru IE, tetapi begitu bug inti JS diperbaiki, kami langsung mulai mendukung Mozilla 3.0, dan itu kemudian menjadi keputusan yang bagus ketika sebuah perusahaan Fortune 500 mulai memakai Mozilla/Firefox untuk aplikasi internalnya jauh sebelum hal itu menjadi umum
Applet selalu berjalan di IE, dan itu hampir satu-satunya jalur yang bisa dipengaruhi Microsoft
Applet gagal karena menjadi contoh utama dari “Java itu lambat”; meski secara umum itu belum tentu tepat, untuk Applet memang benar karena harus menunggu unduhan dan menunggu JVM mulai
Pada akhirnya HTML/JS menjadi lebih baik untuk fitur dinamis yang dulu memerlukan Applet, dan sisa area yang belum cukup ditangani HTML diambil oleh Flash, lalu Applet menghilang
Bahkan untuk satu animasi sepele pun waktu start JRE sangat tidak masuk akal, kebutuhan memori dan crash-nya juga parah menurut standar saat itu, dan masalah kompatibilitas pada rilis awal platform Java juga aneh
Model keamanannya, yang berasumsi bahwa pihak yang bisa mendapatkan sertifikat CA pasti baik, juga konyol, dan teknologi sandbox di browser secara umum, bukan hanya IE, juga belum matang
Ada ekspektasi besar terhadap s2n, tetapi tampaknya di luar AWS tidak benar-benar mendapat pijakan besar
Orang yang membedakan TLS dan SSL dengan tegas berarti tahu perbedaannya dan menganggap lawan bicara juga harus tahu, tetapi secara praktis ini mirip dengan perbedaan .doc dan .docx
Pada dasarnya berbeda, tetapi bagi pengguna umum terlihat dapat dipertukarkan, dan di lapangan orang biasanya hanya peduli apakah HTTPS berfungsi, bukan terlalu memikirkan cara kerja internalnya
Saya ingat cukup sering berdiskusi dengan orang-orang yang mengira angka yang lebih besar berarti lebih baik
Akan jauh lebih mudah jika semua trafik jaringan terenkripsi modern disebut TLS, dan SSL hanya disebut SSL ketika benar-benar memakai SSL karena sistem legacy
Saya baru sadar bahwa kepala saya barusan secara tidak sadar kesulitan membedakan SSL dan TLS
Baru setelah 20 tahun saya paham alasannya
Setelah 15 tahun di industri ini, baru benar-benar menyadari bahwa ssl dan tls itu hal yang sama, jadi rasanya seperti orang bodoh
Pemicunya adalah fakta bahwa di Java, bahkan ketika memakai TLSv1.3 hari ini, untuk memulai koneksi terenkripsi kita masih menggunakan SSLSocket
“Transport Layer Security” memang nama yang lebih baik
Mengucapkan “TLS” juga enak, sementara SSL dengan dua S berurutan terdengar seperti ular
Transport Layer Security didokumentasikan luas sebagai dimulai pada 1999, sedangkan ada materi tentang “Thread Local Storage” yang setidaknya berasal dari 1996
Saat itu istilah ini lebih umum di pihak Microsoft, mungkin juga IBM/OS/2, sedangkan di Pthreads dan Unix secara umum cenderung disebut “thread-specific data”
Dokumen Itanium ABI tahun 2001 mungkin menyebarkan istilah ini ke dunia Unix yang lebih luas, tetapi Sun tampaknya juga sudah memakai istilah ini sebelumnya di Solaris dan Java
Secara teori TLS bisa menjadi mekanisme keamanan lapisan transport seperti IPSec, yang memungkinkan protokol apa pun ditumpangkan di atasnya, tetapi dalam praktiknya hampir selalu terikat pada socket TCP
Varian UDP seperti DTLS atau QUIC juga bukan bagian dari spesifikasi TLS, dan meski ada kernel TLS di Linux atau infrastruktur serupa di Windows, menyalakan TLS belum semudah mengaktifkannya dengan satu flag socket
Saat mengatakan kepada seseorang bahwa mereka harus mengakses situs web secara aman, atau dalam situasi yang pantas memakai istilah TLS/SSL, penasaran biasanya orang mengatakan apa
Sudah lama tidak tahu bahwa TLS itu “hal yang sama”, dan sekarang pun setelah tahu, 9 dari 10 kali masih tetap menyebutnya SSL
Berusia 38 tahun dan mulai bekerja pada 2011, tetapi pertama kali mencoba pemrograman jaringan sekitar 2004–2005
Baru saja melihat layar lain dan fungsi yang beberapa menit lalu ditambahi pernyataan if juga memakai nama
sslCertNotBeforeFakta bahwa programmer biasanya tidak berurusan langsung dengan TLS tampaknya juga bagian dari masalah
Pernah membuat sistem yang mengekstrak detail sertifikat dari koneksi HTTPS, dan menarik informasi yang dibutuhkan dari library standar Java cukup merepotkan
Jika semuanya ditangani otomatis tanpa terlihat, memang sulit membuat kesalahan, tetapi dibuat seperti kotak hitam tidak terlalu membantu menyebarkan pemahaman mendalam tentang bagaimana TLS sebenarnya bekerja
Mulai dari OpenSSL yang paling dominan, juga ada BoringSSL, LibreSSL, wolfSSL, dan lainnya
Library yang mengandung TLS dalam namanya ada GnuTLS, mbedTLS, s2n-tls, RustTLS, tetapi relatif lebih jarang dipakai
Lebih mungkin dipahami daripada TLS yang lebih akurat, dan sekarang tidak ada lagi yang benar-benar memakai SSL 3.0
Nama library klasik seperti OpenSSL juga mengandung SSL
Namun bisa jadi ini kebiasaan dari masa Crypto Wars tahun 1990-an, ketika belajar SSL dan harus mendapatkan Netscape versi “US only” untuk memakai enkripsi SSL yang benar
Karena orang awam pun kadang tahu artinya
Meski begitu kadang SSL masih keluar juga
Berusia 51 tahun dan mulai bekerja di bidang TI pada pertengahan 90-an
Rasanya TLS 1.0 memuat perbaikan yang cukup besar dibanding SSL 3.0
Kalau hanya membaca tulisannya, terlihat seperti hanya mengubah beberapa hal agar tampak berbeda
Ketika sebelumnya diumumkan bahwa serangan POODLE hanya berdampak pada SSL3 dan tidak pada TLS1.0, dari informasi itu saja sudah bisa diprediksi bahwa itu adalah padding oracle
Keduanya cukup mirip, dan adil untuk melihatnya sebagai beberapa “perbaikan bug” yang dimasukkan
Itu sudah lama sekali sehingga mungkin ada beberapa hal yang terlupa, dan karena SSL3 dan TLS1.0 selalu diimplementasikan bersama, mungkin ada detail yang terlewat
Secara umum lebih mirip IETF yang tidak begitu saja menyetujui protokol SSL 3.0 apa adanya, melainkan menandai wilayahnya sendiri
Artikel terkait: “Randomness and the Netscape Browser” dari Dr. Dobb's Journal, Januari 1996
https://people.eecs.berkeley.edu/~daw/papers/ddj-netscape.ht...
Artikel itu ditulis pada 1996, dan bahasa yang digunakan sudah terasa cukup berbeda dari publikasi masa kini, jadi terasa tua
Seperti halnya pada 1996, tulisan LWN [1] saat ini masih terasa cukup mirip gayanya
Hanya saja mungkin sedikit lebih ditujukan ke pembaca umum sehingga agak kurang kaku
[1] https://lwn.net/
Saya ingat “SSL and TLS: Designing and Building Secure Systems” karya Eric Rescorla sangat berguna untuk memahami sejarah TLS dan bagaimana akhirnya sampai ke kondisi sekarang
Buku itu terbit pada 2001, sudah memperingatkan beberapa masalah yang kemudian menjadi CVE, dan bisa didapat bekas dengan harga beberapa dolar
Sekitar 2014, menurut saya sudah ada konsensus yang sangat kuat bahwa SSL 2.0 punya cacat serius
Bahkan handshake-nya pun tidak diautentikasi dengan benar