From c1304fb75165c46d2c968e1ab5a757360435cb40 Mon Sep 17 00:00:00 2001 From: Sun Yimin Date: Sun, 9 Jul 2023 13:38:14 +0800 Subject: [PATCH] =?UTF-8?q?Updated=20SM9=E5=AE=9E=E7=8E=B0=E5=8F=8A?= =?UTF-8?q?=E4=BC=98=E5=8C=96=20(markdown)?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- SM9实现及优化.md | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) diff --git a/SM9实现及优化.md b/SM9实现及优化.md index e32a170..2953c0b 100644 --- a/SM9实现及优化.md +++ b/SM9实现及优化.md @@ -4,6 +4,9 @@ 第一步自然是寻找参考实现,找了一下,[bn256](https://github.com/cloudflare/bn256),优点是:基域通过汇编实现了乘法、加法、减法等;完整的1-2-6-12塔式扩域;优化的pairing实现;完善的代码注释,可以容易找到参考文档。缺点是:SM9以1-2-4-12塔式扩域为准,基于bn256代码改造的实现很难验证正确性(尤其对于初始实现者来说)。 [gmssl sm9](https://github.com/guanzhi/GmSSL/blob/develop/src/sm9_alg.c),优点是:1-2-4-12塔式扩域;正确性。缺点是:纯c语言实现,基本无优化。 -第二步:以bn256为基础,基于SM9参数实现1-2-4-12塔式扩域。gfP和gfP2比较简单,改造程度不大,主要是添加测试,确保正确性。接着实现gfP4,gfP12,基础算法加、减、乘、平方相对容易,共轭Conjucate和 +第二步:以bn256为基础,基于SM9参数实现1-2-4-12塔式扩域。gfP和gfP2比较简单,改造程度不大,主要是添加测试,确保正确性。接着实现gfP4,gfP12,基础算法加、减、乘、平方相对容易,共轭Conjucate和Frobenius运算花了相对多一点时间。 + +第三步:参考sm9_alg.c和bn256,实现Pairing,这一步花了最多的时间。 +