อ่าน 10 นาที
ทฤษฎีการเข้ารหัสดิสก์
การเข้ารหัสดิสก์เป็นกรณีพิเศษของ การปกป้อง ข้อมูลที่จัดเก็บไว้เมื่อสื่อจัดเก็บข้อมูลเป็นอุปกรณ์ที่สามารถระบุตำแหน่งเซกเตอร์ได้ (เช่น ฮาร์ดดิสก์)...
ทฤษฎีการเข้ารหัสดิสก์
การเข้ารหัสดิสก์เป็นกรณีพิเศษของ การปกป้อง ข้อมูลที่จัดเก็บไว้เมื่อสื่อจัดเก็บข้อมูลเป็นอุปกรณ์ที่สามารถระบุตำแหน่งเซกเตอร์ได้ (เช่น ฮาร์ดดิสก์) บทความนี้จะนำเสนอแง่มุมทางด้านการเข้ารหัสของปัญหานี้ สำหรับภาพรวม โปรดดูที่การเข้ารหัสดิสก์สำหรับการอภิปรายเกี่ยวกับซอฟต์แวร์และอุปกรณ์ฮาร์ดแวร์ต่างๆ ที่ใช้สำหรับปัญหานี้ โปรดดูที่ซอฟต์แวร์การเข้ารหัสดิสก์และฮาร์ดแวร์การเข้ารหัสดิสก์
การกำหนดปัญหา
วิธีการเข้ารหัสข้อมูลลงดิสก์มีจุดมุ่งหมายเพื่อให้คุณสมบัติที่แตกต่างกันสามประการดังนี้:
- ข้อมูลในดิสก์นี้ควรเก็บรักษาเป็นความลับ
- การดึงข้อมูลและการจัดเก็บข้อมูลควรดำเนินการได้อย่างรวดเร็ว ไม่ว่าข้อมูลจะถูกจัดเก็บไว้ที่ใดบนดิสก์ก็ตาม
- วิธีการเข้ารหัสไม่ควรสิ้นเปลืองพื้นที่ดิสก์ (กล่าวคือ ปริมาณพื้นที่จัดเก็บที่ใช้สำหรับข้อมูลที่เข้ารหัสไม่ควรมากกว่าขนาดของข้อมูลต้นฉบับ อย่างมีนัยสำคัญ )
คุณสมบัติข้อแรกจำเป็นต้องระบุถึงศัตรูที่ข้อมูลกำลังถูกปกปิดเป็นความลับ ศัตรูที่แข็งแกร่งที่สุดที่ได้รับการศึกษาในด้านการเข้ารหัสข้อมูลบนดิสก์มีคุณสมบัติดังต่อไปนี้:
- พวกเขาสามารถอ่านเนื้อหาดิบของดิสก์ได้ตลอดเวลา
- พวกเขาสามารถขอให้ดิสก์เข้ารหัสและจัดเก็บไฟล์ใดๆ ก็ได้ตามที่ต้องการ
- และพวกเขาสามารถแก้ไขส่วนที่ไม่ได้ใช้งานบนดิสก์ จากนั้นจึงร้องขอการถอดรหัสได้
วิธีการดังกล่าวให้การรักษาความลับที่ดี หากข้อมูลเดียวที่ผู้ไม่หวังดีสามารถตรวจสอบได้เมื่อเวลาผ่านไป คือ ข้อมูลในภาคส่วนนั้นมีการเปลี่ยนแปลงหรือไม่เปลี่ยนแปลงนับตั้งแต่ครั้งล่าสุดที่พวกเขาตรวจสอบ
คุณสมบัติข้อที่สองคือการแบ่งดิสก์ออกเป็นหลายเซกเตอร์โดยปกติจะมีขนาด 512 ไบต์ (ข้อมูลแต่ละส่วนมีความยาว 4096บิต ซึ่งจะถูกเข้ารหัสและถอดรหัสอย่างอิสระจากกัน ดังนั้น หากต้องการรักษาความลับของข้อมูล วิธีการเข้ารหัสจะต้องสามารถปรับแต่งได้ กล่าวคือ ไม่ควรประมวลผลข้อมูลสองส่วนในลักษณะเดียวกัน มิฉะนั้น ผู้โจมตีสามารถถอดรหัสข้อมูลส่วนใดก็ได้บนดิสก์โดยการคัดลอกไปยังส่วนที่ไม่ได้ใช้งานบนดิสก์และขอให้ถอดรหัส ในขณะที่จุดประสงค์ของการเข้ารหัสแบบบล็อกทั่วไปคือการจำลองการเรียงสับเปลี่ยนแบบสุ่มสำหรับกุญแจลับใดๆจุดประสงค์ของการเข้ารหัสที่สามารถปรับแต่งได้คือการจำลองการเรียงสับเปลี่ยนแบบสุ่มสำหรับกุญแจลับใดๆ และการปรับแต่งใดๆ ที่ ทราบ
คุณสมบัติข้อที่สามโดยทั่วไปไม่มีข้อโต้แย้ง อย่างไรก็ตาม มันห้ามการใช้การเข้ารหัสแบบสตรีม โดยอ้อม เนื่องจากเพื่อความปลอดภัย การเข้ารหัสแบบสตรีมต้องการสถานะเริ่มต้นที่ไม่ซ้ำกัน (ซึ่งจะเป็นเช่นนั้นหากมีการอัปเดตเซกเตอร์ด้วยข้อมูลที่แตกต่างกัน) ดังนั้นจึงจำเป็นต้องมีวิธีการเข้ารหัสเพื่อจัดเก็บสถานะเริ่มต้นแยกต่างหากสำหรับทุกเซกเตอร์บนดิสก์ ซึ่งดูเหมือนจะเป็นการสิ้นเปลืองพื้นที่ ทางเลือกอื่นคือการเข้ารหัสแบบบล็อกซึ่งมีข้อจำกัดที่ขนาดบล็อกที่แน่นอน (โดยปกติคือ 128 หรือ 256 บิต) ด้วยเหตุนี้ การเข้ารหัสดิสก์จึงศึกษาโหมดการเชื่อมโยง เป็นหลัก ซึ่งขยายความยาวบล็อกการเข้ารหัสให้ครอบคลุมทั้งเซกเตอร์ของดิสก์ข้อพิจารณาที่กล่าวมาแล้วทำให้โหมดการเชื่อมโยงที่รู้จักกันดีหลายโหมดไม่เหมาะสม เช่นโหมด ECB ซึ่งไม่สามารถปรับแต่งได้ และโหมด ที่ เปลี่ยนการเข้ารหัสแบบบล็อกเป็นการเข้ารหัสแบบสตรีม เช่นโหมด CTR
คุณสมบัติทั้งสามนี้ไม่ได้ให้การรับประกันความสมบูรณ์ของดิสก์แต่อย่างใด กล่าวคือ ไม่ได้บอกคุณว่าผู้ไม่หวังดีได้แก้ไขข้อความที่เข้ารหัสของคุณหรือไม่ ส่วนหนึ่งเป็นเพราะการรับประกันความสมบูรณ์ของดิสก์อย่างสมบูรณ์นั้นเป็นไปไม่ได้ ไม่ว่าอย่างไรก็ตาม ผู้ไม่หวังดีก็สามารถกู้คืนดิสก์ทั้งหมดกลับสู่สถานะก่อนหน้าได้เสมอ ซึ่งเป็นการหลีกเลี่ยงการตรวจสอบใดๆ หากต้องการความสมบูรณ์ของดิสก์ในระดับที่ไม่ใช่ระดับสมบูรณ์ ก็สามารถทำได้ภายในดิสก์ที่เข้ารหัสไว้ในแต่ละไฟล์โดยใช้รหัส ตรวจสอบความถูกต้องของข้อความ
เมื่อการใช้พื้นที่เพิ่มเติมเป็นที่ยอมรับได้
แม้ว่าในอดีตจะเป็นที่ยอมรับกันโดยทั่วไปว่าการเข้ารหัสดิสก์ควรคงความยาวไว้ แต่คุณสมบัติเพิ่มเติมบางอย่างก็ทำให้การใช้พื้นที่เพิ่มขึ้นมีความเหมาะสม ตัวอย่างหนึ่งคือการเข้ารหัสแบบตรวจสอบความถูกต้องซึ่งใช้พื้นที่เพิ่มขึ้นเพื่อแลกกับการรับประกันความสมบูรณ์ของเซกเตอร์ การประยุกต์ใช้การรับประกันนี้อย่างหนึ่งคือการป้องกันผู้โจมตีจากการทำให้เกิดข้อบกพร่องของเคอร์เนลโดยการทำลายระบบไฟล์[ 1 ]
บล็อกแคบและกว้าง
วิธีการเข้ารหัสดิสก์ยังแบ่งออกเป็นวิธี "บล็อกแคบ" และ "บล็อกกว้าง" สำหรับข้อความธรรมดาที่มีขนาดเท่ากับเซกเตอร์ วิธีบล็อกแคบจะเข้ารหัสเป็นหลายบล็อก ในขณะที่วิธีบล็อกกว้างจะเข้ารหัสเพียงบล็อกเดียว วิธีบล็อกแคบ เช่น LRW, XES และ XTS อนุญาตให้ผู้โจมตีใช้ประโยชน์จากความละเอียดของบล็อกเพื่อทำการวิเคราะห์การรับส่งข้อมูลและการเล่นซ้ำ[ 2 ]การเข้ารหัสแบบบล็อกกว้างในอุดมคติจะทำให้ข้อความที่เข้ารหัสทั้งหมดไม่สามารถจดจำได้หากมีการเปลี่ยนแปลงใดๆ ในข้อความธรรมดา[ 3 ]
โหมดการเข้ารหัสแบบบล็อก
เช่นเดียวกับวิธีการเข้ารหัสส่วนใหญ่ การเข้ารหัสข้อมูลลงดิสก์โดยใช้การเข้ารหัสแบบบล็อกจะใช้โหมดการทำงานซึ่งช่วยให้สามารถเข้ารหัสข้อมูลได้มากกว่าขนาดบล็อกของการเข้ารหัส (โดยทั่วไปคือ 128 บิต) ดังนั้น โหมดจึงเป็นกฎเกณฑ์เกี่ยวกับวิธีการนำการดำเนินการแบบบล็อกเดียวของการเข้ารหัสไปใช้ซ้ำๆ
การเข้ารหัสแบบลูกโซ่ (CBC)
การเข้ารหัสแบบเชื่อมโยงบล็อก (Cipher-block chainingหรือ CBC) เป็นโหมดการเชื่อมโยงที่ใช้กันทั่วไป โดยจะนำข้อความที่เข้ารหัสแล้วของบล็อกก่อนหน้ามาทำการ XORกับข้อความต้นฉบับของบล็อกปัจจุบันก่อนที่จะทำการเข้ารหัส:
เนื่องจากไม่มี "ข้อความเข้ารหัสของบล็อกก่อนหน้า" สำหรับบล็อกแรกจึงต้องใช้เวกเตอร์เริ่มต้น (IV) แทน ซึ่งทำให้ CBC สามารถปรับแต่งได้ในบางแง่มุม
CBC มีปัญหาอยู่บ้าง ตัวอย่างเช่นหากค่า IV สามารถคาดเดาได้ ผู้โจมตีอาจทิ้ง "ลายน้ำ" ไว้บนดิสก์ กล่าวคือ เก็บไฟล์หรือชุดไฟล์ที่สร้างขึ้นเป็นพิเศษซึ่งสามารถระบุได้แม้หลังจากการเข้ารหัส วิธีการสร้างลายน้ำที่แน่นอนนั้นขึ้นอยู่กับฟังก์ชันที่ให้ค่า IV แต่โดยทั่วไปแล้วจะสร้างเซกเตอร์ที่เข้ารหัสสองเซกเตอร์ที่มีบล็อกแรกที่เหมือนกันและจากนั้นสองเซกเตอร์นี้จะเชื่อมโยงกันด้วยดังนั้นการเข้ารหัสของ จึงเหมือนกับการเข้ารหัสของทำให้เกิดลายน้ำบนดิสก์ รูปแบบ "เหมือนกัน-ต่าง-เหมือนกัน-ต่าง" บนดิสก์สามารถเปลี่ยนแปลงได้เพื่อให้ลายน้ำมีเอกลักษณ์เฉพาะสำหรับไฟล์ใดไฟล์หนึ่ง
เพื่อป้องกันการโจมตีด้วยลายน้ำ จะใช้การเข้ารหัสหรือฟังก์ชันแฮชในการสร้างค่า IV จากกุญแจและหมายเลขเซกเตอร์ปัจจุบัน เพื่อไม่ให้ผู้โจมตีสามารถคาดเดาค่า IV ได้ โดยเฉพาะอย่างยิ่ง วิธีการ ESSIVใช้การเข้ารหัสแบบบล็อกในโหมด CTR ในการสร้างค่า IV
เวกเตอร์เริ่มต้นเซกเตอร์เกลือเข้ารหัส (ESSIV)
ESSIV เป็นวิธีการสร้างเวกเตอร์เริ่มต้นสำหรับการเข้ารหัสบล็อกเพื่อใช้ในการเข้ารหัสดิสก์ วิธีการทั่วไปในการสร้าง IV คือลำดับตัวเลขที่คาดเดาได้โดยอิงจากตัวอย่างเช่น การประทับเวลาหรือหมายเลขเซกเตอร์ และอนุญาตให้มีการโจมตีบางอย่าง เช่นการโจมตีแบบลายน้ำ ESSIV ป้องกันการโจมตีดังกล่าวโดยการสร้าง IV จากการรวมกันของหมายเลขเซกเตอร์ SN กับแฮชของคีย์ การรวมกับคีย์ในรูปแบบของแฮชทำให้ IV คาดเดาไม่ได้[ 4 ] [ 5 ]
ESSIV ได้รับการออกแบบโดย Clemens Fruhwirth และถูกรวมเข้ากับเคอร์เนล Linuxตั้งแต่เวอร์ชัน 2.6.10 แม้ว่าจะมีการใช้รูปแบบที่คล้ายกันเพื่อสร้าง IV สำหรับการเข้ารหัสสวอปของ OpenBSD ตั้งแต่ปี 2000 ก็ตาม[ 6 ]
ESSIV ได้รับการสนับสนุนเป็นตัวเลือกโดยระบบการเข้ารหัสดิสก์ dm-crypt [ 7 ]และFreeOTFE
การโจมตีความอ่อนตัว
แม้ว่า CBC (ไม่ว่าจะใช้ ESSIV หรือไม่) จะรับประกันความลับ แต่ก็ไม่รับประกันความสมบูรณ์ของข้อมูลที่เข้ารหัส หากฝ่ายตรงข้ามทราบข้อความต้นฉบับ ก็สามารถเปลี่ยนบล็อกข้อความต้นฉบับทุกๆ บล็อกที่สองเป็นค่าที่ผู้โจมตีเลือกได้ ในขณะที่บล็อกระหว่างนั้นจะถูกเปลี่ยนเป็นค่าสุ่ม ซึ่งสามารถนำไปใช้ในการโจมตีการเข้ารหัสดิสก์ในโหมด CBC หรือ CBC-ESSIV ได้[ 8 ]
ลิสคอฟ, ริเวสต์ และ วากเนอร์ (LRW)
การเข้ารหัสแบบบล็อกแคบที่ปรับแต่งได้ (LRW) [ 9 ]เป็นตัวอย่างของโหมดการทำงานที่แนะนำโดย Liskov, Rivest และ Wagner [ 10 ] (ดูทฤษฎีบท 2) โหมดนี้ใช้คีย์สองตัว: คือคีย์สำหรับการเข้ารหัสแบบบล็อก และคือคีย์เพิ่มเติมที่มีขนาดเท่ากับบล็อก ตัวอย่างเช่น สำหรับ AES ที่มีคีย์ 256 บิตคือตัวเลข 256 บิต และคือตัวเลข 128 บิต การเข้ารหัสบล็อกด้วยดัชนีตรรกะ (ปรับแต่ง) ใช้สูตรต่อไปนี้:
ในที่นี้ การคูณและการบวกจะดำเนินการในฟิลด์จำกัด ( สำหรับ AES) ด้วยการคำนวณล่วงหน้าบางส่วน จะต้องทำการคูณเพียงครั้งเดียวต่อเซกเตอร์เท่านั้น (โปรดทราบว่าการบวกในฟิลด์ไบนารีจำกัดเป็นการบวกแบบบิตอย่างง่าย หรือที่เรียกว่า XOR): โดยที่จะถูกคำนวณล่วงหน้าสำหรับค่าที่เป็นไปได้ทั้งหมดของโหมดการทำงานนี้ต้องการการเข้ารหัสเพียงครั้งเดียวต่อบล็อก และป้องกันการโจมตีทั้งหมดข้างต้น ยกเว้นการรั่วไหลเล็กน้อย: หากผู้ใช้เปลี่ยนบล็อกข้อความธรรมดาเพียงบล็อกเดียวในเซกเตอร์ ก็จะมีเพียงบล็อกข้อความที่เข้ารหัสเพียงบล็อกเดียวเท่านั้นที่จะเปลี่ยนแปลง (โปรดทราบว่านี่ไม่ใช่การรั่วไหลแบบเดียวกับโหมด ECB: ในโหมด LRW ข้อความธรรมดาที่เท่ากันในตำแหน่งที่ต่างกันจะถูกเข้ารหัสเป็นข้อความที่เข้ารหัสต่างกัน)
LRW มีข้อกังวลด้านความปลอดภัยบางประการและปัจจุบันโหมดการทำงานนี้ได้ถูกแทนที่ด้วย XTS แล้ว
LRW ถูกนำมาใช้โดยBestCryptและได้รับการสนับสนุนเป็นตัวเลือกสำหรับระบบเข้ารหัสดิสก์ dm-cryptและFreeOTFE
Xor–encrypt–xor (XEX)
โหมดการเข้ารหัสที่ปรับแต่งได้อีกแบบหนึ่งคือ XEX ( xor–encrypt–xor ) ซึ่งออกแบบโดย Rogaway [ 11 ]เพื่อให้สามารถประมวลผลบล็อกที่ต่อเนื่องกันได้อย่างมีประสิทธิภาพ (โดยสัมพันธ์กับการเข้ารหัสที่ใช้) ภายในหน่วยข้อมูลเดียว (เช่น เซกเตอร์ของดิสก์) การปรับแต่งนี้แสดงเป็นการรวมกันของที่อยู่เซกเตอร์และดัชนีของบล็อกภายในเซกเตอร์ (โหมด XEX ดั้งเดิมที่เสนอโดย Rogaway [ 11 ]อนุญาตให้มีดัชนีหลายตัว) ข้อความที่เข้ารหัส , จะได้รับโดยใช้:
ที่ไหน:
- คือข้อความธรรมดา
- คือหมายเลขของภาคส่วนนั้น
- คือองค์ประกอบดั้งเดิมที่กำหนดโดยพหุนาม กล่าวคือจำนวน2
- คือหมายเลขของบล็อกภายในเซกเตอร์ XEX ใช้; XTS ใช้
การทำงานพื้นฐานของโหมด LRW (การเข้ารหัส AES และ การคูณ ฟิลด์กาโลอิส ) เหมือนกับการทำงานที่ใช้ในโหมดกาโลอิส/เคาน์เตอร์ (GCM) ดังนั้นจึงอนุญาตให้มีการใช้งานฮาร์ดแวร์ LRW/XEX/GCM แบบสากลในขนาดกะทัดรัดได้
XEX ดั้งเดิมมีจุดอ่อน[ 12 ]
โหมดโค้ดบุ๊กที่ปรับแต่งตาม XEX พร้อมการขโมยข้อความเข้ารหัส (XTS)
การขโมยข้อความเข้ารหัสให้การสนับสนุนสำหรับเซกเตอร์ที่มีขนาดหารด้วยขนาดบล็อกไม่ลงตัว เช่น เซกเตอร์ 520 ไบต์และบล็อก 16 ไบต์ XTS-AES ได้รับการกำหนดมาตรฐานเมื่อวันที่ 19 ธันวาคม พ.ศ. 2550 [ 13 ]เป็นIEEE Std 1619 [ 14 ] มาตรฐาน XTS กำหนดให้ใช้คีย์ที่แตกต่างกันสำหรับการเข้ารหัส IV กับการเข้ารหัสบล็อก ซึ่งแตกต่างจาก XEX ที่ใช้คีย์เดียว[ 11 ] [ 15 ] : 1–4 ด้วยเหตุนี้ ผู้ใช้ที่ต้องการ การเข้ารหัส AES -256 และ AES-128 ต้องระบุคีย์ 512 บิตและ 256 บิตตามลำดับ คีย์ทั้งสอง (เช่น ทั้งสองส่วนของคีย์ XTS) ต้องแตกต่างกันเพื่อให้ XTS ปลอดภัย แบบ CCAเนื่องจาก XTS คำนวณลำดับเริ่มต้นที่; ซึ่งแตกต่างจาก XEX ที่เริ่มต้นที่[ 11 ] : 7 [ 15 ] : 6
เมื่อวันที่ 27 มกราคม 2553 NISTได้เผยแพร่เอกสารพิเศษ (SP) 800-38E [ 16 ]ในรูปแบบสุดท้าย SP 800-38E เป็นคำแนะนำสำหรับโหมดการทำงาน XTS-AES ตามมาตรฐาน IEEE Std 1619-2007 สำหรับโมดูลการเข้ารหัส เอกสารนี้อนุมัติโหมด XTS-AES ของอัลกอริธึ ม AESโดยอ้างอิงถึง IEEE Std 1619-2007 โดยมีข้อกำหนดเพิ่มเติมหนึ่งข้อ ซึ่งจำกัดขนาดสูงสุดของแต่ละหน่วยข้อมูลที่เข้ารหัส (โดยทั่วไปคือเซกเตอร์หรือบล็อกดิสก์ ) ไว้ที่ 2 20บล็อก AES ตาม SP 800-38E ระบุว่า "ในกรณีที่ไม่มีการตรวจสอบสิทธิ์หรือการควบคุมการเข้าถึง XTS-AES จะให้การป้องกันมากกว่าโหมดการรักษาความลับที่ได้รับการอนุมัติอื่นๆ เพื่อป้องกันการจัดการข้อมูลที่เข้ารหัสโดยไม่ได้รับอนุญาต"
เพื่อเตรียมพร้อมสำหรับการอัปเดตมาตรฐาน SP 800-38E มาตรฐานIEEE Std 1619จึงได้รับการปรับปรุงในปี 2025 เพื่อจำกัดขอบเขตของคีย์ (ปริมาณข้อมูลสูงสุดที่จะเข้ารหัสโดยใช้คีย์เข้ารหัสข้อมูลแบบสมมาตรเพียงคีย์เดียว)
XTS ได้รับการสนับสนุนโดยBestCrypt , Botan , cgd ของNetBSD , [ 17 ] dm-crypt , FreeOTFE , TrueCrypt , VeraCrypt , [ 18 ] DiskCryptor , geliของFreeBSD , ซอฟต์แวร์เข้ารหัสดิสก์ softraid ของ OpenBSD, OpenSSL , FileVault 2 ของ Mac OS X Lion , BitLockerของWindows 10 [ 19 ]และwolfCrypt
จุดอ่อนของ XTS
โหมด XTS มีความเสี่ยงต่อการจัดการและการดัดแปลงข้อมูล และแอปพลิเคชันต้องใช้มาตรการในการตรวจจับการแก้ไขข้อมูลหากการจัดการและการดัดแปลงเป็นเรื่องที่น่ากังวล: "...เนื่องจากไม่มีแท็กการตรวจ สอบความถูกต้อง ดังนั้นข้อความเข้ารหัสใดๆ (ต้นฉบับหรือที่ผู้โจมตีแก้ไข) จะถูกถอดรหัสเป็นข้อความธรรมดา และไม่มีกลไกในตัวเพื่อตรวจจับการเปลี่ยนแปลง สิ่งที่ดีที่สุดที่สามารถทำได้คือการตรวจสอบให้แน่ใจว่าการเปลี่ยนแปลงข้อความเข้ารหัสใดๆ จะทำให้ข้อความธรรมดาเป็นแบบสุ่มโดยสมบูรณ์ และอาศัยแอปพลิเคชันที่ใช้การแปลงนี้ในการรวมความซ้ำซ้อนที่เพียงพอในข้อความธรรมดาเพื่อตรวจจับและทิ้งข้อความธรรมดาแบบสุ่มดังกล่าว" ซึ่งจะต้องมีการรักษา checksums สำหรับข้อมูลและเมตาเดตาทั้งหมดบนดิสก์ เช่นเดียวกับที่ทำในZFSหรือBtrfsอย่างไรก็ตาม ในระบบไฟล์ที่ใช้กันทั่วไป เช่นext4และNTFSมีเพียงเมตาเดตาเท่านั้นที่ได้รับการปกป้องจากการดัดแปลง ในขณะที่การตรวจจับการดัดแปลงข้อมูลนั้นไม่มีอยู่จริง[ 20 ]
โหมดนี้มีความเสี่ยงต่อการวิเคราะห์การจราจร การโจมตีแบบเล่นซ้ำ และการสุ่มบนเซกเตอร์และบล็อกขนาด 16 ไบต์ เมื่อมีการเขียนเซกเตอร์ใหม่ ผู้โจมตีสามารถรวบรวมข้อความเข้ารหัสแบบละเอียด (16 ไบต์) ซึ่งสามารถนำไปใช้ในการวิเคราะห์หรือการโจมตีแบบเล่นซ้ำ (ที่ความละเอียด 16 ไบต์) เป็นไปได้ที่จะกำหนดการเข้ารหัสบล็อกทั่วทั้งเซกเตอร์ แต่น่าเสียดายที่ประสิทธิภาพจะลดลง (ดูด้านล่าง) [ 2 ]
CBC–mask–CBC (CMC) และ ECB–mask–ECB (EME)
CMC และ EME ป้องกันการรั่วไหลเล็กน้อยที่กล่าวถึงข้างต้นสำหรับ LRW ได้ แต่ข้อเสียคือประสิทธิภาพจะลดลงสองเท่า กล่าวคือแต่ละบล็อกต้องถูกเข้ารหัสสองครั้ง ซึ่งหลายคนมองว่าเป็นต้นทุนที่สูงเกินไป เนื่องจากอย่างไรก็ตามการรั่วไหลในระดับเซกเตอร์ก็หลีกเลี่ยงไม่ได้อยู่ดี
CMC ซึ่งคิดค้นโดย Halevi และ Rogaway ย่อมาจาก CBC–mask–CBC: การเข้ารหัสทั้งเซกเตอร์ในโหมด CBC (ด้วย) ข้อความที่เข้ารหัสจะถูกปิดบังด้วยการ XOR กับและเข้ารหัสใหม่ในโหมด CBC โดยเริ่มจากบล็อกสุดท้าย เมื่อการเข้ารหัสแบบบล็อกพื้นฐานเป็นการเรียงสับเปลี่ยนแบบสุ่มเทียมที่ แข็งแกร่ง (PRP) แล้ว ในระดับเซกเตอร์ รูปแบบการเข้ารหัสจะเป็น PRP ที่ปรับแต่งได้ ปัญหาอย่างหนึ่งคือ ในการถอดรหัสจำเป็นต้องผ่านข้อมูลทั้งหมดสองครั้งตามลำดับ
เพื่อแก้ปัญหานี้ Halevi และ Rogaway ได้นำเสนอรูปแบบที่สามารถประมวลผลแบบขนานได้ เรียกว่า EME (ECB–mask–ECB) ซึ่งทำงานในลักษณะดังต่อไปนี้:
- ข้อความต้นฉบับจะถูก XOR กับ, เลื่อนไปทางซ้ายด้วยปริมาณที่แตกต่างกัน และเข้ารหัส: ;
- หน้ากากจะถูกคำนวณโดย: , โดยที่และ;
- ข้อความเข้ารหัสขั้นกลางจะถูกปิดบังไว้: สำหรับและ;
- คำนวณข้อความเข้ารหัสสุดท้าย: สำหรับ.
โปรดทราบว่า ต่างจาก LRW และ CMC ตรงที่ใช้เพียงปุ่มเดียวเท่านั้น
CMC และ EME ได้รับการพิจารณาสำหรับการกำหนดมาตรฐานโดยSISWG EME ได้รับการจดสิทธิบัตร ดังนั้นจึงไม่เป็นที่นิยมที่จะเป็นโหมดหลักที่ได้รับการสนับสนุน[ 21 ]
HCTR และ HCTR2
HCTR (2005) เป็นโหมดการทำงานสำหรับการเข้ารหัสแบบบล็อกที่รักษาความยาว บล็อกกว้าง และปรับแต่งได้[ 22 ]อย่างไรก็ตาม มีข้อบกพร่องในข้อกำหนดและข้อบกพร่องในการพิสูจน์ความปลอดภัย ทำให้ระดับความปลอดภัย ที่อ้างไว้ ไม่ถูกต้อง HCTR2 (2021) เป็นเวอร์ชันที่แก้ไขปัญหาเหล่านี้และปรับปรุงด้านความปลอดภัย ประสิทธิภาพ และความยืดหยุ่น[ 23 ] HCTR2 มีอยู่ในเคอร์เนล Linux ตั้งแต่เวอร์ชัน 6.0
HCTR และ HCTR2 ใช้โหมดการทำงานของการเข้ารหัสบล็อกแบบกำหนดเองที่เรียกว่า XCTR; โดยทั่วไปจะใช้ AES-128-XCTR สำหรับ HCTR2 HCTR2 ใช้ฟังก์ชันแฮชพหุนามที่เรียกว่า POLYVAL HCTR2 มีประสิทธิภาพบนโปรเซสเซอร์สมัยใหม่ที่ติดตั้งชุดคำสั่งAESและการคูณแบบไม่มีตัวทด[ 23 ]
หนังสือรหัสฉบับขยาย (XCB)
โหมด Extended Code Book สำหรับ AES (XCB-AES) ถูกกำหนดไว้ในเวอร์ชันแรกๆ ของมาตรฐาน IEEE Std 1619.2 อย่างไรก็ตาม มีรายงานว่า XCB มีข้อบกพร่องและถูกลบออกจากเวอร์ชันปี 2025 คือ IEEE Std 1619.2-2025
โหมดการเข้ารหัสแบบสตรีม
โครงสร้าง HBSH (แฮช, บล็อกไซเฟอร์, สตรีมไซเฟอร์, แฮช) ซึ่งเผยแพร่โดยพนักงานของ Google ในปี 2018 ช่วยให้สามารถใช้สตรีมไซเฟอร์ที่รวดเร็วในการเข้ารหัสดิสก์ได้ แผนการ Adiantum ที่ใช้ใน อุปกรณ์Androidระดับล่าง โดยเฉพาะเลือกใช้ NH , มาตรฐานการเข้ารหัสขั้นสูง 256 บิต(AES-256), ChaCha12และPoly1305โครงสร้างนี้สามารถปรับแต่งได้และเป็นแบบบล็อกกว้าง ต้องใช้การประมวลผลข้อมูลสามรอบ แต่ก็ยังเร็วกว่า AES-128-XTS บนARM Cortex-A7 (ซึ่งไม่มีชุดคำสั่ง AES ) [ 24 ]มีให้ใช้งานในเคอร์เนล Linux ตั้งแต่เวอร์ชัน 5.0
ในปี 2023 Aldo Gunsing, Joan Daemenและ Bart Mennink ได้นำเสนอโครงสร้าง "double-decker" ซึ่งใช้การเข้ารหัสแบบสตรีมเช่นกัน โดยสามารถปรับแต่งได้และมีความกว้างของบล็อก[ 3 ]
สิทธิบัตร
ในขณะที่รูปแบบการเข้ารหัสที่ได้รับการรับรองIAPMให้การเข้ารหัสรวมถึงแท็กการรับรอง ส่วนประกอบการเข้ารหัสของโหมด IAPM อธิบายรูปแบบ LRW และ XEX ข้างต้นได้อย่างสมบูรณ์ และด้วยเหตุนี้จึง อธิบาย XTSโดยไม่มี แง่มุม ของการขโมยข้อความที่เข้ารหัสรายละเอียดนี้อธิบายไว้ในรูปที่ 8 และ 5 ของสิทธิบัตรสหรัฐอเมริกาหมายเลข 6,963,976 [ 25 ]
ดูเพิ่มเติม
- การคงอยู่ของข้อมูล
- การโจมตีแบบ Cold boot
- ซอฟต์แวร์เข้ารหัสดิสก์
- ฮาร์ดแวร์เข้ารหัสดิสก์
- IEEE P1619โครงการมาตรฐานสำหรับการเข้ารหัสข้อมูลในที่จัดเก็บ
อ่านเพิ่มเติม
- S. Halevi และ P. Rogaway, โหมดการเข้ารหัสที่ปรับแต่งได้ , CRYPTO '03 (LNCS, เล่มที่ 2729), 2003
- S. Halevi และ P. Rogaway โหมดการเข้ารหัสแบบขนาน[5] , 2003
- สถาปัตยกรรมมาตรฐานสำหรับสื่อจัดเก็บข้อมูลร่วมที่เข้ารหัส IEEE Project 1619 (P1619) [6 ]
- SISWG, ร่างข้อเสนอสำหรับรูปแบบการสำรองข้อมูลคีย์[7] , 2004
- SISWG, ร่างข้อเสนอสำหรับการเข้ารหัสแบบ Wide-block ที่ปรับแต่งได้[8] , 2004 – อธิบาย EME-32-AES
- James Hughes, การจัดเก็บข้อมูลที่เข้ารหัส — ความท้าทายและวิธีการ[9] เก็บถาวรเมื่อ 2006-05-18 ที่Wayback Machine
- J. Alex Halderman , Seth D. Schoen , Nadia Heninger , William Clarkson, William Paul, Joseph A. Calandrino, Ariel J. Feldman, Jacob Appelbaum และEdward W. Felten (21 กุมภาพันธ์ 2551) "Lest We Remember: Cold Boot Attacks on Encryption Keys" (PDF) มหาวิทยาลัยพรินซ์ตัน เก็บถาวร จากต้นฉบับ( PDF ) เมื่อ 14 พฤษภาคม 2551
{{cite journal}}: การอ้างอิงวารสารต้องใช้|journal=( ความช่วยเหลือ )CS1 maint: multiple names: authors list (link) - Niels Fergusson (สิงหาคม 2549). "AES-CBC + Elephant Diffuser: อัลกอริทึมการเข้ารหัสดิสก์สำหรับ Windows Vista" (PDF) . Microsoft .
{{cite journal}}: การอ้างอิงวารสารต้องใช้|journal=( ความช่วยเหลือ ) - Chakraborty, Debrup; López, Cuauhtemoc Mancillas; Sarkar, Palash (เมษายน 2018). "การเข้ารหัสดิสก์: เราจำเป็นต้องรักษาความยาวไว้หรือไม่?" (PDF) . วารสารวิศวกรรมการเข้ารหัสลับ . 8 (1): 49– 69. doi : 10.1007/s13389-016-0147-0 . S2CID 4647765 .
ลิงก์ภายนอก
- กลุ่มทำงานด้านความปลอดภัยในการจัดเก็บข้อมูล(SISWG )
- "โครงการ eSTREAM"เก็บถาวรจากต้นฉบับเมื่อ 15 เมษายน 2555 เรียกดูเมื่อ28 มีนาคม 2553
สรุปเนื้อหา
ข้อมูลสำคัญจากบทความ
ข้อมูลสำคัญเกี่ยวกับ ทฤษฎีการเข้ารหัสดิสก์
การเข้ารหัสดิสก์เป็นกรณีพิเศษของ การปกป้อง ข้อมูลที่จัดเก็บไว้เมื่อสื่อจัดเก็บข้อมูลเป็นอุปกรณ์ที่สามารถระบุตำแหน่งเซกเตอร์ได้ (เช่น ฮาร์ดดิสก์)...
การกำหนดปัญหา
วิธีการเข้ารหัสข้อมูลลงดิสก์มีจุดมุ่งหมายเพื่อให้คุณสมบัติที่แตกต่างกันสามประการดังนี้:
เมื่อการใช้พื้นที่เพิ่มเติมเป็นที่ยอมรับได้
แม้ว่าในอดีตจะเป็นที่ยอมรับกันโดยทั่วไปว่าการเข้ารหัสดิสก์ควรคงความยาวไว้ แต่คุณสมบัติเพิ่มเติมบางอย่างก็ทำให้การใช้พื้นที่เพิ่มขึ้นมีความเหมาะสม ตัวอย่างหนึ่งคือ การเข้ารหัสแบบตรวจสอบความถูกต้อง...
บล็อกแคบและกว้าง
วิธีการเข้ารหัสดิสก์ยังแบ่งออกเป็นวิธี "บล็อกแคบ" และ "บล็อกกว้าง" สำหรับข้อความธรรมดาที่มีขนาดเท่ากับเซกเตอร์ วิธีบล็อกแคบจะเข้ารหัสเป็นหลายบล็อก ในขณะที่วิธีบล็อกกว้างจะเข้ารหัสเพียงบล็อกเดียว วิธีบล็อกแคบ เช่น LRW, XES และ XTS...