全球报道:MAXQ30微控制器的模块化幂运算时序
32位DeepCover安全微控制器(MAXQ1050、MAXQ1850和MAXQ1103)为执行模块化运算提供硬件支持。这是使用称为模块化算术加速器 (MAA) 的引擎完成的。本应用笔记给出了各种模量尺寸、关键类型和优化级别的典型执行时间。
介绍
(资料图片仅供参考)
模幂用于几种加密算法,特别是RSA公钥算法和椭圆曲线数字签名算法(ECDSA)。它还用于发现素数和查找模逆。本应用笔记描述了什么是模幂,概述了MAA,并列出了执行各种大小幂的典型时间。
MAXQ30架构采用精简指令集计算机(RISC),所有指令长度为16位,在一个周期内执行。32 位算术和逻辑单元 (ALU) 在连接到 32 位总线时与 32 位寄存器和值一起工作。
模幂
模幂由以下等式描述:
结果 = 基数指数模量。
例如:9 = 7² mod 10。
在此示例中,9 是结果,7 是底数,2 是指数,10 是模数。在这种情况下,由于模数 10 在二进制中为 4 位长,因此大小为 4。
MAA 执行模加法、减法、乘法、平方、平方,然后乘法和模幂。所有这些操作都可以以最大 2048 位长度的模数完成。
MAA 从加密时钟运行。该时钟可能来自系统时钟,该系统时钟由外部晶体频率决定,或者从加密环运行。DeepCover安全微控制器(MAXQ1050和MAXQ1850)的内部加密环工作频率为55MHz至75MHz,典型速度为65MHz。DeepCover安全微控制器(MAXQ1103)的内部加密环可以以45MHz至65MHz的速度运行,典型速度为55MHz。®
MAXQ1050和MAXQ1850上的MAA相同,因此从加密环运行时的时序相同。这两部分的MAA使用32位×16位乘法器和32位数据总线。在MAXQ1103上实现MAA具有64位×32位乘法器和64位数据总线。MAXQ1103上的MAA执行速度更快,但代价是使用更多的硅面积。
在启用优化的情况下运行时,简单功耗分析 (SPA) 和差分功耗分析 (DPA) 等功耗分析攻击可能能够提取指数信息。建议始终使用私钥进行非优化计算。
表 1至 3中的数据是典型的运行时间。每个条目是 400 次计算的平均时间,使用基数、模数和指数的统一随机数,最高有效位设置为模数。在公钥计算的情况下,使用 0x10001 的十六进制值而不是随机数。这是 RSA 中公共指数的典型值。计算的时间是从操作开始到完成。不包括将值加载到内存中进行计算的时间。
通过采用中国余数定理(CRT),可以实现模指数运算的显著速度改进。使用 CRT 需要两个较小的模块化幂运算,而不是一个大的运算。不是对大模量执行模块化指数计算,而是对模量的两个因子进行模块化指数计算。例如,在 RSA 中,模数是两个素数 p 和 q 的乘积。如果p和q都是1024位,使用MAXQ1103对这些位进行两次模指数运算大约需要165ms。如果没有 CRT,则需要 2048 位模块化指数运算,大约需要 557 毫秒。CRT算法需要额外的计算,这将增加总时间,但预计速度会快两倍以上。
表1左侧的数据最有趣。这些是在非优化模式下从加密环运行时执行模块化幂运算的典型经过时间。使用优化和公钥的典型运行时间位于右侧两列中。
表 1.从加密环运行时的典型时间 | ||||||||
从加密环运行的 MAA(以毫秒为单位的时间) | ||||||||
私钥 | 公钥 = 0x10001 | |||||||
未优化 | 优化 | 未优化 | 优化 | |||||
大小 | MAXQ1050/MAXQ1850 在 65MHz | MAXQ1103 在 55MHz | MAXQ1050/MAXQ1850 在 65MHz | MAXQ1103 在 55MHz | MAXQ1050/MAXQ1850 在 65MHz | MAXQ1103 在 55MHz | MAXQ1050/MAXQ1850 在 65MHz | MAXQ1103 在 55MHz |
160 | 1.89 | 1.07 | 1.42 | 0.809 | 0.21 | 0.123 | 0.116 | 0.0723 |
192 | 2.91 | 1.36 | 2.19 | 1.02 | 0.26 | 0.130 | 0.147 | 0.0768 |
224 | 4.22 | 2.16 | 3.18 | 1.62 | 0.32 | 0.173 | 0.182 | 0.101 |
256 | 5.87 | 2.59 | 4.41 | 1.95 | 0.39 | 0.183 | 0.220 | 0.107 |
384 | 16.5 | 6.72 | 12.4 | 5.05 | 0.73 | 0.310 | 0.404 | 0.178 |
512 | 35.2 | 13.6 | 26.4 | 10.2 | 1.16 | 0.466 | 0.642 | 0.266 |
640 | 64.4 | 24.0 | 48.3 | 18.0 | 1.69 | 0.650 | 0.933 | 0.368 |
768 | 106.0 | 38.5 | 79.7 | 28.9 | 2.32 | 0.864 | 1.28 | 0.487 |
1024 | 237.0 | 82.5 | 178.0 | 61.9 | 3.86 | 1.38 | 2.12 | 0.772 |
1536 | 750.0 | 249.0 | 563.0 | 187.0 | 8.12 | 2.75 | 4.46 | 1.53 |
2048 | 1,720.0 | 557.0 | 1,290.0 | 418.0 | 13.9 | 4.58 | 7.64 | 2.54 |
表 2 列出了在优化和非优化模式下对私钥数据执行模块化幂的典型时间。表 3 列出了在优化和非优化模式下使用公钥对这三个部分执行模幂的典型时间。
表 2.从系统时钟运行时的典型私钥时间 | ||||||
从系统时钟运行的 MAA(以毫秒为单位的时间) | ||||||
私钥/未优化 | 公钥/优化 | |||||
大小 | MAXQ1050 在 25MHz | MAXQ1850 在 16MHz | MAXQ1103 在 25MHz | MAXQ1050 在 25MHz | MAXQ1850 在 16MHz | MAXQ1103 在 25MHz |
160 | 4.93 | 7.68 | 2.37 | 3.71 | 5.78 | 1.79 |
192 | 7.58 | 11.8 | 3.00 | 5.70 | 8.88 | 2.26 |
224 | 11.0 | 17.2 | 4.75 | 8.27 | 12.9 | 3.58 |
256 | 15.3 | 23.9 | 5.71 | 11.5 | 17.9 | 4.29 |
384 | 42.9 | 67.0 | 14.8 | 32.2 | 50.3 | 11.1 |
512 | 91.7 | 143.0 | 30.0 | 68.9 | 107.0 | 22.5 |
640 | 167.0 | 262.0 | 52.9 | 126.0 | 196.0 | 39.6 |
768 | 276.0 | 432.0 | 84.8 | 208.0 | 324.0 | 63.6 |
1024 | 617.0 | 964.0 | 182.0 | 463.0 | 722.0 | 136.0 |
1536 | 1,950.0 | 3,050.0 | 549.0 | 1,460.0 | 2,290.0 | 412.0 |
2048 | 4,480.0 | 6,990.0 | 1,230.0 | 3,360.0 | 5,250.0 | 921.0 |
表 3.从系统时钟运行时的典型公钥时间 | ||||||
从系统时钟运行的 MAA(以毫秒为单位的时间) | ||||||
公钥 = 0x10001/未优化 | 公钥 = 0x10001/优化 | |||||
大小 | MAXQ1050 在 25MHz | MAXQ1850 在 16MHz | MAXQ1103 在 25MHz | MAXQ1050 在 25MHz | MAXQ1850 在 16MHz | MAXQ1103 在 25MHz |
160 | 0.532 | 0.831 | 0.269 | 0.299 | 0.468 | 0.158 |
192 | 0.679 | 1.06 | 0.285 | 0.381 | 0.595 | 0.168 |
224 | 0.840 | 1.31 | 0.381 | 0.470 | 0.736 | 0.221 |
256 | 1.02 | 1.59 | 0.401 | 0.570 | 0.889 | 0.234 |
384 | 1.89 | 2.96 | 0.681 | 1.05 | 1.64 | 0.392 |
512 | 3.02 | 4.71 | 1.02 | 1.67 | 2.61 | 0.584 |
640 | 4.40 | 6.87 | 1.43 | 2.43 | 3.79 | 0.811 |
768 | 6.03 | 9.42 | 1.90 | 3.32 | 5.19 | 1.07 |
1024 | 10.1 | 15.7 | 3.03 | 5.53 | 8.64 | 1.70 |
1536 | 21.1 | 33.0 | 6.05 | 11.6 | 18.1 | 3.37 |
2048 | 36.3 | 56.7 | 10.1 | 19.9 | 31.1 | 5.59 |