From 1aa9dfcce92cc455d37d38a28803edbc166e8af1 Mon Sep 17 00:00:00 2001 From: Sun Yimin Date: Wed, 21 Feb 2024 17:00:49 +0800 Subject: [PATCH] Updated MFMM (markdown) --- MFMM.md | 22 +++++++++++++++++++--- 1 file changed, 19 insertions(+), 3 deletions(-) diff --git a/MFMM.md b/MFMM.md index 6bcb0e8..fdd185f 100644 --- a/MFMM.md +++ b/MFMM.md @@ -2,9 +2,6 @@ MFMM=[Montgomery Friendly modules Montgomery Multiplication](https://eprint.iacr 首先NIST P256 / SM2 256 的素数P都是Montgomery Friendly modules。 -SM2 256 的素数P=0xfffffffeffffffffffffffffffffffffffffffff00000000ffffffffffffffff,也可以表示为 - -$P = 2^{256}-(2^{32} \ast 2^{192} + 0 \ast 2^{128} + (2^{32} - 1) \ast 2^{64} + 1)$ 输入: X, Y都是Montgomery数值表示 @@ -285,3 +282,22 @@ acc0, acc1, acc2, acc3, acc4, acc5是64位寄存器 BenchmarkMoreThan32_P256SM2-2 4550 263296 ns/op PASS ok github.com/emmansun/gmsm/sm2 4.753s + +### 续 +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} $ +