密和解密都使用同一個密鑰的算法,既包括諸如AES的分組密碼算法,也包括諸如RC4的流密碼算法。下面將加解密模塊所采用的密碼算法記為S,密鑰為K。對于同一批次制造的芯片而言,每個芯片中加解密模塊,即加解密模塊的密碼算法都是相同的,但是每個芯片的密鑰是各不相同的。從邏輯功能角度看,加解密模塊由兩部分組成:算法S對應(yīng)的邏輯電路、以及密鑰K。在本實施例中,這兩部分都由反熔絲查找表標準單元實現(xiàn)。
[0053]優(yōu)選的,將所述X個數(shù)據(jù)切片序列送至加解密模塊時,包括:
[0054]在輸入所述X個數(shù)據(jù)切片序列時,將輸入所述加解密模塊的輸入數(shù)據(jù)有效使能信號MIVLD置為高電平,并持續(xù)X個周期;在輸入第一個數(shù)據(jù)切片序列時,將輸入所述加解密模塊的輸入數(shù)據(jù)序列頭標志信號MIHEAD置為高電平,并持續(xù)一個周期;
[0055]在輸入最后一個數(shù)據(jù)切片序列時,將輸入所述加解密模塊的輸入數(shù)據(jù)序列尾標志信號MITAIL置為高電平,并持續(xù)一個周期;
[0056]在輸入所述X個數(shù)據(jù)切片序列時,若對所述X個數(shù)據(jù)切片進行加密處理,則將輸入所述加解密模塊的加解密標準信號ENC置為高電平;若對所述X個數(shù)據(jù)切片進行解密處理,則將輸入所述加解密模塊的加解密標準信號ENC置為低電平。
[0057]優(yōu)選的,若檢測到所述加解密模塊輸出有效數(shù)據(jù),則對連續(xù)輸出X周期的數(shù)據(jù)切片進行采樣,包括:
[0058]所述加解密模塊輸出X周期的數(shù)據(jù)切片時,將輸出數(shù)據(jù)有效使能信號MOVLD置為高電平,并持續(xù)X個周期;
[0059]所述加解密模塊輸出第一個周期的數(shù)據(jù)切片時,將輸出數(shù)據(jù)序列頭標志信號MOHEAD置為高電平,并持續(xù)一個周期;
[0060]所述加解密模塊輸出最后一個周期的數(shù)據(jù)切片時,將輸出數(shù)據(jù)序列尾標志信號MOTAIL置為高電平,并持續(xù)一個周期。
[0061]在本實施例中,數(shù)據(jù)加解密模塊與加解密操作相關(guān)的輸入有:輸入數(shù)據(jù)有效使能信號MIVLD、輸入數(shù)據(jù)序列頭標志信號MIHEAD、輸入數(shù)據(jù)序列尾標志信號MITAIL、加解密標準信號ENC、W位寬的輸入數(shù)據(jù)切片信號MI,其中W為大于I的整數(shù),S卩加解密算法的數(shù)據(jù)分組位寬。需要說明的是,本實施例中的與加解密相關(guān)的輸入信號相當于一個控制信號,例如當輸入信號MIVLD變?yōu)楦唠娖綍r,即說明有效數(shù)據(jù)輸入。
[0062]具體的,當MIVLD為高電平時,表明MI為有效輸入數(shù)據(jù);在沒有有效輸入數(shù)據(jù)切片時,MIVLD為低電平;其中,輸入一個數(shù)據(jù)切片時,MIVLD維持一個時鐘周期;MIHEAD維持一個時鐘周期高電平時,表明輸入第一個數(shù)據(jù)切片;MITAIL維持一個時鐘周期高電平時,表明輸入最后一個數(shù)據(jù)切片;如果MIHEAD和MITAIL同時為高電平,則輸入數(shù)據(jù)序列只有一個數(shù)據(jù)切片即當前輸入的MI只有一個數(shù)據(jù)切片;如果ENC為高電平時,則表明需要對輸入數(shù)據(jù)序列進行加密,反之對輸入數(shù)據(jù)序列進行解密,且在一個輸入數(shù)據(jù)序列未處理完之前,ENC不得變化。
[0063]數(shù)據(jù)加解密模塊與加解密操作相關(guān)的輸出有:輸出數(shù)據(jù)有效使能信號M0VLD、輸出數(shù)據(jù)序列頭標志信號M0HEAD、輸出數(shù)據(jù)序列尾標志信號MOTAIL、W位寬的輸出數(shù)據(jù)切片信號MO。
[0064]具體的,當MOVLD為高電平時,表明MO為有效輸出數(shù)據(jù);輸出一個數(shù)據(jù)切片時,MOVLD維持一個時鐘周期時,在沒有有效輸出數(shù)據(jù)切片時,MOVLD為低電平;M0HEAD為維持一個時鐘周期高電平時,表明MO為輸出數(shù)據(jù)序列的第一個切片;M0TAIL為維持一個時鐘周期高電平時,表明MO為輸出數(shù)據(jù)序列的最后一個切片;如果MOHEAD和MOTAIL同時為高電平時,則輸出數(shù)據(jù)序列只有一個分組即當前輸出MO。
[0065]優(yōu)選的,所述根據(jù)預設(shè)位寬值,將待處理數(shù)據(jù)切分成位寬為預設(shè)值的X個數(shù)據(jù)切片序列之前,還包括:
[0066]設(shè)定固定時鐘周期;
[0067]其中,在所述輸入數(shù)據(jù)有效使能信號MIVLD置為高電平并持續(xù)所述固定時鐘周期后,將所述輸出數(shù)據(jù)有效使能信號MOVLD置為高電平,并輸出有效的數(shù)據(jù)切片。
[0068]具體的,數(shù)據(jù)加解密模塊具有固定的加解密操作延時,即當MIVLD為高電平時,固定經(jīng)過P個時鐘周期,MOVLD為高電平并輸出有效的數(shù)據(jù)切片,這里P為大于I的正整數(shù)。
[0069]S103、若檢測到所述加解密模塊輸出有效數(shù)據(jù),則對連續(xù)輸出X周期的數(shù)據(jù)切片進行采樣;其中,所述連續(xù)輸出X周期的數(shù)據(jù)切片為與所述待處理數(shù)據(jù)對應(yīng)的加密數(shù)據(jù)或解密數(shù)據(jù)。
[0070]具體的,在本實施例中,數(shù)據(jù)加解密模塊的功能表述為:
[0071](MOnl,…,MO1, MO。)= S (K, ENC, {MIn 丨,…,MI1, MlJ ),其中 η 為大于 O 的正整數(shù),表示數(shù)據(jù)序列的分組數(shù)。在輸入各個數(shù)據(jù)切片時,MIVLD均為高電平且維持一個時鐘周期;在輸入切片MIJt MIHEAD為高電平且維持一個時鐘周期,在輸入切片MI η ι時,MITAIL為高電平且維持一個時鐘周期。在輸出各個數(shù)據(jù)切片時,MOVLD為高電平且維持一個時鐘周期;在輸出MO。時,MOHEAD為高電平且維持一個時鐘周期,在輸出MO n MOTAIL為高電平且維持一個時鐘周期。
[0072]優(yōu)選的,若最后一個數(shù)據(jù)切片序列不足所述預設(shè)位寬值,則進行加零補位。
[0073]參見圖2,為發(fā)明實施例提供數(shù)據(jù)加密過程時序圖,若需要對明文數(shù)據(jù)M進行加密,則SlOl可以具體理解為:
[0074]將明文數(shù)據(jù)M切分成位寬為W的數(shù)據(jù)切片,切分后的數(shù)據(jù)序列記為Mx !,…,M1, M0,其中X= [m/M],m為M的位寬,如果m不是W的整數(shù)倍,則最后一個切片Mx:需要補足(xW_m)位的O。
[0075]S102可以具體理解為:
[0076]將輸入數(shù)據(jù)序列送給加解密模塊:置ENC為I,MIVLD為I并連續(xù)保持x個時鐘周期,依次將Mx 1;…,M1, M。輸入,在輸入M。時將MIHEAD置為I并維持I個時鐘周期,在輸入Mx丨時將MITAIL置為I并維持I個時鐘周期。
[0077]S103可以具體理解為:
[0078]檢測輸出數(shù)據(jù)有效信號M0VLD,在MIVLD有效之后的P個時鐘周期后,MOVLD跳變?yōu)楦唠娖剑藭r對輸出信號MO進行采樣,連續(xù)采樣X個時鐘周期,X個周期的輸出數(shù)據(jù)切片即為加密之后的密文數(shù)據(jù)序列。
[0079]參見圖3,為發(fā)明實施例提供數(shù)據(jù)解密過程時序圖,若需要對密文數(shù)據(jù)C進行解密,則SlOl可以具體理解為:
[0080]將密文數(shù)據(jù)C切分成位寬為W的數(shù)據(jù)切片,切分后的數(shù)據(jù)序列記為Cy 1;…,C1, C。,其中y = [c/ff],c為C的位寬且為W的整數(shù)倍。
[0081]S102可以具體理解為:
[0082]將輸入數(shù)據(jù)序列送給加解密模塊:置ENC為0,MIVLD為I并連續(xù)保持y個時鐘周期,依次將Cy 1;…,C1, C。輸入,在輸入C。時將MIHEAD置為I并維持I個時鐘周期,在輸入Cy:時將MITAIL置為I并維持I個時鐘周期。
[0083]S103可以具體理解為:
[0084]檢測輸出數(shù)據(jù)有效信號M0VLD,在MIVLD有效之后的P個時鐘周期后,MOVLD跳變?yōu)楦唠娖?,此時對輸出信號MO進行采樣,連續(xù)采樣y個時鐘周期,y個周期的輸出數(shù)據(jù)切片即為解密之后的明文數(shù)據(jù)序列。
[0085]具體的,在本實施例中,首先將密碼算法功能模塊對應(yīng)的RTL代碼綜合成反熔絲查找表標準單元的網(wǎng)表;同樣將位寬為k的密鑰K轉(zhuǎn)換成k個I輸入反熔絲查找表標準單元的集合,其中k為大于I的正整數(shù),具體的值取決于密碼算法S的需求。然后,為所有的反熔絲查找表標準單元增加統(tǒng)一的編程控制電路,按照常規(guī)的版圖設(shè)計流程得出符合目標工藝的GDS版圖,在硅后對芯片中所有反熔絲查找表標準單元進行編程,將密碼算法S對應(yīng)的電路功能具體化,并為每個芯片設(shè)置不同的密鑰K。
[0086]即本實施例中的數(shù)據(jù)加解密模塊,即芯片設(shè)計者將選定的密碼算法轉(zhuǎn)換為反熔絲查找表標準單元的電路,此處所指密碼算法可以是通用的標準密碼算法,也可以是芯片設(shè)計者私有密碼算法;除密碼算法電路之外,將密鑰同樣轉(zhuǎn)化為反熔絲查找表標準單元的電路,而非存儲于常規(guī)的片內(nèi)非易失存儲器如FLASH或EEPROM中;在硅后,芯片設(shè)計者對芯片進行編程以注入密鑰,并將密碼算法對應(yīng)的電路功能具體化。
[0087]具體的,本實施例中的基于反熔絲查找表的標準單元及其電路具有良好的安全屬性,主要表現(xiàn)在:芯片需要在硅后對反熔絲查找表進行編程才能最終完成芯片邏輯功能的具體實現(xiàn),在芯片版圖設(shè)計和制造過程中,除芯片設(shè)計者之外的任何實體無法準確獲知芯片的具體功能,因此很難在此過程中插入針對性的木馬或后門電路;另外,通過反向工程破解很難獲知反熔絲可編程單元的狀態(tài),從而可以有效保護反熔絲查找表標準單元及其電路的狀態(tài)信息。
[0088]本發(fā)明實施例提供的一種安全芯片中數(shù)據(jù)加解密的方法,包括:根據(jù)預設(shè)位寬值,將待處理數(shù)據(jù)切分成位寬為所述預設(shè)位寬值的X個數(shù)據(jù)切片序列;將所述X個數(shù)據(jù)切片序列送至加解密模塊,通過所述加解密模塊對所述X個數(shù)據(jù)切片序列進行加密處理或解密處理;其中,所述加解密模塊和密鑰均通過反熔絲查找表標準單元實現(xiàn);若檢測到所述加解密模塊輸出有效數(shù)據(jù),則對連續(xù)