ฉันไม่สามารถสร้างความซับซ้อนบิตที่แน่นอนจากกระดาษที่กล่าวถึงได้ [1]ผู้เขียนไม่ได้ให้ซอร์สโค้ด ฉันกำลังโพสต์ตัวประมาณสำหรับการโจมตี MMT และ BJMM ที่นี่.
การสรุปว่าอัลกอริทึม BJMM แย่กว่า MMT นั้นไม่ถูกต้อง เนื่องจาก MMT เป็นกรณีพิเศษของ BJMM โดยสังเขป BJMM คือ MMT ที่ไม่มีการแสดงประเภท $1 = 0+0 \bmod 2 $ สำหรับเวกเตอร์ข้อผิดพลาด ความสับสนมาจากความจริงที่ว่าผู้เขียนของ [1] พิจารณา BJMM ด้วยความลึกคงที่ของแผนผังการค้นหา (กล่าวคือ ความลึก 3 ตามที่ทำในกระดาษต้นฉบับ [2]. อย่างไรก็ตาม สิ่งนี้อาจไม่เหมาะสมสำหรับระบอบการปกครองแบบกระจัดกระจาย ดังนั้น ข้อสรุปที่ผิดว่า BJMM นั้นแย่กว่า MMT ฉันให้รายละเอียดเพิ่มเติมด้านล่าง
หัวใจสำคัญของทั้งอัลกอริทึม MMT และ BJMM คือแนวคิดของ คลุมเครือ แยกเวกเตอร์ข้อผิดพลาด $e \ใน \{0,1\}^k$ ของน้ำหนัก $p$ เช่น $e = e_1 + e_2$. MMT ใช้เวลา $e_1, e_2 \ใน \{0,1\}^k$ น้ำหนักแต่ละ $p/2$จึงให้ $\binom{p}{p/2}$ วิธีการเป็นตัวแทน $0$-พิกัดเป็น $0+1$ หรือ $1+0$ ใน $e$. BJMM ใช้เวลา $e_1, e_2 \ใน \{0,1\}^k$ น้ำหนักแต่ละ $p/2 + \varepsilon$จึงให้ $\binom{p}{p/2} \cdot \binom{k-p}{\varepsilon}$ การเป็นตัวแทน (ตัวคูณที่สองคือจำนวนการแทนประเภท $0 = 1+1$).
ปรากฎว่าสำหรับปัญหาการถอดรหัสในระบอบการปกครองที่หนาแน่นนั่นคือเมื่อน้ำหนักของ $e$ เป็นระเบียบเรียบร้อย $\เธต้า(n)$อัลกอริทึม BJMM นั้นเร็วกว่าเมื่อเราทำกระบวนการซ้ำโดยเป็นตัวแทน $e_1$, $e_2$ ในทางที่คลุมเครือ ดังนั้นจึงจบลงด้วยโครงสร้างแผนผังการค้นหาของอัลกอริทึม โดยที่ความลึกที่เหมาะสมของแผนผังคือพารามิเตอร์ที่จะปรับให้เหมาะสม จาก [2] สำหรับระบอบการปกครองที่หนาแน่น มันจะเป็น 3
สำหรับพารามิเตอร์ Classic McEliece ปรากฎว่าการทำความลึก -2 นั้นเหมาะสมที่สุด โดยสัญชาตญาณแล้ว ตัวกระจายข้อผิดพลาด ยิ่งต้นไม้ที่เหมาะสมที่สุดตื้นเท่าไร เพราะเราไม่สามารถแบ่งน้ำหนักเล็กน้อยออกเป็นสองซีกได้หลายครั้งเกินไป
โดยเฉพาะอย่างยิ่ง ฉันได้รับหลักทรัพย์บิตต่อไปนี้ (และความซับซ้อนของหน่วยความจำ) ด้วยตัวประมาณของฉัน สิ่งเหล่านี้น่าจะถูกประเมินต่ำเกินไป $โพลี(n)$ ปัจจัยต่างๆ จะถูกละเว้น คุณสามารถทำซ้ำได้โดยเรียกใช้สคริปต์
-------------------- MMT --------------------
n = 3488 k = 2720 w = 64 {'รันไทม์': 133.610045757394, 'mem': 61.4108701659799}
n = 4608 k = 3360 w = 96 {'รันไทม์': 174.170500202444, 'mem': 76.7183814578096}
n = 6960 k = 5413 w = 119 {'รันไทม์': 244.706198594600, 'mem': 123.451330788046}
n = 8192 k = 6528 w = 128 {'รันไทม์': 277.268692835670, 'mem': 140.825234863797}
BJMM ความลึก 2 มีประสิทธิภาพดีกว่าทั้ง MMT และ BJMM ความลึก 3 เล็กน้อย
---------------- BJMM ความลึก 2 ----------------
n = 3488 k = 2720 w = 64 {'รันไทม์': 127.121142192395,'mem': 65.4912086419963,'eps': 4}
n = 4608 k = 3360 w = 96 {'รันไทม์': 164.510671206084, 'mem': 88.1961572319148, 'eps': 6}
n = 6960 k = 5413 w = 119 {'รันไทม์': 231.228308300186, 'mem': 118.193072674123, 'eps': 8}
n = 8192 k = 6528 w = 128 {'รันไทม์': 262.367185095806,'mem': 134.928413147468, 'eps': 8}
---------------- BJMM ความลึก 3 ----------------
n = 3488 k = 2720 w = 64 {'รันไทม์': 132.929177320070, 'mem': 30.8744409777593, 'eps': [2, 0]}
n = 4608 k = 3360 w = 96 {'รันไทม์': 167.443669507488, 'mem': 45.4015594758618, 'eps': [6, 0]}
n = 6960 k = 5413 w = 119 {'รันไทม์': 236.346159271338, 'mem': 67.5649403829532,'eps': [6, 0]}
n = 8192 k = 6528 w = 128 {'รันไทม์': 269.431207750362, 'mem': 70.1193015124538, 'eps': [6, 0]}
[1] https://www.mdpi.com/1999-4893/12/10/209/pdf
[2] https://eprint.iacr.org/2012/026.pdf