1 puan yazan GN⁺ 2025-06-16 | 1 yorum | WhatsApp'ta paylaş
  • 1990’ların ortasında Netscape ve Microsoft arasındaki tarayıcı rekabeti sırasında SSL protokolü ortaya çıktı
  • SSL 2 kriptografik ve pratik kusurlara sahipti; Microsoft da bunu temel alarak PCT protokolünü devreye aldı
  • Netscape, buna karşılık inisiyatifi ele geçirmek için SSL 3.0’ı geliştirdi
  • Sektör ve topluluk, tarayıcılar arası uyumluluğun korunmasını istediği için standardizasyon rolünü IETF’ye devretti
  • Bu süreçte protokolün adı TLS 1.0 olarak değiştirildi ve bu ad günümüze kadar geldi

Arka plan: tarayıcı rekabeti ve güvenlik protokollerinin doğuşu

  • 1990’ların ortasında Netscape ve Microsoft, tarayıcı pazarında son derece sert bir rekabet içindeydi
  • Bu rekabet sürecinde Netscape, SSL protokolünü geliştirdi

SSL 2 ve sorunları

  • SSL’in ilk sürümü, kriptografik kusurlar nedeniyle daha yayımlanmadan geçersiz hale geldi
  • Gerçekte dağıtılan SSL 2, birkaç yıl kullanıldı ancak çeşitli kriptografik ve pratik kusurlara sahipti
  • Bu kusurlar hemen ölümcül bir kriz yaratmasa da, iyileştirme ihtiyacı sürekli gündemde kaldı

Microsoft’un yanıtı: PCT protokolü

  • Rekabetin kızışmasıyla birlikte Microsoft, SSL 2’ye kendi özelliklerini ekleyerek PCT adlı bir protokol tanıttı
  • PCT yalnızca Internet Explorer (IE) ve IIS tarafından destekleniyordu

Netscape’in yeni stratejisi: SSL 3.0

  • Netscape de SSL 2’nin sorunlarını gidermek istiyordu, ancak Microsoft’un kontrolü ele almasını istemiyordu
  • Bunun üzerine SSL 3.0’ı geliştirdi ve öncekinden belirgin biçimde ayrılan değişiklikler hedefledi

Tarayıcı sektöründe standardizasyon müzakereleri

  • Sektör ve topluluk üyeleri, protokolün ikiye bölünmesini istemiyordu (fork etkisini önlemek için)
  • Consensus Development (yazarın çalıştığı yer), Netscape ve Microsoft temsilcilerinin toplantısına öncülük etti
    • Bu toplantıya Bruce Schneier (henüz ünlenmeden önce), Paul Kocher (SSL 3 tasarımcısı), Barbara Fox (Microsoft temsilcisi) ve başkaları katıldı

IETF standardizasyonu ve ad değişikliği

  • Hem Netscape hem de Microsoft, protokolün standardizasyon sürecine IETF’nin (Internet Engineering Task Force) liderlik etmesi konusunda anlaştı
  • Yazar, IETF standart belgelerinin (RFC) editörlüğünü üstlendi
  • Siyasi bir uzlaşının parçası olarak, SSL 3.0 üzerinde bazı değişiklikler yapılması ve adının da yeniden belirlenmesi gerekiyordu (IETF’nin mevcut protokolü “olduğu gibi onayladığı” izlenimini vermemek için)
  • Sonuç olarak TLS 1.0 adı ortaya çıktı; teknik olarak bu protokol aslında SSL 3.1’e karşılık geliyordu

Kapanış

  • Geriye dönüp bakınca, tüm bu isimlendirme ve standardizasyon tartışmaları biraz komik görünüyor

1 yorum

 
GN⁺ 2025-06-16
Hacker News görüşleri
  • Yalnızca sürüm numaralarına bakınca protokolün ne kadar değiştiğini anlamak zor; kafa karıştırıcı durum şöyle açıklanıyor: SSLv2, yaygın olarak kullanılan ilk SSL sürümüydü ama çeşitli sorunları vardı. SSLv3 neredeyse tamamen baştan yazılmış bir protokoldü. TLS 1.0, SSLv3’e çok benziyordu ancak IETF standardizasyon sürecinde birkaç küçük revizyondan geçti. TLS 1.1, TLS 1.0’daki blok şifre kullanım biçimine ilişkin sorunları çözmek için yapılmış küçük bir güncelleme sürümüydü. TLS 1.2, kriptografi alanındaki gelişmelere uyum sağlamak için orta ölçekli değişiklikler içeriyordu; yeni hash desteği (MD5 ve SHA-1 zafiyetlerine yanıt olarak) ve AEAD şifre takımları (AES-GCM gibi) eklendi. TLS 1.3 ise büyük ölçüde yeniden tasarlanmış bir protokol, ancak TLS 1.2 ve öncesinin bazı özelliklerini de içeriyor. Her protokolde otomatik sürüm müzakeresi tasarlanarak istemci ve sunucunun bağımsız biçimde yükseltilmesi sırasında bağlantı kaybı yaşanmaması hedeflendi.

  • O dönemde Microsoft’un bugünkünden tamamen farklı bir şirket olduğunu düşününce, bugünün ölçütleriyle bile hiç tuhaf gelmiyor. O zamanlar 'M$', açık kaynak internet teknolojilerini dizginlemek için elindeki her aracı kullanıyordu ve bu tavır 2010’ların başına kadar da sürdü. Java Applets’in gelişemeyip piyasadan silinmesine bunun katkı yaptığını düşünüyorum. JavaScript ve CSS’in gelişimi de yıllarca yavaş kaldı. Şirkette IE’nin en yeni teknolojilerini kullanmam dayatılmıştı ama ben onun yerine Mozilla 3.0’ı seçtim; JS hatalarını düzelttikten sonra kurumsal SPA geliştirmede Mozilla kullanmaya başladım. Sonrasında Fortune 500 şirketlerinde de iç uygulamalarda Mozilla/Firefox kullanımı arttı ve dönüp bakınca bunun iyi bir tercih olduğunu düşünüyorum.

    • O günleri hatırlayınca, 'M$' lakabının bugün bile yakıştığını düşünüyorum.
  • Bir sonraki sürümün adını yeniden SSL yapsak sorun olmaz mı diye soruluyor. Hâlâ herkesin 'SSL' adını kullandığı düşünülürse, kullanmaya devam etmenin sakıncası olmadığı savunuluyor.

    • Aslında "TLS" adının da zaten pek çok yerde kullanıldığı belirtiliyor. Ayarlar ve fonksiyon imzaları gibi yerleri güncellemenin son derece zahmetli bir iş olması da düşündürücü.

    • Böyle bir fikri kimseye vermek istemediğini özellikle vurguluyor.

  • Birine web sitesine güvenli şekilde bağlanmasını anlatırken (yani TLS/SSL terimini kullanırken) genelde hangi adı kullandığınız soruluyor. Ayrıca kaç yaşında olduğunuz ve 1999’dan önce çalışıp çalışmadığınız da merak ediliyor. Kendi yanıtını da birazdan yazacağını belirtiyor.

    • Ben SSL diyorum (27 yaşındayım). Buna karşılık kod içinde tls kullanıyorum, belgelerde ise karışıklığı önlemek için SSL/TLS yazımını tercih ediyorum.

      1. SSL diyorum. Uzun süre TLS’nin de "aynı şey" olduğunu bilmiyordum; öğrendikten sonra bile 10 seferin 9’unda hâlâ SSL diyorum. 2. 38 yaşındayım (2011’den beri çalışıyorum ama ağ programlamaya 2004–2005 civarında başladım). Az önce baktığım kodda fonksiyon adlarında bile sslCertNotBefore gibi SSL geçiyor. Sanırım bunun nedeni programcıların genelde TLS ile doğrudan uğraşmaması. Benim kodumda da HTTPS üzerinden sertifika bilgilerini parse etmek gerektiği için epey uğraştırıcıydı. Her şey otomatikleştirilip soyutlandığı için hatasız çalışıyor ama bir yandan da TLS’nin nasıl işlediğine dair derin anlayışı engelleyen bir tarafı var.
    • Çoğu kişi OpenSSL gibi adında ssl geçen kütüphanelerle güvenli iletişim kurduğu için SSL adını daha çok kullanıyor. OpenSSL dışında BoringSSL, LibreSSL, wolfSSL gibi kütüphaneler de var. TLS adını taşıyan kütüphaneler daha az biliniyor; örneğin GnuTLS, mbedTLS, s2n-tls ve RustTLS.

    • SSL terimini kullanmanın ana nedeni, SSL’in insanlara daha tanıdık gelmesi gibi görünüyor. Teknik olarak doğrusu TLS (sonuçta artık kimse SSL 3.0 kullanmıyor), ama başlıca kütüphanelerde de SSL adı kaldığı için kullanım sürüyor. Ben de 90’lardaki kripto savaşları döneminde SSL adını öğrenmiştim; o zamanlar düzgün SSL şifrelemesi için Netscape’in "US only" sürümünü yasa dışı şekilde indirmek gerektiğini hatırlıyorum, o yüzden biraz da alışkanlık.

    • Ben genelde "https" diyorum. Teknik olmayan insanlar bile kabaca ne demek istediğini anlayabildiği için bunu tercih ediyorum.

  • Aslında SSL ile TLS’yi zihnimde bilinçsizce tam ayırmadığımı ilk kez fark ettim. 20 yıl sonra gerçek nedeni öğrenmek ilginç hissettirdi.

    • Aynı his bende de var. Sektörde 15 yıldır çalışıyorum, şimdiye kadar SSL ile TLS’nin pratikte aynı şey olduğunu fark etmemiştim.
  • "Transport Layer Security" kesinlikle daha iyi bir ad gibi geliyor. TLS terimini de seviyorum. Arka arkaya iki tane S sesi çıkarmak yılana benziyor, bu da eğlenceli geliyor.

    • Ama TLS, "Thread Local Storage" için de zaten çok yaygın kullanılıyor. Transport Layer Security 1999’dan beri resmî olarak kullanılıyor olsa da, Thread Local Storage MS veya IBM geliştirme ortamlarında 1996’dan önce de vardı. Unix dünyasında ise pthread 1995’te çıktığından beri thread-specific data terimi daha çok tercih ediliyordu. 2001’deki Itanium ABI belgesinin etkisiyle "TLS" kısaltması daha da yaygınlaşmış olabilir; Sun Microsystems da muhtemelen bunu zaten kullanıyordu. Birinde OS/2 kılavuzları varsa kaynak paylaşması isteniyor.

    • Bana kalırsa aslında SSL daha uygun bir ad. Teoride TLS, birden fazla katmanda çalışan genel amaçlı bir güvenlik mekanizması olmalıydı (örneğin IPSec ile birlikte de kullanılabilirdi), ama pratikte çoğunlukla yalnızca TCP soketleri için kullanılıyor. UDP türevi olarak DTLS ve QUIC var ama bunlar TLS’nin kendisine dâhil değil. Son dönemde Linux kernel TLS ve Windows’a özgü altyapılar da var, fakat bunlar bir soket bayrağını açmak kadar kolay uygulanmıyor. Ve açıkçası yılana benzeyen o S sesi kulağa havalı geliyor.

    • "SSL", "TLS"den daha kolay telaffuz ediliyor. S-S-L söylenirken dilin konumu neredeyse hiç değişmediği için daha hızlı ve doğal geliyor.

    • The Jungle Book’taki Kaa, TCP güvenliği üzerine konuşup S~S~L adına yorum yapsa yakışırdı. Hatta bir S daha ekleyip SSSL demek bile eğlenceli olurdu.

  • TLS ile SSL’i katı biçimde ayıran insanlar, aradaki farkı bildiklerini göstermek isteyen ya da böyle konuşulmasını tercih eden tipler gibi geliyor. Gerçek ayrım biraz .doc ile .docx farkına benziyor: teknik olarak farklılar ama sıradan kullanıcı açısından büyük ölçüde uyumlu. Çoğu insan için HTTPS düzgün çalışsın yeter; içeride ne olup bittiği pek umurlarında değil.

  • İlgili bağlantı olarak, 1996’da yazılmış 'Randomness and the Netscape Browser' (Dr. Dobb's Journal) adlı yazı paylaşılmış: https://people.eecs.berkeley.edu/~daw/papers/ddj-netscape.html 1996 tarihli olduğu için dili de günümüz makale ve haberlerinden epey farklı; eski bir havası var.

    • Hangi yayını okuduğunuza, yani hedef kitleye ve formata göre bu çeşitlilik 1996’da olduğu gibi bugün de sürüyor. LWN gibi yerler hâlâ benzer bir üslupla haber yapıyor, sadece biraz daha az katı: https://lwn.net/
  • TLS 1.0’ın SSL 3.0’a kıyasla gerçekte daha fazla iyileştirme içermiş olup olmadığı soruluyor. Yazıda bunun sadece "fark oluşturmak için yapılmış küçük ayarlar" gibi sunulmuş olmasına itiraz ediliyor.

    • Gerçekte önemli değişiklikler ve iyileştirmeler olduğu doğru. Ancak bunun SSL 3.0 dönemindeki kadar kökten bir yeniden tasarım olmadığı özellikle vurgulanıyor.
  • İnternette hâlâ SSLv2 destekleyen 300 binden fazla servis olduğu belirtiliyor. Bağlantı: https://shodan.io/search/report/… Eğilim grafiği: https://trends.shodan.io/search?query=ssl.version%3Asslv2#overview Sayı yıllar içinde ciddi biçimde azalmış olsa da tamamen ortadan kalkması için hâlâ zaman gerekecek gibi görünüyor.

    • Peki gerçekten SSLv2 tabanlı istemcilerden kaç tane kaldığı merak ediliyor. Güncel yazılım ve kütüphanelerde artık anlamlı bir destek seviyesi kalmadığı düşünülüyor.