天天看點

AT88SCXX系列加密存儲芯(卡)片解決方案

AT88SCXX系列加密存儲芯(卡)片解決方案  --摘自網絡(找不到原創作者,故無法标明)

1、   簡介          AT88SCxx系列加密存儲芯(卡)片是國際著名芯(卡)片廠商Atmel公司生産的具有多用途的加密存儲系列芯(卡)片。利用I2C串行總線通信,采用認證或加密驗證等方式進行資料通路,是以以其容量大、體積小、使用友善、安全可靠等特點,在生産開發中得到了廣泛的應用。         AT88SCxx系列包括AT88SC0104C、AT88SC0204C、AT88SC0404C、AT88SC0808C 、AT88SC1616C、AT88SC3216C、AT88SC6416C、AT88SC12816C、AT88SC25616C等型号,使用者區存儲空間從1Kbits到256Kbits不等。使用者存儲區通過配置可劃分成4到16個相同容量的應用存儲區。分别受8套讀、寫密碼的控制和安全等級的設定,這些應用分區的讀寫安全設定可以自由合并使用 2、   芯(卡)片是如何保證安全性的          AT88SC系列芯(卡)片提供了标準、密碼、認證和加密三種方式通路使用者存儲區,在标準通路方式下,對使用者存儲區的讀寫通路無任何限制;在密碼通路模式下,對使用者存儲區的讀寫通路需要密碼驗證;在認證方式下,使用者必須經過認證,同時要通過不同使用者區所設定的密碼檢驗才能正确通路使用者資料區;加密驗證模式下通路使用者時使用者必須首先經過認證,然後利用認證成功後配置區特定寄存器中更新的資料作為密鑰再次進行認證,最後還要通過不同使用者區設定的密碼檢驗後才可通路使用者區,這種方式下總線下傳輸的資料是經過加密的密文。         AT88SC系列芯(卡)片内置了一個64bit的加密算法。其認證和加密模式都使用了這個算法。在認證和加密模式下,大大增強了IC卡通路的安全性,能有效克制旁路攻擊。在這兩種模式下,主機每次與IC卡或者芯(卡)片互動的資訊都不一樣,這樣第三者很難從互動資訊中擷取有效資料。 3、   芯(卡)片的認證加密過程          主機首先從芯(卡)片中讀出Nc和Ci,根據自定義的函數F1(Nc,Ks)算法算出Gc,其中Ks為使用者知道固定參數,同時利用芯(卡)片内部的F2(Gc,Ci,Q0)算法算出Q1,并向芯(卡)片發送初始化認證參數Q1和Q0,其中,Q0是CPU方給出的随機數。芯(卡)片内部則利用自己的F2邏輯算出Ci+1=F2(Gc,Ci,Q0),同時得出Q2=F2(Gc,Q1)。芯(卡)片收到校驗認證指令後,判斷是否Ci+1=Q1,如是,則有Ci+2=F2(Gc,Ci+1),且用Ci+2更新Ci,芯(卡)片中的認證通過;同時更新芯(卡)片内部同組的SK(Session Encryption Key)的值。CPU方接收芯(卡)片中更新的Ci後,判斷是否等于Q2,如果通過,則認證全部通過。如下圖所示:

        上面說的過程是認證模式,如果想進入加密難證模式的話,需要再次利用認證成功時傳回更新的SK值,用它取代Gc,Ci再作為參數;利用F2函數,芯(卡)片和主機再計算一次并比較,判斷相等後才進入加密認證模式。         上面提到的F2算法,是芯(卡)片内部的控制邏輯利用Gc、Ci、Q0三個參數初始化的一個DES算法的變種。這個算法是所有加密解密、完整性認證與資訊認證的關鍵。 4、   使用者資料的安全通路          認證(加密)成功後就可以發送指令選擇使用者分區進行資料的讀寫通路了,如果各個分區還有讀或寫的密碼限制,則還需要向通路的分區寫入密碼進行校驗,密碼正确後,才能真正完全通路使用者分區。此時如果多個使用者分區使用相同的安全等級和密碼,則可以将這多個使用者區進行合并。需要說明的是,認證一旦成功後,芯(卡)片内部的加密機制就立即開始啟動,主機對芯(卡)片的任何操作都需要根據芯(卡)片加密機内部算法進行計算,以保持與它的同步。特别是向使用者分區寫資料後,發送寫資料指令後,要緊接着發送一次主機方計算的加密校驗結果,與芯(卡)片内部加密計算的結果進行校驗。芯(卡)片隻有接收到正确的校驗和後才能将資料寫入到相應的位址内,否則資料寫不到目的位址,同時芯(卡)片會傳回錯誤資訊。

繼續閱讀