เดอะ มาตรฐาน วิธีคือการใช้ ตัวประมาณ LWE (ถ้ามันเป็น เรียบง่าย หรือไม่เป็นที่ถกเถียงกัน)
โดยจะประเมินต้นทุนของการโจมตีที่ทราบกับอินสแตนซ์ LWE ที่กำหนดโดยพารามิเตอร์
$n$, $\alpha$, และ $คิว$, ที่ไหน $\alpha$ แสดงถึงอัตราส่วนสัญญาณรบกวนและสามารถหาได้จากพารามิเตอร์ $\sigma$ จาก Gaussian แยกโดยใช้สูตร $\alpha = \sqrt{2 \pi} \cdot \sigma / q$ดำเนินการแล้วในคำสั่ง อัลฟา = อัลฟาฟ(sigmaf(sigma), q)
.
โดยทั่วไปตัวประมาณจะค้นหาขนาดบล็อก $\เบต้า$ ที่อัลกอริทึม BKZ จะต้องใช้ในการแก้ปัญหา LWE แต่การประมาณเวลาการวิ่งของ BKZ-$\เบต้า$ ไม่ใช่เรื่องง่าย ดังนั้น เพื่อให้ได้ระดับความปลอดภัยที่แท้จริง คุณต้องเลือกรูปแบบต้นทุนสำหรับ BKZ
กล่าวโดยย่อคือ BKZ ทำงานบนตาข่ายของมิติ $d$ และเรียกหลาย ๆ ครั้งไปยังตัวแก้ปัญหา SVP ในมิติ $\เบต้า$. SVP oracle มักจะถือว่าต้องการ $2^{0.292\cdot \beta}$ การดำเนินงานในคอมพิวเตอร์แบบคลาสสิกและ $2^{0.265\cdot \beta}$ ในควอนตัมหนึ่ง
ดังนั้นการใช้ reduction_cost_model=BKZ.sieve
ในตัวประมาณ LWE จะให้จำนวนการดำเนินการแก่คุณเป็น $2^{0.292\cdot \beta + 16.4 + \log_2(8 \cdot d)}$ และคุณต้องการให้มีขนาดใหญ่กว่า $2^\แลมบ์ดา$ สำหรับ $\แลมบ์ดา$ บิตของความปลอดภัย
บางคนค่อนข้างอนุรักษ์นิยม (หวาดระแวง?) และไม่สนใจต้นทุนที่เกี่ยวข้องกับมิติ $d$ และการโทรจำนวนมากไปยัง SVP oracle ดังนั้นพวกเขาจึงประมาณจำนวนการดำเนินการของ BKZ เป็นการเรียก SVP เพียงครั้งเดียว ดังนั้น พวกเขาจึงได้รับ $2^{0.292\cdot \beta}$ หรือ $2^{0.265\cdot \beta}$. สิ่งนี้เรียกว่าโมเดลต้นทุน "core-SVP" และใช้เพื่อประเมินความปลอดภัยของ ดาบ.