Clear
Lead Graphic Papers

Full disk encryption และ Cold boot attack

ผู้เขียน: เสฏฐวุฒิ แสนนาม
วันที่เผยแพร่: 7 มิถุนายน 2556
ปรับปรุงล่าสุด: 7 มิถุนายน 2556

Share on Facebook Share on Twitter Share on Google+

Full disk encryption

ในหลายๆ องค์กร มีนโยบายให้พนักงานทำสิ่งที่เรียกว่า Full disk encryption (FDE) ซึ่งเป็นการเข้ารหัสลับ (Encrypt) ข้อมูลในฮาร์ดดิสก์ทั้งลูก (หรือเฉพาะบาง Partition) เพื่อป้องกันไม่ให้ผู้ไม่หวังดีเข้าถึงข้อมูลสำคัญที่เป็นความลับที่อยู่ในฮาร์ดดิสก์ได้ในกรณีที่ฮาร์ดดิสก์สูญหายหรือถูกขโมย

การทำ Full disk encryption นั้นสามารถทำได้ทั้งแบบฮาร์ดแวร์และซอฟต์แวร์ โดยในแบบฮาร์ดแวร์จะเป็นการใช้ฮาร์ดดิสก์ที่มีระบบ FDE ในตัว ซึ่งการเข้ารหัสลับ/ถอดรหัสลับข้อมูล จะทำผ่านทางชิปพิเศษที่อยู่ในส่วน Controller ของดิสก์นั้นๆ ตัวอย่างดิสก์ที่รองรับ FDE ในระดับฮาร์ดแวร์เป็นดังรูปที่ 1

Hardware encrypted solid state drive
รูปที่ 1 ตัวอย่างดิสก์ที่รองรับ FDE ในระดับฮาร์ดแวร์ (ที่มา ZDNet [1])

ส่วนการทำ FDE ในระดับซอฟต์แวร์นั้น ระบบปฏิบัติการสมัยใหม่ส่วนใหญ่จะมีเครื่องมือสำหรับทำ FDE มาให้ด้วยแล้ว เช่น BitLocker ใน Windows [2] หรือ FileVault ใน Mac OS X เป็นต้น [3] ในระบบปฏิบัติการ Linux บาง Distro จะมีเครื่องมือสำหรับทำ FDE มาให้ด้วยแต่แรก เช่น Ubuntu 12.10 สามารถเลือกทำ FDE ได้ตั้งแต่ขั้นตอนการติดตั้ง [4] ดังรูปที่ 2 หากระบบปฏิบัติการที่ใช้งานอยู่ไม่มีเครื่องมือที่ใช้สำหรับทำ FDE ก็อาจติดตั้งโปรแกรมจากผู้พัฒนาภายนอกได้ เช่น dm-crypt [5] หรือ TrueCrypt [6] เป็นต้น

Ubuntu encrypted drive
รูปที่ 2 การทำ FDE ในขั้นตอนการติดตั้ง Ubuntu 12.10 (ที่มา EFF [4])

นอกจากนี้ ระบบปฏิบัติการในโทรศัพท์มือถือในปัจจุบันส่วนใหญ่รองรับการทำ FDE แล้ว เช่น ใน Android สามารถตั้งค่าให้เข้ารหัสลับข้อมูลใน Internal memory ได้ แต่ไม่รวมข้อมูลที่อยู่ใน SD Card (Android ใช้ dm-crypt ในการเข้ารหัสลับข้อมูล [7]) ตัวอย่างหน้าจอ Storage Encryption ใน Android เป็นดังรูปที่ 3 ส่วน iOS เวอร์ชั่นหลังๆ จะเข้ารหัสลับข้อมูลที่อยู่ในเครื่องไว้แต่แรก โดยจะมีชิปที่ใช้สำหรับทำงานด้านนี้โดยเฉพาะ [8]

Android encrypted drive
รูปที่ 3 Storage Encryption ใน Android

ซอฟต์แวร์ที่ใช้สำหรับทำ Disk Encryption จะมีลักษณะการทำงานคล้ายคลึงกัน คือ ข้อมูลที่เก็บอยู่ในดิสก์จะถูกเข้ารหัสลับไว้ ซึ่งถ้าถอดดิสก์ออกไปใส่ในเครื่องอื่นจะไม่สามารถอ่านข้อมูลได้เหมือนกับดิสก์ปกติ ในการใช้งาน เมื่อเปิดเครื่องขึ้นมา ระบบจะแสดงหน้าจอให้ใส่รหัสผ่าน (Encryption key) หลังจากใส่รหัสผ่านได้ถูกต้อง ระบบจะเก็บ Key นั้นไว้ใน RAM เพื่อใช้ในการถอดรหัสลับ (Decrypt) ข้อมูลอื่นๆ ที่ถูกเรียกใช้งานในภายหลัง [9] Key จะถูกเก็บอยู่ใน RAM ไปจนกว่าผู้ใช้จะสั่ง Shut down หรือสั่งปิดเครื่องโดยวิธีปกติ

อย่างไรก็ตาม ถึงจะมีการทำ FDE แล้ว แต่ก็ยังมีโอกาสเสี่ยงที่จะถูกผู้ไม่หวังดีขโมยข้อมูลสำคัญออกไปจากเครื่องได้ โดยการใช้วิธีที่เรียกว่า Cold boot attack ซึ่งเป็นการนำ Encryption key ออกมาจาก RAM

Cold boot attack

เพื่อให้เกิดความเข้าใจ ก่อนอื่นต้องขออธิบายหลักการทำงานของ RAM กันก่อน RAM หรือ Random Access Memory เกิดจากการนำ Capacitor ขนาดเล็กหลายๆ ตัวมาใช้ในการเก็บข้อมูล เมื่อมีการจ่ายไฟเข้าไปใน Capacitor ข้อมูลที่ตำแหน่งนั้นก็จะมีค่าเป็น 1 แต่ถ้าไม่มีการจ่ายไฟ Capacitor ก็จะคายประจุและข้อมูลในตำแหน่งนั้นก็จะมีค่าเป็น 0 ดังรูปที่ 4

How DRAM works
รูปที่ 4 หลักการทำงานของ RAM (ที่มา Lorentz Center [10])

ตามหลักการแล้ว RAM จะทำงานได้ก็ต่อเมื่อมีไฟเลี้ยง ถ้าไม่มีไฟเลี้ยงข้อมูลที่อยู่ข้างในจะหายหมด แต่ในความเป็นจริง หลังจากที่ปิดเครื่องคอมพิวเตอร์หรือปิดสวิตช์ไฟ ข้อมูลใน RAM จะไม่ได้หายไปในทันที แต่จะค่อยๆ หายไปภายในเวลาประมาณ 1-2 นาที เนื่องจากการคายประจุของ Capacitor รูปที่ 5 แสดงตัวอย่างข้อมูลที่ยังหลงเหลืออยู่ใน RAM หลังจากที่ปิดเครื่องเมื่อเวลาผ่านไป 5 วินาที 30 วินาที 60 วินาที และ 300 วินาที ตามลำดับ

Data loss from RAM
รูปที่ 5 ตัวอย่างข้อมูลที่ยังหลงเหลืออยู่ใน RAM หลังจากที่ปิดเครื่อง (ที่มา Princeton University [11])

จากการวิจัยพบว่า เมื่อลดอุณหภูมิของ RAM ลง จะทำให้การคายประจุช้าลง แสดงว่ายิ่งทำให้ RAM มีอุณหภูมิต่ำได้มากเท่าไหร่ ยิ่งรักษาข้อมูลไว้ได้นานมากเท่านั้น ถ้าทำให้ RAM อยู่ในสภาวะที่อุณหภูมิต่ำมากๆ ข้อมูลอาจอยู่ได้นานหลายสิบนาที หรืออาจอยู่ได้นานเป็นชั่วโมง การทำให้ RAM มีอุณหภูมิลดลงอย่างรวดเร็วเพื่อรักษาข้อมูลที่อยู่ข้างใน นักวิจัยเรียกเทคนิคนี้ว่า Cold boot attack

เทคนิค Cold boot attack ถูกเผยแพร่เป็นงานวิจัยตั้งแต่ปี 2008

การทำ Cold boot attack คือการทำให้เครื่องปิดแล้วเปิดขึ้นมาใหม่ในทันที โดยไม่ให้เครื่องทำกระบวนการ Shut Down ตามปกติ เพื่อป้องกันไม่ให้มีการเปลี่ยนแปลงข้อมูลใน RAM ซึ่งมีวิธีการหลักๆ อยู่ 2 วิธี คือกดปุ่ม Reset ที่ตัวเครื่องแล้วตั้งค่าให้บู๊ตจาก CD/USB ที่มีโปรแกรมสำหรับทำสำเนาข้อมูลออกจาก RAM โดยเฉพาะ หรือถอดฝาเครื่องออกมา จากนั้นใช้สารทำความเย็น (เช่น น้ำยาแอร์ หรือ ไนโตรเจนเหลว) ฉีดใส่ RAM แล้วถอด RAM ออกมาเสียบในอีกเครื่องที่เตรียมไว้เพื่อดึงข้อมูลออกมา ดังรูปที่ 6

Cold boot attack
รูปที่ 6 การฉีดสารทำความเย็นใส่ RAM เพื่อทำ Cold boot attack (ที่มา Princeton University [11])

ในการนำ Key ออกมาจาก RAM ผู้โจมตีจะทำสำเนา (Clone) ข้อมูลทั้งหมดที่อยู่ใน RAM ออกมาโดยใช้โปรแกรมประเภท Memory imaging จากนั้นจึงจะใช้โปรแกรมสำหรับกู้ข้อมูลที่อยู่ในหน่วยความจำ เช่น AESKeyFinder หรือ RSAKeyFinder เพื่อดึงเฉพาะ Encryption key ออกมา [12] การทำ Cold boot attack ต้องทำแข่งกับเวลา เพราะข้อมูลใน RAM จะค่อยๆ หายไปเรื่อยๆ อย่างไรก็ตาม ถึงแม้ข้อมูลบาง bit จะหายไป แต่ยังมีโอกาสที่จะกู้ข้อมูลตรงส่วนนั้นกลับคืนมาได้ [13]

การทำ Cold boot attack อาจถูกนำมาใช้ในการทำ Digital Forensic ในการเก็บข้อมูลที่อยู่ในหน่วยความจำ (Memory acquisition) เพราะการเก็บข้อมูลที่อยู่ในหน่วยความจำโดยวิธีปกตินั้นอาจมีความเสี่ยงต่อการเปลี่ยนแปลงข้อมูลที่อยู่ภายใน [14] [15]

นักวิจัยจากเยอรมันค้นพบว่า ถ้านำโทรศัพท์มือถือที่ใช้งานระบบปฏิบัติการ Android ไปแช่เย็นที่อุณหภูมิ -15 C เป็นเวลาประมาณ 1 ชั่วโมง จะยังสามารถอ่าน Encryption key ที่อยู่ใน RAM ของโทรศัพท์มือถือออกมาได้ [16] นอกจากนี้ยังได้พัฒนาซอฟต์แวร์ที่ชื่อว่า FROST ซึ่งใช้สำหรับดึงข้อมูลออกมาจาก RAM ของโทรศัพท์มือถือ โดยซอฟต์แวร์ดังกล่าวสามารถติดตั้งได้ผ่านโหมด fastboot ของโทรศัพท์มือถือที่ใช้ระบบปฏิบัติการ Android [17]

Mitigations

ในการที่จะโจมตีด้วยวิธี Cold boot attack ให้สำเร็จได้นั้น มีองค์ประกอบหลักๆ ที่สำคัญคือ ผู้โจมตีต้องสามารถเข้าถึงตัวเครื่องคอมพิวเตอร์นั้นได้ (Physical access) รวมถึงเครื่องนั้นต้องเปิดใช้งานอยู่และมีการใส่ Encryption key ไว้เรียบร้อยแล้ว

วิธีการลดความเสี่ยงที่ดีที่สุดจึงน่าจะเป็นการป้องกันไม่ให้ผู้ไม่หวังดีสามารถเข้าถึงตัวเครื่องคอมพิวเตอร์ได้ และระมัดระวังไม่ให้เครื่องหายหรือถูกขโมยในขณะที่เปิดใช้งานอยู่ หรืออาจจะป้องกันไม่ให้มี Encryption key อยู่ใน RAM ด้วยการสั่ง Shut Down เครื่องเมื่อไม่ได้ใช้งาน เพราะเมื่อสั่ง Shut Down ซอฟต์แวร์ Disk encryption จะลบข้อมูล Encryption key ออกจาก RAM การที่ปล่อยให้เครื่องอยู่ใน Sleep mode นั้นถึงแม้ว่าหน้าจอและฮาร์ดดิสก์จะหยุดทำงาน แต่ข้อมูลใน RAM ยังคงอยู่ [18]

ในระบบปฏิบัติการ Linux มีผู้พัฒนาซอฟต์แวร์ที่ชื่อ TRESOR [19] ซึ่งเป็น Kernel patch ที่เปลี่ยนจากการเก็บ Encryption key ไว้ใน RAM มาเก็บไว้ที่ Register ของ CPU แทน ซึ่งข้อมูลที่เก็บในส่วนนี้จะถูกรีเซ็ตเมื่อปิดเครื่องคอมพิวเตอร์ ทำให้ปลอดภัยจากการโจมตีด้วยวิธี Cold boot attack ได้

อ้างอิง

  1. http://www.zdnet.com/integral-crypto-ssd-sata-ii-2-5-inch-7000000566/#photo
  2. http://technet.microsoft.com/en-us/library/c61f2a12-8ae6-4957-b031-97b4d762cf31
  3. http://support.apple.com/kb/ht4790
  4. https://www.eff.org/deeplinks/2012/11/privacy-ubuntu-1210-full-disk-encryption
  5. http://code.google.com/p/cryptsetup/wiki/DMCrypt
  6. http://www.truecrypt.org/
  7. http://source.android.com/tech/encryption/android_crypto_implementation.html
  8. http://support.apple.com/kb/ht4175
  9. http://www.truecrypt.org/docs/?s=unencrypted-data-in-ram
  10. http://www.lorentzcenter.nl/lc/web/2010/383/presentations/Heninger.pdf
  11. https://citp.princeton.edu/research/memory/media/
  12. https://citp.princeton.edu/research/memory/code/
  13. http://icerm.brown.edu/materials/Slides/VI_MSS_12/An_overview_of_Cold-Boot_Attack,_related_to_RSA_and_Factorization_%5D_Sourav_Sen_Gupta,_Indian_Statistical_Institute,_Kolkata.pdf
  14. http://www.dtic.mil/cgi-bin/GetTRDoc?AD=ADA545078
  15. http://www.linuxjournal.com/magazine/cold-boot-attack-tools-linux
  16. http://reviews.cnet.com/8301-19736_7-57573226-251/android-phones-susceptible-to-freezing-cold-boot-attacks/
  17. https://www1.informatik.uni-erlangen.de/frost
  18. https://citp.princeton.edu/research/memory/faq/
  19. http://linuxaria.com/howto/protect-linux-from-cold-boot-attacks-with-tresor?lang=en
Clear