[發明專利]一種用于同態加密技術的大整數乘法器硬件電路有效
| 申請號: | 202011502986.4 | 申請日: | 2020-12-18 |
| 公開(公告)號: | CN112464296B | 公開(公告)日: | 2022-09-23 |
| 發明(設計)人: | 杜高明;曹紅芳;任宇翔;王曉蕾;李楨旻;張多利;宋宇鯤 | 申請(專利權)人: | 合肥工業大學 |
| 主分類號: | G06F21/72 | 分類號: | G06F21/72;G06F21/76 |
| 代理公司: | 安徽省合肥新安專利代理有限責任公司 34101 | 代理人: | 陸麗莉;何梅生 |
| 地址: | 230009 安*** | 國省代碼: | 安徽;34 |
| 權利要求書: | 查看更多 | 說明書: | 查看更多 |
| 摘要: | |||
| 搜索關鍵詞: | 一種 用于 同態 加密 技術 整數 乘法器 硬件 電路 | ||
1.一種用于同態加密技術的大整數乘法器硬件電路,其特征包括:數據存儲模塊、64K-NTT模塊、讀地址生成模塊、寫地址生成模塊、旋轉因子數據生成模塊和全局控制模塊;
所述數據存儲模塊接收外部輸入的兩個位寬為W位的多項式數據X1和X2,且所述多項式數據X1和X2為兩個大整數,按照基數H將所述多項式數據X1分割成z項位寬為w的原始數據Q1和z項位寬為w的填充零數據q1,將所述原始數據Q1存儲在第一存儲塊的隨機存儲器RAM_0中,將所述填充零數據q1存儲在第一存儲塊的隨機存儲器RAM_1中;
按照基數B將多項式數據X2分割成z項位寬為w的原始數據Q2和z項位寬為w的填充零數據q2,將所述原始數據Q2存儲在第二存儲塊的隨機存儲器RAM_0中,將所述填充零數據q2存儲在第二存儲塊的隨機存儲器RAM_1中;且z=N/2;N為所述多項式數據X1和X2的項數;
所述全局控制模塊發出使能信號;
所述讀地址生成模塊根據所述使能信號,生成讀存儲塊地址和標簽,從而根據所述讀存儲塊地址和標簽從所述數據存儲模塊中讀出多項式數據X1或X2并傳遞給64K-NTT模塊;
所述旋轉因子數據生成模塊根據所述使能信號生成正變換旋轉因子數據和反變換旋轉因子數據;
所述64K-NTT模塊根據所述正變換旋轉因子數據、反變換旋轉因子數據和所述多項式數據X1和X2,從所述多項式數據X1和X2中分別重復k次選取r個子項并與所述正變換旋轉因子數據一起依次進行正變換處理、取模、模乘、取模和轉置操作后依次得到k次結果所構成的數據集合Y#和T#,再將數據集合Y#和T#中的k次結果分別與所述反變換旋轉因子一起進行模乘和取模后再依次進行逆變換處理、取模、模乘、取模和轉置操作后相應輸出處理后的k次結果并構成數據集合R#;
所述寫地址生成模塊根據所述使能信號,生成寫存儲塊地址和標簽,從而根據所述寫存儲塊地址和標簽從64K-NTT模塊中將成數據集合R#寫入到數據存儲模塊中。
2.根據權利要求1所述的用于同態加密技術的大整數乘法器硬件電路,其特征是,所述64K-NTT模塊由16-NTT模塊、192位數據模減模塊、64位乘法器模塊、128位數據模減模塊以及數據轉置模塊組成;所述16-NTT模塊中包含4組16-NTT子模塊,每組16-NTT子模塊包含8個2-NTT模塊;所述64K-NTT模塊按如下過程進行數據處理:
步驟1、定義當前循環次數為j,并初始化j=1;
步驟2、16-NTT模塊對所述多項式數據X1進行正變換操作:
步驟2.1、定義變量i,并初始化i=1;
步驟2.2、第i組16-NTT子模塊從所述多項式數據X1中第j次選取r個子項并進行分組、索引、2-NTT并行計算和利用正旋轉因子數據移位操作,從而產生第i組r項位寬為3w的輸出數據Yi;
步驟2.3、第i+1組16-NTT子模塊對輸出數據Yi進行分組、索引、2-NTT并行計算和利用正旋轉因子數據移位操作,從而產生第i+1組r項位寬為3w的輸出數據Yi+1;
步驟3、所述192位數據模減模塊對所述輸出數據Yi進行模P處理,得到r項w位輸出數據Yi′;
步驟4、所述64位乘法器模塊對所述輸出數據Yi′、所述多項式數據X1中第j次選取的r個子項、所述正變換旋轉因子數據進行模乘得到r項位寬為2w位的輸出數據Yi″;
步驟5、所述128位數據模減模塊對所述輸出數據Yi″進行模P處理,得到r項位寬為w位的輸出數據Yi″′;
步驟6、所述數據轉置模塊對輸出數據Yi″進行轉置處理輸出數據Yi*;
步驟7、將i+1賦值給i后,判斷i4是否成立,若成立,則執行步驟8;否則,返回步驟2.3;
步驟8、將j+1賦值給j后,判斷jk是否成立,若成立,則將k次的輸出數據構成數據集合Y#中;否則,返回步驟2.1;
步驟9、按照步驟2-步驟8的處理過程,對所述多項式數據X2進行相同的處理,從而得到數據集合T#;
步驟10、初始化j=1;
步驟11、所述64位乘法器模塊對數據集合Y#和T#中第j次選取的r個子項和反變換旋轉因子數據進行模乘得到r項位寬為2w位的輸出數據R;
步驟12、所述128位數據模減模塊對輸出數據R進行模P處理,得到r項位寬為w位的輸出數據R′;
步驟13、16-NTT模塊對所述多項式數據X1進行逆變換操作:
步驟13.1、初始化i=1;
步驟13.2、第i組16-NTT子模塊對所述輸出數據R′進行分組、索引、2-NTT并行計算和利用反旋轉因子數據移位操作,從而產生第i組r項位寬為3w的輸出數據R″i;
步驟13.4、第i+1組16-NTT子模塊對輸出數據R″i進行分組、索引、2-NTT并行計算和利用反旋轉因子數據移位操作,從而產生第i+1組r項位寬為3w的輸出數據R″i+1;
步驟14、所述192位數據模減模塊對所述輸出數據R″i進行模P處理,得到r項w位輸出數據R″′i;
步驟15、所述64位乘法器模塊根據所述輸出數據R″′i、所述反變換旋轉因子數據進行模乘得到r項位寬為2w位的輸出數據
步驟16、所述128位數據模減模塊對所述輸出數據進行模P處理,得到r項位寬為w位的輸出數據
步驟17、所述數據轉置模塊對輸出數據進行轉置處理輸出數據
步驟18、將i+1賦值給i后,判斷i4是否成立,若成立,則執行步驟19;否則,返回步驟13.4;
步驟19、將j+1賦值給j后,判斷jk是否成立,若成立,則將k次的輸出數據構成數據集合R#中;否則,返回步驟11。
該專利技術資料僅供研究查看技術是否侵權等信息,商用須獲得專利權人授權。該專利全部權利屬于合肥工業大學,未經合肥工業大學許可,擅自商用是侵權行為。如果您想購買此專利、獲得商業授權和技術合作,請聯系【客服】
本文鏈接:http://www.szxzyx.cn/pat/books/202011502986.4/1.html,轉載請聲明來源鉆瓜專利網。





