อันดับแรก โปรดทราบว่า BFV นั้นใช้วลีแบบดั้งเดิมในแง่ของ เลขคณิต วงจร ไม่ใช่บูลีน
ตัวอย่างเช่น กระดาษเริ่มต้นมีพื้นที่ข้อความของแบบฟอร์ม $R_t := \mathbb{Z}_t[x] / (\Phi_n(x))$, ที่ไหน $\Phi_n$ คือ $n$พหุนามไซโคลโทมิก (เมื่อ $n$ เป็นพลังของสองนี้เป็นเพียง $x^n+1$).
สิ่งนี้ค่อนข้างสำคัญเนื่องจากเป็นส่วนประกอบพื้นฐานของวงจรเลขคณิต ไม่ OR และ AND แต่ (ตัวดัดแปลง $p$ รุ่นของ) XOR และ AND ซึ่งแตกต่างกันเล็กน้อย
สำหรับปัญหาของคุณเกี่ยวกับการคูณ BFV ฉันคิดว่าคุณกำลังอ่านข้อกำหนดของ BFV ผิดเล็กน้อย
โดยทั่วไป (กล่าวใน กระดาษเริ่มต้น) พื้นที่ข้อความถูกระบุว่าเป็น $R_t$ซึ่งดังที่กล่าวไปแล้วว่าเป็นวงแหวนพหุนาม (เมื่อ $n$ เป็นกำลังของ 2) $\bmod x^n+1$.
ดังนั้นเพื่อให้โครงร่างการเข้ารหัสของเราเป็นแบบโฮโมมอร์ฟิคอย่างสมบูรณ์ เราต้องการให้เราทำการบวกและการคูณได้ ของพื้นที่ข้อความ บนไซเฟอร์เท็กซ์
การคูณพื้นที่ข้อความนี้คือ $\bmod x^n+1$ (และ $\bmod t$แต่อะไรก็ตาม) ดังที่คุณได้ชี้ให้เห็น
นี่คือการบอกว่าเป็นเลขคณิต $\bmod x^n+1$ คือสิ่งที่จำเป็นทางคณิตศาสตร์สำหรับโครงร่างที่จะเป็นโฮโมมอร์ฟิคอย่างสมบูรณ์ ดังนั้นผลิตภัณฑ์ที่เป็นรูปแบบนั้นจึงเป็นสิ่งที่คาดหวังได้ และไม่น่ากังวล
แน่นอน ผู้ออกแบบแอปพลิเคชันอาจไม่ต้องการใช้ "เลขคณิตตลกๆ" นี้
นี่เป็นสิ่งที่นักออกแบบห้องสมุดต้องแก้ไขในภายหลัง
ตัวอย่างเช่น วิธีหนึ่งในการ "แก้ไข" สิ่งนี้ (ซึ่งค่อนข้างไร้เดียงสา --- ฉันเดาว่ามีวิธีแก้ไขที่ดีกว่านี้) คือการเข้ารหัสข้อความให้เป็นค่าคงที่ของพหุนามเท่านั้น
ควรจะค่อนข้างตรงไปตรงมาเพื่อดูว่า "การคูณแบบตลก" นี้กลายเป็นการคูณมาตรฐานเมื่อจำกัดเฉพาะพหุนามค่าคงที่
มีสิ่งอื่นที่เราสามารถทำได้ เช่น เราสามารถใช้พหุนามของรูปแบบได้ $m(x) = m_0+m_1x$ หากคุณทราบความลึกของการทวีคูณของวงจรที่คุณกำลังประเมินนั้นมีค่ามากที่สุด $\log_2 n$หรือมากกว่านั้นโดยทั่วไป $m(x) = \sum_{i =0}^p m_i x^i$ ถ้าความลึกทวีคูณมากที่สุด $\log_{1+p} n$.
นี่เป็นเพียงเพราะขอบเขตความลึกนี้ เราไม่สามารถสร้างพหุนามของดีกรีได้ $\geqn$ดังนั้นข้อเท็จจริงที่ว่าการคูณอาจ "วนรอบ" จึงไม่สำคัญ
แน่นอน ฉันแน่ใจว่ามีแนวคิดที่ชาญฉลาดกว่าในสิ่งที่เราสามารถทำได้เพื่อเลียนแบบเลขคณิต "มาตรฐาน" กับเลขคณิต "ตลกๆ" ที่เราได้รับ แต่นั่นก็เป็นการทำความเข้าใจ BFV แบบตั้งฉากจริงๆ
มันคือ อีกด้วย มูลค่าการกล่าวขวัญว่าความคิดเห็นของคุณ
แต่ต้องเป็นค่าสัมประสิทธิ์และพหุนาม ไม่ใช่สำหรับพหุนามเอง
ดูเหมือนว่าคุณอาจกำลังมองหาแนวคิดของ การฝังแบบบัญญัติ.
โดยเฉพาะอย่างยิ่ง เมื่อประมาณ 10 ปีที่แล้ว เราสังเกตเห็นว่าหากเราต้องการประเภทข้อมูลแบบอาร์เรย์ $[a_0,\dots,a_n]$ ที่ใคร ๆ ก็สามารถคำนวณเลขคณิตได้ (ฉลาดแบบสล็อต) ดังนั้นค่าสัมประสิทธิ์ของพหุนามจึงเป็นตัวเลือกที่แย่มาก
นี่เป็นเพราะ (เหนือสิ่งอื่นใด) การคูณตามธรรมชาติของพหุนามไม่ได้นำไปสู่การคูณของค่าสัมประสิทธิ์พื้นฐาน แต่ บิด ของพวกเขา.
โดยเฉพาะอย่างยิ่งหนึ่งมีที่
$$(a_0+a_1x+a_2x^2)(b_0+b_1x+b_2x^2) = a_0b_0+(a_0b_1+b_0a_1)x + (a_0b_2+a_1b_1+a_2b_0)x^2+(a_1b_2+a_2b_1) x^3+a_2b_2x ^4$$
โดยเฉพาะเจ้าหนึ่งไม่รับคืนสินค้า $a_1b_1$.
เราสามารถแก้ไขปัญหานี้ได้โดย (เป็นหลัก) ดึงดูดเวอร์ชันของการแปลงฟูริเยร์ เนื่องจากโดยทั่วไปแล้วการแปลงฟูริเยร์สามารถเขียนเป็น isomorphism
$$\mathcal{F} : (R, +,\times)\to (R, +,\ast)$$
เช่น. มัน "สลับ" การบิดเบี้ยวด้วยการคูณ (ค่าสัมประสิทธิ์ที่ชาญฉลาด)
กล่าวคือหากเราเข้ารหัสข้อความใน "การฝังแบบบัญญัติ" แทน (หรือในทำนองเดียวกัน เราเข้ารหัส "การแปลงฟูริเยร์" ของข้อความ) การบิดจะกลายเป็นการคูณแบบองค์ประกอบ (ในพื้นที่ข้อความของเรา)
ฉันไม่เชื่อว่าเอกสาร BFV เริ่มต้นจะทำเช่นนี้ ซึ่งขึ้นอยู่กับสิ่งที่คุณกำลังอ่านสำหรับข้อกำหนดของ BFV อาจทำให้เกิดความสับสน
แต่ฉันเชื่อว่ามันเป็นการเพิ่มประสิทธิภาพที่ค่อนข้างธรรมดา และควรจะสามารถถูกมองว่าเป็น "แค่" การเข้ารหัสข้อความอื่น (มีประโยชน์อื่นๆ ในการใช้การฝังแบบบัญญัติซึ่งคุณจะต้องการวิเคราะห์โปรโตคอลใหม่ในแง่ของมัน)