Technology

การเข้ารหัสด้วย AES ปลอดภัยแค่ไหน

By Arnon Puitrakul - 17 พฤษภาคม 2023

การเข้ารหัสด้วย AES ปลอดภัยแค่ไหน

หลังจากตอนก่อน เราเล่าเรื่อง FileVault ที่เป็นการเข้ารหัสข้อมูลบนเครื่อง Mac ของเราไป ทำให้เกิดคำถามว่า แล้วการเข้ารหัสแบบ AES มันยากต่อการจัดการได้มากแค่ไหน เราบอกสั้น ๆ เลยว่า ถ้าคุณพี่อายุมากกว่าจักรวาล และคุณพรี่รอได้ ก็อาจจะได้ก็ได้นะ

อีกเรื่องที่เราฟังมาแล้ว ร้องวอทเลย คือ เนี่ย เดี๋ยวรัฐบาลก็ถอดได้ อยากจะบอกว่า พี่ ๆ ไม่ว่าพรี่จะเป็นรัฐบาล หรือเ_ยอะไรก็ตาม ยังไงพี่ก็ต้องอยู่ในโลกของคณิตศาสตร์ และ กฏทางฟิสิกส์อยู่ดีเนอะ ดังนั้น พรี่ไปนั่งพักตรงโน้นเนอะ แต่มันมีวิธีอยู่ เดี๋ยวมาบอก

How to crack encryption?

เราเริ่มจาก วิธีการในการที่เราจะ แหกการเข้ารหัส ก่อนละกัน วิธีแรก เป็นวิธีของคนฉลาด คือ สุดท้ายแล้วการเข้ารหัส เราก็หนีไม่พ้นคณิตศาสตร์อยู่ดี ดังนั้น ถ้าเราสามารถค้นหาข้อสังเกตต่าง ๆ ได้ มันก็อาจจะนำไปสู่การค้นหาพวกจุดอ่อนของวิธีการเข้ารหัสต่าง ๆ ได้

The First Collision for Full SHA-1
SHA-1 is a widely used 1995 NIST cryptographic hash function standard that was officially deprecated by NIST in 2011 due to fundamental security weaknesses demonstrated in various analyses and theoretical attacks. Despite its deprecation, SHA-1 remains widely...

ถามว่า ที่ผ่านมามีวิธีการเข้ารหัส หรือ การทำ Hashing ตัวไหนที่แตกแล้วมั้ย คำตอบคือ มี เรายกตัวอย่าง Classical Case มาก ๆ เราว่าเด็กคอมหลาย ๆ คนน่าจะผ่านมาบ้างแล้วแหละ กับ Hashing Algorithm อย่าง SHA-1 ตอนเราเด็ก ๆ เราใช้เยอะมาก เพราะคิดว่า มันปลอดภัยมาก ๆ จนนี่แหละ 2011 ก็คือ แตก แหก ลงหลุมไปแล้วจ้าาา สั้น ๆ เลยคือ เพราะเจอ Hash Collision นั่นแหละ นำมาสู่การโจมตีได้หลากหลายอย่างเลย อันที่เอามาเล่นกันแรก ๆ บอกเลยว่า วิธีแมร่งอย่างปั่น ปั่นเ_ย ๆ

แต่แน่นอนแหละว่า การจะมานั่งหา ข้อสังเกต ต่าง ๆ มันไม่ได้ง่ายขนาดนั้น เพราะคนที่คิดวิธีการเข้ารหัส เขาก็คิดมาเผื่อแล้วว่า คนอย่างพวกมรึง ก็ต้องมาส่องกรูอยู่ดี ในเมื่อเราหาวิธีการจัดการดี ๆ ไม่ได้ เราก็อยู่กันแบบสงครามละกัน ในเมื่อกุญแจมันมีขนาดจำกัด งั้นเราก็ไล่แมร่งไปทีละอันเลยละกัน จนกว่าจะถอดรหัสออกมาได้ วิธีการนี้เราเรียกว่า Brute Force

แน่นอนว่า ณ วันนี้ ก็ยังมีคนพยายามที่จะหาช่องโหว่ของ AES แหละแต่ก็ยังไม่สำเร็จซะทีเดียว ทำให้ก็ยังต้องพึ่งพา Brute Force อยู่ดี

How secure is AES against 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 เป็นอะไรที่ปลอดภัยมาก ๆ เลยทีเดียวสำหรับในเวลานี้

That's beauty of Math!

ถามว่า ถ้าเราจะ Brute Force ใช้เวลาขนาดนี้ แล้ว ตอนขาเราเข้ารหัส เราไม่ต้องใช้เวลาเยอะ หรือกิน CPU กินพลังงานมหาศาลเลยเหรอ คำตอบคือ That's beauty of math เลย ถ้าใครที่เรียนพวก Cryptography จะเห็นความสวยงามในคณิตศาสตร์เยอะมาก ๆ

วิธีการเข้ารหัสอย่าง AES ถูกออกแบบมาแบบ Elegant มาก ๆ เพราะตอนเราเข้ารหัส มันทำได้ง่ายมาก ๆ มันประกอบด้วยแค่ 4 ขั้นตอนทำวน ๆ ไปเรื่อย ๆ เท่านั้นขึ้นกับขนาดของ Key พอขั้นตอนมันน้อย ทำให้เราสามารถออกแบบพวกวงจรที่ทำงานเฉพาะทาง หรือ ชุดคำสั่งบน CPU ที่ทำงานในการเข้า และ ถอดรหัสแบบ AES ได้ในตัว ดังนั้น ความเร็วมันก็จะทำได้สูงขึ้นมาก ๆ ในขณะที่กินพลังงานน้อยมาก ๆ เช่นกัน แต่เหนือสิ่งอื่นใด มันก็ยังคงป้องกัน การ Brute Force ได้ดีอยู่

เปิด Lecture ตอนเรียน ป.ตรี นี่กรูผ่านมันมาจริง ๆ ด้วย ส่วนลายมือวันนั้นเ_ยยังไง วันนี้เ_ยกว่าเยอะ

ถ้าใครอยากรู้ว่า AES ทำงานยังไง ก็ Comment มาละกัน เราจะมาให้ทำ AES ด้วยมือกันว่า มันทำยังไง วิธีการมันง่ายมาก ๆ แต่การจะ Proof คือยากจริงอะไรจริง แน่นอนว่า อย่างเราเรียน Computer Science น่ะเหรอ..... วิชา Algorithm น่ะนะ คือวิชาที่ชั้นเกลียดยังไงละ แต่สุดท้าย ทุกวันนี้ก็ใช้งานอีกอิ 🌼

ปัญหาคือ กุญแจ

ตัว AES เอง ถ้าเราใช้ขนาด Key ที่เหมาะสม มันมีความปลอดภัยที่สูงมาก ๆ อย่างที่เราอธิบายไปก่อนหน้า แต่ปัญหามันคือ Single point of failure คือ ระบบจะปลอดภัย หรือไม่ ขึ้นกับ การรักษากุญแจ ถ้าเรามีการเก็บรักษากุญแจได้ดี ข้อมูลของเราก็จะปลอดภัย แต่ถ้าไม่ สุดท้าย ข้อมูลของเราก็จะถูกถอดรหัสได้อยู่ดีแบบง่าย ๆ ด้วย

Privacy vs security at heart of Apple phone decrypt order
Reuters - A court order demanding that Apple Inc help the U.S. government unlock the encrypted iPhone of one of the San Bernardino shooters is shaping up as a crucial test case of how far the government can go in forcing technology companies to help security and intelligence...

ตัวอย่างที่ 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 แล้วปะ

Read Next...

ซื้อ NAS สำเร็จรูปหรือจะประกอบเครื่องเองเลยดี

ซื้อ NAS สำเร็จรูปหรือจะประกอบเครื่องเองเลยดี

ในปัจจุบันเราพึ่งพาการเก็บข้อมูลต่าง ๆ บนเครื่องคอมพิวเตอร์มากขึ้นเรื่อย ๆ สำหรับบางคนมากจนไม่สามารถเก็บได้ในเครื่องของเราอีกแล้ว ทำให้อาจจะต้องมองหาระบบจัดเก็บข้อมูลอื่น ๆ เข้ามาใช้งาน หนึ่งในนั้นคือการใช้ NAS หลายคนมีคำถามว่า แล้วเราควรจะเลือกซื้อ NAS สำเร็จรูป หรือ DIY ดี...

SELECT count(id) เร็วกว่า count(*) จริง ๆ เหรอ

SELECT count(id) เร็วกว่า count(*) จริง ๆ เหรอ

เราไปเจอความเชื่อนึงเกี่ยวกับ SQL Query มาว่า เนี่ยนะ ถ้าเราจะ Count หรือนับแถว เราอย่าไปใช้ count(*) นะ ให้เราใช้ count(id) หรือด้านในเป็น Primary Key ใน Table นั้น ๆ จะทำให้ Query ได้เร็วกว่า วันน้ีเรามาทดลองกันดีกว่า ว่ามันเป็นแบบนั้นจริง ๆ หรือไม่...

การเบลอรูปภาพ มันทำได้อย่างไร ทำไมภาพถึงเบลอได้

การเบลอรูปภาพ มันทำได้อย่างไร ทำไมภาพถึงเบลอได้

เคยสงสัยกันมั้ยว่า Filter ที่เราใช้เบลอภาพ ไม่ว่าจะเพื่อความสวยงาม หรืออะไรก็ตาม แท้จริงแล้ว มันทำงานอย่างไร วันนี้เราจะพาไปดูคณิตศาสตร์และเทคนิคเบื้องหลังกันว่า กว่าที่รูปภาพจะถูกเบลอได้ มันเกิดจากอะไร...

AI Watermark กับความรับผิดชอบต่อการใช้ AI

AI Watermark กับความรับผิดชอบต่อการใช้ AI

หลังจากดูงาน Google I/O 2024 ที่ผ่านมา เรามาสะดุดเรื่องของการใส่ Watermark ลงไปใน Content ที่ Generate จาก AI วันนี้เราจะมาเล่าให้อ่านกันว่า วิธีการทำ Watermark ใน Content ทำอย่างไร...