1 poin oleh GN⁺ 2025-06-16 | 1 komentar | Bagikan ke WhatsApp
  • 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

 
GN⁺ 2025-06-16
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

    • TLS 1.0 memperkenalkan modularitas lewat konsep “extension”, jadi sulit disebut evolusi kecil
      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
    • Negosiasi versi otomatis juga memungkinkan berbagai serangan downgrade selama puluhan tahun
    • Seharusnya dinamai saja TLS v4.0, bukan TLS 1.0
      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
    • Setidaknya mereka tidak memberi versi berdasarkan nomor tahun
  • 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

    • Menurut saya bukan Microsoft yang membunuh Java Applet
      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
    • Applet mati karena berbagai alasan
      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
    • Menurut saya julukan “M$” justru lebih cocok untuk zaman sekarang
    • Microsoft tidak banyak berubah, kecuali departemen PR-nya menjadi lebih baik
    • Amazon juga punya https://github.com/aws/s2n-tls
      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

    • Kesulitan utamanya adalah menjelaskan kepada pengguna umum bahwa TLSv1.0 lebih baru dan lebih baik daripada SSLv2/SSLv3
      Saya ingat cukup sering berdiskusi dengan orang-orang yang mengira angka yang lebih besar berarti lebih baik
    • Meski SSL sudah lama dihentikan, orang masih memakai SSL sebagai nama untuk trafik jaringan terenkripsi
      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

    • Saya juga sama
      Setelah 15 tahun di industri ini, baru benar-benar menyadari bahwa ssl dan tls itu hal yang sama, jadi rasanya seperti orang bodoh
    • Saya baru tahu sekitar 2010, tetapi sebelumnya saya juga tidak tahu
      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

    • Masalahnya, TLS sudah banyak dipakai sebagai singkatan dari thread local storage
      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
    • Justru menurut saya SSL adalah nama yang lebih pas
      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
    • “SSL” lebih mudah diucapkan daripada “TLS” karena posisi lidah hampir tidak berubah di antara tiga hurufnya
    • Nama terbaik adalah nama yang muncul pertama lalu terlanjur melekat
  • 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

    1. Apakah menyebutnya SSL atau TLS
    2. Berapa usia mereka, atau apakah sudah bekerja sejak sebelum 1999
    • Biasanya menyebutnya SSL
      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 sslCertNotBefore
      Fakta 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
    • Alasan kebanyakan orang menyebutnya SSL tampaknya karena nama library yang menangani komunikasi aman mengandung SSL
      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
    • Biasanya menyebutnya SSL
      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
    • Biasanya mengatakan “https”
      Karena orang awam pun kadang tahu artinya
    • Belakangan ini makin sering mengatakan “TLS”, tetapi sampai baru 1–2 tahun lalu hampir selalu mengatakan “SSL”
      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

    • Perbedaan utamanya ada pada padding
      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
    • Perubahannya kecil, lebih kecil daripada revisi versi mana pun yang lain
      Secara umum lebih mirip IETF yang tidak begitu saja menyetujui protokol SSL 3.0 apa adanya, melainkan menandai wilayahnya sendiri
    • Jelas ada perubahan dan perbaikan yang berarti, tetapi bukan perancangan ulang total seperti SSL 3.0
  • 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

    • Tergantung publikasi apa yang dibaca
      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/
    • Para penulis artikel itu menemukan masalah keamanan tersebut dan bahkan tampil di halaman depan New York Times: https://www.nytimes.com/2012/02/15/technology/researchers-fi...
  • 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