Transport Layer Security: Revizyonlar arasındaki fark

[kontrol edilmiş revizyon][kontrol edilmiş revizyon]
İçerik silindi İçerik eklendi
düzeltme AWB ile
Cagriyurdakul (mesaj | katkılar)
Tarihsel gelişim eklendi
64. satır:
Eğer yukarıdaki adımlardan birisi başarısız olursa, TLS el sıkışması başarısız olur ve bağlantı oluşturulamaz.
 
=== Tanımlama ===
TLS protokolü gizli dinlemeyi ve onaysız değişiklik yapmayı önleyerek, ağ üzerinden istemci-sunucu uygulamalarının haberleşmesine izin verir.
 
Protokoller TLS ile ya da TLS olmaksızın işlem gördüğünden beri, istemcinin sunucuya TLS bağlantısının kurulmasını isteyip istemediğini belirtmesi gerekmektedir. Bunu gerçekleştirmenin başlıca iki yolu vardır; ilk seçenek TLS bağlantıları için farklı bir port numarası kullanılmasıdır (örneğin [[HTTPS]] için 443. port). Diğer seçenekte ise normal bir port numarası kullanılır ve istemci TLS protokolün özelleştirilmiş mekanizmasını kullanarak (örneğin mail ya da haber protokolleri için STARTTLS) sunucunun bağlantıyı TLS protokolüne yönlendirmesi için istekte bulunur.
 
İstemci ve sunucu TLS protokolü kullanmayı kararlaştırdıktan sonra, el sıkışma süreci kullanarak kararlı bir bağlantı kurarlar.<ref>{{web kaynağı|başlık=SSL/TLS in Detail|url=https://technet.microsoft.com/en-us/library/cc785811.aspx|erişimtarihi=10.4.2016}}</ref> Bu el sıkışma esnasında, istemci ve sunucu bağlantının güvenliğini sağlamak için çeşitli parametreler kullanmayı kararlaştırır:
* İstemci etkin olan sunucudan güvenli bir bağlantı isteğinde bulunduğunda el sıkışma işlemi başlar. Desteklediği şifreleme takımını(şifreleme ve özet fonksiyonu) liste halinde sunucuya bildirir,
* Sunucu ise listeden şifreleme ve özet fonksiyonu bilgilerini alır ve istemcinin kararını destekler ve bildirir,
* Sunucu genellikle kimliğini bir sayısal sertifika ile gönderir. Sertifika, sunucunun ismini, güvenilir sertifika yöneticisini ve sunucunun açık şifreleme anahtarını içerir,
* İstemci, sunucunun göndermiş olduğu bu sertifikanın güvenilir bir sertifika otoritesinden gelip gelmediğini ve sertifikanın geçerli olup olmadığını kontrol eder,
* Güvenli bağlantıda kullanılacak oturum anahtarını üretmek amacıyla, istemci bir rastgele sayıyı sunucunun açık anahtarını (public key) kullanarak şifreler ve elde edilen şifrelenmiş mesajı sunucuya gönderir. Bu şifreli mesajı, sadece sunucu özel anahtarını(private key) kullanarak çözebilmektedir.
* İki tarafta rastgele sayıdan bir esas anahtar(master key) oluşturur ve daha sonra şifreleme ve şifre çözme için bir oturum anahtarı üzerinde anlaşırlar.
El sıkışması artık sonra ermiş ve güvenli bağlantı açılmıştır. İstemci ve sunucu birbirlerine gönderdikleri verileri şifrelemek, şifreli verileri çözmek ve bütünlüğünü tasdik etmek için oturum anahtarlarını kullanırlar.
 
Eğer yukarıdaki adımlardan birisi başarısız olursa, TLS el sıkışması başarısız olur ve bağlantı oluşturulamaz.
 
=== Tarihçesi ve Gelişimi ===
 
==== SSL 1.0, 2.0 ve 3.0 ====
Özgün SSL protokolü Netscape tarafından geliştirilmiştir.<ref>{{web kaynağı|başlık=THE SSL PROTOCOL|url=https://web.archive.org/web/19970614020952/http://home.netscape.com/newsref/std/SSL.html|website=https://web.archive.org|erişimtarihi=10.4.2016}}</ref> Versiyon 1.0, ciddi güvenlik kusurlarından dolayı hiç bir zaman piyasaya sürülmemiştir. Versiyon 2.0 ise Şubat 1995'de piyasaya sürülmüştür. SSL 3.0, protokolün yeniden tasarımını temsil etmektedir<ref>{{kitap kaynağı|başlık=Rescorla 2001}}</ref>. Paul Kocher ve Netscape mühendislerinden Phil Karlton ve Alan Freier tarafından 1996 yılında yayınlanmıştır. SSL protokolünün yeni versiyonlarında, SSL 3.0 temel alınmıştır. 1996 yılında IETF tarafından SSL 3.0 tasarısı yayınlanmıştır.
 
1995 ve 1998 yılları arasında Netscape İletişimde başmühendis olan Dr. Taher Elgamal, "SSL'in babası(father of SSL)" olarak tanınmıştır.<ref>{{web kaynağı|başlık=Father of SSL, Dr. Taher Elgamal, finds fast-moving IT projects in the Middle East|url=http://www.networkworld.com/article/2161851/security/father-of-ssl--dr--taher-elgamal--finds-fast-moving-it-projects-in-the-middle-east.html|erişimtarihi=10.4.2016}}</ref><ref>{{web kaynağı|başlık=Father of SSL says despite attacks, the security linchpin has lots of life left|url=http://www.networkworld.com/article/2181968/security/father-of-ssl-says-despite-attacks--the-security-linchpin-has-lots-of-life-left.html|erişimtarihi=10.4.2016}}</ref>
 
SSL'deki tüm blok şifrelemelerini etkileyen POODLE saldırısına açık olduğu için, SSL 3.0 versiyonunun 2014 yılından itibaren güvensiz olduğu anlaşılmıştır.<ref>{{web kaynağı|başlık=POODLE: SSLv3 vulnerability (CVE-2014-3566)|url=https://access.redhat.com/articles/1232123|erişimtarihi=10.4.2016}}</ref> SSL 3.0 tarafından blok olmayan şifreleme algoritmalarından yalnızca RC4 desteklenmektedir. Ancak muhtemel bir şekilde bu algoritmada kırılabilmektedir.
 
==== TLS 1.0 ====
<nowiki>TLS 1.0, ilk olarak Ocak 1999'da RFC 2246'da tanımlanmıştır ve SSL 3.0 versiyonunun geliştirilmiş halidir.</nowiki><ref>{{web kaynağı|başlık=Guidelines for the Selection, Configuration, and Use of Transport Layer Security (TLS) Implementations|url=http://nvlpubs.nist.gov/nistpubs/SpecialPublications/NIST.SP.800-52r1.pdf|erişimtarihi=10.4.2016}}</ref>
 
==== TLS 1.1 ====
<nowiki>TLS 1.1, Nisan 2006'da RFC 4346'da tanımlanmıştır. TLS 1.0 versiyonunun güncellenmiş halidir. Bu versiyonlar arasındaki önemli değişiklikler şu şekildedir:</nowiki><ref>{{web kaynağı|başlık=The Transport Layer Security (TLS) Protocol Version 1.1, RFC 4346|url=https://tools.ietf.org/html/rfc5246#ref-TLS1.1|erişimtarihi=10.4.2016}}</ref>
* Şifreli blok zincirlemesi (CBC) saldırılarına karşı koruma eklenmiştir.
* Gizli tutulan başlangıç vektörü (IV) açık bir şekilde tutulur.
* Padding hatalarını düzeltmede değişiklikler olmuştur.
 
==== TLS 1.2 ====
<nowiki>TLS 1.2, Ağustos 2008'de RFC 5246'da tanımlanmıştır. TLS 1.1 spesifikasyonları esas alınmıştır. Başlıca farklılıklar şu şekildedir:</nowiki>
* Sözde rastgele fonksiyonundaki MD5-SHA1 kombinasyonu SHA-256 ile değiştirilmiştir.
* Tamamlanmış mesaj özetindeki MD5-SHA1 kombinasyonu SHA-256 ile değiştirilmiştir. Bununla birlikte tamamlanmış mesaj uzunluğu hala 96 bit olarak kesilmiştir.
* Dijital olarak imzalanmış elemanda MD5-SHA1 kombinasyonu el sıkışması boyunca SHA1 ile değiştirilmiştir.
* İstemci ve sunucu hangi özet ve imzalama algoritmasını kullanacağına karar verebilmektedir.
* TLS uzantılarının tanımları ve Gelişmiş Şifreleme Standardının(AES) şifreleme parçaları eklenmiştir.
<nowiki>Tüm TLS versiyonları, Mart 2011'de RFC 6176'da düzeltilmiştir. SSL ile geçmişe yönelik uyumluluk özelliği kaldırılmıştır. Öyle ki, TLS oturumları hiç bir zaman SSL 2.0 versiyon kullanımını kabul etmeyecektir.</nowiki>
 
==== TLS 1.3(tasarı) ====
Mart 2015 tarihinden itibaren TLS 1.3 bir tasarıdır ve detayları henüz yayınlanmamıştır.<ref>{{web kaynağı|başlık=draft-ietf-tls-tls13-11 - The Transport Layer Security (TLS) Protocol Version 1.3|url=https://tools.ietf.org/html/draft-ietf-tls-tls13-11|erişimtarihi=10.3.2016}}</ref><ref>{{web kaynağı|başlık=The Transport Layer Security (TLS) Protocol Version 1.3|url=https://tlswg.github.io/tls13-spec/|erişimtarihi=10.3.2016}}</ref> Önceki TLS 1.1 ve TLS 1.2 spesifikasyonları esas alınmıştır. TLS 1.2'den başlıca farkları şu şekildedir:
* 1-RTT modu sağlamak için el sıkışması tekrar çalışır.
* RSA ve Diffie-Hellman anahtar değişimi için destek kaldırılmıştır.
* AD girdiden AEAD(Authenticated-Encryption with Associated-Data) şifrelemeye kadar gereksiz uzunluk alanı kaldırılmıştır.
* AEAD olmayan şifrelemeler için destek kaldırılmıştır.
* Veri sıkıştırması için destek kaldırılmıştır.
* {İstemci,Sunucu}AnahtarDeğişimi, {İstemci,Sunucu}AnahtarPaylaşımı olarak yeniden adlandırılmıştır.
* Geçmişe yönelik uyumluluk için SSL anlaşmaları yasaklandı.
* Tekrar anlaşma kaldırıldı.
* İçerikle birlikte imzalama formatı güncellendi.
* Oturum özetini katmak için anahtar hesaplaması değiştirilmiştir.
 
=== Sayısal Sertifikalar ===
Sayısal sertifika, açık anahtar sahibini onaylar ve bu, diğerlerinin onaylanmış açık anahtara karşılık gelen özel anahtar ile yapılan imzalara veya bildirimlere güvenmesini sağlamaktadır.
 
==== Sertifika Yöneticileri ====
Güven ilişkisinin bu modelinde, sertifika yöneticisi güvenilir üçüncü şahıstır(Trusted Third Party). Sertifika sahipleri ve sertifika doğrulama kullanıcıları tarafından güvenilir.
 
Şubat 2015'deki W3Techs araştırması sonuçları şu şekildedir:
 
{| class="wikitable"
|-
 
! Sıralama!! Sertifika veren!! Kullanım!!Pazar payı
|-
|1.|| Comodo || 6.6% || 33.6%
|-
|2.|| Symantec Group || 6.5%|| 33.2%
|-
|3.|| Go Daddy Group ||2.6%|| 13.2%
|-
|4.|| GlobalSign || 2.2%|| 11.3%
|-
|5.|| DigiCert || 0.6% || 2.9%
|}
=== Algoritma ===
 
==== Anahtar değişimi ve anahtar anlaşması ====
İstemci ve sunucu TLS tarafından korunan bilgilerin değişimine başlamadan önce, verileri şifreleme için kullanılacak şifreleme algoritması ve şifreleme anahtarı üzerinde anlaşmaları gerekmektedir. Anahtar değişimi için kullanılan metotlar şu şekildedir: açık ve gizli anahtarlar RSA(TLS el sıkışma protokolünde TLS_RSA olarak ifade edilir), Diffie-Hellman(TLS_DH), ephemeral Diffie-Hellman(TLS_DHE), Eliptik Eğri Diffie-Hellman(Elliptic Curve Diffie-Hellman / TLS_ECDH), ephemeral Elliptic Curve Diffie-Hellman(TLS_ECDHE), isimsiz Diffie-Hellman(anonymous Diffie-Hellman / TLS_DH_anon), önceden paylaştırılan anahtar (TLS_PSK)<ref>{{web kaynağı|başlık=Pre-Shared Key Ciphersuites for Transport Layer Security (TLS)|url=https://tools.ietf.org/html/rfc4279}}</ref> ve Secure Remote Password(TLS_SRP)<ref>{{web kaynağı|başlık=Using the Secure Remote Password (SRP) Protocol for TLS Authentication|url=https://tools.ietf.org/html/rfc5054}}</ref> ile oluşturulur.
 
TLS_DH_anon ve TLS_ECDH_anon anahtar değişim metotları sunucu veya kullanıcının kimliğini doğrulamaz. Aynı zamanda, ortadaki adam (MitM) saldırısına açık olduğu için nadiren kullanılmaktadır. Sadece TLS_DHE ve TLS_ECDHE iletme gizliliği sağlar.
 
Açık anahtar sertifikaları değişim boyunca kullanılır ve aynı zamanda değişim boyunca kullanılan açık ve gizli anahtarların boyutuna göre çeşitlilik gösterir. Bundan dolayı güvenliğin dayanıklılığı sağlanmış olur. Temmuz 2013 yılında, Google artık 1024 bitlik açık anahtarları kullanmak yerine 2048 bit anahtarlara geçerek kullanıcılarına sunduğu TLS şifreleme güvenliğini artırdığını duyurmuştur.<ref>{{web kaynağı|başlık=Google updates SSL certificates to 2048-bit encryption|url=http://www.computing.co.uk/ctg/news/2285984/google-updates-ssl-certificates-to-2048bit-encryption|erişimtarihi=10.4.2016}}</ref>
 
{| class="wikitable" style="text-align:center"
|+ Kimlik Doğrulama ve Anahtar değişimi
! Algoritma !! SSL 2.0 !! SSL 3.0 !! TLS 1.0 !! TLS 1.1 !! TLS 1.2 !! Statü
|-
|RSA||{{Evet}} || {{Evet}} || {{Evet}} || {{Evet}} || {{Evet}} || rowspan="19"| RFC dökümanlarında TLS 1.2 için tanımlanmıştır.
|-
|DH-RSA|| rowspan="2" ! {{Hayır}}
| rowspan="2" ! {{Evet}}
| rowspan="2" ! {{Evet}}
| rowspan="2" ! {{Evet}}
| rowspan="2" ! {{Evet}}
|-
|DHE-RSA
|-
|ECDH-RSA|| rowspan="2" ! {{Hayır}}
| rowspan="2" ! {{Hayır}}
| rowspan="2" ! {{Evet}}
| rowspan="2" ! {{Evet}}
| rowspan="2" ! {{Evet}}
|-
|ECDHE-RSA
|-
|DH-DSS||rowspan="2" ! {{Hayır}}
| rowspan="2" ! {{Evet}}
| rowspan="2" ! {{Evet}}
| rowspan="2" ! {{Evet}}
| rowspan="2" ! {{Evet}}
|-
|DHE-DSS
|-
|ECDH-ECDSA|| rowspan="2" ! {{Hayır}}
| rowspan="2" ! {{Hayır}}
| rowspan="2" ! {{Evet}}
| rowspan="2" ! {{Evet}}
| rowspan="2" ! {{Evet}}
|-
|ECDHE-ECDSA
|-
|TLS-PSK || rowspan="4" ! {{Hayır}}
| rowspan="4" ! {{Hayır}}
| rowspan="4" ! {{Evet}}
| rowspan="4" ! {{Evet}}
| rowspan="4" ! {{Evet}}
|-
|PSK-RSA
|-
|DHE-PSK
|-
|ECDHE-PSK
|-
|SRP|| rowspan="3" ! {{Hayır}}
| rowspan="3" ! {{Hayır}}
| rowspan="3" ! {{Evet}}
| rowspan="3" ! {{Evet}}
| rowspan="3" ! {{Evet}}
|-
|SRP-DSS
|-
|SRP-RSA
|-
|Kerberos|| {{Hayır}}
| {{Hayır}}
| {{Evet}}
| {{Evet}}
| {{Evet}}
|-
|DH-ANON || {{Hayır}} || {{Hayır}} || {{Evet}} || {{Evet}} || {{Evet}}
|-
|ECDH-ANON|| {{Hayır}} || {{Hayır}} || {{Evet}} || {{Evet}} || {{Evet}}
|-
|GOST R 34.10-94 / 34.10-2001<ref>{{web kaynağı|başlık=OST 28147-89 Cipher Suites for Transport Layer Security (TLS) draft-chudov-cryptopro-cptls-04|url=https://tools.ietf.org/html/draft-chudov-cryptopro-cptls-04|erişimtarihi=10.4.2016}}</ref> || {{Hayır}}
| {{Hayır}}
| {{Evet}}
| {{Evet}}
| {{Evet}}
| RFC tasarılarında önerilmiştir.
|}
==== Şifreleme ====
{| class="wikitable" style="text-align:center"
|+'''Bilinen uygulanabilir saldırılara karşı şifreleme güvenliği '''
|-
! colspan="3"|Cipher !! colspan="5"|Protocol version !! rowspan="2"|Status
|-
! Type
! Algorithm
! Strength (bits)
! SSL 2.0
! SSL 3.0<br /><ref group="n" name="rfc5746">RFC 5746, tekrar anlaşma kusurunu düzeltebilmek için uygulanmıştır. Aksi takdirde protokol kırılabilir.</ref><ref group="n" name="renegotiation">Kütüphaneler RFC 5746'daki listelenmiş düzeltmeleri uygularsa bu, SSL 3.0'daki spesifikasyonları çiğnemiş olur.</ref><ref group="n" name="BEAST">İstemci veya sunucu tarafından hafifletilmezse BEAST saldırısı SSL 3.0 ve TLS 1.0'da kullanılan bütün blok şifrelemeleri kırabilir.</ref><ref group="n" name="POODLEciphertable">İstemci veya sunucu tarafından hafifletilmezse POODLE saldırısı SSL 3.0'da kullanılan bütün blok şifrelemeleri kırabilir.</ref>
! TLS 1.0<br /><ref group="n" name="rfc5746"/><ref group="n" name="BEAST"/>
! TLS 1.1<br /><ref group="n" name="rfc5746"/>
! TLS 1.2<br /><ref group="n" name="rfc5746"/>
|-
! rowspan="14"|Block cipher mode of operation
|AES GCM<ref group="n" name="aead">AEAD şifreleme sadece TLS 1.2'de kullanılmaktadır.</ref>
| rowspan="3"| 256, 128
| {{N/a}} || {{N/a}} || {{N/a}} || {{N/a}} || Secure || rowspan="9"| Defined for TLS 1.2 in RFCs
|-
|AES CCM<ref group="n" name="aead"/>
| {{N/a}} || {{N/a}} || {{N/a}} || {{N/a}} || Secure
|-
|AES CBC<ref group="n" name="Lucky13"/>
| {{N/a}} || {{N/a}} || Depends on mitigations || Secure || Secure
|-
|Camellia GCM<ref group="n" name="aead"/>
| rowspan="2"| 256, 128
| {{N/a}} || {{N/a}} || {{N/a}} || {{N/a}} || Secure
|-
|Camellia CBC<ref group="n" name="Lucky13"/>
| {{N/a}} || {{N/a}} || Depends on mitigations || Secure || Secure
|-
|ARIA GCM<ref group="n" name="aead"/>
| rowspan="2"| 256, 128
| {{N/a}} || {{N/a}} || {{N/a}} || {{N/a}} || Secure
|-
|ARIA CBC<ref group="n" name="Lucky13"/>
| {{N/a}} || {{N/a}} || Depends on mitigations || Secure || Secure
|-
|SEED CBC<ref group="n" name="Lucky13"/>
| 128
| {{N/a}} || {{N/a}} || Depends on mitigations || Secure || Secure
|-
|3DES EDE CBC<ref group="n" name="Lucky13">Eğer kütüphane dikkatlice yazılmazsa, CBC şifreleme Lucky 13 saldırısına maruz kalabilir.</ref>
| 112{{refn|group="n"|name="3des"|3DES anahtar uzunluğu 168 bit olmasına rağmen 3DES'in geçerli güvenlik dayanıklılığı sadece 112 bittir.}}
| Insecure || Insecure || Low strength, Depends on mitigations || Low strength || Low strength
|-
|GOST 28147-89 CNT|| 256
| {{N/a}} || {{N/a}} || Secure || Secure || Secure || Proposed in RFC drafts
|-
|IDEA CBC<ref group="n" name="Lucky13"/>{{refn|group="n"|name="removal_from_tls1.2"|IDEA ve DES, TLS 1.2'den kaldırılmıştır.}}
| 128
| Insecure || Insecure || Depends on mitigations || Secure || {{N/a}} || rowspan="2"| Removed from TLS 1.2
|-
!rowspan="2"|DES CBC<ref group="n" name="Lucky13"/><ref group="n" name="removal_from_tls1.2"/>
| {{0}}56
| Insecure || Insecure || Insecure || Insecure || {{N/a}}
|-
| {{0}}40
| Insecure || Insecure || Insecure || {{N/a}} || {{N/a}} || rowspan="2"| Forbidden in TLS 1.1 and later
|-
|RC2 CBC<ref group="n" name="Lucky13"/>
| {{0}}40
| Insecure || Insecure || Insecure || {{N/a}} || {{N/a}}
|-
! rowspan="3"|Stream cipher
|ChaCha20-Poly1305<ref group="n" name="aead"/>
| 256
| {{N/a}} || {{N/a}} || {{N/a}} || {{N/a}} || Secure || Proposed in RFC drafts
|-
!rowspan="2"| RC4<ref group="n" name="RC4">Tüm TLS versiyonlarında RC4 kullanımı RFC 7465 tarafından yasaklanmıştır.</ref>
| 128
| Insecure || Insecure || Insecure || Insecure || Insecure || rowspan="2"| Prohibited in all versions of TLS
|-
| {{0}}40
| Insecure || Insecure || Insecure || {{N/a}} || {{N/a}}
|-
! None
! Null<ref group="n">Şifreleme yoktur, yalnızca kimlik doğrulaması vardır.</ref>
| -
| {{N/a}} || Insecure || Insecure || Insecure || Insecure || Defined for TLS 1.2 in RFCs
|}
;Notlar
{{reflist|group="n"}}
 
==== Veri bütünlüğü ====
Veri bütünlüğü için mesaj kimlik doğrulama kodu kullanılır. Blok şifrelemenin CBC modu ve dizi şifreleme için HMAC kullanılır. GCM ve CCM mod gibi doğrulanmış şifreleme için AEAD kullanılır.
 
{| class="wikitable" style="text-align:center"
|+ Veri Bütünlüğü
! Algoritma !! SSL 2.0 !! SSL 3.0 !! TLS 1.0 !! TLS 1.1 !! TLS 1.2 !! Statü
|-
|HMAC-MD5
| {{Evet}} || {{Evet}} || {{Evet}} || {{Evet}} || {{Evet}} || rowspan="4" | RFC dökümanlarında TLS 1.2 için tanımlanmıştır.
|-
|HMAC-SHA1
| {{Hayır}} || {{Evet}} || {{Evet}} || {{Evet}} || {{Evet}}
|-
|HMAC-SHA256/384
| {{Hayır}} || {{Hayır}} || {{Hayır}} || {{Hayır}} || {{Evet}}
|-
|AEAD
| {{Hayır}} || {{Hayır}} || {{Hayır}} || {{Hayır}} || {{Evet}}
|-
|GOST 28147-89 IMIT
| {{Hayır}} || {{Hayır}} || {{Evet}} || {{Evet}} || {{Evet}} || rowspan="2" | RFC tasarılarında önerilmiştir.
|-
|GOST R 34.11-94
| {{Hayır}} || {{Hayır}} || {{Evet}} || {{Evet}} || {{Evet}}
|}
=== Uygulamalar ===
Uygulamalarının dizayn aşamasında, TLS genelde herhangi bir taşıma katmanın - örneğin TCP,UDP- üzerinde geliştirilirken uygulamanın belirli protokollerini -örneğin HTTP,FTP,NNTP ve XMPP-  enkapsüle eder. Tarihsel açıdan, TLS öncelikli olarak güvenilir taşıma protokolleri -örneğin TCP- tercih edilirdi. Buna rağmen datagram tabanlı taşıma protokolleri kullanılarak da geliştirilmiştir -örneğin UDP ve Datagram Congestion Control Protocol (DCCP)-. Bu uygulama sonradan Datagram Transport Layer Security (DTLS) adı altında standartlandırılmıştır. 
 
==== Web Siteleri ====
TLS’in öne çıkan kullanımı, internette web sayfası ve tarayıcı arasında oluşturulan trafiği HTTP formundan HTTPS formuna sokarak güvence altına almasıdır. Kayda değer uygulamaları e-ticaret ve varlık yönetimidir.
{| class="wikitable"
|+'''Web sayfası protokol desteği'''
!'''Protokol<br>
versiyonu'''
!'''Web sayfası<br>
desteği'''<sup> [34]</sup>
!'''Güvenlik'''<sup>[34][35]</sup>
|-
|'''SSL 2.0'''
|13.2% (−0.8%)
|Insecure
|-
|'''SSL 3.0'''
|42.3% (−3.2%)
|Insecure<sup>[36]</sup>
|-
|'''TLS 1.0'''
|99.7% (±0.0%)
|Depends on cipher<sup>[n 1]</sup> and client mitigations<sup>[n 2]</sup>
|-
|'''TLS 1.1'''
|55.2% (+2.2%)
|Depends on cipher<sup>[n 1]</sup> and client mitigations<sup>[n 2]</sup>
|-
|'''TLS 1.2'''
|58.1% (+2.1%)
|Depends on cipher<sup>[n 1]</sup> and client mitigations<sup>[n 2]</sup>
|}
 
==== Web Tarayıcıları ====
Şubat 2015 itibariyle, başlıca web tarayıcılarının son versiyonları TLS 1.0, 1.1 ve 1.2 desteklemekte ve bunları varsayılan olarak aktif olarak sunmaktadır. Buna rağmen, bazı tarayıcıların eski versiyonlarında bu konuda problemlerle karşılaşılmaktadır.<ref>{{web kaynağı|başlık=HTTP VS HTTPS|url=https://www.instantssl.com/ssl-certificate-products/https.html}}</ref>
* · TLS 1.1 ve 1.2 desteklenmesine rağmen varsayılan olarak Internet Explorer (8–10 for Windows 7 / Server 2008 R2, 10 for Windows 8 / Server 2012, IE Mobile 10 for Windows Phone 8) versiyonlarında devre dışı olarak bulunmaktadır.
 
* ·  TLS 1.1 ve 1.2 desteklenmesine rağmen varsayılan olarak Internet Explorer (6-8 for Windows Server 2003, 7–9 for Windows Vista / Server 2008), Safari 6 for Mac OS X 10.8 versiyonlarında devre dışı olarak bulunmaktadır.
 
==== Kütüphaneler ====
En çok kullanılan açık kaynak SSL and TLS programlama kütüphanleri:
* [[:en:Botan_(programming_library)|Botan]], a BSD lisanslı C++ tabanlı kriptografik kütüphane.
* [[:en:Cryptlib|cryptlib]]: Portatif açık kaynak kriptografi kütüphanesi (TLS/SSL uygulaması içerir)
* [[:en:Delphi_(programming_language)|Delphi]] programcıları, [[:en:OpenSSL|OpenSSL]] den yararlanılarak oluşturulan [[:en:Internet_Direct|Indy]] kütüphanesini kullanabilir
* [[:en:GnuTLS|GnuTLS]]: Kullanıma açık olan uygulama (LGPL lisanslı)
* [[:en:Java_Secure_Socket_Extension|Java Secure Socket Extension]]:Java 7'den itibaren Java Runtime Environment, TLS 1.1 and 1.2 desteklemesine rağmen kullanıcı için devre dışı olarak bulunmasına karşın sunucu tarafında aktif olarak bulunmaktadır. Java 8'den itibaren hem kullanıcı hem de sunucu için varsayılan olarak aktif bulunmaktadır.
* [[:en:LibreSSL|LibreSSL]]: a fork of OpenSSL by OpenBSD project.
* [[:en:MatrixSSL|MatrixSSL]]: Duble lisanslanmış uygulama
* [[:en:Mbed_TLS|mbed TLS]] (previously PolarSSL): Gömülü sistemlerde kullanabilmesi için oluşturulmuş küçük bir SSL kütüphanesi
* [[:en:Network_Security_Services|Network Security Services]]: [[:en:FIPS_140|FIPS 140]] tarafından onaylanmış açık kaynak kütüphanesi
* [[:en:OpenSSL|OpenSSL]]: Kullanımı serbest olan bir uygulama (bazı eklemeli BSD lisanslı)
* [[:en:Security_Support_Provider_Interface|SChannel]]: Microsoft Windows sistemlerin SSL ve TLS paketini oluşturan uygulama
* [[:en:Comparison_of_TLS_implementations|Secure Transport]]: OS X ve iOS sistemlerin SSL ve TLS paketini oluşturan uygulama
* [[:en:WolfSSL|wolfSSL]] (previously CyaSSL): Özellikle hıza ve büyüklüğe önem vermiş gömülü SSL/TLS kütüphanesi
 
==== Diğer kullanımları ====
Elektronik posta gönderme protokolünde ('''S'''imple '''M'''ail '''T'''ransfer '''P'''rotocol) de TLS aracılıyla korunma sağlanabilir. Bu uygulamalar, dijital sertifika kullanarak son noktaların birbirlerini doğrulaması sağlanmaktadır.
 
Ayrıca TLS kullanılarak bütün ağ, tünellenerek [[:en:Virtual_private_network|VPN]] oluşturulabilinir -örneğin [[:en:OpenVPN|OpenVPN]] ve [[:en:OpenConnect|OpenConnect]]. Birçok satıcı artık TLS'in şifreleme ve kimlik doğrulama özelliklerinden yararlanmaktadır. Bunun yanı sıra 90ların sonundan itibaren web tarayıcıları dışında da kullanıcı bazlı kullanıcı/sunucu uygulamalarında azımsanmayacak derece gelişme göstermiştir. Geleneksel [[:en:IPsec|IPsec]] VPN teknolojisiyle kıyaslandığında, TLS'in özünden gelen, güvenlik duvarlarına ve [[:en:Network_address_translation|NAT]] teknolojisine faydaları bulunmaktadır, özellikle de geniş uzaktan kontrol gerektiren ağ hizmetlerini daha kolay haline getirmektedir.
 
Bunların dışında TLS, '''[[:en:Session_Initiation_Protocol|Session Initiation Protocol]]''' ('''SIP''')(''Oturum Başlatma Protokolü'') uygulamasında korunma açısından standart bir metodudur. Ayrıca TLS, VoIP ve diğer SIP tabanlı uygulamalar ile birlikte SIP sinyalizasyonunda kimlik doğrulama ve şifreleme sağlamak için kullanılabilir.
 
=== Güvenlik ===
 
==== SSL 2.0 ====
SSL 2.0 birçok açıdan kusurlu bulunmaktadır:<ref>{{web kaynağı|başlık=n the Security of Today’s Online Electronic Banking Systems|url=http://www.sciencedirect.com/science/article/pii/S0167404802003127|erişimtarihi=10.4.2016}}</ref>
* Özdeş şifreleme anahtarları mesaj kimlik doğrulama ve şifreleme için kullanılmaktadır.
* SSL 2.0 uzunluk uzatma saldırılarına karşı savunmasız hale getirebilecek, gizli önek ile MD5 hash fonksiyonu kullanan bir zayıf MAC yapıya sahiptir.
* SSL 2.0'da el sıkışma sırasında herhangi bir güvenlik uygulanmamaktadır, diğer bir deyişle ortadaki adam saldırıları tespit edilememektedir.
* SSL 2.0 veri sonunu belirtmek için TCP bağlantısı sonunu kullanır. Bu yüzden iletişim esnasında kesme saldırıları mümkün olmaktadır.
* SSL 2.0, tek bir hizmet ve web sunucuların tek bir sertifikaları olduğunu varsayarak aslında sanal barındırma([[Virtual hosting|virtual hosting]]) standart özelliği ile çalışan web sunucuları ile ters düşmektedir. Buda çoğu web sitelerini, SSL kullanma konusunda engelli konumunda bırakır.
 
==== SSL 3.0 ====
SSL 2.0 protokolüne SHA-1 tabanlı şifreler ve sertifika doğrulaması desteği eklenerek oluşturulmuştur.
 
SSL 3.0 şifre suitlerinde, zayıf anahtar üretme süreci bulunmaktadır; master anahtarın yarısı tamamen [[:en:MD5|MD5]] hash fonksiyonuna bağlı olarak üretilmektedir. Diğer tarafta ise TLS 1.0 protokolünde master anahtar hem MD5 hemde SHA-1 algoritmalarıyla üretilmektedir. Bu üretim süreci şimdilik zayıf olarak görülmemektedir.
 
Ekim 2014'te, SSL 3.0 tasarımında kritik bir açıklık rapor edilmiştir. Bu açıklık, [[:en:Block_cipher_mode_of_operation#Electronic_Codebook_.28ECB.29|CBC]] işleminde padding saldırılarına karşı savunmasız olmasından kaynaklanmaktadır([[:en:POODLE|POODLE saldırısı]]).
 
==== TLS ====
TLS'de çeşitli güvenlik önlemleri bulunmaktadır:
* Zayıf şifre protokolüne sahip önceki versiyonuna düşürülmesine karşı koruma (downgrade of the protocol)
* Ardışık olarak oluşturan paketleri sıra numaralarıyla etiketleyip bu numaraları da mesaj doğrulama kodlarında ([[Mesaj Doğrulama Kodu|MAC]]) kullanmaktadır.
* Bağlantı sonlandırma işleminde iki tarafta karşılıklı olarak ("Finished") mesajının hashini yollayarak dışarıdan bağlantı sonlandırma saldırılarına karşı önlem alınmıştır.
* Sözde rasgelelik fonksiyonunda, gelen vereyi ikiye ayırarak bunları farklı hash fonksiyonlarıyla (MD5 vs SHA-1) hashlerini oluşturduktan sonra bu iki veriyi XORlayarak mesaj doğrulamak kodunu oluşturmaktadır.
 
==== Üçlü DES CBC'den kaçınma ====
Bazı uzmanlar, [[:en:Triple_DES|Triple-DES]] CBC kullanılmasından kaçınılmasını tavsiye etmektedir. Son desteklenen şifreleme algoritmaları, birçok program Windows XP'nin SSL/TLS kütüphanelerini kullandıkları için, bu kütüphanelere uygun olarak geliştirilmektedir.
 
==== Ortadaki adam(MitM) saldırısı ile ilişkisi ====
Ana makale için: '''[[Man-in-the-middle attack|Aradaki adam saldırısı]]'''
 
===== İğnelenmiş Dijital Sertifika =====
Aradaki adam saldırısını engelleme yöntemlerinden biri, dijital sertifikayı iğnelemektir. Bu yöntem iki türlü gerçekleştirilmektedir. Bunlardan ilki, ilk bağlantı esnasında web sitesinden alınan sertifikayı o sitenin gerçek sertifikası olarak kabul edip bundan sonraki bağlantılar sırasında web sitesinden alınan ilk alınan sertifikayla kıyaslayarak devam etme yöntemidir. Diğer yöntem ise Google firması, Chrome'da *.google.com domainleri için kullandığı sertifikayı gömülü olarak bulundurmaktadır. Bu sayede herhangi birisi google.com adresi için aradaki adam saldırısı gerçekleştirmeye çalıştığında, Chrome bunu otomatik olarak kendisininde gömülü olarak bulunan sertifikayla kıyaslayarak hata vermektedir.
 
===== DNSChain =====
DNSChain'deki güvenlik, "blok zincirleri" açık anahtarlarının dağıtımına dayanmaktadır. Belirli bir DNSChain sunucusuna güvenli bir kanal açıldıktıktan sonra diğer tüm açık anahtarlar bu kanal üzerinden iletilmektedir.
 
=== Ayrıca bakınız ===
* [https://en.wikipedia.org/wiki/Bullrun_(decryption_program) Bullrun (decryption program)]
* [https://en.wikipedia.org/wiki/Key_ring_file Key ring file]
* [https://en.wikipedia.org/wiki/Multiplexed_Transport_Layer_Security Multiplexed Transport Layer Security]
* [https://en.wikipedia.org/wiki/Application-Layer_Protocol_Negotiation Application-Layer Protocol Negotiation]
* [https://en.wikipedia.org/wiki/Obfuscated_TCP Obfuscated TCP]
* [https://en.wikipedia.org/wiki/RdRand RdRand]
* [https://en.wikipedia.org/wiki/Server-Gated_Cryptography Server gated cryptography]
* [https://en.wikipedia.org/wiki/SSL_acceleration SSL acceleration]
* [https://en.wikipedia.org/wiki/tcpcrypt tcpcrypt]
* [https://en.wikipedia.org/wiki/Transport_Layer_Security_Channel_ID Transport Layer Security Channel ID]
* [https://en.wikipedia.org/wiki/Wireless_Transport_Layer_Security Wireless Transport Layer Security]
 
=== Daha fazla bilgi ===
* {{cite conference|first=David|last=Wagner|author2=Schneier, Bruce |title=Analysis of the SSL 3.0 Protocol|booktitle=The Second USENIX Workshop on Electronic Commerce Proceedings|publisher=USENIX Press|date=November 1996|pages=29–40|url=//www.schneier.com/paper-ssl.pdf}}
* {{cite book|author=Eric Rescorla|title=SSL and TLS: Designing and Building Secure Systems|publisher=Addison-Wesley Pub Co|location=United States|year=2001|isbn=0-201-61598-3}}
* {{cite book|author=Stephen A. Thomas|title=SSL and TLS essentials securing the Web|publisher=Wiley|location=New York|year=2000|isbn=0-471-38354-6}}
* {{cite journal|title=A Challenging But Feasible Blockwise-Adaptive Chosen-Plaintext Attack On Ssl|journal=International Association for Cryptologic Research|year=2006|first= Gregory|last=Bard|volume=|issue=136|pages=|id= |url=//eprint.iacr.org/2006/136|accessdate=2011-09-23}}
* {{cite web|url=http://lasecwww.epfl.ch/memo/memo_ssl.shtml |title=Password Interception in a SSL/TLS Channel |accessdate=2007-04-20 |last=Canvel |first=Brice}}
* {{cite web|url=//tools.ietf.org/html/rfc5746 |title=RFC of change for TLS Renegotiation |accessdate=2009-12-11 |last=IETF Multiple Authors}}
* [http://www.linuxjournal.com/article/9916 Creating VPNs with IPsec and SSL/TLS] Linux Journal article by Rami Rosen
*{{cite web
|url=http://nvlpubs.nist.gov/nistpubs/SpecialPublications/NIST.SP.800-52r1.pdf
|title=Guidelines for the Selection, Configuration, and Use of Transport Layer Security (TLS) Implementations
|author= Polk, Tim; McKay, Kerry; Chokhani, Santosh
|date=April 2014
|format=
|publisher=National Institute of Standards and Technology
|pages=
|archiveurl= |archivedate=
|accessdate=2014-05-07
}}
=== Dış Bağlantılar ===
{{commons category|SSL and TLS}}
'''Spesifikasyonlar'''
* [//tools.ietf.org/html/rfc5246 RFC 5246 - The Transport Layer Security (TLS) Protocol Version 1.2]
* [https://datatracker.ietf.org/wg/tls/ IETF (Internet Engineering Task Force) TLS Workgroup]
;Diğerleri
* [https://owasp.org/index.php?title=Transport_Layer_Protection_Cheat_Sheet OWASP: Transport Layer Protection Cheat Sheet]
* [https://computing.ece.vt.edu/~jkh/Understanding_SSL_TLS.pdf A talk on SSL/TLS that tries to explain things in terms that people might understand.]
* [https://www.cisco.com/web/about/ac123/ac147/archived_issues/ipj_1-1/ssl.html SSL: Foundation for Web Security]
* [https://tools.ietf.org/agenda/76/slides/tls-7.pdf TLS Renegotiation Vulnerability – IETF Tools]
* [https://www.trustworthyinternet.org/ssl-pulse/ Trustworthy Internet Movement – SSL Pulse] – Survey of TLS/SSL implementation of the most popular web sites
* [http://www.sslcentral.com/how-to-generate-csr/ How to Generate CSR for SSL]
{{DEFAULTSORT:Taşıma Katmanı Güvenliğ}}
== Dış bağlantılar ==
* [http://www.openssl.org/ OpenSSL Project]