ในตอนที่เราทำบทความว่า "HTTP กับ HTTPS แตกต่างกันอย่างไร ?" เราได้มีการเอ่ยถึงโปรโตคอลด้านความปลอดภัยใน HTTPS นั่นคือ Secure Socket Layer (SSL) และ Transport Layer Security (TLS)
SSL และ TLS ทั้งคู่เป็นโปรโตคอลรักษาความปลอดภัยที่ได้รับความนิยมมากที่สุดในปัจจุบัน มันถูกออกแบบมาเพื่อช่วยให้การสื่อสารระหว่างกันมีความปลอดภัยมากยิ่งขึ้น ด้วยการใช้กุญแจสาธารณะ (Public Key), ลายเซ็นต์ดิจิทัล (Digital Signature) และการเข้ารหัส
ในบทความนี้เราจะมาแนะนำความแตกต่างระหว่าง SSL และ TSL ว่าโปรโตคอล 2 ตัวนี้มันต่างกันอย่างไร ?
คำว่า "SSL" นั้นย่อมาจากคำว่า "Secure Sockets Layer" ในขณะที่คำว่า "TLS" นั้นมาจากคำว่า "Transport Layer Security" ทั้งคู่เป็นโปรโตคอลเข้ารหัสที่ใช้รับรองการส่งข้อมูลระหว่างเซิร์ฟเวอร์, ระบบ, แอปพลิเคชัน และผู้ใช้งาน แต่อันที่จริงมันมีความแตกต่างกันเป็นอย่างมาก เรามาเริ่มกันที่ SSL กันก่อน
โดย SSL นั้นเป็นโปรโตคอลที่ถูกพัฒนาขึ้นมาก่อน ส่วน TLS นั้นตามมาทีหลัง ซึ่งเป็นการอัปเกรดเวอร์ชันต่อจาก SSL ขึ้นมา
SSL 1.0 เวอร์ชันแรกพัฒนาขึ้นมาใน ค.ศ. 1995 (พ.ศ. 2538) แต่ไม่เคยถูกเผยแพร่ออกมาใช้งาน เนื่องจากมีข้อผิดพลาดที่ร้ายแรงอยู่ ส่วน SSL 2.0 ก็ไม่ได้ดีไปกว่าเดิมเท่าไหร่ ทำให้เพียงแค่ปีเดียว ในปี ค.ศ. 1996 (พ.ศ. 2539) SSL 3.0 ก็ถูกเข็นออกมาเพื่อแก้ไขปัญหาที่เกิดขึ้น แต่สุดท้ายมันก็ยังมีช่องโหว่ร้ายแรงอยู่ดี
TLS หรือ Transport Layer Security เป็นโปรโตคอลรักษาความปลอดภัยที่ถูกยอมรับ และได้รับความนิยมเป็นอย่างมากในปัจจุบัน มันถูกใช้ในการเพิ่มความปลอดภัย และรักษาความเป็นส่วนตัวให้กับข้อมูล โดยทั่วไป TLS จะใช้เพื่อเข้ารหัสการสื่อสารระหว่างเว็บแพ็คเกจ กับเซิร์ฟเวอร์ ไม่ว่าจะเป็นการดาวน์โหลดข้อมูลเพื่อแสดงผลหน้าเว็บไซต์, เข้ารหัสข้อมูลเสียง หรือข้อความ
Internet Engineering Task Force (IETF) หน่วยงานที่พัฒนามาตรฐานโปรโตคอล สำหรับการทำงานของ อินเทอร์เน็ต (Internet) อย่างเช่น TCP/IP ซึ่งเป็นส่วนหนึ่งของ International Standards Organization (ISO) ได้เปิดตัว TLS 1.0 เวอร์ชันแรกออกมาในปี ค.ศ. 1999 (พ.ศ. 2542) โดยมันได้พัฒนาขึ้นมาด้วยการนำ SSL 3.0 มาอัปเกรด ส่วนเวอร์ชันล่าสุดในขณะที่บทความนี้ได้เผยแพร่ จะเป็น TLS 1.3 ที่เปิดตัวในปี ค.ศ. 2018 (พ.ศ. 2561)
สรุปได้ว่า TLS คือเทคโนโลยีที่ได้รับการอัปเดตให้มีความปลอดภัย และใหม่กว่า SSL นั้นเอง อย่างไรก็ตาม เมื่อเอ่ยถึงใบรับรองความปลอดภัย (Security Certificate) ส่วนใหญ่แล้วเราก็ยังคงเรียกว่า SSL เหมือนเดิม เพราะมันเป็นคำที่ทุกคนเคยชินกันดีอยู่แล้ว แม้ในความเป็นจริงเมื่อคุณซื้อระบบ SSL มาใช้ ส่วนใหญ่ คุณจะได้ TLS Certificate มาใช้งานก็ตาม
ภาพจาก : https://www.globalsign.com/en/blog/ssl-vs-tls-difference
ความแตกต่างระหว่าง SSL และ TLS ในการใช้งานนั้นไม่ได้ต่างกันมากนัก แต่ในเชิงเทคนิคที่มันทำงานนั้นจะมีความแตกต่างกัน ที่เห็นได้อย่างชัดเจนก็จะมีดังต่อไปนี้
SSL รองรับ Fortezza cipher suite ในขณะที่ TLS ไม่รองรับ โดย TLS จะใช้มาตรฐานเข้ารหัสที่ดีกว่า เช่น RC4, Triple DES, AES, IDEA ฯลฯ
SSL จะแจ้งเตือนด้วยข้อความว่า "No Certificate" (ไม่มีใบรับรอง) ในขณะที่ TLS ได้ตัดข้อความแจ้งเตือนดังกล่าวออกไป แล้วแทนที่ข้อความแจ้งเตือนอื่น ๆ แทน
SSL ใช้ Message Authentication Code (MAC) หลังจากเข้ารหัสทุก ๆ ข้อความ ส่วน TLS จะใช้ Hash-based Message Authentication Code (HMAC) ในการเข้ารหัสข้อความแทน
ใน SSl การคำนวณหาค่า Hash จะประกอบไปด้วยการใช้ Master secret และ Pad ส่วน TLS ค่า Hash จะคำนวณผ่านข้อความ Handshake
การรับรองความถูกต้องของข้อความใน SSL จะอยู่รวมกันกับข้อมูลกุญแจ และแอปพลิเคชัน ในขณะที่ TLS จะอาศัยรหัสรับรองความถูกต้องที่เป็น HMAC
ทาง IETF ได้ประกาศยกเลิกการใช้งาน SSL 2.0 และ SSL 3.0 ไปเป็นที่เรียบร้อยแล้วในปี ค.ศ. 2011 (พ.ศ. 2554) และ ค.ศ. 2015 (พ.ศ. 2558) ตามลำดับ แต่มันก็ยังมีการใช้งานอยู่ และมีการค้นพบช่องโหว่ใหม่อยู่เรื่อย ๆ
เว็บเบราว์เซอร์รุ่นใหม่ในปัจจุบัน ก็จะแจ้งเตือนว่าคุณกำลังเข้าสู่เว็บไซต์ที่ไม่มีความปลอดภัย หรือไม่อนุญาตให้เข้า นอกเสียจากว่าคุณจะคลิกยืนยันว่าจะเข้ามันให้ได้จริง ๆ
ดังนั้น ถ้าถามว่าควรใช้ SSL หรือ TLS ในปัจจุบัน ข้อกำหนดก็ให้ใช้งาน TLS เท่านั้น ที่ต้องสนใจคือ จะใช้ TLS เวอร์ชันไหนมากกว่า ? แน่นอนว่าถ้าเป็นไปได้ก็ควรจะใช้ TLS 1.3 ที่เป็นเวอร์ชันล่าสุด
SSL | TLS |
รองรับ Fortezza Cipher Suite | ไม่รองรับ Fortezza Cipher Suite |
ใช้ Message Authentication Code (MAC) ในการทำ Record Protocol | ใช้ Hash-based Message Authentication Code (HMAC) ในการทำ Record Protocol |
ใช้ Pre-master Secret Message ในการสร้าง Master Secrets | ใช้วิธีการใหม่ที่มีความปลอดภัยกว่า |
มีข้อความแจ้งเตือน "No Certificate" | ตัดข้อความแจ้งเตือน "No Certificate" ทิ้ง และใช้การแจ้งเตือนอื่น ๆ แทน |
ข้อความของ SSL จะรับรองความถูกต้องด้วยข้อมูล Ad-hoc Key และไคลเอนต์ | รับรองความถูกต้องด้วยรหัส HMAC |
SSL/TLS เวอร์ชัน | รายละเอียดโดยสังเขป |
SSL 1.0 | ด้วยเหตุผลจากช่องโหว่ด้านความปลอดภัย มันเลยไม่เคยถูกเผยแพร่ออกมาให้ใช้ |
SSL 2.0 | Netscape เปิดตัว SSL สู่สาธารณะครั้งแรกในเดือนกุมภาพันธ์ พ.ศ. 2538 แต่มีข้อบกพร่องด้านการออกแบบ ทำให้ Netscape ต้องปล่อย SSL 3.0 ตามออกมา โดย SSL 2.0 เลิกใช้งานแล้วในปี พ.ศ. 2554 |
SSL 3.0 | เป็นเวอร์ชันที่แก้ไขช่องโหว่ด้านความปลอดภัยของ SSL 2.0 อย่างไรก็ตาม ในปี พ.ศ. 2547 ได้มีการค้นพบช่องโหว่ POODLE ทำให้มันไม่มีความปลอดภัยอีกต่อไป |
TLS 1.0 | อัปเกรดมาจาก SSL 3.0 เปิดตัวในเดือนมกราคม ปี พ.ศ. 2542 โดยมันรองรับการเชื่อมต่อกับ SSL 3.0 ได้ด้วย |
TLS 1.1 | เปิดตัวในเดือนเมษายน ปี พ.ศ. 2549 มีการเพิ่มระบบป้องกันการโจมตีด้วยวิธี Cipher Block Chaining (CBC) อย่างไรก็ตาม ในเดือนมีนาคม ปี พ.ศ. 2563 Google, Apple, Mozilla และ Microsoft ได้ประกาศยกเลิกการใช้งาน TLS 1.0 และ TLS 1.1 |
TLS 1.2 | เปิดตัวในปี พ.ศ. 2551 เพิ่มระบบที่ช่วยให้ใช้งาน Hash และ Algorithm แบบเฉพาะเจาะจงที่ทางไคลเอนต์ และเซิร์ฟเวอร์เลือกใช้งานได้, อนุญาตการเข้ารหัสที่ผ่านการรับรองความถูกต้องซึ่งสนับสนุนโหมด Data ช่วยให้ตรวจสอบความยาวของข้อมูลตามขุดเข้ารหัสได้ |
TLS 1.3 | เปิดตัวในปี พ.ศ. 2551 มีการพัฒนามาไกลจนแตกต่างจาก TLS 1.2 เป็นอย่างมาก เช่น ยกเลิกการสนับสนุน MD5 และ SHA-224, จำเป็นต้องใช้ลายเซ็นต์ดิจิทัลในช่วงแรกของการตั้งค่า, บังคับใช้ Perfect Forward Secrecy เมื่อมีการแลกเปลี่ยนกุญแจสาธารณะ, การ Handshake จะถูกเข้ารหัสหลังจาก "Server Hello" |
จะเห็นได้ว่า SSL กับ TLS ก็มีความแตกต่างกันพอสมควร แต่ถ้าจะให้สรุปง่าย ๆ TLS ก็คือชื่อใหม่ของ SSL โดยเป็นมาตรฐานที่ทันสมัย และปลอดภัยกว่านั้นเอง
|
แอดมินสายเปื่อย ชอบลองอะไรใหม่ไปเรื่อยๆ รักแมว และเสียงเพลงเป็นพิเศษ |
ความคิดเห็นที่ 1
11 เมษายน 2566 22:40:14
|
||
ขอบคุณครับ
|
||