Updated SM9实现及优化 (markdown)

Sun Yimin 2023-07-09 13:59:47 +08:00
parent 4e8e9536a5
commit 9d97a5ea25

@ -2,7 +2,7 @@
一个算法实现的最基本要求是正确性和SM2不同SM9规范中的示例都是用最终选定参数来做的这是SM9规范比SM2规范好的一面但这并没有减少其实现的复杂度。
第一步自然是寻找参考实现,找了一下,[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语言实现基本无优化。
[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比较简单改造程度不大主要是添加测试确保正确性。接着实现gfP4gfP12基础算法加、减、乘、平方相对容易共轭Conjucate和Frobenius运算花了相对多一点时间。