From c652a75b3fcd06a4d37f8c46024a607df8964755 Mon Sep 17 00:00:00 2001 From: Sun Yimin Date: Thu, 22 Feb 2024 08:37:16 +0800 Subject: [PATCH] =?UTF-8?q?Created=20SM2=20MFMM=20=E7=BB=AD=20(markdown)?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- SM2-MFMM-续.md | 31 +++++++++++++++++++++++++++++++ 1 file changed, 31 insertions(+) create mode 100644 SM2-MFMM-续.md diff --git a/SM2-MFMM-续.md b/SM2-MFMM-续.md new file mode 100644 index 0000000..b8dfdc1 --- /dev/null +++ b/SM2-MFMM-续.md @@ -0,0 +1,31 @@ +## SM2 P256 P表示 +SM2 256 的素数P=0xfffffffeffffffffffffffffffffffffffffffff00000000ffffffffffffffff,也可以表示为 + +$P = 2^{256}-(2^{32} \ast 2^{192} + 0 \ast 2^{128} + (2^{32} - 1) \ast 2^{64} + 1)$ + +## 平方的模约减优化 +### 方案一 +假设: +$T=t_7 \ast 2^{448} + t_6 \ast 2^{384} + t_5 \ast 2^{320} + t_4 \ast 2^{256} + t_3 \ast 2^{192} + t_2 \ast 2^{128} + t_1 \ast 2^{64} + t_0 $ +则共四次约减,第一次约减为: + +$T_1=t_0$ + +$T_2=T_1 \ast P=t_0 \ast P= t_0 \ast (2^{256}-(2^{32} \ast 2^{192} + 0 \ast 2^{128} + (2^{32} - 1) \ast 2^{64} + 1))$ +$T_2=t_0 \ast 2^{256} - t_0 \ast 2^{32} \ast 2^{192} - t_0 \ast (2^{32} - 1) \ast 2^{64} - t_0$ + +$T_3=T + T_2=t_7 \ast 2^{448} + t_6 \ast 2^{384} + t_5 \ast 2^{320} + t_4 \ast 2^{256} + t_3 \ast 2^{192} + t_2 \ast 2^{128} + t_1 \ast 2^{64} + t_0 \ast 2^{256} - t_0 \ast 2^{32} \ast 2^{192} - t_0 \ast (2^{32} - 1) \ast 2^{64} - t_0 $ +$T_3=t_7 \ast 2^{448} + t_6 \ast 2^{384} + t_5 \ast 2^{320} + (t_4+t_0) \ast 2^{256}+(t_3 - t_0 \ast 2^{32}) \ast 2^{192} + t_2 \ast 2^{128} + (t_1 + t_0 - t_0 \ast 2^{32}) \ast 2^{64} $ + +先处理加法,后处理减法,后三个加法是带进位加法 +$t_1=t_0 + t_1$ +$t_2=t_2 + 0$ +$t_3=t_3 + 0$ +$t_0=t_0 + 0$ +t0,t2,t3会不会同时是0xffffffffffffffff呢?**这里没法给出证明**。 + +接着处理减法,假定a0是 $t_0 \ast 2^{32}$ 的低64位,a1是 $t_0 \ast 2^{32}$ 的高64位。后三个减法是带借位减法: +$t_1=t_1 - a_0$ +$t_2=t_2 - a_1$ +$t_3=t_3 - a_0$ +$t_0=t_0 - a_1$