สารบัญ
Series: CyberSecurity Foundation — รากฐาน Security สำหรับยุค AI (ภาษาคน)
Part 0 — WHY: เมืองนี้ทำไมต้องมียาม
- EP.01 — Cybersecurity คือเรื่องของคุณ
- EP.02 — 4 เคสที่เปลี่ยนวงการ
- EP.03 — CIA Triad
- EP.04 — Defense in Depth + Diversity
- 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 12. EP.12 — Password 101 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: 3 ตระกูล (เร็วๆ นี้) 20. EP.20 — Symmetric Deep: AES + ECB penguin (เร็วๆ นี้) 21. EP.21 — Asymmetric Deep: RSA + Diffie-Hellman (เร็วๆ นี้) 22. EP.22 — Hashing Deep: ลายนิ้วมือดิจิทัล (เร็วๆ นี้) 23. EP.23 — PKI + Certificates: Chain of Trust + DigiNotar ← คุณอยู่ตรงนี้ 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.21 ผมพาคุณดู Asymmetric crypto กุญแจ 2 ดอก Public key ใครก็เห็นได้ ใช้ encrypt และ verify signature ส่วน Private key เก็บคนเดียว ใช้ decrypt และ sign เปรียบเป็นตู้ไปรษณีย์ที่ใครก็ใส่จดหมายได้ แต่เปิดได้คนเดียว
ทีนี้ลองนึกฉากนี้ครับ. คุณกำลังจะ login เข้า Gmail. browser ของคุณส่งคำขอไปที่ gmail.com — server ตอบกลับมาพร้อม public key หนึ่งดอก. server บอกว่า — “นี่คือ public key ของ Google ครับ. ใช้อันนี้ encrypt password ของคุณ แล้วส่งมา”
แต่ — เอาตรงๆ — คุณจะรู้ได้ยังไงว่า public key ดอกนี้คือของ Google จริงๆ?
ถ้ามีโจรที่นั่งอยู่ตรงกลางระหว่างคุณกับ Google (เช่น Wi-Fi ฟรีของร้านกาแฟ) — โจรอาจ ส่ง public key ของโจรเอง มาให้คุณ. คุณ encrypt password ด้วย public key ของโจร → โจร decrypt อ่านได้ทันที. นี่คือ Man-in-the-Middle attack (MITM) — โจรเสียบตัวเองตรงกลาง
Crypto ตอบคำถาม “encrypt อย่างไร” ได้แล้ว — แต่ยังไม่ตอบคำถามที่ใหญ่กว่า: “เชื่อ key ใครได้บ้าง?”
EP นี้ผมพาคุณดู PKI (Public Key Infrastructure) — ระบบที่ตอบคำถามว่า “key นี้เป็นของจริงไหม”. เปรียบเทียบง่ายๆ ครับ — มันคือ ระบบบัตรประชาชนของอินเทอร์เน็ตทั้งโลก. ใน Part 3 เราเดินอยู่ในเซฟของเมือง. EP นี้เราขึ้นมาที่ ศาลากลาง — ที่ออกบัตรประชาชน + ตราประทับ + ยืนยันว่าใครเป็นใคร
ก่อนจะเดินดู CA / certificate / revocation / Certificate Transparency — ขอเริ่มจากคำถามที่อยู่ใต้ทั้งระบบนี้ครับ — “ทำไม crypto อย่างเดียวไม่พอ?”
ปัญหาความเชื่อ — Crypto บอก “encrypt อย่างไร” แต่ไม่บอก “เชื่อใคร”
ลองนึกสถานการณ์ในโลกจริงครับ — คุณเดินทางไปต่างประเทศ. ถึงด่านตรวจคนเข้าเมือง — เจ้าหน้าที่ถามว่า “คุณคือใคร?”. คุณยื่น หนังสือเดินทาง ให้
ทีนี้คำถามที่ลึกขึ้น — เจ้าหน้าที่ตรวจคนเข้าเมืองของประเทศนี้ จะรู้ได้ยังไงว่าหนังสือเดินทางนี้ของจริง? เจ้าหน้าที่ไม่ได้รู้จักคุณเป็นการส่วนตัว. ไม่เคยเห็นหน้าคุณมาก่อน. ไม่รู้ว่าคุณคือใคร
คำตอบในโลกจริง — ตรา + ลายเซ็น + ลายน้ำ + chip บนหนังสือเดินทาง ที่ออกโดย รัฐบาลของประเทศคุณ. และเจ้าหน้าที่ของประเทศปลายทาง เชื่อรัฐบาลของประเทศคุณ — เพราะมีข้อตกลงระหว่างประเทศ
ระบบความเชื่อในโลกจริงนี้มี 2 ส่วน:
- Trust anchor — รัฐบาลที่ทุกประเทศตกลงกันว่าน่าเชื่อ (มี criteria + การตรวจสอบ)
- Chain of trust — รัฐบาล → ออกหนังสือเดินทางให้ประชาชน → ประชาชนถือหนังสือเดินทางผ่านด่านได้
ในโลกดิจิทัล — PKI (Public Key Infrastructure) คือระบบเดียวกัน. ลองนึกบัตรประชาชน + ระบบราชการ + ตราประทับของรัฐ ทั้งหมดยกมาวางในอินเทอร์เน็ต
ทำไมถึงต้องมีระบบนี้? เพราะ asymmetric crypto ที่ EP.21 พูดถึง — ตอบคำถามได้แค่ “ถ้าคุณรู้แล้วว่า public key นี้เป็นของใคร — encrypt + verify ได้แน่นอน”. แต่ public key ดอกแรกที่คุณเห็น — ใครรับประกันว่ามันของจริง?
ในยุคแรกๆ ของ internet (ปี 1990s ตอนต้น) — คนเคยฝันว่าจะใช้ Web of Trust (PGP / GPG ใช้ model นี้) — คือ “ฉันเชื่อ A. A เชื่อ B. ดังนั้นฉันเชื่อ B”. แต่ระบบนี้ scale ไม่ขึ้น. ผู้ใช้ทั่วไปไม่ได้รู้จัก expert ที่จะ vouch ให้กัน
วงการเลยลงเอยกับอีก model หนึ่ง — Hierarchical PKI — มี trusted authority กลาง ที่ทุกคนเชื่อ — ออกบัตรประชาชนให้คนอื่น. นี่คือ model ที่ HTTPS ทั่วโลกใช้กันในวันนี้
มุมผู้บริหาร: PKI ฟังดูเหมือนเรื่อง deep technical — แต่จริงๆ มันคือเรื่อง trust governance ที่บริษัทคุณใช้อยู่ทุกวันโดยไม่รู้ตัว. ทุกครั้งที่พนักงานเปิด Gmail / Outlook / Salesforce — browser ของเขา ตัดสินใจอัตโนมัติว่าเชื่อ Google / Microsoft / Salesforce เพราะมี CA ที่ vouch ให้. ถ้าระบบนี้พัง (เช่นเคส DigiNotar ที่จะเล่าต่อ) — ทั้งบริษัทอาจ login เข้าเว็บปลอมโดยไม่รู้ตัว. ในมุม risk management — PKI คือ supply chain ของความเชื่อ ที่ทุกบริษัทใน internet ใช้ร่วมกัน
CA Hierarchy — ราชวงศ์, ขุนนาง, บัตรประชาชน
ทีนี้มาดูโครงสร้างของ PKI กันครับ. ผมขอใช้ภาพ ระบบบัตรประชาชนของเมือง เพื่อให้เห็นชัด
ใน PKI มี 3 ชั้น หลักที่ต้องจำ:
- Root CA = ราชวงศ์ ที่ทุกคนในเมืองเชื่อ. ไม่มีใครออกบัตรให้ราชวงศ์ — ทุกคนเชื่อโดย default
- Intermediate CA = ขุนนาง ที่ราชวงศ์แต่งตั้ง. ราชวงศ์ออกตราประทับให้ขุนนางว่า “คนนี้แทนข้าได้”
- Leaf certificate = บัตรประชาชน ของแต่ละคน / เว็บไซต์. ออกโดยขุนนาง
ลองนึกการเดินทางของความเชื่อจาก browser ของคุณไปถึง Gmail ครับ:
- คุณเปิด
https://mail.google.com - server ของ Gmail ส่ง leaf cert ของ
mail.google.comกลับมา. ใน cert บอกว่า “ฉันคือ mail.google.com — ออกบัตรโดย GTS CA 1C3” - GTS CA 1C3 คือ Intermediate CA. server แนบ cert ของ Intermediate มาด้วย. cert ของ Intermediate บอกว่า “ฉันคือ GTS CA 1C3 — ออกตราโดย GTS Root R1”
- GTS Root R1 = Root CA ของ Google. อยู่ใน trust store ของ browser ของคุณตั้งแต่ตอน install browser แล้ว
- browser เช็ค chain — ลายเซ็นของ Root → Intermediate → Leaf — ครบทุกชั้น → เชื่อ
นี่คือคำว่า “Chain of Trust” — ความเชื่อไหลจากบนลงล่าง
ทำไมต้องมี Intermediate? — ทำไม Root ไม่ออก leaf cert ตรงๆ?
คำถามดีครับ. คำตอบ — เพราะ Root CA คือ single point of catastrophic failure
ลองนึกสถานการณ์ที่ private key ของ Root CA หลุดออกไป. โจรที่ได้ key ของ Root จะ:
- ออก cert ปลอม ให้เว็บไหนก็ได้ในโลก — ทุก browser ยอมเชื่อ
- หลอกคนทั้ง internet ให้ login เข้าเว็บปลอม โดยที่ browser โชว์รูปกุญแจสีเขียว
- ไม่มีทางเรียก Root cert กลับ — เพราะ Root อยู่ใน trust store ของทุก browser ที่ install ไปแล้วทั่วโลก
ผลคือ — ถ้า Root พัง = อินเทอร์เน็ตทั้งระบบที่ใช้ CA นี้ พังตามทันที
ทางออกของวงการ — Root CA ห้ามใช้ออก leaf cert โดยตรง. แทนที่จะใช้ — Root จะ offline ส่วนใหญ่ของเวลา. เก็บไว้ใน Hardware Security Module (HSM) ที่ ตู้เซฟใต้ดิน + ห้องที่ใช้ biometric เข้า + มีคนเฝ้า 24/7. ใช้แค่ปีละครั้ง เพื่อ sign Intermediate CA cert
Intermediate CA = expendable — ถ้าโดน compromise → revoke ตัว Intermediate แล้วออกตัวใหม่ — Root ยังปลอดภัย — ระบบยังอยู่. นี่คือหลักการ “แบ่งความเสี่ยง” เหมือนกับ Defense in Depth ใน EP.04
ลองนึกในโลกจริง — ราชวงศ์ ไม่ออกบัตรประชาชนให้ประชาชนเอง. ราชวงศ์แต่งตั้ง ขุนนาง ที่มีหน้าที่ออกบัตร. ถ้าขุนนางคนหนึ่งโกง → ปลด → แต่งตั้งคนใหม่ — ราชวงศ์ไม่กระทบ
Cross-signing — ขุนนางที่มีตราจากหลายราชวงศ์
อีก concept ที่ใช้บ่อยในวงการคือ cross-signing. Intermediate CA สามารถถูก sign โดย Root หลายตัว ได้
ตัวอย่างที่จริงที่สุดในวงการ — Let’s Encrypt. ตอนแรก Let’s Encrypt มี Root ของตัวเองชื่อ ISRG Root X1. แต่ Root ใหม่นี้ไม่ได้อยู่ใน trust store ของ browser เก่า / มือถือเก่า. ถ้าใช้ ISRG Root X1 ตรงๆ → คนใช้ browser เก่าจะเห็น “Untrusted”
Let’s Encrypt เลยขอให้ Root เก่าที่ทุก browser เชื่ออยู่แล้วชื่อ IdenTrust DST Root CA X3 มา cross-sign Intermediate ของตัวเอง. ผลคือ — browser ที่ไม่รู้จัก ISRG Root X1 → จะ follow chain ขึ้นไปจนเจอ DST Root X3 → เชื่อได้
มุมผู้บริหาร: ลำดับชั้น Root → Intermediate → Leaf ใน PKI = หลักการเดียวกับ Separation of Duties ใน EP.16 คนที่ทำหน้าที่สำคัญที่สุด (Root) ไม่ทำงาน routine เอง มอบหมายให้ Intermediate ถ้า Intermediate ทำพลาด ระบบไม่ล่ม ถ้าบริษัทคุณมี internal CA (ของบริษัท ใช้ออก cert ภายใน) ขอให้ตรวจว่า Root CA ของคุณ offline ไหม + เก็บใน HSM ไหม + มี audit trail ตอนใช้ไหม pattern ของวงการที่เจอบ่อย — บริษัทตั้ง CA ของตัวเองแล้วเก็บ private key ของ Root ในเครื่อง server ที่เปิด 24/7 + ไม่มี HSM + ไม่มี audit log = ระเบิดเวลาที่รอจุด
X.509 Certificate Anatomy — เปิดบัตรประชาชนดิจิทัลดูทีละบรรทัด
ทีนี้มาเปิดดู บัตรประชาชนดิจิทัล จริงๆ กันครับ. มาตรฐานของ cert ในวงการชื่อว่า X.509 — มีมาตั้งแต่ปี 1988 — เป็น format ที่ HTTPS / Email / VPN / Code signing ทั้งหมดในโลกใช้
ลองนึกถึงบัตรประชาชนไทยที่คุณมีในกระเป๋า. บนบัตรมี:
- ชื่อ-นามสกุล
- เลขบัตรประชาชน
- วันเกิด
- วันที่ออก + วันหมดอายุ
- ที่อยู่
- รูปภาพ
- ตราของกรมการปกครอง
- ลายเซ็นของผู้ออก
X.509 cert มีโครงสร้างเหมือนกัน — แต่เปลี่ยนเนื้อหาเป็น digital. มา breakdown ทีละ field ที่สำคัญครับ:
Subject — บัตรนี้เป็นของใคร
Subject คือ “เจ้าของบัตร” — บอกว่า cert ใบนี้เป็นของใคร / เว็บไซต์ไหน. ใน cert ของ mail.google.com field นี้จะมี:
- CN (Common Name) =
mail.google.com(ชื่อหลักของเว็บ) - O (Organization) =
Google LLC - L (Locality) =
Mountain View - ST (State) =
California - C (Country) =
US
Issuer — ใครเป็นคนออกบัตรนี้
Issuer คือ “ขุนนางที่ออกบัตรให้”. ใน cert ของ mail.google.com Issuer คือ GTS CA 1C3 (Intermediate ของ Google).
browser ใช้ field นี้เป็น link ไป cert ของชั้นถัดไป — เพื่อ verify chain ขึ้นไปจนเจอ Root
Validity — บัตรนี้ใช้ได้เมื่อไหร่ถึงเมื่อไหร่
ทุก cert มี Not Before (วันเริ่มใช้ได้) + Not After (วันหมดอายุ). browser ปฏิเสธ cert ที่หมดอายุ หรือ cert ที่ยังไม่ถึงวันใช้
ในปี 2024 — วงการบังคับให้ leaf cert ของเว็บไซต์มีอายุไม่เกิน 398 วัน (~13 เดือน). ก่อนหน้านี้เคยมี cert อายุ 10 ปี — แต่วงการตัดลงเรื่อยๆ เพราะ:
- ถ้า private key หลุด — short-lived cert จำกัดความเสียหายให้สั้น
- บังคับ automation — ใครต่ออายุไม่เป็น = ไม่ควรมี cert
- ในปี 2026 Google ผลักให้ลดเหลือ 47 วัน (ยังเป็น proposal — แต่ทิศทางชัดเจน)
Public Key — กุญแจ public ของเจ้าของบัตร
นี่คือ หัวใจ ของ cert. field นี้บรรจุ public key ของ Subject ที่ EP.21 พูดถึง — พร้อมบอกว่าเป็น algorithm อะไร (RSA 2048-bit / ECC P-256 / ECC P-384)
browser ใช้ public key นี้:
- encrypt ข้อความที่จะส่งให้ server (ใน TLS handshake รุ่นเก่า)
- verify signature ที่ server ส่งมา (ใน TLS handshake รุ่นใหม่ TLS 1.3)
Signature — ตราประทับของ Issuer
ส่วนสุดท้ายที่สำคัญที่สุด — Signature ของ Issuer. Issuer (Intermediate CA) เอาทุก field ข้างบนนี้ — มา hash (EP.22) — แล้ว sign ด้วย private key ของ Intermediate
browser ที่ได้ cert มา จะ:
- เอาทุก field มา hash ใหม่
- ใช้ public key ของ Issuer (ใน cert ของ Intermediate) verify signature
- ถ้าตรง → cert ใบนี้ออกโดย Intermediate จริง — ไม่ถูกแก้กลางทาง
นี่คือจุดที่ Hashing (EP.22) + Asymmetric (EP.21) มาทำงานร่วมกัน. ลายนิ้วมือ + ลายเซ็น = ตราประทับที่ปลอมไม่ได้
SAN (Subject Alternative Names) — เว็บอื่นที่ใช้บัตรเดียวกันได้
field ที่ สำคัญที่สุดในยุคปัจจุบัน — ที่หลายคนยังไม่รู้ — SAN (Subject Alternative Names)
ยุคก่อน — cert ใช้แค่ CN เพื่อบอกว่า cert นี้ใช้กับ domain ไหน. ปัญหา — CN รับได้แค่ 1 domain. ถ้าบริษัทมี www.example.com, mail.example.com, shop.example.com → ต้องออก cert 3 ใบ
SAN แก้ปัญหานี้ — เป็น list ของ domain ทั้งหมดที่ cert ใบเดียวครอบคลุม. cert ใบเดียวอาจมี SAN เป็น:
DNS: www.example.comDNS: mail.example.comDNS: shop.example.comDNS: *.api.example.com ← wildcardในปี 2017 ขึ้นไป — Chrome เลิกใช้ CN ในการ verify domain แล้ว — ใช้แค่ SAN เท่านั้น. ถ้า cert ของบริษัทคุณมีแต่ CN ไม่มี SAN → Chrome จะแสดง warning
มุมผู้บริหาร: ขอทีม IT รัน
openssl s_client -connect domain.com:443 -showcertsกับเว็บบริษัทคุณ — 30 วินาทีรู้ทันทีว่า cert ของ Subject ตรงกับชื่อบริษัทจริงไหม + Issuer เป็น CA ที่ตั้งใจใช้ไหม + Validity เหลือกี่วัน. ถ้า Subject เป็น “Default Company Ltd” หรือ Issuer เป็น CA ที่ไม่รู้จัก — ตั้ง config ผิดและอาจถูก hijack
Lifecycle — ออกบัตร, ต่ออายุ, ยกเลิก
ทีนี้มาดู วงจรชีวิต ของ cert กันครับ. เหมือนบัตรประชาชนจริงๆ ที่มีวันเกิด — มีวันต่ออายุ — และมีโอกาสโดน “ยกเลิก” (เช่นบัตรหาย — แจ้งยกเลิกที่อำเภอ)
วงจรของ cert มี 4 ขั้นหลัก:
ขั้นที่ 1 — Generate Key Pair + CSR
ก่อนได้บัตร — บริษัท / เว็บไซต์ต้องทำ 2 อย่าง:
- Generate key pair ในเครื่อง — ได้ public key + private key คู่หนึ่ง (RSA / ECC ตาม EP.21)
- สร้าง CSR (Certificate Signing Request) — ไฟล์ที่บรรจุ:
- public key ที่เพิ่ง generate
- Subject (ชื่อบริษัท / domain ที่จะใช้)
- SAN (domain เพิ่มเติม)
- sign ด้วย private key ของตัวเอง (เพื่อพิสูจน์ว่ามี private key คู่กับ public key นี้จริง)
Private key ห้ามออกจากเครื่อง — ห้ามส่งให้ CA. ถ้าส่งให้ใคร = หมดความหมายของ asymmetric crypto. CSR แนบเฉพาะ public key
ขั้นที่ 2 — Domain Validation + Issue
บริษัทส่ง CSR ให้ CA. CA ต้อง verify ว่าผู้ขอ “ครอบครอง” domain นั้นจริง ก่อนออก cert ให้. มี 3 method หลัก:
- DV (Domain Validation) — ง่ายและถูกที่สุด. CA ขอให้บริษัทพิสูจน์ความเป็นเจ้าของ domain โดย:
- HTTP file — วางไฟล์ที่ CA กำหนดใน path เฉพาะ (เช่น
/.well-known/acme-challenge/xxx) - DNS record — เพิ่ม TXT record ที่ CA กำหนดใน DNS
- Email — ส่ง verification email ไป
[email protected]
- HTTP file — วางไฟล์ที่ CA กำหนดใน path เฉพาะ (เช่น
- OV (Organization Validation) — CA verify เพิ่ม — ว่าบริษัทมีอยู่จริง — โทรหา registered phone — ตรวจ business registration
- EV (Extended Validation) — verify ลึกที่สุด — ตรวจกฎหมายของบริษัท + ผู้บริหาร + ที่ตั้ง. ในยุคก่อน — browser เคยโชว์ชื่อบริษัทเป็นแถบเขียวที่ address bar. แต่ตั้งแต่ปี 2019 — Chrome / Firefox ยกเลิกการโชว์ green bar ของ EV แล้ว เพราะงานวิจัยพบว่าผู้ใช้ไม่ได้ดูอยู่ดี
verify ผ่าน — CA ใช้ private key ของ Intermediate sign cert → ส่ง cert กลับให้บริษัท
ขั้นที่ 3 — Install + Use
บริษัท install cert บน web server (Nginx / Apache / IIS / Cloudflare). server ต้องมี 2 ไฟล์:
- certificate file (รวม leaf cert + intermediate cert) — ส่งให้ browser
- private key file — เก็บในเครื่อง — ห้าม commit เข้า git — ห้ามวางใน path ที่ download ได้
private key ของ web server หลุดเข้า GitHub public repo เป็น pattern ที่เห็นได้บ่อยมากในวงการ. ทุก search engine มี crawler ที่หา
BEGIN PRIVATE KEYใน public repo — และหลายเคสในข่าวคือ private key ของ production web หลุดเพราะ developer commit ไฟล์เข้า git โดยลืม.gitignore
ขั้นที่ 4 — Renew หรือ Revoke
cert ใกล้หมดอายุ → ต้อง renew ก่อนวันหมด. process เหมือนตอนออกครั้งแรก — generate CSR ใหม่ → submit → install ใหม่
ในยุคปัจจุบัน — automation คือคำตอบเดียว. Let’s Encrypt + ACME protocol ทำให้ renew ได้อัตโนมัติทุก 60 วัน. AWS / Azure / GCP มี Certificate Manager service ที่ renew ให้เอง. ถ้าบริษัทคุณยัง renew ด้วยมือ — เตรียมตัวเจอ outage วันที่คนคีย์งานนี้ลาออก
อีกกรณี — ถ้า private key หลุด หรือ server ถูก compromise → ต้อง revoke cert ทันที (ยังไม่หมดอายุก็ revoke ได้). กลไก revocation = หัวข้อถัดไป
มุมผู้บริหาร: Cert lifecycle = supply chain ของความเชื่อ ถ้าบริษัทคุณยังจัดการ cert ด้วย Excel + reminder ใน Outlook = ระเบิดเวลาที่รอจุด action item: ลงทุน automation วันนี้ pattern ของวงการคลาสสิค — บริษัทใหญ่ระดับ Fortune 500 เกิด outage หลายชั่วโมงเพราะลืม renew cert ของ API gateway Cisco / Microsoft Azure / LinkedIn / Stripe / Spotify ทั้งหมดเคยมี outage ใหญ่จากเหตุนี้ cost ของ automation < cost ของ outage 1 ชั่วโมง เสมอครับ
Revocation — CRL, OCSP, OCSP Stapling
ทีนี้มาดูเรื่องที่ subtle ที่สุดของ PKI ครับ — revocation. คือกลไกที่ตอบคำถาม: “ถ้า cert โดน compromise ก่อนหมดอายุ — ทำยังไงให้ browser ทั้งโลกรู้ว่าใบนี้ใช้ไม่ได้แล้ว?”
เปรียบกับโลกจริง — บัตรประชาชนหาย → ไปแจ้งความที่อำเภอ → กรมการปกครองมี database ว่าบัตรเลขนี้ “ถูกยกเลิก”. ถ้ามีคนพยายามใช้บัตรนี้ — เจ้าหน้าที่สามารถเช็คได้
ในโลกดิจิทัล — ปัญหาคือ browser ของคุณจะรู้ได้ยังไงว่า cert ใบหนึ่งถูก revoke? ลองดูวิวัฒนาการของวงการครับ
CRL (Certificate Revocation List) — รุ่นแรก ที่ตายไปแล้ว
CRL = list ทั้งหมดของ cert ที่ถูก revoke — published โดย CA. ทุกครั้งที่ browser ต้องเช็ค cert — ก็ download CRL จาก CA → ค้นหาดูว่า cert ปัจจุบันอยู่ใน list ไหม
ฟังดูตรงไปตรงมา — แต่มี 2 ปัญหาใหญ่ที่ทำให้ตายในทางปฏิบัติ:
ปัญหาที่ 1: CRL ใหญ่มาก
CA ใหญ่ๆ ออก cert หลายล้านใบต่อปี. CRL ที่ active อาจมีขนาด หลาย MB. ทุกครั้งที่ browser เปิดเว็บใหม่ → download หลาย MB → ช้า
ปัญหาที่ 2: CRL ไม่ realtime
CA publish CRL ทุก 24 ชั่วโมง — บางที 7 วัน. ในระหว่างนั้น cert ที่เพิ่ง revoke = ยังถือว่า valid ใน browser ของผู้ใช้
ผลคือ — browser ส่วนใหญ่ตั้งแต่ปี 2012 เป็นต้นมา ไม่ download CRL อีกแล้ว. Chrome ตัดเลย. Firefox ใช้ replacement ที่เรียกว่า CRLite (CRL ที่ compress ด้วย bloom filter)
OCSP (Online Certificate Status Protocol) — รุ่นที่ 2
OCSP เปลี่ยน approach — แทนที่จะ download list ทั้งหมด → ถาม CA ทีละใบ. browser ส่ง OCSP request ไปที่ OCSP responder ของ CA — ถามว่า “cert serial number XYZ ยังใช้ได้ไหม?”. CA ตอบ “Good” / “Revoked” / “Unknown”
ปัญหาของ OCSP มี 3 ข้อ:
ปัญหาที่ 1: Performance
ทุกครั้งที่ browser เปิดเว็บใหม่ → ต้อง round-trip ไปหา CA ก่อน. ถ้า CA server ของ Verisign / DigiCert ช้า → ผู้ใช้ทั่วโลกที่เปิดเว็บใช้ cert ของ Verisign โหลดช้าตาม
ปัญหาที่ 2: Privacy
CA เห็นทุกเว็บที่ user เปิด. ถ้า browser ถาม “cert ของ gmail.com ใช้ได้ไหม” → CA รู้ว่า user คนนี้กำลังเข้า Gmail. นี่คือ privacy leak ระดับโลก
ปัญหาที่ 3: Soft-fail
ถ้า OCSP responder ของ CA ล่ม → browser ถือว่า cert ใช้ได้ (soft-fail) เพราะถ้า hard-fail = ผู้ใช้เปิดเว็บไม่ได้เลย. โจรรู้จุดนี้ — ถ้าโจร DDoS OCSP responder ของ CA → browser จะ soft-fail → cert ที่ revoke ไปแล้วก็ใช้ต่อได้
OCSP Stapling — ปัจจุบัน best practice
วงการแก้ปัญหาด้วย OCSP Stapling — server เป็นคนถาม OCSP แทน browser
flow ใหม่:
- server ของ Google เป็นคนถาม OCSP ของ CA เอง — เช่นทุก 1 ชั่วโมง — ได้ OCSP response มาเก็บไว้
- ตอน user เปิด
mail.google.com— server ส่ง cert + OCSP response ที่ stapled มาด้วย ใน TLS handshake เดียวกัน - browser ไม่ต้องถาม CA — เช็ค OCSP response ที่ server แนบมา → เร็วกว่าเดิม
ข้อดี:
- เร็ว — ไม่มี round-trip เพิ่ม
- privacy — CA ไม่รู้ว่า user คนไหนเปิดเว็บไหน
- ไม่มีปัญหา DDoS ของ OCSP responder
ในปี 2026 — OCSP Stapling คือ best practice ที่ทุก web server แนะนำ. Nginx / Apache / Cloudflare ทั้งหมดมี option เปิด stapling
CRL Sets ของ Google + OneCRL ของ Mozilla — Hybrid approach
ในความเป็นจริง — browser ไม่พึ่ง OCSP / CRL อย่างเดียว. Google + Mozilla มี approach ของตัวเอง:
- CRLSets ของ Google — Google รวบรวม cert ที่ revoked + ที่ “สำคัญพอจะ block” — push เป็น list ไปยัง Chrome ทุกเครื่อง 6-12 ชั่วโมง
- OneCRL ของ Mozilla — list ของ Intermediate CA ที่ Mozilla ตัดสินใจ revoke — push ไปยัง Firefox ทุกเครื่อง
ทั้ง 2 approach คือ “เราไม่เชื่อ OCSP / CRL — เราจัดการเอง สำหรับ cert ที่ critical พอ”
มุมผู้บริหาร: Revocation = จุดที่ PKI อ่อนแอที่สุด ในวงการ. ถ้าบริษัทคุณ deploy web server เอง — เปิด OCSP Stapling ทันที. ตรวจ config nginx / apache → ขอ option
ssl_stapling on+ssl_stapling_verify on. ใช้เวลา 5 นาทีของ DevOps. ในมุม risk — ถ้า private key ของบริษัทคุณหลุด + revoke แล้ว → ถ้า browser ของลูกค้าไม่เช็ค revocation = โจรยังใช้ key ที่หลุดได้ต่ออีกนาน. soft-fail behavior ของ browser ทำให้ revoke ในทางปฏิบัติ “ไม่ค่อยมีผล” — ทางแก้คือ short-lived cert (cert อายุสั้น = ไม่ต้องพึ่ง revocation)
Certificate Transparency + DigiNotar — เคสที่เปลี่ยนทั้งวงการ
มาถึงหัวข้อสุดท้ายที่ตื่นเต้นที่สุดของ EP นี้ครับ. ผมจะเล่าเคสจริงที่เปลี่ยนวงการ PKI ทั้งโลกใน 3 สัปดาห์
DigiNotar 2011 — ราชวงศ์ของฮอลแลนด์ที่ถูกปลอม
DigiNotar เป็น CA ดัตช์ ที่ออก cert ให้รัฐบาลฮอลแลนด์ — เป็น trusted Root CA ในทุก browser ทั่วโลก. รัฐบาลฮอลแลนด์ใช้ DigiNotar ออก cert ของระบบ tax / health / e-government
ปลายเดือนสิงหาคม 2011 — มีคนใช้ Gmail ในอิหร่าน รายงานว่า Chrome แสดง warning แปลกๆ. ทีม Google เข้าไปดู — พบเรื่องที่ทำให้ทุกคนตกใจ
มีคนใช้ private key ของ DigiNotar Intermediate CA — ออก cert ปลอมของ google.com
มี cert ปลอม ของ:
*.google.com*.microsoft.com*.skype.com*.twitter.com*.wordpress.com*.facebook.comaddons.mozilla.org- หน่วยข่าวกรองสหรัฐ + อังกฤษ + อิสราเอล
รวม 531 cert ปลอม ที่ออกได้สำเร็จ (รายงานสุดท้ายปรับเป็น 700+ cert) — มีคนเอาไปใช้ทำ MITM กับผู้ใช้ Gmail ในอิหร่าน — ประมาณว่ามีผู้ใช้ที่ถูก MITM 300,000 คน
หลักฐานชี้ไปที่ รัฐบาลอิหร่าน หรือกลุ่มที่ใกล้ชิด — ใช้เพื่อจับนักเคลื่อนไหวที่ใช้ Gmail สื่อสารช่วง Arab Spring
ทำไมไม่มีใครรู้ก่อน 2 เดือน?
จุดที่ทำให้วงการตกใจที่สุดคือ — DigiNotar ถูก breach ตั้งแต่ 17 มิถุนายน 2011 — แต่กว่าจะถูกเปิดโปง 29 สิงหาคม 2011 — ผ่านไป 2 เดือนกว่า ที่ cert ปลอมถูกใช้ในอิหร่าน
DigiNotar รู้ตัวว่าโดน hack ตั้งแต่ปลายเดือน 6 — แต่ไม่บอกใคร. รอจนกระทั่งผู้ใช้ Gmail ใน Iran เป็นคน whistleblow
ผลลัพธ์ใน 3 สัปดาห์
- 30 สิงหาคม: Google + Mozilla + Microsoft + Apple distrust DigiNotar Root พร้อมกัน
- 3 กันยายน: รัฐบาลฮอลแลนด์ยึด DigiNotar
- 20 กันยายน: DigiNotar ยื่นล้มละลาย
บริษัทตายภายใน 3 สัปดาห์ หลังเรื่องแดง. นี่คือ blueprint ของวงการว่า — trust ของ CA = สินทรัพย์ที่หายในวันเดียว
ที่ DigiNotar ทิ้งไว้ — Certificate Transparency
เคส DigiNotar ทำให้ Google + Mozilla ตระหนักว่า — ระบบ PKI ของวงการ “blind”. ไม่มีใครรู้ว่า CA ไหน “กำลังออก cert อะไรอยู่”. CA ออก cert ปลอมได้โดยไม่มีใครเห็น
วิธีแก้ที่ Google คิดในปี 2013 — Certificate Transparency (CT) — log สาธารณะของ cert ทุกใบที่ CA ออก
หลักการของ CT:
- CA ทุกใบที่จะออก cert ต้อง submit cert เข้า public CT log ก่อน
- CT log = append-only log ที่ใช้ Merkle tree (EP.22) — ใครก็ลบของในล้อกไม่ได้
- CT log run โดย Google / Cloudflare / Let’s Encrypt / DigiCert — กระจายอยู่หลายเจ้า
- browser (Chrome ตั้งแต่ปี 2018) บังคับว่า — cert ที่ไม่อยู่ใน CT log ≥ 2 ที่ → ปฏิเสธ
- monitor = บริษัทใหญ่อย่าง Google / Facebook สามารถ scan CT log เพื่อหา cert ปลอมของ domain ตัวเอง
ผลคือ — ถ้ามีคนพยายามทำซ้ำเคส DigiNotar ในวันนี้ — Google จะเห็น cert ปลอมของ google.com ใน CT log ภายในชั่วโมง — ไม่ต้องรอ 2 เดือน
CT คือ — “sunlight is the best disinfectant” ในวงการ PKI
Symantec distrust 2018 — เคสที่ใหญ่ที่สุดในวงการหลัง DigiNotar
ปี 2017-2018 — Google + Mozilla distrust Symantec CA (รวมถึง Thawte / GeoTrust / RapidSSL ที่ Symantec ถือ) หลังจากเจอ Symantec ออก cert ปลอม / misissue 30,000+ cert ในช่วงหลายปี
ผลคือ — 30%+ ของ cert ทั้ง internet ต้องถูก re-issue. DigiCert ซื้อกิจการ Symantec CA แล้วต้อง re-validate ทุก cert ใหม่. นี่คือ cert ที่หมดอายุ + re-issue ใหญ่ที่สุดในประวัติศาสตร์ internet
ข้อเรียนรู้ — ขนาดของ CA ไม่ได้ป้องกัน distrust ได้. Symantec ในปี 2017 คือ CA ที่ใหญ่ที่สุดในวงการ — และก็ตกในเวลา 1 ปีกว่า
Let’s Encrypt 3M revoke ปี 2020 — เคสที่ดีที่สุดของ “หลังบ้านเก่ง”
มีนาคม 2020 — Let’s Encrypt พบ bug ใน CAA check (Certificate Authority Authorization — DNS record ที่บอกว่า “เฉพาะ CA ตัวนี้ที่ออก cert ให้ domain นี้ได้”) — bug ทำให้ check ของ Let’s Encrypt ผิดสำหรับ 3 ล้านกว่า cert
Let’s Encrypt ประกาศจะ revoke 3+ ล้าน cert ภายใน 24 ชั่วโมง ตาม industry rule. คนทั้งวงการตกใจ — แต่ในที่สุด Let’s Encrypt ลด scope ลงเหลือ ~1.7 ล้าน cert (ที่ยัง active) — และเปิดเครื่องมือให้ลูกค้า re-issue ได้อัตโนมัติผ่าน ACME
ผลคือ — ไม่มี outage ใหญ่. ลูกค้าส่วนใหญ่มี automation อยู่แล้ว — renew ใหม่ใน 24 ชั่วโมง — เรื่องจบ
เคสนี้ตรงข้ามกับ DigiNotar — ทำพลาด + transparent + แก้เร็ว = trust กลับมาภายในสัปดาห์
มุมผู้บริหาร: ทีม security ของบริษัทคุณควรมี CT monitoring ของ domain บริษัทเป็น routine ใช้ tool ฟรีอย่าง crt.sh หรือ Facebook CT Monitor alert ทุกครั้งที่มีคนออก cert ของ
*.yourcompany.comที่ไม่ใช่จากทีม IT pattern ของวงการ — บริษัทใหญ่หลายแห่งพบ cert ปลอมของ subdomain ตัวเองในล้อก CT ก่อน phishing campaign เริ่ม และบล็อกเว็บปลอมได้ก่อนลูกค้าตกเป็นเหยื่อ นี่คือ control ที่ราคา 0 บาท + ROI ระดับวงการ
สรุป — ราชวงศ์, ขุนนาง, บัตร — ระบบความเชื่อของอินเทอร์เน็ตทั้งโลก
ครับ — EP.23 จบ. ลองทบทวนสิ่งที่ผ่านมาในมุม “เมืองที่ของมีค่า” — ที่เราเดินอยู่ใน Part 3:
ใน EP.21 เราเห็น กุญแจ 2 ดอก ของ asymmetric crypto. แต่ปัญหาคือ — public key ดอกแรกที่คุณเห็น = เชื่อได้ยังไง? คำตอบของวงการคือ PKI — ระบบ ราชวงศ์ → ขุนนาง → บัตรประชาชน ที่ใช้กันทั้งอินเทอร์เน็ต
ราชวงศ์ = Root CA ที่ทุก browser เชื่อมาตั้งแต่วันแรกที่ install. ราชวงศ์ไม่ออกบัตรเอง — แต่งตั้ง ขุนนาง (Intermediate CA). ขุนนางออกบัตรประชาชน (leaf cert) ให้แต่ละเว็บ. ในบัตรมี Subject + Issuer + Validity + Public Key + Signature + SAN — เหมือนบัตรประชาชนจริง
ระบบนี้ไม่ได้สมบูรณ์แบบ. กลไก revoke (CRL → OCSP → OCSP Stapling) ยังเป็นจุดอ่อน. soft-fail behavior ของ browser ทำให้ revoke ในทางปฏิบัติไม่ค่อยมีผล — ทางออกของวงการคือ short-lived cert (อายุ 13 เดือน → 47 วันในอนาคต)
และที่สำคัญที่สุด — เคส DigiNotar 2011 สอนวงการว่า “CA ที่เชื่อได้ในวันนี้ อาจตายใน 3 สัปดาห์”. ผลลัพธ์คือ Certificate Transparency — log สาธารณะที่ทำให้ “sunlight is the best disinfectant” — ใครก็เห็นว่า CA ไหนกำลังออก cert อะไรอยู่
สิ่งที่ผู้นำต้องจำ
ข้อแรก — PKI = supply chain ของความเชื่อ. บริษัทคุณพึ่งคนอื่นโดยไม่รู้ตัว
ลองนึกภาพ — บริษัทคุณ secure ระดับโลก. ทีม IT เก่ง. firewall แพง. MFA ครบ. แต่ทุกครั้งที่พนักงานเปิด Salesforce / Office 365 / Gmail — browser ตัดสินใจอัตโนมัติว่าเชื่อเว็บนั้น เพราะ CA ที่บริษัทคุณไม่ได้เลือก vouch ให้
ถ้า CA หนึ่งใน trust store ของ browser พนักงาน — โดน compromise — โจรสามารถออก cert ปลอมของ Salesforce → พนักงาน login เข้าเว็บปลอม → password หลุด. ไม่มีอะไรในระบบของบริษัทคุณจับได้
ทางป้องกัน 3 ข้อในมุมผู้บริหาร:
- CT monitoring — alert ทุกครั้งที่ใครออก cert ของ domain บริษัท. ใช้ครับ ฟรี
- HSTS + HPKP/Expect-CT — บังคับ browser ของลูกค้าให้ใช้แค่ HTTPS + cert ที่บริษัทตั้งใจ (EP.24 จะลงลึก)
- internal CA — ถ้าบริษัทตั้ง CA เอง — Root ต้อง offline + เก็บใน HSM + audit log ครบ. ห้ามมี Root online ในเครื่องที่ใช้งาน
ข้อสอง — Automate cert lifecycle วันนี้. ไม่งั้นจะมี outage
นี่คือ pattern ของวงการคลาสสิคที่ขึ้นข่าวซ้ำซากของบริษัทระดับโลก — บริษัทใหญ่ outage หลายชั่วโมงเพราะลืม renew cert. LinkedIn ครั้งหนึ่ง. Microsoft Teams ครั้งหนึ่ง. Cisco WebEx หลายครั้ง. Spotify หลายครั้ง. ทุกคนพลาดได้ — ถ้ายัง renew ด้วยมือ
3 step ที่ทำได้ทันที:
- inventory cert ทุกใบ ของบริษัท. ใช้ tool อย่าง Cert Spotter หรือ scan port 443 ของ subnet
- set up monitoring + alerting — alert 60 / 30 / 14 / 7 วัน ก่อนหมดอายุ
- ทำ automation — Let’s Encrypt + ACME ฟรี. AWS Certificate Manager / Azure Key Vault สำหรับ cloud workload — มี auto-renew
ถ้าบริษัทคุณยังจัดการ cert ด้วย spreadsheet + Outlook reminder ในปี 2026 — เปลี่ยนเป็น automation ทันที. cost ของ tool < cost ของ outage 1 ชั่วโมงเสมอ
Tease EP.24 — TLS / HTTPS: ตู้ขนเงินหุ้มเกราะ
ครับ — Certificate + PKI พร้อม. เอามาใช้กับเว็บไซต์ยังไง?
TLS / HTTPS — EP.24
EP.24 จะลงทั้ง TLS handshake (4 ขั้นที่ browser กับ server คุยกันใน 100 ms), TLS 1.2 vs 1.3, cipher suite, สิ่งที่ HTTPS ป้องกัน vs ไม่ป้องกัน, และเคสตำนานอย่าง Heartbleed / POODLE / BEAST / DROWN
หัวใจของ EP.24 — HTTPS = ตู้ขนเงินหุ้มเกราะระหว่างทาง — ไม่ได้ป้องกันคนปลายทาง. เว็บ phishing ที่มี cert ถูกต้อง = ตู้ขนเงินที่ขับไปร้านขายของโจร — ตู้ปลอดภัย แต่ปลายทางผิด
เจอกันที่ EP.24 ครับ