Hardware Encryption อาจไม่ได้ปลอดภัยเสมอไป – สรุปช่องโหว่ด้านความปลอดภัยล่าสุดบน SSD

สรุปย่อ
นักวิจัยจาก Radboud University ประเทศเนเธอร์แลนด์ค้นพบช่องโหว่ในฟีเจอร์ Self-Encrypting Drives ที่มีใน Solid State Disk (SSD) หลายยี่ห้อ โดยฟีเจอร์ Self-Encrypting เป็นฟีเจอร์สำคัญในกระบวนการเข้ารหัสอุปกรณ์ฮาร์ดดิสก์ซึ่งจะดำเนินการโดยตัวอุปกรณ์เอง ช่องโหว่ดังกล่าวทำให้ผู้โจมตีสามารถข้ามผ่านกระบวนการเข้ารหัสและเข้าถึงข้อมูลที่ถูกเข้ารหัสในอุปกรณ์ดังกล่าวได้โดยไม่ต้องทราบข้อมูลที่ใช้ในการพิสูจน์ตัวตน เช่น รหัสผ่านซึ่งถูกใช้เป็นกุญแจในการเข้ารหัส ที่ผู้ใช้งานตั้งเพื่อเข้ารหัสข้อมูลดังกล่าว

นอกจากนี้ ช่องโหว่ยังกระทบกับโปรแกรมเข้ารหัส BitLocker ของ Microsoft Window ที่เป็นการเข้ารหัสข้อมูลในอุปกรณ์จัดเก็บข้อมูลโดยซอฟต์แวร์ด้วยเนื่องจาก BitLocker จะเลือกใช้การเข้ารหัสในระดับ hardware หาก SSD นั้นรองรับ

นักวิจัยผู้ค้นพบช่องโหว่ให้คำแนะนำว่าผู้ใช้ SSD ที่ต้องการเข้ารหัสไม่ควรพึ่งพาความสามารถ Self-Encrypting Drives ที่มีใน SSD เพียงอย่างเดียว โดยควรเลือกใช้ซอฟต์แวร์เข้ารหัสเพื่อเพิ่มความปลอดภัยอีกชั้นร่วมด้วย

รายละเอียด
กระบวนการเข้ารหัสแบบ full-disk encryption
ในกรณีที่ผู้ใช้งานต้องการป้องกันการเข้าถึงข้อมูลสำคัญใน harddisk หรือ Solid State Disk (SSD) ในกรณีที่สูญหายหรือถูกขโมย ผู้ใช้สามารถใช้กระบวนการ Full disk encryption ซึ่งเป็นการเข้ารหัสข้อมูลใน harddisk ทั้งลูกได้ โดยสามารถทำได้ทั้งจาก hardware และ software

โดยการทำ full-disk encryption จาก hardware สามารถทำได้หาก hardware ดังกล่าวมีความสามารถในการทำ Self-encrypting drive มาจากผู้ผลิต ในขณะเดียวกันการทำ full-disk encryption จาก software ก็สามารถทำได้จากโปรแกรมต่างๆ เช่น BitLocker, VeraCrypt, SafeGuard และ PrivateDisk เป็นต้น

อย่างไรก็ตามการเข้ารหัสโดยซอฟต์แวร์นั้นมักจะถูกมองว่ามีข้อเสียมากกว่าการใช้ฟีเจอร์การเข้ารหัสจากอุปรกร์ เพราะกุญแจเข้ารหัสมักจะปรากฏอยู่ใน RAM และทำให้ประสิทธิภาพของระบบลดลงระหว่างการเข้ารหัส
ช่องโหว่ใน Self-Encrypting Drives ที่มีใน Solid State Disk (SSD)
Carlo Meijer และ Bernard van Gastel ได้ทำการวิจัยบน SSD จากผู้ผลิตต่างๆ โดยวิเคราะห์ตามประเด็นความปลอดภัยที่อาจพบได้บนกระบวนการเข้ารหัสผ่านโดยใช้ฟีเจอร์ของอุปกรณ์ดังนี้

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

โดยจากสมมติฐานของการวิเคราะห์นั้น Carlo และ Bernard ค้นพบข้อเท็จจริงจากสมมติฐานซึ่งนำไปสู่ความเสี่ยงและผลกระทบต่อกระบวนการเข้ารหัสโดยฮาร์ดแวร์ดังต่อไปนี้

ในอุปกรณ์บางยี่ห้อ กระบวนการสร้างกุญแจเข้ารหัสนั้นไม่ได้มีการนำหรัสผ่านที่ผู้ใช้งานระบุมาใช้ในการสร้างกุญแจเข้ารหัสด้วย โดยอาศัยเพียงแค่ค่าเฉพาะซึ่งถูกฝังมาในตัวอุปกรณ์เพียงปัจจัยเดียวเท่านั้นในการเข้ารหัส ซึ่งเป็นกระบวนการสร้างกุญแจสำหรับเข้ารหัสที่ไม่ปลอดภัย
มีการใช้กุญแจเข้ารหัสเดียวกันทั้ง disk
ในการเข้ารหัส disk นั้นอาจจะต้องมีบางส่วนที่ไม่เข้ารหัส เช่น ในการเข้ารหัสด้วยโปรแกรม BitLocker จะเหลือส่วน partition table ไว้เพื่อให้ใช้งานได้ ซึ่งเมื่อใช้กุญแจเข้ารหัสเดียวกันทั้ง disk หากมีผู้เข้าถึงส่วนที่ไม่ถูกเข้ารหัสก็จะสามารถค้นหากุญแจเข้ารหัสได้
SSD จะมีการใช้เทคนิค Wear Leveling ซึ่งเป็นวิธีการกระจายการเขียนข้อมูลออกไปให้ทั่วๆ เพื่อไม่ให้มีการเขียนข้อมูลซ้ำที่ส่วนหนึ่งส่วนใดบ่อยครั้งเกินไป ข้อดีของเทคนิคนี้คือทำให้อุปกรณ์มีอายุการใช้งานที่นานขึ้น แต่ข้อเสียคือเมื่อผู้ใช้เข้ารหัส ซึ่งต้องมีการเขียนทับข้อมูลเดิมด้วยข้อมูลที่เข้ารหัสแล้ว ด้วยเทคนิค Wear Leveling นี้อาจทำให้ข้อมูลไม่ถูกเขียนทับจริง ข้อมูลเก่าจะถือว่าไม่ถูกใช้งานแต่ยังสามารถเข้าถึงได้ ทำให้สามารถค้นหาข้อมูลที่ยังไม่ถูกเข้ารหัสได้ (กระจายแต่ไม่ลงที่เดิมเพราะสุ่มกระจาย)
DevSleep (DEVSLP) เป็นฟังก์ชั่นที่เกี่ยวข้องกับการประหยัดพลังงานที่เพิ่มเข้ามาใหม่สำหรับ SATA drive โดยเป็นระบบจัดการพลังงานที่ช่วยลดการใช้พลังงานและยืดเวลาการใช้งานแบตเตอรี่ ช่วยรักษาความสมบูรณ์ของข้อมูลและทำให้ drive สามารถกู้ระบบในกรณีที่มีการปิดการทำงานแบบไม่ปลอดภัย แต่ในขณะเดียวกันอาจถูกผู้โจมตีใช้เพื่อกู้ข้อมูลกุญแจเข้ารหัสได้

Carlo Meijer และ Bernard van Gastel ได้ผลลัพธ์งานวิจัยเป็นการพบช่องโหว่ที่ทำให้สามารถกู้คืนข้อมูลจาก drive ได้โดยไม่ต้องรู้ password โดยช่องโหว่ดังกล่าวคือช่องโหว่ CVE-2018-12037 และ CVE-2018-12038
CVE-2018-12037
ช่องโหว่ CVE-2018-12037 เป็นช่องโหว่จากข้อผิดพลาดในการทำ encryption วิธีที่ถูกต้องคือต้องมีการเชื่อม password จากผู้ใช้งานเข้ากับกุญแจเข้ารหัสภายใน hardware แต่เกิดข้อผิดพลาดโดยไม่มีการเชื่อมกันดังกล่าว ทำให้การเข้ารหัส drive ขึ้นอยู่กับกุญแจเข้ารหัสภายใน hardware เพียงอย่างเดียว หากมีผู้โจมตีเข้าถึง hardware ก็จะสามารถค้นหากุญแจเข้ารหัสภายใน hardware และใช้ถอดรหัสได้

อุปกรณ์ที่ได้รับผลกระทบจากช่องโหว่นี้คือ

Crucial (Micron) MX100, MX200 และ MX300
Samsung T3 และ T5 portable
Samsung 840 EVO และ 850 EVO

CVE-2018-12038
ช่องโหว่ CVE-2018-12038 เกิดเมื่อทุกครั้งที่ผู้ใช้ใส่ password ใหม่จะมีการเขียนทับ key information ด้วย key information ที่ถูกเข้ารหัสแล้ว แต่เนื่องจากการเขียนทับอาจเขียนในคนละ sector ทำให้มีโอกาสที่ key information ที่ไม่ถูกเข้ารหัสจะยังปรากฏอยู่ได้

อุปกรณ์ที่ได้รับผลกระทบจากช่องโหว่นี้คือ Samsung 840 EVO
ผลกระทบของช่องโหว่ต่อโปรแกรมเข้ารหัสอย่าง BitLocker
โปรแกรม BitLocker จาก Microsoft Window ที่เป็นการเข้ารหัสจาก Software ด้วย เพราะ BitLocker จะเลือกใช้การเข้ารหัสในระดับ hardware หาก SSD นั้นรองรับเป็นค่าตั้งต้น
คำแนะนำ
นักวิจัยได้ให้คำแนะนำเพื่อลดผลกระทบจากช่องโหว่เหล่านี้โดยว่าผู้ใช้ SSD ที่ต้องการเข้ารหัสไม่ควรพึ่งพาความสามารถ Self-Encrypting Drives ที่มีใน SSD เพียงอย่างเดียว ควรเลือกใช้โปรแกรมเข้ารหัสเพื่อเข้ารหัสจาก software ร่วมด้วย เช่น ใช้โปรแกรม VeraCrypt โดยสามารถอ่านคำแนะนำอย่างละเอียดได้จากที่นี่และที่นี่

Microsoft Window ได้ออกคำแนะนำในการในการปิดค่าตั้งต้นของ BitLocker ใช้การเข้ารหัสจาก Software เท่านั้น โดยสามารถศึกษาได้จากที่นี่
แหล่งอ้างอิง

https://www.