專利名稱:認(rèn)證設(shè)備、認(rèn)證方法及程序的制作方法
技術(shù)領(lǐng)域:
本發(fā)明涉及認(rèn)證設(shè)備、認(rèn)證方法以及程序。
背景技術(shù):
近年來,隨著網(wǎng)絡(luò)環(huán)境使用的普及,不只是諸如個人計算機(jī)(此后稱為“PC”)的一 般用途電子設(shè)備,而且諸如電視機(jī)、記錄/復(fù)制設(shè)備和便攜式音頻設(shè)備的具有特殊功能的 電子設(shè)備也變得能夠連接到網(wǎng)絡(luò)。在這種條件下,安全的保證(諸如對用戶個人信息的保 護(hù)或者檢測計算機(jī)病毒或惡意軟件)對于各種類型的電子設(shè)備變得更加重要。因此,希望 各種類型的電子設(shè)備執(zhí)行認(rèn)證功能,用于檢查通信對象的真實性。特別地,希望在電子設(shè)備 中扮演重要角色的半導(dǎo)體集成電路(此后稱為“IC”)實現(xiàn)認(rèn)證功能,用于檢查從外部輸入 的軟件或固件(此后稱為“程序”)的真實性。在許多情況下,通過使用加密技術(shù)來實現(xiàn)這種認(rèn)證功能。作為使用加密技術(shù)的認(rèn) 證功能,存在用于檢查通信對象是否具有有效密鑰的認(rèn)證、用于檢查程序等是否有效的數(shù) 字簽名、信息認(rèn)證碼(MAC)等。根據(jù)認(rèn)證,將隨機(jī)數(shù)傳輸?shù)剿J(rèn)證的對象,并且要求該對 象產(chǎn)生密文(ciphertext),并且通過確定從該對象返回的密文的解密結(jié)果是否與已經(jīng)被傳 輸?shù)碾S機(jī)數(shù)相匹配來決定該對象的密鑰是否有效。另外,根據(jù)數(shù)字簽名和MAC,基于使用密 鑰的數(shù)據(jù)操作的結(jié)果是否與預(yù)期值匹配來檢查數(shù)據(jù)篡改、密鑰產(chǎn)生器的真實性等。例如, 3749640號日本專利公開了與這種認(rèn)證功能相關(guān)的技術(shù)。
發(fā)明內(nèi)容
邏輯上,只要使用這種安全加密算法,未經(jīng)授權(quán)的通信對象不被錯誤地識別為經(jīng) 授權(quán)的通信對象,或者不執(zhí)行未經(jīng)授權(quán)的程序。然而,當(dāng)用于執(zhí)行認(rèn)證的程序的實現(xiàn)方法中 存在缺陷時,不具有密鑰的攻擊者能夠冒充經(jīng)認(rèn)證的通信對象,或者能夠執(zhí)行未經(jīng)授權(quán)的 程序。例如,考慮到驗證和可讀性,以這樣的方式實現(xiàn)用于執(zhí)行認(rèn)證的程序認(rèn)證通過 /未通過的條件分支部分為“如果條件表達(dá)式為真(TRUE)則通過;如果條件表達(dá)式為假 (FALSE)則未通過?!币虼?,當(dāng)執(zhí)行程序時,IC中的微處理器(MPU,微處理單元)根據(jù)條件表 達(dá)式的真或假將標(biāo)志寄存器的特定位的值設(shè)置為1或0。例如,當(dāng)條件表達(dá)式為真時將標(biāo)志 寄存器的特定位的值設(shè)置為1,而當(dāng)條件表達(dá)式為假時將標(biāo)志寄存器的特定位的值設(shè)置為 0o因此,程序讀取標(biāo)志寄存器的特定位的值,并且在1的情況下執(zhí)行認(rèn)證通過過程 而在0的情況下執(zhí)行認(rèn)證未通過過程。因此,在認(rèn)證通過的情況下,標(biāo)志寄存器的特定位的 值總是1。然而,如果以這種方式執(zhí)行程序,在通過使用聚焦離子束(FIB)將標(biāo)志寄存器值 的輸出線短接到電源或接地(GND),則MPU的標(biāo)志寄存器的特定位的值將被固定到1。類似 地,諸如通過激光輻射將MPU的標(biāo)志寄存器的值固定的攻擊將會把MPU的標(biāo)志寄存器的特 定位的值固定到1。結(jié)果,攻擊者使得MPU執(zhí)行認(rèn)證通過的過程。
因此,根據(jù)前述內(nèi)容,希望提供新的并且改進(jìn)的認(rèn)證設(shè)備、認(rèn)證方法和程序,其能 夠避免認(rèn)證過程的未經(jīng)授權(quán)的執(zhí)行,即便MPU等的標(biāo)志寄存器的特定位的值被固定。根據(jù)本發(fā)明的一個實施例,提供了一種認(rèn)證設(shè)備,包括寄存器,其中存儲第一位 值或與該第一位值不同的第二位值;m(l彡m彡N-l, N彡2)個第一確定處理單元,用于確 定輸入信息與對應(yīng)于該輸入信息的認(rèn)證信息是否匹配,并且如果確定的結(jié)果為真則在寄存 器中存儲第一位值,而如果確定的結(jié)果為假則在寄存器中存儲第二位值;(N-m)個第二確 定處理單元,用于確定輸入信息與對應(yīng)于該輸入信息的認(rèn)證信息是否不匹配,并且如果確 定的結(jié)果為真則在寄存器中存儲第一位值,而如果確定的結(jié)果為假則在寄存器中存儲第二 位值;以及認(rèn)證確定單元,用于在由每個第一確定處理單元通過確定過程在寄存器中存儲 第一位值并且由每個第二確定處理單元通過確定過程在寄存器中存儲第二位值的情況下 確定認(rèn)證通過。另外,該認(rèn)證設(shè)備可以包括處理電路,在輸入用于確定過程的執(zhí)行命令和與該執(zhí) 行命令相關(guān)的輸入數(shù)據(jù)的情況下,該處理電路用于如果通過使用輸入數(shù)據(jù)執(zhí)行該執(zhí)行命 令的結(jié)果為真則在寄存器中存儲第一位值,而如果結(jié)果為假則在寄存器中存儲第二位值。 在這種情況下,第一確定處理單元通過向處理電路輸入用于針對兩個輸入數(shù)據(jù)的匹配確定 過程的執(zhí)行命令,以及輸入作為輸入數(shù)據(jù)的輸入信息和對應(yīng)于該輸入信息的認(rèn)證信息,在 寄存器中存儲第一位值或第二位值。此外,第二確定處理單元通過向處理電路輸入用于針 對兩個輸入數(shù)據(jù)的不匹配確定過程的執(zhí)行命令,以及輸入作為輸入數(shù)據(jù)的輸入信息和對應(yīng) 于該輸入信息的認(rèn)證信息,在寄存器中存儲第一位值或第二位值。另外,該認(rèn)證設(shè)備還可以包括存儲單元,在該存儲單元中存儲第一認(rèn)證信息,其 要用于認(rèn)證為應(yīng)用程序建立執(zhí)行環(huán)境的第一程序;以及第二認(rèn)證信息,其要用于認(rèn)證該應(yīng) 用程序。在這種情況下,第一確定處理單元確定作為輸入信息從作為執(zhí)行目標(biāo)的第一程序 獲得的認(rèn)證信息與存儲在存儲單元中的第一認(rèn)證信息是否匹配,并且在寄存器中存儲第一 位值或第二位值。另外,第二確定處理單元確定作為輸入信息從作為執(zhí)行目標(biāo)的第二程序 獲得的認(rèn)證信息與存儲在存儲單元中的第二認(rèn)證信息是否不匹配,并且在寄存器中存儲第 一位值或第二位值。另外,該認(rèn)證設(shè)備還可以包括存儲單元,在該存儲單元中存儲第一認(rèn)證信息,其 要用于認(rèn)證為應(yīng)用程序建立執(zhí)行環(huán)境的第一程序;以及第二認(rèn)證信息,其要用于認(rèn)證該應(yīng) 用程序。在這種情況下,第二確定處理單元確定作為輸入信息從作為執(zhí)行目標(biāo)的第一程序 獲得的認(rèn)證信息與存儲在存儲單元中的第一認(rèn)證信息是否不匹配,并且在寄存器中存儲第 一位值或第二位值。另外,第一確定處理單元確定作為輸入信息從作為執(zhí)行目標(biāo)的第二程 序獲得的認(rèn)證信息與存儲在存儲單元中的第二認(rèn)證信息是否匹配,并且在寄存器中存儲第 一位值或第二位值。另外,該認(rèn)證設(shè)備還可以包括存儲單元,在該存儲單元中存儲第一認(rèn)證信息,其 要用于該認(rèn)證設(shè)備與外部設(shè)備之間的認(rèn)證過程;以及第二認(rèn)證信息,其要用于經(jīng)由外部設(shè) 備的用戶認(rèn)證。在這種情況下,第一確定處理單元確定從外部設(shè)備輸入的輸入信息與存儲 在存儲單元中的第一認(rèn)證信息是否匹配,并且在寄存器中存儲第一位值或第二位值。另外, 第二確定處理單元確定由用戶經(jīng)由外部設(shè)備輸入的輸入信息與存儲在存儲單元中的第二 認(rèn)證信息是否不匹配,并且在寄存器中存儲第一位值或第二位值。
另外,該認(rèn)證設(shè)備還可以包括存儲單元,在該存儲單元中存儲第一認(rèn)證信息,其 要用于該認(rèn)證設(shè)備與外部設(shè)備之間的認(rèn)證過程;以及第二認(rèn)證信息,其要用于經(jīng)由外部設(shè) 備的用戶認(rèn)證。在這種情況下,第一確定處理單元確定由用戶經(jīng)由外部設(shè)備輸入的輸入信 息與存儲在存儲單元中的第二認(rèn)證信息是否匹配,并且在寄存器中存儲第一位值或第二位 值。另外,第二確定處理單元確定從外部設(shè)備輸入的輸入信息與存儲在存儲單元中的第一 認(rèn)證信息是否不匹配,并且在寄存器中存儲第一位值或第二位值。根據(jù)本發(fā)明的另一個實施例,提供了一種認(rèn)證方法,包括以下步驟確定輸入信息 與對應(yīng)于該輸入信息的認(rèn)證信息是否匹配,并執(zhí)行m次(1彡m彡N-l,N彡2)第一確定處 理步驟如果確定的結(jié)果為真,則在要存儲第一位值或與該第一位值不同的第二位值的寄 存器中存儲第一位值,而如果確定的結(jié)果為假,則在寄存器中存儲第二位值;確定輸入信息 與對應(yīng)于該輸入信息的認(rèn)證信息是否不匹配,并執(zhí)行(N-m)次第二確定處理步驟如果確 定的結(jié)果為真,則在寄存器中存儲第一位值,而如果確定的結(jié)果為假,則在寄存器中存儲第 二位值;以及,在由每個第一確定處理步驟的確定過程在寄存器中存儲第一位值,并且由每 個第二確定處理步驟的確定過程在寄存器中存儲第二位值的情況下確定認(rèn)證通過。根據(jù)本發(fā)明的另一個實施例,提供了一種程序,用于使得計算機(jī)實現(xiàn)步驟確定輸 入信息與對應(yīng)于該輸入信息的認(rèn)證信息是否匹配,并執(zhí)行m次(1彡m彡N-l,N彡2)第一 確定處理步驟如果確定的結(jié)果為真,則在要存儲第一位值或與該第一位值不同的第二位 值的寄存器中存儲第一位值,而如果確定的結(jié)果為假,則在寄存器中存儲第二位值;確定輸 入信息與對應(yīng)于該輸入信息的認(rèn)證信息是否不匹配,并執(zhí)行(N-m)次第二確定處理步驟 如果確定的結(jié)果為真,則在寄存器中存儲第一位值,而如果確定的結(jié)果為假,則在寄存器中 存儲第二位值;以及,在由每個第一確定處理步驟的確定過程在寄存器中存儲第一位值,并 且由每個第二確定處理步驟的確定過程在寄存器中存儲第二位值的情況下確定認(rèn)證通過。根據(jù)本發(fā)明的另一個實施例,提供了一種記錄介質(zhì),在其中記錄了該程序,該記錄 介質(zhì)能夠被計算機(jī)讀取。根據(jù)本發(fā)明的上述實施例,能夠避免執(zhí)行未經(jīng)授權(quán)的認(rèn)證過程,即便MPU等的寄 存器的特定位的值被固定。
圖1是示出根據(jù)本發(fā)明的一個實施例的認(rèn)證處理系統(tǒng)的結(jié)構(gòu)示例的說明圖;圖2是示出根據(jù)本實施例的認(rèn)證方法的示例的說明圖;圖3是示出根據(jù)本實施例的IC卡用戶終端的結(jié)構(gòu)示例的說明圖;圖4是示出根據(jù)本實施例的IC卡的結(jié)構(gòu)示例的說明圖;圖5是示出根據(jù)本實施例的IC卡的處理流程的說明圖;圖6A是示出要由根據(jù)本實施例的IC卡執(zhí)行的操作的部分的說明圖;圖6B是示出要由根據(jù)本實施例的IC卡執(zhí)行的操作的部分的說明圖;圖7是示出根據(jù)本實施例的IC卡的更具體的處理流程的說明圖;圖8是用于比較根據(jù)本實施例的認(rèn)證方法和一般認(rèn)證方法的說明圖;圖9是示出在使用一般認(rèn)證方法的情況下可能執(zhí)行的篡改的示例的說明圖;以及圖10是示出在使用一般認(rèn)證方法的情況下可能執(zhí)行的篡改的示例的說明圖。
具體實施例方式下面,將參照附圖具體描述本發(fā)明的優(yōu)選實施例。注意,在本說明書和附圖中,使 用相同的附圖標(biāo)記表示具有基本相同的功能和結(jié)構(gòu)的結(jié)構(gòu)單元,并省略對這些結(jié)構(gòu)單元的 重復(fù)說明。另外,將以以下順序進(jìn)行說明?!凑f明的流程〉這里,將簡述下面將要描述的本發(fā)明的實施例的說明流程。首先,參照圖1,將描述 根據(jù)本發(fā)明的一個實施例的認(rèn)證處理系統(tǒng)的結(jié)構(gòu)示例。接下來,參照圖2,將描述根據(jù)本實 施例的認(rèn)證過程的流程。然后,參照圖3,將描述根據(jù)本實施例的IC卡用戶終端10的功能 結(jié)構(gòu)。然后,參照圖4,將描述根據(jù)本實施例的IC卡20的功能結(jié)構(gòu)。然后,參考圖5,將描 述根據(jù)本實施例的IC卡20的過程流程。接下來,參照圖6A和圖6B,將更詳細(xì)地描述根據(jù)本實施例的IC卡20的部分操作。 然后,參照圖7,將關(guān)于根據(jù)本實施例的IC卡20的過程的部分描述更具體的過程流程。然 后,參照圖8到圖10,將描述根據(jù)本實施例的認(rèn)證方法與一般的認(rèn)證方法之間的差別,并且 將描述通過應(yīng)用根據(jù)本實施例的認(rèn)證方法得到的效果。最后,將簡要描述本實施例的技術(shù) 思路以及由本技術(shù)思路得到的效果。(說明項)1 實施例1-1 認(rèn)證處理系統(tǒng)的結(jié)構(gòu)1-2 認(rèn)證方法的總體流程1-3 :IC卡用戶終端10的功能結(jié)構(gòu)1-4 :IC卡20的功能結(jié)構(gòu)1-5 與一般認(rèn)證方法的比較2 結(jié)論<1:實施例〉將描述本發(fā)明的一個實施例。本實施例涉及在半導(dǎo)體集成電路(IC)中運(yùn)行的用 于執(zhí)行諸如相互認(rèn)證和消息認(rèn)證的各種類型的認(rèn)證過程的程序的實現(xiàn)方法。另外,本實施 例涉及用于執(zhí)行認(rèn)證的程序中的認(rèn)證通過/未通過判決部分,并且其特點在于該程序被這 樣實現(xiàn),使得用于在條件表達(dá)式為真的情況下執(zhí)行認(rèn)證通過過程的部分以及用于在條件表 達(dá)式為假的情況下執(zhí)行認(rèn)證未通過的部分以混合的方式存在。此特點使得能夠避免通過諸 如FIB、激光輻射等分析技術(shù)對認(rèn)證結(jié)果進(jìn)行的固定攻擊而造成的對認(rèn)證結(jié)果的篡改。另 外,本實施例的技術(shù)被應(yīng)用于實現(xiàn)認(rèn)證執(zhí)行程序的情況,該認(rèn)證執(zhí)行程序用于執(zhí)行認(rèn)證通 過/未通過判決若干次。(1-1 認(rèn)證處理系統(tǒng)的結(jié)構(gòu))首先,參照圖1,將描述根據(jù)本實施例的認(rèn)證處理系統(tǒng)的結(jié)構(gòu)示例。圖1是示出根 據(jù)本實施例的認(rèn)證處理系統(tǒng)的結(jié)構(gòu)示例的說明圖。圖1中示出的系統(tǒng)結(jié)構(gòu)僅僅是示例,并 且根據(jù)本實施例的技術(shù)的應(yīng)用范圍不限于此。例如,在本實施例中,為了說明的目的使用利 用非接觸IC卡的認(rèn)證過程作為示例。然而,應(yīng)該注意,各種配備有IC、接觸式IC卡等的電 子設(shè)備也在本實施例的技術(shù)范圍內(nèi)。
如圖1所示,認(rèn)證處理系統(tǒng)主要由IC卡用戶終端10和IC卡20構(gòu)成。另外,IC卡 20是認(rèn)證設(shè)備的一個示例。IC卡用戶終端10是用于讀取和寫入IC信息的終端,其連接到 PC等或安裝在公共交通工具的檢票口、零售店、銀行柜臺等處。IC卡用戶終端10主要由輸 入設(shè)備12、顯示設(shè)備14、處理器16和讀取器/寫入器18構(gòu)成。然而,可以根據(jù)實施例的模 式部分地省略這些結(jié)構(gòu)單元。輸入設(shè)備12是IC卡用戶用來輸入個人信息、認(rèn)證信息(PIN,個人識別號)等的 輸入裝置。另外,顯示設(shè)備14是用于顯示由IC卡用戶輸入的個人信息或用于提示輸入認(rèn) 證信息的顯示裝置。處理器16是控制顯示設(shè)備14顯示或讀取器/寫入器18操作的裝置。 另外,處理器16能夠保持通過使用輸入設(shè)備12輸入的IC卡用戶的個人信息和認(rèn)證信息或 各種經(jīng)由讀取器/寫入器18得到的信息。另外,處理器16是用于執(zhí)行認(rèn)證過程中的各種 操作過程的裝置。另外,讀取器/寫入器18是用于通過與IC卡20通信來讀取安裝在IC卡20上的 IC芯片22中的信息或在IC芯片22中寫入信息的裝置。另外,讀取器/寫入器18與IC卡 20之間的通信可以是非接觸通信或接觸通信。如上所述,IC芯片22被提供在IC卡20內(nèi)。 另外,在非接觸通信的情況下,回路天線被設(shè)置在IC卡20內(nèi),并且回路天線的一端連接到 IC芯片22。因此,由于由讀取器/寫入器18導(dǎo)致的磁場改變、通過使用由回路天線導(dǎo)致的 功率調(diào)制來實現(xiàn)IC卡20和IC卡用戶終端10之間的通信。[29]圖1所示的配置僅僅是示例,但是為了說明的目的,下面的說明將根據(jù)圖1的 系統(tǒng)配置。當(dāng)然,根據(jù)本實施例的技術(shù)的應(yīng)用范圍不限于此。(1-2 認(rèn)證方法的總體流程)下面將參照圖2描述本實施例的認(rèn)證處理系統(tǒng)的認(rèn)證方法的總體流程。圖2是示 出根據(jù)本實施例的認(rèn)證處理系統(tǒng)的認(rèn)證方法的總體流程的示例性圖示。然而,圖2所示的 認(rèn)證方法僅僅是示例,根據(jù)本實施例的技術(shù)的應(yīng)用范圍不限于此。例如,本實施例可以應(yīng)用 于任何包括若干次確定過程的認(rèn)證方法。因此,應(yīng)該記住圖2僅僅是從包括若干次確定過 程的認(rèn)證方法中選擇的示例。首先,用戶通過使用輸入設(shè)備12向IC卡用戶終端10輸入PIN(S102、S104)。另 外,關(guān)于由用戶輸入的PIN的信息此時被保持在IC卡20中。接下來,IC卡用戶終端10產(chǎn) 生隨機(jī)數(shù)請求并將其發(fā)送給IC卡20(S106)。該隨機(jī)數(shù)請求用于獲取由IC卡20產(chǎn)生的隨 機(jī)數(shù)。當(dāng)從IC卡用戶終端10接收到該隨機(jī)數(shù)請求時,IC卡20產(chǎn)生隨機(jī)數(shù)(r) (S108)。接 下來,IC卡20將所產(chǎn)生的隨機(jī)數(shù)r發(fā)送給IC卡用戶終端10 (S110)。當(dāng)從IC卡20接收到該隨機(jī)數(shù)r時,IC卡用戶終端10生成隨機(jī)數(shù)(K0) (S112)。然 后,從IC卡20獲取的隨機(jī)數(shù)r、在步驟S112中生成的隨機(jī)數(shù)K0和由用戶輸入的PIN被使用 IC卡20產(chǎn)生的公開密鑰PK加密(S114)。由此加密過程生成密文E(PK,(r,K0,PIN))。另 外,當(dāng)表示為E(A,B)時,E(A,B)指示通過用加密密鑰A加密B而得到的密文。另外,E(PK, (r, K0,PIN))指示密文,其中r、K0和PIN分別以某種形式加密,該形式能夠被對應(yīng)于該公 開密鑰PK的秘密密鑰SK解密。當(dāng)產(chǎn)生了密文E(PK,(r,K0, PIN))時,IC卡用戶終端10將該密文E(PK,(r,K0, PIN))發(fā)送到IC卡20(S116)。當(dāng)從IC卡用戶終端10接收到密文E(PK,(r,K0,PIN))時, IC卡20通過使用與公開密鑰PK對應(yīng)的秘密密鑰SK來解密r、K0和PIN(S118)。然后,IC卡20檢查所解密的PIN與其自己保持的PIN是否不匹配(S120)。此時,在PIN不匹配的情 況下,由IC卡20確定為真。在PIN不匹配的情況下,IC卡20執(zhí)行錯誤處理過程并結(jié)束該 系列認(rèn)證過程。在PIN匹配的情況下,IC卡20檢查已經(jīng)在步驟S118中解密的隨機(jī)數(shù)r與IC卡 在步驟S108中自己產(chǎn)生的隨機(jī)數(shù)r是否匹配(S122)。此時,在隨機(jī)數(shù)r匹配的情況下,由 IC卡20確定為真。在該隨機(jī)數(shù)不匹配的情況下,IC卡20執(zhí)行錯誤處理過程并結(jié)束該系 列認(rèn)證過程。另一方面,在隨機(jī)數(shù)r匹配的情況下,IC卡20生成隨機(jī)數(shù)(K1)(S124)。接 下來,IC卡20使用已經(jīng)在步驟S118中解密的隨機(jī)數(shù)K0加密隨機(jī)數(shù)K1 (S126)。由該加密 過程生成密文E(K0,K1)。然后,IC卡20將所生成的密文E(K0,K1)發(fā)送到IC卡用戶終端 10(S128)。當(dāng)從IC卡20接收到密文E(K0,K1)時,IC卡用戶終端10用在步驟S112中作為 密鑰生成的隨機(jī)數(shù)K0來解密包括在密文E(K0,K1)中的隨機(jī)數(shù)K1(S130)。然后,IC卡用戶 終端10使用隨機(jī)數(shù)K0和K1生成公共密鑰K = K1 xor K0(S132)?!皒or”是指異或運(yùn)算。 以相似的方式,IC卡20使用隨機(jī)數(shù)K0和K1生成公共密鑰K = K1 xor K0 (S134)。然后, IC卡用戶終端10和IC卡20使用公共密鑰K來執(zhí)行加密通信(S136)。如上所述,圖2所示的認(rèn)證方法包括由IC卡20執(zhí)行的兩個確定過程(步驟S120、 S122)。在本實施例中,步驟S120的確定過程是不匹配檢查,而步驟S122的確定過程是匹 配檢查。因此,當(dāng)步驟S120中的確定過程指示“假”并且步驟S122中的確定過程指示“真” 時通過認(rèn)證。如所述,本實施例的主要技術(shù)特點是每個確定過程的確定認(rèn)證通過/未通過 的真值不同。下面,將以圖2所示的過程為例更詳細(xì)地描述本技術(shù)。(1-3 :IC卡用戶終端10的功能結(jié)構(gòu))首先,參照圖3,將描述根據(jù)本實施例的IC卡用戶終端10的功能結(jié)構(gòu)。圖3是示 出根據(jù)本實施例的ic卡用戶終端10的功能結(jié)構(gòu)示例的說明圖。另外,圖3中示出的功能結(jié) 構(gòu)示例用于執(zhí)行圖2的認(rèn)證步驟,并且其根據(jù)所要執(zhí)行的認(rèn)證過程的類型等適當(dāng)?shù)馗淖儭H鐖D3所示,IC卡用戶終端10主要包括輸入設(shè)備12、顯示設(shè)備14、通信單元102、 隨機(jī)數(shù)獲取單元104、隨機(jī)數(shù)生成單元106、存儲單元108、加密單元110、公共密鑰生成單元 112和解密單元114。另外,隨機(jī)數(shù)獲取單元104、隨機(jī)數(shù)生成單元106、存儲單元108、加密 單元110公共密鑰生成單元112和解密單元114的功能是由處理器16實現(xiàn)的。另外,通信 單元102的功能是通過讀取器/寫入器18實現(xiàn)的。首先,當(dāng)用戶使用輸入設(shè)備12輸入PIN時,該P(yáng)IN被從輸入設(shè)備12輸入到加密單 元110。此時,關(guān)于輸入的PIN的確認(rèn)信息可以顯示在顯示設(shè)備14上。另外,從輸入設(shè)備12 向隨機(jī)數(shù)獲取單元104輸入指示PIN被輸入的通知信息(info)。當(dāng)接收到該通知信息時, 隨機(jī)數(shù)獲取單元104產(chǎn)生隨機(jī)數(shù)請求(請求)并經(jīng)由通信單元102將其發(fā)送到IC卡20。 當(dāng)根據(jù)隨機(jī)數(shù)請求的接收從IC卡20發(fā)送隨機(jī)數(shù)r時,隨機(jī)數(shù)r被經(jīng)由通信單元102輸入 到隨機(jī)數(shù)獲取單元104。當(dāng)以這種方式從IC卡20獲取到隨機(jī)數(shù)r時,隨機(jī)數(shù)獲取單元104將所獲取的隨 機(jī)數(shù)r輸入到加密單元110。由隨機(jī)數(shù)生成單元106生成的隨機(jī)數(shù)K0也被輸入到加密單元 110。隨機(jī)數(shù)生成單元106生成隨機(jī)數(shù)K0,并且除了加密單元110外,還將隨機(jī)數(shù)K0輸入到 公共密鑰生成單元112和解密單元114。另外,加密單元110獲取存儲在存儲單元108中的公開密鑰PK,并用公開密鑰PK加密所輸入的PIN、r和K0。由此加密過程生成密文E (PK, (r, K0, PIN))。由加密單元110生成的密文E(PK,(r,K0,PIN))被經(jīng)由通信單元102發(fā)送到IC卡 20。由IC卡20在接收到密文E(PK,(r,K0,PIN))時執(zhí)行針對PIN和隨機(jī)數(shù)r的認(rèn)證過程, 并且當(dāng)認(rèn)證成功時,從IC卡20發(fā)送通過使用隨機(jī)數(shù)K0加密隨機(jī)數(shù)K1而得到的密文E(K0, K1)。通過通信單元102接收的密文E(K0,K1)被從通信單元102輸入到解密單元114。當(dāng) 輸入密文E(K0,K1)時,解密單元114通過使用從隨機(jī)數(shù)生成單元106輸入的隨機(jī)數(shù)K0來 解密包括在密文E(K0,K1)中的隨機(jī)數(shù)K1。然后,由解密單元114解密的隨機(jī)數(shù)K1被輸入 到公共密鑰生成單元112。當(dāng)從解密單元114輸入隨機(jī)數(shù)K1時,公共密鑰生成單元112使用由隨機(jī)數(shù)生成單 元106生成的隨機(jī)數(shù)K0和從解密單元114輸入的隨機(jī)數(shù)K1生成公共密鑰K = K0 xor Kl。 另外,基于隨機(jī)數(shù)K0和K1生成由公共密鑰生成單元112生成的公共密鑰K是充分的。因 此,用于生成公共密鑰K的算術(shù)表達(dá)式不一定限于上述異或運(yùn)算。然而,為了說明的目的, 應(yīng)該理解由上述算術(shù)表達(dá)式生成該公共密鑰。由公共密鑰生成單元112生成的公共密鑰K 被輸入到解密單元114和加密單元110。加密單元110用公共密鑰K加密存儲在存儲單元108中的傳輸數(shù)據(jù)(數(shù)據(jù)),并 經(jīng)由通信單元102將該數(shù)據(jù)發(fā)送到IC卡20。另一方面,在從IC卡20發(fā)送使用公共密鑰K 加密的密文的情況下,經(jīng)由通信單元102接收的密文被輸入到解密單元114。然后,解密單 元114使用公共密鑰K對所接收的密文執(zhí)行解密過程。以此方式實現(xiàn)加密通信。到此,已 經(jīng)描述了 IC卡用戶終端10的功能結(jié)構(gòu)。下面,將具體描述IC卡20的功能結(jié)構(gòu)。(1-4 :IC卡20的功能結(jié)構(gòu))接下來,參照圖4,將描述根據(jù)本實施例的IC卡20的功能結(jié)構(gòu)示例。圖4是示出 根據(jù)本實施例的IC卡20的功能結(jié)構(gòu)示例的說明圖。另外,圖4中示出的功能結(jié)構(gòu)示例用 于執(zhí)行圖2的認(rèn)證過程,并且根據(jù)所要執(zhí)行的認(rèn)證方法的類型等適當(dāng)?shù)馗淖儭H鐖D4所示,IC卡20主要包括通信單元202、第一隨機(jī)數(shù)生成單元204、存儲單元 206、解密單元208、PIN檢查單元210、隨機(jī)數(shù)檢查單元212、第二隨機(jī)數(shù)生成單元214、加密 單元216和公共密鑰生成單元218。在這些結(jié)構(gòu)單元中,主要特點是PIN檢查單元210和隨 機(jī)數(shù)檢查單元212的功能。另外,上述PIN檢查單元210是第二確定處理單元的示例。另 外,上述隨機(jī)數(shù)檢查單元212是第一確定處理單元的示例。另外,上述PIN檢查單元210和 隨機(jī)數(shù)檢查單元212是認(rèn)證確定單元的示例。首先,當(dāng)從IC卡用戶終端10發(fā)送隨機(jī)數(shù)請求(請求)時,IC卡20通過通信單元 202接收該隨機(jī)數(shù)請求。所接收的隨機(jī)數(shù)請求被經(jīng)由通信單元202輸入到第一隨機(jī)數(shù)生成 單元204。第一隨機(jī)數(shù)生成單元204響應(yīng)于該隨機(jī)數(shù)請求生成隨機(jī)數(shù)r。然后,由第一隨機(jī) 數(shù)生成單元204生成的隨機(jī)數(shù)r被輸入到通信單元202,并且被存儲在存儲單元206中。除 了隨機(jī)數(shù)r,用戶的PIN和對應(yīng)于公開密鑰PK的秘密密鑰SK被存儲在存儲單元206中。當(dāng)隨機(jī)數(shù)r被從第一隨機(jī)數(shù)生成單元204輸入到通信單元202時,隨機(jī)數(shù)r被經(jīng) 由通信單元202發(fā)送到IC卡用戶終端10。然后,當(dāng)從已接收到該隨機(jī)數(shù)r的IC卡用戶終 端10發(fā)送使用公開密鑰PK生成的密文E(PK,(r,K0,PIN))時,IC卡20通過通信單元202 接收密文E(PK,(r,K0,PIN))。然后,密文E(PK,(r,K0,PIN))被從通信單元202輸入到解密單元208。當(dāng)輸入了密文E(PK,(r,K0, PIN))時,解密單元208從存儲單元206讀取對應(yīng)于 該公開密鑰PK的秘密密鑰SK,使用該秘密密鑰SK解密該密文E (PK,(r, K0, PIN)),并得到 r、K0和PIN。然后,解密單元208將得到的r輸入到隨機(jī)數(shù)檢查單元212,將得到的PIN輸 入到PIN檢查單元210,并將得到的K0輸入到加密單元216。PIN檢查單元210檢查從解密單元208輸入的PIN與從存儲單元206讀出的PIN 是否不匹配。當(dāng)檢查結(jié)果為PIN不匹配(確定操作的輸出=“真”)時,PIN檢查單元210執(zhí) 行錯誤處理過程。另一方面,當(dāng)PIN匹配(確定操作的輸出=“假”)時,PIN檢查單元210 通知隨機(jī)數(shù)檢查單元212PIN認(rèn)證的通過(ok)。當(dāng)通知了 PIN認(rèn)證的通過時,隨機(jī)數(shù)檢查單元212檢查從解密單元208輸入的r和 從存儲單元206讀出的r是否匹配。當(dāng)檢查結(jié)果為r匹配(確定操作的輸出=“真”)時, 隨機(jī)數(shù)檢查單元212向第二隨機(jī)數(shù)生成單元214輸入指示基于隨機(jī)數(shù)的該認(rèn)證通過(ok) 的通知。另一方面,當(dāng)r不匹配(確定操作的輸出=“假”)時,隨機(jī)數(shù)檢查單元212執(zhí)行錯 誤處理過程。當(dāng)被隨機(jī)數(shù)檢查單元212輸入指示基于隨機(jī)數(shù)的認(rèn)證通過的通知時,第二隨機(jī)數(shù) 生成單元214生成隨機(jī)數(shù)K1。由第二隨機(jī)數(shù)生成單元214生成的隨機(jī)數(shù)K1被輸入到加密 單元216。當(dāng)輸入了隨機(jī)數(shù)K1時,加密單元216使用從解密單元208輸入的K0來加密該隨 機(jī)數(shù)K1。由此加密過程生成密文E(K0,K1)。然后,由加密單元216生成的密文E(K0,K1) 被經(jīng)由通信單元202發(fā)送到IC卡用戶終端10。另外,由解密單元208得到的K0和由第二隨機(jī)數(shù)生成單元214生成的隨機(jī)數(shù)K1 被輸入到公共密鑰生成單元218。公共密鑰生成單元218使用所輸入的K0和K1生成公共 密鑰K = K0 xor K1。另外,基于隨機(jī)數(shù)K0和K1生成由公共密鑰生成單元218生成的公共 密鑰K是充分的。因此,用于生成公共密鑰K的算術(shù)表達(dá)式不一定限于上述異或運(yùn)算。然 而,為了說明的目的,會理解由上述算術(shù)表達(dá)式生成公共密鑰。由公共密鑰生成單元218生成的公共密鑰K被輸入到加密單元216,并且被存儲在 存儲單元206中。加密單元216在加密要通過該加密通信發(fā)送的數(shù)據(jù)時使用公共密鑰K。 另外,在解密通過該加密通信接收的密文時,解密單元208使用存儲在存儲單元206的公共 密鑰K來解密該密文。以這種方式實現(xiàn)該加密通信。到此,已經(jīng)描述了 IC卡20的功能結(jié) 構(gòu)。如上所述,本實施例的IC卡20的特點是PIN檢查單元210和隨機(jī)數(shù)檢查單元212的 功能。下面,將更為詳細(xì)地給出針對這些特征的描述。(關(guān)于確定過程的操作)首先,參照圖5,將針對PIN檢查單元210和隨機(jī)數(shù)檢查單元212的過程描述IC卡 20的過程流程。圖5是示出IC卡20的過程的流程的說明圖。首先,IC卡20通過通信單元202接收從IC卡用戶終端10發(fā)送的隨機(jī)數(shù)請求 (S142)。然后,IC卡20通過第一隨機(jī)數(shù)生成單元204生成隨機(jī)數(shù)r,并經(jīng)由通信單元202 向IC卡用戶終端10發(fā)送該隨機(jī)數(shù)r (S144)。然后,IC卡20從IC卡用戶終端10接收密文 £(卩1(,(1~,1(0沖1沁),并通過解密單元208將其解密(S146)。通過步驟S146的過程,得到了 r、K0 禾口 PIN。然后,PIN檢查單元210檢查所得到的PIN和保持在IC卡20中的PIN是否不匹配(S148)。當(dāng)檢查結(jié)果為不匹配時,IC卡20執(zhí)行錯誤處理過程(S152)。另一方面,當(dāng)檢 查結(jié)果不是不匹配時,IC卡20前進(jìn)到步驟S150的過程。這里應(yīng)該注意,PIN檢查單元210 不確定“其是否匹配”,而是確定“其是否不匹配”。稍后將描述該配置的原因。當(dāng)過程前進(jìn)到步驟S150時,由隨機(jī)數(shù)檢查單元212檢查所得到的r和保持在IC卡 20中的r是否匹配(S150)。當(dāng)檢查結(jié)果為不匹配時,IC卡20執(zhí)行錯誤處理過程(S152)。 另一方面,當(dāng)其匹配時,IC卡20前進(jìn)到步驟S154的過程。這里應(yīng)該注意,PIN檢查單元210 確定“其是否不匹配”,而隨機(jī)數(shù)檢查單元212確定“其是否匹配”。當(dāng)過程前進(jìn)到步驟S154時,IC卡20通過第二隨機(jī)數(shù)生成單元214生成隨機(jī)數(shù) K1 (S154)。然后,IC卡20通過加密單元216生成密文E (K0,K1),并經(jīng)由通信單元202將其 發(fā)送到IC卡用戶終端10 (S156)。另外,IC卡20通過公共密鑰生成單元218生成公共密鑰 K = KOxor K1(S158)。將更詳細(xì)地描述步驟S148和S150的過程。如上所述,步驟S148的過程是針對 PIN的“不匹配檢查”的確定過程。另一方面,步驟S150的過程是針對隨機(jī)數(shù)r的“匹配檢 查”的確定過程。這些過程實際上通過使用如圖6A和圖6B所示的安裝在IC卡20上的MPU 220執(zhí)行。因此,MPU 220是處理電路的示例。首先,參照圖6A。圖6A示意性地示出PIN檢查單元210的“不匹配檢查”過程。 另外,在圖6A中,從IC卡用戶終端10獲取的PIN被表示為PIN,,而保持在IC卡20中的 PIN被簡單表示為PIN。如圖6A所示,MPU 220設(shè)置有標(biāo)志寄存器222 (FR)。另外,雖然表 示為“標(biāo)志寄存器”,在廣義上,其含義為指示MPU 220的操作狀態(tài)的狀態(tài)寄存器。另外,標(biāo) 志寄存器是寄存器的一個示例。另外,標(biāo)志寄存器222在特定位的位置包括零標(biāo)志(ZF)。該零標(biāo)志是當(dāng)操作結(jié)果 為1(確定過程中的“真”)時被設(shè)置(寫入1)的部分。相反地,當(dāng)操作結(jié)果為0(確定過程 中的“假”)時,該零標(biāo)志被清除(寫入0)。如上所述,PIN檢查單元210確定PIN和PIN,是否不匹配。換句話說,PIN檢查單 元210向MPU 220輸入用于使MPU 220確定是否其不匹配的確定過程命令(bne A,B),以 及作為參數(shù)的PIN和PIN’,并與存儲在標(biāo)志寄存器222的零標(biāo)志中的值關(guān)聯(lián)。這里,“bne A, B”是指過程命令,通過該過程命令,在參數(shù)A和B不匹配的情況下確定“真”而在它們匹 配的情況下確定“假”。當(dāng)輸入此命令時,MPU 220確定PIN和PIN’是否不匹配,并在確定結(jié)果為“真”的 情況下設(shè)置標(biāo)志寄存器222的零標(biāo)志,而在確定結(jié)果為“假”的情況下清除標(biāo)志寄存器222 的零標(biāo)志。因此,在要通過PIN認(rèn)證的情況下,“0”需要被存儲在標(biāo)志寄存器222的零標(biāo)志中。接下來,參照圖6B。圖6B示意性地示出隨機(jī)數(shù)檢查單元212的“匹配檢查”過程。 因此,從IC卡用戶終端10獲取的r被表示為r’,而保持在IC卡20中的r被簡單表示為 r。如上所述,隨機(jī)數(shù)檢查單元212確定r和r’是否匹配。換句話說,隨機(jī)數(shù)檢查單元212 向MPU 220輸入用于使MPU 220確定其是否匹配的確定過程命令(beq A, B),以及作為參 數(shù)的r和r’,并與存儲在標(biāo)志寄存器222的零標(biāo)志中的值關(guān)聯(lián)。這里,“beq A, B”是指過程命令,通過該過程命令,在參數(shù)A和B匹配的情況下確 定“真”而在它們不匹配的情況下確定“假”。當(dāng)向MPU220輸入此命令時,MPU 220確定r和r’是否匹配,并在確定結(jié)果為“真”的情況下設(shè)置標(biāo)志寄存器222的零標(biāo)志,而在確定結(jié)果 為“假”的情況下清除標(biāo)志寄存器222的零標(biāo)志。因此,在要通過基于隨機(jī)數(shù)r的認(rèn)證的情 況下,“ 1,,需要被存儲在標(biāo)志寄存器222的零標(biāo)志中。從圖6A和圖6B明顯看出,“匹配檢查”和“不匹配檢查”的相同之處在于比較兩個 參數(shù)并確定參數(shù)的匹配/不匹配。然而,由于通過MPU 220執(zhí)行的操作過程不同,即便確定 結(jié)果都是“匹配”,零標(biāo)志的值也將不同。本實施例提出一種通過使用圖6A和圖6B中示出 的特征來提高安全性的方法,該特征為,對于“相同的確定結(jié)果‘匹配(或不匹配)’”,“零標(biāo) 志的值”彼此不同。根據(jù)一般方法,如果標(biāo)志寄存器222的零標(biāo)志被固定到“1”,PIN認(rèn)證 和基于隨機(jī)數(shù)的認(rèn)證都將被通過。然而,當(dāng)使用根據(jù)本實施例的方法時,PIN認(rèn)證將被未通 過,并且能夠避免篡改。下面將更為詳細(xì)地描述這一點。(1-5 與一般認(rèn)證方法的比較)首先,參照圖7,下面將針對包括與圖5所示的根據(jù)本實施例的認(rèn)證過程中的與 PIN認(rèn)證和隨機(jī)數(shù)認(rèn)證相關(guān)的步驟S146到S154 (此后稱為“步驟160”)描述MPU 220的操 作的流程。然后,將描述在使用一般認(rèn)證方法(圖8)的情況下MPU 220的操作的流程(圖 9)。另外,將在比較一般認(rèn)證方法(圖9)和本實施例的方法(圖7)的同時描述對固定零 標(biāo)志的攻擊的抵抗性(圖10)。(根據(jù)本實施例的認(rèn)證方法的MPU220的操作)首先,將參照圖7。圖7詳細(xì)示出圖5中示出的關(guān)于MPU 220的操作的步驟S148 和S150的過程。如圖7所示,當(dāng)通過步驟S146的過程得到PIN和r時,PIN檢查單元210向MPU 220輸入命令“bne A,B” PIN和PIN,。MPU 220根據(jù)該輸入命令確定PIN和PIN’是否不 匹配(S1481)。當(dāng)確定結(jié)果為“真(是),,時,MPU 220在標(biāo)志寄存器222的零標(biāo)志中存儲 “1,,(S1482)。另一方面,當(dāng)確定結(jié)果為“假(否)”時,MPU 220在標(biāo)志寄存器222的零標(biāo) 志中存儲“0”(S1483)。接下來,PIN檢查單元210檢查標(biāo)志寄存器222的零標(biāo)志是否為“0” (S1484)。當(dāng) 零標(biāo)志不是“0”時,IC卡20執(zhí)行錯誤處理過程(S152)。另一方面,當(dāng)零標(biāo)志為“0”時,IC 卡20前進(jìn)到步驟S1501的過程。即便零標(biāo)志的值被零標(biāo)志固定攻擊固定到“1”,該攻擊能 夠在步驟S1484中被避免。在過程前往步驟S1501的情況下,隨機(jī)數(shù)檢查單元212向MPU 220輸入命令“beq A,B”i 和r’。MPU 220根據(jù)該輸入命令確定r和r’是否匹配(S1501)。當(dāng)確定結(jié)果為“真 (是)”時,MPU 220在標(biāo)志寄存器222的零標(biāo)志中存儲“1”(S1502)。另一方面,當(dāng)確定結(jié) 果為“假(否)”時,MPU 220在標(biāo)志寄存器222的零標(biāo)志中存儲“0”(S1503)。接下來,隨機(jī)數(shù)檢查單元212檢查標(biāo)志寄存器222的零標(biāo)志是否為“1” (S1504)。 當(dāng)零標(biāo)志不是“1”時,IC卡20執(zhí)行錯誤處理過程(S152)。另一方面,當(dāng)零標(biāo)志為“1”時, IC卡20前進(jìn)到步驟S154的過程。即便零標(biāo)志的值被零標(biāo)志固定攻擊固定到“0”,該攻擊 能夠在步驟S1504中被避免。(一般認(rèn)證方法的MPU 220的操作)接下來,參照圖8和圖9,將描述一般認(rèn)證方法的MPU 220的操作。圖8是示出一 般認(rèn)證方法的總體流程的說明圖。另外,圖9是示出認(rèn)證過程的流程的說明圖,其中詳細(xì)示出了 MPU 220的與PIN認(rèn)證和隨機(jī)數(shù)認(rèn)證相關(guān)的操作。首先,將參照圖8。首先,從IC卡用戶終端10接收隨機(jī)數(shù)請求(S12),并且產(chǎn)生隨 機(jī)數(shù)r并將其發(fā)送到IC卡用戶終端10(S14)。然后,從IC卡用戶終端10接收密文E(PK, (r,K0,PIN)),并且得到r和PIN(S16)。然后,檢查所得到的PIN和已經(jīng)保持的PIN是否匹 配(S18)。在檢查結(jié)果為匹配的情況下,過程前進(jìn)到步驟S20 ;而在檢查結(jié)果為不匹配的情 況下,執(zhí)行錯誤處理過程(S22)。在前往步驟S20的情況下,檢查所得到的r和已經(jīng)保持的r是否匹配(S20)。在檢 查結(jié)果為匹配的情況下,過程前進(jìn)到步驟S24 ;而在檢查結(jié)果為不匹配的情況下,執(zhí)行錯誤 處理過程(S22)。在前進(jìn)到S24的過程的情況下,生成隨機(jī)數(shù)K1(S24),并且生成密文E(K0, K1)并將其發(fā)送到IC卡用戶終端10(S26)。另外,生成公共密鑰K(S28)。如上所述,在一般認(rèn)證方法中,步驟S18和步驟S20中執(zhí)行的確定過程都是“匹配 檢查”。將考慮到這一點來參考圖9。如圖9所示,當(dāng)通過步驟S16的過程獲得了 PIN和r時,向MPU 220輸入命令“beq A,B”PIN和PIN,。MPU 220根據(jù)所輸入的命令確定PIN和PIN’是否匹配(S0181)。當(dāng)確 定操作的輸出為“真(是)”時,MPU 220在標(biāo)志寄存器222的零標(biāo)志中存儲“1”(S0182)。 另一方面,當(dāng)確定操作的輸出為“假(否)”時,MPU 220在標(biāo)志寄存器222的零標(biāo)志中存儲 “0” (SO 183)。接下來,檢查標(biāo)志寄存器222的零標(biāo)志是否為“1” (S0184)。在零標(biāo)志不是“1”的 情況下,執(zhí)行錯誤處理過程(S22)。另一方面,在零標(biāo)志為“1”的情況下,過程前進(jìn)到步驟 S0201。如果零標(biāo)志的值被零標(biāo)志固定攻擊固定到“1”,步驟S0184的確定過程通過,該攻擊 沒有被避免。當(dāng)過程前進(jìn)到步驟S0201時,向MPU 220輸入命令“beq A,B,,rfPr,。MPU 220 根據(jù)該輸入命令確定r和r’是否匹配(S0201)。當(dāng)確定操作的輸出為“真(是)”時,MPU 220在標(biāo)志寄存器222的零標(biāo)志中存儲“1”(S0202)。另一方面,當(dāng)確定操作的輸出為“假 (否)”時,MPU220在標(biāo)志寄存器222的零標(biāo)志中存儲“0” (S0203)。接下來,檢查標(biāo)志寄存器222的零標(biāo)志是否為“1” (S0204)。在零標(biāo)志不為“1”的 情況下,執(zhí)行錯誤處理過程(S22)。另一方面,在零標(biāo)志為“1”的情況下,過程前進(jìn)到步驟 S24。如果零標(biāo)志的值被零標(biāo)志固定攻擊固定到“1”,步驟S0204的確定過程通過,該攻擊沒 有被避免。也就是,如圖10所示,PIN匹配檢查(步驟S44)和r匹配檢查(步驟S46)被無 效。這里,將參照圖10簡要描述固定零標(biāo)志的位值的攻擊以及該攻擊對采用一般認(rèn)證方法 的IC卡的影響。如圖10所示,懷有惡意的一方首先產(chǎn)生隨機(jī)數(shù)請求并將其發(fā)送到IC卡(S30)。IC 卡響應(yīng)于所接收的隨機(jī)數(shù)請求生成隨機(jī)數(shù)r (S34)。然后,IC卡將所生成的隨機(jī)數(shù)r發(fā)送到 該攻擊者(S32)。接下來,攻擊者生成隨機(jī)數(shù)K0’(S36)。然后,用IC卡的公開密鑰PK加密 r,、K0,和PIN,,并生成密文E(PK,(r,,K0,,PIN,)) (S38)。這里,r,與IC卡生成的r不 同。另外,PIN’與保持在IC卡中的PIN不同。另外,r有可能代替r’被使用。然后,攻擊者將所生成的密文E(PK,(r,,K0,,PIN,))發(fā)送到IC卡(S40)。然而, 在此時,攻擊者開始對IC卡進(jìn)行激光輻射,并將IC卡的MPU 220的標(biāo)志寄存器222的零標(biāo)志固定到“1”。密文E(PK,(r,,KO,,PIN,))被IC卡接收并且使用對應(yīng)于公開密鑰PK的秘 密密鑰解密r’、K0’和PIN,(S42)。然后,執(zhí)行PIN匹配檢查(S44)和r匹配檢查(S46)。然而,由于標(biāo)志寄存器222的零標(biāo)志被固定到“1”,雖然PIN Φ PIN’且r乒r’, PIN認(rèn)證和r認(rèn)證仍然通過。也就是,步驟S44和S46的認(rèn)證過程被無效。當(dāng)步驟S44和 S46的認(rèn)證通過時,IC卡生成隨機(jī)數(shù)Kl (S48)。然后,IC卡用已經(jīng)在步驟S42中解密的K0, 來加密K1,并生成密文E(K0’,K1) (S50)。
然后,IC卡將密文E (K0’,Kl)發(fā)送到攻擊者(S52)。接收到該密文E (K0’,Kl)的 該攻擊者使用該攻擊者保持的K0’解密該密文E (K0’,K1),并得到K1(S54)。另外,該攻擊 者使用所得到的Kl生成公共密鑰K = Kl xor KO' (S56)。同樣地,IC卡生成公共密鑰K = Kl xorKO’。此時該公共密鑰變?yōu)橛稍摴粽吆虸C卡共享,并且因此,通過使用該公共密鑰 K建立加密通信S60。結(jié)果,該攻擊者能夠自由地篡改該IC卡上的信息。只要使用一般認(rèn)證方法,對于使用FIB對標(biāo)志寄存器值的輸出線的短路攻擊也是 這種情況。然而,通過應(yīng)用根據(jù)本實施例的認(rèn)證方法,針對這些攻擊輸出錯誤,并且能夠避 免允許對IC卡的信息進(jìn)行篡改的情況。另外,可以假設(shè)一種方法,根據(jù)該方法,攻擊者在PIN認(rèn)證和r認(rèn)證之間在激光的 輻射/不輻射之間切換。然而,這種激光輻射控制在技術(shù)上是相當(dāng)困難的。另外,由于沒有 加入新電路以獲得對上述攻擊的抵御,本實施例的技術(shù)的應(yīng)用不導(dǎo)致電路尺度或邏輯復(fù)雜 度的增大。因此,能夠提高安全性而不增加制造成本和設(shè)計負(fù)擔(dān)。到此,已經(jīng)參考具體示例詳細(xì)描述了根據(jù)本實施例的技術(shù)。在以上示例中,本技術(shù) 應(yīng)用的目標(biāo)是IC卡20。然而,在包括若干次確定過程的認(rèn)證將要被IC卡用戶終端10執(zhí)行 的情況下,該技術(shù)也可以應(yīng)用到IC卡用戶終端10。另外,本技術(shù)所應(yīng)用的目標(biāo)不限于IC卡 或IC芯片。也就是,其可以應(yīng)用于任何配備有具有如MPU 220的結(jié)構(gòu)的操作單元的裝置, 并且在執(zhí)行若干次確定過程時,其向MPU 220輸入確定操作命令并通過參照輸出到標(biāo)志寄 存器222的特定位的值來執(zhí)行該確定過程。因此,其可以應(yīng)用于包括上述裝置的PC、移動終 端、移動電話、IC芯片、讀取器/寫入器以及各種類型的電子設(shè)備等。(2:結(jié)論)根據(jù)本實施例的技術(shù)被應(yīng)用到用于執(zhí)行若干次認(rèn)證過程的認(rèn)證設(shè)備。例如,其能 夠應(yīng)用于使用用戶個人識別號PIN以及共享使用隨機(jī)數(shù)r的密鑰來執(zhí)行認(rèn)證的IC卡等。通 過應(yīng)用此配置,未經(jīng)授權(quán)的用戶可以被拒絕,并且使用過去的數(shù)據(jù)的偽裝攻擊能夠被避免。 然而,如果實際執(zhí)行要在認(rèn)證過程時執(zhí)行的確定過程的MPU的標(biāo)志寄存器值被固定到“ 1” 或“0”,則會出現(xiàn)困難的情況,即任一認(rèn)證都以未經(jīng)授權(quán)的方式通過。為了解決這一困難情況,本實施例提出一種方法,其交替地或隨機(jī)地執(zhí)行在條件 表達(dá)式為“真”的情況下執(zhí)行認(rèn)證通過過程的部分以及在條件表達(dá)式為“假”的情況下執(zhí)行 認(rèn)證通過過程的部分。通過應(yīng)用這種實施方法,實施這樣的過程,根據(jù)該過程,在標(biāo)志寄存 器的值為“0”的情況下通過認(rèn)證,并且實施這樣的過程,根據(jù)該過程,在該值為“ 1,,的情況 下通過認(rèn)證。結(jié)果,即便標(biāo)志寄存器的值被固定,也能夠避免攻擊者執(zhí)行未經(jīng)授權(quán)的認(rèn)證通 過過程。本領(lǐng)域技術(shù)人員應(yīng)該理解,可以根據(jù)設(shè)計需要和其它因素在所附權(quán)利要求或與其 等同的范圍內(nèi)進(jìn)行各種修改、組合、次組合和改變。
例如,在與上述實施例相關(guān)的說明中,為了簡化說明主要描述了將本實施例的技術(shù)應(yīng)用于使用外部設(shè)備進(jìn)行的相互認(rèn)證。然而,根據(jù)本實施例的技術(shù)能夠被應(yīng)用到在作為 認(rèn)證設(shè)備的例子的IC卡等內(nèi)執(zhí)行的各種認(rèn)證過程。例如,其可以被應(yīng)用于在IC卡等內(nèi)執(zhí) 行的程序認(rèn)證。提供各種服務(wù)的應(yīng)用程序被加載到IC卡等。另外,在啟動時執(zhí)行的以及用 于為應(yīng)用程序等通過執(zhí)行環(huán)境的固件被加載到IC卡等。這些固件和應(yīng)用程序用于讀取存儲在IC卡等內(nèi)的各種信息或向IC卡等寫入信 息。因此,需要堅決避免對這些固件和應(yīng)用程序的篡改。在許多情況下,在IC卡等內(nèi)執(zhí)行 程序認(rèn)證以避免固件和應(yīng)用程序的篡改。然而,當(dāng)進(jìn)行例如激光輻射等的篡改攻擊時,在IC 卡等內(nèi)執(zhí)行的認(rèn)證過程被無效。因此,將本實施例的技術(shù)應(yīng)用于針對固件和應(yīng)用程序的認(rèn) 證過程以增強(qiáng)對篡改的抵御變得很重要。例如,接連執(zhí)行對作為執(zhí)行目標(biāo)的應(yīng)用程序的認(rèn)證過程和用來為該應(yīng)用程序通過 執(zhí)行環(huán)境的固件的認(rèn)證過程,并且此時使用本實施例的技術(shù)。通過使用此方法,能夠有效地 避免在程序認(rèn)證被例如激光輻射的篡改攻擊無效時未經(jīng)授權(quán)的應(yīng)用程序的執(zhí)行。如所描述 的,根據(jù)本實施例的技術(shù)不僅對使用外部設(shè)備相互執(zhí)行的認(rèn)證過程產(chǎn)生巨大的效果,還對 在設(shè)備內(nèi)執(zhí)行的認(rèn)證過程產(chǎn)生巨大的效果。本申請包含的主題涉及2009年4月10日在日本專利局提交的日本優(yōu)先權(quán)專利申 請JP 2009-096196,通過引用將其完整內(nèi)容結(jié)合于此。
權(quán)利要求
一種認(rèn)證設(shè)備,包括寄存器,其中存儲第一位值和與所述第一位值不同的第二位值;m(1≤m≤N-1,N≥2)個第一確定處理單元,用于確定輸入信息和對應(yīng)于該輸入信息的認(rèn)證信息是否匹配,并且如果所述確定的結(jié)果為真則在所述寄存器中存儲所述第一位值,如果所述確定結(jié)果為假則在所述寄存器中存儲所述第二位值;(N-m)個第二確定處理單元,用于確定輸入信息與對應(yīng)于該輸入信息的認(rèn)證信息是否不匹配,并且如果所述確定的結(jié)果為真則在所述寄存器中存儲所述第一位值,如果所述確定的結(jié)果為假則在所述寄存器中存儲所述第二位值;以及認(rèn)證確定單元,用于在通過每個第一確定處理單元的確定過程在所述寄存器中存儲所述第一位值并且通過每個第二確定處理單元的確定過程在所述寄存器中存儲所述第二位值的情況下確定認(rèn)證通過。
2.根據(jù)權(quán)利要求1所述的認(rèn)證設(shè)備,包括處理電路,用于在輸入用于確定過程的執(zhí)行命令以及與所述執(zhí)行命令相關(guān)的輸入數(shù)據(jù) 的情況下,如果通過使用所述輸入數(shù)據(jù)執(zhí)行所述執(zhí)行命令的結(jié)果為真則在所述寄存器中存 儲所述第一位值,而如果執(zhí)行的結(jié)果為假則在所述寄存器中存儲所述第二位值;其中,所述第一確定處理單元通過向所述處理電路輸入用于針對兩個輸入數(shù)據(jù)的匹配 確定過程的執(zhí)行命令,并且作為輸入數(shù)據(jù)輸入所述輸入信息和對應(yīng)于所述輸入信息的認(rèn)證 信息,在所述寄存器中存儲所述第一位值或所述第二位值,并且其中,所述第二確定處理單元通過向所述處理電路輸入針對兩個輸入數(shù)據(jù)的用于不匹 配確定過程的執(zhí)行命令,并且作為輸入數(shù)據(jù)輸入所述輸入信息和對應(yīng)于所述輸入信息的認(rèn) 證信息,在所述寄存器中存儲所述第一位值或所述第二位值。
3.根據(jù)權(quán)利要求1所述的認(rèn)證設(shè)備;還包括存儲單元,其中存儲要用于認(rèn)證為應(yīng)用程序建立執(zhí)行環(huán)境的第一程序的第一認(rèn)證信息 和要用于認(rèn)證所述應(yīng)用程序的第二認(rèn)證信息;其中,所述第一確定處理單元確定作為所述輸入信息從作為執(zhí)行目標(biāo)的所述第一程序 得到的用于認(rèn)證的信息與存儲在所述存儲單元內(nèi)的所述第一認(rèn)證信息是否匹配,并且在所 述寄存器中存儲所述第一位值或所述第二位值,并且其中,所述第二確定處理單元確定作為所述輸入信息從作為執(zhí)行目標(biāo)的所述第二程序 得到的用于認(rèn)證的信息與存儲在所述存儲單元內(nèi)的所述第二認(rèn)證信息是否不匹配,并且在 所述寄存器中存儲所述第一位值或所述第二位值。
4.根據(jù)權(quán)利要求2所述的認(rèn)證設(shè)備,還包括存儲單元,其中存儲要用于認(rèn)證為應(yīng)用程序建立執(zhí)行環(huán)境的第一程序的第一認(rèn)證信息 和要用于認(rèn)證所述應(yīng)用程序的第二認(rèn)證信息;其中,所述第一確定處理單元確定作為所述輸入信息從作為執(zhí)行目標(biāo)的所述第一程序 得到的用于認(rèn)證的信息與存儲在所述存儲單元內(nèi)的所述第一認(rèn)證信息是否匹配,并且在所 述寄存器中存儲所述第一位值或所述第二位值,并且其中,所述第二確定處理單元確定作為所述輸入信息從作為執(zhí)行目標(biāo)的所述第二程序 得到的用于認(rèn)證的信息與存儲在所述存儲單元內(nèi)的所述第二認(rèn)證信息是否不匹配,并且在 所述寄存器中存儲所述第一位值或所述第二位值。
5.根據(jù)權(quán)利要求1所述的認(rèn)證設(shè)備,還包括存儲單元,其中存儲要用于認(rèn)證為應(yīng)用程序建立執(zhí)行環(huán)境的第一程序的第一認(rèn)證信息 和要用于認(rèn)證所述應(yīng)用程序的第二認(rèn)證信息;其中,所述第二確定處理單元確定作為所述輸入信息從作為執(zhí)行目標(biāo)的所述第一程序 得到的用于認(rèn)證的信息與存儲在所述存儲單元內(nèi)的所述第一認(rèn)證信息是否不匹配,并且在 所述寄存器中存儲所述第一位值或所述第二位值,并且其中,所述第一確定處理單元確定作為所述輸入信息從作為執(zhí)行目標(biāo)的所述第二程序 得到的用于認(rèn)證的信息與存儲在所述存儲單元內(nèi)的所述第二認(rèn)證信息是否匹配,并且在所 述寄存器中存儲所述第一位值或所述第二位值。
6.根據(jù)權(quán)利要求2所述的認(rèn)證設(shè)備,還包括存儲單元,其中存儲要用于認(rèn)證為應(yīng)用程序建立執(zhí)行環(huán)境的第一程序的第一認(rèn)證信息 和要用于認(rèn)證所述應(yīng)用程序的第二認(rèn)證信息;其中,所述第二確定處理單元確定作為所述輸入信息從作為執(zhí)行目標(biāo)的所述第一程序 得到的用于認(rèn)證的信息與存儲在所述存儲單元內(nèi)的所述第一認(rèn)證信息是否不匹配,并且在 所述寄存器中存儲所述第一位值或所述第二位值,并且其中,所述第一確定處理單元確定作為所述輸入信息從作為執(zhí)行目標(biāo)的所述第二程序 得到的用于認(rèn)證的信息與存儲在所述存儲單元內(nèi)的所述第二認(rèn)證信息是否匹配,并且在所 述寄存器中存儲所述第一位值或所述第二位值。
7.根據(jù)權(quán)利要求1所述的認(rèn)證設(shè)備,還包括存儲單元,其中存儲要用于所述認(rèn)證設(shè)備與外部設(shè)備之間的認(rèn)證過程的第一認(rèn)證信息 和要用于經(jīng)由所述外部設(shè)備的用戶認(rèn)證的第二認(rèn)證信息;其中,所述第一確定處理單元確定從所述外部設(shè)備輸入的輸入信息與存儲在所述存儲 單元內(nèi)的所述第一認(rèn)證信息是否匹配,并且在所述寄存器中存儲所述第一位值或所述第二 位值,并且其中,所述第二確定處理單元確定由用戶經(jīng)由所述外部設(shè)備輸入的輸入信息與存儲在 所述存儲單元內(nèi)的所述第二認(rèn)證信息是否不匹配,并且在所述寄存器中存儲所述第一位值 或所述第二位值。
8.根據(jù)權(quán)利要求2所述的認(rèn)證設(shè)備,還包括存儲單元,其中存儲要用于所述認(rèn)證設(shè)備與外部設(shè)備之間的認(rèn)證過程的第一認(rèn)證信息 和要用于經(jīng)由所述外部設(shè)備的用戶認(rèn)證的第二認(rèn)證信息;其中,所述第一確定處理單元確定從所述外部設(shè)備輸入的輸入信息與存儲在所述存儲 單元內(nèi)的所述第一認(rèn)證信息是否匹配,并且在所述寄存器中存儲所述第一位值或所述第二 位值,并且其中,所述第二確定處理單元確定由用戶經(jīng)由所述外部設(shè)備輸入的輸入信息與存儲在 所述存儲單元內(nèi)的所述第二認(rèn)證信息是否不匹配,并且在所述寄存器中存儲所述第一位值 或所述第二位值。
9.根據(jù)權(quán)利要求1所述的認(rèn)證設(shè)備,還包括存儲單元,其中存儲要用于所述認(rèn)證設(shè)備與外部設(shè)備之間的認(rèn)證過程的第一認(rèn)證信息 和要用于經(jīng)由所述外部設(shè)備的用戶認(rèn)證的第二認(rèn)證信息;其中,所述第一確定處理單元確定由用戶經(jīng)由所述外部設(shè)備輸入的輸入信息與存儲在 所述存儲單元內(nèi)的所述第二認(rèn)證信息是否匹配,并且在所述寄存器中存儲所述第一位值或 所述第二位值,并且其中,所述第二確定處理單元確定從所述外部設(shè)備輸入的輸入信息與存儲在所述存儲 單元內(nèi)的所述第一認(rèn)證信息是否不匹配,并且在所述寄存器中存儲所述第一位值或所述第二位值
10.根據(jù)權(quán)利要求2所述的認(rèn)證設(shè)備,還包括存儲單元,其中存儲要用于所述認(rèn)證設(shè)備與外部設(shè)備之間的認(rèn)證過程的第一認(rèn)證信息 和要用于經(jīng)由所述外部設(shè)備的用戶認(rèn)證的第二認(rèn)證信息;其中,所述第一確定處理單元確定由用戶經(jīng)由所述外部設(shè)備輸入的輸入信息與存儲在 所述存儲單元內(nèi)的所述第二認(rèn)證信息是否匹配,并且在所述寄存器中存儲所述第一位值或 所述第二位值,并且其中,所述第二確定處理單元確定從所述外部設(shè)備輸入的輸入信息與存儲在所述存儲 單元內(nèi)的所述第一認(rèn)證信息是否不匹配,并且在所述寄存器中存儲所述第一位值或所述第二位值
11.一種認(rèn)證方法,包括步驟確定輸入信息和對應(yīng)于該輸入信息的認(rèn)證信息是否匹配,并執(zhí)行m次(1彡m彡N-1, N^2)第一確定處理步驟如果所述確定的結(jié)果為真,則在要存儲第一位值或與所述第一 位值不同的第二位值的寄存器中存儲所述第一位值,并且如果所述確定的結(jié)果為假,則在 所述寄存器中存儲所述第二位值;確定輸入信息和對應(yīng)于該輸入信息的認(rèn)證信息是否不匹配,并執(zhí)行(N-m)次第二確定 處理步驟如果所述確定的結(jié)果為真,則在所述寄存器中存儲所述第一位值,并且如果所述 確定的結(jié)果為假,則在所述寄存器中存儲所述第二位值;以及在由每個第一確定處理步驟的確定過程在所述寄存器中存儲所述第一位值并且由每 個第二確定處理步驟的確定過程在所述寄存器中存儲所述第二位值的情況下確定認(rèn)證通 過
12.—種程序,其用于使計算機(jī)實現(xiàn)步驟確定輸入信息和對應(yīng)于該輸入信息的認(rèn)證信息是否匹配,并執(zhí)行m次(1彡m彡N-1, N^2)第一確定處理步驟如果所述確定的結(jié)果為真,則在要存儲第一位值或與所述第一 位值不同的第二位值的寄存器中存儲所述第一位值,并且如果所述確定的結(jié)果為假,則在 所述寄存器中存儲所述第二位值;確定輸入信息和對應(yīng)于該輸入信息的認(rèn)證信息是否不匹配,并執(zhí)行(N-m)次第二確定 處理步驟如果所述確定的結(jié)果為真,則在所述寄存器中存儲所述第一位值,并且如果所述 確定的結(jié)果為假,則在所述寄存器中存儲所述第二位值;以及在由每個第一確定處理步驟的確定過程在所述寄存器中存儲所述第一位值并且由每 個第二確定處理步驟的確定過程在所述寄存器中存儲所述第二位值的情況下確定認(rèn)證通 過
全文摘要
一種認(rèn)證設(shè)備、認(rèn)證方法及其程序背景。提供了一種認(rèn)證設(shè)備,其包括寄存器,其中存儲第一位值和與所述第一位值不同的第二位值;m個第一確定處理單元,用于確定輸入信息和對應(yīng)于該輸入信息的認(rèn)證信息是否匹配,并且如果所述確定的結(jié)果為真則在所述寄存器中存儲所述第一位值、如果所述確定結(jié)果為假則在所述寄存器中存儲所述第二位值;(N-m)個第二確定處理單元,用于確定輸入信息與對應(yīng)于該輸入信息的認(rèn)證信息是否不匹配,并且如果所述確定的結(jié)果為真則在所述寄存器中存儲所述第一位值、如果所述確定的結(jié)果為假則在所述寄存器中存儲所述第二位值;以及認(rèn)證確定單元,用于在通過每個第一確定處理單元的確定過程在所述寄存器中存儲所述第一位值并且通過每個第二確定處理單元的確定過程在所述寄存器中存儲所述第二位值的情況下確定認(rèn)證通過。
文檔編號H04L29/06GK101860528SQ201010151369
公開日2010年10月13日 申請日期2010年4月2日 優(yōu)先權(quán)日2009年4月10日
發(fā)明者宮戶良和, 草川雅文 申請人:索尼公司