2543 คำ
13 นาที
CyberSecurity Foundation EP.24 — TLS / HTTPS: ตู้ขนเงินหุ้มเกราะ — ป้องกันอะไร และไม่ได้ป้องกันอะไร
สารบัญ
HTTP vs HTTPS — ไปรษณียบัตร vs จดหมายใส่กล่องนิรภัย ปี 2025 — HTTP ใน production = ตาย TLS Handshake — 5 ขั้นที่เกิดในเสี้ยววินาที Handshake 5 ขั้น แบบไม่ต้องอ่าน RFC TLS 1.2 vs TLS 1.3 — ทำไม 1.3 ดีกว่า HTTPS ป้องกัน 3 อย่าง — Confidentiality / Integrity / Server Auth 1. Confidentiality in transit — ไม่มีใครระหว่างทางอ่านได้ 2. Integrity in transit — ไม่มีใครระหว่างทางแก้ได้ 3. Authentication of server — ยืนยันว่า server คือเจ้าของตัวจริง ภาพรวม 3 อย่าง — ขอย้ำอีกครั้ง HTTPS ไม่ได้ป้องกัน 4 อย่าง — ที่ทำให้คนพลาดบ่อย 1. Data at rest — HTTPS หมดหน้าที่ตอนถึงปลายทาง 2. Phishing site ที่มี cert ถูกต้อง — กับดักที่กุญแจสีเขียวก็โกหก 3. Misconfig — TLS เปิดแบบผิดๆ ก็ไร้ค่า 4. Client compromise — เครื่อง user ถ้าโดนแฮก HTTPS ก็ช่วยอะไรไม่ได้ TLS Attacks ระดับตำนาน — Heartbleed / POODLE / BEAST / DROWN Heartbleed 2014 — bug ที่ทำให้โลกหยุดหายใจ 1 สัปดาห์ POODLE 2014 — SSLv3 ตายในวันเดียว BEAST 2011 — TLS 1.0 ก็ไม่รอด DROWN 2016 — bug ข้าม protocol CRIME / BREACH — compression ก็ขายความลับได้ Lesson — update + ปิด protocol เก่า Equifax 2017 — เคสในกลุ่มเดียวกัน Recap — ตู้ขนเงินหุ้มเกราะ ทำหน้าที่แค่ระหว่างทาง

Series: CyberSecurity Foundation — รากฐาน Security สำหรับยุค AI (ภาษาคน)

Part 0 — WHY: เมืองนี้ทำไมต้องมียาม

  1. EP.01 — Cybersecurity คือเรื่องของคุณ
  2. EP.02 — 4 เคสที่เปลี่ยนวงการ
  3. EP.03 — CIA Triad
  4. EP.04 — Defense in Depth + Diversity
  5. EP.05 — Assume Breach + Risk

Part 1 — HOW: ระบบนิเวศของเมือง 6. EP.06 — ระบบนิเวศของโจร 7. EP.07 — ระบบนิเวศของผู้ป้องกัน 8. EP.08 — Framework: ISO/NIST/COBIT/CIS 9. EP.09 — Compliance Theater

Part 2 — Identity: บัตรประชาชน + กุญแจห้อง 10. EP.10 — IAM Lifecycle: เข้า / ย้าย / ออก 11. EP.11 — Authentication: 3 Factors + AAA 12. EP.12 — Password 101: MD5 / bcrypt / Salt / Pepper 13. EP.13 — MFA + Biometric 14. EP.14 — Kerberos 15. EP.15 — Federation + SSO 16. EP.16 — Authorization: RBAC / ABAC / MAC / DAC 17. EP.17 — PAM + Zero Trust (เร็วๆ นี้)

Part 3 — Data: ของในเซฟ 18. EP.18 — Data Classification + Lifecycle (เร็วๆ นี้) 19. EP.19 — Cryptography 101 (เร็วๆ นี้) 20. EP.20 — Symmetric: AES + ECB penguin (เร็วๆ นี้) 21. EP.21 — Asymmetric: RSA + Diffie-Hellman (เร็วๆ นี้) 22. EP.22 — Hashing: ลายนิ้วมือดิจิทัล (เร็วๆ นี้) 23. EP.23 — PKI + Certificates: Chain of trust (เร็วๆ นี้) 24. EP.24 — TLS / HTTPS: ตู้ขนเงินหุ้มเกราะ — ป้องกันอะไร และไม่ได้ป้องกันอะไร ← คุณอยู่ตรงนี้ 25. EP.25 — Email Security: SPF / DKIM / DMARC (เร็วๆ นี้) 26. EP.26 — Privacy Engineering (เร็วๆ นี้)

Part 4-6 (Infrastructure / Operations / Governance) — กำลังเขียนต่อ

EP.23 ผมพาคุณดู certificate + PKI — ระบบบัตรประชาชนของเมืองดิจิทัลที่มี Root CA เป็นราชวงศ์, Intermediate CA เป็นขุนนาง, Leaf cert เป็นบัตรประชาชนของพลเมือง (ในที่นี้ = เว็บไซต์). รู้แล้วว่าใบรับรองตัวตนทำงานยังไง — chain of trust สร้างจากอะไร — เคส DigiNotar 2011 ที่ CA โดนแฮกแล้วโลกหยุดหายใจ 1 อาทิตย์

แต่ — รู้ทฤษฎีของ certificate อย่างเดียวยังไม่พอครับ เพราะในชีวิตจริง — คุณไม่เคยจับ cert ตรงๆ. คุณเห็นมันแค่ตอนคลิกไอคอน กุญแจสีเขียว ข้างๆ URL บน Chrome / Safari / Edge เท่านั้น. แล้วกุญแจนั้น — มันคืออะไรกันแน่?

นั่นแหละครับคือ HTTPS — การใช้งานยอดฮิตของ certificate ในชีวิตประจำวันของเมืองดิจิทัล — และเป็นเรื่องที่ผมอยากให้คุณเข้าใจให้ลึก เพราะมันคือสิ่งที่ทุกคนคิดว่าตัวเอง “รู้แล้ว” — แต่จริงๆ ส่วนใหญ่เข้าใจผิดครึ่งทาง

ลองนึกฉากนี้ครับ. คุณเปิด Chrome — กรอก https://www.google.com — Enter — เห็นกุญแจสีเขียว — สบายใจ — login. ปกติของชีวิตประจำวัน. แต่ถ้าผมถามคุณ — “กุญแจสีเขียวนั้นบอกอะไร และไม่ได้บอกอะไรบ้าง” — คุณตอบได้ครบกี่ข้อ?

คำตอบยอดนิยมในวงการ — “กุญแจสีเขียว = เว็บปลอดภัย”. 4 คำนี้ผิดเกือบหมดครับ. มันถูกแค่ครึ่งเดียว — และครึ่งที่ผิด ทำให้คนหลงไปติดกับ phishing ปีละล้านครั้งทั่วโลก

ใน EP นี้ — ผมพาคุณดู HTTPS แบบเข้าใจจริงๆ. metaphor หลัก = ตู้ขนเงินหุ้มเกราะ — เหมือนรถ Brink’s ที่วิ่งระหว่างธนาคารกับสาขา — หุ้มเหล็กหนา 5 เซน — มี GPS — มีตราประทับ — ป้องกันคนระหว่างทาง. แต่ — ไม่ป้องกันคนปลายทาง. ถ้าคุณส่งเงินไปยังที่อยู่ของโจรที่แต่งตัวเป็นธนาคาร — ตู้ขนเงินจะส่งของให้โจรอย่างปลอดภัย 100% ครับ. นั่นแหละคือ HTTPS

ก่อนจะลง TLS handshake / สิ่งที่ HTTPS ป้องกัน vs ไม่ป้องกัน / TLS attack ระดับตำนาน ขอเริ่มจากภาพง่ายๆ ที่จำได้ตลอดครับ — ความต่างของ HTTP กับ HTTPS

HTTP vs HTTPS — ไปรษณียบัตร vs จดหมายใส่กล่องนิรภัย#

ภาพในใจที่ผมอยากให้คุณติดตัวออกจาก section นี้คือภาพเดียวครับ:

  • HTTP = ส่งไปรษณียบัตร — เปิดอ่านได้ — ใครที่มือถึงก็อ่านได้
  • HTTPS = ส่งจดหมายใส่กล่องนิรภัยล็อกกุญแจ — บุรุษไปรษณีย์แอบแกะดูก็เจอแค่กล่องเหล็ก — อ่านข้างในไม่ออก

ลองนึกตามผมครับ. ตอนคุณกรอก password เข้า http://shop.example.com (สังเกต — มี s ต่อท้ายหรือเปล่า?). ถ้าเป็น http ไม่มี s — สิ่งที่เกิดขึ้นข้างหลังคือ:

password ของคุณ — ตัวอักษรล้วนๆ ไม่ได้เข้ารหัสอะไรเลย — เดินทางผ่าน Wi-Fi ของร้านกาแฟ — ผ่าน router ของ ISP — ผ่านสายไฟใต้ดิน — ผ่าน Tier-1 ISP ระดับโลก — ถึง server ของ shop.example.com. ระหว่างทางผ่านมือคน + เครื่อง เป็นสิบ hop. ทุก hop เปิดดูได้ — ทุก hop จดได้

ในยุค 90s-2000s — เรื่องนี้ไม่ใช่เรื่องน่ากลัวเท่าไหร่ เพราะการดักฟังต้องใช้ skill สูง. แต่ในยุค 2020s+ — มี tool อย่าง Wireshark ที่ download ฟรี + คน 12 ปีดูคลิป YouTube 30 นาทีก็ใช้เป็น — เปิด Wi-Fi ร้านกาแฟ — เห็น password ของทุกคนในร้านที่ใช้เว็บ HTTP. ของจริงครับ ไม่ใช่หนัง Mr. Robot

นี่คือเหตุผลที่ Google + Mozilla + Apple พร้อมใจกัน — ตั้งแต่ปี 2018 เป็นต้นมา — บังคับให้ ทุกเว็บต้องเป็น HTTPS. ถ้าเว็บคุณยังเป็น HTTP อยู่ — Chrome แสดง “Not Secure” สีแดงสด ข้างๆ URL ทันที. ลูกค้าเห็นปุ๊บปิดหนีปั๊บ — ก่อนที่จะรู้ว่าเว็บคุณขายอะไรด้วยซ้ำ

ปี 2025 — HTTP ใน production = ตาย#

เอาตรงๆ ครับ — ปี 2025 ที่เรากำลังเข้าใกล้นี้ — ไม่มีข้ออ้างใดๆ ทั้งสิ้นที่จะรันเว็บ production เป็น HTTP. เหตุผลคือ:

  1. Let’s Encrypt = CA ฟรี + ออก cert อัตโนมัติ + อายุ 90 วัน + renew อัตโนมัติ — ตั้งแต่ปี 2016. ต้นทุน = 0 บาท
  2. Cloudflare = CDN ฟรี + ให้ HTTPS ฟรี + ตั้ง 5 นาทีจบ. ต้นทุน = 0 บาท
  3. Browser = Chrome / Firefox / Safari ทุกตัว — แสดง “Not Secure” สีแดง ถ้าเป็น HTTP — ตั้งแต่ปี 2018-2019
  4. SEO = Google ลด ranking เว็บที่เป็น HTTP — ตั้งแต่ปี 2014

ถ้าตอนนี้บริษัทคุณยังมีเว็บที่เป็น HTTP อยู่ มี 2 กรณีเท่านั้นที่เป็นไปได้ครับ (1) เป็น internal tool ที่อยู่หลัง VPN จริงๆ หรือ (2) ทีม dev ของคุณไม่ได้อัปเดทตัวเองมา 5 ปีแล้ว ซึ่งกรณีหลังนี้น่ากลัวกว่าเรื่อง HTTP เยอะครับ

มุมผู้บริหาร: สั่งทีม IT ทำ audit ภายใน 1 สัปดาห์ — list ทุก domain + subdomain ของบริษัท + ทุก URL ที่ลูกค้าใช้ — ติ๊กว่ายังเป็น HTTP อยู่ตรงไหนบ้าง. ถ้าเจอแม้ 1 URL ที่เป็น HTTP + รับ data จากผู้ใช้ (login, form, payment) — fix ภายใน 24 ชั่วโมง. ต้นทุนการ fix = 0 บาท (Let’s Encrypt / Cloudflare ฟรี) — ต้นทุนของการไม่ fix = ค่าปรับ PDPA + ข่าวลงหน้า 1 ตอนที่ password ลูกค้าหลุดผ่าน Wi-Fi ร้านกาแฟ

TLS Handshake — 5 ขั้นที่เกิดในเสี้ยววินาที#

ครับ — รู้แล้วว่า HTTPS = HTTP + encryption ระหว่างทาง. คำถามถัดมาคือ — มันเข้ารหัสยังไง. ตรงนี้คือเรื่องที่หลายคนเลื่อนผ่านเพราะคิดว่ายาก — แต่จริงๆ ภาพในใจง่ายมากครับ

ตัว encryption ของ HTTPS เรียกว่า TLS (Transport Layer Security) — เป็นชื่อใหม่ของ SSL (Secure Sockets Layer) ที่ตายไปแล้ว. ปัจจุบันมี TLS 1.2 + TLS 1.3 ที่ใช้กันใน production. TLS 1.0 + 1.1 + SSL 2.0 + 3.0 = ตายหมดแล้ว (จะอธิบายว่าทำไม ในหัวข้อ 5 — TLS attacks)

ก่อนที่ browser ของคุณจะส่งข้อมูลให้ server ได้ — มันต้อง “ทำความรู้จัก” กับ server ก่อน — เรียกว่า TLS Handshake. ลองนึกภาพ 2 คนนัดเจอกันที่ลานจอดรถมืดๆ เพื่อแลกของลับ — ต้องเช็คก่อนว่าใช่คนถูกไหม + ตกลงรหัสลับยังไง

Handshake 5 ขั้น แบบไม่ต้องอ่าน RFC#

ลองนึกเป็นบทสนทนาระหว่าง Client (browser ของคุณ) กับ Server (www.google.com) ครับ:

ขั้นที่ 1 — Client Hello

Client: “สวัสดีครับ ผมเป็น Chrome version 130. ผมรู้จัก TLS 1.2 + 1.3. ผมรู้จัก cipher suite พวกนี้ (AES-256-GCM, ChaCha20-Poly1305, …). นี่คือ random number ของผม. คุณอยากใช้อะไรล่ะ?”

ขั้นที่ 2 — Server Hello + Certificate

Server: “สวัสดีครับ ผมเลือก TLS 1.3 + AES-256-GCM. นี่ random number ของผม. และนี่คือ certificate ของผม — เซ็นโดย GTS CA 1C3 — ที่เซ็นโดย GTS Root R1. ตรวจสอบดูเถิด”

ขั้นที่ 3 — Verify Certificate Chain

Client: (ใน 0.01 วินาที) ตรวจ chain — GTS Root R1 อยู่ใน trusted root store ของระบบ + ลายเซ็นถูกต้อง + ยังไม่หมดอายุ + ชื่อตรงกับ www.google.com + ไม่อยู่ใน revocation list (OCSP) — ผ่าน

ขั้นที่ 4 — Key Exchange (Diffie-Hellman / ECDH)

Client + Server: ใช้คณิตศาสตร์ — ที่ EP.21 (Asymmetric crypto) ผมจะอธิบายลึก — ในการ “ตกลงกุญแจร่วม” โดยไม่ส่งกุญแจตรงๆ ผ่านสาย. โจรที่ฟังอยู่กลางทาง — เห็นทั้งหมด — แต่คำนวณกุญแจไม่ออก เพราะคณิตศาสตร์มันบิดมาก ๆ (ECDH / Diffie-Hellman key exchange)

ขั้นที่ 5 — Encrypted Session

หลังจากนั้น — ทั้ง client + server มี กุญแจร่วม (symmetric key) ที่เหมือนกัน — ใช้กุญแจนี้เข้ารหัสทุก message ต่อจากนั้นด้วย AES-256-GCM. โจรที่ฟังอยู่ — เห็นแค่ตัวอักษรขยะ — อ่านไม่ออกครับ

ทั้งหมดนี้ — ใช้เวลารวมประมาณ 50-100 millisecond (เร็วกว่าคุณกระพริบตา 3 เท่า)

TLS 1.2 vs TLS 1.3 — ทำไม 1.3 ดีกว่า#

TLS 1.2 (2008) — มี 2 round trip (browser ส่งไป-มา 2 รอบก่อนเริ่มคุย). TLS 1.3 (2018) — รวบเหลือ 1 round trip + ตัด cipher suite เก่าๆ ที่อันตรายออกหมด (RC4, DES, MD5, SHA-1, …)

ผลคือ TLS 1.3 — เร็วกว่า + ปลอดภัยกว่า ในเวลาเดียวกัน. 0-RTT mode (zero round trip — ใช้กุญแจเก่าที่จำได้) ทำให้ resume session ได้แทบจะ instant. ปัจจุบันปี 2025 — server ใหม่ทุกตัวต้องรองรับ TLS 1.3. browser ทุกตัวรองรับมาตั้งแต่ปี 2018-2019

มุมผู้บริหาร: ขอ list จากทีม IT ว่า TLS version ต่ำสุดที่เปิดอยู่บน production คืออะไร. ถ้าเปิด TLS 1.0 หรือ 1.1 อยู่ — fix ทันที (ปิดทั้งคู่ — keep แค่ 1.2 + 1.3). PCI-DSS บังคับให้ปิด TLS 1.0 มาตั้งแต่ปี 2018 + 1.1 ตั้งแต่ 2020. ถ้าบริษัทคุณเป็น merchant ที่รับบัตรเครดิต + ยังเปิด TLS 1.0/1.1 อยู่ — คุณ non-compliant ทันที + เสี่ยงถูก Visa/Mastercard ถอน license

HTTPS ป้องกัน 3 อย่าง — Confidentiality / Integrity / Server Auth#

ทีนี้มาถึงจุดที่สำคัญที่สุดของ EP นี้ครับ — HTTPS ป้องกันอะไรบ้าง. ขอให้ติดในหัว 3 อย่างนี้ — ไม่มากไม่น้อย:

1. Confidentiality in transit — ไม่มีใครระหว่างทางอ่านได้#

นี่คือสิ่งที่คนส่วนใหญ่นึกถึงเป็นอันดับแรก. HTTPS เข้ารหัสข้อความทั้งหมดระหว่าง browser ของคุณกับ server ปลายทาง. คนระหว่างทาง — Wi-Fi ของร้านกาแฟ / ISP ของคุณ / Tier-1 ISP / ใครก็ตามที่ดักฟัง — เห็นแค่ขยะที่ถอดรหัสไม่ออก

แต่ — สังเกตคำว่า in transit ครับ. แปลว่า — ระหว่างทางเท่านั้น. พอข้อมูลถึง server แล้ว — HTTPS หมดหน้าที่. ข้อมูลใน database ของ server เก็บยังไง — เข้ารหัสหรือเปล่า — เป็นอีกเรื่อง (เรียกว่า data at rest encryption ซึ่งคนละเรื่องกับ HTTPS เลย — รายละเอียดอยู่ใน EP.18)

2. Integrity in transit — ไม่มีใครระหว่างทางแก้ได้#

นี่คืออย่างที่ 2 ที่ HTTPS ทำให้ — แต่หลายคนนึกไม่ถึง. นอกจากการ “อ่าน” ไม่ได้แล้ว — คนระหว่างทางยัง “แก้” ไม่ได้ด้วย

ลองนึกตัวอย่าง. ถ้าคุณส่งคำสั่งโอนเงินผ่าน HTTP — โจรที่อยู่กลางทาง — เห็นว่าคุณส่ง “โอน 1,000 บาท ไปบัญชี 12345” — เปลี่ยนเป็น “โอน 100,000 บาท ไปบัญชี 99999” (บัญชีของโจร) — ส่งต่อไปให้ server. server เห็นข้อความ — ดูเหมือนมาจากคุณ — โอนตามนั้น. คุณซวย

ใน HTTPS — ทุก message ที่ส่งมีค่า MAC (Message Authentication Code) ติดมาด้วย (ผ่าน AEAD cipher อย่าง AES-GCM หรือ ChaCha20-Poly1305). ถ้าโจรแก้แม้ 1 bit — MAC ไม่ตรงกัน — server reject message ทันที + ตัดการเชื่อมต่อ. integrity protected

3. Authentication of server — ยืนยันว่า server คือเจ้าของตัวจริง#

อันนี้คือสิ่งที่คนพลาดมากที่สุดครับ. HTTPS — ผ่าน certificate ที่เรียนใน EP.23 — ยืนยันว่า คุณกำลังคุยกับ www.google.com ตัวจริง ไม่ใช่ใครก็ตามที่แอบขึ้น domain ปลอม + บอกว่าตัวเองเป็น Google

นี่สำคัญมาก — เพราะถ้าไม่มีการยืนยัน server — โจรสามารถทำ Man-in-the-Middle (MitM) attack ได้ง่ายๆ. โจรสร้าง server ปลอมที่ก็อปหน้า login ของ google.com ทุกอย่าง — แทรกตัวเองอยู่กลางทาง — รับ traffic จากคุณ — ส่งต่อให้ google จริง — ทำตัวเป็น “middleman”. คุณไม่รู้ตัวด้วยซ้ำ

HTTPS ป้องกันด้วยการบังคับให้ server แสดง certificate ที่เซ็นโดย CA ที่ browser เชื่อ + ระบุชื่อ domain ที่ตรงกัน. โจรไม่มีทางขอ certificate ของ www.google.com ได้ (เพราะ CA ไม่ออกให้ — เคยอ่านเคส DigiNotar ใน EP.23 มาแล้ว ว่าทำไม)

ภาพรวม 3 อย่าง — ขอย้ำอีกครั้ง#

ลองนึกเป็น checklist สั้นๆ ครับ:

  • Confidentiality in transit = อ่านไม่ออก
  • Integrity in transit = แก้ไม่ได้
  • Server Authentication = ยืนยัน server คือตัวจริง

3 อย่างนี้ + ไม่มากกว่านี้. ทุกอย่างที่นอกเหนือจากนี้ — HTTPS ไม่ป้องกันให้ — และนี่คือจุดที่คนผิดพลาดเยอะที่สุด — section ถัดไปครับ

มุมผู้บริหาร: ตอนทีม dev หรือ vendor บอกคุณว่า “เว็บเรามี HTTPS แล้ว ปลอดภัยแล้ว” — ขอให้ถามกลับ 3 ข้อนี้: (1) Data at rest เข้ารหัสหรือเปล่า? (HTTPS ไม่ครอบคลุม), (2) ระบบมีกันการคลิก phishing link หรือเปล่า? (HTTPS ไม่ป้องกัน), (3) TLS version + cipher suite ที่เปิดใช้ ผ่าน SSL Labs A+ หรือเปล่า? (ลองเช็คฟรีที่ ssllabs.com/ssltest). ถ้าตอบไม่ได้ทั้ง 3 ข้อ — คุณยังมี gap ทั้งที่คิดว่าตัวเอง “ปลอดภัย

HTTPS ไม่ได้ป้องกัน 4 อย่าง — ที่ทำให้คนพลาดบ่อย#

ทีนี้มาถึงหัวข้อที่ผมอยากให้คุณอ่านช้าๆ — HTTPS ไม่ได้ป้องกันอะไรบ้าง. นี่คือ gap ความเข้าใจที่ทำให้บริษัทล้มในข่าวซ้ำๆ ทุกปี

1. Data at rest — HTTPS หมดหน้าที่ตอนถึงปลายทาง#

ตัวอย่างจริง — ลองนึกเว็บ shop.example.com. คุณกรอกบัตรเครดิต — HTTPS เข้ารหัสตอนส่ง — ปลอดภัยระหว่างทาง. ของถึง server ของ shop. server เก็บบัตรเครดิตของคุณ — เก็บยังไง?

ถ้า shop เก็บบัตรเครดิตเป็น plain text ใน database (ผิด PCI-DSS — แต่บริษัทเล็กๆ ทำกันเยอะ) — วันที่ database ถูกแฮก — เลขบัตรลูกค้าทั้งหมดหลุดในรูปแบบที่อ่านได้ทันที. HTTPS ของ shop = A+ rating บน SSL Labs ทุกอย่าง — แต่ไม่ช่วยอะไรเลย เพราะ HTTPS ปกป้องตอนเดินทางเท่านั้น — ไม่ได้ปกป้องตอนเก็บ

ภาพในใจ: รถ Brink’s หุ้มเกราะส่งเงินถึงสาขาธนาคารแล้ว — เอาเงินไปวางบนโต๊ะหน้าธนาคารโดยไม่ใส่ตู้เซฟ. โจรไม่ต้องปล้นรถ Brink’s — เดินมาหยิบจากโต๊ะเอา. นั่นคือ data at rest ที่ไม่ได้เข้ารหัส

2. Phishing site ที่มี cert ถูกต้อง — กับดักที่กุญแจสีเขียวก็โกหก#

อันนี้คือกับดักที่ผมอยากให้คุณจำตลอดชีวิตครับ

โจรปี 2025 — ไม่ได้พยายามแฮก HTTPS อีกต่อไป (ยากเกิน + ไม่คุ้ม). โจรทำง่ายกว่านั้น:

  1. ซื้อ domain ที่หน้าตาคล้ายของจริง — เช่น googlee.com (มี e 2 ตัว) / gооgle.com (g, ο, ο = อักษรซีริลลิก ที่หน้าตาเหมือน g, o, o ของอังกฤษ) / google-login.com / google.com.evil.tk
  2. ขอ certificate ฟรีจาก Let’s Encrypt สำหรับ domain ที่ตัวเองซื้อมา — ฟรี + ไม่มีการตรวจสอบความเป็นเจ้าของบริษัท
  3. ก๊อปหน้า login ของ google มาวางบน server — ใส่ certificate
  4. ส่งอีเมล phishing — ให้ link ไป googlee.com (ที่ตัวเองทำ)

เหยื่อคลิก — เห็น กุญแจสีเขียว บน browser — สบายใจ — กรอก username + password — กด login. password ตกในมือโจรเรียบร้อย

กุญแจสีเขียวบอกอะไรในเคสนี้? บอกว่า — “connection นี้เข้ารหัสปลอดภัย + คุณกำลังคุยกับเจ้าของ domain googlee.com ตัวจริง”. ทุกอย่าง ถูกต้องทุกประการ — เพราะคุณคุยกับ googlee.com ตัวจริงครับ — ที่บังเอิญเป็นโจร

กุญแจสีเขียว ≠ เว็บนี้ปลอดภัย. กุญแจสีเขียว = (1) เข้ารหัส + (2) เป็นเจ้าของ domain นี้จริง. มันไม่ได้บอกว่า domain นี้ตรงกับบริษัทที่คุณตั้งใจจะคุยด้วยหรือเปล่า — เรื่องนั้นคุณต้องดูเอง

นี่คือสาเหตุที่ในปี 2019 — APWG (Anti-Phishing Working Group) รายงานว่า — กว่า 74% ของ phishing site มี HTTPS + กุญแจสีเขียว. ปี 2020 ตัวเลขนี้ขึ้นเป็น 78%. ปี 2023 = 84%. กุญแจสีเขียวกลายเป็นมาตรฐานของโจร — ไม่ใช่สัญญาณของความปลอดภัยอีกต่อไป

อ้าว — แล้ว Let’s Encrypt ผิดไหม? ไม่ผิดครับ. Let’s Encrypt มีหน้าที่ออก DV (Domain Validation) cert เท่านั้น — ยืนยันว่าคุณเป็นเจ้าของ domain. ไม่ใช่ตำรวจที่ต้องตรวจสอบว่าใครเป็นโจร. คนที่ต้องตรวจคือ — ผู้ใช้ + browser + registrar

3. Misconfig — TLS เปิดแบบผิดๆ ก็ไร้ค่า#

HTTPS ที่ “configured ไม่ถูก” ก็เหมือนใส่ตู้เซฟแบบเปิดประตูทิ้งไว้ครับ. ตัวอย่างของ misconfig ที่เจอบ่อย:

  • เปิด TLS 1.0 / 1.1 ที่ deprecated แล้ว — เปิด attack surface สำหรับ POODLE / BEAST
  • เปิด weak cipher suite — RC4, DES, 3DES, MD5, NULL cipher — โจรถอดรหัสได้ในเวลาไม่นาน
  • Cert หมดอายุ — แล้ว user override warning — ฝึก user ให้ “กดผ่านเรื่อย” — วันที่ MitM ของจริงเข้ามา user ก็จะกดผ่านอยู่ดี
  • No HSTS — โจรหลอกให้ browser downgrade จาก HTTPS ลงเป็น HTTP ได้ (SSL Strip attack)
  • Self-signed cert ใน production — browser ไม่เชื่อ — user เห็น warning — ปิด warning ทิ้ง — ไม่มีประโยชน์

ลองเข้า ssllabs.com/ssltest กรอก domain ของบริษัทคุณดู — มันให้เกรด A+ ลงไปถึง F. target = A หรือ A+. ถ้าเกรด B ลงไป — ทีม dev ต้อง fix ภายในสัปดาห์นี้

4. Client compromise — เครื่อง user ถ้าโดนแฮก HTTPS ก็ช่วยอะไรไม่ได้#

HTTPS ปกป้องข้อมูลระหว่าง browser ของคุณ → server. แต่ถ้า browser ของคุณ + เครื่องของคุณ โดนยึดแล้ว — เกมจบครับ

ลองนึกถ้า:

  • เครื่องคุณมี keylogger — บันทึกทุกตัวอักษรที่คุณพิมพ์ — รวมถึง password ก่อนที่ HTTPS จะเข้ารหัส
  • Browser คุณมี malicious extension — อ่านทุกหน้าเว็บที่คุณเปิด — รวมถึงเลขบัตรเครดิตที่คุณพิมพ์
  • เครื่องคุณติด info-stealer malware — ก็อปทั้ง cookie + session token — เอาไปใช้ login เป็นคุณ
  • ทีม IT บริษัทคุณติดตั้ง MitM proxy ที่ฝัง root cert ของบริษัทไว้ในทุกเครื่อง — บริษัทอ่าน traffic HTTPS ของพนักงานได้หมด (ของจริง — เรียก SSL inspection — ใช้ใน enterprise)

HTTPS = transport security. ถ้า endpoint โดนยึด — security เจาะทะลุไปแล้ว — HTTPS ช่วยอะไรไม่ได้

มุมผู้บริหาร: อย่าตกหลุมพรางคำว่า “เว็บเรา HTTPS แล้ว = ปลอดภัย”. HTTPS ปลอดภัยแค่ data in transit — ส่วนที่เหลือ (data at rest / phishing / endpoint) ไม่เกี่ยวเลย. ทดสอบเร็วๆ ที่ ssllabs.com/ssltest — ถ้า domain หลักของบริษัทไม่ได้ A+ = ตั้ง TLS config ผิด เปิดประตูให้โจร downgrade attack ทันที

TLS Attacks ระดับตำนาน — Heartbleed / POODLE / BEAST / DROWN#

ตอนนี้คุณรู้แล้วว่า HTTPS ป้องกันอะไร + ไม่ได้ป้องกันอะไร. แต่ ตัว TLS เอง ก็ไม่ใช่ของที่ไม่เคยพังครับ. ในประวัติศาสตร์ 25 ปีที่ผ่านมา TLS / SSL เคยถูกเจาะระดับ catastrophic หลายครั้ง — และนี่คือเหตุผลที่คุณต้อง update TLS version + library อย่างสม่ำเสมอ

Heartbleed 2014 — bug ที่ทำให้โลกหยุดหายใจ 1 สัปดาห์#

Heartbleed (CVE-2014-0160) — เป็นบั๊กใน OpenSSL (library ที่ใช้ใน server กว่า 60% ของอินเทอร์เน็ตในปี 2014) ที่อนุญาตให้ใครก็ตาม อ่าน memory ของ server ได้ครั้งละ 64KB — ผ่าน feature ที่ชื่อ TLS heartbeat (ไว้ check ว่า connection ยังอยู่)

bug คืออะไร? heartbeat protocol ให้ client ส่งข้อความเล็กๆ + บอกว่า “ข้อความผมยาวเท่านี้ — เธอตอบกลับมาเท่านี้นะ”. server ที่ buggy — เชื่อ client โดยไม่ตรวจ — ถ้า client โกหกว่ายาว 64KB (จริงๆ ส่งมาแค่ 1 byte) — server ตอบกลับ memory ของตัวเอง 64KB — ที่ในนั้นอาจมี private key + password ของ user + session cookie + ของลับใดๆ ที่อยู่ใน RAM ตอนนั้น

ผลกระทบ — OpenSSL เวอร์ชั่นที่ buggy ใช้กันทั่วโลก ระหว่างปี 2012-2014. วันที่ bug ประกาศ (7 เมษา 2014) — ทุก server ในโลกที่ใช้ OpenSSL bugged version — โดนยึดได้ทันที. ในสัปดาห์เดียวกัน — Yahoo + GitHub + Reddit + Tumblr + … ต้องบังคับให้ user reset password ทั่วโลก

นี่คือสาเหตุที่ตอนนั้น browser มีไอคอน xkcd Heartbleed + ทุกเว็บส่งอีเมลให้ user “เปลี่ยน password ด่วน” พร้อมกันใน 1 สัปดาห์ — ของจริงครับ ไม่ใช่ตำนาน

POODLE 2014 — SSLv3 ตายในวันเดียว#

POODLE (Padding Oracle On Downgraded Legacy Encryption) — ปี 2014 เช่นกัน — เป็นการเจาะ SSLv3 ที่เก่าตั้งแต่ปี 1996. attacker บังคับให้ browser downgrade จาก TLS ลงเป็น SSLv3 — แล้วใช้ padding oracle attack ถอดรหัส cookie ได้

ผลคือ — ทั่วโลกปิด SSLv3 ทันทีในเดือนตุลาคม 2014. SSLv3 = ตายแล้ว ตั้งแต่นั้น — ใครยังเปิดอยู่ในปี 2025 = ตั้งใจให้โจรเจาะ

BEAST 2011 — TLS 1.0 ก็ไม่รอด#

BEAST (Browser Exploit Against SSL/TLS) — ปี 2011 — เจาะ TLS 1.0 ผ่าน weakness ใน CBC mode + predictable IV. ผลคือ — ทั่วโลกค่อยๆ ปิด TLS 1.0 — แต่ปิดช้ามาก (เพราะมี user legacy เยอะ). กว่าจะปิดสนิทจริงๆ ก็ปี 2020

DROWN 2016 — bug ข้าม protocol#

DROWN (Decrypting RSA with Obsolete and Weakened eNcryption) — ปี 2016 — เจาะ SSLv2 (ที่ตายตั้งแต่ปี 1995) — เพื่อ break TLS connection ที่ใช้ server เดียวกัน. ผลคือ — กระตุ้นให้ทุก server ปิด SSLv2 + SSLv3 หมดสิ้น

CRIME / BREACH — compression ก็ขายความลับได้#

CRIME (Compression Ratio Info-leak Made Easy) — ปี 2012 — โจมตีผ่าน TLS compression. BREACH — ปี 2013 — version ที่โจมตี HTTP compression. ทั้งคู่อาศัยข้อเท็จจริงว่า — ตัวอักษรที่ซ้ำกันถูก compress ให้สั้นลง — โจรเดาขนาดได้ → เดาตัวอักษรได้

ผลคือ — ทั่วโลกปิด TLS compression. HTTP compression ใช้ระวังขึ้น

Lesson — update + ปิด protocol เก่า#

บทเรียนของ TLS attacks ทุกตัว — มีรูปแบบเดียวกัน:

  1. มีคนเจอ bug ใน library / protocol เก่า
  2. ประกาศต่อสาธารณะ (responsible disclosure ให้เวลา vendor fix ก่อน)
  3. โลกแห่กัน patch + ปิด version เก่า
  4. บริษัทที่ไม่ patch — โดนเจาะ 6-12 เดือนหลังจากนั้น

ถามตัวเองครับ — บริษัทคุณ patch OpenSSL ครั้งล่าสุดเมื่อไหร่? ถ้าตอบไม่ได้ — คุณคือเป้าหมาย

Equifax 2017 — เคสในกลุ่มเดียวกัน#

ในข่าว Equifax 2017 (ที่ข้อมูล 147 ล้าน user หลุด) มีรายละเอียดที่น่าสนใจครับ ในช่วงเวลาที่ Equifax ถูกเจาะ certificate ของระบบ monitoring TLS ของพวกเขาหมดอายุไป 10 เดือน ก่อนหน้านั้น ระบบ monitoring เลย ไม่ทำงาน ตลอด 10 เดือน โจรเดินเข้าออกได้สบาย ไม่มีใครเห็น traffic แปลกๆ cert ที่หมดอายุเป็นปัจจัยหนึ่งของหายนะมูลค่ากว่า $700M

บทเรียน — cert lifecycle management สำคัญพอๆ กับ TLS version. ปี 2025 — automation (Let’s Encrypt + cert-manager + ACME protocol) ทำให้ไม่มีข้ออ้างว่า “cert หมดอายุเพราะลืม renew” อีกแล้ว

มุมผู้บริหาร: ทำ 3 SLA ที่เกี่ยวกับ TLS ในบริษัท — (1) TLS library update SLA = patch ภายใน 48 ชั่วโมงหลัง CVE critical ประกาศ (OpenSSL ระดับ Heartbleed), (2) Certificate renewal SLA = renew อัตโนมัติ + alert 30 / 14 / 7 / 1 วันก่อนหมดอายุ, (3) TLS version SLA = ตรวจ SSL Labs grade ของ domain หลัก เดือนละครั้ง — target A+. 3 SLA นี้ — ทำให้คุณไม่เป็น Equifax คนต่อไป

Recap — ตู้ขนเงินหุ้มเกราะ ทำหน้าที่แค่ระหว่างทาง#

ถ้าให้สรุปทั้ง EP เป็นภาพเดียวครับ — HTTPS = ตู้ขนเงินหุ้มเกราะ ที่วิ่งระหว่างคุณกับ server

ตู้นี้:

  • หุ้มเหล็กหนา — คนระหว่างทางอ่านไม่ออก (Confidentiality)
  • มีตราประทับ — คนระหว่างทางแก้ไม่ได้ (Integrity)
  • มีปลายทางที่ระบุชัด + ตรวจสอบได้ — คุณรู้ว่าส่งไปที่ไหน (Server Authentication)

แต่ตู้นี้ — ไม่ได้ป้องกันสิ่งที่อยู่ปลายทาง:

  • ถ้าปลายทางวางเงินไว้บนโต๊ะหลังจากแกะตู้แล้ว = data at rest ไม่เข้ารหัส
  • ถ้าคุณส่งไปยังที่อยู่ของโจรที่แต่งตัวเป็นธนาคาร = phishing site ที่มี cert ถูกต้อง
  • ถ้าตู้เก่าซ่อมไม่ดี = misconfig + TLS attack
  • ถ้าคนในบ้านของคุณ (เครื่องคุณเอง) เป็นโจร = client compromise

สิ่งที่ผู้นำต้องจำจาก EP นี้มี 2 ข้อครับ

ข้อแรก — HTTPS = พื้นฐาน ไม่ใช่ปลายทาง. ปี 2025 — HTTPS = baseline ที่ทุกเว็บต้องมี — เหมือนล็อกประตูบ้าน. แต่อย่าหลงคิดว่า “เรา HTTPS แล้ว = ปลอดภัย”. HTTPS ตอบโจทย์แค่ transport — ไม่ตอบโจทย์ storage / phishing / user awareness / endpoint security. ถ้าทีม dev ของคุณบอกว่า “ปลอดภัยแล้ว เพราะมี HTTPS” — เขาเข้าใจ security แค่ 30% ของจริง

ข้อสอง — กุญแจสีเขียวบอกแค่ 2 อย่าง — ไม่ได้บอกว่า “บริษัทนี้น่าเชื่อถือ”. กุญแจสีเขียวบอก (1) encryption ทำงาน + (2) เป็นเจ้าของ domain นี้จริง. ไม่ได้บอกว่า domain นี้ตรงกับบริษัทที่คุณตั้งใจคุยด้วย — ไม่ได้บอกว่าเจ้าของ domain นี้เป็นคนดี. ในยุคที่ 84% ของ phishing site มีกุญแจสีเขียว — การฝึกพนักงานให้อ่าน domain name ก่อนคลิก = สำคัญพอๆ กับการเปิด HTTPS ของเว็บคุณเอง

ตู้ขนเงินหุ้มเกราะของเมืองเราตอบโจทย์ web traffic ครบแล้ว. แต่ — อีเมล ไม่ได้เดินทางผ่าน HTTPS ครับ. อีเมลมีระบบของตัวเอง — โบราณกว่า + เปราะบางกว่ามาก. โจรปลอมเป็นคนอื่นส่งอีเมลได้ง่ายๆ — เปิด CEO Fraud / BEC ที่ FBI ประเมินว่าทำเงินให้โจรปีละ 50 พันล้านดอลลาร์ทั่วโลก. EP.25 เราจะมาดู SPF / DKIM / DMARC — ระบบป้อมยาม + ตราประทับ + policy ของโลกอีเมล — และทำไมหลายบริษัทตั้งระบบนี้ไว้แต่ปิดสวิตช์ไว้โดยไม่รู้ตัว

→ EP.25 — Email Security: SPF / DKIM / DMARC + BEC (เร็วๆ นี้)