RISC-V技术论坛
直播中

刘艳

8年用户 2502经验值
私信 关注
[经验]

NTT设计介绍

NTT(Number Theoretical Transform)
大数乘法是公钥加密系统中最为核心的模块,同时,也是RSA、全同态等加密方案里最耗时的模块,传统的按位乘法需要将一个输入数据的每一位去乘以另一个数据的每一位,其算法时间复杂度为。NTT可以看作是定义在有限域上的快速傅里叶变换,算法时间复杂度为它基于某个质数的单位原根的幂次方根进行运算,所有的操作都在有限域内进行,避免了频繁的浮点数运算,可有效提高乘法算法的计算速度和精度。
NTT可使用Gentleman-Sande蝶形变换实现,以正常顺序输入,以位反转顺序输出。N点的NTT运算由 级组成,每一级执行 次蝶形变换。因此,一个N点的NTT共执行 次蝶形变换,以下是8点NTT的信号流图:

对NTT进行硬件实现的步骤分以下四步:
1)索引计算  2)下载数据  3)执行蝶形计算  4)存储数据
步骤1和2中产生蝶形运算输入数据的读地址,并从存储器中读取数据;步骤3和4执行蝶形变换操作,并且使用在索引计算步骤期间生成的读取地址将输出数据写入存储器中。

更多回帖

发帖
×
20
完善资料,
赚取积分