15、面向硬件的雅可比计算算法解析

AI助手已提取文章相关产品:

面向硬件的雅可比计算算法解析

1. 算法基础与原理

在数学计算中,定义了函数 $Q(u, v)$,它用于计算 $u$ 除以 $v$ 的商。当 $Q(b_3, a_3)$ 中,由于 $\text{deg } b_3 < \text{deg } a_3$,所以 $Q(b_3, a_3)$ 等于 0,进而得出 $a_4 = Q(b_3^2, a_3) + Q(f, a_3)$。设 $b_3$ 除以 $a_1$ 的结果为 $q + \frac{r}{a_1}$,其中 $q$ 是商多项式,$r$ 是余数多项式。因为特征为 2,所以有 $b_3^2 / a_1^2 = q^2 + (r_1^2 / a_1^2)$。将这两个等式结合,可得到 $a_4 = q^2 + Q(f, a_3)$。

以曲线 $C: y^2 + y = x^7 / GF(2)$(亏格为 3)为例,展示相关算法的应用。下面是“加倍”算法(Algorithm 4)的具体内容:

Algorithm 4 (Doubling)
Input
a1,
b1
Output
a’, b’
a3 = a1^2     
Step D1’
b3 = b1^2 + x(a1 - x^3)^2
q = Q(b3, a1) 

Step D2’
a4 = q^2 + Q(f,a3)
a4 = a4/(leading coefficient of a4)
b4 = (b3 + 1) mod a4
a’ = a4; b’ = b4;
while(deg a4 > g) {
Step D3’
a5 = Q(x^7 + b4^2,a4)
a5 = a5/(Leading Coefficient of a5)
b5 =(b4 + 1) mod a5
a’ = a5; b’ = b5;
a4 = a5; b4 = b5;
}
Return[a’, b’]
End

在计算 $b_3$ 时,用到了 $f \text{ mod } a_3 = x (a_1 - x^3)^2$ 和 $b_1^2 \text{ mod } a_3 = b_1^2$。从硬件实现的角度看,由于平方运算符的硬件规模小于寄存器,所以存储 $a_3$ 和 $b_3$ 的寄存器并非必需。如果硬件具备平方运算功能,可忽略步骤 D1’,即多项式 $a_3$ 和 $b_3$ 的计算。此外,因为基域的特征为 2,$q^2$ 的计算仅需平方运算,$a_4$ 的计算也得以简化。

2. 新算法的计算复杂度

为研究硬件实现情况,使用 $m$ 和 $M$ 两种符号表示乘法。假设硬件有 $(2g + 1)$ 个伽罗瓦域乘法器,能同时执行 $(2g + 1)$ 次乘法。用 $M$ 表示硬件上的执行,$m$ 表示乘法本身,$I$ 表示求逆。通过 $m$、$M$ 和 $I$ 估算计算复杂度,忽略平方运算。以亏格为 3 的曲线 $C: y^2 + y = x^7 / GF(2)$ 对应的 $JC(GF(2^{59}))$ 和亏格为 6 的曲线 $C: y^2 + y = x^{13} + x^{11} + x^7 + x^3 + 1 / GF(2)$ 对应的 $JC(GF(2^{29}))$ 这两个雅可比簇为例进行估算,结果如下表所示:
| 计算内容 | 计算时间 | 计算时间(硬件) | 处理时间(硬件) |
| — | — | — | — |
| g = 3 加法 | | | |
| GCD | 3I + 23m | 3I + 9M | 3t(I) + 9t(M) |
| Step A1’ | 15m | 4M | 4t(M) |
| a4 | I + 20m | I + 6M | t(I) + t(M) |
| Step A2’ - b4 | 17m | 5M | 5t(M) |
| a5 | 3m | 2M | 2t(M) |
| Step A3’ - b5 | 3m | M | t(M) |
| 总计 | 4I + 81m | 4I + 27M | 4t(I) + 22t(M) |
| g = 3 加倍 | | | |
| q | 3m | 2M | 0 |
| a4 | I + 2m | I + M | t(I) + t(M) |
| Step D2’ - b4 | 8m | 2M | 2t(M) |
| a5 | 3m | 2M | 2t(M) |
| Step D3’ - b5 | 3m | M | t(M) |
| 总计 | I + 19m | I + 8M | t(I) + 6t(M) |
| g = 6 加法 | | | |
| GCD | 6I + 86m | 6I + 21M | 6t(I) + 21t(M) |
| Step A1’ | 66m | 6M | 6t(M) |
| a4 | I + 85m | I + 11M | 11t(M) |
| Step A2’ - b4 | I + 56m | 6M | 6t(M) |
| a5 | I + 44m | I + 9M | 9t(M) |
| Step A3’ - b5 | 16m | 2M | 2t(M) |
| a6 | I + 27m | I + 7M | t(I) + t(M) |
| Step A3’ - b6 | 12m | 2M | 2t(M) |
| 总计 | 9I + 392m | 9I + 64M | 7t(I) + 58t(M) |
| g = 6 加倍 | | | |
| q | 15m | 5M | 0 |
| a4 | I + 5m | I + M | t(I) + t(M) |
| Step D2’ - b4 | 20m | 2M | 2t(M) |
| a5 | I + 44m | I + 9M | 9t(M) |
| Step D3’ - b5 | 16m | 2M | 2t(M) |
| a6 | I + 27m | I + 7M | t(I) + t(M) |
| Step D3’ - b6 | 12m | 2M | 2t(M) |
| 总计 | 3I + 139m | 3I + 28M | 2t(I) + 17t(M) |

这里,$t(M)$ 和 $t(I)$ 分别表示乘法和求逆的处理时间。不同表格有不同的假设条件,如在表 1 中假设 $t(I) > 5t(M)$ 且 $a_4$ 的计算和求逆可同时执行;在表 2 中假设 $t(I) > 2t(M)$ 且 $q$ 的计算和求逆可同时执行等。采用相关方法时,这些假设均成立。将 $t(I) = 8t(M)$ 或 $t(I) = 6t(M)$ 应用到上述表格,可得到如下结果:
| 计算情况 | 计算时间 | 处理时间 |
| — | — | — |
| g = 3 加法 | 113m (4I + 81m) | 54t(M) |
| g = 3 加倍 | 27m (I + 19m) | 14t(M) |
| g = 6 加法 | 446m (9I + 392m) | 100t(M) |
| g = 6 加倍 | 157m (3I + 139m) | 29t(M) |

从这些数据可以看出,处理时间与亏格成正比,而计算时间与亏格的平方或更高阶成正比。与软件实现的情况相比,该算法在总计算时间和总处理时间上都有明显优势。例如,在亏格为 3 的加法和加倍计算中,该算法在总计算时间上分别快 3.5 倍和 10 倍,在总处理时间上分别快 7 倍和 19 倍。

假设 $k$ 有 160 位,加倍次数为 160,加法次数为 80,计算 $kD$ 在雅可比簇中的时间结果如下表:
| 乘法时钟数 | 工作频率 | Case A(t(M) = 8clocks) | Case B(t(M) = 1clock) |
| — | — | — | — |
| g = 3 | 20 MHz | 2.624 ms | 0.328 ms |
| g = 3 | 40 MHz | 1.312 ms | 0.164 ms |
| g = 3 | 80 MHz | 0.656 ms | 0.082 ms |
| g = 6 | 20 MHz | 5,056 ms | 0.632 ms |
| g = 6 | 40 MHz | 2.528 ms | 0.316 ms |
| g = 6 | 80 MHz | 1.264 ms | 0.158 ms |

为估算硬件实现的时间,引入了两个参数:硬件的工作频率和乘法操作的时钟数。

3. 硬件实现 - 硬件效率

在硬件实现方面,主要估算最大工作频率和硬件规模。以表 6 中的两种情况进行对比:g = 3 Case A 乘法和 g = 6 Case B 乘法。GF(2^n) 算术运算具有以下优点:
1. 乘法和加法可以用少量硬件实现。
2. 2^n 幂运算(n = 1, 2, …)非常简单。使用正规基时,仅需位移位操作;即使使用多项式基,硬件规模也较小。

因此,伽罗瓦域算术单元无需定制设计方法,采用门阵列方法设计即可。使用 VHDL 设计硬件,并使用 IBM 的 Booledozer 和 Model Technology 的 ModelSim 进行仿真。电路采用 IBM CMOS 5SE 门阵列技术进行综合,有效沟道长度 $L_{eff} = 0.27 - \mu m$。GF(2^{59}) 和 GF(2^{29}) 中没有最优基,分别取 $p(x) = x^{59} + x^6 + x^5 + x^4 + x^3 + x + 1$ 或 $p(x) = x^{29} + x^2 + 1$ 作为伽罗瓦域的本原多项式。

设计和综合结果如下表所示:
| 模块 | g = 3 Case A 大小(单元) | g = 6 Case B 大小(单元) |
| — | — | — |
| 乘法器 | 34265 [7] | 66196 [13] |
| 平方运算符 | 1344 [3] | 495 [11] |
| 求逆运算符 | 27414 [1] | 8580 [1] |
| 寄存器 | 18408 [59bit x26] | 17400 [29bit x50] |
| 控制 | 9749 | 7395 |
| 寄存器选择器 | 37140 | 53939 |
| 运算符选择器 | 17402 | 16851 |
| 总计 | 145722 | 170856 |
| (优化后) | 140647 | 165743 |

表中括号内的数字表示伽罗瓦域算术单元。寄存器块有 $4g$ 个寄存器用于存储输入多项式,由 $(8g + 2)$ 个系数寄存器组成,两种情况的寄存器总位数相近。g = 3/Case A 中一个乘法器的单元大小为 4895,g = 6/case B 中为 5092,数值相近但实现方式不同。Case A 中的乘法器有寄存器,采用除法电路逐字节计算输入;Case B 中的乘法器无寄存器,采用位并行方式。在亏格为 3 的情况下,GF(2^{59}) 乘法器在 $t(M) = 1$ 时单元大小约为 20K 单元,若使用 Case B 的乘法器,总单元大小约为 250K 单元。从表 6 和表 7 的数据可知,g = 6/Case B 的总规模比 g = 3/Case A 大 25K 单元左右,但计算时间缩短了四倍。

有公式可估算加法和加倍时的乘法和求逆运算次数。当 $g \leq 10$ 时,公式使用高斯约简,首项次数为 3;当 $g \geq 12$ 时,使用勒让德约简,首项次数为 2。由于 3 次项系数较小,2 次项占主导,所以乘法运算次数可近似为 $o(g^2)$。

为分析硬件效率与曲线亏格的关系,仅考虑伽罗瓦域乘法器,忽略电路其他部分。将效率定义为速度除以(硬件规模 * 功耗)。设 $n$ 为曲线定义所在基域的扩展次数,$n$ 与 $1/g$ 成正比。由于一个乘法器的功耗与 $n^2$ 成正比,乘法次数与 $g^2$ 成正比,所以总功耗与 $g$ 无关。Case B 乘法器的延迟与 $\log_2 n$ 成正比,在无并行操作时,计算时间与 $g^2 \log_2 n$ 成正比。因此,效率与 $1 / \log_2 [C/g]$ 成正比(C 为常数,$C/g$ 为 $n$)。该函数在 $g$ 较小时($g > 0$)缓慢增加,所以效率随 $g$ 的变化不大。表 7 中的数据与这一结果相符。例如,g = 3/Case B 乘法器的规模约为 160K 单元,g = 6/Case B 为 70K 单元,g = 6/Case B 的计算时间是 g = 3/Case B 的两倍。由于可认为两种情况的总功耗相同,所以效率值相近。但无法设计出在任何速度下规模和速度乘积都恒定的乘法器,仅考虑乘法器时,g = 6/Case B 的效率是 g = 3/Case A 的 2.3 倍。

下面是一个简单的 mermaid 流程图,展示算法 4 的主要步骤:

graph TD;
    A[输入 a1, b1] --> B[a3 = a1^2];
    B --> C[Step D1’: b3 = b1^2 + x(a1 - x^3)^2];
    C --> D[q = Q(b3, a1)];
    D --> E[Step D2’: a4 = q^2 + Q(f,a3)];
    E --> F[a4 = a4/(leading coefficient of a4)];
    F --> G[b4 = (b3 + 1) mod a4];
    G --> H{a’ = a4; b’ = b4; deg a4 > g?};
    H -- 是 --> I[Step D3’: a5 = Q(x^7 + b4^2,a4)];
    I --> J[a5 = a5/(Leading Coefficient of a5)];
    J --> K[b5 =(b4 + 1) mod a5];
    K --> L{a’ = a5; b’ = b5; a4 = a5; b4 = b5; deg a4 > g?};
    L -- 是 --> I;
    L -- 否 --> M[返回 [a’, b’]];
    H -- 否 --> M;
4. 硬件实现 - 与其他密码系统的效率比较

接下来比较超椭圆曲线密码系统与其他密码系统的效率。RSA 硬件实现的结果有相关报道,下面是 512 位密钥 RSA 的性能总结:
| 来源 | 规模 | 计算时间(@20MHz) |
| — | — | — |
| [HTAAA90] | 1050Kbit RAM + 305K 门 | 2.0ms |
| [IMI92] | 198K 门 | 2.5ms |
| [SKNOM97] | - | 14.0ms |

为了与 160 位密钥的 ECC(椭圆曲线密码系统)达到相同的安全级别,需要对比 1024 位密钥的 RSA。假设计算时间与密钥长度的平方成正比,将上述表格中的时间乘以 4。结合之前的表格数据可知,超椭圆曲线密码系统在速度上比 RSA 快 3 倍(g = 3/case A)或 12.6 倍(g = 6/case B),并且规模更小。

对于椭圆曲线密码系统,其计算比 RSA 更复杂,常采用提供基本伽罗瓦域算术的协处理器方法实现。有报道称,在 20MHz 工作频率下,22K 门的硬件计算 kD 的平均处理时间为 32ms。与之相比,当使用 Case B 乘法器且频率为 20MHz 时,亏格为 3 或 6 的超椭圆曲线密码系统速度大约快 50 倍或 100 倍,不过规模大 8 倍或 12 倍。

在椭圆曲线密码系统中,乘法和求逆运算次数已有深入研究。IEEE P1363 提出了雅可比坐标。在二进制情况下,计算射影椭圆加法和加倍分别需要 15 次和 5 次乘法。假设 160 位密钥的椭圆曲线密码系统硬件有寄存器且只有一个乘法器,使用正规基计算需一个时钟周期,由于乘法器规模大于 256K 单元,四个输入和三个工作寄存器规模至少 14K 单元,所以硬件规模会超过 270K 单元。与 g = 3/Case B 相比,椭圆曲线密码系统规模更大,但速度大约快 3.3 倍,因为超椭圆密码系统加法的乘法次数为 54t(M),而 ECC 为 15t(M)。

此前从软件实现角度比较超椭圆曲线密码系统与 RSA 和椭圆曲线密码系统的性能,结果表明超椭圆曲线密码系统效率优于 RSA,但不如椭圆曲线密码系统,这与本次硬件实现的分析结果相符。

下面的 mermaid 流程图展示了不同密码系统效率比较的主要流程:

graph TD;
    A[选择密码系统类型] --> B{RSA 或 ECC 或 超椭圆曲线密码系统};
    B -- RSA --> C[获取 512 位密钥 RSA 性能数据];
    C --> D[计算 1024 位密钥 RSA 计算时间];
    D --> E[与超椭圆曲线密码系统比较速度和规模];
    B -- ECC --> F[获取 ECC 硬件计算 kD 性能数据];
    F --> G[与超椭圆曲线密码系统比较速度和规模];
    B -- 超椭圆曲线密码系统 --> H[使用之前算法计算性能数据];
    H --> E;
    H --> G;
5. 总结与展望

综合上述分析,对于小亏格的曲线,硬件效率几乎相同。并且可以使用所提出的算法设计硬件,无需对当前半导体技术提出不合理的条件。也就是说,只要曲线亏格小于 5,就可以选择任意亏格的曲线,通过硬件手段以相同的努力实现相同级别的安全。这为超椭圆曲线密码系统的应用提供了有力的支持。

未来,可以进一步研究如何优化算法,以提高超椭圆曲线密码系统在不同硬件环境下的性能。例如,探索更高效的乘法和求逆算法,或者改进硬件架构以减少功耗和提高计算速度。此外,还可以研究超椭圆曲线密码系统在新兴领域(如物联网、区块链等)的应用,以充分发挥其优势。

以下是一个总结表格,对比不同密码系统的特点:
| 密码系统 | 速度优势 | 规模特点 | 应用场景 |
| — | — | — | — |
| 超椭圆曲线密码系统(g = 3/case A) | 比 RSA 快 3 倍 | 规模较小 | 对速度和规模有一定要求的场景 |
| 超椭圆曲线密码系统(g = 6/case B) | 比 RSA 快 12.6 倍 | 规模稍大但计算时间大幅缩短 | 对速度要求较高的场景 |
| 椭圆曲线密码系统 | 比超椭圆曲线密码系统(g = 3/Case B)快 3.3 倍 | 规模较大 | 对速度要求极高的场景 |
| RSA | 速度相对较慢 | 规模因密钥长度而异 | 传统的加密场景 |

您可能感兴趣的与本文相关内容

【电能质量扰动】基于ML和DWT的电能质量扰动分类方法研究(Matlab实现)内容概要:本文研究了一种基于机器学习(ML)和离散小波变换(DWT)的电能质量扰动分类方法,并提供了Matlab实现方案。首先利用DWT对电能质量信号进行多尺度分解,提取信号的时频域特征,有效捕捉电压暂降、暂升、中断、谐波、闪变等常见扰动的关键信息;随后结合机器学习分类器(如SVM、BP神经网络等)对提取的特征进行训练与分类,实现对不同类型扰动的自动识别与准确区分。该方法充分发挥DWT在信号去噪与特征提取方面的优势,结合ML强大的模式识别能力,提升了分类精度与鲁棒性,具有较强的实用价值。; 适合人群:电气工程、自动化、电力系统及其自动化等相关专业的研究生、科研人员及从事电能质量监测与分析的工程技术人员;具备一定的信号处理基础和Matlab编程能力者更佳。; 使用场景及目标:①应用于智能电网中的电能质量在线监测系统,实现扰动类型的自动识别;②作为高校或科研机构在信号处理、模式识别、电力系统分析等课程的教学案例或科研实验平台;③目标是提高电能质量扰动分类的准确性与效率,为后续的电能治理与设备保护提供决策依据。; 阅读建议:建议读者结合Matlab代码深入理解DWT的实现过程与特征提取步骤,重点关注小波基选择、分解层数设定及特征向量构造对分类性能的影响,并尝试对比不同机器学习模型的分类效果,以全面掌握该方法的核心技术要点。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值