專利名稱:存儲器訪問受保護的智能卡的制作方法
技術領域:
本發明涉及一種改進的智能卡。智能卡包括一個形狀通常是矩形的襯底,該襯底與一個電子芯片形成整體,所述電子芯片能夠存儲與讀卡器進行交互的數據和/或程序。
背景技術:
智能卡越來越多地應用在識別和認證系統中,但是迄今為止,由于用于形成芯片的晶模(die)的大小限制了存儲器的大小,因而限制了智能卡的實用性。隨著越來越復雜的卡上應用,這種存儲器大小的限制已經成為一個越來越嚴重的問題。
我們已經認識到通過附加一個第二存儲器芯片(例如閃存ROM(FLASH ROM))能夠極大地擴展卡的存儲容量。但是,隨之而來的問題是為使智能卡可以使用,保留在第二存儲器器件中的數據的安全性必須像該數據存儲在智能卡芯片內部時的安全性一樣好。
發明內容
根據本發明的智能卡的特征在于它在襯底上包括一個第二存儲器器件并且該器件被可操作地連接到智能卡芯片。
優選地,第二存儲器器件能夠存儲多個數據頁,每個頁具有一個與其相關聯的唯一的序號,序號與數據頁分開存儲以便當讀取頁時,與該頁一起獲取的序號能夠與存儲的序號相比較,以認證該頁。每個頁被使用關于頁和芯片唯一的密鑰進行加密和簽名。
現在將參照附圖,通過實例詳細描述根據本發明的智能卡的實施例,其中
圖1顯示了一個根據本發明的具有智能卡芯片和第二存儲器器件的智能卡;圖2說明了用于與本發明的智能卡一起使用的外部存儲器(XMEM)頁的結構;圖3是本發明的智能卡中所應用的XMEM軟件調用樹的示意性圖表。
具體實施例方式
從圖1中可以看出,本發明的智能卡10包括一個單獨的襯底12、主智能卡器件14以及一個外部存儲器芯片16,所述襯底12類似于一個傳統智能卡襯底,但是其帶有兩個電子芯片,所述主智能卡器件14作為安全微控制器,所述外部存儲器芯片16連接到智能卡微控制器。方便地,XMEM器件16可以是一個閃存ROM,但也可以使用任何其他非易失性或電子存儲器器件。
在較低的層級,需要智能卡操作系統和XMEM之間的通信函數,用于安全地通信以及在與智能卡相連的XMEM上存儲數據。這些功能被更高級的函數調用以讀取和更新XMEM中的數據。XMEM可以是,例如,ATMEL AT45DB321B 4M字節串行數據閃存。與XMEM的通信是使用ATMEL AT903232CS串行外設接口(SPI)硬件實現的,并且輸入/輸出線路之一被用作芯片選擇。然而,所述原理將適用于任何帶有可用I/O的智能卡微控制器以與串行閃存器件互連。
在該實例中,每個XMEM頁包括528字節。頁結構在圖1中示出。頭8個字節(頁頭)包含一個指示該頁未被擦除的字節(值不是0xFF),5字節隨機數據,指示頁號的2個字節以及1個字節的序號。頁頭后面是512字節的數據。末尾的8字節包含和512數據字節一起使用加密字組鏈接而加密的頁頭的拷貝。頁頭未被加密以便允許芯片推導頁密鑰。
我們所提供的XMEM驅動器實現了下列特性以增強安全性和可靠性。
●頁內的512數據字節是被三重DES(Data Encryption Standard數據加密標準)CBC(Cipher Block Chaining加密字組鏈接)加密的。任何對該數據的改變將改變MAC(MessageAuthentication Cryptogram消息認證碼)并使其無效。
●每個頁包含8字節三重DES MAC。
●利用密碼在每個頁插入它的頁號以允許確定所讀的頁就是所請求的頁。通過頁MAC來保護頁號不被修改。
●用于推導頁密鑰的主DES密鑰對于芯片是唯一的,并在芯片第一次重置時自動地在內部生成。這些DES密鑰不能從外部讀取或更新。
●在每次更新頁時,由主密鑰、隨機數據、頁號以及頁序號重新生成對頁進行加密和簽名的DES密鑰。這是一種額外的安全特性,當每次更新頁而改變密鑰進而因此改變MAC時,該安全特性增大了已知的為獲取密鑰而進行的文本攻擊的復雜度。
●每個頁包含一個字節的序號,每次頁更新時該序號都增加。該序號在頁讀取操作被驗證。該序號是個隨機數,在每次頁更新時改變;因此不能從頁的總更新次數中推導出該序號。頁序號的使用提高了通過向同一頁提供先前的內容而進行的攻擊的復雜度。由于頁將具有有效的MAC和有效的頁號,如果沒有序號這種攻擊將是可能的。
●所有對XMEM的更新都通過在編程后讀取XMEM來驗證。
●硬件抽象層(HAL)函數將試圖在退出前讀取或更新該頁3次。
●如果一個頁被發現要擦除,它在讀取時被初始化為一個隨機數值。那么,在外部擦除一個頁以使在內部讀取具有已知擦除值的頁是不可能的。
序號ATMELAT45DB321B包含8192頁的閃存存儲器。如上所述,每個XMEM頁具有一個單獨的序號(1字節)。序號的拷貝必須被存儲在其他地方以在讀取時與該頁進行比較。為了阻止序號的拷貝被修改,它必須被保護。這可以通過在內部將所有序號存儲到智能卡上來實現。這可能不適合于所有情況,因為它需要為序號保留8192字節EEPROM。通過預留32頁XMEM,其中每個頁存儲另外8160個頁的256個序號來解決該問題。這些頁正常地被保護,但是它們的序號存儲在智能卡EEPROM中。任選地,這32個序號可以被異或(XOR)以產生一個存儲在智能卡EEPROM中的單獨的字節。這導致節省了EEPROM的使用,使其從8192字節降到了256字節。
下面的圖2詳細描述了對如下的外部讀取和更新頁函數的調用順序。
ReadXMEMPagevoid readXMEMPage(word pageNum)這個函數將從XMEM讀取一個頁。該函數將調用函數getPageSeqNum以讀取期望的頁序號以與接收到的頁進行比較。
該函數將調用doRead函數以執行頁的實際讀取、解密和MAC校驗。如果讀取的頁序號不正確的話將返回一個錯誤。
updateXMEMPagevoid readXMEMPage(word pageNum)這個函數將更新XMEM中的一個頁并要求提前讀取該頁以獲取現有的頁序號。
這個函數將調用loadPageKeys函數以基于頁號、已更新的序號和隨機數據為該頁推導新的密鑰。
這個函數將通過使用SPI硬件向XMEM芯片發送程序指令和數據來執行實際的XMEM頁的更新。
這個函數將調用doRead函數以驗證正確編入XMEM中的已更新的數據。
doRead(internal Function)void doRead(word pageNum,byte mode)
這個函數將從XMEM中讀取一個頁或者驗證一個XMEM中的頁。
它具有兩個模式1.它將讀取頁,調用loadPageKeys以推導出頁密鑰來解密數據,并檢查MAC和頁號是否正確。
2.它將讀取該頁以驗證發送來更新XMEM頁的加密數據是否被正確地編寫。
loadPageKeysvoid loadPageKeys(byte mode,word pageNum)這個函數將加載該密鑰以加密/解密一個頁,并且如果更新頁,則使用隨機數據、頁號和已增加的頁序號生成密鑰多樣化字符串,或者當讀取它時,使用第一XMEM頁作為多樣化字符串。多樣化字符串被使用關于芯片唯一的主XMEM密鑰加密以給出關于芯片、頁和序號唯一的密鑰。該密鑰被加載進DES硬件中。
getPageSeqNumbyte readXMEMPage(word pageNum)這個函數將為頁返回頁序號。這個函數可能已經被readXMEMPage函數調用以返回頁序號。它將對readXMEMPage函數進行遞歸調用以讀取包含所請求的最初的頁序號的XMEM頁。
權利要求
1.一種包括襯底的智能卡,所述襯底上具有智能卡芯片,所述智能卡的特征在于它包括所述襯底上的第二存儲器器件,并且該器件被可操作地連接到所述智能卡芯片。
2.如權利要求1所述的智能卡,其中,所述第二存儲器器件是閃存ROM。
3.如權利要求1或2所述的智能卡,其中,所述第二存儲器器件能夠存儲多頁數據,每頁與一個唯一的序號相關聯,所述序號與所述數據頁分開存儲,以便于當所述頁被讀取時,能夠將與所述頁一起獲取的序號與所述存儲的序號進行比較,以認證所述頁。
4.如權利要求3所述的智能卡,其中,所述存儲的序號被存儲在所述智能卡芯片中。
5.如權利要求3所述的智能卡,其中,所述存儲的序號的一部分被存儲在所述第二存儲器器件上所存儲的所述多頁數據中的至少一個頁中,該至少一個頁的序號被存儲在所述智能卡芯片中。
6.如權利要求3所述的智能卡,其中,所述序號被進行異或運算以產生存儲在所述智能卡EEPROM中的摘要或哈斯數據(HASH)。
7.如權利要求3至5中的任一項所述的智能卡,其中,與特定數據頁關聯的序號在每次修改或更新所述頁時被改變。
8.如權利要求3至6中的任一項所述的智能卡,其中,每個數據頁的序號被初始設定為隨機生成的值。
9.如權利要求3至8中的任一項所述的智能卡,其中,每個頁包含其頁號的拷貝。
10.如權利要求3至9中的任一項所述的智能卡,其中,每個頁中的數據是加密的。
11.如權利要求3至10中的任一項所述的智能卡,其中,用密碼MAC來保護每頁數據的完整性。
12.如權利要求3到11的任一項所述的智能卡,其中,每個頁加密和MAC都是使用一個關于頁和芯片唯一的密鑰來執行的。
全文摘要
一種智能卡包括一個襯底,該襯底上形成一個智能卡芯片和第二存儲器器件,如閃存ROM,該第二存儲器器件被可操作地連接到智能卡芯片。第二存儲器器件能夠存儲多頁數據,每個頁有一個唯一序號與之相關聯,該序號與該數據頁分開存儲以便當該頁被讀取時,可以將與該頁一起獲取的序號與存儲的序號相比較以認證該頁。為了最小化智能卡上用于存儲序號的存儲器,存儲的序號中的一些被存儲在至少一個存儲在第二存儲器器件上的數據頁中,該至少一個頁的序號被存儲在智能卡芯片中或者序號被異或并且結果摘要被存儲在智能卡EEPROM中。與特定頁相關聯的序號在每次頁被修改或更新時增加。每個數據頁的序號初始被設為一個隨機生成的數值,以便不能從頁的更新總數中推導出該序號。因此,本發明的智能卡允許擴展存儲器的使用而不損壞安全性。
文檔編號G06K19/073GK1764920SQ200480008265
公開日2006年4月26日 申請日期2004年1月26日 優先權日2003年1月24日
發明者巴里·希姆·霍克菲爾德, 安東尼·布雷斯林 申請人:埃塞博斯有限公司