DS5250高速、安全微控制器具有MAA(模塊化算術(shù)加速器)。本應(yīng)用筆記解釋了MAA的冪法配置,討論了執(zhí)行時(shí)間的權(quán)衡,并顯示了典型的執(zhí)行時(shí)間。
介紹
模冪用于許多加密算法。任何實(shí)現(xiàn)這些算法之一的人都必須知道操作大約需要多長時(shí)間。本應(yīng)用筆記描述了如何在DS5250高速、安全微控制器上完成模冪運(yùn)算。它列出了運(yùn)行各種表達(dá)式的典型時(shí)間,并描述了獲取計(jì)時(shí)的代碼流。
基本 MAA 操作
模冪是函數(shù),(基數(shù)指數(shù)) 模量。例如,(29mod 10) 等于 (512 mod 10),等于 2。答案始終是介于 0 和模數(shù) 1 之間的數(shù)字。
DS5250上的MAA(模算術(shù)加速器)始終使用MAA寄存器“a”作為基數(shù),MAA寄存器“e”作為指數(shù),MAA寄存器“m”作為模數(shù)。MAA 寄存器“b”在操作前初始化為 1,并包含操作后的結(jié)果。MAA 大小寄存器(MAS1 和 MAS0 位于 A2h 和 A1h)告訴 MAA 這些寄存器中的最大位數(shù)。m 寄存器必須設(shè)置最高位才能工作。大小寄存器的值可以介于 2 到 4096 之間。
模塊化算術(shù)加速器控制寄存器(A3h時(shí)的MACT)包含用于控制MAA操作的位。計(jì)算配置位(MACT 寄存器的 CLC1 和 CLC0)確定要執(zhí)行的四個(gè)操作中的哪一個(gè)。運(yùn)算可以是模乘法;模平方;模平方和乘法;以及這里討論的操作,模冪。
模冪是用重復(fù)的平方和乘法計(jì)算的。平方運(yùn)算是針對指數(shù)中的每個(gè)位完成的。只有在設(shè)置指數(shù)中的相應(yīng)位時(shí),才需要執(zhí)行乘法運(yùn)算。圖 1 給出了模冪運(yùn)算的偽代碼。優(yōu)化計(jì)算控制位(MACT 寄存器的 OCALC)確定是否對每個(gè)位執(zhí)行乘法運(yùn)算。啟用 OCALC 位后,每次在指數(shù)中找到 1 位時(shí),都會(huì)執(zhí)行乘法運(yùn)算。當(dāng)禁用 OCALC 位時(shí),對指數(shù)中的每個(gè)位(零或 1)進(jìn)行乘法,從而為任何特定模量大小提供類似的時(shí)間計(jì)算。所有私鑰計(jì)算都應(yīng)在 OCALC=0(禁用)以及從環(huán) (RNGSEL=1) 運(yùn)行以避免定時(shí)攻擊的情況下完成。
MAA 可以使用系統(tǒng)時(shí)鐘運(yùn)行,也可以從環(huán)運(yùn)行。選擇此選項(xiàng)時(shí),MAA 以系統(tǒng)時(shí)鐘速度的一半運(yùn)行。因此,對于22.1MHz晶體,MAA將以10.05MHz運(yùn)行。從系統(tǒng)時(shí)鐘運(yùn)行時(shí),執(zhí)行相同的值需要相同的時(shí)間。當(dāng)MAA從環(huán)上運(yùn)行時(shí),執(zhí)行時(shí)間可能因電壓、溫度和環(huán)的固有速度而異,這些速度因部件而異。MAA以環(huán)的全速運(yùn)行。在表1和表2中的典型數(shù)據(jù)中,環(huán)在22Mhz附近運(yùn)行。 MACT 寄存器的環(huán)形振蕩器選擇 (RNGSEL) 控制用于模冪運(yùn)算的時(shí)鐘。
典型的 MAA 時(shí)序
已收集的時(shí)間分為兩組。第一組查看每個(gè)模數(shù)、基數(shù)和指數(shù)中的大數(shù)。第二組查看使用僅設(shè)置了 2 位的小指數(shù)(具體而言,值 10001h)時(shí)的時(shí)序。此數(shù)字有時(shí)用作 RSA 算法中的公共指數(shù)。在每個(gè)組中,有兩半。前半部分已啟用優(yōu)化 (OCALC=1),后半部分禁用了優(yōu)化。在每一半內(nèi),列出不同時(shí)鐘源的典型定時(shí)值。這些計(jì)時(shí)均以毫秒 (ms) 為單位顯示。
表中給出的典型時(shí)序值是使用每個(gè)寄存器中的隨機(jī)值進(jìn)行十種不同計(jì)算的平均值。模數(shù)是隨機(jī)的,直到最高有效數(shù)字,始終為 1。通常,在每個(gè)參數(shù)中設(shè)置了大約一半的位。
每次計(jì)算的時(shí)序都是使用定時(shí)器0作為12分頻時(shí)鐘來測量的。當(dāng) 16 位定時(shí)器 0 滾動(dòng)更新時(shí),將發(fā)生中斷,并將 1 添加到六個(gè)外部計(jì)數(shù)字節(jié)中。在計(jì)算結(jié)束時(shí),計(jì)時(shí)器停止,外部計(jì)數(shù)字節(jié)和 16 位計(jì)時(shí)器計(jì)數(shù)顯示為 64 位數(shù)字,用于給出計(jì)算的長度。22.1MHz振蕩器每個(gè)定時(shí)器的分辨率為543ns。分辨率在11.0592MHz時(shí)為1.085μs。圖 2 包含用于對 MAA 計(jì)算進(jìn)行計(jì)時(shí)的偽代碼。
表 1.以毫秒為單位的模冪時(shí)間
(a、e 和 m 是隨機(jī)值)
時(shí)鐘源優(yōu)化 |
優(yōu)化關(guān)斷 時(shí)鐘源 |
|||||
Modulus Size | Ring | 22.1MHz Osc | 11.1MHz Osc | Ring | 22.1MHz Osc | 11.1MHz 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 | 1,252.23 |
1024 | 507.39 | 1,050.53 | 2,079.01 | 664.20 | 1,397.87 | 2,793.32 |
1280 | 958.41 | 1,967.81 | 3,922.17 | 1,248.33 | 2,629.90 | 5,258.52 |
1536 | 1,611.08 | 3,321.94 | 6,623.29 | 2,112.68 | 4,421.99 | 8,833.31 |
1792 | 2,520.53 | 5,176.46 | 10,311.88 | 3,295.64 | 6,889.75 | 13,771.52 |
2048 | 3,729.76 | 7,573.35 | 15,199.66 | 4,863.27 | 10,143.31 | 20,249.51 |
2304 | 5,251.26 | 10,773.81 | 21,372.70 | 6,852.96 | 14,276.87 | 28,532.62 |
2560 | 7,159.86 | 14,557.57 | 29,079.79 | 9,328.25 | 19,392.38 | 38,761.51 |
2816 | 9,434.47 | 19,216.24 | 38,474.44 | 12,334.35 | 25,636.24 | 51,189.86 |
3072 | 12,152.62 | 24,807.55 | 49,631.36 | 15,930.13 | 33,070.91 | 66,018.62 |
3328 | 15,360.16 | 31,377.07 | 62,436.28 | 20,147.92 | 41,818.90 | 83,544.01 |
3584 | 19,138.10 | 38,988.81 | 78,039.69 | 25,073.03 | 51,951.35 | 103,848.07 |
3840 | 23,445.08 | 47,678.86 | 95,490.03 | 30,691.85 | 63,689.30 | 127,205.55 |
4096 | 28,327.98 | 57,649.65 | 115,295.25 | 37,128.98 | 76,965.83 | 153,828.69 |
表 2.以毫秒為單位的模冪時(shí)間
(e = 10001h;a 和 m 是隨機(jī)值)
時(shí)鐘源優(yōu)化 |
優(yōu)化關(guān)斷 時(shí)鐘源 |
|||||
Modulus Size | Ring | 22.1MHz Osc | 11.1MHz Osc | Ring | 22.1MHz Osc | 11.1MHz 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 | 1,222.39 |
1024 | 6.16 | 12.70 | 25.35 | 660.95 | 1,371.87 | 2,741.38 |
1280 | 9.20 | 18.97 | 37.89 | 1,248.98 | 2,587.99 | 5,171.69 |
1536 | 12.88 | 26.49 | 52.93 | 2,110.76 | 4,366.96 | 8,726.72 |
1792 | 17.16 | 35.27 | 70.55 | 3,297.84 | 6,815.56 | 13,619.78 |
2048 | 22.03 | 45.33 | 90.51 | 4,862.39 | 10,040.36 | 20,064.18 |
2304 | 27.55 | 56.60 | 113.06 | 6,856.06 | 14,148.38 | 28,273.26 |
2560 | 33.67 | 69.14 | 138.26 | 9,332.14 | 19,246.16 | 38,460.11 |
2816 | 40.41 | 82.91 | 165.70 | 12,342.92 | 25,440.42 | 50,838.52 |
3072 | 47.74 | 97.92 | 195.79 | 15,933.52 | 32,838.19 | 65,621.43 |
3328 | 55.70 | 114.25 | 228.36 | 20,158.79 | 41,545.91 | 83,022.64 |
3584 | 64.28 | 131.83 | 263.28 | 25,083.32 | 51,670.49 | 103,254.99 |
3840 | 73.45 | 150.57 | 300.69 | 30,747.58 | 63,318.76 | 126,532.11 |
4096 | 83.27 | 170.62 | 340.98 | 37,183.65 | 76,597.28 | 153,067.16 |
圖1.用于模冪的偽代碼。
圖2.用于對模塊化冪計(jì)算進(jìn)行計(jì)時(shí)的偽代碼。
審核編輯:郭婷
-
微控制器
+關(guān)注
關(guān)注
48文章
7542瀏覽量
151316 -
加速器
+關(guān)注
關(guān)注
2文章
796瀏覽量
37840 -
定時(shí)器
+關(guān)注
關(guān)注
23文章
3246瀏覽量
114720
發(fā)布評論請先 登錄
相關(guān)推薦
評論