TLS และช่องทางที่ปลอดภัย
Transport Layer Security (TLS) เป็นโปรโตคอลที่ช่วยรักษาความปลอดภัยของการสื่อสารส่วนใหญ่บนอินเทอร์เน็ต โดยรวมการแลกเปลี่ยนคีย์ที่ได้รับการยืนยันตัวตนและการเข้ารหัสที่ได้รับการยืนยันตัวตนเข้าด้วยกัน เพื่อสร้างช่องทางที่ปกป้องความเป็นส่วนตัวและความสมบูรณ์ของข้อมูลระหว่างปลายทางสองจุด
Definition
โปรโตคอลช่องทางที่ปลอดภัย เช่น TLS จะสร้างเซสชันระหว่างสองฝ่าย ซึ่งรับประกันความเป็นส่วนตัว ความสมบูรณ์ และการยืนยันตัวตนของข้อมูลทั้งหมดที่แลกเปลี่ยน โดยการดำเนินการแลกเปลี่ยนคีย์ที่ได้รับการยืนยันตัวตน ตามด้วยการเข้ารหัสการรับส่งข้อมูลที่ได้รับการยืนยันตัวตน
Scope
หัวข้อนี้ครอบคลุมโปรโตคอลช่องทางที่ปลอดภัย โดยมี TLS เป็นตัวอย่างหลัก: การจับมือ (handshake) ที่ยืนยันตัวตนเซิร์ฟเวอร์ (และไคลเอนต์ได้ตามต้องการ) และสร้างคีย์เซสชัน, เลเยอร์บันทึก (record layer) ที่ให้การเข้ารหัสที่ได้รับการยืนยันตัวตน, ความลับไปข้างหน้า (forward secrecy) และการป้องกันการลดระดับ (downgrade protection), รวมถึงบทเรียนจากการโจมตีในอดีต หัวข้อนี้กล่าวถึงวิธีการประกอบบล็อกการเข้ารหัสเข้าเป็นโปรโตคอลที่ใช้งานจริง โดยไม่รวมโครงสร้างพื้นฐานใบรับรอง (PKI) และหลักการพื้นฐานแต่ละส่วน ซึ่งจะกล่าวถึงในหัวข้อที่เกี่ยวข้อง
Core questions
- การจับมือ TLS ยืนยันตัวตนเซิร์ฟเวอร์และตกลงคีย์เซสชันได้อย่างไร?
- เลเยอร์บันทึกปกป้องแต่ละข้อความด้วยการเข้ารหัสที่ได้รับการยืนยันตัวตนได้อย่างไร?
- บรรลุความลับไปข้างหน้าได้อย่างไร และเหตุใดจึงสำคัญต่อการรับส่งข้อมูลที่ถูกบันทึกไว้?
- ป้องกันการโจมตีแบบลดระดับและการเจรจาต่อรองใหม่ได้อย่างไร?
- การโจมตีในอดีต (BEAST, POODLE, Heartbleed) สอนอะไรเกี่ยวกับการออกแบบโปรโตคอลและการใช้งาน?
Key concepts
- การจับมือ TLS
- เลเยอร์บันทึก
- การเข้ารหัสที่ได้รับการยืนยันตัวตน (AEAD)
- การแลกเปลี่ยนคีย์ชั่วคราว (ECDHE)
- ความลับไปข้างหน้า
- การยืนยันตัวตนเซิร์ฟเวอร์และไคลเอนต์
- การโจมตีแบบลดระดับและการเจรจาต่อรองใหม่
- การกลับมาทำงานต่อของเซสชัน
- การเจรจาต่อรองชุดการเข้ารหัส
Key theories
- โปรโตคอลการจับมือบวกโปรโตคอลบันทึก
- TLS แยกการจับมือแลกเปลี่ยนคีย์ที่ได้รับการยืนยันตัวตน — ซึ่งตรวจสอบตัวตนผ่านใบรับรองและสร้างคีย์เซสชัน — ออกจากเลเยอร์บันทึกที่เข้ารหัสและยืนยันตัวตนข้อมูลแอปพลิเคชันด้วยคีย์เหล่านั้น โดยประกอบการยืนยันตัวตน การตกลงคีย์ และการป้องกันข้อมูลจำนวนมากเข้าด้วยกันอย่างชัดเจน
- ความลับไปข้างหน้าและการป้องกันการลดระดับ
- TLS 1.3 บังคับใช้ Diffie-Hellman แบบชั่วคราว (elliptic-curve) สำหรับความลับไปข้างหน้า และผูกบันทึกการจับมือเข้ากับตารางคีย์ เพื่อไม่ให้ผู้โจมตีที่กระตือรือร้นสามารถบังคับให้ลดระดับพารามิเตอร์ที่อ่อนแอลงโดยไม่ถูกตรวจจับได้
Mechanisms
ใน TLS 1.3 ไคลเอนต์จะส่งส่วนแบ่งการแลกเปลี่ยนคีย์และพารามิเตอร์ที่รองรับ; เซิร์ฟเวอร์จะตอบกลับด้วยส่วนแบ่ง Diffie-Hellman ชั่วคราวของตนเอง, ใบรับรอง, และลายเซ็นบนบันทึกการจับมือ (handshake transcript) จากนั้นทั้งสองฝ่ายจะสร้างคีย์เซสชันผ่านฟังก์ชันการสร้างคีย์ (HKDF) เลเยอร์บันทึกจะปกป้องข้อมูลทั้งหมดด้วยการเข้ารหัส AEAD (เช่น AES-GCM หรือ ChaCha20-Poly1305) บันทึกจะได้รับการยืนยันตัวตนเพื่อป้องกันการปลอมแปลงหรือการลดระดับ และการจับมือจะเสร็จสมบูรณ์ในรอบเดียว โดยมีการกลับมาทำงานต่อแบบศูนย์รอบ (zero-round-trip resumption) ที่เป็นทางเลือก
Clinical relevance
TLS รักษาความปลอดภัยของการรับส่งข้อมูลส่วนใหญ่บนอินเทอร์เน็ต: HTTPS สำหรับเว็บ, การขนส่งอีเมลที่ปลอดภัย, API, VPN และการส่งข้อความ ล้วนทำงานผ่าน TLS ความถูกต้องของ TLS กำหนดโดยตรงว่ารหัสผ่าน การชำระเงิน และข้อมูลส่วนบุคคลได้รับการปกป้องจากการโจมตีเครือข่ายหรือไม่ การย้ายจาก SSL/TLS รุ่นแรกที่มีข้อบกพร่องมาสู่ TLS 1.3 — และการวิเคราะห์ที่มาพร้อมกับการเปลี่ยนแปลงนี้ — เป็นแบบอย่างสำหรับการพัฒนาโปรโตคอลภายใต้แรงกดดันในโลกแห่งความเป็นจริง
Evidence & guidelines
TLS 1.3 ได้รับการกำหนดมาตรฐานใน RFC 8446 และแนะนำให้ใช้; SSL 3.0, TLS 1.0 และ TLS 1.1 ถูกยกเลิกแล้ว (RFC 8996) NIST SP 800-52 ให้คำแนะนำในการกำหนดค่า TLS 1.3 ได้รับการพัฒนาด้วยการวิเคราะห์เชิงรูปแบบอย่างกว้างขวาง โดยขจัดจุดอ่อนเดิม (การแลกเปลี่ยนคีย์ RSA แบบคงที่, โหมด CBC, การเจรจาต่อรองใหม่) ที่ทำให้เกิดการโจมตีในอดีต เช่น BEAST, POODLE และข้อบกพร่องในการใช้งาน Heartbleed
History
Netscape สร้าง SSL ในปี 1994-1995; SSL 3.0 ได้รับการออกแบบใหม่โดย IETF เป็น TLS 1.0 (1999) และปรับปรุงผ่าน TLS 1.2 (2008) การโจมตีตลอดทศวรรษ — BEAST, CRIME, POODLE, ข้อบกพร่องในการใช้งาน Heartbleed, Logjam และ FREAK — ได้เปิดเผยจุดอ่อนในโหมดเดิมและการจัดการการลดระดับ TLS 1.3 (RFC 8446, 2018) เป็นการออกแบบใหม่ที่สำคัญ โดยมี forward secrecy ที่บังคับใช้, การจับมือที่เร็วขึ้น และการวิเคราะห์ความปลอดภัยเชิงรูปแบบ
Key figures
- Eric Rescorla
- Hugo Krawczyk
- Kenny Paterson
- Taher ElGamal
Related topics
Seminal works
- rfc8446
- stallings2017
- katz2020
Frequently asked questions
- SSL กับ TLS แตกต่างกันอย่างไร?
- TLS เป็นรุ่นต่อจาก SSL SSL (เวอร์ชัน 2.0 และ 3.0) ล้าสมัยและไม่ปลอดภัย; 'SSL' ยังคงเป็นคำที่ใช้กันทั่วไป แต่การเชื่อมต่อเว็บที่ปลอดภัยในปัจจุบันทั้งหมดใช้ TLS โดย TLS 1.3 เป็นเวอร์ชันที่ทันสมัยที่สุด
- TLS ป้องกันฉันจากเว็บไซต์ที่เป็นอันตรายได้หรือไม่?
- TLS รับประกันเพียงว่าคุณมีช่องทางที่เป็นความลับและได้รับการยืนยันตัวตนไปยังเซิร์ฟเวอร์ที่ระบุในใบรับรอง — มันยืนยันว่าคุณกำลังสื่อสารกับโดเมนนั้น ไม่ใช่ว่าโดเมนนั้นน่าเชื่อถือ เว็บไซต์ฟิชชิ่งสามารถให้บริการใบรับรองที่ถูกต้องสำหรับโดเมนของตนเอง (ที่ดูคล้ายกัน) ดังนั้น TLS จึงไม่รับรองความซื่อสัตย์ของเว็บไซต์