เดตาซายแอนซ์·คาเฟ่

เครื่องถอดรหัส SSL กับการล้วงข้อมูล

เครื่องถอดรหัส SSL มีจริงหรือ?
ใช้ล้วงความลับได้จริงหรือไม่?
มีข้อจำกัดอย่างไร?
วันนี้ผู้เขียนจะมาเล่าให้ฟังครับ

ภาพ IMG_2577 โดย Joe Loong (CC BY-SA 2.0)


รู้จัก SSL/TLS กันก่อน

ข้อมูลผ่านอินเทอร์เน็ต (data in transit) โดยทั่วไปจะุถูกส่งในแบบ cleartext ซึ่งหมายความว่าใครก็ตามที่อยู่ระหว่างทาง (เช่น ผู้ให้บริการอินเทอร์เน็ต) จะมองเห็นข้อมูลทั้งหมด

SSL/TLS เป็นเครื่องมือที่นำมาเข้ารหัสข้อมูลเพื่อ

  • ไม่ให้คนที่อยู่ระหว่างทางมองเห็นข้อมูล (confidentiality)
  • ช่วยให้ผู้ใช้มั่นใจว่าข้อมูลไม่ถูกเปลี่ยนระหว่างทาง (integrity)
  • ช่วยให้ผู้ใช้มั่นใจว่ากำลังติดต่อสื่อสารกับเวบที่ต้องการจริงๆ (identification)

ส่วนสำคัญใน SSL/TLS ที่ช่วยให้ผู้ใช้มั่นใจได้ว่ากำลังติดต่อสื่อสารกับเวบที่ต้องการจริงๆ คือ SSL Certificate


SSL in action

-0- Certificate Authority (CA)

เครื่องคอมพิวเตอร์ทั่วไป จะมี root certificate หรือ trusted certificate ติดตั้งไว้ในเครื่องอยู่แล้ว หน่วยงานที่เป็นเจ้าของ root certificate คือ Certificate Authority (CA)

-1- CA issues a certificate

เมื่อเจ้าของเวบ (example.com) ต้องการให้บริการผ่าน SSL เขาจะต้องติดต่อขอให้ CA รายใดรายหนึ่ง ออกใบรับรอง example.com ให้กับเขา

-2- User initiates a connection

เมื่อ user ติดต่อกับ example.com ผ่าน SSL/TLS example.com จะส่งใบรับรองที่ออกให้จาก CA ไปให้ user

-3,4,5- Certificate validation

user จึงนำใบรับรองของ example.com มาเทียบกับรายการ CA ที่ user เชื่อถือ

จากตัวอย่าง ใบรับรองของ example.com ออกให้โดย ROOT CA1 และ user เชื่อถือ ROOT CA1 user จึงทำการสร้างท่อพิเศษที่มีการเข้ารหัสเพื่อใช้ในการสื่อสารกับ example.com

จากตัวอย่างข้างบน จะเห็นได้ว่า Certificate Authority (CA) เป็นหัวใจหลักของ SSL เลยทีเดียว CA จะต้องออกใบรับรองให้กับเจ้าของเวบจริงๆเท่านั้น หาก CA ออกใบรับรองให้กับคนร้าย คนร้ายก็จะสามารถปลอมตัวเป็น example.com ได้ทันที


เครื่องถอดรหัส SSL(1)

เครื่องถอดรหัส SSL เป็นเครื่องที่เอามาวางตรงกลางเพื่อดักจับ ตรวจสอบข้อมูลที่ส่งผ่านเครือข่าย (man-in-the-middle attack)

วิธีการทำงานของเครื่องถอดรหัส SSL คือ

-1- เชื่อมต่อกับเวบปลายทางเสมือนเป็น user
-2- ตรวจสอบ/ทำสำเนา/แก้ไข/บล็อก ข้อมูลตาม policy ที่กำหนดไว้
-3- แสดงตัวเองว่าเป็น example.com ด้วยการออกใบรับรองใหม่ โดย root certificate ของตัวเอง แล้วส่งข้อมูลต่อไปให้ user ตัวจริง

เครื่องถอดรหัส SSL ด้วยตัวมันเองแล้วไม่มีประโยชน์มากนัก เพราะ …

-4- user นำใบรับรองมาเทียบกับรายการ CA ที่เชื่อถือ และเนื่องจาก user ไม่พบ root certificateของเครื่องถอดรหัส SSL user จึงปฏิเสธการเชื่อมต่อด้วย SSL/TLS กับ example.com


เครื่องถอดรหัส SSL(2) – ใช้ในองค์กร

จริงๆแล้วเครื่องถอดรหัส SSL ไม่ใช่อะไรแปลกใหม่ องค์กร บริษัท ห้างร้าน ทั่วไปที่ต้องการสอดส่องการใช้ internet ของพนักงาน หรือป้องกันการรั่วไหลของข้อมูล ใช้เครื่องถอดรหัส SSL มานานแล้ว

แต่สิ่งที่องค์กรเหล่านี้ต้องทำเพิ่มก็คือ จะต้องติดตั่ง root certificate ของเครื่องถอดรหัส ลงบนเครื่องทุกเครื่องในองค์กรเพื่อให้ user สามารถเชื่อมต่อผ่าน SSL/TLS ได้ โดยที่มีเครื่องถอดรหัสคอยสอดส่องข้อมูลอยู่ตรงกลาง

การสอดส่องหรือการล้วง data in transit ด้วยวิธีนี้ใน scale ที่ใหญ่กว่าองค์กรเป็นไปได้ยากมาก เพราะอุปกรณ์ทุกชิ้น ไม่ว่าจะเป็นมือถือ แทบเล็ต คอมพิวเตอร์ จะต้องมีการติดตั้ง root certificate พิเศษ ซึ่งแทบจะเป็นไปไม่ได้เลย


เครื่องถอดรหัส SSL (3) - CA cross-sign

โดยปกติแล้ว การตรวจสอบความเชื่อถือของ certificate จะเป็นการเชื่อถือแบบเป็นห่วงโซ่ (trust chain)

แม้ว่าเจ้าของเครื่องถอดรหัส SSL จะไม่มี root certificate ที่ user เชื่อถือ แต่ถ้าหากเขาสามารถโน้มน้าวให้ CA รายอื่นช่วยออกใบรับรองให้รับ root certificate ของเขาได้ (CA cross-sign) root certificate ของเขาก็จะได้รับความเชื่อถือเช่นกัน

จากตัวอย่าง

-0- ROOT CA 3 ออกใบรับรองให้ ROOT CA S (เป็นของเครื่องถอดรหัส)
-1- เชื่อมต่อกับเวบปลายทางเสมือนเป็น user
-2- ตรวจสอบ/ทำสำเนา/แก้ไข/บล็อก ข้อมูลตาม policy ที่กำหนดไว้
-3- แสดงตัวเองว่าเป็น example.com ด้วยการออกใบรับรองใหม่ โดย root certificate ของตัวเองและใบรับรองที่ออกให้โดย ROOT CA 3 แล้วส่งข้อมูลต่อไปให้ user ตัวจริง

Trust chain : example.com → ROOT CA S → ROOT CA 3

-4- user นำใบรับรองมาเทียบกับรายการ CA ที่เชื่อถือ โดยไล่ตาม trust chain ไปเรื่อยๆจนพบ ROOT CA 3 ซึ่งเป็น CA ที่ user เชื่อถือ
-5,6,7- user จึงทำการเชื่อมต่อผ่านเครื่องถอดรหัส โดยที่เครื่องถอดรหัสสามารถตรวจสอบ/ทำสำเนา/แก้ไข/บล็อก ข้อมูลได้ตามต้องการ

การโน้มน้าวให้ CA หลักๆทำ CA cross-sign นั้นเป็นไปได้ แต่ไม่ใช่สิ่งที่จะทำได้ง่ายสำหรับบุคคลและองค์กรทั่วไป แต่หากมีการ cross-sign และดักจับข้อมูล ในลักษณะดังกล่าวแล้ว โอกาสที่ user จะรู้ตัวน้อยมาก เพราะโปรแกรมเช่น Chrome, Firefox, Internet Explorer จะแสดงเสมือนกับว่าทุกอย่างเป็นปกติ


ภาพข้างล่าง เป็นตัวอย่างของการทำ CA cross-sign ของ CA ของ Let’s Encrypt ซึ่งเป็นผู้ออกใบรับรองให้กับเวบ datascience.cafe

  • DST ROOT CA X3 (ของ IdentTrust) เป็น root certificate ที่ฝังมากับ web browser ของผู้เขียน
  • IdentTrust ออกใบรับรองให้กับ Let’s Encrypt
  • Let’s Encrypt ออกใบรับรองให้กับ datascience.cafe

ดังนั้น หากผู้เข้าชมเวบไซท์มั่นใจว่า IdentTrust และ Let’s Encrypt จะไม่มีการออกใบรับรองสำหรับ datascience.cafe ให้กับคนอื่นที่ไม่ใช่ผู้เขียน ก็จะสามารถมั่นใจได้ว่า ไม่มีใครมาดักล้วงข้อมูลอยู่ตรงกลาง


สรุป

  1. SSL/TLS ณ ปัจจุบัน มีความปลอดภัยสูงระดับหนึ่ง
  2. เครื่องถอดรหัส SSL มีใช้กันทั่วไปอยู่แล้ว (โหลดโปรแกรมมาลงในคอมที่บ้านก็ได้)
    แต่มีเครื่องถอดรหัสอย่างเดียวก็ไม่มีประโยชน์มากนัก
  3. การล้วง data in transit ที่ถูกป้องกันโดย SSL/TLs ทำได้ยาก หากไม่มีการ
    3.1 ติดตั้ง ROOT CA เพิ่มเติมในเครื่องของเป้าหมาย หรือ
    3.2 ได้รับความร่วมมือจาก ROOT CA ที่เป็นที่ยอมรับอยู่แล้ว
  4. แม้ว่าจะมีการแก้ไขได้ตามข้อ 3 แต่ผู้ให้บริการ หรือเจ้าของเวบไซท์ ก็ยังมีเทคนิคอื่นๆในการปกป้องผู้ใช้บริการ เช่น การทำ Certificate & Public Key Pinning เป็นต้น
  5. การล้วงหรือการจารกรรมข้อมูล สามารถทำได้โดยกระบวนการอื่นที่ง่ายกว่าการถอดรหัส SSL เช่น การทำ phishing, spear phishing หรือ social engineering เป็นต้น

ในบทความนี้ผู้เขียนตัดรายละเอียดทางเทคนิคออกไปเพื่อให้ผู้อ่านมองเห็นภาพรวม หากผู้อ่านสนใจที่จะศึกษารายละเอียดต่อ แนะนำให้เริ่มต้นจาก link ข้างล่างนี้