01ความลับที่ต้องฝากคนอื่นส่ง Why cryptography
สมัยเรียนมัธยม เราอาจเคยพับกระดาษโน้ตส่งต่อกันในห้อง จากโต๊ะหลังสุดไปถึงเพื่อนแถวหน้า ผ่านมือเพื่อนอีกสี่ห้าคน ใครจะแอบคลี่อ่านก็ได้ ใครจะแอบเติมคำลงไปก็ได้ แล้วเพื่อนแถวหน้าจะรู้ได้อย่างไรว่าโน้ตนี้มาจากเราจริง
อินเทอร์เน็ตก็คือห้องเรียนห้องนั้น แต่ใหญ่ระดับโลก อย่างที่เห็นใน CASE-007 ข้อมูลของเราวิ่งผ่านเราเตอร์ ผู้ให้บริการอินเทอร์เน็ต และเครื่องอีกนับสิบที่เราไม่รู้จักเลยสักเครื่อง ทุกจุดคือ “มือเพื่อน” ที่อาจแอบคลี่โน้ตของเรา
วิทยาการเข้ารหัสลับ (Cryptography) คือศาสตร์ที่ทำให้เราส่งโน้ตผ่านมือคนแปลกหน้าได้อย่างสบายใจ มันตอบโจทย์สามข้อที่ฟังดูง่ายแต่ทำยากมาก
- ความลับ (Confidentiality): คนกลางทางอ่านไม่ออก
- ความครบถ้วน ไม่ถูกแก้ (Integrity): ถ้ามีใครแอบแก้แม้ตัวเดียว ปลายทางต้องรู้
- ยืนยันที่มา (Authenticity): รู้แน่ว่าโน้ตมาจากคนที่อ้างจริง ไม่ใช่คนปลอมตัว
เครื่องมือแต่ละชิ้นในบทนี้ตอบโจทย์คนละข้อ การเข้ารหัสดูแลความลับ แฮชดูแลความครบถ้วน ส่วนลายเซ็นดิจิทัลดูแลการยืนยันที่มา ระบบจริงอย่าง HTTPS หรือแอปแชตเอาทั้งหมดมาประกอบกัน เหมือนตัวต่อเลโก้ที่ต่อเป็นป้อมปราการ
- ศัพท์น่ารู้: Plaintext, Ciphertext, Key และ Algorithm
- Plaintext คือข้อความเดิมที่อ่านรู้เรื่อง Ciphertext คือข้อความหลังเข้ารหัสที่ดูเหมือนตัวอักษรมั่ว ๆ อัลกอริทึม (Algorithm) คือวิธีผสม ส่วน กุญแจ (Key) คือค่าลับที่บอกว่าจะผสมแบบไหน คนที่มีกุญแจถูกดอกเท่านั้นที่ถอดกลับ (decrypt) เป็นข้อความเดิมได้
ในภาพทุกภาพของบทนี้ เราใช้สีเหมือนกันตลอด: ฟ้า คือข้อความปกติของเรา เขียว คือข้อมูลที่ถูกปกป้องแล้ว เหลืองอำพัน คือกุญแจ ซึ่งเป็นของที่ต้องดูแลที่สุด และ แดง คือคนแอบดูหรือคนร้าย
02จากวงล้อซีซาร์ถึงเครื่องเอนิกมา A short history
การเข้ารหัสเก่าแก่กว่าคอมพิวเตอร์มาก ตัวอย่างที่ดังที่สุดคือรหัสที่เล่ากันว่าจูเลียส ซีซาร์ใช้ส่งคำสั่งทางทหาร วิธีของเขาง่ายจนน่าตกใจ คือ เลื่อนตัวอักษรทุกตัวไปข้างหน้า 3 ตำแหน่ง A กลายเป็น D, B กลายเป็น E ไปเรื่อย ๆ พอถึงท้ายตัวอักษรก็วนกลับมาต้นใหม่
FIG 01วงล้อซีซาร์: เลื่อนทุกตัวไป 3 ช่อง
บันทึกเป็นภาพอ่านภาพนี้เป็นข้อความ
- วงล้อสองชั้น วงนอกเป็นตัวอักษร A ถึง Z ตามลำดับ วงในเป็นตัวอักษรชุดเดียวกันแต่เลื่อนไป 3 ตำแหน่ง
- กุญแจคือตัวเลข 3 หมายถึงเลื่อนไป 3 ช่อง
- ตัวอย่าง: SANDWORM เมื่อเลื่อนทุกตัวไป 3 ช่อง กลายเป็น VDQGZRUP
- จุดอ่อน: กุญแจมีให้เดาแค่ 25 แบบ ลองครบทุกแบบก็เจอคำตอบ และตัวอักษรที่ใช้บ่อยก็ยังโผล่บ่อยเท่าเดิม
คนที่ได้กระดาษไปแล้วไม่รู้วิธีถอด จะเห็นแค่คำแปลก ๆ อย่าง VDQGZRUP แต่ถ้ารู้ว่าเป็นรหัสแบบเลื่อนตัวอักษร ก็ลองเลื่อนกลับทีละ 1, 2, 3 ช่อง ไม่เกินห้านาทีก็อ่านออก รหัสซีซาร์จึงแตกได้ด้วยกระดาษกับดินสอ
หลายร้อยปีหลังจากนั้น คนคิดรหัสที่ซับซ้อนขึ้นเรื่อย ๆ เช่น เปลี่ยนจำนวนช่องที่เลื่อนไปทุกตัวอักษร แต่ฝั่งคนแกะรหัสก็เก่งขึ้นตาม เครื่องมือสำคัญของพวกเขาคือ การนับความถี่ ในภาษาอังกฤษ ตัว E โผล่บ่อยที่สุด ถ้าข้อความลับมีตัว H โผล่บ่อยผิดปกติ ก็เดาได้ว่า H น่าจะแทน E ภาษาไทยก็มีนิสัยแบบนี้เหมือนกัน ตัวอย่างเช่น สระอา หรือไม้เอก ที่เจอแทบทุกประโยค
ทุกวันนี้เราไม่ใช้วงล้อแล้ว คอมพิวเตอร์ผสมข้อมูลเป็นบิต (0 กับ 1) ด้วยคณิตศาสตร์ที่ซับซ้อนกว่ามาก แต่โครงเรื่องยังเหมือนเดิมทุกประการ: มีอัลกอริทึม มีกุญแจ และมีคนพยายามเดากุญแจนั้น
03ความลับต้องอยู่ที่กุญแจ ไม่ใช่ที่วิธี Kerckhoffs's principle
ปี 1883 นักภาษาศาสตร์และนักเข้ารหัสชาวดัตช์ชื่อ Auguste Kerckhoffs วางหลักข้อหนึ่งไว้ ซึ่งกลายเป็นหัวใจของการเข้ารหัสสมัยใหม่ ใจความคือ ระบบเข้ารหัสที่ดีต้องปลอดภัย แม้ศัตรูจะรู้ทุกอย่างเกี่ยวกับระบบ ยกเว้นกุญแจ
ลองนึกถึงแม่กุญแจยี่ห้อดังที่ขายทั่วไปตามร้านฮาร์ดแวร์ ใครก็ซื้อไปแกะดูกลไกข้างในได้ แต่ถ้าไม่มีลูกกุญแจของเรา ก็ยังเปิดประตูบ้านเราไม่ได้อยู่ดี นั่นคือแม่กุญแจที่ดี ส่วนแม่กุญแจที่ “ปลอดภัยเพราะไม่มีใครรู้ว่าข้างในทำงานยังไง” พอมีคนแกะออกเพียงครั้งเดียว ทุกบ้านที่ใช้ยี่ห้อนี้ก็เปิดได้หมดพร้อมกัน
นี่คือเหตุผลที่อัลกอริทึมเข้ารหัสที่โลกใช้กันจริง เช่น AES ถูก เปิดเผยให้ทุกคนอ่าน นักคณิตศาสตร์ทั่วโลกช่วยกันหาจุดอ่อนมาหลายปีก่อนจะได้รับเลือกเป็นมาตรฐาน ยิ่งถูกโจมตีทางความคิดนานแล้วยังไม่พัง เราก็ยิ่งไว้ใจได้
กุญแจต้องยาวพอให้เดาไม่ไหว
เมื่อวิธีเปิดเผยหมดแล้ว สิ่งเดียวที่ขวางคนร้ายคือจำนวนกุญแจที่ต้องเดา รหัสซีซาร์มีแค่ 25 แบบ ส่วนกุญแจ AES ขนาด 128 บิต มีให้เลือก 2128 แบบ หรือประมาณ 340 ล้านล้านล้านล้านล้านล้านแบบ (เลข 34 ตามด้วยศูนย์อีก 37 ตัว) ต่อให้ลองได้ล้านล้านล้านครั้งต่อวินาที ก็ยังต้องใช้เวลานานกว่าอายุจักรวาลหลายร้อยเท่า การเดากุญแจตรง ๆ แบบนี้เรียกว่า Brute force และสำหรับกุญแจที่ยาวพอ มันคือทางตัน
ความเชื่อ
“คิดวิธีเข้ารหัสขึ้นมาเองแบบที่ไม่มีใครรู้ ปลอดภัยกว่าใช้ของที่ใคร ๆ ก็รู้วิธี”
ความจริง
วิธีที่คิดเองแทบทุกวิธีมีจุดอ่อนที่ผู้คิดมองไม่เห็น เพราะยังไม่เคยถูกคนเก่ง ๆ ทั้งโลกช่วยกันทุบ นักพัฒนาจึงมีคำเตือนกันว่า “Don't roll your own crypto” อย่าประดิษฐ์การเข้ารหัสเอง ให้ใช้อัลกอริทึมมาตรฐานผ่านไลบรารีที่ผ่านการตรวจสอบมาแล้ว
- ศัพท์น่ารู้: บิต (bit) กับความยาวกุญแจ
- บิตคือหลักเลขฐานสอง มีค่าแค่ 0 หรือ 1 กุญแจยาว 128 บิตคือเลข 0/1 เรียงกัน 128 หลัก ทุกครั้งที่กุญแจยาวขึ้น 1 บิต จำนวนแบบที่ต้องเดาจะเพิ่มเป็นสองเท่า กุญแจ 256 บิตจึงไม่ได้ยากกว่า 128 บิตแค่สองเท่า แต่ยากกว่าเป็น 2128 เท่า
04กุญแจดอกเดียว ใช้ทั้งล็อกและเปิด Symmetric encryption
การเข้ารหัสแบบแรกที่ต้องรู้จักใช้ กุญแจดอกเดียวกัน ทั้งตอนล็อกและตอนเปิด เหมือนตู้ล็อกเกอร์ที่ใช้กุญแจดอกเดิมทั้งปิดและเปิด เรียกว่าการเข้ารหัสแบบสมมาตร (Symmetric encryption) ตัวที่โลกใช้มากที่สุดตอนนี้ชื่อ AES (Advanced Encryption Standard) ซึ่งสถาบันมาตรฐานของสหรัฐฯ (NIST) คัดเลือกจากการแข่งขันแบบเปิดให้คนทั้งโลกส่งผลงานและช่วยกันวิจารณ์ แล้วประกาศเป็นมาตรฐานในปี 2001
จุดเด่นของกุญแจดอกเดียวคือ เร็วมาก คอมพิวเตอร์และมือถือรุ่นใหม่ส่วนใหญ่มีวงจรช่วยเข้ารหัส AES ในตัว เข้ารหัสวิดีโอทั้งเรื่องได้สบาย ๆ ไม่กินแบต งานหนัก ๆ อย่างเข้ารหัสทั้งฮาร์ดดิสก์ หรือเข้ารหัสทุกแพ็กเก็ตที่วิ่งในการเชื่อมต่อ HTTPS จึงเป็นงานของ AES และเพื่อน ๆ ในตระกูลเดียวกัน (อย่าง ChaCha20 ที่นิยมบนมือถือ)
FIG 02กุญแจดอกเดียว และปัญหาที่ใหญ่กว่าตัวรหัส
บันทึกเป็นภาพอ่านภาพนี้เป็นข้อความ
- เอมีข้อความ “นัดติวหน้าห้องสมุด 5 โมงเย็นนะ”
- เอเข้ารหัสด้วย AES และกุญแจ K ได้ข้อความเข้ารหัสที่หน้าตาเหมือนเลขฐานสิบหกมั่ว ๆ
- ข้อความเข้ารหัสวิ่งผ่านอินเทอร์เน็ต คนแอบดูบนเส้นทางเห็นแต่ตัวอักษรมั่ว อ่านไม่ออก
- บีถอดรหัสด้วยกุญแจ K ดอกเดิม ได้ข้อความเดิมกลับมา
- ปัญหา: ทั้งสองฝั่งต้องมีกุญแจ K ดอกเดียวกัน ถ้าส่งกุญแจไปทางเดียวกับข้อความ คนแอบดูก็ได้กุญแจไปด้วย นี่คือปัญหาการแจกกุญแจ
ปัญหาในภาพเรียกว่า ปัญหาการแจกกุญแจ (Key distribution problem) ถ้าเอกับบีนั่งเรียนห้องเดียวกัน ก็กระซิบบอกกุญแจกันได้ แต่ถ้าบีคือเว็บไซต์ธนาคารที่อยู่อีกซีกโลก แล้วเราเพิ่งเปิดเว็บนี้เป็นครั้งแรก จะไปกระซิบกันตอนไหน ถ้าส่งกุญแจไปทางอินเทอร์เน็ต ก็เท่ากับฝากกุญแจไปกับมือเพื่อนที่อาจแอบคลี่โน้ต
ยังมีอีกเรื่องที่ทำให้กุญแจดอกเดียวใช้ยากในโลกกว้าง: ถ้าเราต้องคุยลับกับคน 100 คน แยกกันเป็นคู่ ๆ เราต้องมีกุญแจ 100 ดอก และถ้าทั้ง 100 คนต่างคุยลับกันเองทุกคู่ ทั้งกลุ่มต้องมีกุญแจเกือบห้าพันดอก ดูแลกันไม่ไหวแน่ ปัญหานี้ค้างคามาหลายพันปี จนถึงช่วงทศวรรษ 1970 จึงมีคนคิดทางออกที่พลิกวงการได้
- ศัพท์น่ารู้: AES
- Advanced Encryption Standard อัลกอริทึมกุญแจดอกเดียวที่เป็นมาตรฐานโลก ใช้กุญแจยาว 128, 192 หรือ 256 บิต อยู่ในแทบทุกอย่างที่เราใช้ ตั้งแต่ Wi‑Fi ที่ตั้งรหัสแบบ WPA2/WPA3 การเข้ารหัสฮาร์ดดิสก์ ไปจนถึงเว็บ HTTPS
05กุญแจคู่: แจกแม่กุญแจ เก็บลูกกุญแจ Public-key cryptography
ทางออกแรกคือ การเข้ารหัสแบบกุญแจคู่ หรือแบบอสมมาตร (Asymmetric / Public-key cryptography) แทนที่จะมีกุญแจดอกเดียว เรามีกุญแจสองดอกที่เป็นคู่กันทางคณิตศาสตร์ ดอกหนึ่งเรียกว่า กุญแจสาธารณะ (Public key) แจกให้ใครก็ได้ อีกดอกเรียกว่า กุญแจส่วนตัว (Private key) เก็บไว้คนเดียว ห้ามหลุดเด็ดขาด สิ่งที่ล็อกด้วยกุญแจสาธารณะ จะเปิดได้ด้วยกุญแจส่วนตัวที่เป็นคู่ของมันเท่านั้น
วิธีจำที่ง่ายที่สุดคือนึกถึง แม่กุญแจแบบกดล็อก แม่กุญแจชนิดนี้ใครก็กดล็อกได้โดยไม่ต้องมีลูกกุญแจ แต่จะเปิดออกได้ต้องใช้ลูกกุญแจเท่านั้น สมมติบีทำแม่กุญแจแบบนี้ไว้เป็นร้อยตัว แล้วแจกจ่ายไปทั่ว ใครอยากส่งของลับให้บี ก็หยิบแม่กุญแจของบีไปล็อกกล่อง ส่งกลับมา คนกลางทางจะมีแม่กุญแจของบีอยู่ในมือก็ไม่ช่วยอะไร เพราะแม่กุญแจไม่ได้ใช้เปิด
FIG 03กุญแจคู่ = แม่กุญแจที่แจกได้ + ลูกกุญแจที่เก็บไว้คนเดียว
บันทึกเป็นภาพอ่านภาพนี้เป็นข้อความ
- บีสร้างกุญแจคู่: แม่กุญแจ (กุญแจสาธารณะ) แจกได้ และลูกกุญแจ (กุญแจส่วนตัว) เก็บไว้คนเดียว
- บีแจกแม่กุญแจที่ยังเปิดอยู่ให้เอ ระหว่างทางคนแอบดูก็ได้แม่กุญแจไปด้วย ซึ่งไม่เป็นไร
- เอใส่ข้อความลงกล่องแล้วกดล็อกด้วยแม่กุญแจของบี ล็อกแล้วแม้แต่เอก็เปิดเองไม่ได้
- เอส่งกล่องที่ล็อกแล้วให้บี
- คนแอบดูได้กล่องไปด้วย มีแม่กุญแจ แต่ไม่มีลูกกุญแจ จึงเปิดไม่ได้
- บีเปิดกล่องด้วยลูกกุญแจส่วนตัว มีบีคนเดียวที่อ่านข้อความได้
เบื้องหลังแม่กุญแจนี้คือโจทย์คณิตศาสตร์ที่ “ทำทางเดียวง่าย ย้อนกลับยากมาก” ตัวที่ดังที่สุดคือ RSA (ตั้งชื่อตามผู้คิดสามคน คือ Rivest, Shamir และ Adleman ตีพิมพ์ปี 1977) ซึ่งอาศัยความจริงที่ว่า การคูณจำนวนเฉพาะขนาดใหญ่สองตัวเข้าด้วยกันทำได้ในพริบตา แต่ถ้าได้ผลคูณมาแล้วอยากแยกกลับเป็นสองตัวเดิม คอมพิวเตอร์ธรรมดาทั้งโลกช่วยกันก็ยังทำไม่ทัน ส่วนตัวที่ใหม่กว่าและนิยมขึ้นเรื่อย ๆ คือ ECC (Elliptic Curve Cryptography) ใช้คณิตศาสตร์ของเส้นโค้งวงรี ได้ความปลอดภัยระดับเดียวกันด้วยกุญแจที่สั้นกว่ามาก จึงเหมาะกับมือถือ
แต่กุญแจคู่ก็มีข้อเสีย คือ ช้ากว่ากุญแจดอกเดียวมาก และยิ่งข้อมูลก้อนใหญ่ ก็ยิ่งเห็นความต่างชัด ระบบจริงจึงไม่เอากุญแจคู่มาเข้ารหัสข้อมูลทั้งก้อน แต่ใช้แบบ ผสม (Hybrid): ใช้กุญแจคู่ (หรือวิธีในหัวข้อถัดไป) แค่ช่วงแรก เพื่อตกลงกุญแจดอกเดียวชั่วคราวกันอย่างปลอดภัย จากนั้นก็ใช้กุญแจดอกเดียวนั้นเข้ารหัสข้อมูลจริงด้วยความเร็วเต็มที่ HTTPS ที่เราใช้ทุกวันทำแบบนี้เป๊ะ ๆ ซึ่งจะเห็นละเอียดใน CASE-009
06ตกลงกุญแจลับกันกลางที่สาธารณะ Diffie–Hellman key exchange
ปี 1976 Whitfield Diffie และ Martin Hellman ตีพิมพ์ไอเดียที่ฟังดูเหมือนมายากล: คนสองคนที่ไม่เคยเจอกัน คุยกันผ่านช่องทางที่ทุกคนฟังได้หมด แต่จบการคุยแล้ว ทั้งสองคนกลับ มีกุญแจลับดอกเดียวกัน ที่คนฟังอยู่ตลอดก็ยังคำนวณไม่ได้ วิธีนี้เรียกว่า Diffie–Hellman key exchange
คณิตศาสตร์จริงใช้เลขยกกำลังขนาดยักษ์ แต่มีอุปมาที่อธิบายได้ดีมากและครูหลายคนชอบใช้ คือ การผสมสี หลักคิดอยู่ที่ว่า สีสองถ้วยผสมกันง่าย แต่ถ้าได้ถ้วยที่ผสมแล้วมา จะแยกกลับเป็นสีตั้งต้นแต่ละสีไม่ได้
FIG 04Diffie–Hellman ฉบับผสมสี: ได้สีลับเดียวกันโดยไม่เคยส่งสีลับ
บันทึกเป็นภาพอ่านภาพนี้เป็นข้อความ
- เอและบีตกลงสีตั้งต้นร่วมกัน (เหลืองอ่อน) อย่างเปิดเผย คนแอบดูก็เห็น
- เอเลือกสีลับคือม่วง บีเลือกสีลับคือน้ำเงิน ต่างคนต่างเก็บไว้ ไม่บอกใคร
- เอผสมเหลืองอ่อนกับม่วง บีผสมเหลืองอ่อนกับน้ำเงิน
- ทั้งสองส่งสีผสมของตัวเองให้อีกฝ่ายอย่างเปิดเผย คนแอบดูเห็นสีผสมทั้งสองถ้วย
- เอเติมสีม่วงลงในสีผสมของบี บีเติมสีน้ำเงินลงในสีผสมของเอ ทั้งคู่ได้สีสุดท้ายเดียวกัน ซึ่งมีครบทั้งสามสี
- คนแอบดูแยกสีผสมกลับเป็นสีลับไม่ได้ จึงสร้างสีสุดท้ายไม่ได้ สีสุดท้ายนี้คือกุญแจลับร่วมกัน ใช้เข้ารหัสแบบกุญแจดอกเดียวต่อได้เลย
ในโลกจริง “สี” คือตัวเลขขนาดหลายร้อยหลัก และ “การผสม” คือการคำนวณที่ย้อนกลับยากมาก เวอร์ชันที่ใช้กันมากในปัจจุบันเป็นแบบเส้นโค้งวงรี ชื่อว่า ECDH (เช่น X25519) ทุกครั้งที่เราเปิดเว็บ HTTPS เบราว์เซอร์กับเซิร์ฟเวอร์ทำพิธีผสมสีนี้ใหม่ทุกครั้ง ได้กุญแจชั่วคราวที่ใช้แล้วทิ้ง
การใช้กุญแจชั่วคราวแบบนี้ให้ของแถมที่มีค่ามาก เรียกว่า Forward secrecy สมมติวันหนึ่งกุญแจส่วนตัวถาวรของเว็บไซต์หลุดออกไป คนร้ายที่อัดเก็บทราฟฟิกเก่า ๆ ของเราไว้ก็ยังถอดย้อนหลังไม่ได้อยู่ดี เพราะกุญแจของแต่ละรอบถูกทิ้งไปตั้งแต่จบการเชื่อมต่อแล้ว
แต่ Diffie–Hellman มีจุดบอดหนึ่งข้อที่ต้องรู้: มันไม่ได้บอกว่าเรากำลังผสมสีอยู่กับใคร ถ้าคนร้ายเข้ามายืนตรงกลาง แล้วแอบผสมสีกับเราด้วยตัวเองฝั่งหนึ่ง และผสมกับเว็บจริงอีกฝั่งหนึ่ง (การโจมตีแบบคนกลาง หรือ Man-in-the-Middle) ทั้งสองฝั่งก็จะคิดว่าคุยกันอยู่ตรง ๆ ทางแก้คือต้องมี ลายเซ็นดิจิทัลและใบรับรอง มายืนยันตัวตนของอีกฝั่ง ซึ่งเป็นเรื่องของหัวข้อที่ 08 และบทถัดไป
- ศัพท์น่ารู้: Man-in-the-Middle (MITM)
- การโจมตีที่คนร้ายแทรกตัวเข้าไปกลางการสื่อสาร แล้วแสร้งเป็นอีกฝั่งกับทั้งสองฝ่าย เหมือนคนที่รับโน้ตจากเรา เปิดอ่าน เขียนใหม่ แล้วส่งต่อให้เพื่อนด้วยลายมือที่ดูเหมือนของเรา การเข้ารหัสอย่างเดียวกันไม่ได้ ต้องมีการยืนยันตัวตนด้วย
07แฮช: ลายนิ้วมือของข้อมูล Hash functions & password storage
เครื่องมือชิ้นต่อไปไม่ใช่การเข้ารหัส เพราะมันไม่มีกุญแจ และถอดกลับไม่ได้ ฟังก์ชันแฮช (Hash function) รับข้อมูลอะไรก็ได้เข้าไป จะเป็นคำเดียว ไฟล์รูป หรือหนังสือทั้งเล่ม แล้วคายตัวเลขความยาวคงที่ออกมาหนึ่งชุด เรียกว่า ค่าแฮช หรือลายนิ้วมือของข้อมูล ตัวที่ใช้กันมากตอนนี้คือ SHA-256 ซึ่งให้ผลยาว 256 บิตเสมอ หรือเขียนเป็นเลขฐานสิบหกได้ 64 ตัวอักษร
ฟังก์ชันแฮชที่ดีมีนิสัยแปลกอย่างหนึ่ง เรียกว่า ปรากฏการณ์หิมะถล่ม (Avalanche effect) แก้ข้อมูลเข้าไปแค่นิดเดียว ผลลัพธ์จะเปลี่ยนไปแทบทั้งชุด ตัวเลขในภาพข้างล่างเป็นค่า SHA-256 จริงที่คำนวณจากข้อความภาษาไทยสองประโยค ใครจะลองคำนวณตามเองก็ได้ผลเดียวกัน
FIG 05แก้ตัวเดียว ลายนิ้วมือเปลี่ยนทั้งชุด
บันทึกเป็นภาพอ่านภาพนี้เป็นข้อความ
- ข้อความ A “โอนเงิน 100 บาท” ผ่าน SHA-256 ได้ 86b7a152571e3e52ede606d77e1fe8a7e783bfd59462d73d6b8789bf9b36326b
- ข้อความ B “โอนเงิน 900 บาท” ต่างจาก A แค่ตัวเดียว ผ่าน SHA-256 ได้ 62d637f542a1b2d10d6dddcf2231bb82cc701ec973bd196600c5942e9ef8939e
- ผลลัพธ์ต่างกัน 62 จาก 64 ตัวอักษร หรือ 131 จาก 256 บิต ราวครึ่งหนึ่ง เหมือนสุ่มใหม่ทั้งหมด
- คุณสมบัติของแฮชที่ดี: ยาวเท่าเดิมเสมอ ย้อนกลับเป็นข้อความเดิมไม่ได้ และหาสองข้อความที่ได้แฮชเดียวกันแทบเป็นไปไม่ได้
นิสัยแบบนี้ทำให้แฮชเป็นเครื่องตรวจ “ความครบถ้วน” ชั้นดี เว็บดาวน์โหลดโปรแกรมหลายแห่งจะแปะค่า SHA-256 ของไฟล์ไว้ข้าง ๆ ลิงก์ ดาวน์โหลดมาแล้วคำนวณแฮชเอง ถ้าตรงกันแปลว่าไฟล์ไม่ถูกแก้ระหว่างทาง ระบบสำรองข้อมูล Git และบล็อกเชนก็ใช้แฮชเป็นกระดูกสันหลังเหมือนกัน
แฮชก็มีวันหมดอายุ MD5 และ SHA-1 ที่เคยนิยม ตอนนี้ถูกพิสูจน์แล้วว่ามีคนจงใจสร้างสองไฟล์ที่ได้แฮชเดียวกันได้ (เรียกว่า collision) จึงไม่ควรใช้ในงานความปลอดภัยอีกต่อไป งานใหม่ให้ใช้ตระกูล SHA-2 (อย่าง SHA-256) หรือ SHA-3
เก็บรหัสผ่านให้ถูกวิธี
งานที่สำคัญที่สุดอย่างหนึ่งของแฮชคือการเก็บรหัสผ่าน เว็บไซต์ที่ดี ไม่เก็บรหัสผ่านของเราไว้ตรง ๆ แต่เก็บค่าแฮชของมัน ตอนเราล็อกอิน ระบบก็แค่แฮชสิ่งที่เราพิมพ์ แล้วเทียบว่าตรงกับที่เก็บไว้ไหม ถ้าวันหนึ่งฐานข้อมูลหลุด คนร้ายก็ได้แค่ลายนิ้วมือ ไม่ได้รหัสผ่าน
ฟังดูดี แต่มีกับดักสองชั้น ชั้นแรก คนส่วนใหญ่ใช้รหัสผ่านซ้ำ ๆ กัน คนร้ายจึงคำนวณแฮชของรหัสยอดฮิตเป็นล้าน ๆ ตัวเก็บไว้ล่วงหน้า (เรียกว่า rainbow table หรือตารางค้นหา) ได้ฐานข้อมูลมาเมื่อไร ก็แค่เปิดตารางเทียบ ชั้นที่สอง แฮชอย่าง SHA-256 ถูกออกแบบมาให้ เร็ว การ์ดจอเครื่องเดียวลองเดารหัสได้มหาศาลต่อวินาที ซึ่งเป็นข่าวร้ายสำหรับรหัสผ่านสั้น ๆ
ทางแก้มีสองอย่างที่ต้องทำคู่กัน: เติมเกลือ (Salt) คือค่าสุ่มที่ไม่ซ้ำกันในแต่ละบัญชี ผสมเข้าไปก่อนแฮช และ ใช้ฟังก์ชันที่ช้าโดยตั้งใจ ที่ออกแบบมาเพื่อรหัสผ่านโดยเฉพาะ
FIG 06รหัสเดียวกัน แต่เก็บคนละแบบ
บันทึกเป็นภาพอ่านภาพนี้เป็นข้อความ
- แบบแฮชเปล่า: สมชายและสมหญิงใช้รหัส rakthai123 เหมือนกัน ได้ค่าแฮชเดียวกันคือ 97d43d6de9d22583… ฐานข้อมูลหลุดเมื่อไร คนร้ายเห็นทันทีว่าใครใช้รหัสเดียวกัน และเทียบกับตารางที่คำนวณไว้ล่วงหน้าได้เลย
- แบบเติมเกลือ: สมชายได้เกลือ x7Kp2 ได้แฮช fe45a9a0fdbca73b… สมหญิงได้เกลือ Qm9ZaR ได้แฮช 378e27d9fa0acf70… รหัสเดียวกันแต่ผลต่างกัน
- ตารางสำเร็จรูปใช้ไม่ได้ คนร้ายต้องเดาทีละบัญชี และฟังก์ชันที่ช้าโดยตั้งใจทำให้การเดาแต่ละครั้งเสียเวลามาก
เกลือไม่ต้องเป็นความลับ มันเก็บไว้คู่กับค่าแฮชได้เลย หน้าที่ของมันคือทำให้ทุกบัญชี “ต่างกัน” จนตารางสำเร็จรูปหมดความหมาย ส่วนฟังก์ชันที่ช้าโดยตั้งใจอย่าง Argon2id (รุ่นหนึ่งในตระกูล Argon2 ผู้ชนะการแข่งขัน Password Hashing Competition ปี 2015) ถูกออกแบบให้ทั้งกินเวลาและกินหน่วยความจำ คนธรรมดาที่ล็อกอินวันละครั้งรอเสี้ยววินาทีไม่รู้สึกอะไร แต่คนร้ายที่ต้องเดาเป็นพันล้านครั้งจะเจ็บหนัก คู่มือของ OWASP ปัจจุบันแนะนำ Argon2id เป็นตัวเลือกแรก ถ้าใช้ไม่ได้ให้ใช้ scrypt และใช้ bcrypt กับระบบเก่า
อย่าทำเก็บรหัสตรง ๆ หรือแฮชเร็วแบบไม่เติมเกลือ
# ฐานข้อมูลหลุดเมื่อไร อ่านรหัสได้ทันที db.save(user, password) # เร็วเกินไป และไม่มีเกลือ: ใครใช้รหัสเหมือนกันก็ได้ค่าเหมือนกัน db.save(user, sha1(password))
ทำแบบนี้ใช้ไลบรารีมาตรฐาน (Python: argon2-cffi)
from argon2 import PasswordHasher ph = PasswordHasher() # ค่าเริ่มต้นคือ Argon2id + เกลือสุ่มให้อัตโนมัติ # ตอนสมัคร: เก็บแค่ค่าแฮช (เกลือและพารามิเตอร์ฝังอยู่ในสตริงนี้แล้ว) db.save(user, ph.hash(password)) # $argon2id$v=19$m=...$<เกลือ>$<แฮช> # ตอนล็อกอิน: ถ้าไม่ตรง ฟังก์ชันจะแจ้งข้อผิดพลาด ph.verify(stored_hash, attempt)
08ลายเซ็นดิจิทัล: พิสูจน์ว่าแท้ และไม่ถูกแก้ Digital signatures
คราวนี้เอากุญแจคู่มาใช้กลับด้าน ถ้าล็อกด้วยกุญแจสาธารณะแล้วเปิดได้ด้วยกุญแจส่วนตัว ก็มีงานอีกแบบที่ ทำด้วยกุญแจส่วนตัว แล้วใครก็ตรวจได้ด้วยกุญแจสาธารณะ นั่นคือ ลายเซ็นดิจิทัล (Digital signature)
นึกถึงตราประทับประจำตัวที่มีเราคนเดียวถือ ใครเห็นรอยตราบนเอกสารก็เทียบกับตัวอย่างรอยตราที่เราแจกไว้ได้ แต่ลายเซ็นดิจิทัลเก่งกว่าตราประทับมาก เพราะมันผูกอยู่กับ เนื้อหาทุกบิต ของเอกสารผ่านค่าแฮช แก้เอกสารแม้แต่จุดเดียว ลายเซ็นก็ใช้ไม่ได้ทันที
FIG 07เซ็นด้วยกุญแจส่วนตัว ตรวจด้วยกุญแจสาธารณะ
บันทึกเป็นภาพอ่านภาพนี้เป็นข้อความ
- ผู้พัฒนาแฮชไฟล์อัปเดต ได้ลายนิ้วมือ (เช่น SHA-256 ขึ้นต้นด้วย 9b526974)
- ผู้พัฒนาใช้กุญแจส่วนตัวสร้างลายเซ็นจากลายนิ้วมือนั้น กุญแจส่วนตัวอยู่กับผู้พัฒนาเท่านั้น
- ส่งไฟล์อัปเดตพร้อมลายเซ็นไปยังเครื่องของเรา จุดประสงค์คือพิสูจน์ว่าแท้ ไม่ใช่ปิดเป็นความลับ
- เครื่องเราแฮชไฟล์ที่ได้รับเอง ได้ลายนิ้วมือ B
- เครื่องเราตรวจลายเซ็นด้วยกุญแจสาธารณะของผู้พัฒนา ได้ลายนิ้วมือ A ที่ผู้พัฒนาเซ็นรับรองไว้
- ถ้า A ตรงกับ B แปลว่ามาจากผู้พัฒนาจริงและไม่ถูกแก้ ติดตั้งได้
- ถ้ามีคนร้ายแก้ไฟล์ระหว่างทาง เขาสร้างลายเซ็นใหม่ไม่ได้เพราะไม่มีกุญแจส่วนตัว เครื่องเราจะพบว่า A ไม่ตรงกับ B แล้วปฏิเสธการติดตั้ง
ลายเซ็นดิจิทัลอยู่รอบตัวเรามากกว่าที่คิด ระบบปฏิบัติการตรวจลายเซ็นก่อนลงอัปเดตทุกครั้ง ร้านค้าแอปตรวจลายเซ็นของแอป ไฟล์ PDF ใบกำกับภาษีหรือเอกสารราชการอิเล็กทรอนิกส์ก็เซ็นแบบนี้ และที่สำคัญที่สุด ใบรับรองของเว็บไซต์ที่ทำให้ HTTPS ไว้ใจได้ ก็คือลายเซ็นดิจิทัลของผู้ออกใบรับรอง ซึ่งจะเจาะลึกในบทถัดไป
อัลกอริทึมลายเซ็นที่พบบ่อยคือ RSA, ECDSA และ Ed25519 อย่าสับสนกับ “ลายเซ็นอิเล็กทรอนิกส์” แบบที่เราวาดลายมือบนแท็บเล็ตตอนรับพัสดุ อันนั้นเป็นแค่รูปภาพ ส่วนลายเซ็นดิจิทัลคือคณิตศาสตร์ที่พิสูจน์ได้
- ศัพท์น่ารู้: Non-repudiation (ปฏิเสธความรับผิดชอบไม่ได้)
- เพราะกุญแจส่วนตัวมีเจ้าของคนเดียว ถ้าลายเซ็นถูกต้อง เจ้าของกุญแจก็จะบอกว่า “ฉันไม่ได้เซ็น” ได้ยาก ระบบเอกสารอิเล็กทรอนิกส์ที่มีผลทางกฎหมายจึงอาศัยคุณสมบัตินี้ ตราบใดที่กุญแจส่วนตัวไม่หลุดไปอยู่ในมือคนอื่น
09เข้ารหัสตรงไหน: ระหว่างทาง ตอนเก็บ และต้นทางถึงปลายทาง In transit, at rest, end-to-end
เวลาบริษัทไหนบอกว่า “ข้อมูลของคุณถูกเข้ารหัส” ให้ถามกลับในใจเสมอว่า เข้ารหัสช่วงไหน และใครถือกุญแจ เพราะคำว่าเข้ารหัสคำเดียว ครอบคลุมได้หลายแบบมากที่ปกป้องเราไม่เท่ากันเลย
- ระหว่างทาง (In transit): ข้อมูลถูกล็อกตอนวิ่งบนเครือข่าย เช่น HTTPS แต่พอถึงเซิร์ฟเวอร์ก็ถูกถอดออกมาให้ระบบใช้งาน
- ตอนเก็บ (At rest): ข้อมูลที่บันทึกลงดิสก์ถูกล็อกไว้ ถ้ามีคนขโมยฮาร์ดดิสก์ไปก็อ่านไม่ได้ แต่ผู้ให้บริการมักถือกุญแจเอง
- ต้นทางถึงปลายทาง (End-to-end encryption, E2EE): ล็อกตั้งแต่ในมือถือเรา ไปปลดล็อกในมือถือคนรับ กุญแจอยู่ในเครื่องสองเครื่องนั้นเท่านั้น เซิร์ฟเวอร์กลางทางทำได้แค่ส่งต่อตัวอักษรมั่ว ๆ
FIG 08สามระดับของคำว่า “เข้ารหัสแล้ว”
บันทึกเป็นภาพอ่านภาพนี้เป็นข้อความ
- เข้ารหัสระหว่างทาง: เส้นทางจากมือถือเราไปเซิร์ฟเวอร์ และจากเซิร์ฟเวอร์ไปมือถือเพื่อนถูกล็อก แต่ข้อความถูกถอดออกมาอ่านได้ระหว่างพักที่เซิร์ฟเวอร์
- เพิ่มการเข้ารหัสตอนเก็บ: เซิร์ฟเวอร์เก็บข้อมูลลงดิสก์แบบล็อก แต่ผู้ให้บริการถือกุญแจเอง จึงยังเข้าถึงได้
- เข้ารหัสต้นทางถึงปลายทาง: ข้อความถูกล็อกตั้งแต่มือถือเราจนถึงมือถือเพื่อน กุญแจอยู่ในมือถือสองเครื่องเท่านั้น เซิร์ฟเวอร์เห็นแต่ตัวอักษรมั่ว
ทั้งสามแบบมีประโยชน์และใช้ร่วมกันได้ เว็บธนาคารใช้แบบแรกกับแบบที่สอง เพราะธนาคารจำเป็นต้องอ่านคำสั่งโอนเงินของเราจริง ๆ ส่วนแชตส่วนตัวไม่มีเหตุผลที่ผู้ให้บริการต้องอ่าน E2EE จึงเหมาะที่สุด ปัจจุบันแอปแชตหลายตัวเปิด E2EE เป็นค่าเริ่มต้นแล้ว เช่น Signal และ WhatsApp
แล้วเราทำอะไรได้
ตั้งรหัสล็อกจอ และเปิดการเข้ารหัสเครื่อง
มือถือรุ่นใหม่ส่วนใหญ่เข้ารหัสข้อมูลในเครื่องให้อยู่แล้วเมื่อมีรหัสล็อกจอ ส่วนคอมพิวเตอร์ให้เปิด BitLocker หรือ Device Encryption บน Windows และ FileVault บน Mac ถ้าเครื่องหาย ข้อมูลก็ไม่หลุดตามไปด้วย
คุยเรื่องสำคัญในแอปที่เป็น E2EE
และอ่านให้ออกว่าฟีเจอร์ไหนอยู่นอก E2EE เช่น แชตกลุ่มใหญ่ หรือแบ็กอัปบนคลาวด์
ระวังแบ็กอัป
ข้อความที่ล็อกอย่างดีในแชต อาจไปนอนอยู่ในแบ็กอัปที่ไม่ได้เข้ารหัสแบบเดียวกัน ถ้าบริการมีตัวเลือกเข้ารหัสแบ็กอัปแบบที่เราถือกุญแจเอง ให้เปิด และจำรหัสกู้คืนให้ดี
เช็กลายนิ้วมือของไฟล์ที่ดาวน์โหลด
ถ้าเว็บทางการให้ค่า SHA-256 มา ลองคำนวณเทียบ บน Windows ใช้คำสั่ง
certutil -hashfile ไฟล์ SHA256บน Mac และ Linux ใช้shasum -a 256 ไฟล์อย่าส่งรหัสผ่านหรือกุญแจผ่านช่องทางเดียวกับของที่มันล็อก
ส่งไฟล์ ZIP ใส่รหัสทางอีเมล แล้วส่งรหัสตามมาในอีเมลถัดไป เท่ากับวางกุญแจไว้ข้างแม่กุญแจ ให้บอกรหัสผ่านอีกช่องทางหนึ่ง เช่น โทรบอก
10สิ่งที่การเข้ารหัสทำไม่ได้ และโลกหลังควอนตัม Honest limits & post-quantum
การเข้ารหัสสมัยใหม่แข็งแรงจนแทบไม่มีใครเจาะตัวคณิตศาสตร์ตรง ๆ คนร้ายเลยเลือก อ้อมไปทางอื่น เสมอ ถ้าอยากใช้การเข้ารหัสให้เป็น ต้องรู้ด้วยว่ามันไม่ได้ปกป้องอะไรบ้าง
- ปลายทางถูกเจาะ = จบ ถ้ามีมัลแวร์ในมือถือ มันอ่านข้อความได้ตั้งแต่ก่อนเข้ารหัสและหลังถอดรหัส E2EE ช่วยอะไรไม่ได้ และคนรับก็ยังแคปหน้าจอส่งต่อได้เสมอ
- เมทาดาทายังรั่ว ต่อให้เนื้อหาเป็นความลับ ข้อมูลรอบ ๆ อย่างใครคุยกับใคร ตอนกี่โมง ข้อความยาวแค่ไหน ก็มักยังมองเห็นได้ และบอกอะไรได้มากกว่าที่คิด
- กุญแจหลุด หรือรหัสผ่านอ่อน AES 256 บิตไม่มีความหมาย ถ้ากุญแจถูกเก็บไว้ในโค้ดบน GitHub หรือถ้าการปลดล็อกทั้งหมดขึ้นกับรหัสผ่าน 123456
- ใช้ผิดวิธี อัลกอริทึมดีแต่ตั้งค่าผิด ก็พังได้ “การเข้ารหัสที่ล้มเหลว” (Cryptographic Failures) ติดอยู่ในรายการ OWASP Top 10 ฉบับปี 2025 ด้วย ซึ่งจะเจอใน CASE-012
- เข้ารหัสไม่ได้แปลว่าน่าไว้ใจ เว็บปลอมก็ใช้ HTTPS ได้ และแรนซัมแวร์ใน CASE-002 ก็ใช้การเข้ารหัสเป็นอาวุธล็อกไฟล์ของเรา
คอมพิวเตอร์ควอนตัมกับการเข้ารหัสหลังควอนตัม
ภัยระยะยาวที่วงการเตรียมรับมืออยู่ตอนนี้คือ คอมพิวเตอร์ควอนตัม ที่มีขนาดใหญ่และเสถียรพอ ซึ่งยังไม่มีใครสร้างได้ในวันนี้ แต่ถ้าวันหนึ่งสร้างได้ มันจะแก้โจทย์ที่ RSA, ECC และ Diffie–Hellman แบบเดิมพึ่งพาได้เร็วมาก ส่วนกุญแจดอกเดียวอย่าง AES ได้รับผลกระทบน้อยกว่า ใช้กุญแจยาวขึ้นอย่าง AES-256 ก็ยังรับไหว
ที่น่าห่วงคือแผนที่เรียกว่า “เก็บไว้ก่อน ถอดทีหลัง” (Harvest now, decrypt later) คนร้ายที่มีทรัพยากรมากอาจอัดเก็บข้อมูลเข้ารหัสไว้ตั้งแต่วันนี้ เพื่อรอถอดในอนาคต ข้อมูลที่ต้องเป็นความลับนาน ๆ อย่างประวัติสุขภาพหรือความลับของรัฐ จึงต้องเริ่มย้ายตั้งแต่ตอนนี้
คำตอบคือ การเข้ารหัสหลังควอนตัม (Post-quantum cryptography, PQC) ซึ่งใช้โจทย์คณิตศาสตร์แบบใหม่ที่เชื่อกันว่าคอมพิวเตอร์ควอนตัมก็แก้ไม่ได้ สถานะล่าสุดที่ควรรู้:
- สิงหาคม 2024 NIST ประกาศมาตรฐานชุดแรกสามฉบับ: FIPS 203 (ML-KEM) สำหรับแลกกุญแจ, FIPS 204 (ML-DSA) และ FIPS 205 (SLH-DSA) สำหรับลายเซ็น
- มีนาคม 2025 NIST เลือกอัลกอริทึม HQC เป็นตัวแลกกุญแจสำรอง ส่วนลายเซ็น FN-DSA (พัฒนาจาก Falcon) กำลังจัดทำเป็น FIPS 206
- เบราว์เซอร์หลักเริ่มใช้แล้ว: Chrome และ Firefox เปิดการแลกกุญแจแบบผสมระหว่าง X25519 เดิมกับ ML-KEM (ชื่อ X25519MLKEM768) เป็นค่าเริ่มต้นตั้งแต่ปลายปี 2024 ข้อดีของแบบผสมคือ ถ้าตัวใหม่มีจุดอ่อนที่ยังไม่มีใครเห็น ตัวเก่าก็ยังกันไว้อีกชั้น
- แอปแชตก็ขยับ: Signal เพิ่มโปรโตคอล PQXDH ในปี 2023 และ Apple เพิ่ม PQ3 ให้ iMessage ในปี 2024
- NIST ร่างแผนเปลี่ยนผ่าน (NIST IR 8547 ซึ่งยังเป็นฉบับร่าง) ให้เลิกใช้ RSA และ ECC ระดับความปลอดภัยปัจจุบันหลังปี 2030 และห้ามใช้ในระบบที่ยึดมาตรฐานนี้หลังปี 2035
สำหรับคนทั่วไป ข่าวดีคือแทบไม่ต้องทำอะไรเอง แค่ อัปเดตเบราว์เซอร์ ระบบปฏิบัติการ และแอปให้ล่าสุด ของใหม่ก็มาถึงเราเอง ส่วนคนที่จะทำงานสายนี้ สิ่งที่องค์กรทั่วโลกเริ่มทำคือสำรวจว่าระบบไหนใช้การเข้ารหัสแบบไหนอยู่บ้าง เพื่อวางแผนเปลี่ยน แนวคิดนี้เรียกว่า Crypto-agility คือออกแบบระบบให้เปลี่ยนอัลกอริทึมได้ง่ายตั้งแต่แรก
ความเชื่อ
“คอมพิวเตอร์ควอนตัมมาเมื่อไร การเข้ารหัสทุกแบบพังหมด ข้อมูลทุกอย่างบนโลกจะถูกเปิดอ่าน”
ความจริง
ที่เสี่ยงคือกลุ่มกุญแจคู่แบบเดิม (RSA, ECC, Diffie–Hellman) ส่วน AES และแฮชที่ยาวพอยังรับมือได้ และมาตรฐานหลังควอนตัมก็ประกาศใช้แล้ว กำลังทยอยเข้าไปอยู่ในเบราว์เซอร์และแอปที่เราใช้ทุกวัน
11สรุปให้จำ Recap
เครื่องมือทั้งหมดในบทนี้ มีหน้าที่ต่างกันชัดเจน ถ้าจับคู่ได้ถูก ก็อ่านระบบความปลอดภัยแทบทุกระบบออก
- ความลับต้องอยู่ที่กุญแจ อัลกอริทึมที่ดีเปิดเผยได้ อย่าประดิษฐ์การเข้ารหัสเอง
- กุญแจดอกเดียว (AES) เร็ว ใช้ล็อกข้อมูลจริง แต่ต้องแจกกุญแจให้ได้ก่อน
- กุญแจคู่และ Diffie–Hellman แก้ปัญหาการแจกกุญแจ ระบบจริงใช้แบบผสมกับกุญแจดอกเดียว
- แฮชคือลายนิ้วมือ ใช้ตรวจว่าไม่ถูกแก้ และรหัสผ่านต้องเก็บด้วยเกลือ + ฟังก์ชันที่ช้าโดยตั้งใจ (Argon2id)
- ลายเซ็นดิจิทัล พิสูจน์ว่าแท้และไม่ถูกแก้ เป็นรากฐานของอัปเดตซอฟต์แวร์และใบรับรองเว็บ
- ถามเสมอว่าเข้ารหัสช่วงไหน ใครถือกุญแจ และอัปเดตทุกอย่างให้ล่าสุดเพื่อรับของใหม่อย่าง PQC
ลองทบทวนดู
ทำไมอัลกอริทึมอย่าง AES ถึงเปิดเผยให้ทุกคนดูได้ แล้วยังปลอดภัย
ตามหลักของ Kerckhoffs ความลับควรอยู่ที่กุญแจเพียงอย่างเดียว อัลกอริทึมที่เปิดเผยได้ผ่านการตรวจจากนักวิจัยทั่วโลกมาแล้ว ส่วนกุญแจ 128 บิตขึ้นไปมีจำนวนแบบมากจนการเดาทุกแบบเป็นไปไม่ได้ในทางปฏิบัติ
ถ้ากุญแจคู่แก้ปัญหาการแจกกุญแจได้ ทำไมระบบจริงยังใช้กุญแจดอกเดียวอยู่
เพราะกุญแจคู่ช้ากว่ามาก ระบบจริงจึงใช้กุญแจคู่หรือ Diffie–Hellman แค่ตอนเริ่ม เพื่อตกลงกุญแจดอกเดียวชั่วคราวอย่างปลอดภัย แล้วใช้กุญแจดอกเดียว (เช่น AES) เข้ารหัสข้อมูลจริงด้วยความเร็วเต็มที่
สมชายกับสมหญิงใช้รหัสผ่านเดียวกัน ระบบที่เติมเกลือจะเก็บค่าเหมือนกันไหม
ไม่เหมือน เพราะแต่ละบัญชีได้เกลือสุ่มไม่ซ้ำกัน ผลแฮชจึงต่างกัน คนร้ายใช้ตารางที่คำนวณไว้ล่วงหน้าไม่ได้ และมองไม่ออกว่าใครใช้รหัสเดียวกัน ถ้าใช้ฟังก์ชันที่ช้าโดยตั้งใจอย่าง Argon2id ด้วย การเดาทีละบัญชีก็ยิ่งช้าลงอีก
ลายเซ็นดิจิทัลบนไฟล์อัปเดตพิสูจน์อะไรให้เราได้บ้าง
พิสูจน์สองอย่าง คือไฟล์มาจากเจ้าของกุญแจส่วนตัวจริง (ยืนยันที่มา) และไม่ถูกแก้แม้แต่บิตเดียวระหว่างทาง (ความครบถ้วน) แต่มันไม่ได้ทำให้ไฟล์เป็นความลับ
แชตที่เป็น E2EE แล้ว ยังมีความเสี่ยงอะไรเหลืออยู่
ปลายทางที่ติดมัลแวร์ คนรับที่แคปหน้าจอส่งต่อ เมทาดาทาว่าใครคุยกับใครเมื่อไร แบ็กอัปบนคลาวด์ที่อาจไม่ได้ล็อกแบบเดียวกัน และฟีเจอร์ที่อยู่นอก E2EE ของแอปนั้น