[發明專利]一種適合SM2算法的快速模約減方法和介質有效
| 申請號: | 201711383428.9 | 申請日: | 2017-12-20 |
| 公開(公告)號: | CN108418687B | 公開(公告)日: | 2022-02-08 |
| 發明(設計)人: | 何德彪;陳泌文;謝翔;李升林;孫立林 | 申請(專利權)人: | 矩陣元技術(深圳)有限公司 |
| 主分類號: | H04L9/30 | 分類號: | H04L9/30 |
| 代理公司: | 上海專利商標事務所有限公司 31100 | 代理人: | 施浩 |
| 地址: | 518054 廣東省深圳*** | 國省代碼: | 廣東;44 |
| 權利要求書: | 查看更多 | 說明書: | 查看更多 |
| 摘要: | |||
| 搜索關鍵詞: | 一種 適合 sm2 算法 快速 模約減 方法 介質 | ||
1.一種適合SM2算法的快速模約減方法,其特征在于,針對SM2橢圓曲線公鑰算法推薦參數計算模約減,用于SM2算法的快速實現,方法包括:
通過數據轉換得到轉換數據,將512比特數模SM2橢圓曲線推薦參數問題轉化為計算若干個256比特數的線性組合;
通過拆分負數項和多倍項將轉換數據拆分,并用拆分數據表示轉換數據,以使每個256比特數易于表示;
通過重組整合拆分數據,降低加法或減法個數;
通過計算若干個256比特數的和,完成512比特數模SM2橢圓曲線推薦參數模約減的計算;
其中,數據轉換的步驟進一步包括:
步驟1.1,將c modp256進行轉化,
其中p256=2256-2224-296+264-1,輸入整數且可表示為c=(c2t-1,...,c2,c1,c0),
其中t=8
步驟1.2,將步驟1.1中的I2modp256進行轉化,
I2modp256=([(c15,c14,c13,c12,c11,c10,c9,0,0,0,0,0,0,0,0,0)]modp256+[(0,0,0,0,0,0,0,c8,0,0,0,0,0,0,0,0)]modp256-c8p256modp256)modp256
=([(c15,c14,c13,c12,c11,c10,c9,0,0,0,0,0,0,0,0,0)]modp256+[(c8,0,0,0,c8,-c8,0,c8)]modp256)modp256
=(I3modp256+R2modp256)modp256;
步驟1.3,將步驟1.2中的I3modp256進行轉化,
I3modp256=([(c15,c14,c13,c12,c11,c10,0,0,0,0,0,0,0,0,0,0)]modp256+[(0,0,0,0,0,0,c9,0,0,0,0,0,0,0,0,0)]modp256-232c9p256modp256-c9p256modp256)modp256
=([(c15,c14,c13,c12,c11,c10,0,0,0,0,0,0,0,0,0,0)]modp256+[(c9,0,0,c9,0,-c9,c9,c9)]modp256)modp256
=(I4modp256+R3modp256)modp256
步驟1.4,將步驟1.3中的I4modp256進行轉化,
I4modp256=([(c15,c14,c13,c12,c11,0,0,0,0,0,0,0,0,0,0,0)]modp256+[(0,0,0,0,0,c10,0,0,0,0,0,0,0,0,0,0)]modp256-264c10p256modp256-232c10p256modp256-c10p256modp256)modp256
=([(c15,c14,c13,c12,c11,0,0,0,0,0,0,0,0,0,0,0)]modp256+[(c10,0,c10,0,0,0,c10,c10)]modp256)modp256
=(I5modp256+R4modp256)modp256;
步驟1.5,將步驟1.4中的I5modp256進行轉化,
I5modp256=([(c15,c14,c13,c12,0,0,0,0,0,0,0,0,0,0,0,0)]modp256+[(0,0,0,0,c11,0,0,0,0,0,0,0,0,0,0,0)]modp256-296c11p256modp256-264c11p256modp256-232c11p256modp256-c11p256modp256)modp256
=([(c15,c14,c13,c12,0,0,0,0,0,0,0,0,0,0,0,0)]modp256+[(c11,c11,0,0,c11,0,c11,c11)]modp256)modp256
=(I6modp256+R5modp256)modp256;
步驟1.6,將步驟1.5中的I6modp256進行轉化,
I6modp256=([(c15,c14,c13,0,0,0,0,0,0,0,0,0,0,0,0,0)]modp256+[(0,0,0,c12,0,0,0,0,0,0,0,0,0,0,0,0)]modp256-2128c12p256modp256-296c12p256modp256-264c12p256modp256-232c12p256modp256-c12p256modp256)modp256
=([(c15,c14,c13,0,0,0,0,0,0,0,0,0,0,0,0,0)]modp256+[(2c12,0,0,c12,c12,0,c12,c12)]modp256)modp256
=(I7modp256+R6modp256)modp256;
步驟1.7,將步驟1.6中的I7modp256進行轉化,
I7modp256=([(c15,c14,0,0,0,0,0,0,0,0,0,0,0,0,0,0)]modp256+[(0,0,c13,0,0,0,0,0,0,0,0,0,0,0,0,0)]modp256-2160c13p256modp256-2128c13p256modp256-296c3p256modp256-264c13p256modp256-232c13p256modp256-c13p256modp256)modp256
=([(c15,c14,0,0,0,0,0,0,0,0,0,0,0,0,0,0)]modp256+[(2c13,0,c13,c13,2c13,-c13,c13,2c13)]modp256)modp256
=(I8modp256+R7modp256)modp256;
步驟1.8,將步驟1.7中的I8modp256進行轉化,
I8modp256=([(c15,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0)]modp256+[(0,c14,0,0,0,0,0,0,0,0,0,0,0,0,0,0)]modp256-2192c14p256modp256-2160c14p256modp256-2128c14p256modp256-296c14p256modp256-264c14p256modp256-232c14p256modp256-c14p256modp256)modp256
=([(c15,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0)]modp256+[(2c14,c14,c14,2c14,c14,-c14,2c14,2c14)]modp256)modp256
=(I9modp256+R8modp256)modp256;
步驟1.9,將步驟1.8中的I9modp256進行轉化,
I9modp256=([(c15,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0)]modp256-2224c15p256modp256-2192c15p256modp256-2160c15p256modp256-2128c15p256modp256-296c15p256modp256-264c15p256modp256-232c15p256modp256-c15p256modp256)modp256
=[(3c15,c15,2c15,c15,c15,0,2c15,2c15)]modp256
=R9modp256;
根據上述步驟1.1至步驟1.9的轉換過程,最后用轉換數據(R1,R2,...,R9)表示c modp256:
c modp256=(R1+R2+R3+R4+R5+R6+R7+R8+R9)modp256;
其中,重組整合拆分數據的過程中確保對應位置相的和不發生變化,其步驟進一步包括:
c modp256=(R1+t2+t3+R4+R5+T1+T2+T3+T4+T5+T6+T7+T8-s2-s3-s7-s8)modp256
=[(c7,c6,c5,c4,c3,c2,c1,c0)+(c8,0,0,0,c8,0,0,c8)+(c9,0,0,c9,0,0,c9,c9)+(c10,0,c100,0,0,c10,c10)+(c11,c11,0,0,c11,0,c11,c11)++2(c14,0,c15,c14,c13,0,c15,c14)+2(c12,0,0,0,0,0,c14,c13)+(0,0,0,c12,c120,c12,c12)+(c13,0,c13,c13,0,0,c13,0)+(c13,c14,c14,0,c14,0,0,0)+(c15,c15,0,c15,c15,0,0,0)+(c15,0,0,0,0,0,0,c15)+(c15,0,0,0,0,0,0,c15)-(0,0,0,0,0,c8,0,0)-(0,0,0,0,0,c9,0,0)-(0,0,0,0,0,c13,0,0)-(0,0,0,0,0,c14,0,0)]modp256
=[s0+s1+s4+s5+s6+2s9+2s10+s11+s12+s13+s14+2s15-s2-s3-s7-s8]modp256;
根據上述拆分過程,最后用重組整合數據表示c modp256:
c modp256=[s0+s1+s4+s5+s6+2s9+2s10+s11+s12+s13+s14+2s15-s2-s3-s7-s8]modp256。
該專利技術資料僅供研究查看技術是否侵權等信息,商用須獲得專利權人授權。該專利全部權利屬于矩陣元技術(深圳)有限公司,未經矩陣元技術(深圳)有限公司許可,擅自商用是侵權行為。如果您想購買此專利、獲得商業授權和技術合作,請聯系【客服】
本文鏈接:http://www.szxzyx.cn/pat/books/201711383428.9/1.html,轉載請聲明來源鉆瓜專利網。





