รูปแบบ BGV และ BFV สำหรับการดำเนินการกับจำนวนเต็ม
ดำเนินการบวกและคูณจำนวนเต็มที่เข้ารหัสโดยใช้ BGV
รูปแบบ BGV และ BFV สำหรับการดำเนินการกับจำนวนเต็ม เป็นบทเรียน Cryptology Academy ฟรีบน CoddyKit นี่คือบทเรียนที่ 3 จากทั้งหมด 4 บทเรียน คุณสามารถอ่านบทเรียนทั้งหมดด้านล่างฟรี — จากนั้นลองปฏิบัติด้วยตัวคุณเองในเบราว์เซอร์พร้อมตัวแก้ไขโค้ดในตัวและติวเตอร์ AI ตลอด 24/7 บทเรียนนี้เป็นส่วนหนึ่งของเส้นทางการเรียน Cryptology Academy และความก้าวหน้าของคุณจะซิงค์ข้ามเว็บและแอป CoddyKit คอร์ส Cryptology Academy มีบทเรียนทั้งหมด 4 บทเรียน
ภาพรวมของ BGV
BGV (Brakerski-Gentry-Vaikuntanathan, 2012) เป็นรูปแบบ FHE แบบมีระดับชั้นที่สร้างบน RLWE รองรับการบวกและการคูณโดยพลการบนข้อความธรรมดาจำนวนเต็มที่จัดแพ็ก คำว่า «แบบมีระดับชั้น» หมายถึงรองรับวงจรที่มีความลึกสูงสุดคงที่ L โดยไม่ต้องใช้การบูตสแตรป
พื้นที่ข้อความธรรมดา
BGV และ BFV เข้ารหัสข้อความธรรมดาเป็นพหุนามใน Z_t[x]/(x^n+1) โดยที่ t เป็นมอดูลัสข้อความธรรมดาขนาดเล็ก (เช่น t=65537) พหุนามแต่ละตัวเข้ารหัสค่าจำนวนเต็ม n ค่า โดยมีหนึ่งค่าต่อสัมประสิทธิ์ การคำนวณบนข้อความเข้ารหัสจะดำเนินการกับค่าทั้ง n ค่าพร้อมกัน ซึ่งเป็นการประมวลผลแบบขนานด้วย SIMD
การจัดการสัญญาณรบกวนใน BGV
BGV ลดสัญญาณรบกวนด้วยการเปลี่ยนมอดูลัส: หลังการคูณแต่ละครั้ง มอดูลัสข้อความเข้ารหัส q จะลดจาก Q_L เป็น Q_{L-1} การดำเนินการนี้แบ่งสัญญาณรบกวนด้วย Q_L/Q_{L-1} ทำให้สัญญาณรบกวนยังอยู่ในขอบเขตที่ถอดรหัสได้ ความลึกของวงจร L สอดคล้องกับระดับมอดูลัสจำนวน L ระดับ
ภาพรวมของ BFV
BFV (Brakerski/Fan-Vercauteren, 2012) คล้ายกับ BGV แต่ใช้กลยุทธ์จัดการสัญญาณรบกวนที่ต่างกัน คือไม่ขึ้นกับมาตราส่วน BFV ไม่จำเป็นต้องเปลี่ยนมอดูลัส แต่จะปรับมาตราส่วนข้อความเข้ารหัสใหม่หลังการคูณ ซึ่งทำให้การนำไปใช้เรียบง่ายกว่า และมีการใช้งานใน Microsoft SEAL
การเข้ารหัสแบบกลุ่ม (ช่อง NTT)
ด้วยทฤษฎีบทเศษเหลือจีนบนวงแหวนข้อความธรรมดา ข้อความเข้ารหัสแต่ละชุดสามารถเก็บค่าจำนวนเต็มอิสระได้ n/2 ค่า (ช่อง) การดำเนินการบวกข้อความเข้ารหัสจะบวกค่าทั้ง n/2 คู่แบบขนาน การคูณจะคูณค่าทุกคู่ ปริมาณงาน: การดำเนินการจำนวนเต็ม n/2 ครั้งต่อการดำเนินการข้อความเข้ารหัสหนึ่งครั้ง
การทำให้เป็นเชิงเส้นใหม่หลังการคูณ
หลังจากคูณข้อความเข้ารหัสดีกรี 1 สองชุด ผลลัพธ์จะเป็นดีกรี 2 (มี 3 องค์ประกอบ) การทำให้เป็นเชิงเส้นใหม่ใช้กุญแจประเมินผล (กุญแจทำให้เป็นเชิงเส้นใหม่) เพื่อแปลงกลับเป็นดีกรี 1 โดยแลกกับสัญญาณรบกวนที่เพิ่มขึ้น ขั้นตอนนี้จำเป็นต้องทำหลังการคูณทุกครั้ง
ตัวอย่าง Python ด้วย SEAL
from seal import EncryptionParameters, scheme_type, SEALContext, KeyGenerator, Encryptor, Evaluator, Decryptor parms = EncryptionParameters(scheme_type.bfv) parms.set_poly_modulus_degree(4096) parms.set_coeff_modulus(CoeffModulus.BFVDefault(4096)) parms.set_plain_modulus(PlainModulus.Batching(4096, 20))
การหมุน
การหมุนข้อความเข้ารหัสจะเลื่อนช่องข้อความธรรมดา n/2 ช่องแบบวนรอบ มีประโยชน์สำหรับ: การลดรูปด้วยการหาผลรวม (สะสมค่าทุกช่องให้เหลือช่องเดียว) การคูณเมทริกซ์กับเวกเตอร์ (หมุนและสะสม) และการคอนโวลูชัน (เลื่อนและคูณ) จำเป็นต้องใช้กุญแจ Galois (กุญแจการหมุนที่คำนวณไว้ล่วงหน้า)
ประสิทธิภาพ
BFV ที่มี n=8192: การบวกประมาณ 10 µs การคูณประมาณ 5 ms (พร้อมการทำให้เป็นเชิงเส้นใหม่) การบูตสแตรป (หากจำเป็น): 30-60 วินาที กลุ่มจำนวนเต็ม 4096 ค่า: เฉลี่ยแล้วประมาณ 1 µs ต่อจำนวนเต็มต่อการคูณหนึ่งครั้ง ไม่เหมาะสำหรับการทำงานแบบเวลาจริง แต่ใช้ได้กับการวิเคราะห์แบบออฟไลน์
การเลือกพารามิเตอร์
การเลือก n และ q: SEAL แนะนำ n=4096 สำหรับความปลอดภัย 128 บิต โดยมี Q < 2^109 และ n=8192 สำหรับวงจรขนาดใหญ่ มาตรฐาน HE (homomorphicencryption.org) มีตารางพารามิเตอร์ให้ใช้งาน ควรใช้พารามิเตอร์ที่แนะนำเสมอ — การเลือกค่าเองอาจบั่นทอนความปลอดภัยได้ง่าย
กรณีการใช้งาน
การสืบค้นฐานข้อมูลที่เข้ารหัส (ค้นหาระเบียนที่เข้ารหัสโดยไม่ถอดรหัส) การวิเคราะห์จีโนมแบบส่วนตัว (คำนวณสถิติจาก DNA ที่เข้ารหัส) การรวมข้อมูลทางการเงินแบบเข้ารหัส (รวมยอดบัญชีที่เข้ารหัสโดยไม่เห็นข้อมูลของแต่ละบุคคล) การประเมินแบบจำลองอย่างปลอดภัย
ตรวจสอบความเข้าใจ
BGV ใช้เทคนิคใดเพื่อจัดการการเพิ่มขึ้นของสัญญาณรบกวนหลังการคูณ
สรุปทบทวน
BGV และ BFV ดำเนินการเลขคณิตจำนวนเต็มที่เข้ารหัสโดยใช้ RLWE การเข้ารหัสแบบกลุ่มช่วยให้ประมวลผลแบบขนานด้วย SIMD BGV ใช้การเปลี่ยนมอดูลัส ส่วน BFV ใช้การไม่ขึ้นกับมาตราส่วน การทำให้เป็นเชิงเส้นใหม่จะคืนค่าดีกรีหลังการคูณ ถัดไป: CKKS สำหรับเลขคณิตโดยประมาณและการเรียนรู้ของเครื่อง
เรียนรู้ Cryptology Academy ด้วย AI tutor — ฟรี
เขียนและเรียกใช้โค้ดจริงในเบราว์เซอร์ของคุณ รับความช่วยเหลือทันทีจาก AI tutor 24/7 และเรียนรู้ต่อจากที่คุณหยุดบนเว็บหรือในแอป
- คอร์ส
- 67
- บทเรียน
- 261
คำถามที่พบบ่อย
บทเรียน “รูปแบบ BGV และ BFV สำหรับการดำเนินการกับจำนวนเต็ม” ฟรีหรือไม่
ใช่ — ข้อความเต็มของ “รูปแบบ BGV และ BFV สำหรับการดำเนินการกับจำนวนเต็ม” ฟรีให้อ่านที่นี่บนเว็บ เพื่อปฏิบัติแบบโต้ตอบ (ตัวแก้ไขโค้ดในตัวและติวเตอร์ AI ตลอด 24/7) และปลดล็อคส่วนที่เหลือของคอร์ส Cryptology Academy ให้อัปเกรดเป็น CoddyKit PRO คอร์ส Cryptology Academy มีบทเรียนทั้งหมด 4 บทเรียน
คุณจะเรียนรู้อะไรในบทเรียน “รูปแบบ BGV และ BFV สำหรับการดำเนินการกับจำนวนเต็ม”
ดำเนินการบวกและคูณจำนวนเต็มที่เข้ารหัสโดยใช้ BGV คุณปฏิบัติ Cryptology Academy ด้วยโค้ดที่ใช้งานได้จริงที่คุณเรียกใช้โดยตรงในเบราว์เซอร์ และติวเตอร์ AI ตลอด 24/7 ตอบคำถามของคุณขณะที่คุณไปผ่านบทเรียน
คุณต้องมีประสบการณ์ก่อนที่จะเริ่มเรียน Cryptology Academy หรือไม่
ไม่จำเป็นต้องมีประสบการณ์มาก่อน Cryptology Academy บน CoddyKit ออกแบบมาสำหรับผู้เริ่มต้นไปจนถึงผู้เรียนขั้นสูง คุณสามารถเริ่มต้นที่นี่หรือเริ่มจากตัวแรกและเรียนด้วยความเร็วของคุณเอง นี่คือบทเรียนที่ 3 จากทั้งหมด 4 บทเรียน
บทเรียน “รูปแบบ BGV และ BFV สำหรับการดำเนินการกับจำนวนเต็ม” ใช้เวลานานแค่ไหน
บทเรียน CoddyKit ส่วนใหญ่ใช้เวลาประมาณ 5–10 นาที แต่ละบทเรียนจึงสั้นและเป็นแบบโต้ตอบ คุณสามารถก้าวหน้าอย่างต่อเนื่องและกลับมาเรียนต่อจากตรงที่เพิ่งหยุดบนเว็บและแอปได้เลย
ฉันเขียนและรันโค้ดในบทเรียน Cryptology Academy นี้ได้ไหม
ได้ บทเรียน Cryptology Academy ทุกบทมีตัวแก้ไขโค้ดในตัว คุณจึงเขียนและรันโค้ดจริงได้เลยในเบราว์เซอร์ และได้รับข้อเสนอแนะจาก AI ในทันที — ไม่ต้องติดตั้งในเครื่องของคุณ
บทเรียนทั้งหมดในหลักสูตรนี้
- การเข้ารหัสแบบโฮโมมอร์ฟิกคืออะไร
- รากฐาน Learning With Errors (LWE)
- รูปแบบ BGV และ BFV สำหรับการดำเนินการกับจำนวนเต็ม
- CKKS สำหรับเลขคณิตโดยประมาณและแมชชีนเลิร์นนิง