TWI802095B - 模數乘法電路與對應之計算模數乘法之方法 - Google Patents
模數乘法電路與對應之計算模數乘法之方法 Download PDFInfo
- Publication number
- TWI802095B TWI802095B TW110143399A TW110143399A TWI802095B TW I802095 B TWI802095 B TW I802095B TW 110143399 A TW110143399 A TW 110143399A TW 110143399 A TW110143399 A TW 110143399A TW I802095 B TWI802095 B TW I802095B
- Authority
- TW
- Taiwan
- Prior art keywords
- value
- carry
- sum
- bits
- output
- Prior art date
Links
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F7/00—Methods or arrangements for processing data by operating upon the order or content of the data handled
- G06F7/60—Methods or arrangements for performing computations using a digital non-denominational number representation, i.e. number representation without radix; Computing devices using combinations of denominational and non-denominational quantity representations, e.g. using difunction pulse trains, STEELE computers, phase computers
- G06F7/72—Methods or arrangements for performing computations using a digital non-denominational number representation, i.e. number representation without radix; Computing devices using combinations of denominational and non-denominational quantity representations, e.g. using difunction pulse trains, STEELE computers, phase computers using residue arithmetic
- G06F7/728—Methods or arrangements for performing computations using a digital non-denominational number representation, i.e. number representation without radix; Computing devices using combinations of denominational and non-denominational quantity representations, e.g. using difunction pulse trains, STEELE computers, phase computers using residue arithmetic using Montgomery reduction
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F7/00—Methods or arrangements for processing data by operating upon the order or content of the data handled
- G06F7/60—Methods or arrangements for performing computations using a digital non-denominational number representation, i.e. number representation without radix; Computing devices using combinations of denominational and non-denominational quantity representations, e.g. using difunction pulse trains, STEELE computers, phase computers
- G06F7/72—Methods or arrangements for performing computations using a digital non-denominational number representation, i.e. number representation without radix; Computing devices using combinations of denominational and non-denominational quantity representations, e.g. using difunction pulse trains, STEELE computers, phase computers using residue arithmetic
- G06F7/722—Modular multiplication
-
- Y—GENERAL TAGGING OF NEW TECHNOLOGICAL DEVELOPMENTS; GENERAL TAGGING OF CROSS-SECTIONAL TECHNOLOGIES SPANNING OVER SEVERAL SECTIONS OF THE IPC; TECHNICAL SUBJECTS COVERED BY FORMER USPC CROSS-REFERENCE ART COLLECTIONS [XRACs] AND DIGESTS
- Y02—TECHNOLOGIES OR APPLICATIONS FOR MITIGATION OR ADAPTATION AGAINST CLIMATE CHANGE
- Y02D—CLIMATE CHANGE MITIGATION TECHNOLOGIES IN INFORMATION AND COMMUNICATION TECHNOLOGIES [ICT], I.E. INFORMATION AND COMMUNICATION TECHNOLOGIES AIMING AT THE REDUCTION OF THEIR OWN ENERGY USE
- Y02D10/00—Energy efficient computing, e.g. low power processors, power management or thermal management
Landscapes
- Physics & Mathematics (AREA)
- Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Mathematical Analysis (AREA)
- Mathematical Optimization (AREA)
- Pure & Applied Mathematics (AREA)
- Computational Mathematics (AREA)
- Theoretical Computer Science (AREA)
- Computing Systems (AREA)
- Mathematical Physics (AREA)
- General Engineering & Computer Science (AREA)
- Complex Calculations (AREA)
- Electrophonic Musical Instruments (AREA)
Abstract
一種模數乘法電路,包括一主要運算電路、一尋找表、及一加法單元。主要運算電路係用以根據一第一運算值A對應之2iA與目前進行運算之一第二運算值B之m個位元,更新一總和值和一進位值,m為正整數,i為0至m-1之整數。尋找表係用以記錄與一模數相關的多個數值,並依照總和值選擇此些數值之一作為一尋找表輸出值輸出。加法單元係用以根據尋找表輸出值更新總和值和進位值,並輸出至主要運算電路。其中,模數乘法電路係以遞迴的方式,藉由使用第二運算值B之不同的m個位元,來進行上述運算以更新總和值和進位值,直到第二運算值B的M個全部位元所對應的運算被執行完畢為止,其中m<M,M為正整數。
Description
本揭露是有關於一種模數乘法電路與對應之計算模數乘法之方法。
隨著物聯網的發達,在能源供應有限的終端裝置上搭載安全晶片以實現硬體安全,已成為時代趨勢。安全晶片中所使用的密碼演算法大部分都需要使用到模數乘法運算。然而,終端裝置上所提供的電力資源經常是有限的。因此,上述之密碼演算法需要搭配低功耗之硬體架構設計,方可使有限電源供應之下的終端裝置的使用時間延長。
因此,如何在提升硬體運算效率的同時,同時兼顧硬體之低功耗與低面積兩項特點,藉以符合物聯網終端裝置上的物理環境,乃業界所致力的方向之一。
根據本揭露之第一方面,提出一種模數乘法電路,包括一主要運算電路、一尋找表、及一加法單元。主要運算電路係用以根據一第一運算值A對應之2iA與目前進行運算之一第二運算值B之m個位元,更新一總和值和一進位值,m為正整數,i為0至m-1之整數。尋
找表係用以記錄與一模數相關的多個數值,並依照總和值選擇此些數值之一作為一尋找表輸出值輸出。加法單元係用以根據尋找表輸出值更新總和值和進位值,並輸出至主要運算電路。其中,模數乘法電路係以遞迴的方式,藉由使用第二運算值B之不同的m個位元,來進行上述運算以更新總和值和進位值,直到第二運算值B的M個全部位元所對應的運算被執行完畢為止,其中m<M,M為正整數。
根據本揭露之第二方面,提出一種計算模數乘法之方法,包括下列步驟。根據一第一運算值A對應之2iA與目前進行運算之一第二運算值B之m個位元,更新一總和值和一進位值,m為正整數,i為0至m-1之整數。藉由使用一尋找表,記錄與一模數相關的多個數值,並依照總和值選擇此些數值之一作為一尋找表輸出值輸出。藉由使用一加法單元,根據尋找表輸出值更新總和值和進位值。其中,此計算模數乘法之方法係以遞迴的方式,藉由使用第二運算值B之不同的m個位元,來重複上述步驟以更新總和值和進位值,直到第二運算值B的M個全部位元所對應的運算被執行完畢為止,其中m<M,M為正整數。
為了對本揭露之上述及其他方面有更佳的瞭解,下文特舉實施例,並配合所附圖式詳細說明如下:
100,400:模數乘法電路
102,402:主要運算電路
104,404:尋找表
106,406:加法單元
108,408:乘法運算電路
110(0)~110(m-1),410(0)~410(3),118,120,418,420:多工器
112(1)~112(m-1),130,132,136,412(1)~412(3),430,432,436:移位器
114,414:加法運算電路
116,416:計數器
122,124,134,422,424,434:暫存器
126,426:進位增值加法器
128,428:模數運算器
202~206,302~314:流程步驟
第1圖繪示依照本揭露一實施例之一種模數乘法電路之方塊圖;第2圖繪示依照本揭露一實施例之一種計算模數乘法之方法的流
程圖;第3圖繪示依照本揭露另一實施例之一種計算模數乘法之方法的流程圖;及第4圖繪示依照本揭露之第1圖實施例之模數乘法電路,於m值等於4時之模數乘法電路方塊圖。
為了實現硬體安全,本揭露提出一種模數乘法電路與對應之計算模數乘法之方法,可應用於數位簽章系統之模數乘法運算。在提升運算效率的同時,同時兼顧低功耗與低面積兩項特點,藉以符合物聯網之終端裝置上的物理環境。
本揭露利用蒙哥馬利演算法(Montgomery modular multiplication/Montgomery reduction)(P.L.Montgomery,“Modular multiplication without trial division,”Mathematics of Computation,vol.44,no.170,pp.519-519,1985.)來降低模數運算的複雜性,並可以在不需使用到記憶體的前提下,減少256位元之乘法中,以遞迴方式執行之加法的次數。同時亦可提升時脈頻率,使得本揭露的模數乘法運算可以有效地降低功率損耗。
蒙哥馬利演算法是一種模數乘法演算法,具有良好的硬體實現性。蒙哥馬利演算法能避免暫存器及記憶體的消耗,尤其是當被乘數與乘數的數字相當大時更是如此。舉例來說,可以蒙哥馬利演算法為基礎,依據本揭露實施例所設計之模數乘法電路與對應之計算
模數乘法之方法係適合可應用於型號Ed25519之數位簽章系統之低功耗模數乘法運算中。
茲將蒙哥馬利演算法概述如下。令整數N>1,並選擇一基數(radix)R,R為整數且R與N互質(coprime),且R>N。令R -1與N'為整數,且滿足以下關係式:0<R -1<N與0<N'<R與RR -1-NN'=1。當要計算t=TR-1mod N時,可藉由以下(式1)所定義之參數w,代入(式2)來求得t之值:w=(T mod R)N'mod R(式1)
其中,數值T為將進行蒙哥馬利運算(TR-1mod N)的數值,t為對數值T進行蒙哥馬利運算後的結果,w為計算t時所需要之一中間數值。若t大於等於N,則以t-N作為TR-1mod N之模數運算的結果。若t小於N,則以t作為TR-1mod N之模數運算的結果。
茲將(式3)與(式4)可以等同的理由如下。由於模數資料有以下性質:(a×b)mod c=(a mod c)×(b mod c)mod c。a、b、c為整數。由於0N'<R,因此(T×N')mod R=(T mod R)×(N' mod R)mod R=(T mod R)×N'mod R。接著,由於RR-1-NN'=1,將等號兩側都對R進行模數運算後,可得到RR-1 mod R-NN' mod R=1 mod R。故可得N'=-N-1(mod R)。
其中,P為模數,m、k為整數。PP-1滿足下式:PP-1=1 mod 2m。P-1為P在2m中的乘法反元素(Multiplicative inverse)。m代表位元數。
依照蒙哥馬利演算法的特性((式2)之T+wN=0(mod R)),故(式7)之分子之(a×b+(a×b×(P-1mod 2m))×P)mod 2m=0,所以分子可以被分母除盡。
以應用於例如是型號Ed25519之數位簽章系統之安全晶片為例做說明,參數a、b係為256位元的整數。型號Ed25519之
數位簽章系統之模數運算例如是需完成mod P之運算。而mod
P之運算可藉由下式來達成:
接下來,說明多分支蒙哥馬利乘法運算(Multi Limb
Montgomery Multiplication)。令,bi為b的第i*m到(i+1)m-1
個位元,,b[i]為b的第i個位元,b為二進位值。可將b
表示為:
於使用電路來實現上列式子時,分子的(-P-1)mod 2m×
P僅與mod 2m相關,亦即與第m個進位保
持加法器(Carry save adder,CSA)輸出之sum值有關,故可透過第m個進位保持加法器輸出之sum值,直接查表而可得到分子的(summ+carrym)×(-P-1)mod 2m×P之數值LT,即:
其中,LT代表查表後所得之值。由於經由模數為2m之模數運算mod 2m的值可能為0~(2m-1)中的一個值,將0~(2m-1)乘以P後即可得到LT之值,亦即LT可能的值為0×P~(2m-1)×P(2m種
組合)中個一個值。又因為總能被
2m整除,故可將0×P~(2m-1)×P的最右邊m個位元捨棄,並加上
2m(LT=0時除外)。而在與相加時,則可
自動省略的最右邊m個位元(亦即第m個
進位保持加法器輸出之sum值的最右邊m個位元)。
因此,LT實際上的值為0,2m(+1),2m(+
1),2m(+1),...,2m(+1),並根據第m個進位保持加法器
輸出之sum值返還其中一LT值,使得最後相加的結果為[(sum+
(-P-1)mod 2m]×P,亦即能被2m整除。
茲將上述LT值的產生的推導過程,與如何從輸入至尋找表的sum值,找到對應之LT值的作法更進一步說明如下。根據電路實務操作時的觀察,由於carry值在進行m次的加法運算後,會使得carry值的最右邊m個位元均為0。所以,sum的最右邊m個位元、carry的最右邊m個位元與LT的最右邊m個位元的和將會等於sum的最右邊m個位元與LT的最右邊m個位元的和,故可以忽略carry的最右邊4個位元。因此,此處僅需考慮sum與LT值之運算,而可以不需考慮carry值。
假設m=4,sum=(......0,0111)2,則需找出一個LT值,使sum+LT可以被2m整除,亦即是使sum+LT最右邊之m個位元為0。經由運算可以得到,當LT=(......0,1111)2時,sum+LT=(......,0000)2。排除sum的最右邊m個位元均為0的情況,sum+LT的最右邊4個位元相加後會有進位至從右邊算起第5位元的情況。如此,在不是sum的最右邊m個位元均為0的情況下,可以直接讓所有LT值的最右邊m個位元均設為0,也讓sum的最右邊m個位元均設為0,並讓LT值之第5位元直接進位,例如讓LT調整為LT’=(......1,0000)2。這樣的運算亦可得到相同的結果。因此,雖然LT可能的值為0×P~(2m-1)×P,然而亦可讓
LT實際上的值可為0,2m(+1),2m(+1),2m(+
1),...,2m(+1),而可同樣地達到本揭露之目的。其中,「+1」
係為上述之LT值之第5位元之進位之值。
請參照第1圖,其繪示依照本揭露一實施例之一種模數乘法電路之方塊圖。模數乘法電路100包括一主要運算電路102、一尋
找表(Lookup table)104、及一加法單元106。主要運算電路102係用以根據一第一運算值A對應之2iA與目前進行運算之一第二運算值B之m個位元,更新一總和值D_Sum和一進位值D_Carry,m為正整數,i為0至m-1之整數。第一運算值A與第二運算值B例如為模數乘法電路100之輸入,且第一運算值A與第二運算值B例如為n(n≦256)位元之正整數。
尋找表104係用以記錄與一模數P相關的多個數值,並依照總和值D_Sum選擇此些數值之一作為一尋找表輸出值輸出Lout。加法單元106係用以根據尋找表輸出值Lout更新總和值D_Sum和進位值D_Carry,並輸出至主要運算電路102。其中,在型號Ed25519之數位簽章系統的模數乘法中,模數P之值例如等於2255-19。
其中,模數乘法電路100係以遞迴的方式,藉由使用第二運算值B之不同的m個位元,來進行上述運算以更新總和值D_Sum和進位值D_Carry,直到第二運算值B的M個全部位元所對應的運算被執行完畢為止,其中m<M,M為正整數。
茲將第1圖所示之模數乘法電路100詳細說明如下。於主要運算電路102中,主要運算電路102係計算目前進行運算之第二運算值B之m個位元之各個位元,與對應之2iA之乘積之和,以更新總和值D_Sum和進位值D_Carry。舉例來說,主要運算電路102係計算了
之值。
更進一步來說,主要運算電路102包括了一乘法運算電路108。乘法運算電路108包括一第0個多工器110(0)至一第m-1個多工
器110(m-1)與一第0個暫存器R(0)至一第m-1個暫存器R(m-1)。第0個暫存器R(0)至第m-1個暫存器R(m-1)係各自儲存目前進行運算之第二運算值B之m個位元之一。假設第二運算值B為256位元之值,第二運算值B例如暫存於暫存器134中,第二運算值B可表示為(B[255],B[254],...B[m],B[m-1],...B[2],B[1],B[0])2,則第0個暫存器R(0)至第m-1個暫存器R(m-1)目前例如分別儲存了目前進行運算之第二運算值B之位元B[0]至B[m-1]。第0個多工器110(0)至第m-1個多工器110(m-1)之選擇端係分別受控於第0個暫存器R(0)至第m-1個暫存器R(m-1)之輸出值,例如是位元B[0]至位元B[m-1]。第0個多工器110(0)至第m-1個多工器110(m-1)之第一輸入端係接收數位值0。第0個多工器110(0)至第m-1個多工器110(m-1)之第二輸入端係分別接收20A至2m-1A。總和值D_Sum與進位值D_Carry係由第0個多工器110(0)至第m-1個多工器110(m-1)之輸出值所決定。
茲以第0個暫存器R(0)為例進一步說明。當第0個暫存器R(0)儲存之位元B[0]為0時,則第0個多工器110(0)係以第一輸入端之數位值0作為輸出,亦即是輸出數位值0。此時第0個多工器110(0)的輸出等於B[0]*20*A=0*20*A=0。當第0個暫存器R(0)儲存之位元B[0]為1時,則第0個多工器110(0)係以第二輸入端之20*A作為輸出,亦即是輸出20*A之值。此時第0個多工器110(0)的輸出等於B[0]*20*A=1*20*A=20*A。亦即,可以透過第0個暫存器R(0)儲存之位元B[0]的值,來決定是否讓20*A作為多工器110(0)的輸出。
再以第m-1個暫存器R(m-1)為例進一步說明。當第m-1個暫存器R(m-1)儲存之位元B[m-1]為0時,則第m-1個多工器110(m-1)係以第一輸入端之數位值0作為輸出,亦即是輸出數位值0。此時第m-1個多工器110(m-1)的輸出等於B[m-1]*2m-1*A=0*2m-1*A=0。當第m-1個暫存器R(m-1)儲存之位元B[m-1]為1時,則第m-1個多工器110(m-1)係以第二輸入端之2m-1*A作為輸出,亦即是輸出2m-1*A之值。此時第m-1個多工器110(m-1)的輸出等於B[m-1]*2m-1*A=1*2m-1*A=2m-1*A。亦即,可以透過第m-1個暫存器R(m-1)儲存之位元B[m-1]的值,來決定是否讓2m-1*A作為第m-1個多工器110(m-1)的輸出。
其中,於第二運算值B之m個位元(亦即是位元B[0]至B[m-1])所對應的運算被執行完畢之後,第0個暫存器R(0)至第m-1個暫存器R(m-1)係分別儲存接著將進行運算之第二運算值B之另外m個位元,以重複執行上述動作。第二運算值B之另外m個位元例如是第二運算值B向右移位m個位元後,取位於最右邊m個位元的位元,例如是B[m]至B[2m-1]作為接著將進行運算之第二運算值B之另外m個位元。第二運算值B之另外m個位元將寫入第0個暫存器R(0)至第m-1個暫存器R(m-1)中,以進行下一次遞迴之運算。上述之使第二運算值B向右移位m個位元的作法,例如係藉由右移運算器來使第二運算值B向右移位m個位元(茲以符號「>>m」表示),右移運算器例如是以移位器136來實現。
其中20A至2m-1A係藉由使第一運算值A分別向左移位(shift left)0至m-1個位元來實現。向左移位例如由m-1個左移運算器來完成,m-1個左移運算器例如是移位器112(1)至移位器112(m-1)。例如,藉由使第一運算值A輸入至執行向左移位1位元(茲以符號「<<1」表示)之移位器112(1),移位器112(1)將輸出21乘以A之值21A。藉由使第一運算值A輸入至執行向左移位2位元(茲以符號「<<2」表示)之移位器112(2),移位器112(2)將輸出22乘以A之值22A。藉由使第一運算值A輸入至執行向左移位m-1位元(茲以符號「<<m-1」表示)之移位器112(m-1),移位器112(m-1)將輸出2m-1乘以A之值2m-1A。
於乘法運算電路108中,透過多個多工器與多個移位器之使用,可以不需複雜電路,即可實現將第二運算值B之m個位元與對
應之2iA之乘積之和的運算,亦即是可以算出之值,相當
具有效率並節省電路面積,並可減少所耗費的功率。
主要運算電路102更可包括一加法運算電路114。加法運算電路114包括一第1個進位保持加法器(Carry save adder,CSA)CSA(1)至一第m個進位保持加法器CSA(m)。第1個進位保持加法器CSA(1)係接收一初始總和運算值Sum(0)、一初始進位運算值Carry(0)、與第0個多工器110(0)之輸出值,並輸出一第1個總和運算值Sum(1)與一第1個進位運算值Carry(1)。第2個進位保持加法器CSA(2)係接收第1個總和運算值Sum(1)、第1個進位運算值Carry(1)、與第1個多工器110(1)之輸出值,並輸出一第2個總和運算值Sum(2)與一第2個進位運算值Carry(2)。以此類推。第m個進位保持加法器
CSA(m)係接收一第m-1個總和運算值Sum(m-1)、一第m-1個進位運算值Carry(m-1)、與第m-1個多工器110(m-1)之輸出值,並輸出一第m個總和運算值Sum(m)與一第m個進位運算值Carry(m)。第m個總和運算值Sum(m)與第m個進位運算值Carry(m)係作為主要運算電路102輸出之總和值D_Sum和進位值D_Carry。此時完成一次遞迴的運算動作。
加法單元106係用以將尋找表104輸出之尋找表輸出值Lout與主要運算電路102輸出之總和值D_Sum和進位值D_Carry相加,並將相加後的值以更新後的總和值D_Sum’和進位值D_Carry’表示,並將更新後的總和值D_Sum’和進位值D_Carry’輸出至主要運算電路102。加法單元106例如係以進位保持加法器來實現。於第二運算值B之m個位元所對應的運算被執行完畢之後,加法單元106輸出之更新後的總和值D_Sum’和進位值D_Carry’係向右移位(shift right)m個位元後(例如是經由2個右移運算器之處理,右移運算器例如是移位器130及132),輸入至主要運算電路102。例如是更新後的總和值D_Sum’和進位值D_Carry’向右移位m個位元後得到的總和值D_Sum”和進位值D_Carry”係輸入至主要運算電路102。例如是在計數器(Counter)116輸出的計數值的控制之下,多工器118選擇數位值0或總和值D_Sum”輸出至暫存器122,以作為初始總和值D_Sum0。而多工器120則在計數器116輸出的計數值的控制之下,選擇數位值0或進位值D_Carry”輸出至至暫存器124,以作為初始進位值D_Carry0。暫存器122與暫存器124例如是以D型正反器來實現。當計數器116輸出的計數值為0時,多工器118與多工器120選擇數位值0作為輸出。當計數器
116輸出的計數值非為0時,多工器118與多工器120分別選擇總和值D_Sum”與進位值D_Carry”作為輸出。初始總和值D_Sum0與初始進位值D_Carry0係分別作為初始總和運算值Sum(0)與初始進位運算值Carry(0),以輸入至第1個進位保持加法器CSA(1),以重複上述步驟。如此,再開始進行下一次遞迴的運算動作。
模數乘法電路100例如更可包括一進位增值加法器(Carry propagate adder,CPA)126與一模數運算器(Mod operator)128。進位增值加法器126用以於第二運算值B的M個全部位元所對應的運算被執行完畢時,將更新後的總和值D_Sum’與進位值D_Carry’相加,以得到一第一結果值Rt1。亦即是將遞迴後得到的總和值D_Sum’與進位值D_Carry’相加,得到暫時的一第一結果值Rt1。模數運算器128用以將第一結果值Rt1進行模數運算,以得到一第二結果值Rt2,並以第二結果值Rt2作為模數乘法電路100之輸出。模數運算器128係在固定時間內對第一結果值Rt1進行模數運算,以得到第二結果值Rt2,即Rt2=Rt1 mod P。得到之Rt2即為本實施例之模數乘法電路100之最終輸出,亦即是第二結果值Rt2=AB/2256 mod P。模數運算器128的使用是為了確保當第一結果值Rt1大於P時(例如是有進位的情形產生時),可以藉由使用模數運算器128來得到小於P之第二結果值Rt2。若第一結果值Rt1不大於P時,亦可使第一結果值Rt1作為本實施例之模數乘法電路100之輸出,亦即是作為AB/2256 mod P之值。
也就是說,於完成一次的遞迴之運算動作後,亦即是乘法運算電路108(包括第0個多工器110(0)至第m-1個多工器110(m-1)
與第0個暫存器R(0)至第m-1個暫存器R(m-1))、加法運算電路114(第1個進位保持加法器CSA(1)至第m個進位保持加法器CSA(m))、尋找表104、與加法單元106完成對應至第二運算值B之m個位元之上述動作之後,模數運算電路100將針對第二運算值B之另外m個位元,進行下一次的遞迴之運算動作。並於重複多次遞迴之動作以完成針對第二運算值B之所有位元運算之後,將總和值D_Sum’與進位值D_Carry’輸入至進位增值加法器126。進位增值加法器126會將完成針對第二運算值B之所有位元運算之後所得到的總和值D_Sum’與進位值D_Carry’相加,以得到第一結果值Rt1。
此外,於尋找表104中,尋找表104例如係記錄與模數P相關的2m個數值,2m個數值係各自可被2m整除。尋找表104的硬體架構例如可以單純地由組合邏輯電路(Combinational logic)實現,而不需使用記憶儲存單元,以減少記憶儲存單元所需之硬體面積及較長的記憶體存取時間。加法單元106係將主要運算電路102輸出之總和值D_Sum和進位值D_Carry與尋找表輸出值Lout相加,以輸出更新後之總和值D_Sum’和進位值D_Carry’。
也就是說,為了實現(式14)中的更新,需要m個進位保持加法器(第1個進位保持加法器CSA(1)至第m個進位保持加法器CSA(m)),來將目前的總和值(D_Sum)與進位值(D_Carry)分別根據暫存器R(i)中儲存的位元(例如是B[i])與2iA相加,其中i=0~(m-1)。同時為了確保(式14)中的分子能被分母除盡,必須再透過加法單元106(亦
即另一個進位保持加法器(第m+1個進位保持加法器))從尋找表104中找出一個與模數P有關的數值(對應至LT)加入。
尋找表104所記錄之與模數P相關的2m個值例如為0、
2m(+1)、2m(+1)、2m(+1)、...、2m(+
1)。其中,為下取整函數(floor function)。尋找表104例如包括一
組合邏輯電路(未繪示)。組合邏輯電路例如包括及邏輯閘(AND gate)、或邏輯閘(OR gate)、反閘(NOT gate)等。藉由使組合邏輯電路之至少一端點電性耦接至一高電位或一低電位,來記錄與模數P相關的上述數值(例如以高電位代表數位值1,以低電位代表數位值0)。並藉由此組合邏輯電路得到與輸入至尋找表之總和值D_Sum對應之與模數P相關的此些數值之一。
上述之進位保持加法器係為一種加法器架構,藉由增加暫存器的數量來減少加法所需的時間。在進行一連串的加法時,此架構能讓關鍵長度(critical path)減少,可大幅增加時脈頻率,同時相較一般加法器擁有減低的硬體的複雜度之優點。其中關鍵長度亦即是訊號完成一次處理時所需經過之路徑,例如總和值遞迴處理一次所需通過的電路路徑。假設輸入為三個數值sum、carry、Z,則進位保持加法器將輸出這些數值的和(sumnew)與進位(carrynew),並滿足sumnew+carrynew=sum+carry+Z。舉例來說,若sum=(00...0,0111)2,carry=(00...0,0000)2,Z=(00...0,1111)2,則sumnew=(00...0,1000)2,carrynew=(00...0,1110)2。
進位增值加法器為一種廣泛的加法器代稱,運算複雜度較進位保持加法器高。當進位增值加法器之輸入為兩數值時X、Y,輸出為一數值result,並滿足result=X+Y。舉例來說,若X=(00...0,0111)2,Y=(00...0,1111)2,則result=(00...1,0110)2。
請參照第2圖,其繪示乃依照本揭露一實施例之一種計算模數乘法之方法的流程圖,包括以下步驟。首先,於步驟202,根據一第一運算值A對應之2iA與目前進行運算之一第二運算值B之m個位元,更新一總和值和一進位值。m為正整數,i為0至m-1之整數。接著,於步驟204,藉由使用一尋找表,記錄與一模數相關的多個數值,並依照總和值選擇此些數值之一作為一尋找表輸出值輸出。之後,進入步驟206,藉由使用一加法單元,根據尋找表輸出值更新總和值和進位值。其中,計算模數乘法之方法係以遞迴的方式,藉由使用第二運算值B之不同的m個位元重複上述步驟以更新總和值和進位值,直到第二運算值B的M個全部位元所對應的運算被執行完畢為止,其中m<M,M為正整數。
請參照第3圖,其繪示依照本揭露另一實施例之一種計算模數乘法之方法的流程圖。首先,於步驟302,接收兩個n位元正整數之輸入值,亦即是第一運算值A與第二運算值B。其中n≦256。當n非為256時,第一運算值A與第二運算值B不足256位元之位元係填充(padding)為0。接著,於步驟304,將總和值D_Sum0與進位值D_Carry0先設成0。之後,進入步驟306,記錄目前之遞迴次數(例如是使用計數器116記錄目前為第幾次之遞迴運算),並判斷目前之遞迴次數是否小
於256/m。若是,則執行步驟308;若否,則進入步驟310。其中m為第二運算值B之一次遞迴運算處理的位元數,且256/m為正整數。
其中,P為模數(P=2255-19),「>>」為右移運算,「LT」為依照第m個進位保持加法器輸出之D_Sum值,查詢尋找表得到之數值。於(m+1)個進位保持加法器與尋找表執行一次運算,以更新一次總和值D_Sum與進位值D_Carry之後,計數器116記錄的計數值係加1,且第二運算值B係向右移位m個位元。
之後,執行步驟310,於執行了256/m次遞迴運算之後,將總和值D_Sum與進位值D_Carry輸入至進位增值加法器來執行加法運算(亦即是將總和值D_Sum與進位值D_Carry相加),以得到一個暫時的值(第一結果值Rt1)。
接著,執行步驟312,將第一結果值Rt1進行模數P的模數運算。之後,執行步驟314,得到最終的模數結果,亦即是(第二結果值Rt2=AB/2256(mod P)。
請參照第4圖,其繪示依照本揭露之第1圖實施例之模數乘法電路,於m值等於4時之模數乘法電路方塊圖。m為一次遞迴運算
處理的位元數。第4圖可以將256位元乘法中遞迴加法的數量降為256/m=64。
於第4圖中,參數P=2255-19。而輸入至模數乘法電路400的第一運算值A與第二運算值B分別為兩個n位元正整數,其中n≦256。當n非256位元時,不足256位元之位元填充(padding)為0。第4圖之模數乘法電路400的輸出為256位元正整數,亦即是第二結果值Rt2=AB/2256(mod P)。
模數乘法電路400包含元件暫存器422與424,例如分別由D型正反器來實現,用於記錄目前之總和值與進位值的值。多工器418與420用以一開始將儲存於暫存器422與424初始總和值D_Sum0與初始進位值D_Carry0設成0,之後將主要運算電路402輸出之總和值D_Sum與進位值D_Carry依照下列(式16)設成更新的值:
其中,數值sum係為目前的總和值(例如是初始總和值D_Sum0),數值carry係為目前的進位值(例如是初始進位值D_Carry0),更新後之總和值D_Sum係為數值sumnew,更新後的進位值D_Carry係為數值carrynew。於完成一次總和值D_Sum與進位值D_Carry的更新之後,第二運算值B係向右平移4的位元而更新為Bnew。
計數器416係用以記錄目前的遞迴次數。為了實現(式16)中的更新,需要透過4個多工器410(0)~410(3)來接收暫存於暫存
器434中的第二運算值B的四個位元,以決定是否將2iA加入目前的總和值(例如是初始總和值D_Sum0)與目前的進位值(例如是初始進位值D_Carry0)。一次遞迴運算處理中,第二運算值B被處理的位元數係為4位元。一次遞迴運算處理完畢後,第二運算值B係藉由移位器436右移4個位元。
進位保持加法器CSA(1)~CSA(4)將目前的總和值(例如是初始總和值D_Sum0)與目前的進位值(例如是初始進位值D_Carry0)分別根據暫存器R(0)~R(3)所儲存的第二運算值B的四個位元與A、2A、4A、8A進行加法動作,其中2A、4A、8A之值係透過將第一運算值A分別經由移位器412(1)~412(3)之分別向左平移1至3個位元後得到。再透過加法單元406(另一個進位保持加法器)將查詢尋找表404中與模數P(P=2255-19)有關的數值(LT),與進位保持加法器CSA(4)輸出之第4個總和運算值Sum(4)與第4個進位運算值Carry(4)相加,以得更新後的總和值D_Carry’和進位值D_Sum’。
尋找表404記錄2m(於本例中等於24=16)個與P相關的數
值,分別為:0、24(+1)、24(+1)、24(+1)、...、
24(+1),亦即是0、16(+1)、16(+1)、16(+
1)、...、16(+1),其中為下取整函數(floor function)。
尋找表404會根據第4個進位保持加法器CSA(4)輸出的第4個總和運算值Sum(4)尋找一筆記錄的資料作為尋找表輸出值Lout,亦即作為(式16)之LT值,尋找表輸出值(LT)與第4個進位保持
加法器CSA(4)輸出的第4個總和運算值Sum(4)與第4個進位運算值Carry(4)透過加法單元406(可為第5個進位保持加法器)進行相加。
進位增值加法器426係將經過64次遞迴後得到之總和值D_Sum’與進位值D_Carry’相加,以得到第一結果值Rt1。模數運算器428將第一結果值Rt1進行模數P(P=2255-19)運算,得第二結果值Rt2(Rt2=AB/2256(mod P))。
本揭露利用上述蒙哥馬利演算法降低模數運算的複雜性,並在不使用記憶體的前提下利用進位保持加法器將256位元乘法中之遞迴加法處理的數量降至64次(此以本揭露之實施例m=4為例,m為一次遞迴運算處理的位元數)。本揭露可僅透過加法器、多工器、移位器等電路元件,即可完成複雜的模數乘法之運算,可以省去複雜的乘法電路,而達到節省電路面積與降低能量損耗的功效。本揭露更同時可提升時脈頻率,而提升電路的處理速度。
本揭露需預處理資料僅為與模數P有關的多個數值(亦即是尋找表中的與模數P相關的多個數值),預處理資料不需隨被乘數與乘數而有所變動。因此,對於固定模數P的模數乘法電路而言,本揭露的預處理資料之尋找表的內容可以利用電路上的真值表、解碼器、或其他組合邏輯電路來實現,而不需要使用到額外的暫存器與記憶體,解決了其他相關先前技術之需要計算預處理資料的問題。
總而言之,本實施所能達到效果包括:(一)不需使用記憶儲存單元:由於尋找表的內容僅與參數P有關,故可由電路上的真值表、解碼器、或其他組合邏輯電路來實現,而不用額外的記憶儲存
單元。(二)提升運算速度:藉由進位保持加法器可縮短關鍵長度並降低遞迴數量,可增加時脈頻率並提升運算速度。(三)低功耗:由於不需要記憶儲存單元,且核心遞迴由進位保持加法器完成,可降低執行時的能量消耗。本揭露之實施例在m=4時,能有良好之上述之功效。
茲將本揭露之實施例的功效與以下之先前技術一至先前技術四進行比較。
先前技術一:M.A.Mehrabi and C.Doche,“Low-Cost,Low-Power FPGA Implementation of ED25519 and CURVE25519 Point Multiplication,”Information,vol.10,no.9,p.285,2019.
先前技術二:Rahimzadeh,L.;Eshghi,M.;Timarchi,S.Radix-4 implementation of redundant interleaved modular multiplication on FPGA.In Proceedings of the 2014 22nd Iranian Conference on Electrical Engineering(ICEE),Tehran,Iran,20-22 May 2014;pp.523-526.
先前技術三:Javeed,K.;Wang,X.Radix-4 and radix-8 booth encoded interleaved modular multipliers over general Fp.In Proceedings of the 2014 24th International Conference on Field Programmable Logic and Applications(FPL),Munich,Germany,2-4 September 2014.
先前技術四:Nassar,M.A.;El-Sayed,L.A.Efficient Interleaved Modular Multiplication Based on Sign Detection.In Proceedings of the 2015 IEEE/ACS 12th International Conference of
Computer Systems and Applications(AICCSA),Marrakech,Morocco,17-20 November 2015.
先前技術一為使用基數8之交錯模數乘法(Radix-8 interleaved modulo multiplication)。先前技術一的缺點在於,每次進行計算前都需要進行資料的預處理,同時需要額外的記憶體以記錄預處理的資料。先前技術二與先前技術一類似,差別在於使用基數4(Radix-4)而非基數8(Radix-8)。雖然使得預處理的資料較少,但卻增加了在256位元乘法中遞迴加法的數量。先前技術三並無對資料進行預處理,使得該架構的關鍵長度較長,時脈頻率較低。先前技術四則使用EIMM(Efficient Interleaved Modular Multiplication Based on Sign Detection)演算法,藉由符號偵測(Sign detection)技巧減低模數運算的複雜度。然而其256位元乘法中遞迴加法的次數卻並沒有減少,而是維持原本的256次,使得整體運算量較多。
本揭露實施例與型號Ed25519相關的低功耗模數乘法架構之上述之先前技術一至四進行比較,其結果如以下表一所示。本揭露實施例與先前技術一至四皆可實現型號Ed25519中的模術乘法運算。於表一中,係列出了本揭露之m值等於4之第一實施例、本揭露之m值等於8之第二實施例、先前技術一至四之運算平台(Compute Platform)、延遲(Latency)、時脈頻率(Clock Frequency)與功率(Power)之比較。由表一可以看出,本揭露之第一實施例與第二實施例所損耗之功率相較於先前技術一至四降低很多,確實具有低功率損耗之特性。
綜上所述,雖然本揭露已以實施例揭露如上,然其並非用以限定本揭露。本揭露所屬技術領域中具有通常知識者,在不脫離
本揭露之精神和範圍內,當可作各種之更動與潤飾。因此,本揭露之保護範圍當視後附之申請專利範圍所界定者為準。
100:模數乘法電路
102:主要運算電路
104:尋找表
106:加法單元
108:乘法運算電路
110(0)~110(m-1),118,120:多工器
112(1)~112(m-1),130,132,136:移位器
114:加法運算電路
116:計數器
122,124,134:暫存器
126:進位增值加法器
128:模數運算器
Claims (18)
- 一種模數乘法電路,包括:一主要運算電路,用以根據一第一運算值A對應之2iA與目前進行運算之一第二運算值B之m個位元,更新一總和值和一進位值,m為正整數,i為0至m-1之整數;一尋找表,用以記錄與一模數相關的複數個數值,並依照該總和值選擇該些數值之一作為一尋找表輸出值輸出;以及一加法單元,用以根據該尋找表輸出值更新該總和值和該進位值,並輸出至該主要運算電路;其中,該主要運算電路係藉由複數個多工器、複數個移位器、與複數個加法器,來產生目前進行運算之該第二運算值B之m個位元之各個位元,與對應之2iA之乘積之和,以更新該總和值和該進位值;其中,該模數乘法電路係以遞迴的方式,藉由使用該第二運算值B之不同的m個位元,來進行上述運算以再次更新該總和值和該進位值,直到該第二運算值B的M個全部位元所對應的運算被執行完畢為止,其中m<M,M為正整數。
- 如請求項1所述之模數乘法電路,其中該主要運算電路包括:一乘法運算電路,包括一第0個多工器至一第m-1個多工器與一第0個暫存器至一第m-1個暫存器,該第0個暫存器至該第m-1個暫存器係各自儲存目前進行運算之該第二運算值B之m個位元 之一,該第0個多工器至該第m-1個多工器之選擇端係分別受控於該第0個暫存器至該第m-1個暫存器之輸出值,該第0個多工器至該第m-1個多工器之第一輸入端係接收數位值0,該第0個多工器至該第m-1個多工器之第二輸入端係分別接收20A至2m-1A,該總和值與該進位值係由該第0個多工器至該第m-1個多工器之輸出值所決定;其中,於該第二運算值B之該m個位元所對應的運算被執行完畢之後,該第0個暫存器至該第m-1個暫存器係分別儲存接著將進行運算之該第二運算值B之另外m個位元,以重複執行上述動作。
- 如請求項2所述之模數乘法電路,其中20A至2m-1A係藉由使該第一運算值A分別向左移位(shift left)0至m-1個位元來實現。
- 如請求項2所述之模數乘法電路,其中該主要運算電路更包括:一加法運算電路,包括一第1個進位保持加法器(Carry save adder,CSA)至一第m個進位保持加法器,該第1個進位保持加法器係接收一初始總和運算值Sum(0)、一初始進位運算值Carry(0)、與該第0個多工器之輸出值,並輸出一第1個總和運算值Sum(1)與一第1個進位運算值Carry(1),該第2個進位保持加法器係接收該第1個總和運算值Sum(1)、該第1個進位運算值Carry(1)、與該第1個多工器之輸出值,並輸出一第2個總和運算值Sum(2)與一第2個進位運算值Carry(2),該第m個進位保持加 法器係接收一第m-1個總和運算值Sum(m-1)、一第m-1個進位運算值Carry(m-1)、與該第m-1個多工器之輸出值,並輸出一第m個總和運算值Sum(m)與一第m個進位運算值Carry(m),該第m個總和運算值Sum(m)與該第m個進位運算值Carry(m)係作為該主要運算電路輸出之該總和值和該進位值。
- 如請求項2所述之模數乘法電路,其中於該第二運算值B之該m個位元所對應的運算被執行完畢之後,該加法單元輸出之更新後的該總和值和該進位值係向右移位(shift right)m個位元後,輸入至該主要運算電路,該第二運算值B係向右移位m個位元後,取m個位元作為儲存於該第0個暫存器至該第m-1個暫存器之接著將進行運算之該第二運算值B之另外m個位元。
- 如請求項1所述之模數乘法電路,其中該尋找表係記錄與該模數相關的2m個數值,該2m個數值係各自可被2m整除,該尋找表係透過一組合邏輯電路實現,該加法單元係將該主要運算電路輸出之該總和值和該進位值與該尋找表輸出值相加,以輸出更新後之該總和值和該進位值。
- 如請求項1所述之模數乘法電路,更包括:一進位增值加法器(Carry propagate adder,CPA),用以於該第二運算值B的M個全部位元所對應的運算被執行完畢時,將更新後的該總和值與該進位值相加,以得到一第一結果值;以及 一模數運算器(Mod operator),用以將該第一結果值進行模數運算,以得到一第二結果值,並以該第二結果值作為該模數乘法電路之輸出。
- 如請求項1所述之模數乘法電路,其中該尋找表係包括一組合邏輯電路(Combinational logic),藉由使該組合邏輯電路之至少一端點電性耦接至一高電位或一低電位,來記錄與該模數相關的該些數值,並藉由該組合邏輯電路得到與輸入至該尋找表之該總和值對應之與該模數相關的該些數值之一。
- 一種計算模數乘法之方法,包括:根據一第一運算值A對應之2iA與目前進行運算之一第二運算值B之m個位元,更新一總和值和一進位值,m為正整數,i為0至m-1之整數;藉由使用一尋找表,記錄與一模數相關的複數個數值,並依照該總和值選擇該些數值之一作為一尋找表輸出值輸出;以及藉由使用一加法單元,根據該尋找表輸出值更新該總和值和該進位值;其中,該計算模數乘法之方法係藉由複數個多工器、複數個移位器、與複數個加法器,來產生目前進行運算之該第二運算值B 之m個位元之各個位元,與對應之2iA之乘積之和,以更新該總和值和該進位值;其中,該計算模數乘法之方法係以遞迴的方式,藉由使用該第二運算值B之不同的m個位元,來重複上述步驟以再次更新該總和值和該進位值,直到該第二運算值B的M個全部位元所對應的運算被執行完畢為止,其中m<M,M為正整數。
- 如請求項10所述之計算模數乘法之方法,其中,根據該第一運算值A對應之2iA與目前進行運算之該第二運算值B之m個位元,更新該總和值和該進位值之步驟,係藉由一主要運算電路來完成,該主要運算電路包括:一乘法運算電路,包括一第0個多工器至一第m-1個多工器與一第0個暫存器至一第m-1個暫存器,該第0個暫存器至該第m-1個暫存器係各自儲存目前進行運算之該第二運算值B之m個位元之一,該第0個多工器至該第m-1個多工器之選擇端係分別受控於該第0個暫存器至該第m-1個暫存器之輸出值,該第0個多工器至該第m-1個多工器之第一輸入端係接收數位值0,該第0個多工器至該第m-1個多工器之第二輸入端係分別接收20A至2m-1A,該總和值與該進位值係由該第0個多工器至該第m-1個多工器之輸出值所決定;其中,於該第二運算值B之該m個位元所對應的運算被執行完畢之後,該第0個暫存器至該第m-1個暫存器係分別儲存接著將進行運算之該第二運算值B之另外m個位元,以重複執行上述動作。
- 如請求項11所述之計算模數乘法之方法,其中20A至2m-1A係藉由使該第一運算值A分別向左移位0至m-1個位元來實現。
- 如請求項11所述之計算模數乘法之方法,其中該主要運算電路更包括:一加法運算電路,包括一第1個進位保持加法器至一第m個進位保持加法器,該第1個進位保持加法器係接收一初始總和運算值Sum(0)、一初始進位運算值Carry(0)、與該第0個多工器之輸出值,並輸出一第1個總和運算值Sum(1)與一第1個進位運算值Carry(1),該第2個進位保持加法器係接收該第1個總和運算值Sum(1)、該第1個進位運算值Carry(1)、與該第1個多工器之輸出值,並輸出一第2個總和運算值Sum(2)與一第2個進位運算值Carry(2),該第m個進位保持加法器係接收一第m-1個總和運算值Sum(m-1)、一第m-1個進位運算值Carry(m-1)、與該第m-1個多工器之輸出值,並輸出一第m個總和運算值Sum(m)與一第m個進位運算值Carry(m),該第m個總和運算值Sum(m)與該第m個進位運算值Carry(m)係作為該主要運算電路輸出之該總和值和該進位值。
- 如請求項11所述之計算模數乘法之方法,其中於該第二運算值B之該m個位元所對應的運算被執行完畢之後,該加法單元輸出之更新後的該總和值和該進位值係向右移位m個位元後,輸入至該主要運算電路,該第二運算值B係向右移位m個位 元後,取m個位元作為儲存於該第0個暫存器至該第m-1個暫存器之接著將進行運算之該第二運算值B之另外m個位元。
- 如請求項10所述之計算模數乘法之方法,其中該尋找表係記錄與該模數相關的2m個數值,該2m個數值係各自可被2m整除,該加法單元係將該總和值和該進位值與該尋找表輸出值相加,以輸出更新後之該總和值和該進位值。
- 如請求項10所述之計算模數乘法之方法,更包括:於該第二運算值B的M個全部位元所對應的運算被執行完畢時,將更新後的該總和值與該進位值相加,以得到一第一結果值;以及將該第一結果值進行模數運算,以得到一第二結果值,並以該第二結果值作為模數乘法之輸出。
- 如請求項10所述之計算模數乘法之方法,其中該尋找表係包括一組合邏輯電路,藉由使該組合邏輯電路之至少一端點電性耦接至一高電位或一低電位,來記錄與該模數相關的該些數值,並藉由該組合邏輯電路得到與輸入至該尋找表之該總和值對應之與該模數相關的該些數值之一。
Priority Applications (3)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
TW110143399A TWI802095B (zh) | 2021-11-22 | 2021-11-22 | 模數乘法電路與對應之計算模數乘法之方法 |
CN202111547064.XA CN116149605A (zh) | 2021-11-22 | 2021-12-16 | 模数乘法电路与计算模数乘法的方法 |
US17/562,793 US11829731B2 (en) | 2021-11-22 | 2021-12-27 | Modular multiplication circuit and corresponding modular multiplication method |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
TW110143399A TWI802095B (zh) | 2021-11-22 | 2021-11-22 | 模數乘法電路與對應之計算模數乘法之方法 |
Publications (2)
Publication Number | Publication Date |
---|---|
TWI802095B true TWI802095B (zh) | 2023-05-11 |
TW202321900A TW202321900A (zh) | 2023-06-01 |
Family
ID=86351246
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
TW110143399A TWI802095B (zh) | 2021-11-22 | 2021-11-22 | 模數乘法電路與對應之計算模數乘法之方法 |
Country Status (3)
Country | Link |
---|---|
US (1) | US11829731B2 (zh) |
CN (1) | CN116149605A (zh) |
TW (1) | TWI802095B (zh) |
Citations (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN1490714A (zh) * | 2002-10-02 | 2004-04-21 | 国际商业机器公司 | 用于高效模数归约和模数乘法的电路和方法 |
US20100235414A1 (en) * | 2009-02-27 | 2010-09-16 | Miaoqing Huang | Scalable Montgomery Multiplication Architecture |
US20110225220A1 (en) * | 2009-02-27 | 2011-09-15 | Miaoqing Huang | Montgomery Multiplication Architecture |
US20200004506A1 (en) * | 2019-09-10 | 2020-01-02 | Intel Corporation | Integrated circuits with modular multiplication circuitry |
US20200150930A1 (en) * | 2018-11-08 | 2020-05-14 | Enveil, Inc. | Reduced and Pipelined Hardware Architecture for Montgomery Modular Multiplication |
Family Cites Families (19)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
AU6516498A (en) | 1997-05-04 | 1998-11-27 | Fortress U & T Ltd. | Improved apparatus & method for modular multiplication & exponentiation based onmontgomery multiplication |
US6973470B2 (en) * | 2001-06-13 | 2005-12-06 | Corrent Corporation | Circuit and method for performing multiple modulo mathematic operations |
KR100484487B1 (ko) | 2002-10-29 | 2005-04-20 | 한국전자통신연구원 | 모듈러 연산 장치 및 방법, 그리고 이를 이용한 rsa암호 연산 시스템 |
KR100481586B1 (ko) | 2002-11-22 | 2005-04-08 | 한국전자통신연구원 | 모듈러 곱셈 장치 |
KR100459732B1 (ko) * | 2002-12-30 | 2004-12-03 | 삼성전자주식회사 | 4-2 컴프레서를 이용한 몽고메리 모듈러 승산기 및 그승산 방법 |
KR100458031B1 (ko) | 2003-03-14 | 2004-11-26 | 삼성전자주식회사 | 몽고메리 유형의 모듈라 곱셈 장치 및 방법 |
JP2004326112A (ja) | 2003-04-25 | 2004-11-18 | Samsung Electronics Co Ltd | マルチプルモジュラス選択器、累算器、モンゴメリー掛け算器、マルチプルモジュラス発生方法、部分掛け発生方法、累算方法、掛け算方法、モジュラス選択器、およびブースレコーダ |
JP2004334212A (ja) | 2003-05-09 | 2004-11-25 | Samsung Electronics Co Ltd | モンゴメリ掛け算器及び掛け算方法 |
US8194855B2 (en) | 2003-06-30 | 2012-06-05 | Oracle America, Inc. | Method and apparatus for implementing processor instructions for accelerating public-key cryptography |
KR20050088506A (ko) | 2004-03-02 | 2005-09-07 | 삼성전자주식회사 | 다중 세정도를 지원하는 확장형 몽고메리 모듈러 곱셈기 |
KR100836737B1 (ko) | 2005-12-13 | 2008-06-10 | 한국전자통신연구원 | 중국인 나머지 정리(crt)와 캐리 저장 가산 기반의모듈러 곱셈 장치 및 방법 |
US7805479B2 (en) | 2006-03-28 | 2010-09-28 | Michael Andrew Moshier | Scalable, faster method and apparatus for montgomery multiplication |
KR20080050226A (ko) | 2006-12-01 | 2008-06-05 | 한국전자통신연구원 | 모듈러 곱셈 장치 및 설계 방법 |
KR100946256B1 (ko) | 2007-12-26 | 2010-03-08 | 대구대학교 산학협력단 | 다정도 캐리 세이브 가산기를 이용한 듀얼필드상의확장성있는 몽고매리 곱셈기 |
CN101304312B (zh) | 2008-06-26 | 2011-07-20 | 复旦大学 | 一种适用于精简指令集处理器的加密单元 |
TWI406548B (zh) | 2010-10-27 | 2013-08-21 | Univ Southern Taiwan | 橢圓曲線加密運算電路 |
FR2974201B1 (fr) | 2011-04-18 | 2013-04-12 | Inside Secure | Circuit de multiplication de montgomery |
US9779359B2 (en) | 2012-03-14 | 2017-10-03 | Microsoft Technology Licensing, Llc | Quantum arithmetic on two-dimensional quantum architectures |
CN103914277B (zh) | 2014-04-14 | 2017-02-15 | 复旦大学 | 一种基于改进的Montgomery模乘算法的可扩展模乘器电路 |
-
2021
- 2021-11-22 TW TW110143399A patent/TWI802095B/zh active
- 2021-12-16 CN CN202111547064.XA patent/CN116149605A/zh active Pending
- 2021-12-27 US US17/562,793 patent/US11829731B2/en active Active
Patent Citations (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN1490714A (zh) * | 2002-10-02 | 2004-04-21 | 国际商业机器公司 | 用于高效模数归约和模数乘法的电路和方法 |
US20100235414A1 (en) * | 2009-02-27 | 2010-09-16 | Miaoqing Huang | Scalable Montgomery Multiplication Architecture |
US20110225220A1 (en) * | 2009-02-27 | 2011-09-15 | Miaoqing Huang | Montgomery Multiplication Architecture |
US20200150930A1 (en) * | 2018-11-08 | 2020-05-14 | Enveil, Inc. | Reduced and Pipelined Hardware Architecture for Montgomery Modular Multiplication |
US20200004506A1 (en) * | 2019-09-10 | 2020-01-02 | Intel Corporation | Integrated circuits with modular multiplication circuitry |
Also Published As
Publication number | Publication date |
---|---|
US11829731B2 (en) | 2023-11-28 |
US20230168863A1 (en) | 2023-06-01 |
TW202321900A (zh) | 2023-06-01 |
CN116149605A (zh) | 2023-05-23 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
Gokhale et al. | Design of area and delay efficient Vedic multiplier using Carry Select Adder | |
Pieper et al. | Efficient Dedicated Multiplication Blocks for 2's Complement Radix-2m Array Multipliers. | |
Ahmed et al. | Improved designs of digit-by-digit decimal multiplier | |
US7958180B2 (en) | Multiplier engine | |
Piestrak | Design of squarers modulo A with low-level pipelining | |
TWI802095B (zh) | 模數乘法電路與對應之計算模數乘法之方法 | |
Mekhallalati et al. | Novel radix finite field multiplier for GF (2 m) | |
Sutter et al. | Comparative study of SRT-dividers in FPGA | |
Putra et al. | Optimized hardware algorithm for integer cube root calculation and its efficient architecture | |
Sharma et al. | Addition Of redundant binary signed digits using RBSD Adder | |
Singh et al. | Modified booth multiplier with carry select adder using 3-stage pipelining technique | |
Kuhlmann et al. | Fast low-power shared division and square-root architecture | |
Kumar et al. | An aproach to manage delay in signal processing via selected multiplier algorithms | |
Varma et al. | Design a low-latency novel fpga based signed multiplier for communication applications | |
Bhosale et al. | Optimization of Partial Products in Modified Booth Multiplier Check for updates | |
Timarchi et al. | Low power modulo 2 n+ 1 adder based on carry save diminished-one number system | |
Echavarria et al. | On the Approximation of Accuracy-configurable Sequential Multipliers via Segmented Carry Chains | |
Sunitha et al. | ENHANCING FPGA ACCELERATORS: HIGH-PERFORMANCE MULTIPLIERS WITH ADVANCED CARRY CHAINS | |
Patel et al. | An Efficient VLSI Architecture for Carry Select Adder Without Multiplexer | |
Shaw et al. | Novel Design of High Speed 64 bit Optimized MAC Unit | |
Choubey et al. | Radix-2 Non-Restoring Asynchronous divider using Shannon based 14 Transistor Full-Adder | |
Jahangir et al. | Optimized Reversible Square Root Circuit | |
Hemanandh et al. | Design and Performance Investigation of Binary Signed Digit Adder | |
Krishna et al. | Convolution Using Delay Efficient Improved Hybrid Multiplier | |
Piestrak | Design of cost-efficient multipliers modulo 2 a− 1 |