TWI823737B - 用於二進制資料的模數除法器和模除運算方法 - Google Patents

用於二進制資料的模數除法器和模除運算方法 Download PDF

Info

Publication number
TWI823737B
TWI823737B TW112100049A TW112100049A TWI823737B TW I823737 B TWI823737 B TW I823737B TW 112100049 A TW112100049 A TW 112100049A TW 112100049 A TW112100049 A TW 112100049A TW I823737 B TWI823737 B TW I823737B
Authority
TW
Taiwan
Prior art keywords
variable
coupled
circuit
value
register
Prior art date
Application number
TW112100049A
Other languages
English (en)
Inventor
楊家驤
林亮昕
康譽齡
林育輝
賴志明
Original Assignee
財團法人工業技術研究院
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by 財團法人工業技術研究院 filed Critical 財團法人工業技術研究院
Priority to TW112100049A priority Critical patent/TWI823737B/zh
Application granted granted Critical
Publication of TWI823737B publication Critical patent/TWI823737B/zh

Links

Images

Landscapes

  • Mobile Radio Communication Systems (AREA)
  • Detection And Prevention Of Errors In Transmission (AREA)
  • Compression, Expansion, Code Conversion, And Decoders (AREA)

Abstract

提供一種用於二進制資料的模數除法器和模除運算方法,包含:根據第一映射表將第一變數和第二變數轉換成變數集合;根據變數集合產生第五變數和第六變數;根據變數集合產生第七變數和第八變數;根據第五變數和第六變數的其中之一更新第一變數,並且根據第五變數和第六變數的其中之另一更新第二變數;根據第七變數和第八變數的其中之一更新第三變數,並且根據第七變數和第八變數的其中之另一更新第四變數;以及響應於判斷第三變數的更新完成而輸出第三變數以作為模除運算的結果。

Description

用於二進制資料的模數除法器和模除運算方法
本揭露是有關於一種對二進制資料進行計算的技術,且特別是有關於一種用於二進制資料的模數除法器和模除運算方法。
物聯網(Internet of things,IoT)的蓬勃發展促使應用的無線裝置數量增加,當西元2025年時,預計將有750億個物聯網裝置被使用。為了防範來自網路的惡意攻擊,物聯網裝置的硬體安全成為近年來資訊安全領域所關注的重要議題。硬體安全是指實體裝置抵抗惡意攻擊的能力。舉例來說,常見的穿戴式裝置、智慧家庭系統或各類型的感測器都需要透過硬體安全技術來保障資料傳輸並避免遭受惡意攻擊。實現硬體安全最常見的方法為應用實施加密演算法的硬體設備,諸如可安裝於終端裝置以實現加密通訊協定的密碼元件、實體裝置的防盜序號、啟動實體裝置時的認證程序(例如:Ed25519簽章認證系統)、智慧自駕車所需的低延遲收發器或智慧錢包所需的加密元件和儲存元件。
然而,物聯網裝置的運算資源或電量有限。因此,如何為物聯網裝置提供一種高效能的運算方式以節省物聯網裝置實施加密演算法所消耗的運算資源和電量,是本領域人員致力的目標之一。
本發明提供一種用於二進制資料的模數除法器和模除運算方法,支援固定執行時間模式或非固定執行時間模式等兩種運作模式,其中固定執行時間模式可避免應用模數除法器的裝置遭到時序攻擊(timing attack)。
本揭露的一種用於二進制資料的模數除法器,包含:第一暫存器,儲存第一變數;第二暫存器,儲存第二變數;第三暫存器,儲存第三變數;第四暫存器,儲存第四變數;第一邏輯映射電路,耦接第一暫存器和第二暫存器,並且根據第一映射表將第一變數和第二變數轉換成變數集合;第二邏輯映射電路,耦接第一邏輯映射電路,並且基於來自第一邏輯映射電路的第一指示而取得變數集合;第一計算電路,耦接第一邏輯映射電路,並且根據變數集合產生第五變數和第六變數;第二計算電路,耦接第二邏輯映射電路,並且根據變數集合產生第七變數和第八變數;第一切換電路,耦接第一計算電路、第一暫存器以及第二暫存器,其中第一切換電路根據第五變數和第六變數的其中之一更新第一變數,並且根據第五變數和第六變數的其中之另一更新第二變數;第二切換電路,耦接第二計算電路、第三暫存器、第四暫存器以及第一切換電路,其中第二切換電路基於來自第一切換電路的第二指示而根據第七變數和第八變數的其中之一更新第三變數,並且根據第七變數和第八變數的其中之另一更新第四變數;以及處理器,耦接第二暫存器,其中處理器判斷第三變數的更新是否完成,並且響應於判斷第三變數的更新完成而輸出第三變數以作為模除運算的結果。
在本揭露的一實施例中,上述的第一計算電路包含:第一乘法器,耦接第一暫存器以及第一邏輯映射電路,並且輸出第一變數與變數集合中的第一值的第一乘積;第二乘法器,耦接第二暫存器以及第一邏輯映射電路,並且輸出第二變數與變數集合中的第二值的第二乘積;第一加法器,耦接第一乘法器以及第二乘法器,並且計算第一乘積與第二乘積的第一加總;以及第一移位器,耦接第一加法器以及第一切換電路,並且移位第一加總以產生第五變數。
在本揭露的一實施例中,上述的第一計算電路更包含:第三乘法器,耦接第一暫存器以及第一邏輯映射電路,並且輸出第一變數與變數集合中的第三值的第三乘積;第四乘法器,耦接第二暫存器以及第一邏輯映射電路,並且輸出第二變數與變數集合中的第四值的第四乘積;第二加法器,耦接第三乘法器以及第四乘法器,並且計算第三乘積與第四乘積的第二加總;以及第二移位器,耦接第二加法器以及第一切換電路,並且移位第二加總以產生第六變數。
在本揭露的一實施例中,上述的第一映射表包含第一變數、第二變數和變數集合之間的映射關係,其中映射關係滿足以下條件: 其中 f為第一變數, g為第二變數, 為變數集合中的第一值, 為變數集合中的第二值, 為變數集合中的第三值, 為變數集合中的第四值,並且 m為正整數。
在本揭露的一實施例中,上述的第二計算電路包含:第五乘法器,耦接第三暫存器以及第二邏輯映射電路,並且輸出第三變數與變數集合中的第一值的第五乘積;第六乘法器,耦接第四暫存器以及第二邏輯映射電路,並且輸出第四變數與變數集合中的第二值的第六乘積;第三加法器,耦接第五乘法器以及第六乘法器,並且計算第五乘積與第六乘積的第三加總;第三移位器,耦接第三加法器,並且移位第三加總;查找表電路,耦接第三加法器,並且根據查找表產生對應於第三加總的第一查找值;第四加法器,耦接第三移位器以及查找表電路,並且計算經移位的第三加總與第一查找值的第四加總;以及第一模數除法器,耦接第四加法器,並且以第四加總模除第一變數的初始值以產生第七變數。
在本揭露的一實施例中,上述的第二計算電路更包含:第七乘法器,耦接第三暫存器以及第二邏輯映射電路,並且輸出第三變數與變數集合中的第三值的第七乘積;第八乘法器,耦接第四暫存器以及第二邏輯映射電路,並且輸出第四變數與變數集合中的第四值的第八乘積;第五加法器,耦接第七乘法器、第八乘法器以及查找表電路,並且計算第七乘積與第八乘積的第五加總,其中查找表電路根據查找表產生對應於第五加總的第二查找值;第四移位器,耦接第五加法器,並且移位第五加總;第六加法器,耦接第四移位器以及查找表電路,並且計算經移位的第五加總與第二查找值的第六加總;以及第二模數除法器,耦接第六加法器,並且以第六加總模除第一變數的初始值以產生第八變數。
在本揭露的一實施例中,響應於第五變數大於或等於第六變數,第一切換電路根據第五變數更新第一變數並且根據第六變數更新第二變數。
在本揭露的一實施例中,響應於第五變數小於第六變數,第一切換電路根據第六變數更新第一變數並且根據第五變數更新第二變數。
在本揭露的一實施例中,響應於第五變數大於或等於第六變數,第二切換電路根據第七變數更新第三變數並且根據第八變數更新第四變數。
在本揭露的一實施例中,響應於第五變數小於第六變數,第二切換電路根據第八變數更新第三變數並且根據第七變數更新第四變數。
在本揭露的一實施例中,上述的第三加總與第一查找值滿足以下條件: 其中 為第一查找值, 為第三加總, p為第一變數的初始值, m為正整數,並且>> m代表向右移位 m個位元。
在本揭露的一實施例中,上述的處理器經配置以執行:響應於第三變數被更新,增加計數值;以及響應於計數值達到目標值,判斷第三變數的更新完成,其中目標值關聯於第三變數的位元數。
在本揭露的一實施例中,上述的處理器經配置以執行:響應於第二變數被更新為零,判斷第三變數的更新完成。
在本揭露的一實施例中,上述的模除運算的模數為第一變數的初始值,其中模除運算的被除數等於第四變數的初始值除以第二變數的初始值。
在本揭露的一實施例中,上述的第四變數的初始值與第二變數的初始值互質。
本揭露的一種用於二進制資料的模除運算方法,包含:取得第一變數、第二變數、第三變數以及第四變數;根據第一映射表將第一變數和第二變數轉換成變數集合;根據變數集合產生第五變數和第六變數;根據變數集合產生第七變數和第八變數;根據第五變數和第六變數的其中之一更新第一變數,並且根據第五變數和第六變數的其中之另一更新第二變數;根據第七變數和第八變數的其中之一更新第三變數,並且根據第七變數和第八變數的其中之另一更新第四變數;以及判斷第三變數的更新是否完成,並且響應於判斷第三變數的更新完成而輸出第三變數以作為模除運算的結果。
基於上述,本揭露的模數除法器具有固定執行時間模式和非固定執行時間模式等兩種模式。在固定執行時間模式時,模數除法器可在固定時間內完成模除運算,藉以避免使用模數除法器的裝置遭受時序攻擊。在非固定執行時間模式時,模數除法器可在最短的時間內計算出模除運算的結果。相較於傳統的模數除法器,本揭露的模數除法器可在較短的時間內完成高位元數的二進制資料的模除運算。
為了使本發明之內容可以被更容易明瞭,以下特舉實施例作為本發明確實能夠據以實施的範例。另外,凡可能之處,在圖式及實施方式中使用相同標號的元件/構件/步驟,係代表相同或類似部件。
圖1根據本揭露的一實施例繪示一種用於二進制資料的模數除法器100的示意圖。模數除法器100可用於產生模除運算[(a/b) mod p]的結果,其中a或b以二進制的n位元呈現的整數,且p為以二進制的n位元呈現的質數,其中p>2,其中a與b互質。
模數除法器100的電路可包含處理器110、多工器11、多工器12、多工器13、多工器14、暫存器21、暫存器22、暫存器23、暫存器24、邏輯映射電路31、邏輯映射電路32、計算電路410、計算電路420、切換電路91以及切換電路92。暫存器21、暫存器22、暫存器23或暫存器24包含但不限於D型正反器。
處理器110可耦接多工器11、多工器12、多工器13以及多工器14,並且為各個多工器選擇輸出資料。處理器110還可耦接至暫存器22(處理器110與暫存器22之間的線路未繪示於圖1中)。暫存器21可耦接多工器11以及邏輯映射電路31,並可儲存變數 f,其中變數 f的初始值可為 p。暫存器22可耦接多工器12以及邏輯映射電路31,並可儲存變數 g,其中變數 g的初始值可為 b。暫存器23可耦接多工器13以及計算電路420,並可儲存變數 x,其中變數 x的初始值可為零。暫存器24可耦接多工器14以及計算電路420,並可儲存變數 y,其中變數 y的初始值可為 a。也就是說,模除運算的模數 p可為變數 f的初始值,且模除運算的被除數( a/ b)可為變數 y的初始值除以變數 g的初始值,其中變數 y的初始值與變數 g的初始值互質(即: ab互質)。
邏輯映射電路31可耦接計算電路410以及邏輯映射電路32。計算電路410可耦接切換電路91。切換電路91可耦接多工器11以及多工器12。邏輯映射電路32可耦接計算電路420以及邏輯映射電路31。計算電路420可耦接切換電路92。切換電路92可耦接多工器13、多工器14以及切換電路91。
計算電路410可包含與暫存器21和邏輯映射電路31耦接的乘法器41、與暫存器22和邏輯映射電路31耦接的乘法器42、與暫存器21和邏輯映射電路31耦接的乘法器43以及與暫存器22和邏輯映射電路31耦接的乘法器44。計算電路410進一步包含與乘法器41和乘法器42耦接的加法器51、與乘法器43和乘法器44耦接的加法器52、與加法器51耦接的移位器61以及與加法器52耦接的移位器62,其中移位器61與移位器62可分別耦接至切換電路91。
計算電路420可包含與暫存器23和邏輯映射電路32耦接的乘法器45、與暫存器24和邏輯映射電路32耦接的乘法器46、與暫存器23和邏輯映射電路32耦接的乘法器47以及與暫存器24和邏輯映射電路32耦接的乘法器48。計算電路420進一步包含與乘法器45和乘法器46耦接的加法器53以及與乘法器47和乘法器48耦接的加法器55。
計算電路420還包含與加法器53耦接的移位器63、與加法器55耦接的移位器64、與加法器53和加法器55耦接的查找表電路70、與移位器63和查找表電路70耦接的加法器54、與移位器64和查找表電路70耦接的加法器56、與加法器54耦接的模數除法器81以及與加法器56耦接的模數除法器82,其中模數除法器81和模數除法器82可分別耦接至切換電路92。
圖2根據本揭露的一實施例繪示利用模數除法器100執行模除運算的流程圖。在步驟S201中,模數除法器100可接收輸入,其中輸入可包含變數 a、變數 b以及變數 p。此外,輸入可進一步包含模數除法器100的操作模式,其中操作模式指示固定執行時間模式與非固定執行時間模式的其中之一。模數除法器100可用於產生模除運算[( a/ b) mod p]的結果。
在步驟S202中,處理器110可根據輸入設定多個暫存器(即:暫存器21、暫存器22、暫存器23和暫存器24),並可將一計數值的初始值設為零。具體來說,處理器110可控制多工器11以使輸入至多工器11的變數 p(即:模數運算的模數 p)傳送至暫存器21,以作為變數 f的初始值。處理器110可控制多工器12以使輸入至多工器12的變數 b傳送至暫存器22,以作為變數 g的初始值。處理器110可控制多工器13以使輸入至多工器13的數值0傳送至暫存器23,以作為變數 x的初始值。處理器110可控制多工器14以使輸入至多工器14的變數 a傳送至暫存器24,以作為變數 y的初始值。值得注意的是,變數 f、變數 g、變數 x和變數 y的位元數需相同。換句話說,變數 p、變數 a和變數 b的位元數需相同。在本實施例中,假設變數 f、變數 g、變數 x和變數 y(或變數 p、變數 a和變數 b)的位元數為 n,其中 n為正整數。舉例來說,若 n=256,代表模數除法器100將會執行256位元的模除運算。
在步驟S203中,處理器110可根據步驟S201的輸入判斷模數除法器100的操作模式是否為固定執行時間模式。若處理器110判斷模數除法器100的操作模式為固定執行時間模式,則進入步驟S204。若處理器110判斷模數除法器100的操作模式為非固定執行時間模式,則進入步驟S205。
在步驟S204中,處理器110可判斷計數值是否達到目標值,其中目標值關聯於變數(即:變數 fgxy)的位元數 n。若處理器110判斷計數值以達到目標值,則進入步驟S206。若處理器110判斷計數值尚未達到目標值,則進入步驟S207。在一實施例中,目標值可為[( n/ m)+1],其中m為步驟S207的每次迭代所能計算的位元數,且 m為正整數。在固定執行時間模式時,模數除法器100可在[( n/ m)+1]個時鐘週期(clock cycle)內完成模除運算。
在步驟S205中,處理器110可判斷暫存器22中的變數 g是否已被更新為零。若處理器110判斷變數 g已被更新為零,則進入步驟S206。若處理器110判斷變數 g尚未被更新為零,則進入步驟S207。在非固定執行時間模式時,模數除法器100可直到變數 g被更新為零為止。模數除法器100平均可在180個時鐘週期內完成256位元的模除運算。
在步驟S206中,處理器110可判斷變數 x的更新完成。處理器110可輸出經更新的變數 x以作為模除運算的結果。
在步驟S207中,處理器110可更新變數 x。在一實施例中,處理器110可控制多工器11和多工器12以使切換電路91的兩個輸出值分別傳送至暫存器21和暫存器22,並可控制多工器13和多工器14以使切換電路92的兩個輸出值分別傳送至暫存器23和暫存器24,藉以更新變數 x。若模數除法器100的操作模式為固定執行時間模式,則處理器110可在變數 x被更新後,將計數值加一。舉例來說,處理器110可耦接至暫存器23以偵測暫存器23中的變數 x是否發生改變。若處理器110偵測到變數 x發生改變,則處理器110可將計數值加一。
變數 x的更新方法具體描述如下。首先,邏輯映射電路31可分別自暫存器21和暫存器22接收變數 f和變數 g。邏輯映射電路31可根據儲存在邏輯映射電路31中的邏輯映射表將變數 f和變數 g轉換成變數集合( , , , )。具體來說,邏輯映射電路31中的邏輯映射表可包含變數 f和變數 g與變數集合( , , , )之間的映射關係,其中映射關係滿足如方程式(1)所示的條件,其中 f為來自暫存器11的變數, g為來自暫存器12的變數, 為輸入至乘法器41的數值, 為輸入至乘法器42的數值, 為輸入至乘法器43的數值, 為輸入至乘法器44的數值,並且 m為步驟S207的每次迭代所能計算的位元數。 …(1)
表1為模數 p等於4時,邏輯映射電路31中的邏輯映射表的範例,其中 s代表 f除以 g的商數所屬的區間。舉例來說,假設變數 p等於4,若變數 f模除4的結果為0,變數 g模除4的結果為1,且變數 f除以變數 g的商數屬於[1,∞]的區間,則邏輯映射電路31可根據表1產生變數集合( , , , )=(1,0,0,4)。 表1
( f模除4, g模除4, s) ( , , , )
(0,1,[1,∞])或(0,3,[1,∞)) (1,0,0,4)
(1,0,[1,∞])或(3,0,[1,∞)) (4,0,0,1)
(1,1,[1,∞]) (1,-1,0,4)
(1,3,[1,3))或(3,1,[1,3)) (2,-2,-1,3)
(1,3,[3, ∞))或(3,1,[3, ∞)) (1,-3,0,4)
(2,1,[1,2))或(2,3,[1,2)) (2,0,-1,2)
(2,1,[2, ∞))或(2,3,[2,∞)) (1,-2,0,4)
(1,2,[1,∞))或(3,2,[1,∞)) (2,-1,0,2)
在取得變數集合( , , , )後,邏輯映射電路31可傳送包含變數集合( , , , )的指示給邏輯映射電路32。邏輯映射電路32可接收指示以基於指示取得變數集合( , , , )。
計算電路410可根據變數集合( , , , )產生變數 以及變數 。具體來說,邏輯映射電路31可將變數集合( , , , )中的數值 、數值 、數值 和數值 分別傳送至乘法器41、乘法器42、乘法器43和乘法器44。乘法器41可計算並輸出變數 f與數值 的乘積 ,且乘法器42可計算並輸出變數 g與數值 的乘積 。加法器51可計算乘積 與乘積 的加總 。移位器61可作為二進制資料的除法器使用。移位器61可將加總 向右移 m個位元(即:將加總 除以 )以產生變數 。乘法器43可計算並輸出變數 f與數值 的乘積 ,且乘法器44可計算並輸出變數 g與數值 的乘積 。加法器52可計算乘積 與乘積 的加總 。移位器62可作為二進制資料的除法器使用。移位器62可將加總 向右移 m個位元(即:將加總 除以 )以產生變數
切換電路91可分別自移位器61和移位器62接收變數 和變數 。接著,切換電路91可根據變數 和變數 的其中之一更新暫存器21中的變數 f,並且根據變數 和變數 的其中之另一更新暫存器22中的變數 g。具體來說,切換電路91可比較變數 和變數 。若 ,則切換電路91可將變數 傳送至多工器11。處理器110可控制多工器11以使變數 傳送至暫存器21以更新暫存器21中的變數 f。此外,切換電路91可將變數 傳送至多工器12。處理器110可控制多工器12以使變數 傳送至暫存器22以更新暫存器22中的變數 g。若 ,則切換電路91可將變數 傳送至多工器11。處理器110可控制多工器11以使變數 傳送至暫存器21以更新暫存器21中的變數 f。此外,切換電路91可將變數 傳送至多工器12。處理器110可控制多工器12以使變數 傳送至暫存器22以更新暫存器22中的變數 g
另一方面,計算電路420可根據變數集合( , , , )產生變數 以及變數 。具體來說,邏輯映射電路32可將變數集合( , , , )中的數值 、數值 、數值 和數值 分別傳送至乘法器45、乘法器46、乘法器47和乘法器48。乘法器45可計算並輸出變數 x與數值 的乘積 ,且乘法器46可計算並輸出變數 y與數值 的乘積 。加法器53可計算乘積 與乘積 的加總 。查找表電路70可根據儲存在查找表電路70中的查找表產生對應於輸入 (即:加總 )的查找值 ,其中查找值 可滿足如方程式(2)所示的條件,其中 p為變數 f的初始值(即:模除運算的模數), m為正整數,並且>> m代表向右移位 m個位元。查找表的大小可為 個位元。 …(2)
移位器63可將加總 向右移 m個位元(即:將加總 除以 )以產生變數 。加法器54可產生變數 以及對應於加總 的查找值 的加總 ,如方程式(3)所示的蒙哥馬利演算法。模數除法器81可將加總 模除變數 f的初始值(即:模數 p)以產生變數 ,如方程式(4)所示。適當的變數 f和變數 g與變數集合( , , , )之間的映射關係可減少可能 的數量。因此,模數除法器81也可由簡單的比較器來替代。 …(3) …(4)
乘法器47可計算並輸出變數 x與數值 的乘積 ,且乘法器48可計算並輸出變數 y與數值 的乘積 。加法器55可計算乘積 與乘積 的加總 。查找表電路70可根據儲存在查找表電路70中的查找表產生對應於輸入 (即:加總 )的查找值 ,其中查找值 可滿足如方程式(2)所示的條件。
移位器64可將加總 向右移 m個位元(即:將加總 除以 )以產生變數 。加法器56可產生變數 以及對應於加總 的查找值 的加總 ,如方程式(5)所示的蒙哥馬利演算法。模數除法器82可將加總 模除變數 f的初始值(即:模數 p)以產生變數 ,如方程式(6)所示。適當的變數 f和變數 g與變數集合( , , , )之間的映射關係可減少可能 的數量。因此,模數除法器82也可由簡單的比較器來替代。 …(5) …(6)
切換電路92可自切換電路91接收包含變數 和變數 的指示。切換電路92可分別自模數除法器81和模數除法器82接收變數 和變數 。接著,切換電路92可根據變數 和變數 的其中之一更新暫存器23中的變數 x,並且根據變數 和變數 的其中之另一更新暫存器24中的變數 y。具體來說,切換電路92可比較變數 和變數 。若 ,則切換電路92可將變數 傳送至多工器13。處理器110可控制多工器13以使變數 傳送至暫存器23以更新暫存器23中的變數 x。此外,切換電路92可將變數 傳送至多工器14。處理器110可控制多工器14以使變數 傳送至暫存器24以更新暫存器24中的變數 y。若 ,則切換電路92可將變數 傳送至多工器13。處理器110可控制多工器13以使變數 傳送至暫存器23以更新暫存器23中的變數 x。此外,切換電路92可將變數 傳送至多工器14。處理器110可控制多工器14以使變數 傳送至暫存器24以更新暫存器24中的變數 y
在更新完暫存器11中的變數 f、暫存器12中的變數 g、暫存器13中的變數 x以及暫存器14中的變數 y後,處理器110可判斷步驟S207已經完成,並且再次執行步驟S203。若模數除法器100操作於固定執行時間模式,則在暫存器13中的變數 x被更新之後且在再次執行步驟S203之前,處理器110可將計數值增加一。
圖3根據本揭露的一實施例繪示一種用於二進制資料的模除運算方法的流程圖,其中所述模除運算方法可由如圖1所示的模數除法器100實施。在步驟S301中,取得第一變數、第二變數、第三變數以及第四變數。在步驟S302中,根據第一映射表將第一變數和第二變數轉換成變數集合。在步驟S303中,根據變數集合產生第五變數和第六變數。在步驟S304中,根據變數集合產生第七變數和第八變數。在步驟S305中,根據第五變數和第六變數的其中之一更新第一變數,並且根據第五變數和第六變數的其中之另一更新第二變數。在步驟S306中,根據第七變數和第八變數的其中之一更新第三變數,並且根據第七變數和第八變數的其中之另一更新第四變數。在步驟S307中,判斷第三變數的更新是否完成,並且響應於判斷第三變數的更新完成而輸出第三變數以作為模除運算的結果。
表2為本揭露的模除運算架構與其他模除運算架構的效能比較,其中文獻[0]代表本揭露提出的模除運算架構。表2顯現本揭露的模除運算架構在執行的速度上與安全性上勝過其他模除運算架構。由於模除運算可視為模數倒數與模數乘法的組合,故文獻[1]、[3]和[4]選擇實現模數倒數,而文獻[2]和[5]則是選擇實現模數除法。文獻[1]使用如文獻[6]所記載之二進制最大公約數演算法(binary GCD)的變形,省略了中間暫存值交換(swap)與紀錄位元差(δ)的過程。每次迭代時減少若干的位元數,在256位元的倒數上平均花費496個時鐘週期完成。文獻[2]同樣採取二進制最大公約數演算法,省略了中間暫存值交換(swap)與紀錄位元差(δ)的過程,同時增加若干的比較程序以及位移(shift)的量以增加每次遞迴減少的位元數。在256位元的模除運算上平均花費169個時鐘周期完成。文獻[3]採用之演算法與迭代過程基本上與文獻[1]相同,但文獻[3]減少了迭代過程中的控制程序與硬體,使得其在256位元的倒數上平均花費341個時鐘周期完成。文獻[4]相較於[2]又新增了更多的位移量,並減少了部分的比較條件以減少硬體複雜度,但其平均的迭代次數卻沒有文獻[2]來得好。文現[4]在256位元的模數倒數上平均花費320個時鐘周期完成。文獻[5]採用演算法與文獻[1]和文獻[3]類似,但其在硬體架構上調換了位移的次序,使得其硬體表現比文獻[1]和文獻[3]好上不少。此外,文獻[5]可確保模除運算的執行時間為固定值,例如,256位元的模除運算能在512個時鐘週期內完成。在本揭露的架構下,256位元的模除運算能在512/m次迭代內完成。此外,為了縮短關鍵路長,本揭露採用了管線化(pipeline)的設計,使得運算能在(512/m+1)個時鐘週期內完成。再者,本揭露的模數除法器可支援非固定執行時間模式,平均能在180個時鐘週期內完成256位元的模除運算。 表2
文獻 運作平台 最大/平均 時鐘週期 頻率 MHz 面積/ 片數 正規化的 面積( )/時間(sec)
[0] ASIC(40-nm)(m=2) 257/180 300 0.598( ) 0.9/0.63
[1] Virtex-II(FPGA,150-nm PL) -/496 34 9146(slices) -/73.4
[2] Virtex-II(FPGA,150-nm PL) -/169 37 9213(slices) -/25.2
[3] Virtex-7(FPGA,28-nm PL) -/341 146 1480(slices) -/1.89
[4] Virtex-7(FPGA,28-nm PL) -/320 144 617(slices) -/0.75
[5] Virtex-7(FPGA,28-nm PL) 512/- 550 645(slices) 1/-
[6] ASIC(40-nm) 512/- 550 0.0546( ) 1/-
[1]: S. Ghosh, D. Mukhopadhyay, and D. Roychowdhury, "Petrel: Power and Timing Attack Resistant Elliptic Curve Scalar Multiplier Based on Programmable GF_p Arithmetic Unit," IEEE Transactions on Circuits and Systems I: Regular Papers, vol. 58, no. 8, pp. 1798-1812, 2011, doi: 10.1109/tcsi.2010.2103190. [2]:J.-W. Lee, S.-C. Chung, H.-C. Chang, and C.-Y. Lee, "Efficient Power-Analysis-Resistant Dual-Field Elliptic Curve Cryptographic Processor Using Heterogeneous Dual-Processing-Element Architecture," IEEE Transactions on Very Large Scale Integration (VLSI) Systems, vol. 22, no. 1, pp. 49-61, 2014, doi: 10.1109/tvlsi.2013.2237930. [3]:M. S. Hossain and Y. Kong, "High-Performance FPGA Implementation of Modular Inversion over F_256 for Elliptic Curve Cryptography," 2015: IEEE International Conference on Data Science and Data Intensive Systems, doi: 10.1109/dsdis.2015.47. [4]:X. Dong, L. Zhang, and X. Gao, "An Efficient FPGA Implementation of ECC Modular Inversion over F256," 2018: ACM, doi: 10.1145/3199478.3199491. [5]:T. Kudithi and S. R, "An efficient hardware implementation of the elliptic curve cryptographic processor over prime field," International Journal of Circuit Theory and Applications, vol. 48, no. 8, pp. 1256-1273, 2020, doi: 10.1002/cta.2759. [6]:M. E. Kaihara and N. Takagi, "A Hardware Algorithm for Modular Multiplication/Division," IEEE Transactions on Computers, vol. 54, no. 01, pp. 12-21, 2005, doi: 10.1109/tc.2005.1.
本揭露基於二進制最大公約數演算法實現Ed25519數位簽章系統中的模除運算。本揭露可提升模除運算的運算速度。256位元的模除運算在512/m次迭代內完成。本揭露採用管線化的設計,使得模除運算可在512/(m+1)個時鐘週期內完成。在固定執行時間模式時,模數除法器平均只需執行180次迭代即可完成模除運算。此外,本揭露透過數對映射關係的設計顯著地降低模數除法器的硬體複雜度。
綜上所述,本揭露以蒙哥馬利演算法為基礎實現可用於Ed25519數位簽章系統的模數除法方法。本揭露透過數對映射關係的設計、更新順序的管線化以及查找表的快速運算性質,降低進行模除運算所需的時鐘週期數。本揭露可降低模數除法器的關鍵路長(critical path length),增加運算效率,並且支援固定執行時間模式與非固定執行時間模式等兩種模式。
100、81、82:模數除法器 110:處理器 11、12、13、14:多工器 21、22、23、24:暫存器 31、32:邏輯映射電路 41、42、43、44、45、46、47、48:乘法器 410、420:計算電路 51、52、53、54、55、56:加法器 61、62、63、64:移位器 70:查找表電路 91、92:切換電路 S201、S202、S203、S204、S205、S206、S207、S301、S302、S303、S304、S305、S306、S307:步驟
圖1根據本揭露的一實施例繪示一種用於二進制資料的模數除法器的示意圖。 圖2根據本揭露的一實施例繪示利用模數除法器執行模除運算的流程圖。 圖3根據本揭露的一實施例繪示一種用於二進制資料的模除運算方法的流程圖。
100、81、82:模數除法器
110:處理器
11、12、13、14:多工器
21、22、23、24:暫存器
31、32:邏輯映射電路
41、42、43、44、45、46、47、48:乘法器
410、420:計算電路
51、52、53、54、55、56:加法器
61、62、63、64:移位器
70:查找表電路
91、92:切換電路

Claims (16)

  1. 一種用於二進制資料的模數除法器,包括: 第一暫存器,儲存第一變數; 第二暫存器,儲存第二變數; 第三暫存器,儲存第三變數; 第四暫存器,儲存第四變數; 第一邏輯映射電路,耦接所述第一暫存器和所述第二暫存器,並且根據第一映射表將所述第一變數和所述第二變數轉換成變數集合; 第二邏輯映射電路,耦接所述第一邏輯映射電路,並且基於來自所述第一邏輯映射電路的第一指示而取得所述變數集合; 第一計算電路,耦接所述第一邏輯映射電路,並且根據所述變數集合產生第五變數和第六變數; 第二計算電路,耦接所述第二邏輯映射電路,並且根據所述變數集合產生第七變數和第八變數; 第一切換電路,耦接所述第一計算電路、所述第一暫存器以及所述第二暫存器,其中所述第一切換電路根據所述第五變數和所述第六變數的其中之一更新所述第一變數,並且根據所述第五變數和所述第六變數的其中之另一更新所述第二變數; 第二切換電路,耦接所述第二計算電路、所述第三暫存器、所述第四暫存器以及所述第一切換電路,其中所述第二切換電路基於來自所述第一切換電路的第二指示而根據所述第七變數和所述第八變數的其中之一更新所述第三變數,並且根據所述第七變數和所述第八變數的其中之另一更新所述第四變數;以及 處理器,耦接所述第二暫存器,其中所述處理器判斷所述第三變數的更新是否完成,並且響應於判斷所述第三變數的所述更新完成而輸出所述第三變數以作為模除運算的結果。
  2. 如請求項1所述的模數除法器,其中所述第一計算電路包括: 第一乘法器,耦接所述第一暫存器以及所述第一邏輯映射電路,並且輸出所述第一變數與所述變數集合中的第一值的第一乘積; 第二乘法器,耦接所述第二暫存器以及所述第一邏輯映射電路,並且輸出所述第二變數與所述變數集合中的第二值的第二乘積; 第一加法器,耦接所述第一乘法器以及所述第二乘法器,並且計算所述第一乘積與所述第二乘積的第一加總;以及 第一移位器,耦接所述第一加法器以及所述第一切換電路,並且移位所述第一加總以產生所述第五變數。
  3. 如請求項2所述的模數除法器,其中所述第一計算電路更包括: 第三乘法器,耦接所述第一暫存器以及所述第一邏輯映射電路,並且輸出所述第一變數與所述變數集合中的第三值的第三乘積; 第四乘法器,耦接所述第二暫存器以及所述第一邏輯映射電路,並且輸出所述第二變數與所述變數集合中的第四值的第四乘積; 第二加法器,耦接所述第三乘法器以及所述第四乘法器,並且計算所述第三乘積與所述第四乘積的第二加總;以及 第二移位器,耦接所述第二加法器以及所述第一切換電路,並且移位所述第二加總以產生所述第六變數。
  4. 如請求項1所述的模數除法器,其中所述第一映射表包含所述第一變數、所述第二變數和所述變數集合之間的映射關係,其中所述映射關係滿足以下條件: 其中 f為所述第一變數, g為所述第二變數, 為所述變數集合中的第一值, 為所述變數集合中的第二值, 為所述變數集合中的第三值, 為所述變數集合中的第四值,並且 m為正整數。
  5. 如請求項1所述的模數除法器,其中所述第二計算電路包括: 第五乘法器,耦接所述第三暫存器以及所述第二邏輯映射電路,並且輸出所述第三變數與所述變數集合中的第一值的第五乘積; 第六乘法器,耦接所述第四暫存器以及所述第二邏輯映射電路,並且輸出所述第四變數與所述變數集合中的第二值的第六乘積; 第三加法器,耦接所述第五乘法器以及所述第六乘法器,並且計算所述第五乘積與所述第六乘積的第三加總; 第三移位器,耦接所述第三加法器,並且移位所述第三加總; 查找表電路,耦接所述第三加法器,並且根據查找表產生對應於所述第三加總的第一查找值; 第四加法器,耦接所述第三移位器以及所述查找表電路,並且計算經移位的所述第三加總與所述第一查找值的第四加總;以及 第一模數除法器,耦接所述第四加法器,並且以所述第四加總模除所述第一變數的初始值以產生所述第七變數。
  6. 如請求項5所述的模數除法器,其中所述第二計算電路更包括: 第七乘法器,耦接所述第三暫存器以及所述第二邏輯映射電路,並且輸出所述第三變數與所述變數集合中的第三值的第七乘積; 第八乘法器,耦接所述第四暫存器以及所述第二邏輯映射電路,並且輸出所述第四變數與所述變數集合中的第四值的第八乘積; 第五加法器,耦接所述第七乘法器、所述第八乘法器以及所述查找表電路,並且計算所述第七乘積與所述第八乘積的第五加總,其中所述查找表電路根據所述查找表產生對應於所述第五加總的第二查找值; 第四移位器,耦接所述第五加法器,並且移位所述第五加總; 第六加法器,耦接所述第四移位器以及所述查找表電路,並且計算經移位的所述第五加總與所述第二查找值的第六加總;以及 第二模數除法器,耦接所述第六加法器,並且以所述第六加總模除所述第一變數的初始值以產生所述第八變數。
  7. 如請求項1所述的模數除法器,其中 響應於所述第五變數大於或等於所述第六變數,所述第一切換電路根據所述第五變數更新所述第一變數並且根據所述第六變數更新所述第二變數。
  8. 如請求項1所述的模數除法器,其中 響應於所述第五變數小於所述第六變數,所述第一切換電路根據所述第六變數更新所述第一變數並且根據所述第五變數更新所述第二變數。
  9. 如請求項1所述的模數除法器,其中 響應於所述第五變數大於或等於所述第六變數,所述第二切換電路根據所述第七變數更新所述第三變數並且根據所述第八變數更新所述第四變數。
  10. 如請求項1所述的模數除法器,其中 響應於所述第五變數小於所述第六變數,所述第二切換電路根據所述第八變數更新所述第三變數並且根據所述第七變數更新所述第四變數。
  11. 如請求項5所述的模數除法器,其中所述第三加總與所述第一查找值滿足以下條件: 其中 為所述第一查找值, 為所述第三加總, p為所述第一變數的初始值, m為正整數,並且>> m代表向右移位 m個位元。
  12. 如請求項1所述的模數除法器,其中所述處理器經配置以執行: 響應於所述第三變數被更新,增加計數值;以及 響應於所述計數值達到目標值,判斷所述第三變數的所述更新完成,其中所述目標值關聯於所述第三變數的位元數。
  13. 如請求項1所述的模數除法器,其中所述處理器經配置以執行: 響應於所述第二變數被更新為零,判斷所述第三變數的所述更新完成。
  14. 如請求項1所述的模數除法器,其中所述模除運算的模數為所述第一變數的初始值,其中所述模除運算的被除數等於所述第四變數的初始值除以所述第二變數的初始值。
  15. 如請求項14所述的模數除法器,其中所述第四變數的所述初始值與所述第二變數的所述初始值互質。
  16. 一種用於二進制資料的模除運算方法,包括: 取得第一變數、第二變數、第三變數以及第四變數; 根據第一映射表將所述第一變數和所述第二變數轉換成變數集合; 根據所述變數集合產生第五變數和第六變數; 根據所述變數集合產生第七變數和第八變數; 根據所述第五變數和所述第六變數的其中之一更新所述第一變數,並且根據所述第五變數和所述第六變數的其中之另一更新所述第二變數; 根據所述第七變數和所述第八變數的其中之一更新所述第三變數,並且根據所述第七變數和所述第八變數的其中之另一更新所述第四變數;以及 判斷所述第三變數的更新是否完成,並且響應於判斷所述第三變數的所述更新完成而輸出所述第三變數以作為模除運算的結果。
TW112100049A 2023-01-03 2023-01-03 用於二進制資料的模數除法器和模除運算方法 TWI823737B (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
TW112100049A TWI823737B (zh) 2023-01-03 2023-01-03 用於二進制資料的模數除法器和模除運算方法

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
TW112100049A TWI823737B (zh) 2023-01-03 2023-01-03 用於二進制資料的模數除法器和模除運算方法

Publications (1)

Publication Number Publication Date
TWI823737B true TWI823737B (zh) 2023-11-21

Family

ID=89722818

Family Applications (1)

Application Number Title Priority Date Filing Date
TW112100049A TWI823737B (zh) 2023-01-03 2023-01-03 用於二進制資料的模數除法器和模除運算方法

Country Status (1)

Country Link
TW (1) TWI823737B (zh)

Citations (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
TWI315612B (en) * 2006-03-21 2009-10-01 Ind Tech Res Inst Apparatus for multiple-divisor prescaler
CN100583639C (zh) * 2006-03-31 2010-01-20 财团法人工业技术研究院 多除数预除器装置
CN101276268B (zh) * 2008-05-23 2010-06-02 武汉飞思科技有限公司 一种计算整数的模数除法的余数的方法
CN205721742U (zh) * 2016-04-29 2016-11-23 九州华兴集成电路设计(北京)有限公司 适用于模除算法的新架构及非交织一维脉动架构

Patent Citations (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
TWI315612B (en) * 2006-03-21 2009-10-01 Ind Tech Res Inst Apparatus for multiple-divisor prescaler
CN100583639C (zh) * 2006-03-31 2010-01-20 财团法人工业技术研究院 多除数预除器装置
CN101276268B (zh) * 2008-05-23 2010-06-02 武汉飞思科技有限公司 一种计算整数的模数除法的余数的方法
CN205721742U (zh) * 2016-04-29 2016-11-23 九州华兴集成电路设计(北京)有限公司 适用于模除算法的新架构及非交织一维脉动架构

Similar Documents

Publication Publication Date Title
Marzouqi et al. A high-speed FPGA implementation of an RSD-based ECC processor
Erdem et al. A general digit-serial architecture for montgomery modular multiplication
Roy et al. High-speed implementation of ECC scalar multiplication in GF (p) for generic Montgomery curves
Chung et al. A high-performance elliptic curve cryptographic processor over GF (p) with SPA resistance
JP3703092B2 (ja) 複数のほぼ完全に同一のプロセッサ要素を用いるモジュラ乗算のためのハードウェア
Shah et al. A high‐speed RSD‐based flexible ECC processor for arbitrary curves over general prime field
Basso et al. Optimized polynomial multiplier architectures for post-quantum KEM Saber
Kudithi An efficient hardware implementation of the elliptic curve cryptographic processor over prime field
Shah et al. Redundant-signed-digit-based high speed elliptic curve cryptographic processor
Liu et al. High performance modular multiplication for SIDH
Wenger et al. An 8-bit AVR-based elliptic curve cryptographic RISC processor for the internet of things
Elkhatib et al. Accelerated RISC-V for post-quantum SIKE
He et al. FPGA Implementation of Compact Hardware Accelerators for Ring-Binary-LWE-based Post-quantum Cryptography
Javeed et al. Area‐time efficient point multiplication architecture on twisted Edwards curve over general prime field GF (p)
TWI823737B (zh) 用於二進制資料的模數除法器和模除運算方法
KR102496446B1 (ko) 모듈러 연산을 위한 워드 병렬 연산 방법
Pornin Optimized binary gcd for modular inversion
Mahapatra et al. RSA cryptosystem with modified Montgomery modular multiplier
Xie et al. A dual-core high-performance processor for elliptic curve cryptography in GF (p) over generic weierstrass curves
Li et al. Improved Algorithms and Implementations for Integer to $\tau $ NAF Conversion for Koblitz Curves
KR20190022023A (ko) 하드웨어 구현된 모듈러 역원 모듈
KR100946256B1 (ko) 다정도 캐리 세이브 가산기를 이용한 듀얼필드상의확장성있는 몽고매리 곱셈기
Kaihara et al. A VLSI algorithm for modular multiplication/division
Reddy et al. MNHOKA-PPA Efficient M-Term Non-Homogeneous Hybrid Overlap-free Karatsuba Multiplier for GF (2 n) Polynomial Multiplier
Ni et al. A high performance SIKE accelerator with high frequency and low area-time product