ความแตกต่างของระดับโปรโตคอลที่แน่นอนระหว่าง SSL และ TLS คืออะไร


40

นี่คือการดำน้ำลึกทางเทคนิคหลังจากถามคำถามภาพรวมนี้

ความแตกต่างของโปรโตคอลระหว่าง SSL และ TLS คืออะไร?
มีความแตกต่างมากพอที่จะรับประกันการเปลี่ยนชื่อหรือไม่? (แทนที่จะเรียกว่า "SSLv4" หรือ SSLv5 สำหรับ TLS เวอร์ชันใหม่กว่า)


3
ฉันสงสัยว่าถ้าคุณต้องการความเข้าใจในเชิงลึกจริงๆคุณจะต้องเริ่มอ่านรายละเอียด ตรวจสอบที่หน้าวิกิพีเดีย มันมีลิงค์ไปยัง RFC และรายละเอียด
Zoredache

7
@Zoredache โปรดอย่าใช้ "wiki" ย่อมาจาก "Wikipedia"
Spiff

คำตอบ:


36

SSLv2 และ SSLv3 นั้นแตกต่างกันอย่างสมบูรณ์ (และทั้งคู่ก็ถือว่าไม่ปลอดภัย) SSLv3 และ TLSv1.0 คล้ายกันมาก แต่มีความแตกต่างเล็กน้อย

คุณสามารถพิจารณา TLSv1.0 เป็น SSLv3.1 (อันที่จริงแล้วเป็นสิ่งที่เกิดขึ้นภายในบันทึกการแลกเปลี่ยน) มันง่ายกว่าที่จะเปรียบเทียบTLSv1.0กับTLSv1.1และTLSv1.2เพราะพวกเขาทั้งหมดได้รับการแก้ไขภายใน IETF และติดตามโครงสร้างเดียวกันมากขึ้นหรือน้อยลง SSLv3 ถูกแก้ไขโดยสถาบันอื่น (Netscape) ทำให้ยากต่อการตรวจสอบความแตกต่าง

นี่คือความแตกต่างเล็กน้อย แต่ฉันสงสัยว่าฉันสามารถเขียนรายการทั้งหมดได้:

  • ในClientHelloข้อความ (ข้อความแรกที่ส่งโดยไคลเอนต์เพื่อเริ่มการจับมือกัน) เวอร์ชัน{3,0}สำหรับ SSLv3 {3,1}สำหรับ TLSv1.0 และ{3,2}สำหรับ TLSv1.1
  • ความClientKeyExchangeแตกต่าง
  • MAC / HMAC ต่างกัน (TLS ใช้ HMAC ในขณะที่ SSL ใช้ HMAC รุ่นก่อนหน้า)
  • การสืบทอดคีย์แตกต่างกัน
  • สามารถส่งข้อมูลแอปพลิเคชันไคลเอนต์ได้ทันทีหลังจากส่งข้อความ SSL / TLS Finishedใน SSLv3 ใน TLSv1 นั้นจะต้องรอFinishedข้อความของเซิร์ฟเวอร์
  • รายการของชุดรหัสจะแตกต่างกันไป (และบางส่วนได้ถูกเปลี่ยนชื่อจากSSL_*เป็นTLS_*รักษาหมายเลข ID เดียวกัน)
  • นอกจากนี้ยังมีข้อแตกต่างเกี่ยวกับการขยายการเจรจาใหม่

ฉันขอแนะนำหนังสือของ Eric Rescorla - SSL และ TLS: การออกแบบและการสร้างระบบรักษาความปลอดภัย , แอดดิสัน - เวสลีย์, 2001 ไอ 0-201-61598-3 , ถ้าคุณต้องการรายละเอียดเพิ่มเติม ฉันได้เรียนรู้เกี่ยวกับบางประเด็นที่กล่าวถึงข้างต้นจากหนังสือเล่มนี้ ผู้เขียนบางครั้งกล่าวถึงความแตกต่างระหว่าง SSLv3 และ TLS (v1.0 เท่านั้น ณ เวลาที่เขียนหนังสือ) เมื่ออธิบายข้อความ SSL / TLS บางส่วน แต่คุณต้องการคำอธิบายเบื้องหลังเกี่ยวกับข้อความเหล่านี้เพื่อให้มีโอกาสเข้าใจ ( และไม่เหมาะสมที่จะคัดลอก / วางจากหนังสือเล่มนี้ที่นี่)


ดูเหมือนว่าส่วนขยาย TLSจะใช้กับ TLS เท่านั้นและไม่ใช่ SSL ใช่ไหม ตัวอย่างเช่นไคลเอนต์ TLS อาจส่งClientHelloเร็กคอร์ดที่ขยายเพิ่ม ' ' ในขณะที่ไคลเอนต์ SSL3 เท่านั้นจะส่งต้นฉบับ ' ClientHello' เท่านั้น
culix

@culix โดยทั่วไปแล้วพูดถูกต้อง (ส่วนใหญ่เป็นเพราะส่วนขยาย TLS ถูกกำหนดในกรอบของ IETF) SSLv3 นั้นยังสามารถมีข้อมูลเพิ่มเติมในเรกคอร์ด ClientHello (เช่นเดียวกับ TLS 1.0 และ 1.1) (มองหาdraft302.txtและ " ในความสนใจของความเข้ากันได้ไปข้างหน้า ... " เปรียบเทียบกับส่วน 7.4.1.2 ในรายละเอียดของ TLS) เพื่อรับมือกับสแต็คที่ไม่สนับสนุนสิ่งนี้นอกจากนี้ยังมีวิธีแก้ไขปัญหาเช่นชุดรหัสหลอก SCSV ในส่วนขยายการเจรจาต่อรองอีกครั้ง
บรูโน่

@Bruno ลิงก์ลง .....
Pacerier

4

ฉันเพียงแค่จะก้องคำตอบอื่น ๆ แต่บางทีอาจมีความแตกต่างเล็กน้อย

มีโปรโตคอลซ็อกเก็ตที่ปลอดภัยซึ่ง "เป็นเจ้าของ" โดย Netscape ซึ่งเรียกว่า SSL เวอร์ชัน 2 รุ่นใหม่ที่มีโครงสร้างระเบียนที่แตกต่างกันและการปรับปรุงความปลอดภัยยังเป็นเจ้าของ "" โดย Netscape แล้วออกและเรียกว่ารุ่น SSL 3 ภายในโปรโตคอลในหลาย ๆ places คือฟิลด์หมายเลขเวอร์ชันไบนารี สำหรับ SSL เวอร์ชัน 3 ฟิลด์นี้ถูกตั้งค่าเป็น 0x03 0x00 เช่นเวอร์ชัน 3.0 จากนั้น IETF ตัดสินใจที่จะสร้างมาตรฐานของตัวเอง อาจเป็นเพราะมีความไม่แน่นอนเกี่ยวกับทรัพย์สินทางปัญญาเกี่ยวกับ SSL รวมถึง "SSL" เป็นเครื่องหมายการค้าของ Netscape เมื่อ IETF เปิดตัวรุ่นถัดไปของโปรโตคอลนี้พวกเขาตั้งชื่อเป็นของตนเองว่า: โปรโตคอล Transport Layer Security หรือ TLS เวอร์ชัน 1.0 รูปแบบการบันทึกและโครงสร้างโดยรวมเหมือนกันและสอดคล้องกับ SSL v3 หมายเลขเวอร์ชันไบนารีถูกแก้ไขเป็น 0x03 0x01 และเนื่องจากคนอื่น ๆ สังเกตว่ามีการเปลี่ยนแปลงเล็กน้อยของการเข้ารหัสลับ มีตั้งแต่ TLS เวอร์ชัน 1.1 และ 1.2 ซึ่งหมายเลขโปรโตคอลภายในคือ 0x03 0x02 และ 0x03 0x03

การละเว้น SSLv2 นั้นเป็นเพียงการเปลี่ยนชื่อพร้อมกับการปรับโปรโตคอลปกติที่เกิดขึ้นเนื่องจากผู้คนฉลาดในเรื่องความปลอดภัยและประสิทธิภาพ


3

โดยพื้นฐานแล้วมันไม่มีอะไรเลยนอกจากการเปลี่ยนชื่อสำหรับโปรโตคอลเวอร์ชันใหม่กว่า ฉันเชื่อว่าเหตุผลหลักที่ทำให้มันแตกต่างจากมาตรฐานเก่าที่ไม่เป็นทางการซึ่งออกแบบโดย Netscape หลังจากที่มันกลายเป็นโปรโตคอลติดตามมาตรฐาน IETF อย่างเป็นทางการ

ดังที่ได้กล่าวไว้ในคำตอบสำหรับคำถามก่อนหน้าของคุณสิ่งนี้ไม่ได้หมายความว่า SSLv3 และ TLSv1.0 เข้ากันได้ อ้างจาก RFC 2246:

ความแตกต่างระหว่างโปรโตคอลนี้และ SSL 3.0 นั้นไม่น่าทึ่ง แต่มีความสำคัญพอที่ TLS 1.0 และ SSL 3.0 จะไม่ทำงานร่วมกัน

ฉันเดาว่าถ้าคุณต้องการทราบความแตกต่างที่แน่นอนในโปรโตคอลคุณต้องอ่านมาตรฐานและเปรียบเทียบตัวเอง

ร่างโปรโตคอล SSLv3 จาก Netscape TLSv1.0 RFC 2246


@SvenW ฉันจะเปรียบเทียบเพื่อตัวเอง แต่มันเป็นความท้าทายที่ยิ่งใหญ่ฉันไม่แน่ใจว่าฉันต้องการทำอะไร มาตรฐานนั้นมีมานานกว่า 10 ปีแล้ว แน่นอนว่ามีคนทำการเปรียบเทียบด้วยกราฟิกที่น่ารักเพื่อให้คนอย่างฉันสามารถเข้าใจได้
goodguys_activate

@ MakerOfThings7 น่าเสียดายที่คำถามนี้ไม่ใช่สิ่งที่สามารถต้มลงในแผนภูมิวงกลมได้ สิ่งเดียวที่สามารถใส่ลงในแผนภูมิคือการเข้ารหัสบิตเรตหรือ (และฉันยืดที่นี่) ระดับความปลอดภัยที่ได้รับ (โดย SSLv3 คือ "-" และ TLS คือ "=" ... ) ข้อมูลเชิงลึกเพียงอย่างเดียว สามารถรับได้โดยการอ่านรายละเอียดจริง ๆ หรืออย่างน้อยหน้า Wikipedia (ซึ่งฉันได้ให้ไว้กับคุณในคำถามก่อนหน้านี้)
gWaldo

@SvenW คุณอ่านและทำความเข้าใจรายละเอียดของตัวเองแล้วหรือยัง?
goodguys_activate

ไม่ทำไมต้องฉัน ฉันไม่ใช่นักพัฒนาซอฟต์แวร์ที่เขียนข้อกำหนดนี้ซึ่งเป็นเพียงเหตุผลเดียวที่ฉันคิดได้ ถ้าฉันต้องการใช้ SSL / TLS ฉันอ่าน doc สำหรับ OpenSSL ฯลฯ ซึ่งเพียงพอสำหรับผู้ใช้และผู้ดูแลระบบ
สเวน

@SvenW ไม่มีความผิด แต่ฉันจะเปิดไว้จนกว่าฉันจะได้รับการตอบสนองจากคนที่อ่านและทำความเข้าใจรายละเอียด ... ซึ่งมีเหตุผลให้คำถามของฉัน
goodguys_activate

0

โปรโตคอลการเข้ารหัส SSL ตอนนี้ชื่อ TLS ทำให้สองชื่อสำหรับโปรโตคอลเดียวกัน ซอฟต์แวร์ปัจจุบันจะเจรจา TLS เวอร์ชัน 1 หรือ SSL เวอร์ชัน 3 โดยอัตโนมัติ ในทางกลับกันมนุษย์ต้องตัดสินใจว่าจะใช้คำศัพท์ SSL ที่เป็นที่รู้จักมากขึ้นเมื่อเทียบกับการกำหนด TLS อย่างเป็นทางการ

SSL เป็นบรรพบุรุษของ TLS

TLS และ SSL เข้ารหัสเซ็กเมนต์ของการเชื่อมต่อเครือข่ายที่ Application Layer เพื่อให้แน่ใจว่าการขนส่งจากต้นทางถึงปลายทางที่ปลอดภัยที่ Transport Layer


ดังนั้นจึงเปลี่ยนชื่อหรือไม่ แค่นั้นแหละ?
goodguys_activate

ใช่ TLS เป็นเวอร์ชันที่ใหม่กว่า TLS สามารถแปลงร่างเป็น SSL3 ได้หากจำเป็น
แจ้งเตือน

3
ไม่มันไม่ใช่การเปลี่ยนชื่อเลย TLSv1 สามารถใช้งานร่วมกับ SSLv3 ได้ (และจะย้อนกลับ) แต่นั่นก็ไม่จริงเหมือนกัน TLSv1 เหมือน SSLv4 หมายเหตุ: TLS หลายรุ่นก็มีเช่นกัน
Philip Reynolds

-2

แตกต่าง:

  • TLS ทำงานค่อนข้างด้านบนของโปรโตคอลมาตรฐาน การเชื่อมต่อ TLS เริ่มต้นเหมือนเซสชันที่ไม่ได้เข้ารหัสของบริการมาตรฐาน แต่ในบางจุดพวกเขาเริ่มเจรจาการเข้ารหัส มันต้องมีการขยายโปรโตคอลมาตรฐานสำหรับการเจรจาต่อรองนี้
  • โปรโตคอลมาตรฐานทำงานบน SSL การเชื่อมต่อ SSL จะเริ่มทำการเข้ารหัสก่อนจากนั้นจึงรันโปรโตคอลพื้นฐาน

ไม่ถูกต้องคุณกำลังพูดถึงความแตกต่างระหว่างการเริ่มต้นด้วย SSL / TLS และการสลับไปยัง TLS ภายในโปรโตคอลผ่านคำสั่งเช่น STARTTLS: stackoverflow.com/questions/3660798/…
Bruno
โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.