การโจมตีแบบบิคลิก
การโจมตีแบบไบคลิกเป็นรูปแบบหนึ่งของวิธีการวิเคราะห์การเข้ารหัสแบบพบปะตรงกลาง (MITM [ 1 ] ) โดยใช้ โครงสร้าง ไบคลิกเพื่อขยายจำนวนรอบการโจมตีที่เป็นไปได้โดยการโจมตีแบบ MITM เนื่องจากการวิเคราะห์การเข้ารหัสแบบไบคลิกนั้นอิงตามการโจมตีแบบ MITM จึงสามารถนำไปใช้กับทั้งการเข้ารหัสแบบบล็อกและฟังก์ชันแฮช (แบบวนซ้ำ) ได้ การโจมตีแบบไบคลิกเป็นที่รู้จักกันดีว่าทำให้AES เต็มรูปแบบ [ 2 ]และIDEA เต็มรูป แบบ[ 3 ] อ่อนแอลง แม้ว่าจะเหนือกว่าการโจมตีแบบบรูทฟอร์ซเพียงเล็กน้อยก็ตาม นอกจากนี้ยังถูกนำไปใช้กับ การเข้ารหัส KASUMIและความต้านทานต่อพรีอิมเมจของฟังก์ชันแฮชSkein-512และSHA-2 [ 4 ]
การโจมตีแบบไบคลิกยังคงดำเนินต่อไป ( ณ เดือนเมษายน 2562)) การโจมตีด้วยคีย์เดียวที่ดีที่สุดเท่าที่ทราบกันในวงกว้างสำหรับAESความซับซ้อนในการคำนวณของการโจมตีนี้คือ,และสำหรับ AES128, AES192 และ AES256 ตามลำดับ ถือเป็นการโจมตีด้วยคีย์เดียวที่เป็นที่รู้จักในวงกว้างบน AES ที่โจมตีรอบทั้งหมด[ 2 ]การโจมตีครั้งก่อนๆ ได้โจมตีเวอร์ชันที่ลดรอบลง (โดยทั่วไปคือเวอร์ชันที่ลดเหลือ 7 หรือ 8 รอบ)
เนื่องจากความซับซ้อนในการคำนวณของการโจมตีนั้นการโจมตีแบบไบคลิกเป็นการโจมตีเชิงทฤษฎี ซึ่งหมายความว่าความปลอดภัยของ AES ยังไม่ถูกทำลาย และการใช้งาน AES ยังคงค่อนข้างปลอดภัย อย่างไรก็ตาม การโจมตีแบบไบคลิกเป็นการโจมตีที่น่าสนใจ ซึ่งชี้ให้เห็นถึงแนวทางใหม่ในการวิเคราะห์การเข้ารหัสแบบบล็อก การโจมตีนี้ยังให้ข้อมูลเพิ่มเติมเกี่ยวกับ AES เนื่องจากทำให้เกิดคำถามเกี่ยวกับขอบเขตความปลอดภัยในจำนวนรอบที่ใช้ในการเข้ารหัส
ประวัติศาสตร์
การโจมตี MITM ดั้งเดิมได้รับการเสนอแนะครั้งแรกโดยDiffieและHellmanในปี 1977 เมื่อพวกเขาหารือเกี่ยวกับคุณสมบัติการวิเคราะห์การเข้ารหัสของ DES [ 5 ]พวกเขาโต้แย้งว่าขนาดคีย์เล็กเกินไป และการใช้ DES ซ้ำหลายครั้งด้วยคีย์ที่แตกต่างกันอาจเป็นวิธีแก้ปัญหาเรื่องขนาดคีย์ อย่างไรก็ตาม พวกเขาแนะนำไม่ให้ใช้ double-DES และแนะนำให้ใช้ triple-DES เป็นอย่างน้อย เนื่องจากมีการโจมตี MITM (การโจมตี MITM สามารถนำไปใช้กับ double-DES ได้อย่างง่ายดายเพื่อลดความปลอดภัย)แค่เพียงเนื่องจากสามารถใช้การโจมตีแบบ Brute Force เพื่อถอดรหัสการเข้ารหัส DES ครั้งแรกและครั้งที่สองได้โดยอิสระ หากมีทั้งข้อความต้นฉบับและข้อความที่เข้ารหัสแล้ว)
นับตั้งแต่ Diffie และ Hellman เสนอการโจมตี MITM ก็มีรูปแบบต่างๆ เกิดขึ้นมากมายซึ่งมีประโยชน์ในสถานการณ์ที่การโจมตี MITM พื้นฐานไม่สามารถใช้งานได้ รูปแบบการโจมตีแบบ biclique ได้รับการเสนอครั้งแรกโดยDmitry Khovratovich , Rechberger และ Savelieva เพื่อใช้กับการวิเคราะห์การเข้ารหัสฟังก์ชันแฮช[ 6 ]อย่างไรก็ตาม Bogdanov, Khovratovich และ Rechberger เป็นผู้ที่แสดงวิธีการประยุกต์ใช้แนวคิดของ bicliques กับการตั้งค่าคีย์ลับ รวมถึงการวิเคราะห์การเข้ารหัสบล็อกไซเฟอร์ เมื่อพวกเขาเผยแพร่การโจมตี AES ก่อนหน้านี้ การโจมตี MITM บน AES และบล็อกไซเฟอร์อื่นๆ อีกมากมายได้รับความสนใจน้อยมาก ส่วนใหญ่เป็นเพราะความจำเป็นต้องมีบิตคีย์อิสระระหว่าง 'ซับไซเฟอร์ MITM' สองตัวเพื่ออำนวยความสะดวกในการโจมตี MITM ซึ่งเป็นสิ่งที่ทำได้ยากในตารางคีย์สมัยใหม่หลายๆ แบบ เช่นของ AES
บิกลิค
สำหรับคำอธิบายทั่วไปเกี่ยวกับโครงสร้างไบคลิก โปรดดูบทความเรื่องไบคลิก
ในการโจมตีแบบ MITM (Man-in-the-Middle) บิตของคีย์จะถูกขโมยและบิตคีย์ที่อยู่ในซับไซเฟอร์แรกและซับไซเฟอร์ที่สองจะต้องเป็นอิสระต่อกัน กล่าวคือ จะต้องเป็นอิสระต่อกัน มิฉะนั้นค่ากลางที่ตรงกันสำหรับข้อความต้นฉบับและข้อความที่เข้ารหัสจะไม่สามารถคำนวณได้อย่างอิสระในการโจมตีแบบ MITM (มีการโจมตีแบบ MITM หลายรูปแบบที่บล็อกอาจมีบิตคีย์ร่วมกัน ดูการโจมตีแบบ MITM 3 ซับเซ็ต ) คุณสมบัตินี้มักจะยากที่จะใช้ประโยชน์ในจำนวนรอบที่มากขึ้น เนื่องจากความแพร่กระจายของไซเฟอร์ที่ถูกโจมตี
กล่าวโดยสรุป: ยิ่งคุณโจมตีหลายรอบเท่าไหร่ คุณก็จะมีซับไซเฟอร์ขนาดใหญ่ขึ้นเท่านั้น และยิ่งคุณมีซับไซเฟอร์ขนาดใหญ่เท่าไหร่ คุณก็ยิ่งต้องใช้การโจมตีแบบ Brute Force เพื่อถอดรหัสซับไซเฟอร์แต่ละอันน้อยลงเท่านั้น แน่นอนว่าจำนวนบิตคีย์อิสระในแต่ละซับไซเฟอร์นั้นขึ้นอยู่กับคุณสมบัติการกระจายตัวของตารางคีย์ด้วย
วิธีที่บิคลิกช่วยรับมือกับปัญหาข้างต้นคือ ช่วยให้สามารถโจมตี AES ได้ 7 รอบโดยใช้การโจมตีแบบ MITM จากนั้นโดยการใช้โครงสร้างบิคลิกความยาว 3 (เช่น ครอบคลุม 3 รอบของการเข้ารหัส) คุณสามารถแมปสถานะกลางที่จุดเริ่มต้นของรอบที่ 7 ไปยังจุดสิ้นสุดของรอบสุดท้าย เช่น รอบที่ 10 (ถ้าเป็น AES128) ซึ่งจะช่วยให้สามารถโจมตีได้ครบจำนวนรอบของการเข้ารหัส แม้ว่าจะไม่สามารถโจมตีได้ครบจำนวนรอบนั้นด้วยการโจมตีแบบ MITM พื้นฐานก็ตาม
ความหมายของไบคลิกคือการสร้างโครงสร้างที่มีประสิทธิภาพ ซึ่งสามารถแมปค่ากลางในตอนท้ายของการโจมตี MITM ไปยังข้อความเข้ารหัสในตอนท้ายได้ แน่นอนว่าข้อความเข้ารหัสที่สถานะกลางถูกแมปไปนั้นขึ้นอยู่กับกุญแจที่ใช้ในการเข้ารหัส กุญแจที่ใช้ในการแมปสถานะไปยังข้อความเข้ารหัสในไบคลิกนั้นได้มาจากบิตกุญแจที่ได้จากการเดาแบบสุ่มในซับไซเฟอร์แรกและซับไซเฟอร์ที่สองของการโจมตี MITM
สาระสำคัญของการโจมตีแบบไบคลิก นอกเหนือจากการโจมตีแบบ MITM แล้ว คือความสามารถในการสร้างโครงสร้างไบคลิกอย่างมีประสิทธิภาพ ซึ่งขึ้นอยู่กับบิตของคีย์และสามารถแมปสถานะระดับกลางบางอย่างไปยังข้อความเข้ารหัสที่สอดคล้องกันได้
วิธีสร้างจักรยานสองล้อ
บรูทฟอร์ซ
รับ[ 7 ]สถานะกลาง [ 8 ]และเข้ารหัสข้อความ[ 9 ]จากนั้นคำนวณคีย์ที่แมปจากค่ากลางเดียวไปยัง เข้ารหัสข้อความ ทั้งหมดดำเนินกระบวนการแมปคีย์แบบ "หนึ่งต่อหลาย" ต่อไปโดยทำซ้ำสำหรับค่ากลาง ทั้งหมด
กระบวนการทำแผนที่นี้จำเป็นต้องใช้การกู้คืนคีย์ เนื่องจาก สถานะกลาง แต่ละสถานะจำเป็นต้องเชื่อมโยงกับ ข้อความเข้ารหัส ทั้งหมด (ไม่ใช่แค่ข้อความเข้ารหัสเดียว) [ 10 ]
ผลต่างคีย์ที่เกี่ยวข้องอิสระ
(วิธีการนี้ได้รับการแนะนำโดย Bogdanov, Khovratovich และ Rechberger ในบทความของพวกเขา: การวิเคราะห์การเข้ารหัส Biclique ของ AES เต็มรูปแบบ[ 2 ] )
เบื้องต้น: โปรดจำไว้ว่าหน้าที่ของไบคลิกคือการแมปค่าระดับกลางสำหรับค่าของข้อความที่เข้ารหัสแล้วโดยอิงจากกุญแจสำคัญโดยที่:
ขั้นตอน: ขั้นตอนที่หนึ่ง:สถานะระหว่างกลาง(), ข้อความเข้ารหัส() และกุญแจ() ถูกเลือกโดยมีคุณสมบัติดังนี้:, ที่ไหนคือฟังก์ชันที่แปลงสถานะกลางไปเป็นข้อความเข้ารหัสโดยใช้กุญแจที่กำหนด ซึ่งเรียกว่าการคำนวณพื้นฐาน
ขั้นตอนที่สอง:ชุดคีย์ที่เกี่ยวข้องสองชุดที่มีขนาดเท่ากันได้รับการเลือกแล้ว โดยเลือกคีย์ดังนี้:
- ชุดกุญแจชุดแรกคือกุญแจที่ตรงตามข้อกำหนดความแตกต่างต่อไปนี้โดยคำนึงถึงการคำนวณพื้นฐาน:
- ชุดกุญแจชุดที่สองคือกุญแจที่ตรงตามข้อกำหนดความแตกต่างต่อไปนี้โดยคำนึงถึงการคำนวณพื้นฐาน:
- มีการเลือกกุญแจเพื่อให้เส้นทางของ- และ- อนุพันธ์เหล่านี้เป็นอิสระต่อกัน กล่าวคือ พวกมันไม่มีส่วนประกอบที่ไม่เป็นเชิงเส้น ที่ใช้งานอยู่ร่วมกัน
กล่าวอีกนัยหนึ่งคือ: ผลต่างของอินพุตเป็น 0 ควรจะสอดคล้องกับผลต่างของเอาต์พุตเป็นภายใต้ความแตกต่างที่สำคัญประการหนึ่งความแตกต่างทั้งหมดนั้นเกี่ยวข้องกับการคำนวณพื้นฐาน ความแตกต่างของข้อมูลนำเข้าคือควรแมปไปยังความแตกต่างของเอาต์พุตเป็น 0 ภายใต้ความแตกต่างของคีย์ความแตกต่างทั้งหมดนั้นอ้างอิงจากการคำนวณพื้นฐาน
ขั้นตอนที่สาม:เนื่องจากเส้นทางเหล่านี้ไม่มีส่วนประกอบที่ไม่เป็นเชิงเส้นร่วมกัน (เช่น เส้นทางที่ไม่มีกล่อง S ร่วมกัน ) จึงสามารถรวมเส้นทางเหล่านี้เข้าด้วยกันเพื่อให้ได้: ซึ่ง สอดคล้องกับคำจำกัดความของอนุพันธ์ทั้งสองจากขั้นตอนที่ 2 เห็น ได้ชัด ว่า ทูเปิล[ 11 ]จากการคำนวณพื้นฐาน ยังสอดคล้องกับอนุพันธ์ทั้งสองตามคำนิยามด้วย เนื่องจากอนุพันธ์นั้นสัมพันธ์กับการคำนวณพื้นฐาน การแทนที่เมื่อนำไปใส่ในคำจำกัดความใดคำหนึ่งในสองคำนี้ จะได้ผลลัพธ์ดังนี้เนื่องจากและ นั่นหมายความว่าทูเปิลของการคำนวณพื้นฐาน สามารถ นำไป XORกับเส้นทางที่รวมกัน ได้ :
ขั้นตอนที่สี่:เป็นเรื่องง่ายดายที่จะเห็นว่า: หากนำค่านี้ไปแทนในผลรวมของค่าความแตกต่างข้างต้น ผลลัพธ์ที่ได้จะเป็นดังนี้: ซึ่งก็เหมือนกับคำจำกัดความที่ได้กล่าวไว้ข้างต้นสำหรับ biclique:
ดังนั้นจึงสามารถสร้างบิลิคที่มีขนาดได้(เนื่องจากทั้งหมดปุ่มของชุดปุ่มแรก สามารถนำมาผสมผสานกับปุ่มอื่นๆ ได้กุญแจจากชุดกุญแจที่สอง) ซึ่งหมายถึงบิลิคที่มีขนาดสามารถสร้างได้โดยใช้เพียงการคำนวณอนุพันธ์และเกิน. ถ้าสำหรับจากนั้นกุญแจทั้งหมดในกลุ่มคนสองพี่น้องก็จะมีความแตกต่างกันด้วยเช่นกัน
นี่คือวิธีการสร้างไบคลิกในการโจมตีไบคลิกชั้นนำบน AES อย่างไรก็ตาม มีข้อจำกัดในทางปฏิบัติบางประการในการสร้างไบคลิกด้วยเทคนิคนี้ ยิ่งไบคลิกยาวมากเท่าใด ก็ยิ่งต้องครอบคลุมรอบมากขึ้นเท่านั้น คุณสมบัติการแพร่กระจายของรหัสจึงมีบทบาทสำคัญต่อประสิทธิภาพของการสร้างไบคลิก
วิธีการอื่นๆ ในการสร้าง biclique
Bogdanov, Khovratovich และ Rechberger ยังอธิบายวิธีการสร้าง biclique อีกวิธีหนึ่งที่เรียกว่า 'Interleaving Related-Key Differential Trails' ในบทความ: "Biclique Cryptanalysis of the Full AES [ 2 ] "
ขั้นตอนการเข้ารหัสลับของ Biclique
ขั้นตอนที่หนึ่ง:ผู้โจมตีจัดกลุ่มคีย์ที่เป็นไปได้ทั้งหมดเป็นชุดย่อยของคีย์ที่มีขนาดเท่ากับ...สำหรับบางคนโดยที่คีย์ในกลุ่มจะถูกจัดทำดัชนีเป็นในเมทริกซ์ขนาดผู้โจมตีจะแบ่งรหัสลับออกเป็นสองรหัสย่อยและ(เช่นนั้น)เช่นเดียวกับการโจมตี MITM ทั่วไป ชุดกุญแจสำหรับแต่ละรหัสย่อยมีจำนวนสมาชิกเท่ากับจำนวนสมาชิกทั้งหมดและถูกเรียกว่าและกุญแจรวมของรหัสย่อยต่างๆ จะแสดงออกมาด้วยเมทริกซ์ที่กล่าวถึงข้างต้น.
ขั้นตอนที่สอง:ผู้โจมตีสร้างกลุ่มย่อยสำหรับแต่ละกลุ่มของคีย์ บิคลิกมีมิติ d เนื่องจากมันแมปสถานะภายใน, ถึงข้อความที่เข้ารหัส, โดยใช้คีย์ต่างๆ ในส่วน "วิธีการสร้างบิคลิก" แนะนำวิธีการสร้างบิคลิกโดยใช้ "ค่าความแตกต่างระหว่างคีย์ที่สัมพันธ์กันแบบอิสระ" ในกรณีนั้น บิคลิกจะถูกสร้างขึ้นโดยใช้ค่าความแตกต่างของชุดคีย์และซึ่งเป็นส่วนหนึ่งของรหัสย่อย
ขั้นตอนที่สาม:ผู้โจมตีหยิบข้อความเข้ารหัสที่เป็นไปได้และขอให้ตัวถอดรหัสให้ข้อมูลข้อความต้นฉบับที่ตรงกัน.
ขั้นตอนที่สี่:ผู้โจมตีเลือกสถานะภายในและข้อความต้นฉบับที่เกี่ยวข้องและทำการโจมตีแบบ MITM ตามปกติกับและโดยการโจมตีจากสถานะภายในและจากข้อความต้นฉบับ
ขั้นตอนที่ห้า:เมื่อใดก็ตามที่พบผู้สมัครหลักที่ตรงตามเกณฑ์กับจากนั้นจะนำกุญแจนั้นไปทดสอบกับคู่ข้อความต้นฉบับ/ข้อความเข้ารหัสอีกคู่หนึ่ง หากกุญแจนั้นผ่านการตรวจสอบความถูกต้องกับคู่ข้อความเข้ารหัสอีกคู่หนึ่ง ก็มีความเป็นไปได้สูงว่านั่นคือกุญแจที่ถูกต้อง
ตัวอย่างการโจมตี
ตัวอย่างต่อไปนี้อ้างอิงจากการโจมตีแบบ biclique บน AES จากเอกสาร "Biclique Cryptanalysis of the Full AES [ 2 ] " คำอธิบายในตัวอย่างใช้คำศัพท์เดียวกันกับที่ผู้เขียนการโจมตีใช้ (เช่น สำหรับชื่อตัวแปร ฯลฯ) เพื่อความง่าย จะกล่าวถึงการโจมตีบน AES128 เวอร์ชันด้านล่าง การโจมตีประกอบด้วยการโจมตี MITM 7 รอบ โดย biclique ครอบคลุม 3 รอบสุดท้าย
การแบ่งพาร์ติชันหลัก
พื้นที่คีย์ถูกแบ่งออกเป็นกลุ่มของกุญแจ โดยแต่ละกลุ่มประกอบด้วย สำหรับแต่ละปุ่มกลุ่มต่างๆ ซึ่งเป็นคีย์พื้นฐานที่ไม่ซ้ำกันสำหรับการคำนวณพื้นฐานจะถูกเลือก คีย์พื้นฐานจะมีไบต์เฉพาะสองไบต์ที่ตั้งค่าเป็นศูนย์ ดังแสดงในตารางด้านล่าง (ซึ่งแสดงคีย์ในลักษณะเดียวกับที่ AES ใช้ในเมทริกซ์ 4x4 สำหรับ AES128):
จากนั้นจึงทำการแจงนับไบต์ที่เหลืออีก 14 ไบต์ (112 บิต) ของคีย์ ซึ่งจะได้ผลลัพธ์ดังนี้คีย์พื้นฐานที่ไม่ซ้ำกัน หนึ่งคีย์สำหรับแต่ละกลุ่มของคีย์ ทั่วไปจากนั้นจึงเลือกคีย์ในแต่ละกลุ่มโดยอ้างอิงจากคีย์พื้นฐาน โดยเลือกให้คีย์เหล่านั้นเกือบจะเหมือนกับคีย์พื้นฐาน แตกต่างกันเพียง 2 ไบต์เท่านั้น (ไม่ว่าจะเป็นของ หรือของข้อมูล 4 ไบต์ที่แสดงด้านล่าง:
สิ่งนี้ให้และซึ่งเมื่อรวมกันแล้วจะได้กุญแจที่แตกต่างกัน. เหล่านี้คีย์เหล่านี้ประกอบด้วยคีย์ต่างๆ ในกลุ่มสำหรับคีย์พื้นฐานแต่ละตัว
การก่อสร้างแบบบิคลิค
bicliques ถูกสร้างขึ้นโดยใช้เทคนิค "ความแตกต่างของคีย์ที่เกี่ยวข้องแบบอิสระ" ดังที่อธิบายไว้ในส่วน "วิธีการสร้าง biclique" ข้อกำหนดสำหรับการใช้เทคนิคนี้คือ เส้นทางความแตกต่างไปข้างหน้าและย้อนกลับที่ต้องรวมเข้าด้วยกันจะต้องไม่มีองค์ประกอบที่ไม่เป็นเชิงเส้นที่ใช้งานอยู่ร่วมกัน เรารู้ได้อย่างไรว่านี่เป็นเช่นนั้น? เนื่องจากวิธีการเลือกคีย์ในขั้นตอนที่ 1 ที่สัมพันธ์กับคีย์พื้นฐาน เส้นทางความแตกต่างจึง...โดยใช้ปุ่มต่างๆห้ามแชร์ S-box ที่ใช้งานอยู่ (ซึ่งเป็นส่วนประกอบที่ไม่เป็นเชิงเส้นเพียงอย่างเดียวใน AES) กับเส้นทางความแตกต่าง (differential trails)โดยใช้กุญแจดังนั้นจึงสามารถนำค่า XOR ของเส้นทางที่แตกต่างกันมาสร้างเป็นบิคลิกได้
การโจมตี MITM
เมื่อสร้าง bicliques แล้ว การโจมตี MITM ก็แทบจะเริ่มต้นขึ้นได้ ก่อนที่จะทำการโจมตี MITM นั้น...ค่ากลางจากข้อความต้นฉบับ: , ค่ากลางจากข้อความที่เข้ารหัส: และ สถานะระดับกลางและคีย์ย่อยที่เกี่ยวข้องหรืออย่างไรก็ตาม ค่าเหล่านี้ได้รับการคำนวณและจัดเก็บไว้ล่วงหน้าแล้ว
ตอนนี้สามารถทำการโจมตีแบบ MITM ได้แล้ว เพื่อทดสอบกุญแจจำเป็นต้องคำนวณส่วนต่าง ๆ ของรหัสลับใหม่เท่านั้น ซึ่งทราบกันดีอยู่แล้วว่าจะแตกต่างกันไปในแต่ละกรณีและสำหรับการคำนวณย้อนกลับจากถึงนี่คือ S-box 4 ตัวที่ต้องคำนวณใหม่ สำหรับการคำนวณไปข้างหน้าจากถึงซึ่งก็คือ 3 เท่านั้น (คำอธิบายเชิงลึกเกี่ยวกับปริมาณการคำนวณใหม่ที่จำเป็นสามารถพบได้ในเอกสาร "Biclique Cryptanalysis of the full AES [ 2 ] " ซึ่งตัวอย่างนี้มาจากเอกสารดังกล่าว)
เมื่อค่ากลางตรงกัน ผู้สมัครหลักก็จะได้รับการพิจารณาระหว่างและพบรหัสลับที่เหมาะสมแล้ว จากนั้นจึงนำรหัสลับนั้นไปทดสอบกับข้อความต้นฉบับและข้อความเข้ารหัสอีกคู่หนึ่ง
ผลลัพธ์
การโจมตีนี้ทำให้ความซับซ้อนในการคำนวณของ AES128 ลดลงเหลือซึ่งเร็วกว่าวิธีการเดาแบบสุ่ม 3-5 เท่า ความซับซ้อนของข้อมูลในการโจมตีคือและความซับซ้อนของหน่วยความจำคือ.