欧美在线观看视频网站,亚洲熟妇色自偷自拍另类,啪啪伊人网,中文字幕第13亚洲另类,中文成人久久久久影院免费观看 ,精品人妻人人做人人爽,亚洲a视频

密碼運算處理電路的制作方法

文檔序號:6618642閱讀:295來源:國知局
專利名稱:密碼運算處理電路的制作方法
技術(shù)領(lǐng)域
本發(fā)明涉及密碼運算處理電路,更詳細地說是涉及具有防止密鑰 等隱匿數(shù)據(jù)的分析的手段的密碼運算處理電路。
背景技術(shù)
近來,隨著使用IC卡或帶有IC卡功能的攜帶式電話機等進行電 子交易或自動檢票等的發(fā)展,I c卡等的安全保證成為重要問題。
但是,已經(jīng)發(fā)現(xiàn)了通過觀測和分析IC卡進行密碼運算處理期間的 消耗功率(消耗電流)來分析IC卡內(nèi)部的密鑰或密碼運算處理內(nèi)容
的方法。作為代表性的分析手段,有將消耗電流的變化用于直接分析
的方法即簡單功率分析(Simple Power Analysis; SPA)或通過對〗見測 數(shù)據(jù)進行統(tǒng)計處理來推斷機密密鑰的方法即功率差分分析 (Differential Power Analysis; DPA )等。
作為現(xiàn)有的簡單功率分析對策,已知在通常處理期間插入用于使 密碼運算處理步驟的定時改變的虛擬處理的手法、或使動作(工作) 時鐘周期改變從而使消耗電流在時間軸上改變的手法。這些手法,每 次都使密碼運算處理的步驟或定時改變、并使從時間軸看去時的消耗 電流波形改變,因此,使在時間軸上對電流波形進行比較的這種數(shù)據(jù) 依存性的分析實際上變得不可能,從而實現(xiàn)了機密保護(參照專利文 獻1 )。
作為現(xiàn)有的功率差分分析對策,已知由噪聲生成電路將噪聲電流 重疊在通常處理的消耗電流上的手法。在這種手法中,即使反復(fù)進行 多次相同的運算,電流波形也不相同,因此使差分分析很難進行,從 而實現(xiàn)了機密保護(參照專利文獻2)。
專利文獻1:日本特開2000 — 259799號公報
專利文獻2:日本特開2005 — 252705號公報

發(fā)明內(nèi)容
作為簡單功率分析對策,當過多地追加用于使密碼運算處理步驟 的定時改變的虛擬處理時,則存在著直到密碼運算執(zhí)行結(jié)束為止的時 間延長、密碼運算處理的性能顯著降低的問題。相反,在用于使密碼 運算處理步驟的定時改變的虛擬處理較少時,密碼運算處理的性能降 低較小,但存在著很容易在外部讀取由通常密碼處理引起的電流波形 變化這樣的問題。
作為簡單功率分析對策,對于使動作時鐘周期改變從而使消耗電
流在時間軸上改變的手法,存在著易于從外部觀測時鐘周期等信息并 可通過數(shù)字信號處理將所觀測到的電流波形作為一定的時鐘周期的 電流波形進行修復(fù)分析這樣的問題。
作為功率差分分析對策,對于由噪聲生成電路將噪聲電流重疊在
通常處理的消耗電流上的手法,可利用近來的作為LSI分析4支術(shù)的液 晶分析、發(fā)光分析等在LSI內(nèi)部確定消耗了電流的物理位置。按照液 晶分析,可將特定部位的電流變化作為液晶的透射率變化進行觀測, 因而存在著可進行電流分析的問題。
為解決上述課題,本發(fā)明的密碼運算處理電路的特征在于,包括 存儲密碼運算用數(shù)據(jù)的存儲器;用于對該密碼運算用數(shù)據(jù)進行運算的 運算器;用于暫時存儲對該運算器的輸入輸出數(shù)據(jù)的寄存器;接收密 碼運算指令并為了對密碼運算用數(shù)據(jù)進行密碼處理而對存儲器、運算 器和寄存器進行控制的密碼控制電路;接收用于指示密碼運算指令的 執(zhí)行已結(jié)束的運算完成信號并對密碼控制電路發(fā)出用于使存儲器、運 算器和寄存器動作的偽運算指令的偽運算指令電路。 、
本發(fā)明的密碼運算處理電路,在來自CPU等的密碼運算指令的執(zhí) 行結(jié)束后,由偽運算指令電路發(fā)出使如果是通常則停止著的存儲器、 運算器和寄存器動作的偽運算指令,從而使存儲器、運算器或寄存器
以與密碼運算指令相同的指令進行動作并消耗電流,因此,很難用消 耗電流的大小等確定密碼運算處理的結(jié)束或開始等的定時,因而保密
性提高。進而,偽運算指令始終只在沒有發(fā)送來自CPU等的密碼運
算指令的期間發(fā)出,因此決不會使來自CPU等的密碼運算指令的發(fā)
送延遲,因此不會使密碼運算處理的性能降低。


圖1是表示本發(fā)明的密碼運算處理電路的結(jié)構(gòu)例的框圖。
圖2是表示圖1的密碼運算處理電路的動作的時序圖。 圖3是表示圖1的密碼運算處理電路中沒有偽運算指令電路時的 動作的時序圖。
圖4是表示圖1中的偽運算指令電路的詳細結(jié)構(gòu)例的框圖。
圖5是表示圖4中的密碼運算指令存儲電路的存儲內(nèi)容的例子的圖。
圖6是表示圖1中的密碼控制電路的詳細結(jié)構(gòu)例的框圖。 圖7是表示具有圖6的密碼控制電路的密碼運算處理電路的動作 的時序圖。
圖8是表示具有圖6的密碼控制電路的密碼運算處理電路的動作
的另一個時序圖。
圖9是表示具有圖6的密碼控制電路的密碼運算處理電路的動作
的又一個時序圖。
圖IO是表示具有圖6的密碼控制電路的密碼運算處理電路的動作
的其他的時序圖。
圖11是將圖7~圖IO匯總后示出的時序圖。
圖12是表示圖6中的偽控制電路的詳細結(jié)構(gòu)例的框圖。
圖13是表示圖12中的通??刂菩盘柎鎯﹄娐返拇鎯?nèi)容的例子的圖。
圖14是表示圖1的密碼運算處理電路的變形例的框圖。 圖15是表示圖14中的密碼運算指令存儲電路的存儲內(nèi)容的例子 的圖。
圖16是表示圖14中的通??刂菩盘柎鎯﹄娐返拇鎯?nèi)容的例子
的圖。
圖17是表示圖6的變形例的密碼控制電路和運算部的結(jié)構(gòu)的框圖。
圖18是表示具有圖17的密碼控制電路和運算部的密碼運算處理
電路的動作的時序圖。
圖19是表示圖17的變形例的運算部的結(jié)構(gòu)的框圖。
圖20是表示具有圖19的運算部的密碼運算處理電路的動作的時序圖。
標號i兌明
IOO偽運算指令電路 102運算部 104存儲器B 106寄存器A 108寄存器C 110時鐘
112密碼運算完成信號
114運算完成信號
116寄存器A控制信號
118運算器控制信號
120存儲器B控制信號
122存儲器A輸出數(shù)據(jù)
124運算器輸出數(shù)據(jù)
400密碼運算指令存儲電路
402密碼運算指令履歷信息
601通常控制電路
603選擇器
604通??刂齐娐反鎯ζ鰽控制信號 605通常控制電路寄存器A控制信號
101密碼控制電路 103存儲器A 105運算器 107寄存器B 109 CPU
111密碼運算指令 113偽運算指令 115存儲器A控制信號
117寄存器B控制信號 119寄存器C控制信號
121存儲器A輸出數(shù)據(jù)
123寄存器B輸出數(shù)據(jù) 125寄存器C輸出數(shù)據(jù) 401偽運算指令生成電路 600動作狀況通知電路 602偽4空制電路
606通??刂齐娐芳拇嫫鰾控制信號 607通常控制電路運算器控制信號 608通??刂齐娐芳拇嫫鰿控制信號 609通常控制電路存儲器B控制信號 610偽控制電路存儲器A控制信號 611偽控制電路寄存器A控制信號 612偽控制電路寄存器B控制信號 613偽控制電路運算器控制信號 614偽控制電路寄存器C控制信號 615偽控制電路存儲器B控制信號 616動作狀況通知信號 801偽控制信號生成電路 IOOO位值0計數(shù)電路 1300預(yù)置電路A 1302預(yù)置電路A控制信號 1304預(yù)置電路A輸出數(shù)據(jù) 1306脈沖信號發(fā)生電路 1501延遲電S各B 1503延遲電路B輸出數(shù)據(jù)
800通??刂菩盘柎鎯﹄娐?802通常控制信號履歷信息 1001位值O計數(shù)信息 1301預(yù)置電路B 1303預(yù)置電路B控制信號 1305預(yù)置電路B輸出數(shù)據(jù) 1500延遲電路A 1502延遲電路A輸出數(shù)據(jù)
具體實施例方式
以下,參照

用于實施本發(fā)明的優(yōu)選方式。此外,對圖中 相同或相當?shù)牟糠謽艘韵嗤姆?,并不再重?fù)其說明。
圖1示出本發(fā)明的密碼運算處理電路的結(jié)構(gòu)例。圖1的密碼運算 處理電路具有偽運算指令電路100、密碼控制電路IOI、運算部102、 存儲器A103、存儲器B104。運算部102具有運算器105、寄存器A106、 寄存器B107、寄存器C108。
偽運算指令電路100根據(jù)從CPU109輸出的密碼運算指令111識 別開始密碼運算的情況,然后接收指示密碼運算指令111的執(zhí)行已結(jié)
束的信號即運算完成信號114,并對CPU109輸出密碼運算完成信號 112,并且對密碼控制電路101發(fā)出偽運算指令113。之后,當接收還 作為指示偽運算指令113的執(zhí)行已結(jié)束的信號的運算完成信號114并 識別出偽運算已完成時,再次發(fā)出偽運算指令113。偽運算指令113 的發(fā)送反復(fù)進行直到從CPU109輸出新的密碼運算指令111為止。
密碼控制電路101接收來自CPU109的密碼運算指令111或來自 偽運算指令電路100的偽運算指令113,為了控制存儲器A103、存儲 器B104、運算器105、寄存器A106、寄存器B107、寄存器C108而 輸出存儲器A控制信號115、存儲器B控制信號120、運算器控制信 號118、寄存器A控制信號116、寄存器B控制信號117、寄存器C 控制信號119。而且,當密碼運算指令111或偽運算指令113的執(zhí)行 結(jié)束時,密碼控制電路101輸出運算完成信號114。當偽運算指令113 的處理正在執(zhí)行中而從CPU109發(fā)出了密碼運算指令111時,強制性 地結(jié)束基于偽運算指令113進行的控制,并開始密碼運算指令111的 處理。
存儲器A103,例如是與時鐘脈沖110的下降沿同步的存儲器,從 由來自密碼控制電路101的存儲器A控制信號115指示的地址輸出存 儲器A輸出數(shù)據(jù)121。
存儲器B104,例如是與時鐘脈沖110的下降沿同步的存儲器,對 由來自密碼控制電路101的存儲器B控制信號120指示的地址寫入寄 存器C輸出數(shù)據(jù)125。
運算器105是組合電路,將存儲器A輸出數(shù)據(jù)122和寄存器B輸 出數(shù)據(jù)123作為輸入進行基于運算器控制信號118的運算,并將結(jié)果 輸出為運算器輸出數(shù)據(jù)124。
寄存器A106,將存儲器A輸出數(shù)據(jù)121作為輸入,當來自密碼 控制電路101的寄存器A控制信號116變?yōu)橛行r,保持存儲器A 輸出數(shù)據(jù)121,并輸出為存儲器A輸出數(shù)據(jù)122。
寄存器B107,將存儲器A輸出數(shù)據(jù)121作為輸入,當來自密碼 控制電路101的寄存器B控制信號117變?yōu)橛行r,保持存儲器A
輸出數(shù)據(jù)121,并輸出為存儲器B輸出數(shù)據(jù)123。
寄存器C108,將運算器輸出數(shù)據(jù)124作為輸入,當來自密碼控制 電路101的寄存器C控制信號119變?yōu)橛行r,保持運算器輸出數(shù)據(jù) 124,并輸出為寄存器C輸出數(shù)據(jù)125。
CPU109對密碼控制電路101發(fā)出密碼運算指令111來實施密碼運 算處理,而且接收來自偽運算指令電路IOO的密碼運算完成信號112 來識別密碼運算處理的結(jié)束。
圖2示出圖1的密碼運算處理電路的動作。在此,作為一例,首 先假定從CPU109發(fā)出稱為指令1的密碼運算指令111。
密碼控制電路101對指令1進行解碼,分別從存儲器A103的地 址A1、地址A2讀出數(shù)據(jù)D1、數(shù)據(jù)D2,并將數(shù)據(jù)D1存儲在寄存器 A106、將數(shù)據(jù)D2存儲在寄存器B107。存儲器A消耗電流II是存儲 器A103進行了讀出動作而產(chǎn)生的消耗電流,形成與地址Al、地址 A2的讀出動作對應(yīng)的消肆毛電流波形。
密碼控制電路101對指令1進行解碼并輸出運算1作為運算器控 制信號118。在該例中,運算1是在確定輸出結(jié)果之前最低需要5個 時鐘周期的指令。運算器105對存儲器A輸出數(shù)據(jù)122的輸出Dl和 寄存器B輸出數(shù)據(jù)123的輸出D2進行運算,并在3個時鐘周期后輸 出DA作為運算器輸出數(shù)據(jù)124。每當對作為組合電路的運算器105 的輸入寄存器即寄存器A106和寄存器B107存儲數(shù)據(jù)時,運算部消 耗電流II發(fā)生變化,在確定了寄存器Al06和寄存器B107的值之后, 運算也要執(zhí)行3個時鐘周期,因此將消耗電流。
密碼控制電路101對指令1進行解碼后輸出用于在運算1結(jié)束的 定時將運算結(jié)果存儲在寄存器C108中的寄存器C控制信號119,并 將DA存儲在寄存器C108。然后,密碼控制電路101對指令1進行 解碼后發(fā)出存儲器B控制信號120,將寄存器C輸出數(shù)據(jù)125即DA 存儲在存儲器B104的地址AA。存儲器B消耗電流II是對存儲器B104 進行了寫入動作而產(chǎn)生的消耗電流,形成與對地址AA的寫入動作對 應(yīng)的消電流波形。
之后,密碼控制電路101將指示來自CPU109的指令1的執(zhí)行已 結(jié)束的運算完成信號114輸出到偽運算指令電路100。
偽運算指令電路100在根據(jù)從CPU109輸出的密碼運算指令111 識別出已開始了指令1的密碼運算之后,接收作為指示指令1的執(zhí)行 已結(jié)束的信號的運算完成信號114,并對CPU109輸出密碼運算完成 信號112。以下,將該指令1的密碼運算的從開始到結(jié)束的期間定義 為"密碼運算處理1"。
在CPU109中,在接收到密碼運算完成信號112后為了發(fā)出新的 密碼運算指令ill即指令2,需要幾十個時鐘周期作為程序處理期間。 但是,在圖2中示出從接收指令1的密碼運算完成信號112起在8時 鐘周期后發(fā)出了指令2的例子。
偽運算指令電路100對密碼控制電路101發(fā)出指令G作為偽運算 指令113。在此,假定指令G為從偽運算指令電路100固定輸出的指 令,分別從存儲器A103的地址al、地址a2讀出^:據(jù)dl、數(shù)據(jù)d2, 并將數(shù)據(jù)dl存儲在寄存器A106、將數(shù)據(jù)d2存儲在寄存器B107,在 運算器105中進行需要2個時鐘周期的運算直到輸出結(jié)果確定為止, 在將dx作為運算結(jié)果存儲在寄存器C108并將dx存儲在存儲器B104 的地址ax之后,向偽運算指令電路100輸出運算完成信號114并結(jié) 束指令G的處理。此外,由于需要存儲器B控制信號120的數(shù)據(jù)存 儲用地址ax不破壞密碼運算指令111等使用的存儲空間,因此,將 CPU109不使用的地址用作數(shù)據(jù)存儲用地址。
偽運算指令電路IOO根據(jù)指示偽運算指令113的執(zhí)行已結(jié)束的運 算完成信號114反復(fù)進行偽運算指令113的發(fā)送,直到從CPU109輸 出新的密碼運算指令111為止,但在圖2的例子中,由于在同一定時 從CPU109發(fā)出了作為新的密碼運算指令111的指令2,因此,中止 偽運算指令113的發(fā)送。以下,將從該偽運算指令113的實行開始到 結(jié)束的期間定義為"偽運算處理"。
在圖2中,圖1的密碼運算處理電路的總體的消耗電流波形為存 儲器A消耗電流II 、運算器消耗電流II和存儲器B消耗電流II之和,
因而"電路總體的消耗電流n,,是合計后的消耗電流波形。在圖2中, 電路總體的消耗電流n在"密碼運算處理r期間和"偽運算處理,, 期間,為大致連續(xù)的消耗電流波形。
圖3示出圖i的密碼運算處理電路中沒有作為本發(fā)明的構(gòu)成要素
的偽運算指令電路100時的動作。在圖3中可以看出,在相當于圖2
的"偽運算處理"期間的時鐘周期期間,密碼運算處理電路不動作, 所以電路總體的消耗電流i的波形持續(xù)地成為low(低)電平期間, 可從消耗電流波形的變化明確指令執(zhí)行的結(jié)束、開始的定時。
如上所述,在圖1的密碼運算處理電路中,在來自CPU109等的 密碼運算指令111的執(zhí)行結(jié)束后,由偽運算指令電路IOO發(fā)出使如果 是通常則停止著的存儲器A103、存儲器B104、運算器105、寄存器 A106、寄存器B107、寄存器C108進行動作的偽運算指令113,存儲 器A103、存儲器B104、運算器105、寄存器A106、寄存器B107、 寄存器C108與發(fā)出了密碼運算指令111時相同的方式進行動作并消 耗電流,因此,很難用消耗電流的大小等來確定出密碼運算處理的結(jié) 束或開始等的定時,因而保密性提高。
進而,偽運算指令113只在沒有發(fā)送來自CPU109等的密碼運算 指令lll的期間被發(fā)送,因此不會使來自CPU109等的密碼運算指令 111的發(fā)送延遲,所以不會降低密碼運算處理的性能(performance )。
在此,假定偽運算指令113是固定的且總是發(fā)出相同的指令,但 也可以將與此前從CPU 109發(fā)出的密碼運算指令111相同的指令作為 偽運算指令113來發(fā)出。由此,即使在密碼運算指令111的執(zhí)行結(jié)束, 也要執(zhí)行具有相同的消耗電流波形的偽運算指令113,因此很難分析
出密碼運算指令lll的執(zhí)行在哪個定時結(jié)束這一情況,對電流分析的 保密性進一步提高。
此外,存儲器A103和存儲器B104也可以是相同的存儲器。而且, 運算器105的輸入和保持其輸入數(shù)據(jù)的寄存器也可以是3個以上。而 且,運算器105也可以由加法器、乘法器等多個運算要素構(gòu)成。
圖4示出圖1中的偽運算指令電路100的詳細結(jié)構(gòu)例。圖4的偽
運算指令電路IOO包括存儲來自CPU109的密碼運算指令111的密碼 運算指令存儲電路400、和從過去的密碼運算指令歷史生成偽運算指 令113的偽運算指令生成電路401。
密碼運算指令存儲電路400存儲CPU109輸出的密碼運算指令111 來作為密碼運算指令歷史信息402。
偽運算指令生成電路401接收指示密碼運算指令111的執(zhí)行已結(jié) 束的信號即運算完成信號114,根據(jù)從密碼運算指令存儲電路400輸 出的密碼運算指令歷史信息402生成偽運算指令113。
圖5示出圖4中的密碼運算指令存儲電路400的存儲內(nèi)容的一例。 如圖5所示,密碼運算指令存儲電路400將過去發(fā)送的多個密碼運算 指令111存儲在由RAM形成的FIFO (FIRST-IN FIRST-OUT:先進 先出)存儲器中。在此,將存儲有密碼運算指令111的FIFO地址稱 為存儲槽(slot)。
在圖5中具有5個存儲槽,從存儲槽1開始依次存入過去的密碼 運算指令111,當存儲槽占滿時從存儲于存儲槽5的密碼運算指令111 起廢除。在此,在存儲槽1中存儲有通過進行以分別來自地址2和地 址3的160位長的數(shù)據(jù)作為輸入的乘法運算來將結(jié)果輸出到地址0的 指令,在存儲槽2中存儲有通過進行以分別來自地址O和地址1的160 位長的數(shù)據(jù)作為輸入的加法運算來將結(jié)果輸出到地址1的指令,在存 儲槽3中存儲有通過以分別來自地址4和地址5的160位長的數(shù)據(jù)作 為輸入的乘法運算來將結(jié)果輸出到地址0的指令,在存儲槽4中存儲 有通過以分別來自地址O和地址1的160位長的lt據(jù)作為輸入的加法 運算來將結(jié)果輸出到地址1的指令,在存儲槽5中存儲有通過以分別 來自地址l和地址6的160位長的數(shù)據(jù)作為輸入的減法運算來將結(jié)果 輸出到地址1的指令。
偽運算指令生成電路401接收指示密碼運算指令111的執(zhí)行已結(jié) 束的信號即運算完成信號114,檢索存儲槽1~存儲槽5中所存儲的 密碼運算指令lll,識別出以160位作為輸入的乘法運算為2次、以 160位作為輸入的加法運算為2次、以160位作為輸入的減法運算為
1次,在出現(xiàn)頻率上乘法運算和加法運算的次數(shù)相同,但在最后發(fā)送 的存儲槽1中存儲有乘法運算,因此決定選擇加法運算,并選擇存儲
槽4,根據(jù)存儲槽4的密碼運算指令111生成通過進行將分別來自地 址0和地址1的160位長的數(shù)據(jù)作為輸入的加法運算來將結(jié)果輸出到 地址AX的偽運算指令113。由于需要數(shù)據(jù)存儲用地址AX不破壞密 碼運算指令111等使用的存儲空間,因此,將CPU109不使用的地址 用作數(shù)據(jù)存儲用地址。
如上所述,在圖4的結(jié)構(gòu)中,將從CPU109逐次發(fā)出的密碼運算 指令111存儲在RAM等中,并從所存儲的密碼運算指令111中選擇 出現(xiàn)頻率高的密碼運算指令111作為偽運算指令113發(fā)出,因此,即 使實施電流分析,也很難分清是執(zhí)行著逐次發(fā)出的密碼運算指令111、 還是作為偽運算指令113執(zhí)行著出現(xiàn)頻率高的密碼運算指令111,因 而對電流分析的保密性進一 步提高。
此外,偽運算指令生成電路401也可以從所存儲的密碼運算指令 111中隨機地選擇密碼運算指令111來作為偽運算指令113發(fā)出。由 此,即使實施電流分析,也很難分清是執(zhí)行著逐次發(fā)出的密碼運算指 令111、還是作為偽運算指令113隨機地執(zhí)行著過去的密碼運算指令 111,因而對電流分析的保密性進一步提高。
另外,密碼運算指令存儲電路400也可以由非易失性存儲器構(gòu)成。 由此,將從CPU109逐次發(fā)出的密碼運算指令111存儲在非易失性存 儲器中,即使在電源斷電后也仍能存儲過去的密碼運算指令111的歷 史,并從所存儲的密碼運算指令111中選擇密碼運算指令111來作為 偽運算指令113發(fā)出,因此,即使是在接通電源后執(zhí)行密碼運算并反 復(fù)執(zhí)行電源斷電等程序借以觀測電流波形變化的電流分析手法中,也 很難分清是執(zhí)行著密碼運算指令111、還是作為偽運算指令113執(zhí)行 著過去的密碼運算指令111,因而對電流分析的保密性進一步提高。
此外,密碼運算指令存儲電路400的存儲槽數(shù)在此設(shè)為5個,但 存儲槽數(shù)也可以增減。
其次,即使是正在執(zhí)行來自CPU109的密碼運算指令111的過程
中,也存在著存儲器103、 104、運算器105和寄存器106、 107、 108 以時鐘周期為單位停止的期間。而且,即使是偽運算指令113正在執(zhí) 行中,也存在著存儲器103、 104、運算器105和寄存器106、 107、 108以時鐘周期為單位停止的期間。著眼于這一點,在以下說明的例 子中,通過使這些運算資源103 - 108總是進行動作來消耗電流,從 而使對電流分析的保密性進一步提高。
圖6示出圖1中的密碼控制電路101的詳細結(jié)構(gòu)例。圖6的密碼 控制電路101具有動作狀況通知電路600、通??刂齐?各601、偽控 制電路602、選擇器603。
通??刂齐娐?01接收密碼運算指令111或偽運算指令113,對 選擇器603輸出通??刂齐娐反鎯ζ鰽控制信號604、通??刂齐娐?寄存器A控制信號605、通??刂齐娐芳拇嫫鰾控制信號606、通常 控制電路運算器控制信號607、通??刂齐娐芳拇嫫鰿控制信號608、 通??刂齐娐反鎯ζ鰾控制信號609 (以下將這些控制信號稱為通常 控制信號)。而且,當根據(jù)密碼運算指令111或偽運算指令113進行 的控制結(jié)束時,對偽運算指令電路IOO輸出運算完成信號114。
偽控制電路602對選擇器603輸出偽控制電路存儲器A控制信號 610、偽控制電路寄存器A控制信號611、偽控制電路寄存器B控制 信號612、偽控制電路運算器控制信號613、偽控制電路寄存器C控 制信號614、偽控制電路存儲器B控制信號615 (以下將這些控制信 號稱為偽控制信號)。
即使是密碼運算指令111或偽運算指令113正在執(zhí)行中,動作狀 況通知電路600也對選擇器603輸出指示來自通??刂齐娐?01的通 ??刂菩盘柌恍枰加写鎯ζ鰽103、存儲器B104、運算器105、寄 存器A106、寄存器B107或寄存器C108的時鐘周期期間的6位的動 作狀況通知信號[5:0]616。
選擇器603根據(jù)動作狀況通知信號[5:0]616進行選擇,由動作狀 況通知信號[O]從通??刂齐娐反鎯ζ鰽控制信號604或偽控制電路 存儲器A控制信號610中選擇存儲器A控制信號115,由動作狀況通
知信號[l]從通??刂齐娐芳拇嫫鰽控制信號605或偽控制電路寄存 器A控制信號611中選擇寄存器A控制信號116,由動作狀況通知信 號[2]從通常控制電路寄存器B控制信號606或偽控制電路寄存器B 控制信號612中選擇寄存器B控制信號117,由動作狀況通知信號[3] 從通??刂齐娐愤\算器控制信號607或偽控制電路運算器控制信號 613中選擇運算器控制信號118,由動作狀況通知信號[4]從通常控制 電路寄存器C控制信號608或偽控制電路寄存器C控制信號614中 選擇寄存器C控制信號119,由動作狀況通知信號[5]從通??刂齐娐?存儲器B控制信號609或偽控制電路存儲器B控制信號615中選擇 存儲器B控制信號120。
以下,參照圖7~圖11說明如上述那樣構(gòu)成的密碼運算處理電路 的動作。此外,在圖7~圖10中,將為正確執(zhí)行密碼運算指令111 而來自密碼控制電路101的各種控制信號必須占有存儲器A103、存 儲器B104、運算器105、寄存器A106、寄存器B107或寄存器C108 的期間分別表示為"存儲器A控制占有期間"、"存儲器B控制占有 期間"、"運算器控制占有期間"、"寄存器A控制占有期間"、"寄存器 B控制占有期間"、"寄存器C控制占有期間"。
圖7是根據(jù)來自動作狀況通知電路600的動作狀況通知信號
616而從通常控制電路存儲器A控制信號604或偽控制電路存儲器 A控制信號610中選擇存儲器A控制信號115的例子。
動作狀況通知信號
616是作為對密碼運算指令111進行解碼后 的結(jié)果在2個時鐘周期選擇通??刂齐娐反鎯ζ鰽控制信號604、并 在除此以外的期間選擇偽控制電路存儲器A控制信號610的信號。通 ??刂齐娐反鎯ζ鰽控制信號604是地址Al 、地址A2的讀出信號, 偽控制電路存儲器A控制信號610輸出按每個時鐘周期增1的從地址 A6到地址A16的讀出信號。
選擇器603根據(jù)動作狀況通知信號
616,從通??刂齐娐反鎯?器A控制信號604或偽控制電路存儲器A控制信號610中輸出在每 個時鐘周期訪問存儲器A103那樣的存儲器A控制信號115。根據(jù)該
存儲器A控制信號115,從存儲器A103讀出存儲器A輸出數(shù)據(jù)121,
作為其結(jié)果,得到如存儲器A消耗電流m那樣的每個時鐘周期消耗電
流的消摔毛電流波形。
圖8是根據(jù)來自動作狀況通知電路600的動作狀況通知信號[l] 616從通??刂齐娐芳拇嫫鰽控制信號605或偽控制電路寄存器A控 制信號611中選擇寄存器A控制信號116、且根據(jù)動作狀況通知信號 [2] 616從通??刂齐娐芳拇嫫鰾控制信號606或偽控制電路寄存器B 控制信號612中選擇寄存器B控制信號117的例子。
動作狀況通知信號[l] 616是作為對密碼運算指令111進行解碼后 的結(jié)果在6個時鐘周期選擇通??刂齐娐芳拇嫫鰽控制信號605、在 除此之外的期間選擇偽控制電路寄存器A控制信號611的信號。通常 控制電路寄存器A控制信號605是用于將來自存儲器A輸出數(shù)據(jù)121 的值D1存儲在寄存器A106中的信號,偽控制電路寄存器A控制信 號611是由于在每個時鐘周期都將存儲器A輸出數(shù)據(jù)121取入到寄存 器A106中,因此總是輸出High (高)電平的信號。
動作狀況通知信號[2] 616,是作為對密碼運算指令111進行解碼 后的結(jié)果在5個時鐘周期選擇通??刂齐娐芳拇嫫鰾控制信號606、 在除此之外的期間選擇偽控制電路寄存器B控制信號612的信號。通 ??刂齐娐芳拇嫫鰾控制信號606是用于將來自存儲器A輸出數(shù)據(jù) 121的數(shù)據(jù)D2存儲在寄存器B107中的信號,偽控制電路寄存器B 控制信號612是由于在每個時鐘周期都將存儲器A輸出數(shù)據(jù)121取入 到寄存器B107中,因此總是輸出High電平的信號。
選擇器603根據(jù)動作狀況通知信號[l] 616,輸出如將來自存儲器 A輸出數(shù)據(jù)121的數(shù)據(jù)D6、數(shù)據(jù)D7、數(shù)據(jù)D1、數(shù)據(jù)D14、數(shù)據(jù)D15、 數(shù)據(jù)D16取入到寄存器A106那樣的寄存器A控制信號116。并且, 選擇器603還根據(jù)動作狀況通知信號[2] 616,輸出如將來自存儲器A 輸出數(shù)據(jù)121的數(shù)據(jù)D6、數(shù)據(jù)D7、數(shù)據(jù)D1、數(shù)據(jù)D2、數(shù)據(jù)D14、 數(shù)據(jù)D15、數(shù)據(jù)D16取入到寄存器B107那樣的寄存器B控制信號117。
圖9是根據(jù)來自動作狀況通知電路600的動作狀況通知信號[3]
616從通常控制電路運算器控制信號607或偽控制電路運算器控制信 號613中選擇運算器控制信號118、且根據(jù)動作狀況通知信號[4] 616 從通??刂齐娐芳拇嫫鰿控制信號608或偽控制電路寄存器C控制 信號614中選擇寄存器C控制信號119的例子。
動作狀況通知信號[3] 616是作為對密碼運算指令111進行解碼后 的結(jié)果在5個時鐘周期選擇通??刂齐娐愤\算器控制信號607、在除 此之外的期間選擇偽控制電路運算器控制信號613的信號。通??刂?電路運算器控制信號607是用于由運算器105以來自存儲器A輸出數(shù) 據(jù)122的值D1和來自寄存器B輸出數(shù)據(jù)123的值D2作為輸入來執(zhí) 行運算1的信號,偽控制電路運算器控制信號613是用于將存儲器A 輸出數(shù)據(jù)122和寄存器B輸出數(shù)據(jù)123作為輸入并使運算器105動作 的信號,在該例中,輸出用于以每個時鐘周期為單位執(zhí)行運算0~運 算IO的信號。
動作狀況通知信號[4] 616是作為對密碼運算指令111進行解碼后 的結(jié)果在1個時鐘周期選擇通??刂齐娐芳拇嫫鰿控制信號608、在 除此之外的期間選擇偽控制電路寄存器C控制信號614的信號。通常 控制電路寄存器C控制信號608是用于將作為來自運算器輸出數(shù)據(jù) 124的運算結(jié)果的值DA存儲在寄存器C108的信號,偽控制電路寄 存器C控制信號614是由于在每個時鐘周期都將運算器輸出數(shù)據(jù)124 取入到寄存器C108中,因此總是輸出High電平的信號。
選擇器603根據(jù)動作狀況通知信號[3] 616,輸出如將存儲器A輸 出數(shù)據(jù)122和寄存器B輸出數(shù)據(jù)123作為運算器105的輸入而由運算 器105執(zhí)行運算0、運算1、運算2、運算1、運算8、運算9、運算 IO那樣的運算器控制信號118。并且,選擇器603還根據(jù)動作狀況通 知信號[4]616,輸出如在每個時鐘周期將運算器輸出數(shù)據(jù)124取入到 寄存器C108那樣的寄存器C控制信號119。根據(jù)上述運算器控制信 號U8和寄存器C控制信號119,由運算器105在每個時鐘周期執(zhí)行 某些運算并存儲在寄存器C108中,因此能夠得到如運算部消耗電流 III那樣的每個時鐘周期消耗電流的消耗電流波形。
圖10是根據(jù)來自動作狀況通知電路600的動作狀況通知信號[5] 616從通??刂齐娐反鎯ζ鱞控制信號609或偽控制電路存儲器b控 制信號615中選擇存儲器b控制信號120的例子。
動作狀況通知信號[5] 616是作為對密碼運算指令111進行解碼后 的結(jié)果在1個時鐘周期選擇通??刂齐娐反鎯ζ鱞控制信號609、在 除此之外的期間選擇偽控制電路存儲器b控制信號615的信號。通常 控制電路存儲器b控制信號609是對存儲器b104的地址aa寫入寄 存器c輸出數(shù)據(jù)值da的寫入信號,偽控制電路存儲器b控制信號 615是在每個時鐘周期對存儲器b104的固定地址ax寫入寄存器c 輸出數(shù)據(jù)125的寫入信號。關(guān)于根據(jù)偽控制電路存儲器b控制信號 615進行的對存儲器b104的寫入動作,按照地址有可能蓋寫密碼運 算指令111等所需的數(shù)據(jù),所以將cpu109不使用的地址ax用作數(shù) 據(jù)存儲用地址。
選擇器603根據(jù)動作狀況通知信號[5] 616,從通常控制電路存儲 器b控制信號609或偽控制電路存儲器b控制信號615輸出在每個 時鐘周期對存儲器b104進行寫入的存儲器b控制信號120。根據(jù)該 存儲器b控制信號120,將寄存器c輸出數(shù)據(jù)125寫入存儲器b104, 作為其結(jié)果,能夠得到如存儲器b消耗電流iii那樣的每個時鐘周期消 肆毛電流的消4毛電流波形。
圖11是將圖7~圖io匯總后的圖。在圖11中,密碼運算處理電
路的消耗電流波形為存儲器a消耗電流m、運算部消耗電流m和存儲 器b消耗電流m之和,因而"電路總體的消耗電流m"是合計后的消 耗電流波形。電路總體的消耗電流ni與圖2的總體的消耗電流n的"密 碼運算處理r期間相比,是更為連續(xù)的消耗電流波形。
此外,在圖7~圖11中說明了在密碼運算指令111的執(zhí)行中的密
碼控制電路101的動作,但偽運算指令113的執(zhí)行情況也相同。
如上所述,在圖6的結(jié)構(gòu)中,包括產(chǎn)生用于執(zhí)行密碼運算指令111 或偽運算指令113的通??刂菩盘?04- 609的通常控制電路601、即 使正在執(zhí)行在密碼運算指令111或偽運算指令113也指示通常控制電
路601不需要占有存儲器A103、存儲器B104、運算器105、寄存器 A106、寄存器B107或寄存器C108的時鐘周期期間的動作狀況通知 電路600、產(chǎn)生用于強制性地使存儲器A103、存儲器B104、運算器 105、寄存器A106、寄存器B107或寄存器C108進行動作的偽控制信 號610~615的偽控制電路602、以及根據(jù)來自動作狀況通知電路600 的通知切換通常控制信號604 ~ 609和偽控制信號610 ~ 615的選擇器 603,因此,在通??刂齐娐?01不需要占有存儲器A103、存儲器 B104、運算器105、寄存器A106、寄存器B107或寄存器C108的期 間,能夠?qū)⒖刂茝耐ǔ?刂齐娐?01切換到偽控制電路602,從而使 存儲器A103、存儲器B104、運算器105、寄存器A106、寄存器B107 或寄存器C108總是進行動作來消耗電流,即使是密碼運算指令111 或偽運算指令113正在執(zhí)行中也能夠使消耗電流變得更均勻,從而對 電流分析的保密性進一步提高。
圖12示出圖6中的偽控制電路602的詳細結(jié)構(gòu)例。圖12的偽控 制電路602包括通常控制信號存儲電路800、和偽控制信號生成電路 801。通??刂菩盘柎鎯﹄娐?00根據(jù)通??刂齐娐?01輸出的通常 控制信號604 ~ 609來存儲通常控制信號歷史信息802。偽控制信號生 成電路801讀出通??刂菩盘柎鎯﹄娐?00所存儲的通??刂菩盘枤v 史信息802,生成并輸出偽控制信號610~615。
圖13示出圖12中的通??刂菩盘柎鎯﹄娐?00的存儲內(nèi)容的例 子。如圖13所示,通常控制信號存儲電路800在其內(nèi)部具有多個用 于存儲數(shù)據(jù)的存儲槽。各存儲槽具有以1個集合來存儲通常控制電路 601輸出的通??刂齐娐愤\算器控制信號607、從通??刂齐娐反鎯?器A控制信號604和通??刂齐娐芳拇嫫鰽控制信號605得到的存 儲器A地址(寄存器A用)、從通??刂齐娐反鎯ζ鰽控制信號604 和通常控制電路寄存器B控制信號606得到的存儲器A地址(寄存 器B用)、從通??刂齐娐反鎯ζ鰾控制信號609得到的存儲器B地 址的結(jié)構(gòu)。
偽控制信號生成電路801讀出存儲在這些存儲槽的每1個內(nèi)的通
常控制信號歷史信息802,并生成偽控制信號610~615。對于該偽控 制信號生成電路801讀出哪個存儲槽的數(shù)據(jù)的算法,可以是(1 )按 照在存儲槽中所存儲的順序來讀出、(2 )選擇頻率最高的密碼運算指 令的存儲槽、(3)隨機地選擇存儲槽等的任何一種算法。
在用如上所述的算法進行讀出時,即使在時鐘周期單位中也能夠 進行過去實施過的運算資源103~108的動作、或過去的具有頻率高 的消^^電流波形的運算資源103~108的動作、或過去的消^^電流波 形的狀態(tài)隨機出現(xiàn)的運算資源103~108的動作,密碼運算指令或偽 運算指令113的消耗電流變得均勻,因此對電流分析的保密性進一步 提高。
另外,通??刂菩盘柎鎯﹄娐?00也可以由非易失性存儲器構(gòu)成。 在這種情況下,即使在電源斷電后也仍能存儲過去的通??刂菩盘枤v 史信息802,并從所存儲的通常控制信號604 ~ 609中選擇并輸出偽控 制信號610~615,因此,即使是在如接通電源后執(zhí)行密碼運算并反復(fù) 執(zhí)行電源斷電等程序借以觀測電流波形變化那樣的電流分析手法中, 密碼運算指令111執(zhí)行中或偽運算指令113執(zhí)行中所呈現(xiàn)的消耗電流 波形取決于所存4諸的過去的通??刂菩盘?04- 609,因此對電流分析 的保密性進一步提高。
其次,在該運算器105中的處理相同的情況下,運算器105的消 耗電流在很大程度上取決于作為運算對象的輸入數(shù)據(jù)。具體地說,當 在輸入數(shù)據(jù)中位值0較多時和較少時,在消耗電流上就出現(xiàn)了差別。 因此,在以下說明的例子中,通過利用位值0的計數(shù)來提高對電流分 析的保密性。
圖14示出圖1的密碼運算處理電路的變形例。在圖14中,除圖 1所示的密碼運算處理電路的結(jié)構(gòu)以外,還具有位值O計數(shù)電路1000。 位值O計數(shù)電路IOOO將存儲器A輸出數(shù)據(jù)121作為輸入,對該輸入 數(shù)據(jù)的位值為0的位數(shù)進行計數(shù),并將其作為位值0計數(shù)信息1001 輸出到密碼運算指令存儲電路400和通??刂菩盘柎鎯﹄娐?00。
例如,當存儲器A輸出數(shù)據(jù)121具有32位的數(shù)據(jù)寬度并以十六
進制數(shù)表示而輸出了 39DF7EB6的數(shù)據(jù)時,該數(shù)據(jù)以二進制數(shù)表示為 0011—1001_1101_1111—0111_1110—1011—0110,所以位值為o的位的數(shù) 為10個。因此,位值0計數(shù)信息1001輸出10。
圖15示出圖14中的密碼運算指令存儲電路400的存儲內(nèi)容的例 子。如圖15所示,密碼運算指令存儲電路400除了密碼運算指令111 以外,還具有將位值0計數(shù)信息1001存儲在相同存儲槽的結(jié)構(gòu)。在 此,假定從存儲槽序號小的開始依次為最近存儲的數(shù)據(jù)。
當假定存儲器A輸出數(shù)據(jù)121具有32位的數(shù)據(jù)寬度時,存儲在 圖15的存儲槽1的密碼運算指令111,將地址Al和地址A2的各數(shù) 據(jù)作為輸入并進行指令3的運算,將其結(jié)果存儲在地址A3中,此時 由位值0計數(shù)電路1000計數(shù)所得到的位值0計數(shù)信息1001,在地址 Al中為17、在地址A2中為14。
存儲在存儲槽2的密碼運算指令111,將地址A5和地址A6的各 數(shù)據(jù)作為輸入并進行指令3的運算,將其結(jié)果存儲在地址A7中,此 時由位值0計數(shù)電路1000計數(shù)所得到的位值0計數(shù)信息1001,在地 址A5中為14、在地址A6中為16。
存儲在存儲槽3中的密碼運算指令111,將地址A7和地址A8的 各數(shù)據(jù)作為輸入并進行指令3的運算,將其結(jié)果存儲在地址A9中, 此時由位值0計數(shù)電路1000計數(shù)所得到的位值0計數(shù)信息1001,在 地址A7中為5、在地址A8中為3。即,可看出從地址A7和地址A8 讀出的數(shù)據(jù)都是相對于32位的數(shù)據(jù)寬度其位值0的計數(shù)非常少的數(shù) 據(jù)。
存儲在存儲槽4中的密碼運算指令111,將地址A3和地址A4的 各數(shù)據(jù)作為輸入并進行指令3的運算,將其結(jié)果存儲在地址A5中, 此時由位值0計數(shù)電路1000計數(shù)所得到的位值0計數(shù)信息1001,在 地址A3中為18、在地址A4中為19。
存儲在各存儲槽中的密碼運算指令111都是向運算器105發(fā)出指 令3的指令,存儲在各存儲槽中的O值計數(shù)具有存儲槽3較少的特征, 存儲槽1、存儲槽2、存儲槽4為類似的數(shù)字。在存在相對于數(shù)據(jù)寬
度O值計數(shù)非常少、或非常多的數(shù)據(jù)的情況下,使用了這種數(shù)據(jù)的密 碼運算所激活的位數(shù)非常少,因此在密碼運算處理中的消耗電流波形 上產(chǎn)生獨特的峰值。
對于偽運算指令生成電路401,當接收指示密碼運算指令111的 執(zhí)行已結(jié)束的信號即運算完成信號114后檢索存儲槽1~存儲槽4中 所存儲的密碼運算指令111并識別出所有存儲槽都是指令3時,進一 步檢索位值O計數(shù)信息1001。在存在相對于數(shù)據(jù)寬度0值計數(shù)非常少、 或非常多的數(shù)據(jù)的情況下,使用了這種數(shù)據(jù)的運算所激活的位數(shù)非常 少,所以在密碼運算處理中的消耗電流波形上產(chǎn)生獨特的峰值,因此 生成有意圖地使該峰值增加的偽運算指令113。由此,選擇使用了位 于最小的位值0計數(shù)的存儲槽即存儲槽3來生成偽運算指令113。
如上所述,在具有圖14的結(jié)構(gòu)的密碼運算處理電路中,偽運算指 令生成電路401判斷存儲在密碼運算指令存儲電路400中的位值O計 數(shù)的分布并選擇使用了位于最大或最小的位值0計數(shù)的密碼運算指令 111來生成偽運算指令113,因此,所生成的偽運算指令113能夠表 示出過去的異常的消耗電流波形,從而很難分清是執(zhí)行著密碼運算指 令111、還是作為偽運算指令113執(zhí)行著表示出過去的異常的消耗電 流波形的密碼運算指令111,因而對電流分析的保密性進一步提高。
此外,偽運算指令生成電路401也可以判斷存儲在密碼運算指令 存儲電路400的位值0計數(shù)的分布并選擇使用了位于平均值的位值0 計數(shù)的密碼運算指令111來生成偽運算指令113。由于選擇使用了位 于平均值的位值0計數(shù)的密碼運算指令111來生成偽運算指令113, 因此,所生成的偽運算指令113能夠表示出平均的消耗電流波形,從 而很難分清是執(zhí)行著密碼運算指令111、還是作為偽運算指令113執(zhí) 行著數(shù)據(jù)中所包含的位值0計數(shù)的頻率較高的密碼運算指令111,因 而對電流分析的保密性進一 步提高。
圖16示出圖14中的通??刂菩盘柎鎯﹄娐?00的存儲內(nèi)容的例 子。如圖16所示,通??刂菩盘柎鎯﹄娐?00除了通常控制電路運 算器控制信號607、存儲器A地址和存儲器B地址以外,還具有以1
個集合來存儲位值0計數(shù)信息1001的結(jié)構(gòu)。在此,假定從存儲槽序
號小的開始依次為最近存儲的數(shù)據(jù)。
當假定存儲器A輸出數(shù)據(jù)121具有32位的數(shù)據(jù)寬度時,按照圖 16的存儲槽1,對從存儲器A地址(寄存器A用)Al和存儲器A地 址(寄存器B用)A2讀出的數(shù)據(jù),作為通??刂齐娐愤\算器控制信 號607發(fā)出運算2,并將運算結(jié)果寫入存儲器B地址AA。這時由位 值0計數(shù)電路1000計數(shù)所得到的寄存器A用和寄存器B用的位值0 計數(shù)信息1001分別為31和32。即,可以看出是是位值0的計數(shù)相對 于32位的數(shù)據(jù)寬度非常多的數(shù)據(jù)。
另外,相反,在圖16的存儲槽3所存儲的數(shù)據(jù)中,由位值O計數(shù) 電路1000計數(shù)所得到的寄存器A用和寄存器B用的位值0計數(shù)信息 1001分別為0和1,因此,可以看出是位值0的計數(shù)相對于32位的 數(shù)據(jù)寬度非常少的數(shù)據(jù)。
如上所述,當存在O值計數(shù)相對于數(shù)據(jù)寬度非常少、或非常多的 數(shù)據(jù)時,由于使用了這種數(shù)據(jù)的密碼運算所激活的位數(shù)非常少,所以 在密碼運算處理中的消耗電流波形上產(chǎn)生獨特的峰值。
由于存儲槽1中所存儲的數(shù)據(jù)是最新的數(shù)據(jù),所以由通??刂齐?路601輸出了產(chǎn)生如上所述的獨特的峰值的通??刂菩盘?04 ~ 609。 在這種情況下,如果接在其后的偽控制信號610~615不是產(chǎn)生同樣 的獨特峰值的控制信號,就不能有效地進行偽裝。而與此相反,當由 通??刂齐娐?01輸出了不產(chǎn)生如上所述的獨特的峰值的通??刂菩?號604 ~ 609時,如果接在其后的偽控制信號610~615不是不產(chǎn)生獨 特的峰值的控制信號,就不能有效地進行偽裝。因此,偽控制信號生 成電路801判斷最新存儲的存儲槽的位值0計數(shù)信息1001,并讀出具 有平均、最大或最小的位值0計數(shù)信息1001的存儲槽的數(shù)據(jù)來生成 偽控制信號610 ~ 615。
通過執(zhí)行這種偽運算,很難區(qū)分與執(zhí)行著原來的密碼運算的定時 的消耗電流波形的差別,因而很難分析出原來的密碼運算的執(zhí)行定 時。
如上所述,在具有圖14的結(jié)構(gòu)的密碼運算處理電路中,通過由位
值0計數(shù)電路1000對存儲器A輸出數(shù)據(jù)121的位值0的個數(shù)進行計 數(shù)并將其計數(shù)值存儲在密碼運算指令存儲電路400和通??刂菩盘柎?儲電路800中,就能夠再現(xiàn)與過去發(fā)生過的異常的消耗電流波形或平 均的消耗電流波形具有相同的特征的消耗電流波形,因此,很難判斷 基于消耗電流分析的密碼運算處理和偽運算處理,因而對消耗電流分 析的保密性提高。
其次,即使在運算器105的連續(xù)的控制中輸入數(shù)據(jù)是從存儲器 A103不同地址讀出的數(shù)據(jù),當數(shù)據(jù)的值本身完全相同時,在運算器 105中也不會消耗電流。因此,在以下說明的例子中,通過預(yù)先設(shè)定 構(gòu)成運算器105的電路的電位,從而提高對電流分析的保密性。
圖17示出了圖6的變形例的密碼控制電路101和運算部102的結(jié) 構(gòu)。圖17的運算部102除了圖1中示出的運算部102的結(jié)構(gòu)以外, 為了預(yù)先設(shè)定構(gòu)成運算器105的電路的電位,還具有預(yù)置電路A1300 和預(yù)置電路B1301。在圖17的例子中,兩個預(yù)置電路1300、 1301例 如是反相電路。另外,圖17的密碼控制電路101除了圖6中示出的 密碼控制電路101的結(jié)構(gòu)以外,還具有用于產(chǎn)生與動作開始時鐘脈沖 沿同步的脈沖信號來使兩個預(yù)置電路1300、 1301動作的脈沖信號產(chǎn)
生電^各1306。
預(yù)置電路A1300,當來自脈沖信號產(chǎn)生電路1306的預(yù)置電路A 控制信號1302變?yōu)橛行r,使來自寄存器A106的存儲器A輸出數(shù) 據(jù)122翻轉(zhuǎn),并對運算器105輸出預(yù)置電路A輸出數(shù)據(jù)1304。
預(yù)置電路B1301,當來自脈沖信號產(chǎn)生電路1306的預(yù)置電路B控 制信號1303為有效時,使來自寄存器B107的存儲器B輸出數(shù)據(jù)123 翻轉(zhuǎn),并對運算器105輸出預(yù)置電路B輸出數(shù)據(jù)1305。
脈沖信號產(chǎn)生電路1306是利用時鐘IIO來產(chǎn)生脈沖信號的電路, 所產(chǎn)生的信號作為預(yù)置電路A控制信號1302和預(yù)置電路B控制信號 1303輸出到預(yù)置電路A1300和預(yù)置電路B1301。
圖18示出具有圖17的密碼控制電路101和運算部102的密碼運
算處理電路的動作。
按照圖18,密碼控制電路101,根據(jù)來自CPU109的密碼運算指 令111接收指令4。在此,指令4為在一系列的密碼運算處理中運算 器105反復(fù)進行4次2個時鐘周期的運算4。
密碼控制電路101對指令4進行解碼,讀出存儲器A103的地址 Al ~地址A8的各數(shù)據(jù)D1、數(shù)據(jù)D2,并將數(shù)據(jù)D1存儲在寄存器A106 內(nèi)、將數(shù)據(jù)D2存儲在寄存器B107內(nèi)。存儲器A消耗電流IV是由存 儲器A103進行了讀出動作而產(chǎn)生的消耗電流,成為與從地址Al ~地 址A8的讀出動作對應(yīng)的消津毛電流波形。
然后,密碼控制電路101利用運算器控制信號118對運算器105 進行控制使其實施運算4,這時,脈沖信號產(chǎn)生電路1306控制預(yù)置電 路A控制信號1302,使寄存器A輸出數(shù)據(jù)122翻轉(zhuǎn)一次并輸出為預(yù) 置電路A輸出數(shù)據(jù)1304。由此,運算器105在用原來的數(shù)據(jù)Dl和 D2實施運算之前,暫時實施D1的翻轉(zhuǎn)數(shù)據(jù)與D2的運算。每當對作 為組合電路的運算器105的輸入寄存器即寄存器A106和寄存器B107 存儲數(shù)據(jù)時,運算部消耗電流IV改變,寄存器A106和寄存器B107 的值確定之后,運算也要執(zhí)行2個時鐘周期,因此要消耗電流。
在從地址A1 A8讀出的存儲器A輸出數(shù)據(jù)121如圖18所示那 樣為Dl和D2連續(xù)的情況下,寄存器A輸出數(shù)據(jù)122和寄存器B輸 出數(shù)據(jù)123的值不變。在這種情況下,在以往的結(jié)構(gòu)中運算器105的 輸入不變,實際上運算器105不動作,因此不消耗電流,但在本發(fā)明 中,通過由脈沖信號產(chǎn)生電路1306控制預(yù)置電路A1300和預(yù)置電路 B1301并使輸入數(shù)據(jù)翻轉(zhuǎn)一次,每次都實施運算處理,從而運算器105 消庫毛電流。
接著,密碼控制電路101對指令4進行解碼并在運算4結(jié)束的定 時輸出用于將運算結(jié)果存儲在寄存器C108的寄存器C控制信號119, 并將DA存儲在寄存器C108中。并且,密碼控制電路101對指令4 進行解碼并發(fā)出存儲器B控制信號120,將作為寄存器C輸出數(shù)據(jù) 125的DA存儲在存儲器B104的地址AA ~地址AD。存儲器B消耗
電流IV是對存儲器B104進行了寫入動作而產(chǎn)生的消耗電流,形成與 地址AA ~地址AD的寫入動作對應(yīng)的消庫毛電流波形。
如上所述,按照圖17的結(jié)構(gòu),通過由脈沖信號產(chǎn)生電路1306控 制預(yù)置電路A控制信號1302和預(yù)置電路B控制信號1303,使對運算 器105輸入的數(shù)據(jù)翻轉(zhuǎn)一次,即使對運算器105的輸入數(shù)據(jù)在每個時 鐘周期都是相同的值,也要在每個時鐘脈沖沿強制性地改變運算器 105內(nèi)部的電位并其消耗電流,因此對電流分析的保密性提高。
此外,在圖17中,作為預(yù)置電路1300、 1301的例子說明了反相 電路,但也可以是如將運算部102內(nèi)部的各信號預(yù)先設(shè)定為固定值那 樣的電路。
圖19示出圖17的變形例的運算部102的結(jié)構(gòu)。圖19的運算部 102除了圖17中示出的運算部102的結(jié)構(gòu)以外,還具有為了使對運算 器105輸入的輸入數(shù)據(jù)按每個位延遲值不同而設(shè)置的延遲電路 A1500、延遲電路B1501。此外,在圖19中,省略了控制信號的圖示。
延遲電路A1500在每個時鐘周期對來自預(yù)置電路A1300的預(yù)置電 路A輸出數(shù)據(jù)1304在每個位附加不同的延遲量,并對運算器105輸 出不是所有的位在同一定時改變的數(shù)據(jù)來作為延遲電路A輸出數(shù)據(jù)
1502。
延遲電路B1501在每個時鐘周期對來自預(yù)置電路B1301的預(yù)置電 路B輸出數(shù)據(jù)1305在每個位附加不同的延遲量,并對運算器105輸 出不是所有的位在同一定時改變的數(shù)據(jù)來作為延遲電路B輸出數(shù)據(jù)
1503。
圖20示出具有圖19的運算部102的密碼運算處理電路的動作。 按照圖20,密碼控制電路101根據(jù)來自CPU109的密碼運算指令111 接收指令4。在此,指令4是指在一系列的密碼運算處理中運算器105 反復(fù)進行4次2個時鐘周期的運算4。
密碼控制電路101對指令4進行解碼,分別讀出存儲器A103的 地址Al ~地址A8的數(shù)據(jù)D1、數(shù)據(jù)D2,并將數(shù)據(jù)D1存儲在寄存器 A106、將數(shù)據(jù)D2存儲在寄存器B107中。存儲器A消耗電流V是使
存儲器A103進行了讀出動作而產(chǎn)生的消耗電流,形成與從地址Al ~ 地址A8的讀出動作對應(yīng)的消耗電流波形。
然后,密碼控制電路101利用運算器控制信號118向運算器105 進行指令使其實施運算4,這時,脈沖信號產(chǎn)生電路1306控制預(yù)置電 路A控制信號1302,使寄存器A輸出數(shù)據(jù)122翻轉(zhuǎn)一次并輸出為預(yù) 置電路A輸出數(shù)據(jù)1304。而且,延遲電路A1500在每個時鐘周期對 預(yù)置電路A輸出數(shù)據(jù)1304在每個位附加不同的延遲量,在不是所有 的位在同一定時改變的狀態(tài)下,輸出為延遲電路A輸出數(shù)據(jù)1502。 由此,運算器105在用原來的數(shù)據(jù)Dl和D2實施運算之前,暫時實 施Dl的翻轉(zhuǎn)數(shù)據(jù)與D2的運算,且在數(shù)據(jù)的變化點使每個位的延遲 量改變,因此連續(xù)地實施使用不同數(shù)據(jù)的運算。每當對作為組合電路 的運算器105的輸入寄存器即寄存器A106和寄存器B107存儲數(shù)據(jù) 時,運算部消耗電流V改變,寄存器A106和寄存器B107的值確定 之后,運算也要執(zhí)行2個時鐘周期,因此要消耗電流。
當從地址A1 A8讀出的存儲器A輸出數(shù)據(jù)121如圖20所示那 樣為Dl和D2連續(xù)時,寄存器A輸出數(shù)據(jù)122和寄存器B輸出數(shù)據(jù) 123的值不變。在這種情況下,在以往的結(jié)構(gòu)中運算器105的輸入不 變,實際上運算器105不動作,因此不消耗電流,但在本發(fā)明中,通 過由脈沖信號產(chǎn)生電路1306控制預(yù)置電路A1300和預(yù)置電路B1301 并使輸入數(shù)據(jù)翻轉(zhuǎn)一次、進而由延遲電路A1500和延遲電路B1501 在每個時鐘周期對每個位附加不同的延遲量來使輸入數(shù)據(jù)連續(xù)變化,
能夠使運算器105連續(xù)地實施運算。
接著,密碼控制電路101對指令4進行解碼并在運算4結(jié)束的定 時輸出用于將運算結(jié)果存儲在寄存器C108的寄存器C控制信號119, 并將DA存儲在寄存器C108中。并且,密碼控制電路101對指令4 進行解碼并發(fā)出存儲器B控制信號120,將作為寄存器C輸出數(shù)據(jù) 125的DA存儲在存儲器B104的地址AA ~地址AD。存儲器B消耗 電流V是對存儲器B104進行了寫入動作而產(chǎn)生的消耗電流,形成與 地址AA ~地址AD的寫入動作對應(yīng)的消庫毛電流波形。
如上所述,按照圖19的結(jié)構(gòu),通過由脈沖信號產(chǎn)生電路1306控 制預(yù)置電路A控制信號1302和預(yù)置電路B控制信號1303,使輸入到 運算器105的數(shù)據(jù)翻轉(zhuǎn)一次,進而,通過由延遲電路A1500和延遲電 路B1501在每個時鐘周期對輸入到運算器105的數(shù)據(jù)在每個位附加不 同的延遲量而使其變化,使運算器105中的消耗電流波形受輸入數(shù)據(jù) 的延遲的影響,因而對消耗電流分析的保密性提高。
如上所述,本發(fā)明的密碼運算處理電路作為要求密碼運算等的保 密性的數(shù)據(jù)處理電路是有用的,能夠應(yīng)用于IC卡等。
權(quán)利要求
1.一種密碼運算處理電路,其特征在于,包括存儲密碼運算用數(shù)據(jù)的存儲器;用于對上述密碼運算用數(shù)據(jù)進行運算的運算器;用于暫時存儲對上述運算器的輸入輸出數(shù)據(jù)的寄存器;接收密碼運算指令并為了對上述密碼運算用數(shù)據(jù)進行密碼處理而對上述存儲器、上述運算器和上述寄存器進行控制的密碼控制電路;以及 接收用于指示上述密碼運算指令的執(zhí)行已結(jié)束的運算完成信號并對上述密碼控制電路發(fā)出用于使上述存儲器、上述運算器和上述寄存器動作的偽運算指令的偽運算指令電路。
2. 根據(jù)權(quán)利要求1所述的密碼運算處理電路,其特征在于,上述偽運算指令電路將與上述密碼運算指令相同的指令作為上述 偽運算指令而發(fā)出。
3. 根據(jù)權(quán)利要求1所述的密碼運算處理電路,其特征在于, 上述偽運算指令電路具有存儲上述密碼運算指令的密碼運算指令存儲電路;和 根據(jù)過去的密碼運算指令歷史來生成上述偽運算指令的偽運算指 令生成電路。
4. 根據(jù)權(quán)利要求3所述的密碼運算處理電路,其特征在于, 上述偽運算指令生成電路選擇存儲于上述密碼運算指令存儲電路的密碼運算指令歷史中的出現(xiàn)頻率高的密碼運算指令來生成上述偽 運算指令。
5. 根據(jù)權(quán)利要求3所述的密碼運算處理電路,其特征在于, 上述偽運算指令生成電路隨機地選擇存儲于上述密碼運算指令存儲電路的密碼運算指令歷史中的密碼運算指令來生成上述偽運算指 令。
6. 根據(jù)權(quán)利要求3所述的密碼運算處理電路,其特征在于,上述密碼運算指令存儲電路由非易失性存儲器構(gòu)成,即使在電源 斷電以后也仍保持過去的密碼運算指令歷史以生成上述偽運算指令。
7. 根據(jù)權(quán)利要求3所述的密碼運算處理電路,其特征在于, 上述密碼控制電路具有產(chǎn)生用于執(zhí)行上述密碼運算指令或上述偽運算指令的通常控制信 號的通??刂齐娐?;即使在執(zhí)行上述密碼運算指令或上述偽運算指令的過程中也指示 上述通??刂齐娐凡恍枰加猩鲜龃鎯ζ鳌⑸鲜鲞\算器或上述寄存器 的期間的動作狀況通知電路;在上述存儲器、上述運算器和上述寄存器的動作處于停止的期間 產(chǎn)生用于強制性地使上述存儲器、上述運算器和上述寄存器動作的偽 控制信號的偽控制電路;以及根據(jù)來自上述動作狀況通知電路的通知來切換上述通常控制信號 和上述偽控制信號的選擇器。
8. 根據(jù)權(quán)利要求7所述的密碼運算處理電路,其特征在于, 上述偽控制電路具有存儲上述通??刂齐娐匪敵龅纳鲜龃鎯ζ鞯牡刂泛涂刂粕鲜鲞\ 算器的運算器控制信號的通??刂菩盘柎鎯﹄娐?;和根據(jù)過去的通常控制信號歷史來生成上述偽控制信號的偽控制信 號生成電路。
9. 根據(jù)權(quán)利要求8所述的密碼運算處理電路,其特征在于, 上述偽控制信號生成電路選擇存儲于上述通??刂菩盘柎鎯﹄娐返耐ǔ?刂菩盘枤v史中的出現(xiàn)頻率高的通常控制信號來生成上述偽 控制信號。
10. 根據(jù)權(quán)利要求8所述的密碼運算處理電路,其特征在于, 上述偽控制信號生成電路隨機地選擇存儲于上述通常控制信號存儲電路的通??刂菩盘枤v史中的通??刂菩盘杹砩缮鲜鰝慰刂菩盘?。
11. 根據(jù)權(quán)利要求8所述的密碼運算處理電路,其特征在于, 上述通??刂菩盘柎鎯﹄娐酚煞且资源鎯ζ鳂?gòu)成,即使在電源 斷電以后也仍保持過去的通常控制信號歷史來生成上述偽控制信號。
12. 根據(jù)權(quán)利要求8所述的密碼運算處理電路,其特征在于, 還具有對從上述存儲器讀出的數(shù)據(jù)中所包含的位值0的個數(shù)進行計數(shù)的位值0計數(shù)電路,上述密碼運算指令存儲電路還具有存儲來自上述位值0計數(shù)電 路的位值0計數(shù)值的功能。
13. 根據(jù)權(quán)利要求12所述的密碼運算處理電路,其特征在于, 上述偽運算指令生成電路判斷存儲在上述密碼運算指令存儲電路中的位值0計數(shù)的分布,并選擇使用了位于平均值的位值O計數(shù)的密 碼運算指令來生成上述偽運算指令。
14. 根據(jù)權(quán)利要求12所述的密碼運算處理電路,其特征在于, 上述偽運算指令生成電路判斷存儲在上述密碼運算指令存儲電路中的位值0計數(shù)的分布,并選擇使用了位于最大值或最小值的位值0 計數(shù)的密碼運算指令來生成上述偽運算指令。
15. 根據(jù)權(quán)利要求12所述的密碼運算處理電路,其特征在于, 上述通??刂菩盘柎鎯﹄娐愤€具有存儲來自上述位值0計數(shù)電路的位值0計數(shù)值的功能。
16. 根據(jù)權(quán)利要求15所述的密碼運算處理電路,其特征在于, 上述偽控制信號生成電路判斷存儲在上述通??刂菩盘柎鎯﹄娐分械奈恢?計數(shù)的分布,并選擇使用了位于平均值的位值0計數(shù)的通 常控制信號來生成上述偽控制信號。
17. 根據(jù)權(quán)利要求15所述的密碼運算處理電路,其特征在于, 上述偽控制信號生成電路判斷存儲在上述通??刂菩盘柎鎯﹄娐分械奈恢?計數(shù)的分布,并選擇使用了位于最大值或最小值的位值0 計數(shù)的通常控制信號來生成上述偽控制信號。
18. 根據(jù)權(quán)利要求7所述的密碼運算處理電路,其特征在于, 還具有預(yù)先設(shè)定構(gòu)成上述運算器的電路的電位的預(yù)置電路, 上述密碼控制電路還具有用于產(chǎn)生與上述運算器的動作開始時 鐘脈沖沿同步的脈沖信號來使上述預(yù)置電路動作的脈沖信號產(chǎn)生電路。19. 根據(jù)權(quán)利要求18所述的密碼運算處理電路,其特征在于, 上述預(yù)置電路僅在上述脈沖信號產(chǎn)生電路的脈沖信號期間使上述寄存器的輸出數(shù)據(jù)翻轉(zhuǎn)。20. 根據(jù)權(quán)利要求18所述的密碼運算處理電路,其特征在于,還具有使對于向上述運算器輸入的輸入數(shù)據(jù)的每個位的延遲值 不同的延遲電路。
全文摘要
具有接收來自CPU(109)等的密碼運算指令(111)的執(zhí)行已結(jié)束的信息之后取代CPU(109)等而對密碼控制電路(101)發(fā)出偽運算指令(113)的偽運算指令電路(100)。在密碼運算指令(111)的執(zhí)行結(jié)束后,使通常處于停止狀態(tài)的存儲器、運算器和寄存器等運算資源(103~108)動作來消耗電流,因此很難用消耗電流的大小等來確定密碼運算處理的結(jié)束或開始等的定時。偽運算指令(113)始終只在沒有發(fā)送來自CPU(109)等的密碼運算指令(111)的期間發(fā)出,因此不會使密碼運算處理的性能降低。
文檔編號G06F21/75GK101366231SQ200780001859
公開日2009年2月11日 申請日期2007年6月19日 優(yōu)先權(quán)日2006年11月9日
發(fā)明者吉本哲朗, 田中崇之 申請人:松下電器產(chǎn)業(yè)株式會社
網(wǎng)友詢問留言 已有0條留言
  • 還沒有人留言評論。精彩留言會獲得點贊!
1
台东市| 涟源市| 上栗县| 于都县| 灵丘县| 文水县| 长治县| 山西省| 凤城市| 苏尼特右旗| 定南县| 化德县| 西吉县| 焦作市| 南安市| 嵊州市| 清涧县| 凌源市| 桦南县| 华蓥市| 瑞丽市| 乐都县| 任丘市| 乌兰县| 称多县| 铁岭县| 台山市| 安吉县| 章丘市| 昂仁县| 云霄县| 凭祥市| 广河县| 桓台县| 吉林省| 龙门县| 从化市| 萝北县| 萨嘎县| 永和县| 寿阳县|