DS5250 点击型号查看芯片规格书
模幂运算在许多密码算法中都有应用。任何实现这些算法之一的人都必须知道操作大约需要多长时间。本应用笔记描述了如何在DS5250高速安全微控制器上进行模幂运算。它列出了运行各种表达式的典型时间,并描述了获取时间的代码流。
模幂是函数,(底(指数))模模。例如,(2(9)mod 10)等于(512 mod 10),即等于2。答案总是介于0和模数-1之间的数。
DS5250上的MAA(模算术加速器)总是使用MAA寄存器“a”作为基数,MAA寄存器“e”作为指数,MAA寄存器“m”作为模数。MAA寄存器“b”在操作前初始化为1,并包含操作后的结果。MAA大小寄存器(A2h和A1h的MAS1和MAS0)告诉MAA这些寄存器中的最大位数。寄存器m必须设置最高位才能工作。大小寄存器的值可以从2到4096。
模运算加速器控制寄存器(MACT at A3h)包含用于控制MAA操作的位。计算配置位(MACT寄存器的CLC1和CLC0)决定要执行四个操作中的哪一个。运算可以是模乘;模平方;模平方和乘法;这里讨论的运算,模幂。
模幂运算是用重复的平方和乘来计算的。对指数中的每一位进行平方运算。只有当指数中相应的位被设置时,才需要进行乘法运算。图1给出了模求幂运算的伪代码。优化计算控制位(MACT寄存器的OCALC)决定是否对每个位进行乘法运算。当启用OCALC位时,每次在指数中找到1位时,就执行乘法操作。当OCALC位被禁用时,对指数中的每个位(0或1)进行乘法,从而为任何特定模量大小提供类似的时间计算。所有私钥计算都应该使用OCALC=0(禁用)以及从环运行(RNGSEL=1)来完成,以避免定时攻击。
图1所示、模求幂的伪代码
MAA可以使用系统时钟运行,也可以从环运行。当选择此选项时,MAA以系统时钟速度的一半运行。因此,对于22.1MHz晶体,MAA将运行在10.05MHz。当从系统时钟运行时,执行相同的值将花费相同的时间。当MAA从环上运行时,执行时间可能会根据电压、温度和环的固有速度而变化,这些速度会因部分而异。MAA以环的全速运行。在表1和表2所示的典型数据中,环运行在22Mhz附近。环形振荡器选择(RNGSEL)的MACT寄存器控制哪个时钟用于模幂运算。
优化上 时钟脉冲源 | 优化了 时钟脉冲源 | |||||
模量大小 | 环 | 22.1 mhz Osc | 11.1 mhz Osc | 环 | 22.1 mhz Osc | 11.1 mhz Osc |
256 | 12.38 | 26.28 | 51.44 | 16.33 | 34.79 | 69.55 |
512 | 74.98 | 155.43 | 312.06 | 98.18 | 208.79 | 416.91 |
768 | 225.44 | 468.50 | 943.04 | 296.10 | 626.89 | 1252 .23 |
1024 | 507.39 | 1050 .53点 | 2079 .01点 | 664.20 | 1397 .87点 | 2793 .32 |
1280 | 958.41 | 1967 .81点 | 3922 .17 | 1248 .33 | 2629 .90 | 5258点 |
1536 | 1611年。08 | 3321 .94 | 6623 .29 | 2112 .68点 | 4421 .99 | 8833 .31 |
1792 | 2520 .53点 | 5176 .46 | 10311 .88点 | 3295 .64点 | 6889 .75点 | 13771点 |
2048 | 3729点 | 7573 .35点 | 15199点 | 4863年10 | 10143 .31 | 20249 .51 |
2304 | 5251 .26 | 10773 .81点 | 21372 .70 | 6852 .96点 | 14276 .87点 | 28532 .62 |
2560 | 7159 .86点 | 14557点 | 29079 .79 | 9328 | 19392 .38点 | 38761 .51 |
2816 | 9434 .47点 | 19216 .24点 | 38474 .44点 | 12334 .35点 | 25636 .24点 | 51189 .86点 |
3072 | 12152 .62 | 24807 .55 | 49631年36 | 15930 .13 | 33070 .91点 | 66018 .62 |
3328 | 15360 .16 | 31377 .07点 | 62436 .28点 | 20147 .92点 | 41818 .90 | 83544 .01点 |
3584 | 19138 .10 | 38988 .81点 | 78039 .69点 | 25073 .03点 | 51951 .35点 | 103848 .07点 |
3840 | 23445年。08 | 47678 .86点 | 95490 .03点 | 30691 .85 | 63689 .30 | 127205 .55 |
4096 | 28327 .98点 | 57649 .65点 | 115295 | 37128 .98点 | 76965 .83点 | 153828 .69点 |
优化上 时钟脉冲源 | 优化了 时钟脉冲源 | |||||
模量大小 | 环 | 22.1 mhz Osc | 11.1 mhz Osc | 环 | 22.1 mhz Osc | 11.1 mhz Osc |
256 | 0.65 | 1.35 | 2.70 | 15.87 | 32.62 | 65.15 |
512 | 1.87 | 3.88 | 7.72 | 98.02 | 200.88 | 401.50 |
768 | 3.71 | 7.66 | 15.29 | 294.26 | 611.73 | 1222 .39点 |
1024 | 6.16 | 12.70 | 25.35 | 660.95 | 1371 .87点 | 2741 .38点 |
1280 | 9.20 | 18.97 | 37.89 | 1248 .98点 | 2587 .99 | 5171 .69点 |
1536 | 12.88 | 26.49 | 52.93 | 2110点 | 4366 .96点 | 8726 .72点 |
1792 | 17.16 | 35.27 | 70.55 | 3297 .84 | 6815 .56点 | 13619 .78点 |
2048 | 22.03 | 45.33 | 90.51 | 4862 .39点 | 10040年36 | 20064 .18 |
2304 | 27.55 | 56.60 | 113.06 | 6856 .06点 | 14148 .38点 | 28273 .26 |
2560 | 33.67 | 69.14 | 138.26 | 9332 .14点 | 19246 .16 | 38460 .11点 |
2816 | 40.41 | 82.91 | 165.70 | 12342 .92点 | 25440点 | 50838点 |
3072 | 47.74 | 97.92 | 195.79 | 15933点 | 32838 .19 | 65621点 |
登录icspec成功后,会自动跳转查看全文
博客评论
还没有人评论,赶紧抢个沙发~
发表评论
|