TWI778902B - 加法遮罩值產生器、加密器以及產生串流金鑰的方法 - Google Patents
加法遮罩值產生器、加密器以及產生串流金鑰的方法 Download PDFInfo
- Publication number
- TWI778902B TWI778902B TW110149573A TW110149573A TWI778902B TW I778902 B TWI778902 B TW I778902B TW 110149573 A TW110149573 A TW 110149573A TW 110149573 A TW110149573 A TW 110149573A TW I778902 B TWI778902 B TW I778902B
- Authority
- TW
- Taiwan
- Prior art keywords
- mask
- mask value
- input
- output
- value
- Prior art date
Links
- 238000000034 method Methods 0.000 title claims description 8
- 239000000654 additive Substances 0.000 claims description 60
- 230000000996 additive effect Effects 0.000 claims description 60
- 125000004122 cyclic group Chemical group 0.000 claims description 42
- JECXXFXYJAQVAH-UHFFFAOYSA-N amg-3 Chemical compound C=1C(O)=C2C3CC(C)=CCC3C(C)(C)OC2=CC=1C1(CCCCCC)SCCS1 JECXXFXYJAQVAH-UHFFFAOYSA-N 0.000 description 10
- 230000007717 exclusion Effects 0.000 description 5
- 238000004364 calculation method Methods 0.000 description 3
- 238000004458 analytical method Methods 0.000 description 2
- 230000000873 masking effect Effects 0.000 description 2
- 230000007246 mechanism Effects 0.000 description 2
- NAWXUBYGYWOOIX-SFHVURJKSA-N (2s)-2-[[4-[2-(2,4-diaminoquinazolin-6-yl)ethyl]benzoyl]amino]-4-methylidenepentanedioic acid Chemical compound C1=CC2=NC(N)=NC(N)=C2C=C1CCC1=CC=C(C(=O)N[C@@H](CC(=C)C(O)=O)C(O)=O)C=C1 NAWXUBYGYWOOIX-SFHVURJKSA-N 0.000 description 1
- 238000005516 engineering process Methods 0.000 description 1
- 230000006870 function Effects 0.000 description 1
- 238000012986 modification Methods 0.000 description 1
- 230000004048 modification Effects 0.000 description 1
- 230000008569 process Effects 0.000 description 1
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/30—Arrangements for executing machine instructions, e.g. instruction decode
- G06F9/30003—Arrangements for executing specific machine instructions
- G06F9/30007—Arrangements for executing specific machine instructions to perform operations on data operands
- G06F9/3001—Arithmetic instructions
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F21/00—Security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
- G06F21/60—Protecting data
- G06F21/602—Providing cryptographic facilities or services
-
- 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/38—Methods or arrangements for performing computations using exclusively denominational number representation, e.g. using binary, ternary, decimal representation
- G06F7/48—Methods or arrangements for performing computations using exclusively denominational number representation, e.g. using binary, ternary, decimal representation using non-contact-making devices, e.g. tube, solid state device; using unspecified devices
- G06F7/50—Adding; Subtracting
- G06F7/501—Half or full adders, i.e. basic adder cells for one denomination
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/30—Arrangements for executing machine instructions, e.g. instruction decode
- G06F9/30003—Arrangements for executing specific machine instructions
- G06F9/30007—Arrangements for executing specific machine instructions to perform operations on data operands
- G06F9/30018—Bit or string instructions
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/30—Arrangements for executing machine instructions, e.g. instruction decode
- G06F9/30003—Arrangements for executing specific machine instructions
- G06F9/30007—Arrangements for executing specific machine instructions to perform operations on data operands
- G06F9/30029—Logical and Boolean instructions, e.g. XOR, NOT
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/30—Arrangements for executing machine instructions, e.g. instruction decode
- G06F9/30003—Arrangements for executing specific machine instructions
- G06F9/30007—Arrangements for executing specific machine instructions to perform operations on data operands
- G06F9/30032—Movement instructions, e.g. MOVE, SHIFT, ROTATE, SHUFFLE
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/30—Arrangements for executing machine instructions, e.g. instruction decode
- G06F9/30003—Arrangements for executing specific machine instructions
- G06F9/30007—Arrangements for executing specific machine instructions to perform operations on data operands
- G06F9/30036—Instructions to perform operations on packed data, e.g. vector, tile or matrix operations
- G06F9/30038—Instructions to perform operations on packed data, e.g. vector, tile or matrix operations using a mask
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L63/00—Network architectures or network communication protocols for network security
- H04L63/04—Network architectures or network communication protocols for network security for providing a confidential data exchange among entities communicating through data packet networks
- H04L63/0428—Network architectures or network communication protocols for network security for providing a confidential data exchange among entities communicating through data packet networks wherein the data content is protected, e.g. by encrypting or encapsulating the payload
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L9/00—Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols
- H04L9/08—Key distribution or management, e.g. generation, sharing or updating, of cryptographic keys or passwords
- H04L9/0861—Generation of secret information including derivation or calculation of cryptographic keys or passwords
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Software Systems (AREA)
- Physics & Mathematics (AREA)
- General Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- Pure & Applied Mathematics (AREA)
- Mathematical Analysis (AREA)
- Computational Mathematics (AREA)
- Computer Security & Cryptography (AREA)
- Mathematical Optimization (AREA)
- Mathematical Physics (AREA)
- Computing Systems (AREA)
- Signal Processing (AREA)
- Computer Networks & Wireless Communication (AREA)
- Computer Hardware Design (AREA)
- Health & Medical Sciences (AREA)
- General Health & Medical Sciences (AREA)
- Bioethics (AREA)
- Storage Device Security (AREA)
- Complex Calculations (AREA)
- Two-Way Televisions, Distribution Of Moving Picture Or The Like (AREA)
- Slot Machines And Peripheral Devices (AREA)
Abstract
本發明提供加法遮罩值產生器。第一運算電路根據第一輸出遮罩值和第四輸出遮罩值而得到第一中間資料。第二運算電路以根據第一中間資料和第四輸入遮罩值而得到第一遮罩組之加法輸出遮罩值。第三運算電路根據第二輸出遮罩值和第三輸出遮罩值而得到第二中間資料。第四運算電路根據第二中間資料和第二輸入遮罩值而得到第二遮罩組之加法輸出遮罩值。第一遮罩組之第一加法輸入遮罩值和第二加法輸入遮罩值分別為第一輸入遮罩值和第二輸入遮罩值。第二遮罩組之第一加法輸入遮罩值和第二加法輸入遮罩值分別為第三輸入遮罩值和第一中間資料。
Description
本發明係有關於一種加密器,且特別係有關於使用安全加法器的查查20(ChaCha20)加密器。
近年來,加解密應用(例如加法-循環移位-互斥或(add-rotate-xor,ARX))廣泛地使用各種電子產品中,而加解密應用非常重視如何保護機密資訊,以避免運算資料被分析而遭竊取。加法為許多運算之重要函數,故加法器被廣泛地用於信號處理、資料保護等應用中。一般而言,常見且有效的保護機制為互斥或遮罩技術,其利用亂數和加解密演算法內的重要資料(或變數)執行互斥或運算,以完成遮罩保護機制。因此,加解密應用需一種能夠執行安全加法運算的安全加法器。
安全加法運算是指在不移除輸入資料之遮罩的情況下,安全加法器能夠完成加法運算,且在計算過程中不會透漏輸入資料的原始值,並能提供已被遮罩值保護的輸出。在執行加解密操作的各種積體電路或電子產品中,能執行安全加法運算的安全加法器會被大量使用,以保護所運算的資料。
本發明提供一種加法遮罩值產生器,用以根據一第一輸入遮罩值、一第二輸入遮罩值、一第三輸入遮罩值與一第四輸入遮罩值以及一第一輸出遮罩值、一第二輸出遮罩值、一第三輸出遮罩值與一第四輸出遮罩值而提供複數遮罩組之一第一加法輸入遮罩值、一第二加法輸入遮罩值和一加法輸出遮罩值。加法遮罩值產生器包括一第一運算電路、一第二運算電路、一第三運算電路和一第四運算電路。上述第一運算電路用以根據上述第一輸出遮罩值和上述第四輸出遮罩值而得到一第一中間資料。上述第二運算電路根據上述第一中間資料和上述第四輸入遮罩值而得到一第一遮罩組之上述加法輸出遮罩值。上述第三運算電路用以根據上述第二輸出遮罩值和上述第三輸出遮罩值而得到一第二中間資料。上述第四運算電路用以根據上述第二中間資料和上述第二輸入遮罩值而得到一第二遮罩組之上述加法輸出遮罩值。上述第一遮罩組之上述第一加法輸入遮罩值為上述第一輸入遮罩值,而上述第一遮罩組之上述第二加法輸入遮罩值為上述第二輸入遮罩值。上述第二遮罩組之上述第一加法輸入遮罩值為上述第三輸入遮罩值,而上述第二遮罩組之上述第二加法輸入遮罩值為上述第一中間資料。
再者,本發明提供一種加密器。上述加密器包括一遮罩產生器、一控制器以及至少一運算器。上述遮罩產生器包括一亂數產生器、一暫存器以及一加法遮罩值產生器。上述亂數產生器配置以隨機地提供一第一輸出遮罩值、一第二輸出遮罩值、一第三輸出遮罩值與一第四輸出遮罩值。上述暫存器用以提供一第一輸入遮罩值、一第二輸入遮罩值、一第三輸入遮罩值與一第四輸入遮罩值。上述加法遮罩值產生器用以根據上述第一、第二、第三和第四輸入遮罩值以及上述第一、第二、第三與第四輸出遮罩值而提供複數遮罩組之一第一加法輸入遮罩值、一第二加法輸入遮罩值和一加法輸出遮罩值。上述控制器用以根據上述第一、第二、第三和第四輸入遮罩值而分別提供一第一已遮罩輸入資料、一第二已遮罩輸入資料、一第三已遮罩輸入資料和一第四已遮罩輸入資料。上述運算器被配置以根據上述第一、第二、第三與第四已遮罩輸入資料以及上述複數遮罩組的上述第一加法輸入遮罩值、上述第二加法輸入遮罩值和上述加法輸出遮罩值而得到一第一已遮罩輸出資料、一第二已遮罩輸出資料、一第三已遮罩輸出資料和一第四已遮罩輸出資料。上述控制器根據上述第一、第二、第三和第四已遮罩輸出資料以及上述第一、第二、第三與第四輸出遮罩值提供符合查查20(chacha20)加密的一串流金鑰。
再者,本發明提供一種產生串流金鑰的方法,適用於查查20(chacha20)加密。經由一亂數產生器,得到四個輸出遮罩值。根據四個輸入遮罩值分別對四個輸入值執行遮罩運算,以得到個別的已遮罩輸入資料。根據上述四個輸入遮罩值和上述四個輸出遮罩值,產生四個遮罩組,其中每一上述遮罩組包括一第一加法輸入遮罩值、一第二加法輸入遮罩值和一加法輸出遮罩值。使用上述四個遮罩組對上述已遮罩輸入資料執行相對應的四分之一回合,以得到所對應的已遮罩輸出資料。根據上述已遮罩輸出資料以及上述四個輸出遮罩值,得到一串流金鑰。
為讓本發明之上述和其他目的、特徵、和優點能更明顯易懂,下文特舉出較佳實施例,並配合所附圖式,作詳細說明如下:
第1圖係顯示根據本發明一些實施例所述之加密器100。加密器100可實施於積體電路(未顯示)中。加密器100包括控制器10、記憶體20、遮罩產生器30以及運算器40_0至40_3。在此實施例中,運算器40_0至40_3的數量僅是例子,並非用以限定本發明。此外,藉由使用遮罩產生器30,加密器100可在不透漏運算元的情況下完成查查20(ChaCha20)加密演算。
第2圖係顯示根據本發明一些實施例所述之ChaCha20演算法。同時參考第1圖和第2圖,ChaCha20演算法的512位元狀態(即state[511:0] )是由128位元常數(即constant[127:0] )、256位元金鑰(即key[255:0] )、32位元計數器(即counter[31:0] )以及96位元非重複的隨機數值(即nonce[95:0] )所組成。首先,控制器10會將512位元狀態的內容值寫入至記憶體20,以作為512位元工作狀態(即working_state[511:0] )。接著,加密器100會使用運算器40_0至40_3以及來自遮罩產生器30的遮罩值AMG而執行10次計算迴圈,而每次計算迴圈會執行八次的四分之一回合(quarter-round ,簡稱Qround),即總共等於兩個回合。在執行每一個四分之一回合時,需要輸入4個32位元輸入值(即a[31:0]、b[31:0]、c[31:0] 以及d[31:0] ,以下簡稱為輸入值a、b、c和d)至所對應的運算器。每一運算器40_0至40_3能執行對應於ChaCha20演算法的加法-循環移位-互斥或(add-rotate-xor,ARX)操作,以得到4個32位元輸出值(即A[31:0]、B[31:0]、C[31:0] 、D[31:0] ,以下簡稱為輸出值A、B、C和D)並儲存在記憶體20中相對應的工作狀態位置。在完成10次計算迴圈之後,控制器10可將512位元狀態(即state[511:0] )加上512位元工作狀態(即working_state[511:0] ),而得到新的512位元狀態並依序輸出成串流金鑰(stream key)以供其他後續電路使用。
遮罩產生器30包括亂數產生器(random number generator,簡稱RNG)32、暫存器(或記憶體)34以及加法遮罩值產生器36。亂數產生器32會根據來自控制器10的信號(例如控制信號、時脈信號等)而產生多個亂數,以作為輸出遮罩值rA、rB、rC與rD並提供至暫存器34以及加法遮罩值產生器36。當亂數產生器32提供輸出遮罩值rA、rB、rC與rD至加法遮罩值產生器36時,暫存器34會同時地提供輸入遮罩值ra、rb、rc與rd至加法遮罩值產生器36。於是,加法遮罩值產生器36可根據輸出遮罩值rA、rB、rC與rD以及輸入遮罩值ra、rb、rc與rd而產生遮罩值AMG至運算器40_0至40_3。此外,在提供輸入遮罩值ra、rb、rc與rd至加法遮罩值產生器36之後,暫存器34會在下一個時脈周期(例如相應於來自控制器10的時脈信號)將輸出遮罩值rA、rB、rC與rD儲存為輸入遮罩值ra、rb、rc與rd。換言之,提供至加法遮罩值產生器36的輸入遮罩值ra、rb、rc與rd是前一個時脈周期(例如相應於來自控制器10的時脈信號)所得到的輸出遮罩值rA、rB、rC與rD。換言之,遮罩產生器30在每個時脈週期會更新輸入遮罩值ra、rb、rc與rd和輸出遮罩值rA、rB、rC與rD。再者,運算器40_0至40_3內的每一加法器可根據遮罩值AMG中所對應的該組之遮罩值rx、ry和rz執行安全加法運算。對每一加法器而言,遮罩值rx和ry是加法輸入遮罩值,而遮罩值rz是加法輸出遮罩值。
在加密器100中,遮罩產生器30亦可提供運算器40_0至40_3的輸入遮罩值ra、rb、rc和rd至控制器10。於是,控制器10可跟據輸入遮罩值ra、rb、rc和rd分別對輸入值a、b、c和d執行遮罩(mask)運算,以得到已遮罩輸入資料a'、b'、c'和d',如下列算式(1)-算式(4)所顯示:
a' = a⊕ra (1);
b' = b⊕rb (2);
c' = c⊕rc (3);以及
d' = d⊕rd (4)。
接著,控制器10可將已遮罩輸入資料a'、b'、c'和d'儲存在記憶體20內,以便提供到運算器40_0至40_3。此外,遮罩產生器30所提供的輸出遮罩值rA、rB、rC和rD是用來對原始的輸出值A、B、C和D提供遮罩保護,以得到已遮罩輸出資料A'、B'、C'和D',如下列算式(5)-算式(8)所顯示:
A' = A⊕rA (5);
B' = B⊕rB (6);
C' = C⊕rC (7);以及
D' = D⊕rD (8)。
於是,控制器10可根據來自遮罩產生器30的輸出遮罩值rA、rB、rC和rD以及由運算器40_0至40_3提供至記憶體20的已遮罩輸出資料A'、B'、C'和D'而得到原始的輸出值A、B、C和D。加法遮罩值產生器36以及運算器40_0至40_3的操作將描述於後。
第3圖係顯示根據本發明一些實施例所述之運算器40。運算器40可應用在第1圖之加密器100中執行四分之一回合運算的運算器40_0至40_3。運算器40包括安全加法器110_1至110_4以及互斥或-循環移位(circular shift)運算單元120、122、124與126,以依序執行四分之一回合運算的八個操作。來自遮罩產生器30的遮罩值AMG包括遮罩組AMG_1、AMG_2、AMG_3和AMG_4。每一遮罩組AMG_1、AMG_2、AMG_3和AMG_4包括對應的遮罩值rx、ry和rz,並提供給個別的安全加法器。例如,遮罩值AMG_1包括遮罩值rx1、ry1和rz1並提供至安全加法器110_1。遮罩值AMG_2包括遮罩值rx2、ry2和rz2並提供至安全加法器110_2。遮罩值AMG_3包括遮罩值rx3、ry3和rz3並提供至安全加法器110_3。遮罩值AMG_4包括遮罩值rx4、ry4和rz4並提供至安全加法器110_4。此外,安全加法器110_1至110_4具有相同的電路配置。
在運算器40中,遮罩組AMG_1、AMG_2、AMG_3和AMG_4是分別對應於安全加法器110_1、110_2、110_3和110_4。在此實施例中,每一安全加法器110_1至110_4是對已分別被遮罩值rx和ry所遮罩的兩個已遮罩資料進行加法運算,並提供已被遮罩值rz所遮罩的運算結果。如第4圖所顯示,第4圖係顯示根據本發明一些實施例所述之安全加法器110。在第4圖中,安全加法器110會將對應於遮罩值rx的已遮罩資料x'和對應於遮罩值ry的已遮罩資料y'進行加法運算,並提供對應於遮罩值rz的運算結果S。在一些實施例中,遮罩值rx是不同於遮罩值ry。在一些實施例中,遮罩值rx是相同於遮罩值ry。值得注意的是,第4圖的安全加法器110僅是例子,並非用以限定本發明。任何在不用移除遮罩值的情況下,可對已被遮罩保護的輸入資料進行加法運算並對輸出提供遮罩保護的加法器都可應用在本發明。
參考回第3圖,在四分之一回合運算的第一操作中,安全加法器110_1會將對應於遮罩值rx1和ry1的已遮罩輸入資料a'和b'進行加法運算,以得到對應於遮罩值rz1的中間資料AO0。如先前算式(1)-算式(2)所描述,可跟據輸入遮罩值ra和rb分別對輸入值a和b執行遮罩運算而得到已遮罩輸入資料a'和b'。因此,遮罩值rx1和遮罩值ry1分別為輸入遮罩值ra和輸入遮罩值rb,如下列算式(9)和算式(10)所顯示:
rx1 = ra (9);以及
ry1 = rb (10)。
在四分之一回合運算的第二操作中,互斥或-循環移位運算單元120會將對應於遮罩值rz1的中間資料AO0和對應於輸入遮罩值rd的已遮罩輸入資料d'執行互斥或運算(XOR),並對互斥或結果執行16位元左循環移位(<<<16),以得到中間資料XS0及其遮罩值rs1,其中遮罩值rs1如下列算式(11)所顯示:
rs1 = (rz1⊕rd)<<<16 (11)。
在四分之一回合運算的第三操作中,安全加法器110_2會將對應於遮罩值rx2的已遮罩輸入資料c'和對應於遮罩值ry2的中間資料XS0進行加法運算,以得到對應於遮罩值rz2的中間資料AO1。如先前算式(3)所描述,可跟據輸入遮罩值rc對輸入值c執行遮罩運算而得到已遮罩輸入資料c'。因此,遮罩值rx2為輸入遮罩值rc,如下列算式(12)所顯示:
rx2 = rc (12)。
此外,對中間資料XS0而言,遮罩值ry2是等於遮罩值rs1,如下列算式(13)所顯示:
ry2 = rs1 (13)。
在四分之一回合運算的第四操作中,互斥或-循環移位運算單元122會將對應於輸入遮罩值rb的已遮罩輸入資料b'和對應於遮罩值rz2的中間資料AO1執行互斥或運算,並對互斥或結果執行12位元左循環移位(<<<12),以得到中間資料XS1及其遮罩值rs2,其中遮罩值rs2如下列算式(14)所顯示:
rs2 = (rz2⊕rb)<<<12 (14)。
在四分之一回合運算的第五操作中,安全加法器110_3會將對應於遮罩值rx3的中間資料AO0和對應於遮罩值ry3的中間資料XS1進行加法運算,以得到對應於遮罩值rz3的中間資料AO2。如先前所描述,中間資料AO0是安全加法器110_1根據遮罩值rz1所提供。因此,遮罩值rx3是等於遮罩值rz1,如下列算式(15)所顯示:
rx3 = rz1 (15)。
此外,對中間資料XS1而言,遮罩值ry3是等於遮罩值rs2,如下列算式(16)所顯示:
ry3 = rs2 (16)。
再者,對應於輸出遮罩值rA的已遮罩輸出資料A'是等於對應於遮罩值rz3的中間資料AO2。因此,遮罩值rz3是等於輸出遮罩值rA,如下列算式(17)所顯示:
rz3 = rA (17)。
在四分之一回合運算的第六操作中,互斥或-循環移位運算單元124會將對應於遮罩值rz3的中間資料AO2和對應於遮罩值rs1的中間資料XS0執行互斥或運算,並對互斥或結果執行8位元左循環移位(<<<8),以得到中間資料XS2及其遮罩值rs3。此外,對應於輸出遮罩值rD的已遮罩輸出資料D'是等於對應於遮罩值rs3的中間資料XS2。因此,根據算式(11),遮罩值rs3如下列算式(18)所顯示:
rs3 = (rz3⊕rs1)<<<8
= (rz3⊕((rz1⊕rd)<<<16))<<<8
= rD (18)。
因此,根據算式(17)和算式(18),可得到rz1的值,如下列算式(19)所顯示:
rz1 = (((rD>>>8)⊕rA)>>>16)⊕rd (19)。
在四分之一回合運算的第七操作中,安全加法器110_4會將對應於遮罩值rx4的中間資料AO1和對應於遮罩值ry4的中間資料XS2進行加法運算,以得到對應於遮罩值rz4的中間資料AO3。如先前所描述,中間資料AO1是安全加法器110_2根據遮罩值rz2所提供。因此,遮罩值rx4是等於遮罩值rz2,如下列算式(20)所顯示:
rx4 = rz2 (20)。
此外,對應於輸出遮罩值rD的已遮罩輸出資料D'是等於對應於遮罩值ry4的中間資料XS2。因此,遮罩值ry4是等於輸出遮罩值rD,如下列算式(21)所顯示:
ry4 = rD (21)。
再者,對應於輸出遮罩值rC的已遮罩輸出資料C'是等於對應於遮罩值rz4的中間資料AO3。因此,遮罩值rz4是等於輸出遮罩值rC,如下列算式(22)所顯示:
rz4 = rC (22)。
在四分之一回合運算的第八操作中,互斥或-循環移位運算單元126會將對應於遮罩值rs2的中間資料XS1和對應於輸出遮罩值rC的中間資料AO3執行互斥或運算,並對互斥或結果執行7位元左循環移位(<<<7),以得到中間資料XS3及其遮罩值rs4。因此,根據算式(14),遮罩值rs4如下列算式(23)所顯示:
rs4 = (rC⊕rs2)<<<7
= (rC⊕((rz2⊕rb)<<<12))<<<7 (23)。
此外,對應於輸出遮罩值rB的已遮罩輸出資料B'是等於對應於遮罩值rs4的中間資料XS3,如下列算式(24)所顯示:
rs4 = rB (24)。
因此,根據算式(23)和算式(24),可得到rz2的值,如下列算式(25)所顯示:
rz2 = (((rB>>>7)⊕rC)>>>12)⊕rb (25)。
根據算式(11)、(13)以及(19),可得到ry2的值,如下列算式(26)所顯示:
ry2 = rs1=(rz1⊕rd)<<<16
=(((((rD>>>8)⊕rA)>>>16)⊕rd)⊕rd)<<<16
=(rD>>>8)⊕rA (26)。
再者,根據算式(14)、(16)以及(25),可得到ry3的值,如下列算式(27)所顯示:
ry3 = rs2= (rz2⊕rb)<<<12
=((((rB>>>7)⊕rC)>>>12)⊕rb⊕rb)<<<12
=(rB>>>7)⊕rC (27)。
第5圖係顯示根據本發明一些實施例所述之第1圖之加法遮罩值產生器36。加法遮罩值產生器36可根據輸入遮罩值ra、rb、rc與rd和輸出遮罩值rA、rB、rC與rD而產生包括遮罩組AMG_1、AMG_2、AMG_3和AMG_4的遮罩值AMG。加法遮罩值產生器36包括運算電路130-136,而每一運算電路包括互斥或單元以及循環移位運算單元。
由算式(9)可知,加法遮罩值產生器36是直接將輸入遮罩值ra指派為遮罩組AMG_1的遮罩值rx1。此外,根據算式(10),加法遮罩值產生器36是直接將輸入遮罩值rb指派為遮罩組AMG_1的遮罩值ry1,並提供輸入遮罩值rb至運算電路136。根據算式(12),加法遮罩值產生器36是直接將輸入遮罩值rc指派為遮罩組AMG_2的遮罩值rx2。根據算式(17),加法遮罩值產生器36是直接將輸出遮罩值rA指派為遮罩組AMG_3的遮罩值rz3,並提供輸出遮罩值rA至運算電路130。根據算式(22),加法遮罩值產生器36是直接將輸出遮罩值rC指派為遮罩組AMG_4的遮罩值rz4,並提供輸出遮罩值rC至運算電路132。根據算式(21),加法遮罩值產生器36是直接將輸出遮罩值rD指派為遮罩組AMG_4的遮罩值ry4,並提供輸出遮罩值rD至運算電路130。
運算電路130包括循環移位運算單元160以及互斥或單元150。根據算式(26),循環移位運算單元160會對輸出遮罩值rD執行8位元右循環移位(>>>8)以得到中間資料IM1。接著,互斥或單元150會對中間資料IM1和輸出遮罩值rA執行互斥或運算,以得到中間資料IM2。加法遮罩值產生器36會將中間資料IM2指派為遮罩組AMG_2的遮罩值ry2。運算電路134包括循環移位運算單元164以及互斥或單元154。根據算式(19),循環移位運算單元164會對中間資料IM2執行16位元右循環移位(>>>16)以得到中間資料IM3。接著,互斥或單元154會對中間資料IM3和輸入遮罩值rd執行互斥或運算,以得到遮罩組AMG_1的遮罩值rz1和遮罩組AMG_3的遮罩值rx3(如算式(15)所顯示)。值得注意的是,運算電路130的操作是對應於第3圖的互斥或-循環移位運算單元124,其中互斥或-循環移位運算單元124是執行8位元左循環移位(<<<8),而運算電路130的循環移位運算單元160是執行8位元右循環移位(>>>8)。此外,運算電路134的操作是對應於第3圖的互斥或-循環移位運算單元120,其中互斥或-循環移位運算單元120是執行16位元左循環移位(<<<16),而運算電路134的循環移位運算單元164是執行16位元右循環移位(>>>16)。
運算電路132包括循環移位運算單元162以及互斥或單元152。根據算式(27),循環移位運算單元162會對輸出遮罩值rB執行7位元右循環移位(>>>7)以得到中間資料IM4。接著,互斥或單元152會對中間資料IM4和輸出遮罩值rC執行互斥或運算,以得到中間資料IM5。加法遮罩值產生器36會將中間資料IM5指派為遮罩組AMG_3的遮罩值ry3。運算電路136包括循環移位運算單元166以及互斥或單元156。根據算式(25),循環移位運算單元166會對中間資料IM5執行12位元右循環移位(>>>12)以得到中間資料IM6。接著,互斥或單元156會對中間資料IM6和輸入遮罩值rb執行互斥或運算,以得到遮罩組AMG_2的遮罩值rz2和遮罩組AMG_4的遮罩值rx4(如算式(20)所顯示)。值得注意的是,運算電路132的操作是對應於第3圖的互斥或-循環移位運算單元126,其中互斥或-循環移位運算單元126是執行7位元左循環移位(<<<7),而運算電路136的循環移位運算單元162是執行7位元右循環移位(>>>7)。此外,運算電路136的操作是對應於第3圖的互斥或-循環移位運算單元122,其中互斥或-循環移位運算單元122是執行12位元左循環移位(<<<12),而運算電路136的循環移位運算單元166是執行12位元右循環移位(>>>12)。
在第5圖中,藉由使用互斥或單元(或互斥或閘)150、152、154和156以及循環移位運算單元(或循環移位器)160、162、164和166,加法遮罩值產生器36可產生執行chacha20加密演算法中所需之加法運算的所有加法輸入遮罩值(例如遮罩值rx1-rx4和遮罩值ry1-ry4)和所有加法輸出遮罩值(例如遮罩值rz1-rz4)。
第6圖係顯示根據本發明一些實施例所述之產生串流金鑰的方法,適用於chacha20的加密運算。第6圖的產生串流金鑰的方法可由第1圖的加密器100所執行。
首先,在步驟S210,得到輸入遮罩值ra、rb、rc和rd以及輸出遮罩值rA、rB、rC和rD。如先前所描述,輸出遮罩值rA、rB、rC和rD和輸入遮罩值ra、rb、rc和rd可以是隨機亂數。此外,輸入遮罩值ra、rb、rc和rd是前一時脈週期的輸出遮罩值rA、rB、rC和rD。
接著,在步驟S220,根據輸入遮罩值ra、rb、rc與rd和輸出遮罩值rA、rB、rC與rD,產生遮罩值AMG。如先前所描述,遮罩值AMG包括遮罩組AMG_1、AMG_2、AMG_3和AMG_4。此外,每一遮罩組AMG_1、AMG_2、AMG_3和AMG_4包括對應的遮罩值rx、ry和rz。如先前所描述,遮罩值AMG是透過四個互斥或單元(例如第5圖的互斥或單元150-156)以及四個循環移位運算單元(例如第5圖的循環移位運算單元160-166)而產生,其中每一循環移位運算單元的移位方向是相反於四分之一回合中所對應之循環移位的方向。此外,每一循環移位運算單元的移位的數量是相同於四分之一回合中所對應之循環移位的移位數量。
在步驟S230,當輸入值a、b、c和d尚未被遮罩時,根據輸入遮罩值ra、rb、rc與rd分別對輸入值a、b、c和d執行遮罩運算,以得到所對應的已遮罩輸入資料a'、b'、c'和d'。在一些實施例中,步驟S220和步驟S230的順序可以對調。
在步驟S240,使用遮罩值AMG對已遮罩輸入資料a'、b'、c'和d'執行相對應的四分之一回合,以得到已遮罩輸出資料A'、B'、C'和D'。重複上述步驟,直到每一計算迴圈內的八次的四分之一回合已執行完成。
在步驟S250,根據已遮罩輸出資料A'、B'、C'和D'和輸出遮罩值rA、rB、rC與rD得到新的位元工作狀態,並依序輸出成串流金鑰。於是,完成chacha20的加密運算。
根據本發明實施例,在執行ChaCha20的四分之一回合(quarter-round )時,藉由使用遮罩產生器30來產生安全加法器所需的加法輸入遮罩值和加法輸出遮罩值,可保護ChaCha20運算中的關鍵變數不被功率分析攻擊而洩漏重要資訊。
雖然本發明已以較佳實施例發明如上,然其並非用以限定本發明,任何所屬技術領域中包括通常知識者,在不脫離本發明之精神和範圍內,當可作些許之更動與潤飾,因此本發明之保護範圍當視後附之申請專利範圍所界定者為準。
10:控制器
20:記憶體
30:遮罩產生器
32:亂數產生器
34:暫存器
36:加法遮罩值產生器
40_0-40_3:運算器
100:加密器
110_1-110_4:安全加法器
120,122,124,126:互斥或-循環移位運算單元
130-136:運算電路
150-156:互斥或單元
160-166:循環移位運算單元
AMG:遮罩值
AMG_1-AMG_4:遮罩組
AO0-AO3:中間資料
A',B',C',D':已遮罩輸出資料
a',b',c',d':已遮罩輸入資料
IM1-IM6:中間資料
rA,rB,rC,rD:輸出遮罩值
ra,rb,rc,rd:輸入遮罩值
rx,ry,rz,rx1-rx4,ry1-ry4,rz1-rz4:遮罩值
S:運算結果
S210-S250:步驟
x',y':已遮罩資料
XS0-XS3:中間資料
第1圖係顯示根據本發明一些實施例所述之加密器。
第2圖係顯示根據本發明一些實施例所述之ChaCha20演算法。
第3圖係顯示根據本發明一些實施例所述之運算器。
第4圖係顯示根據本發明一些實施例所述之安全加法器。
第5圖係顯示根據本發明一些實施例所述之第1圖之加法遮罩值產生器。
第6圖係顯示根據本發明一些實施例所述之產生串流金鑰的方法,適用於chacha20的加密運算。
10:控制器
20:記憶體
30:遮罩產生器
32:亂數產生器
34:暫存器
36:加法遮罩值產生器
40_0-40_3:運算器
100:加密器
AMG:遮罩值
A',B',C',D':已遮罩輸出資料
a',b',c',d':已遮罩輸入資料
rA,rB,rC,rD:輸出遮罩值
ra,rb,rc,rd:輸入遮罩值
Claims (10)
- 一種加法遮罩值產生器,用以根據一第一輸入遮罩值、一第二輸入遮罩值、一第三輸入遮罩值與一第四輸入遮罩值以及一第一輸出遮罩值、一第二輸出遮罩值、一第三輸出遮罩值與一第四輸出遮罩值而提供複數遮罩組之一第一加法輸入遮罩值、一第二加法輸入遮罩值和一加法輸出遮罩值,包括: 一第一運算電路,用以根據上述第一輸出遮罩值和上述第四輸出遮罩值而得到一第一中間資料; 一第二運算電路,用以根據上述第一中間資料和上述第四輸入遮罩值而得到一第一遮罩組之上述加法輸出遮罩值; 一第三運算電路,用以根據上述第二輸出遮罩值和上述第三輸出遮罩值而得到一第二中間資料;以及 一第四運算電路,用以根據上述第二中間資料和上述第二輸入遮罩值而得到一第二遮罩組之上述加法輸出遮罩值; 其中上述第一遮罩組之上述第一加法輸入遮罩值為上述第一輸入遮罩值,而上述第一遮罩組之上述第二加法輸入遮罩值為上述第二輸入遮罩值; 其中上述第二遮罩組之上述第一加法輸入遮罩值為上述第三輸入遮罩值,而上述第二遮罩組之上述第二加法輸入遮罩值為上述第一中間資料。
- 如請求項1之加法遮罩值產生器,其中一第三遮罩組之上述第一加法輸入遮罩值相同於上述第一遮罩組之上述加法輸出遮罩值、上述第三遮罩組之上述第二加法輸入遮罩值為上述第二中間資料以及上述第三遮罩組之上述加法輸出遮罩值為上述第一輸出遮罩值。
- 如請求項1之加法遮罩值產生器,其中一第四遮罩組之上述第一加法輸入遮罩值相同於上述第二遮罩組之上述加法輸出遮罩值、上述第四遮罩組之上述第二加法輸入遮罩值為上述第四輸出遮罩值以及上述第四遮罩組之上述加法輸出遮罩值為上述第三輸出遮罩值。
- 如請求項1之加法遮罩值產生器,其中上述第一運算電路包括: 一第一循環移位器,用以對上述第四輸出遮罩值執行8位元右循環移位,以得到一第三中間資料;以及 一第一互斥或閘,用以接收上述第三中間資料和上述第一輸出遮罩值,以提供上述第一中間資料。
- 如請求項1之加法遮罩值產生器,其中上述第二運算電路包括: 一第二循環移位器,用以對上述第一中間資料執行16位元右循環移位,以得到一第四中間資料;以及 一第二互斥或閘,用以接收上述第四中間資料和上述第四輸入遮罩值,以提供上述第一遮罩組之上述加法輸出遮罩值。
- 一種加密器,包括: 一遮罩產生器,包括: 一亂數產生器,配置以隨機地提供一第一輸出遮罩值、一第二輸出遮罩值、一第三輸出遮罩值與一第四輸出遮罩值; 一暫存器,用以提供一第一輸入遮罩值、一第二輸入遮罩值、一第三輸入遮罩值與一第四輸入遮罩值;以及 一加法遮罩值產生器,用以根據上述第一、第二、第三和第四輸入遮罩值以及上述第一、第二、第三與第四輸出遮罩值而提供複數遮罩組之一第一加法輸入遮罩值、一第二加法輸入遮罩值和一加法輸出遮罩值; 一控制器,用以根據上述第一、第二、第三和第四輸入遮罩值而分別提供一第一已遮罩輸入資料、一第二已遮罩輸入資料、一第三已遮罩輸入資料和一第四已遮罩輸入資料;以及 至少一運算器,被配置以根據上述第一、第二、第三與第四已遮罩輸入資料以及上述遮罩組的上述第一加法輸入遮罩值、上述第二加法輸入遮罩值和上述加法輸出遮罩值而得到一第一已遮罩輸出資料、一第二已遮罩輸出資料、一第三已遮罩輸出資料和一第四已遮罩輸出資料; 其中上述控制器根據上述第一、第二、第三和第四已遮罩輸出資料以及上述第一、第二、第三與第四輸出遮罩值而提供符合查查20(chacha20)加密的一串流金鑰。
- 如請求項6之加密器,其中上述加法遮罩值產生器包括: 一第一運算電路,用以根據上述第一輸出遮罩值和上述第四輸出遮罩值而得到一第一中間資料; 一第二運算電路,用以根據上述第一中間資料和上述第四輸入遮罩值而得到一第一遮罩組之上述加法輸出遮罩值; 一第三運算電路,用以根據上述第二輸出遮罩值和上述第三輸出遮罩值而得到一第二中間資料;以及 一第四運算電路,用以根據上述第二中間資料和上述第二輸入遮罩值而得到一第二遮罩組之上述加法輸出遮罩值; 其中上述第一遮罩組之上述第一加法輸入遮罩值為上述第一輸入遮罩值,而上述第一遮罩組之上述第二加法輸入遮罩值為上述第二輸入遮罩值; 其中上述第二遮罩組之上述第一加法輸入遮罩值為上述第三輸入遮罩值,而上述第二遮罩組之上述第二加法輸入遮罩值為上述第一中間資料。
- 如請求項7之加密器,其中每一上述第一、第二、第三和第四運算電路包括一循環移位器以及一互斥或閘,以及每一上述循環移位器被配置為執行不同位元數量的右循環移位。
- 一種產生串流金鑰的方法,適用於查查20(chacha20)加密,包括: 經由一亂數產生器,得到四個輸出遮罩值; 根據四個輸入遮罩值分別對四個輸入值執行遮罩運算,以得到個別的已遮罩輸入資料; 根據上述四個輸入遮罩值和上述四個輸出遮罩值,產生四個遮罩組,其中每一上述遮罩組包括一第一加法輸入遮罩值、一第二加法輸入遮罩值和一加法輸出遮罩值; 使用上述四個遮罩組對上述已遮罩輸入資料執行相對應的四分之一回合,以得到所對應的已遮罩輸出資料;以及 根據上述已遮罩輸出資料以及上述四個輸出遮罩值,得到一串流金鑰。
- 如請求項9之產生串流金鑰的方法,其中上述四個輸入遮罩值是在先前的時脈週期隨機產生的上述四個輸出遮罩值。
Priority Applications (3)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
TW110149573A TWI778902B (zh) | 2021-12-30 | 2021-12-30 | 加法遮罩值產生器、加密器以及產生串流金鑰的方法 |
CN202211315849.9A CN116415274A (zh) | 2021-12-30 | 2022-10-26 | 加法掩膜值产生器、加密器以及产生串流金钥的方法 |
US18/090,818 US20230214216A1 (en) | 2021-12-30 | 2022-12-29 | Addition mask value generator, encryptor and method for generating stream key |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
TW110149573A TWI778902B (zh) | 2021-12-30 | 2021-12-30 | 加法遮罩值產生器、加密器以及產生串流金鑰的方法 |
Publications (2)
Publication Number | Publication Date |
---|---|
TWI778902B true TWI778902B (zh) | 2022-09-21 |
TW202327307A TW202327307A (zh) | 2023-07-01 |
Family
ID=84958358
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
TW110149573A TWI778902B (zh) | 2021-12-30 | 2021-12-30 | 加法遮罩值產生器、加密器以及產生串流金鑰的方法 |
Country Status (3)
Country | Link |
---|---|
US (1) | US20230214216A1 (zh) |
CN (1) | CN116415274A (zh) |
TW (1) | TWI778902B (zh) |
Citations (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US8009827B2 (en) * | 2006-02-22 | 2011-08-30 | Hitachi, Ltd. | Encryption processing method and encryption processing device |
US20120150933A1 (en) * | 2010-12-13 | 2012-06-14 | International Business Machines Corporation | Method and data processing unit for calculating at least one multiply-sum of two carry-less multiplications of two input operands, data processing program and computer program product |
TW201445965A (zh) * | 2013-05-23 | 2014-12-01 | Mstar Semiconductor Inc | 密碼裝置以及密鑰保護方法 |
US20190042249A1 (en) * | 2018-04-02 | 2019-02-07 | Vikram Suresh | Hardware accelerators and methods for high-performance authenticated encryption |
US20210173618A1 (en) * | 2016-03-03 | 2021-06-10 | Cryptography Research, Inc. | Converting a boolean masked value to an arithmetically masked value for cryptographic operations |
-
2021
- 2021-12-30 TW TW110149573A patent/TWI778902B/zh active
-
2022
- 2022-10-26 CN CN202211315849.9A patent/CN116415274A/zh active Pending
- 2022-12-29 US US18/090,818 patent/US20230214216A1/en active Pending
Patent Citations (6)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US8009827B2 (en) * | 2006-02-22 | 2011-08-30 | Hitachi, Ltd. | Encryption processing method and encryption processing device |
US20120150933A1 (en) * | 2010-12-13 | 2012-06-14 | International Business Machines Corporation | Method and data processing unit for calculating at least one multiply-sum of two carry-less multiplications of two input operands, data processing program and computer program product |
US8903882B2 (en) * | 2010-12-13 | 2014-12-02 | International Business Machines Corporation | Method and data processing unit for calculating at least one multiply-sum of two carry-less multiplications of two input operands, data processing program and computer program product |
TW201445965A (zh) * | 2013-05-23 | 2014-12-01 | Mstar Semiconductor Inc | 密碼裝置以及密鑰保護方法 |
US20210173618A1 (en) * | 2016-03-03 | 2021-06-10 | Cryptography Research, Inc. | Converting a boolean masked value to an arithmetically masked value for cryptographic operations |
US20190042249A1 (en) * | 2018-04-02 | 2019-02-07 | Vikram Suresh | Hardware accelerators and methods for high-performance authenticated encryption |
Also Published As
Publication number | Publication date |
---|---|
US20230214216A1 (en) | 2023-07-06 |
TW202327307A (zh) | 2023-07-01 |
CN116415274A (zh) | 2023-07-11 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
EP3559811B1 (en) | Protecting parallel multiplication operations from external monitoring attacks | |
US8325928B2 (en) | Security countermeasure for power analysis attacks | |
US8199909B2 (en) | Method and device for carrying out a cryptographic calculation | |
US20100098244A1 (en) | System and method for stream/block cipher with internal random states | |
Tsoutsos et al. | Advanced techniques for designing stealthy hardware trojans | |
JPWO2008010441A1 (ja) | 暗号装置及びプログラムと方法 | |
WO2019002470A1 (en) | METHOD FOR SECURING A CRYPTOGRAPHIC PROCESS WITH SBOX AGAINST HIGH-ORDER LATERAL CHANNEL ATTACKS | |
KR20050072537A (ko) | 암호화 장치, 암호화 방법 및 그 기록매체 | |
US10855443B2 (en) | Protecting polynomial hash functions from external monitoring attacks | |
KR100574965B1 (ko) | 유한체 곱셈기 | |
US8958556B2 (en) | Method of secure cryptographic calculation, in particular, against attacks of the DFA and unidirectional type, and corresponding component | |
Al-Saadi et al. | Provably-secure led block cipher diffusion and confusion based on chaotic maps | |
TWI778902B (zh) | 加法遮罩值產生器、加密器以及產生串流金鑰的方法 | |
Charalampidis et al. | A novel piecewise chaotic map for image encryption | |
Alshawi et al. | Improved Salsa20 stream cipher diffusion based on random chaotic maps | |
EP1587237B1 (en) | Security countermeasures for power analysis attacks | |
CN109190414B (zh) | 一种用于乘法器的全同态混淆方法 | |
CN109936437B (zh) | 一种基于d+1阶掩码的抗功耗攻击方法 | |
EP3475825B1 (en) | Cryptographic operations employing non-linear share encoding for protecting from external monitoring attacks | |
Muhalhal et al. | A hybrid modified lightweight algorithm for achieving data integrity and confidentiality | |
Chou et al. | A high performance, low energy, compact masked 128-bit AES in 22nm CMOS technology | |
CN109302278A (zh) | 一种抵御能量分析攻击的掩码方法及掩码电路 | |
Hafsa et al. | Hybrid encryption model based on advanced encryption standard and elliptic curve pseudo random | |
CN111602367B (zh) | 用于保护在使白盒密码算法安全的对策中使用的熵源的方法 | |
Ghafoori et al. | Higher-Order Differential-Linear Cryptanalysis of ChaCha Stream Cipher |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
GD4A | Issue of patent certificate for granted invention patent |