Apa perbedaan tingkat protokol persis antara SSL dan TLS?

40

Ini adalah penyelaman mendalam teknis setelah pertanyaan ikhtisar ini diajukan.

Apa perbedaan protokol antara SSL dan TLS?
Apakah benar-benar ada cukup perbedaan untuk menjamin perubahan nama? (dibandingkan menyebutnya "SSLv4" atau SSLv5 untuk versi TLS yang lebih baru)

goodguys_activate
sumber
3
Saya menduga jika Anda ingin pemahaman yang sangat mendalam, Anda harus mulai membaca spesifikasi. Lihat halaman wiki . Ini termasuk tautan ke RFC dan spesifikasi.
Zoredache
7
@Zoredache, tolong jangan gunakan "wiki" sebagai kependekan dari "Wikipedia".
Spiff

Jawaban:

36

SSLv2 dan SSLv3 sama sekali berbeda (dan keduanya sekarang dianggap tidak aman). SSLv3 dan TLSv1.0 sangat mirip, tetapi memiliki beberapa perbedaan.

Anda dapat mempertimbangkan TLSv1.0 sebagai SSLv3.1 (sebenarnya itulah yang terjadi dalam catatan yang dipertukarkan). Lebih mudah untuk membandingkan TLSv1.0 dengan TLSv1.1 dan TLSv1.2 karena semuanya telah diedit dalam IETF dan mengikuti lebih kurang struktur yang sama. SSLv3 sedang diedit oleh lembaga yang berbeda (Netscape), itu membuatnya sedikit lebih sulit untuk menemukan perbedaan.

Berikut adalah beberapa perbedaan, tetapi saya ragu saya bisa mendaftar semuanya:

  • Dalam ClientHellopesan (pesan pertama yang dikirim oleh klien, untuk memulai jabat tangan), versinya adalah {3,0}untuk SSLv3, {3,1}untuk TLSv1.0 dan {3,2}untuk TLSv1.1.
  • Perbedaannya ClientKeyExchange.
  • MAC / HMAC berbeda (TLS menggunakan HMAC sedangkan SSL menggunakan HMAC versi sebelumnya).
  • Derivasi kunci berbeda.
  • Data aplikasi klien dapat dikirim langsung setelah mengirim pesan SSL / TLS Finisheddi SSLv3. Dalam TLSv1, ia harus menunggu Finishedpesan server .
  • Daftar suite sandi berbeda (dan beberapa di antaranya telah diubah namanya dari SSL_*menjadi TLS_*, mempertahankan nomor id yang sama).
  • Ada juga perbedaan mengenai perpanjangan negosiasi ulang yang baru .

Saya sangat merekomendasikan buku Eric Rescorla - SSL dan TLS: Merancang dan Membangun Sistem yang Aman , Addison-Wesley, 2001 ISBN 0-201-61598-3 , jika Anda benar-benar menginginkan detail lebih lanjut. Saya telah belajar tentang beberapa poin yang disebutkan di atas dari buku ini. Penulis kadang-kadang menyebutkan perbedaan antara SSLv3 dan TLS (v1.0 hanya pada saat buku itu ditulis) ketika menjelaskan beberapa pesan SSL / TLS, tetapi Anda perlu penjelasan latar belakang tentang pesan-pesan ini untuk memiliki kesempatan untuk memahami ( dan tidak tepat untuk menyalin / menempel dari buku ini di sini).

Bruno
sumber
Sepertinya Ekstensi TLS hanya berlaku untuk TLS dan bukan SSL, benar? Jadi, misalnya, klien TLS dapat mengirim catatan yang diperluas ' ClientHello, sedangkan klien hanya SSL3 hanya akan mengirim yang asli' ClientHello'.
culix
@culix, secara umum, itu memang benar (terutama karena ekstensi TLS didefinisikan dalam kerangka kerja IETF). SSLv3 juga dapat memiliki data tambahan dalam catatan ClientHello-nya (sama dengan TLS 1.0 dan 1.1). (Cari draft302.txtdan " Demi kompatibilitas maju ... ", bandingkan dengan bagian 7.4.1.2 dalam spesifikasi TLS). Untuk mengatasi tumpukan yang tidak mendukung ini, ada juga solusi seperti SCSV pseudo cipher-suite dalam ekstensi negosiasi ulang.
Bruno
@ Bruno, Tautan buku turun .....
Pacerier
4

Saya hanya akan mengulangi jawaban yang lain tetapi mungkin dengan penekanan yang sedikit berbeda.

Ada protokol soket aman yang "dimiliki" oleh Netscape yang disebut SSL versi 2. Versi baru dengan struktur catatan yang berbeda dan peningkatan keamanan juga "dimiliki" oleh Netscape dirilis dan disebut versi SSL 3. Di dalam protokol di beberapa tempat adalah bidang nomor versi biner. Untuk SSL versi 3, bidang ini diatur ke 0x03 0x00, yaitu versi 3.0. Kemudian IETF memutuskan untuk membuat standar sendiri. Mungkin karena ada beberapa ketidakpastian kekayaan intelektual tentang SSL, termasuk apakah "SSL" adalah merek dagang Netscape, ketika IETF merilis versi berikutnya dari protokol ini, mereka memberinya nama sendiri: Transport Layer Security protocol, atau TLS versi 1.0. Format rekaman dan struktur keseluruhan identik dan konsisten dengan SSL v3. Nomor versi biner ditingkatkan menjadi 0x03 0x01, dan seperti yang telah dicatat ada beberapa perubahan kripto kecil. Sejak itu telah ada TLS versi 1.1 dan 1.2, di mana nomor protokol internal adalah 0x03 0x02 dan 0x03 0x03.

Mengabaikan SSLv2, itu pada dasarnya hanya perubahan nama bersama dengan fine-tuning protokol normal yang terjadi ketika orang menjadi lebih pintar tentang keamanan dan kinerja.

James Reinstate Monica Polk
sumber
3

Pada dasarnya, ini hanyalah perubahan nama untuk versi protokol yang lebih baru. Saya percaya alasan utama untuk itu adalah untuk membedakannya dari yang lebih lama, standar informal yang terutama dirancang oleh Netscape setelah menjadi protokol jalur standar IETF resmi.

Seperti yang dikatakan dalam jawaban untuk pertanyaan Anda sebelumnya, ini tidak berarti SSLv3 dan TLSv1.0 kompatibel. Mengutip dari RFC 2246:

perbedaan antara protokol ini dan SSL 3.0 tidak dramatis, tetapi mereka cukup signifikan sehingga TLS 1.0 dan SSL 3.0 tidak beroperasi.

Saya kira jika Anda benar-benar ingin mengetahui perbedaan yang tepat dalam protokol, Anda harus membaca standar dan membandingkan diri Anda.

Draft protokol SSLv3 dari Netscape TLSv1.0 RFC 2246

Sven
sumber
@VenW saya akan membandingkan untuk diri saya sendiri tetapi itu adalah tantangan besar saya tidak yakin saya ingin melakukan. Standar itu sudah ada selama 10 tahun sekarang. Tentunya seseorang sudah melakukan perbandingan, dengan grafik cantik sehingga orang-orang seperti saya bisa memahaminya.
goodguys_activate
@ MakerOfThings7 Sayangnya pertanyaan ini bukan sesuatu yang bisa dirubah menjadi diagram lingkaran. Satu-satunya hal yang dapat diletakkan pada grafik adalah laju bit enkripsi atau (dan saya akan membahas di sini) tingkat keamanan yang diberikan (di mana SSLv3 adalah "-" dan TLS adalah "=" ...) Satu-satunya wawasan untuk bisa didapat bisa didapat dengan benar-benar membaca spesifikasi, atau setidaknya halaman Wikipedia (yang saya berikan kepada Anda dalam pertanyaan sebelumnya.)
gWaldo
@VenW Sudahkah Anda membaca dan memahami kedua spesifikasi itu sendiri?
goodguys_activate
Tidak mengapa harus saya? Saya bukan pengembang yang menulis perangkat lunak terhadap spesifikasi ini, yang merupakan satu-satunya alasan untuk melakukan itu yang dapat saya pikirkan. Jika saya perlu menggunakan SSL / TLS, saya membaca dokumen untuk OpenSSL dll., Itu sudah cukup untuk pengguna dan administrator.
Sven
@VenW Jangan tersinggung, tapi saya akan tetap terbuka sampai saya mendapat tanggapan dari seseorang yang membaca dan memahami spesifikasi ... yang wajar diberikan pertanyaan saya.
goodguys_activate
0

Protokol enkripsi SSL sekarang bernama TLS, menghasilkan dua nama untuk protokol yang sama. Perangkat lunak saat ini akan menegosiasikan TLS versi 1 atau SSL versi 3 secara otomatis. Manusia, di sisi lain, harus memutuskan antara menggunakan istilah SSL yang lebih mudah dikenali dibandingkan dengan penunjukan TLS resmi.

SSL adalah pendahulu TLS.

TLS dan SSL mengenkripsi segmen koneksi jaringan pada Application Layer untuk memastikan transit end-to-end yang aman di Transport Layer.

aleroot
sumber
Jadi itu perubahan nama? Itu dia?
goodguys_activate
ya TLS adalah versi yang lebih baru, TLS dapat mengubah dirinya menjadi SSL3 jika perlu.
aleroot
3
Tidak, itu bukan perubahan nama. TLSv1 dapat dioperasikan dengan SSLv3 (dan akan mundur) tetapi itu tidak selalu benar sebaliknya. TLSv1 seperti SSLv4. Catatan: ada beberapa versi TLS juga.
Philip Reynolds
-2

Perbedaan:

  • TLS berjalan cukup di atas protokol standar. Sambungan TLS dimulai seperti sesi layanan standar yang tidak dienkripsi, tetapi pada titik tertentu mereka mulai menegosiasikan enkripsi. Diperlukan perpanjangan protokol standar untuk negosiasi ini.
  • Protokol standar berjalan di atas SSL. Koneksi SSL pertama-tama menegosiasikan enkripsi, kemudian jalankan protokol dasar di atasnya.
LatinSuD
sumber
Itu tidak benar, Anda berbicara tentang perbedaan antara mulai dengan SSL / TLS dan beralih ke TLS dalam protokol melalui perintah seperti STARTTLS: stackoverflow.com/questions/3660798/…
Bruno