สามารถค้นหาคีย์สเปซแบบ 32 บิตได้หรือไม่
OpenSSL พร้อม AES-NI สามารถดำเนินการวนซ้ำ 61510120 สำหรับบล็อก 64 ไบต์ AES-128 ในโหมด CBC ต่อ 3 วินาทีในเครื่องของฉัน
วิ่ง ความเร็ว openssl -evp AES128
เพื่อดูในเครื่องของคุณ
สิ่งนี้ทำให้ $2^{26}$ เว้นวรรคเป็นเวลาสามวินาที หนึ่งความต้องการ $2^{6} =64*3$ วินาทีเพื่อค้นหาผู้สมัครคนสำคัญด้วยการเข้ารหัสที่ดี
สำหรับสาเหตุของคุณ สร้าง 3 ฟังก์ชั่น;
- $P = \operatorname{AES-Dec-CBC}(k, IV, C)$ ที่ไหน $C$ เป็นบล็อกไซเฟอร์เท็กซ์และ $พี$ เป็นข้อความธรรมดาที่ถอดรหัสภายใต้คีย์ปัจจุบัน $k$ ของ $C$.
- $k =\operatorname{GetNextCandidateKey(ปัจจุบัน)}$ วิธีง่ายๆ นี้จะเพิ่มกระแสและสร้างคีย์ $k = ปัจจุบัน\mathbin\|1100\cdots011$ ในรูปแบบไบนารี คุณต้องแปลงสิ่งนี้เป็นไบนารีเพื่อให้พอดีกับไลบรารีการเข้ารหัสมาตรฐาน
- $b = \operatorname{CheckTheMessage}(P)$. ฟังก์ชันนี้รับข้อความธรรมดาและตรวจสอบว่าไบต์อยู่ในช่วง ถ้าไม่คืน
0
อย่างอื่นกลับมา 1
ขณะนี้มี 3 ฟังก์ชั่นนี้;
ปัจจุบัน = -1
ในขณะที่ปัจจุบัน < 2^32 ทำ:
k = GetNextCandidateKey (ปัจจุบัน)
P = AES-ธ.ค.-CBC(k, IV, C)
b = CheckTheMessage(P)
ถ้า b == 1
พิมพ์ (ปัจจุบัน)
ปัจจุบัน ++