JP2014096644A - 半導体集積回路及びデータ転送方法 - Google Patents

半導体集積回路及びデータ転送方法 Download PDF

Info

Publication number
JP2014096644A
JP2014096644A JP2012245894A JP2012245894A JP2014096644A JP 2014096644 A JP2014096644 A JP 2014096644A JP 2012245894 A JP2012245894 A JP 2012245894A JP 2012245894 A JP2012245894 A JP 2012245894A JP 2014096644 A JP2014096644 A JP 2014096644A
Authority
JP
Japan
Prior art keywords
data
secret information
information data
inverted
cpu
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Pending
Application number
JP2012245894A
Other languages
English (en)
Inventor
Minoru Saeki
稔 佐伯
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Mitsubishi Electric Corp
Original Assignee
Mitsubishi Electric Corp
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by Mitsubishi Electric Corp filed Critical Mitsubishi Electric Corp
Priority to JP2012245894A priority Critical patent/JP2014096644A/ja
Publication of JP2014096644A publication Critical patent/JP2014096644A/ja
Pending legal-status Critical Current

Links

Images

Abstract

【課題】既存の半導体集積回路からの回路変更が少なく、かつ、少ない乱数ビットで転送性能を低下させることなく、電力解析攻撃に対する耐性を向上させることを特徴とする半導体集積回路を提供する。
【解決手段】本発明の半導体集積回路1は、CPU3、メモリ装置4A、4B、暗号コプロセッサ5の入出力端部に反転制御部6をそれぞれ設け、データ転送時に乱数発生装置7から出力される乱数ビットに応じて秘密情報データをランダムに反転させる構成とした。
【選択図】 図1

Description

本発明は、秘密情報データ転送中の電力解析攻撃を困難にする半導体集積回路及びそのデータ転送方法に関するものである。
一般に、システムLSI等の半導体集積回路は内部にCPUおよび各種メモリ装置を含み、それらがデータバスを介して接続されている。このような半導体集積回路は、鍵データ等の秘密情報データをCPUとメモリ装置等の間で転送する場合、データバスを介して実行する。このとき、データバスはデータバス上に現れるデータのハミング重みに依存して消費電力が偏る可能性がある。特に、データバス上に有効なデータが現れていない期間にデータバスを全て0(または全て1)の状態とするような設計がされた場合、この傾向が高い。このような半導体集積回路において秘密情報データのデータ転送を実行すると、データバス上で0から1へ信号変化が起こる。この変化したビットの信号変化数は、秘密情報データのハミング重みと一致する。ここでハミング重みとは、ビット列中の0以外のシンボルの個数である。さらに、信号変化数はデータ転送時の消費電力に比例する。すなわち、データバス上に現れる秘密情報データのハミング重みに応じて消費電力が増減する。
この消費電力を解析することによって秘密情報を取得する方法として電力解析攻撃が知られている。例えば、攻撃者は、攻撃対象の半導体集積回路に、任意の転送データを繰り返し与えて消費電力波形を大量に測定する。また、測定した大量の消費電力波形を、ハミング重みに基いてグループ分けし、各グループの平均波形を計算する。次に、攻撃者は、未知の秘密情報データを転送する際の消費電力を測定する。このとき、ハミング重みに基いてグループ分けした平均波形と、未知の秘密情報データとを比較する。未知の秘密情報データを転送した時の消費電力波形と最も近い平均波形のグループのハミング重みが未知の秘密情報データのハミング重みに等しいと推定することができる。したがって、秘密情報データ転送時の消費電力を解析することで、データバス上に現れたデータのハミング重みを推定し、秘密情報データに関する情報を取得することができる。この電力解析攻撃を防止するため、データバス上に現れる秘密情報データのハミング重みと消費電力の関連性を低減し、電力解析攻撃への耐性を向上させる半導体集積回路が提案されている。(例えば、特許文献1、特許文献2)
特開2008-269060 特開2008-271048
特許文献1に開示されている半導体集積回路は、データバスが使用されていない時に、無効データをデータバスに出力することで、秘密情報データとハミング重みの関連性を減らしている。一方、特許文献2に開示された半導体集積回路では、秘密情報データを転送する際に、ハミング重みが一定になるような付加ビットを生成する。この付加ビットと秘密情報データを同時にデータバス上に出力することで、データバス上の秘密情報データのハミング重みを均一化することができ、電力解析攻撃に対する耐性を改善している。しかし、特許文献1、特許文献2に記載された半導体集積回路では、秘密情報データ以外の無効データや付加ビットを秘密情報データと同時に転送するので、従来の半導体集積回路に比べて転送性能が低下するという問題があった。
本発明は、上記課題に鑑みてなされたもので、転送性能を低下させることなく、電力解析攻撃によるデータのハミング重みに基く脆弱性を解決することを目的とする。
本発明の半導体集積回路は、秘密情報データを格納又は出力するメモリと、データバスを介して、前記メモリとの間で前記秘密情報データのデータ転送を行うCPUと、前記メモリから秘密情報データを受けた場合、該秘密情報データのビットをランダムに反転して反転データとして前記CPUに出力し、前記CPUから秘密情報データを受けた場合、該秘密情報データが反転データである場合は反転して前記メモリに出力し、非反転データである場合は反転せずに前記メモリへ出力する第1の反転制御部と、前記CPUから秘密情報データを受けた場合、該秘密情報データのビットをランダムに反転して前記メモリに出力し、前記メモリから秘密情報データを受けた場合、該秘密情報データが反転データである場合は反転して前記CPUへ出力し、非反転データである場合は反転せずに前記CPUへ出力する第2の反転制御部とを備えたことを特徴とする。
本発明の半導体集積回路は、データバス上に出力する秘密情報データをランダムに反転させて転送させる構成としたので、転送性能を低下させることなく、データバス9の消費電力を解析する電力解析攻撃への耐性を向上させることができる。
実施の形態1に係る半導体集積回路の構成を示す図。 実施の形態1に係る半導体集積回路においてメモリ装置からCPUへ秘密情報データを転送する際の動作フローチャートを示す図。 実施の形態1に係る反転制御部の回路構成例を示す図。 実施の形態2に係る半導体集積回路においてメモリ装置からCPUを介して別のメモリ装置へ秘密情報データをコピーする際の動作フローチャートを示す図。 実施の形態2に係る反転制御部の回路構成例を示す図。
実施の形態1
以下、図1から図3を用いて本発明の実施の形態1に係る半導体集積回路について説明する。図1は実施の形態1に係る半導体集積回路の構成を示す図である。図2は実施の形態1に係る半導体集積回路においてメモリ装置からCPUへ秘密情報データを転送する際の動作フローチャートを示す図である。図3は実施の形態1に係る反転制御部の回路構成例を示す図である。
以下に図1を用いて実施の形態1に係る半導体集積回路1の構成を説明する。
実施の形態1における半導体集積回路1は、入力回路2と、CPU3と、メモリ装置4A、4Bと、暗号コプロセッサ5と、反転制御部6A、6B、6C、6D(以下、適宜反転制御部6A、6B、6C、6Dをまとめて「反転制御部6」とする。)と、乱数発生装置7と、出力回路8とで構成されている。入力回路2、CPU3、メモリ装置4A、メモリ装置4B、暗号コプロセッサ5、入力回路2、出力回路8は互いにデータバス9で接続されており、データバス9を介して秘密情報データの転送を行う。ここで、秘密情報データとは、暗号化に使用する鍵データ、暗号化する前の平文データ、暗号化後の暗号データ等、電力解析攻撃によって推定されるおそれのあるデータの全てを指す。さらに、反転制御部6は、信号線Aによって乱数発生装置7と接続される。また、各反転制御部6間は信号線Bにより接続されている。
入力回路2は、外部から入力されるデータを半導体集積回路1の各構成要素へ出力する回路である。
CPU3は、メモリ装置4A、メモリ装置4B、暗号コプロセッサ5にアクセスして秘密情報データの読み出し又は書き込みを行う。読み出しの場合、CPU3はメモリ装置4A、メモリ装置4B、暗号コプロセッサ5のうち秘密情報データが格納された構成要素に対してLOAD信号を出力してアクセスし、秘密情報データをCPU3に転送させて読み込む。書き込みの場合、CPU3は、メモリ装置4A、メモリ装置4B、暗号コプロセッサ5のうち書き込む構成要素にSTORE信号を出力してアクセスし、秘密情報データをCPU3から転送して書き込む。このようにして、CPU3は秘密情報データのデータ転送を実行する。
データバス9は、CPU3、メモリ装置4A、メモリ装置4B、暗号コプロセッサ5を接続する信号線である。データバス9は、CPU3とその他の構成要素との間で秘密情報データの転送を行う際に伝送路として使用される。
メモリ装置4A、メモリ装置4Bは、秘密情報データを格納する装置である。例えば、入力回路2から入力された秘密情報データは、CPU3を介して一旦メモリ装置4に格納される。メモリ装置4はCPU3からLOAD信号を受けて、秘密情報データをデータバス9に出力する。
暗号コプロセッサ5は、暗号化処理、または、暗号化処理に必要な演算を行う専用回路である。暗号コプロセッサ5は、メモリ装置4A等と同様に、CPU3からLOAD信号を受けて、秘密情報データを出力し、STORE信号を受けて秘密情報データを格納する。
乱数発生装置7は、反転制御部6に信号線Aを介して乱数ビット101を供給する装置である。すなわち、乱数発生装置7は、ランダムに「1」と「0」を出力する。
反転制御部6A、6B、6C、6Dは、CPU3、メモリ装置4A、メモリ装置4B、暗号コプロセッサ5の入出力部にそれぞれ設けられる。反転制御部6は、各構成要素から秘密情報データをデータバス9に出力する際、乱数発生装置7からの乱数ビット101の示す値に基づいて秘密情報データを反転してデータバス9に出力する。例えば、乱数ビット101の示す値が「0」である場合、秘密情報データを反転して出力し、乱数ビットの示す値が「1」である場合、反転せずにデータバス9に出力する。さらに、反転制御部6は、入力された乱数ビット101を信号線Bを介して他の反転制御部6に反転制御信号110として出力する。ここで、反転制御信号110とは、反転制御部6に入力される秘密情報データが反転データか非反転データ(以後、秘密情報データが反転されていない状態を「真のデータ」とする。)かを示す信号である。一方、反転制御部6は、各構成要素が秘密情報データを格納する際には、入力される反転制御信号110の値によって入力される秘密情報データが「真のデータ」か反転データかを判断し、秘密情報データを「真のデータ」に戻してからメモリ装置4A、4B、暗号コプロセッサ5、CPU3に出力する。なお、反転データとは、8ビットの秘密情報データが2進表記で「11110000」と表される場合、その反転データは「00001111」で表されるものとする。
出力回路8は、暗号データ等を半導体集積回路1の外部に出力する回路である。
ここで、半導体集積回路1が秘密情報データを暗号化する際の秘密情報データの流れを共通鍵暗号の例で説明する。まず、平文データが、入力回路2を介して半導体集積回路1内に入力される。入力された平文データは、CPU3を介して一旦メモリ装置4A(この例の場合は揮発性メモリとする)に転送され、格納される。メモリ装置4Aに格納された平文データは、CPU3を介して暗号コプロセッサ5へ転送され、暗号化の演算処理が行われる。このとき、暗号化の演算処理に使用する鍵データは予めメモリ装置4B(この例の場合は不揮発性メモリとする)に格納されており、CPU3を介して暗号コプロセッサ5に転送される。暗号コプロセッサ5によって暗号化された暗号データが、CPU3を介して出力回路8へ転送され、外部へ出力される。このように、半導体集積回路1は内部の構成要素間で秘密情報データの転送を繰り返して暗号データを得る。なお、各構成要素間のデータ転送は、データバス9を介して行われる。また、上記の秘密情報データの暗号化処理は一例であり、これに限られるものではない。
次に、図2のフローチャートを用いて実施の形態1に係る半導体集積回路1の動作を説明する。なお、図2の説明では、メモリ装置4AからCPU3へ秘密情報データを転送する場合を例に説明する。また、CPU3からメモリ装置4A、メモリ装置4BからCPU3、CPU3からメモリ装置4B、CPU3から暗号コプロセッサ5、暗号コプロセッサ5からCPU3のそれぞれの間で行うデータ転送もメモリ装置4AからCPU3へ秘密情報データを転送する場合と同様の動作であるため省略する。
ステップ200において、乱数発生装置7はメモリ装置4Aの入出力部に接続された反転制御部6Aに乱数ビット101を出力する。
ステップ201において、CPU3は秘密情報データの読み出しを命令するLOAD命令を実行する。LOAD命令とは、読み出す対象となる秘密情報データを格納しているメモリ装置4Aにアクセスし、CPU3へデータ転送させる命令である。LOAD命令実行時、CPU3は、LOAD信号を半導体集積回路1内部の信号線(図示せず)を介してメモリ装置4Aに出力してアクセスする。
ステップ202において、LOAD信号を受けたメモリ装置4Aは、メモリ装置4Aに格納された秘密情報データを反転制御部6Aに出力する。
ステップ203において、ステップ200で乱数発生装置7から出力された乱数ビット101を受けた反転制御部6Aは、乱数ビット101の値に基づいて、秘密情報データを真のデータまたは反転データとし、データバス9を介して反転制御部6Dに出力する。また、反転制御部6Aは、入力された乱数ビット101をそのまま反転制御信号110として信号線Bを介して反転制御部6Dへ出力する。なお、反転制御信号110とは、反転制御部6に入力される秘密情報データが真のデータか反転データかを示す信号である。
ステップ204において、反転制御部6Dには、真のデータ又は反転データとなった秘密情報データと、ステップ203で反転制御部6Aから出力された反転制御信号110が入力される。反転制御部6Dは、反転制御信号110の値に基づいて秘密情報データを真のデータとしてからCPU3へ出力する。このとき、反転制御信号110は、反転制御部6Dに入力される秘密情報データが真のデータか反転データであるかを判断する信号として用いられている。例えば、ステップ202で乱数発生装置7から出力された乱数ビット101として「0」が反転制御部6Aに入力された場合、反転制御部6Aは秘密情報データを反転する。このとき、反転制御部6Aは、入力された「0」を示す乱数ビット101に対応して「0」を示す反転制御信号110を反転制御部6Dに出力する。すなわち、反転制御信号110として「0」が反転制御部6Dに入力された場合、反転制御部6Dに入力される秘密情報データは反転データであり、反転制御部6Dは、反転された秘密情報データを再度反転して、真のデータに戻してからCPU3に出力する。
ステップ205において、CPU3は、反転制御部6Dから出力された秘密情報データを格納する。このようにして、メモリ装置4AからCPU3へのデータ転送が完了する。
ここで、実施の形態1に係る反転制御部6の構成例を図3を用いて詳細に説明する。なお、図1と同じ番号を付した構成要素については、同様のものとし、説明を省略する。また、以下の説明においては、半導体集積回路1がメモリ装置4AからCPU3へ秘密情報データを転送する例について説明する。
反転制御部6Aは、メモリ装置4Aの出力端子に設けられた出力側反転制御回路21Aと、メモリ装置4Aの入力端子に設けられた入力側反転制御回路20Aと、レジスタ12Aとで構成される。
出力側反転制御回路21Aは、マルチプレクサ31Aと反転回路41Aで構成される。マルチプレクサ31Aは、乱数ビット101が示す値に応じて、二つの信号線から入力された秘密情報データのうち一つを選択して、データバス9に出力する回路である。マルチプレクサ31Aは、乱数発生装置7から出力された乱数ビット101の信号線Aと、メモリ装置4Aから出力された秘密情報データの信号線とに接続されている。メモリ装置4Aと接続された信号線は、途中で分岐して二つの信号線となっている。一つの信号線は、メモリ装置4Aから直接接続され(以下、「経路A」とする)、もう一方の信号線は反転回路41Aを介して接続されている(以下、「経路B」とする)。なお、反転回路41Aは、入力された秘密情報データを反転して出力する回路である。
一方、入力側反転制御回路20Aは、マルチプレクサ30Aと反転回路40Aとから構成される。入力側反転制御回路20Aは、出力側反転制御回路21Aと同じ回路構成となっているため、各構成の説明は省略する。
また、CPU3の入出力部に設けられた反転制御部6Dは、反転制御部6Aと同様の機能と構成である。CPU3の入力端子側に設けられた入力側反転制御回路20Dは入力側反転制御回路20Aと、出力端子側に設けられた出力側反転制御回路21Dは、出力側反転制御回路21Aと、それぞれ同様の構成であるため、説明は省略する。なお、マルチプレクサ31Dは、CPU3からメモリ装置4Aに秘密情報データを転送する際に乱数発生装置7から出力される乱数ビット102を受ける。ここで、乱数ビット102は、乱数ビット101と同様、乱数発生装置7から出力される1ビットの乱数である。
レジスタ12A、12Dは、それぞれ乱数ビット101と102の出力タイミングを調整する回路である。レジスタ12Aは、乱数ビット101とクロック信号104を受けてはじめて乱数ビット101を出力する。レジスタ12Aは、マルチプレクサ31A、30Dに秘密情報データが入力されるよりも前に乱数ビット101が入力されるよう制御する。なお、レジスタ12Dは、レジスタ12Aと同様の機能である。乱数ビット102とクロック信号105を受けて初めて乱数ビット102をマルチプレクサ31Dに出力する。また、乱数ビット101、102は、乱数発生装置7からそれぞれ異なるタイミングで出力される。具体的には、乱数ビット101は、メモリ装置4AからCPU3へ秘密情報データを転送する際に出力され、乱数ビット102は、CPU3からメモリ装置4Aへ秘密情報データが転送される際に出力される乱数ビットである。
次に、図3に示した反転制御部6の動作を詳細に説明する。
まず、乱数発生装置7から出力された乱数ビット101は、レジスタ12Aに入力される。レジスタ12Aは、クロック信号104と乱数ビット101を受けて、マルチプレクサ31Aに乱数ビット101を出力する。また、この乱数ビット101は、反転制御信号110として信号線Bを介してマルチプレクサ30Dに出力される。
次に、メモリ装置4Aは、CPU3からのLOAD信号(図示せず)を受けて秘密情報データを出力側反転制御回路21Aに出力する。出力側反転制御回路21Aに入力された秘密情報データは、経路Aと経路Bを介してマルチプレクサ31Aに入力される。
マルチプレクサ31Aは、乱数ビット101の示す値に応じて、経路A又は経路Bのうち、一方を選択する。例えば、マルチプレクサ31Aは、入力された乱数ビット101の示す値が「0」である場合、経路Bを選択して秘密情報データを反転させてデータバス9に出力する。一方、乱数ビット101の示す値が「1」の場合、マルチプレクサ31Aは、経路Aを選択して、秘密情報データを真のデータのままデータバス9に出力する。マルチプレクサ31Aから出力された秘密情報データは、データバス9を介して入力側反転制御回路20Dに入力される。このとき、秘密情報データは、入力側反転制御部20Dの経路Aと経路Bとを介してマルチプレクサ30Dに入力される。
マルチプレクサ30Dは、秘密情報データを経路Aと経路Bから受け、乱数発生装置7から出力された反転制御信号110の示す値に応じて、経路Aと経路Bの一方を選択してCPU3に出力する。ここで、マルチプレクサ30Dは、秘密情報データが必ず真のデータになるような経路を選択する。例えば、反転制御部6A内のマルチプレクサ31Aに乱数ビット101として「0」が入力されていた場合、入力側反転制御回路20Dには反転データが入力される。このとき、CPU3の入力側反転制御回路20D内のマルチプレクサ30Dにも、反転制御信号110として「0」が入力される。これを受けたマルチプレクサ30Dは、反転制御部6Aから出力される秘密情報データが反転データであると判断することができる。よって、マルチプレクサ30Dは、経路Bを選択して反転データを再び反転して真のデータとした後、この真のデータをCPU3へ出力する。一方、入力側反転制御回路20Dは、反転制御信号110として「1」が入力され、秘密情報データとして真のデータが入力された場合、経路Aを選択して、真のデータをそのままCPU3に出力する。よって、CPU3に入力される秘密情報データは必ず真のデータとなる。
以上のように、実施の形態1に係る半導体集積回路1は、秘密情報データのデータ転送を終了する。
なお、以上の説明においては、メモリ装置4AからCPU3へのデータ転送を例に説明したが、CPU3からメモリ装置4Aへの転送も図1、図3に示した回路構成によって実現できる。その際、秘密情報データは、CPU3、出力側反転制御回路21D、データバス9、入力側反転制御回路20A、メモリ装置4Aの順で転送される。また、メモリ装置4Aに秘密情報データが入力される場合においても、秘密情報データは必ず真のデータで入力される。
また、メモリ装置4AとCPU3との間におけるデータ転送を例に説明したが、CPU3とメモリ装置4B、CPU3と暗号コプロセッサ5間でのデータ転送も同様の構成と動作で実現できる。
さらに、反転制御部6をCPU3等の各構成要素の外部に設ける構成としたが、反転制御部6をCPU3等の各構成要素の内部に設ける構成としてもよい。
また、上記実施の形態1に係る半導体集積回路1では、反転制御部6をCPU3、メモリ装置4A、4B、暗号コプロセッサ5、に設ける構成としたが、これらに限らず、入力回路2や出力回路8などのデータ転送を行う回路に設ける構成としてもよい。
なお、上記の説明では、反転制御部6Aによって乱数ビット101を反転制御信号101として出力することにより秘密情報データが真のデータか反転データかを判断するよう構成した例を示したが、本発明はこれに限られるものではなく、反転制御部6Aを介さずに反転制御部6Dに直接乱数ビット101を出力する構成としてもよい。
また、乱数ビット101を一旦メモリ装置4Aに入力し、メモリ装置4Aによって反転制御信号110を出力する構成としてもよい。
さらに、実施の形態1に係る半導体集積回路1において、反転制御部6は、乱数発生装置7から出力された1ビットの乱数ビット101を受けて、秘密情報データの全てのビットを反転させるように構成したが、秘密情報データを複数ビットの乱数に基づいて反転させるように構成してもよい。例えば、秘密情報データが8ビットである場合、秘密情報データは「11111111」(2進表記)のように8桁のビット列で表される。これに対して複数ビットの乱数は、秘密情報データのビット数と同じ8桁のビット列で「00001111」(2進表記)のように表される。この秘密情報データを複数ビットの乱数で反転させる場合、それぞれのビット列の左側から対応する秘密情報データのビットを反転させる。例えば、複数ビットの乱数「00001111」のビット列うち「0」を示すビットに対応する秘密情報データのビットを反転させるとすると、複数ビットの乱数「00001111」の左から4桁が「0」であるので、秘密情報データ「11111111」は、左から4桁が反転されて「00001111」となる。
なお、図3において、実施の形態1に係る半導体集積回路1は、マルチプレクサ31Dに乱数発生装置7で生成された乱数ビット102そのまま入力する構成としたが、本発明はこれに限られるものではなく、乱数ビット102とレジスタ12Aから出力された反転制御信号110との排他的論理和を31Dに入力するように構成してもよく、ランダムであれば良い。また、その他のマルチプレクサ31A、30A、30Dに関しても同様である。
実施の形態1に係る半導体集積回路1は以上のように構成されているので、データバス9の消費電力を解析する電力解析攻撃に対して効果を発揮する。以下に効果を説明する。なお、以下の説明において、データバス9および秘密情報データのビット幅をNとする。また、データバス9に出力される秘密情報データをXとした時、その秘密情報データのハミング重みをXを変数とする関数HW(X)と記す。さらに、データバス9に秘密情報データXが出力されることで発生する電力Pは、P≒αHW(X)のように比例定数「α」と秘密情報データXのハミング重み「HW(X)」の積で表される。このとき、電力Pとハミング重みHW(X)はほぼ比例する。(αは比例定数。)
実施の形態1に係る半導体集積回路1において、攻撃者がある秘密情報データXを用いて電力解析攻撃を行う場合を考える。データバス9に出力される秘密情報データXが真のデータである場合、データバス9上の消費電力PはαHW(X)である。一方、反転データのハミング重みは、ビット幅Nと秘密情報データXのハミング重みの差となりN−HW(X)と表される。したがって、秘密情報データが反転データである場合、データバス9に出力される秘密情報データの消費電力はα(N−HW(X))となる。実施の形態1に係る半導体集積回路1は、データ転送毎にランダムに秘密情報データを反転して転送する。複数回データ転送を繰り返した場合、データバス9上に現れる真のデータと反転データの出現確率は同等とみなすことができ、データバス9上の平均消費電力は、[αHW(X)+α(N−HW(X))]/2≒αN/2とみなせる。よって、データ転送時の平均消費電力は、秘密情報データXの値に依存しない。従って、平均消費電力からハミング重みを推定することが困難となる。
また、実施の形態1に係る半導体集積回路1は、転送する秘密情報データ自体をランダムに反転して転送するので、不要なデータを転送する必要がない。よって、転送性能を低下させることなく電力解析攻撃による秘密情報データの推定を困難にすることができる。
さらに、実施の形態1に係る半導体集積回路1は、乱数発生装置7と、従来の半導体集積回路の構成であるメモリ装置4や暗号コプロセッサ5等の入出力部に反転制御部6を配設するだけで実現できる。したがって、従来の半導体集積回路の構成を大きく変えることなく簡易にデータ転送時の電力解析攻撃による秘密情報データの推定を困難にすることができる。
実施の形態2
実施の形態1に係る半導体集積回路1は、CPU3に入力される秘密情報データを必ず真のデータに戻してから格納する構成とした。しかし、メモリ装置4AからCPU3を介してメモリ装置4Bに秘密情報データをコピーするような場合、CPU3の内部データバス(図示せず)には必ず真のデータが現れることとなり、電力解析攻撃によって秘密情報データを推定されるおそれがある。
そこで、実施の形態2に係る半導体集積回路1では、メモリ装置4AからCPU3を介してメモリ装置4Aに秘密情報データをコピーするような場合でも、CPU3の内部データバスに反転データ又は真のデータがランダムに現れるように構成したものである。
以下、図4、図5を用いて本発明の実施の形態2に係る半導体集積回路について説明する。図4は実施の形態2に係る半導体集積回路においてメモリ装置からCPUを介して別のメモリ装置へ秘密情報データをコピーする動作のフローチャートを示す図である。図5は実施の形態2に係る反転制御部の回路構成例を示す図である。
なお、実施の形態2に係る半導体集積回路1の全体の構成は、図1に記載した半導体集積回路1の構成と同様であり説明を省略する。なお、実施の形態2に係る半導体集積回路におけるCPU3は、新たにSTORE_S命令、LOAD_S命令を実行するプログラムを備える。なお、LOAD_S命令とSTORE_S命令は、それぞれLOAD命令とSTORE命令と同じ動作をさせることに加え、LOAD_S信号、STORE_S信号をそれぞれ1とする命令である。ここで、LOAD_S信号とは、このLOAD_S信号が1である場合において、データバス9から反転制御部6Dに入力された秘密情報データが真のデータであるか反転データであるかに関わらず、反転制御部6Dに秘密情報データをそのままCPU3に出力させる信号である。また、STORE_S信号とは、STORE_S信号が1である場合において、反転制御部6Dに入力された秘密情報データが真のデータであるか反転データであるかに関わらず、反転制御部6Dに秘密情報データをそのままデータバス9に出力させる信号である。
まず、実施の形態2に係る半導体集積回路1の動作について図4を用いて説明する。なお、図4の説明は、メモリ装置4AからCPU3を介してメモリ装置4Bに秘密情報データをコピーする場合を例にとって説明する。
ステップ301において、CPU3は「1」を示すLOAD_S信号を反転制御部6Dに出力する。
ステップ302において、反転制御部6Dには、メモリ装置4Aから出力された秘密情報データと反転制御信号110が入力される。反転制御部6Dが受ける秘密情報データは、実施の形態1に係る半導体集積回路1と同様、ランダムに反転されて出力された秘密情報データである。
ステップ303において、反転制御部6Dは、入力された秘密情報データが真のデータか反転データかに関わらず、そのままCPU3に出力する。秘密情報データを受けたCPU3は、秘密情報データを格納する。なお、実施の形態1に係る反転制御部6Dと同様に、実施の形態2に係る反転制御部6Dは、反転制御信号110の値に基づいて入力される秘密情報データが真のデータであるか反転データであるかを判断する。
ステップ304において、CPU3はSTORE_S信号を反転制御部6Dに出力する。
ステップ305において、CPU3は秘密情報データを反転制御部6Dに出力する。
ステップ306において、反転制御部6Dは、CPU3から秘密情報データを受ける。STORE_S信号を受けた反転制御部6Dは、入力された秘密情報データが真のデータであるか反転データであるかに関わらず、秘密情報データをそのままメモリ装置4Bに出力する。また、反転制御部6Dは、反転制御信号110をメモリ装置4Bに出力する。
以上のようにして、半導体集積回路1はメモリ装置4AからCPU3を介してメモリ装置4Bへ秘密情報データをコピーする動作が終了する。
ここで、実施の形態2に係る半導体集積回路1の反転制御部6Dの構成について図5を用いて詳細に説明する。図5は実施の形態2に係る反転制御部6Dの回路構成例を示す図である。なお、実施の形態1において説明した図3と同じ番号を付した構成要素については、同様のものとし、説明を省略する。以下、実施の形態2に係る半導体集積回路1において追加した構成要素について説明する。
実施の形態2に係る半導体集積回路1は、図3に示す反転制御部6D内にレジスタ14、マルチプレクサ32、論理和回路50D、論理和回路51Dが追加されている。これらの構成要素と、CPU3から出力されるLOAD_S信号及びSTORE_S信号とによって、実施の形態2に係る半導体集積回路1は、秘密情報データをそのままCPU3に入力し、さらにメモリ装置4Bにそのまま出力することが可能となる。
論理和回路50Dは、反転制御信号110とCPU3から出力されるLOAD_S信号107とを受けて論理和演算し、「1」または「0」を出力する回路である。
レジスタ14は、反転制御信号110の出力タイミングを調整する回路である。LOAD_S信号107とクロック信号105と反転制御信号110とを受けた場合に反転制御信号110を出力する。
マルチプレクサ32は、STORE_S信号108の値に応じて乱数ビット102が伝送される信号線A(以下、「経路D」とする)又は反転制御信号110が伝送される信号線B(以下、「経路C」とする)のうち一つを選択して出力する回路である。
論理和回路51Dは、STORE_S信号108と、マルチプレクサ32から出力された反転制御信号110又は乱数ビット102とを受けて論理和演算し、「1」又は「0」を出力する回路である。
次に実施の形態2に係る半導体集積回路1の反転制御部6Dの動作を図5を用いて詳細に説明する。なお、以下の説明では、メモリ装置4Aから出力された反転データがCPU3を介してメモリ装置4Bにそのまま反転データとして出力される場合を例として説明する。また、各信号の値について、STORE_S信号108の示す値が「1」、LOAD_S信号107が示す値が「1」、入力側反転制御回路20Dに入力される秘密情報データが反転データ、反転制御信号110の示す値が「0」(秘密情報データが反転データであることを示す値)、乱数ビット102の示す値が「1」(秘密情報データを真のデータにすることを示す値)、であるものとする。さらに、STORE_S信号108が「1」を示す場合、必ずLOAD_S信号107も「1」を示すものとする。
まず、CPU3は、「1」を示すLOAD_S信号107をレジスタ14と論理和回路50Dに出力する。
論理和回路50Dは、「0」を示す反転制御信号110と「1」を示すLOAD_S信号107を受けて論理和演算する。この場合、論理和回路50Dは、LOAD_S信号107の示す値「1」が入力されるため、反転制御信号110の示す値に関わらず必ず「1」をマルチプレクサ30Dに出力する。
マルチプレクサ30Dは、論理和回路50Dから出力された「1」を示す信号を受けて、データバス9から受け取る秘密情報データ200(以下、適宜「反転データ200」とする)の経路を選択する。このとき、マルチプレクサ30Dは「1」を示す信号を受けた場合、経路Aを選択するものとする。マルチプレクサ30Dは、経路Aを選択した後、データバス9から入力された反転データ200を経路Aを介してCPU3に出力する。
レジスタ14は、「0」を示す反転制御信号110と、「1」を示すLOAD_S信号107と、クロック信号105とを受けて、反転制御信号110をマルチプレクサ32に出力する。このとき、レジスタ14は、マルチプレクサ32に後述するSTORE_S信号108が入力された後に、反転制御信号110が入力されるように制御する。
CPU3は、マルチプレクサ30Dから出力された反転データ200をそのままCPU3に格納する。また、CPU3は、格納した反転データ200をマルチプレクサ31Dに出力するとともに、「1」を示すSTORE_S信号108をマルチプレクサ32と論理和回路51Dに出力する。
「1」を示すSTORE_S信号108と、「0」を示す反転制御信号110と、「1」を示す乱数ビット102を受けたマルチプレクサ32は、STORE_S信号108の値に応じて反転制御信号110又は乱数ビット102のうちどちらか一方を選択して出力する。この場合、マルチプレクサ32は、STORE_S信号108の示す値が「1」であるので経路Dを選択して、反転制御信号110をそのまま論理和回路51Dとメモリ装置4Bへ出力する。このとき出力された反転制御信号110は、CPU3から出力された秘密情報データ200が反転データ200であることを示すために用いられる。
論理和回路51Dは、マルチプレクサ32から出力された「0」を示す反転制御信号110と、CPU3から出力された「1」を示すSTORE_S信号108とを受けて、論理和演算した結果をマルチプレクサ31Dに出力する。この例の場合、論理和回路51Dは、STORE_S信号108として「1」が入力されているので、マルチプレクサ32から出力された信号の示す値が「1」か「0」かに関わらず「1」を出力する。すなわち、この構成によって、STORE_S信号が「1」を示すときCPU2は必ず秘密情報データをそのまま出力することが可能となる。
マルチプレクサ31Dは、CPU3から出力された反転データ200と論理和回路51Dから出力された「1」を示す信号を受ける。この場合、マルチプレクサ31Dは、論理和回路51Dから「1」を示す値が入力されているので、経路Aを選択してデータバス9に出力する。すなわち、秘密情報データを反転せずにそのまま出力するので、データバス9に出力される秘密情報データは反転データ200のままである。なお、マルチプレクサ32から出力された反転制御信号110の示す値は「0」であり、データバス9に出力される秘密情報データが反転データ200であることを示している。
このようにして、STORE_S信号108とLOAD_S信号107が「1」を示す場合に、反転制御部6Dは、入力された秘密情報データが反転データ200である場合にはそのままCPU3に取り込み、反転データ200のままデータバス9に出力する。
なお、実施の形態2の説明において、STORE_S信号とLOAD_S信号が「1」の場合を例に説明したが、STORE_S信号とLOAD_S信号が「0」である場合においては、実施の形態2に係る半導体集積回路1は実施の形態1に係る半導体集積回路1と同様の動作を行う。すなわち、秘密情報データがCPU3に入力される際、反転制御部6Dは、必ず秘密情報データを真のデータとして入力する。さらに、CPU3から秘密情報データを出力する際、反転制御部6Dは、秘密情報データをランダムに反転して出力する。
なお、この例において、反転制御部6Dは、反転データ200が入力される場合を説明したが、真のデータである場合においても同様の動作を行う。すなわち、反転制御部6Dに真のデータが入力された場合、反転制御部6Dは真のデータをそのままCPU3内部に出力し、データバス9に真のデータを出力する。
また、この例において、半導体集積回路1は、STORE_S信号及びLOAD_S信号の生成方法として、CPU3にSTORE_S命令及びLOAD_S命令のプログラムを追加したが、これに限られるものではない。例えば、CPU3内部のレジスタにON/OFF可能なフラグを設け、そのフラグがONである間は通常のLOAD命令及びSTORE命令をそれぞれLOAD_S命令及びSTORE_S命令として動作するように実装しても良い。
なお、実施の形態1及び実施の形態2において、反転制御部6DとCPU3は別の構成として記載したが、反転制御部6DとCPU3をまとめて中央処理装置として構成してもよい。
実施の形態2に係る半導体集積回路1は、以上のように構成したので、メモリ装置4AからCPU3を介してメモリ装置4Bに秘密情報データをコピーするような場合においても、CPUの内部データバスに出現する秘密情報データが反転データである場合と真のデータである場合とがランダムに切り替わるので、秘密情報データの転送を複数回繰り返した際のデータバス上の消費電力の平均は、秘密情報データの値に依存せず、平均電力からハミング重みを推定することが困難となる。
1 半導体集積回路、2 入力回路、3 CPU、4 メモリ装置、5 暗号コプロセッサ、6 反転制御部、7 乱数発生装置、8 出力回路、9 データバス

Claims (9)

  1. 秘密情報データを格納又は出力するメモリと、
    データバスを介して、前記メモリとの間で前記秘密情報データのデータ転送を行うCPUと、
    前記メモリから秘密情報データを受けた場合、該秘密情報データのビットをランダムに反転して反転データとして前記CPUに出力し、
    前記CPUから秘密情報データを受けた場合、該秘密情報データが反転データである場合は反転して前記メモリに出力し、非反転データである場合は反転せずに前記メモリへ出力する第1の反転制御部と、
    前記CPUから秘密情報データを受けた場合、該秘密情報データのビットをランダムに反転して前記メモリに出力し、前記メモリから秘密情報データを受けた場合、該秘密情報データが反転データである場合は反転して前記CPUへ出力し、非反転データである場合は反転せずに前記CPUへ出力する第2の反転制御部と
    を備えた半導体集積回路。
  2. 乱数ビットを出力する乱数発生装置を備え、
    前記第1の反転制御部又は前記第2の反転制御部は、前記乱数ビットの値に基いて反転又は非反転とすることを特徴とする請求項1に記載の半導体集積回路。
  3. 前記メモリから前記CPUへ秘密情報データを転送する時、
    前記第1の反転制御部は、
    前記乱数発生装置から出力された乱数ビットに基いて秘密情報データを反転又は非反転とするとともに、前記乱数ビットを前記第2の反転制御部へ出力し、
    前記第2の反転制御部は、前記第1の反転制御部から出力された乱数ビットを受けて前記秘密情報データが反転データか非反転データかを判断し、
    前記CPUから前記メモリへ秘密情報データを転送する時、
    前記第2の反転制御部は、
    前記乱数発生装置から出力された乱数ビットに基いて秘密情報データを反転又は非反転とするとともに、前記乱数ビットを前記第1の反転制御部へ出力し、
    前記第1の反転制御部は、前記第1の反転制御部から出力された乱数ビットを受けて前記秘密情報データが反転データか非反転データかを判断することを特徴とする
    請求項2に記載の半導体集積回路。
  4. 前記第2の反転制御部は、
    前記秘密情報データを反転せずに入力することを示す信号を前記CPUから受けた場合、
    前記データバスから受けた前記秘密情報データを反転せずに前記CPUに出力することを特徴とする請求項1ないし請求項3に記載のいずれかに記載の半導体集積回路。
  5. 前記第2の反転制御部は、
    前記秘密情報データを反転せずに出力することを示す信号を前記CPUから受けた場合、
    前記CPUから受けた前記秘密情報データを反転せずに前記データバスに出力することを特徴とする請求項4に記載の半導体集積回路。
  6. 秘密情報データを格納又は出力するメモリと、
    データバスを介して、前記メモリとの間で前記秘密情報データのデータ転送を行うCPUとを備えた半導体集積回路のデータ転送方法において、
    前記メモリから秘密情報データを受けて、該秘密情報データのビットをランダムに反転して前記データバスに出力するステップと、
    前記データバスから前記秘密情報データを受けて、該秘密情報データが反転データである場合は反転して入力し、非反転データである場合は反転せずに前記CPUへ出力するステップと
    を有することを特徴とするデータ転送方法。
  7. 前記データバスから前記秘密情報データを受けて、該秘密情報データが反転データである場合は反転して入力し、非反転データである場合は反転せずに前記CPUへ出力するステップにおいて、
    前記秘密情報データを反転せずに格納することを示す信号が前記CPUから出力された場合、前記転送データを反転せずに前記CPUに入力することを特徴とする請求項6に記載の半導体集積回路。
  8. メモリから出力されたランダムに反転された秘密情報データをデータバスから受けて非反転データとして出力する反転制御部と、
    前記反転制御部から出力された秘密情報データを格納するCPUとを備え、
    秘密情報データをコピーするプログラム実行時には、前記反転制御部は前記データバスから読み出す前記秘密情報データが非反転データか反転データかに関らず、反転せずに前記CPUに出力することを特徴とする中央処理装置。
  9. 秘密情報データが格納されたCPUと、
    前記CPUから出力された秘密情報データを受けてランダムに反転してデータバスに出力する反転制御部とを備え、
    秘密情報データをコピーするプログラム実行時には、前記反転制御部は前記CPUから出力される秘密情報データが反転データか非反転データかに関わらず、反転せずに前記データバスに出力することを特徴とする中央処理装置。
JP2012245894A 2012-11-08 2012-11-08 半導体集積回路及びデータ転送方法 Pending JP2014096644A (ja)

Priority Applications (1)

Application Number Priority Date Filing Date Title
JP2012245894A JP2014096644A (ja) 2012-11-08 2012-11-08 半導体集積回路及びデータ転送方法

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
JP2012245894A JP2014096644A (ja) 2012-11-08 2012-11-08 半導体集積回路及びデータ転送方法

Publications (1)

Publication Number Publication Date
JP2014096644A true JP2014096644A (ja) 2014-05-22

Family

ID=50939421

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2012245894A Pending JP2014096644A (ja) 2012-11-08 2012-11-08 半導体集積回路及びデータ転送方法

Country Status (1)

Country Link
JP (1) JP2014096644A (ja)

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2016161590A (ja) * 2015-02-26 2016-09-05 株式会社メガチップス データ処理システム

Citations (6)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPS63152241A (ja) * 1986-12-17 1988-06-24 Fujitsu Ltd デ−タバス暗号化方式
JPH0399346A (ja) * 1989-09-12 1991-04-24 Fujitsu Ltd 半導体記憶装置
JPH11203237A (ja) * 1998-01-16 1999-07-30 Toshiba Corp 半導体集積回路
JP2001005731A (ja) * 1999-06-24 2001-01-12 Hitachi Ltd 情報処理装置、カード部材および情報処理システム
JP2006277411A (ja) * 2005-03-29 2006-10-12 Toshiba Corp プロセッサ、メモリ、コンピュータシステムおよびデータ転送方法
JP2008502283A (ja) * 2004-06-08 2008-01-24 エイチアールエル ラボラトリーズ,エルエルシー 差分電力解析を妨害する命令マスクや他の手法を備えた暗号アーキテクチャ

Patent Citations (6)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPS63152241A (ja) * 1986-12-17 1988-06-24 Fujitsu Ltd デ−タバス暗号化方式
JPH0399346A (ja) * 1989-09-12 1991-04-24 Fujitsu Ltd 半導体記憶装置
JPH11203237A (ja) * 1998-01-16 1999-07-30 Toshiba Corp 半導体集積回路
JP2001005731A (ja) * 1999-06-24 2001-01-12 Hitachi Ltd 情報処理装置、カード部材および情報処理システム
JP2008502283A (ja) * 2004-06-08 2008-01-24 エイチアールエル ラボラトリーズ,エルエルシー 差分電力解析を妨害する命令マスクや他の手法を備えた暗号アーキテクチャ
JP2006277411A (ja) * 2005-03-29 2006-10-12 Toshiba Corp プロセッサ、メモリ、コンピュータシステムおよびデータ転送方法

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2016161590A (ja) * 2015-02-26 2016-09-05 株式会社メガチップス データ処理システム

Similar Documents

Publication Publication Date Title
JP4959429B2 (ja) ハードウェア・ブート・シーケンスをマスキングするためのシステムおよび方法
US6792438B1 (en) Secure hardware random number generator
US9418246B2 (en) Decryption systems and related methods for on-the-fly decryption within integrated circuits
WO2016113886A1 (ja) 乱数拡大装置、乱数拡大方法及び乱数拡大プログラム
JP2018109750A (ja) ビットミキサにより暗号ラウンド鍵を生成するためのシステム及び方法
CN108011706B (zh) 数据处理装置和用于数据的加密处理的方法
US20080215874A1 (en) System and Method for Masking a Boot Sequence by Providing a Dummy Processor
US9325494B2 (en) Method for generating a bit vector
US9678894B2 (en) Cache-less split tracker architecture for replay protection trees
JP2007520951A (ja) 電力解析攻撃対策保護
JP2007334883A (ja) マルチプロセッサ・システムのブートのためにランダム・プロセッサを選択するためのシステムおよび方法
US8924740B2 (en) Encryption key transmission with power analysis attack resistance
KR102628010B1 (ko) 가상 암호화 연산을 수행하는 암호화 회로
US20110200190A1 (en) Cryptography processing device and cryptography processing method
US11886717B2 (en) Interface for revision-limited memory
Homsirikamol et al. Gmu hardware api for authenticated ciphers
Homsirikamol et al. A universal hardware API for authenticated ciphers
US10210350B2 (en) Electronic device against side channel attacks
Mühlbach et al. Secure communication in microcomputer bus systems for embedded devices
JP2014096644A (ja) 半導体集積回路及びデータ転送方法
JP2005086670A (ja) 暗号化/復号モジュール
US9014370B2 (en) High performance hardware-based execution unit for performing C2 block cipher encryption/decryption
US20230400996A1 (en) Apparatus, Device, and Method for a Memory Controller, Memory Controller, and System
Liu et al. A low-overhead and high-reliability physical unclonable function (PUF) for cryptography
Muhlbach et al. Secure and authenticated communication in chip-level microcomputer bus systems with tree parity machines

Legal Events

Date Code Title Description
RD01 Notification of change of attorney

Free format text: JAPANESE INTERMEDIATE CODE: A7421

Effective date: 20140327

A621 Written request for application examination

Free format text: JAPANESE INTERMEDIATE CODE: A621

Effective date: 20150929

A977 Report on retrieval

Free format text: JAPANESE INTERMEDIATE CODE: A971007

Effective date: 20160818

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20160906

A02 Decision of refusal

Free format text: JAPANESE INTERMEDIATE CODE: A02

Effective date: 20170307