By Arnon Puitrakul - 17 พฤษภาคม 2023
หลังจากตอนก่อน เราเล่าเรื่อง FileVault ที่เป็นการเข้ารหัสข้อมูลบนเครื่อง Mac ของเราไป ทำให้เกิดคำถามว่า แล้วการเข้ารหัสแบบ AES มันยากต่อการจัดการได้มากแค่ไหน เราบอกสั้น ๆ เลยว่า ถ้าคุณพี่อายุมากกว่าจักรวาล และคุณพรี่รอได้ ก็อาจจะได้ก็ได้นะ
อีกเรื่องที่เราฟังมาแล้ว ร้องวอทเลย คือ เนี่ย เดี๋ยวรัฐบาลก็ถอดได้ อยากจะบอกว่า พี่ ๆ ไม่ว่าพรี่จะเป็นรัฐบาล หรือเ_ยอะไรก็ตาม ยังไงพี่ก็ต้องอยู่ในโลกของคณิตศาสตร์ และ กฏทางฟิสิกส์อยู่ดีเนอะ ดังนั้น พรี่ไปนั่งพักตรงโน้นเนอะ แต่มันมีวิธีอยู่ เดี๋ยวมาบอก
เราเริ่มจาก วิธีการในการที่เราจะ แหกการเข้ารหัส ก่อนละกัน วิธีแรก เป็นวิธีของคนฉลาด คือ สุดท้ายแล้วการเข้ารหัส เราก็หนีไม่พ้นคณิตศาสตร์อยู่ดี ดังนั้น ถ้าเราสามารถค้นหาข้อสังเกตต่าง ๆ ได้ มันก็อาจจะนำไปสู่การค้นหาพวกจุดอ่อนของวิธีการเข้ารหัสต่าง ๆ ได้
ถามว่า ที่ผ่านมามีวิธีการเข้ารหัส หรือ การทำ Hashing ตัวไหนที่แตกแล้วมั้ย คำตอบคือ มี เรายกตัวอย่าง Classical Case มาก ๆ เราว่าเด็กคอมหลาย ๆ คนน่าจะผ่านมาบ้างแล้วแหละ กับ Hashing Algorithm อย่าง SHA-1 ตอนเราเด็ก ๆ เราใช้เยอะมาก เพราะคิดว่า มันปลอดภัยมาก ๆ จนนี่แหละ 2011 ก็คือ แตก แหก ลงหลุมไปแล้วจ้าาา สั้น ๆ เลยคือ เพราะเจอ Hash Collision นั่นแหละ นำมาสู่การโจมตีได้หลากหลายอย่างเลย อันที่เอามาเล่นกันแรก ๆ บอกเลยว่า วิธีแมร่งอย่างปั่น ปั่นเ_ย ๆ
แต่แน่นอนแหละว่า การจะมานั่งหา ข้อสังเกต ต่าง ๆ มันไม่ได้ง่ายขนาดนั้น เพราะคนที่คิดวิธีการเข้ารหัส เขาก็คิดมาเผื่อแล้วว่า คนอย่างพวกมรึง ก็ต้องมาส่องกรูอยู่ดี ในเมื่อเราหาวิธีการจัดการดี ๆ ไม่ได้ เราก็อยู่กันแบบสงครามละกัน ในเมื่อกุญแจมันมีขนาดจำกัด งั้นเราก็ไล่แมร่งไปทีละอันเลยละกัน จนกว่าจะถอดรหัสออกมาได้ วิธีการนี้เราเรียกว่า Brute Force
แน่นอนว่า ณ วันนี้ ก็ยังมีคนพยายามที่จะหาช่องโหว่ของ AES แหละแต่ก็ยังไม่สำเร็จซะทีเดียว ทำให้ก็ยังต้องพึ่งพา Brute Force อยู่ดี
ในเมื่อมันเป็นแบบนี้ ทำให้คำถามต่อไปเลยถามว่า แล้วถ้าแบบนั้น AES มันปลอดภัยขนาดไหนละ เมื่อเจอ Brute Force ตัว AES เอง เขาออกแบบกุญแจในลักษณะของ Multi-Bit Key หรือ การใช้กุญแจขนาดใหญ่กว่า 1 Bit
เรายกตัวอย่างง่าย ๆ ถ้าเรามี 4-Bits Key คณิตศาสตร์ประถมครับ ถ้าแต่ละช่อง จะออก ไม่ 0 ก็ 1 มีทั้งหมด 4 ช่อง ดังนั้นเราจะมีกี่ Combination คำตอบคือ 16 ใช่มะ คือ 0000 ถึง 1111 เอาจริง ๆ คือ มันง่ายไป ถ้าเราไปดูพวก FileVault ของ Apple เอง มันเล่นไปขนาดที่ 256-Bits ไปเลย ใหญ่กว่าเดิมหลายเท่า
อ่านผ่าน ๆ อาจจะบอกว่า เหยยยย 256 Bits กับ 4 Bits มันจะต่างกันสักเท่าไหร่กันเชียว แต่ย้อนกลับไปที่เราคำนวณ Combination เมื่อครู่ มันเป็น Exponential เลยนะ ถ้า 256 Bits ก็ลองไปคิดดูกันนะว่า มันจะมีกี่ Combination ขอข้ามพวกเครื่องคอมพิวเตอร์บ้าน ๆ ในการเอามา Brute Force หากันเลยนะ
เราลองมาคิดกันแบบ ขำ ๆ กันดีกว่า ว่าถ้าเราเป็นรัฐบาลเลย ถือ Resource มหาศาลมาก ๆ เข้าถึง Super Computer ที่ใหญ่ที่สุดในโลก ณ วันที่เขียนอย่าง Frontier ที่อยู่ใน Oak Ridge National Laboratory อยู่ใน US อะ เราเป็น NSA เลยก็ได้ (ดูเท่ เป็นสายลับดี) ในการจะ Brute Force หา Key สักอัน จะต้องใช้เวลาเท่าไหร่กัน
ขอเริ่มจาก การสมมุติค่าขึ้นมาก่อนละกันนะว่า ถ้าเราจะทำการสุ่ม Key ขึ้นมาตัวนึง และเอามาทดลองถอดรหัสเช็คความถูกต้อง จะใช้สัก 1,000 Flops แล้ว Frontier มีความเร็ว Peak ที่ 1,685.65 PFlops หรือ 1,685.65 x 10^15 Flops แปลว่า ใน 1 วินาที เครื่องนี้รันเต็มกำลังเลย ควรจะเช็คได้ 1,685.65 x 10^13 Combinations
ถ้าเราเข้ารหัสแบบ AES-256 Bits แปลว่า Key ของเราก็จะมีทั้งหมด 1.1579209 x 10^77 ดังนั้น เราอยากรู้ว่าเราจะใช้เวลาเท่าไหร่ เราก็เอามาหารกันตรง ๆ ได้เลย 1.46 x 10^61 วินาที อยากรู้ปี เราก็เอา 31,536,000 หรือ 3.1536 x 10^7 หารเข้าไป ก็จะเป็น 4.6 x 10^53 ปี หรือถ้าใครไม่เข้าใจ Scientific Notation ก็ประมาณ... 460,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000 ปี เท่านั้นเอง ไม่รู้ว่าตายห่า เกิดใหม่กี่รอบกันละนะ เพื่อจะถอดรหัสข้อมูลจาก Laptop หรือบน Desktop สัก Block นึง
นี่ขนาดเราใช้ Super Computer ที่เร็วที่สุดในโลก ณ วันที่เขียนยัดเข้าไปแล้วนะ ยังใช้เวลาเยอะขนาดนี้เลย ดังนั้นพวกคอมพิวเตอร์บ้าน ๆ เราไม่พูดแล้ว เสียเวลาไปเลย หรืออีกวิธีคือ มันเป็น World's Problem ชิบหายเลย อ่อ เราก็ขอความร่วมมือ ให้เครื่องคอมพิวเตอร์ทั้งโลกมาช่วย ๆ กัน ก็อาจจะลดเวลาจากหลายสิบล้านชาติ เหลือ 9.99 ล้านชาติเองมั้ง ทำให้การเข้ารหัส AES ด้วย Key ขนาด 256-Bits เป็นอะไรที่ปลอดภัยมาก ๆ เลยทีเดียวสำหรับในเวลานี้
ถามว่า ถ้าเราจะ Brute Force ใช้เวลาขนาดนี้ แล้ว ตอนขาเราเข้ารหัส เราไม่ต้องใช้เวลาเยอะ หรือกิน CPU กินพลังงานมหาศาลเลยเหรอ คำตอบคือ That's beauty of math เลย ถ้าใครที่เรียนพวก Cryptography จะเห็นความสวยงามในคณิตศาสตร์เยอะมาก ๆ
วิธีการเข้ารหัสอย่าง AES ถูกออกแบบมาแบบ Elegant มาก ๆ เพราะตอนเราเข้ารหัส มันทำได้ง่ายมาก ๆ มันประกอบด้วยแค่ 4 ขั้นตอนทำวน ๆ ไปเรื่อย ๆ เท่านั้นขึ้นกับขนาดของ Key พอขั้นตอนมันน้อย ทำให้เราสามารถออกแบบพวกวงจรที่ทำงานเฉพาะทาง หรือ ชุดคำสั่งบน CPU ที่ทำงานในการเข้า และ ถอดรหัสแบบ AES ได้ในตัว ดังนั้น ความเร็วมันก็จะทำได้สูงขึ้นมาก ๆ ในขณะที่กินพลังงานน้อยมาก ๆ เช่นกัน แต่เหนือสิ่งอื่นใด มันก็ยังคงป้องกัน การ Brute Force ได้ดีอยู่
ถ้าใครอยากรู้ว่า AES ทำงานยังไง ก็ Comment มาละกัน เราจะมาให้ทำ AES ด้วยมือกันว่า มันทำยังไง วิธีการมันง่ายมาก ๆ แต่การจะ Proof คือยากจริงอะไรจริง แน่นอนว่า อย่างเราเรียน Computer Science น่ะเหรอ..... วิชา Algorithm น่ะนะ คือวิชาที่ชั้นเกลียดยังไงละ แต่สุดท้าย ทุกวันนี้ก็ใช้งานอีกอิ 🌼
ตัว AES เอง ถ้าเราใช้ขนาด Key ที่เหมาะสม มันมีความปลอดภัยที่สูงมาก ๆ อย่างที่เราอธิบายไปก่อนหน้า แต่ปัญหามันคือ Single point of failure คือ ระบบจะปลอดภัย หรือไม่ ขึ้นกับ การรักษากุญแจ ถ้าเรามีการเก็บรักษากุญแจได้ดี ข้อมูลของเราก็จะปลอดภัย แต่ถ้าไม่ สุดท้าย ข้อมูลของเราก็จะถูกถอดรหัสได้อยู่ดีแบบง่าย ๆ ด้วย
ตัวอย่างที่ Extreme มาก ๆ เลยคือ ถ้าเกิด เราอยู่ใต้การสอดส่องจากองค์กรต่าง ๆ เช่นรัฐบาล หรือกลุ่มสายลับต่าง ๆ แล้วเราทำการเข้ารหัสผ่าน FileVault เลย แล้วเราเลือกทำให้เราสามารถใช้ Apple ID เป็นกุญแจ ก็อาจจะมีการขอหมายศาลไปที่ Apple เพื่อให้ปลดล๊อคให้ก็เป็นได้ จะเห็นว่า มันอยู่ที่เราเก็บกุญแจอย่างไร
แต่กลับกัน ถ้าเราเก็บ กุญแจ ของเราไว้เอง หน้าที่ความรับผิดชอบในการเก็บกุญแจจะอยู่ที่เราทันที และ ถึงเวลาที่เราต้องการปิดข้อมูลพวกนี้ไว้ เราก็ทำให้กุญแจมันหาย ๆ ไป มันก็จบแล้วไง จริง ๆ ก็คือ มันดีต่อผู้ใช้ และ ดีต่อผู้ผลิต Software อย่าง Apple เองด้วยนะ ถ้าหมายศาลถึง Apple ก็จะบอกไปว่า เหยยยย เขาเก็บ Key ไว้กับตัวเอง เราถอดรหัสไม่ได้หรอก ก็ถือว่าเป็นการปัดความรับผิดชอบไปได้แบบสวย ๆ กับได้ความดีความชอบในเรื่องของการรักษาความเป็นส่วนตัวของลูกค้าด้วย มันเลยเป็นอะไรที่ Win-Win มาก ๆ สำหรับ ลูกค้า และ บริษัทที่ผลิต Software พวกนี้ออกมา
AES-256 Bits ถือว่าเป็น Symmetric Encryption Algorithm ที่มีความปลอดภัยสูงมาก ๆ และ ยังทำได้อย่างรวดเร็ว ใช้พลังในการเข้า และ ถอดรหัสน้อยมาก ๆ จนมี Hardware เฉพาะออกมาจัดการเรื่องนี้ให้หมดแล้ว ถ้าต้องการจะ Brute Force จริง ๆ ก็อาจจะต้องใช้เวลามากกว่าอายุของจักรวาลตอนนี้อีก กับ Apple เองก็เลือกลักษณะการเข้ารหัสแบบ XTS (NIST SP800-38E และ IEEE Std 1619-2018 specifications) ด้วยทำให้มันเข้าถึงได้ง่าย และ ปลอดภัย
แน่นอนว่าเรื่องที่หลาย ๆ คนกังวลว่า ถ้า Quantum Computer เข้ามา จะทำให้มันแตกมั้ย ณ วันนี้ก็ต้องบอกว่า โคตรยาก ด้วย Quantum Algorithm ตอนนี้ยังไม่มีตัวไหนที่ Break AES ได้เลย ใกล้เคียงที่สุดคือ Shor's Algorithm ที่สามารถ Break RSA, ECC และ Diffie Hellman ได้ ไหนจะขนาดของ Qubit ที่จำเป็นต้องใช้อีก เลยคิดว่า อีกนานกว่าจะ Break AES ได้ เรื่องนี้ไม่ต้องเป็นห่วงมาก มันปลอดภัยสุด ๆ
ปล. เอาจริงนะ ไม่เข้าใจเหมือนกันว่า ทำไมแมร่งจำเลข Standard ได้ เหมือนเอ๊ะตัวเลข จนเอาไปเช็ค อีเ_ย ใช่จริง ๆ ด้วย แมร่งต้องไปสมัคร แฟนพันธุ์ทาง หัวข้อ Computer Standard แล้วปะ
หลังจากเมื่อหลายอาทิตย์ก่อน Apple ออก Mac รัว ๆ ตั้งแต่ Mac Mini, iMac และ Macbook Pro ที่ใช้ M4 กันไปแล้ว มีหลายคนถามเราเข้ามาว่า เราควรจะเลือก M4 ตัวไหนดีถึงจะเหมาะกับเรา...
จากตอนก่อน เราเล่าเรื่องการ Host Website จากบ้านของเราอย่างปลอดภัยด้วย Cloudflare Tunnel ไปแล้ว แต่ Product ด้าน Zero-Trust ของนางยังไม่หมด วันนี้เราจะมาเล่าอีกหนึ่งขาที่จะช่วยปกป้อง Infrastructure และ Application ต่าง ๆ ของเราด้วย Cloudflare Access กัน...
ทุกคนเคยได้ยินคำว่า Mainframe Computer กันมั้ย เคยสงสัยกันมั้ยว่า มันต่างจากเครื่องคอมพิวเตอร์ที่เราใช้งานกันทั่ว ๆ ไปอย่างไรละ และ Mainframe ยังจำเป็นอยู่มั้ย มันได้ตายจากโลกนี้ไปหรือยัง วันนี้เรามาหาคำตอบไปด้วยกันเลย...
เคยมั้ยเวลา Deploy โปรแกรมสักตัว เราจะต้องมานั่ง Provision Infrastructure ไหนจะ VM และ Settings อื่น ๆ อีกมากมาย มันจะดีกว่ามั้ยถ้าเรามีเครื่องมือบางอย่างที่จะ Automate งานที่น่าเบื่อเหล่านี้ออกไป และลดความผิดพลาดที่อาจจะเกิดขึ้น วันนี้เราจะพาทุกคนมาทำความรู้จักกับ Infrastructure as Code กัน...