一站式电子元器件采购平台

华强商城公众号

一站式电子元器件采购平台

元器件移动商城,随时随地采购

华强商城M站

元器件移动商城,随时随地采购

半导体行业观察第一站!

芯八哥公众号

半导体行业观察第一站!

专注电子产业链,坚持深度原创

华强微电子公众号

专注电子产业链,
坚持深度原创

电子元器件原材料采购信息平台

华强电子网公众号

电子元器件原材料采购
信息平台

如何解答DS5250微控制器的模幂运算时序

来源:analog 发布时间:2023-09-06

摘要: DS5250高速,安全的微控制器具有MAA(模块化算术加速器)。本应用程序说明解释了用于求幂的MAA的配置,讨论了在执行时间上的权衡,并显示了典型的执行时间。

模幂运算在许多密码算法中都有应用。任何实现这些算法之一的人都必须知道操作大约需要多长时间。本应用笔记描述了如何在DS5250高速安全微控制器上进行模幂运算。它列出了运行各种表达式的典型时间,并描述了获取时间的代码流。

MAA基本操作

模幂是函数,(底(指数))模模。例如,(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寄存器控制哪个时钟用于模幂运算。

表1、模幂次(以毫秒为单位)
(a, e, m为随机值)

优化上
时钟脉冲源
优化了
时钟脉冲源
模量大小22.1 mhz Osc11.1 mhz Osc22.1 mhz Osc11.1 mhz Osc
25612.3826.2851.4416.3334.7969.55
51274.98155.43312.0698.18208.79416.91
768225.44468.50943.04296.10626.891252 .23
1024507.391050 .53点2079 .01点664.201397 .87点2793 .32
1280958.411967 .81点3922 .171248 .332629 .905258点
15361611年。083321 .946623 .292112 .68点4421 .998833 .31
17922520 .53点5176 .4610311 .88点3295 .64点6889 .75点13771点
20483729点7573 .35点15199点4863年1010143 .3120249 .51
23045251 .2610773 .81点21372 .706852 .96点14276 .87点28532 .62
25607159 .86点14557点29079 .79932819392 .38点38761 .51
28169434 .47点19216 .24点38474 .44点12334 .35点25636 .24点51189 .86点
307212152 .6224807 .5549631年3615930 .1333070 .91点66018 .62
332815360 .1631377 .07点62436 .28点20147 .92点41818 .9083544 .01点
358419138 .1038988 .81点78039 .69点25073 .03点51951 .35点103848 .07点
384023445年。0847678 .86点95490 .03点30691 .8563689 .30127205 .55
409628327 .98点57649 .65点11529537128 .98点76965 .83点153828 .69点
表2、模幂次(以毫秒为单位)
(e = 10001h;A和m是随机值)

优化上
时钟脉冲源
优化了
时钟脉冲源
模量大小22.1 mhz Osc11.1 mhz Osc22.1 mhz Osc11.1 mhz Osc
2560.651.352.7015.8732.6265.15
5121.873.887.7298.02200.88401.50
7683.717.6615.29294.26611.731222 .39点
10246.1612.7025.35660.951371 .87点2741 .38点
12809.2018.9737.891248 .98点2587 .995171 .69点
153612.8826.4952.932110点4366 .96点8726 .72点
179217.1635.2770.553297 .846815 .56点13619 .78点
204822.0345.3390.514862 .39点10040年3620064 .18
230427.5556.60113.066856 .06点14148 .38点28273 .26
256033.6769.14138.269332 .14点19246 .1638460 .11点
281640.4182.91165.7012342 .92点25440点50838点
307247.7497.92195.7915933点32838 .1965621点
332855.70114.25228.3620158 .7941545 .91点83022 .64点
358464.28131.83263.2825083 .3251670 .49点103254 .99
384073.45150.57300.6930747 .5863318点126532 .11点
409683.27170.62340.9837183 .65点76597 .28点153067 .16

典型的MAA计时

收集到的计时分为两组。第一组研究的是模数、基数和指数中的大数。第二组在使用仅设置了2位的小指数(特别是值10001h)时查看计时。这个数字有时用作RSA算法中的公共指数。在每一组中,都有两半。前半部分启用了优化(OCALC=1),后半部分禁用了优化。在每个半部分中,列出了不同时钟源的典型定时值。这些计时都以毫秒为单位显示。

表中给出的典型计时值是在每个寄存器中使用随机值进行的10次不同计算的平均值。模数是随机的,直到最高有效数字,它总是1。一般来说,每个参数中大约有一半的位被设置。

每次计算的计时使用定时器0作为一个除以12的时钟来测量。当16位定时器0滚动时,发生中断,并在6个外部计数字节上添加1。在计算结束时,计时器停止,外部计数字节和16位计时器计数显示为64位数字,给出了计算的长度。22.1MHz的振荡器每个计时器的分辨率为543ns。在11.0592MHz时分辨率为1.085µs。图2给出了计时MAA计算的伪代码。


图2、为模幂计算计时的伪代码



声明:本文观点仅代表作者本人,不代表华强商城的观点和立场。如有侵权或者其他问题,请联系本站修改或删除。

社群二维码

关注“华强商城“微信公众号

调查问卷

请问您是:

您希望看到什么内容: