อัลกอริทึมของ Grover จะทำงานกับ CBC คุณหมายความว่าคุณมีข้อความธรรมดา/ข้อความเข้ารหัสหลายพันข้อความ แต่ละข้อความมี IV ของตัวเองหรือไม่
ฉันไม่แน่ใจว่าคุณกำลังทำอะไรในขั้นตอนที่ 2 ฉันคิดว่าโดยทั่วไปแล้ว IV ถือว่าเป็นส่วนหนึ่งของไซเฟอร์เท็กซ์ ดังนั้นหากคุณมีไซเฟอร์เท็กซ์ คุณมี IV แล้วคุณก็จะได้สมการดังนี้
เออีเอส-128$_d$(ค$_1$, K) = IV $\oบวก$ พี$_1$
เออีเอส-128$_d$(ค$_2$, K) = ค$_1 \oบวก$ พี$_2$
เป็นต้น
สำหรับอัลกอริทึมของ Grover เนื่องจากคุณรู้จักด้านขวามือ และคุณทราบอินพุตของการถอดรหัส AES คุณสามารถค้นหาผ่านช่องว่างของ K และสำหรับ oracle ให้ใช้วงจรเพื่อดำเนินการถอดรหัส AES ของ C$_1$, ค$_2$ฯลฯ แล้วเปรียบเทียบกับค่าทางด้านขวามือ
เพื่อความแน่ใจว่าค่าที่ส่งคืน K นั้นถูกต้อง คุณจะต้องใช้เพียง 2 บล็อก สำหรับ AES-128 (เช่น แค่ C$_1$ และซี$_2$ ของหนึ่งข้อความ) 2 บล็อกสำหรับ AES-192 และ 3 บล็อกสำหรับ AES-256 โดยทั่วไปหากคุณใช้ $r$ บล็อกแต่ละอันมี $n$ บิตและด้วยคีย์ของ $k$ บิต ความน่าจะเป็นที่การค้นหาของ Grover จะพบคีย์ที่ถูกต้องนั้นเกี่ยวกับ $e^{-2^{k-rn}}$. ดังนั้นหาก $k < rn$คุณจะรับประกันผลลัพธ์ที่ถูกต้องโดยพื้นฐาน (ดูส่วน "กุญแจปลอม" ในหน้า 4 ของ กระดาษแผ่นนี้ สำหรับรากศัพท์)