(57)【要約】【課題】サイドチャンネル攻撃に対して耐性を確保することができるデータ処理装置を提供することである。【解決手段】実施形態のデータ処理装置は、メモリと、アドレス圧縮回路と、第１及び第２のデータ変換回路と、第１の選択回路と、変換方式判定回路とを有する。メモリは、同一のデータ格納領域に少なくとも２つ以上のアドレスが割り当てられ、入力されたアドレスに対してデータを保持する。アドレス圧縮回路は、入力されたアドレスを圧縮し、メモリのアドレスを生成する。第１及び第２のデータ変換回路は、データをそれぞれ異なる所定のアルゴリズムに従って変換する。第１の選択回路は、第１及び第２のデータ変換回路からの出力のいずれか一方を選択する。変換方式判定回路は、入力されたアドレスから選択回路に供給する選択信号を生成する。【選択図】図３
2017163277.tif 000002
【特許請求の範囲】
【請求項１】
同一のデータ格納領域に少なくとも２つ以上のアドレスが割り当てられ、入力されたアドレスに対してデータを保持するメモリと、
入力された前記アドレスを圧縮し、前記メモリのアドレスを生成するアドレス圧縮回路と、
前記データをそれぞれ異なる所定のアルゴリズムに従って変換する第１及び第２のデータ変換回路と、
前記第１及び前記第２のデータ変換回路からの出力のいずれか一方を選択する第１の選択回路と、
入力された前記アドレスから前記選択回路に供給する選択信号を生成する変換方式判定回路と、
を有することを特徴とするデータ処理装置。
【請求項２】
前記メモリから読み出されたデータをそれぞれ異なる所定のアルゴリズムに従って変換する第３及び第４のデータ変換回路と、
前記第３及び前記第４のデータ変換回路からの出力のいずれか一方を、前記変換方式判定が生成した前記選択信号に基づいて選択する第２の選択回路と、
を有することを特徴とする請求項１に記載のデータ処理装置。
【請求項３】
前記第３データ変換回路は、前記第１データ変換回路の逆変換を行い、
前記第４データ変換回路は、前記第３データ変換回路の逆変換を行うことを特徴とする請求項２に記載のデータ処理装置。
【請求項４】
前記アドレス圧縮回路は、入力されたアドレスの最上位ビットを削除することで、前記アドレスを圧縮することを特徴とする請求項１から３のいずれか１つに記載のデータ処理装置。
【請求項５】
前記アドレス圧縮回路は、入力されたアドレスを変換するためのテーブルを有することを特徴とする請求項１から３のいずれか１つに記載のデータ処理装置。
【請求項６】
前記第１及び前記第２のデータ変換回路は、前記データをそれぞれ異なる関数で変換することを特徴とする請求項１から５のいずれか１つに記載のデータ処理装置。
【請求項７】
前記第３及び前記第４のデータ変換回路は、前記メモリから読み出されたデータをそれぞれ異なる関数で変換することを特徴とする請求項１から５のいずれか１つに記載のデータ処理装置。
【請求項８】
前記第１のデータ変換回路は、前記データを所定の関数で複数回変換すると元のデータに戻る性質を有する関数を用いることを特徴とする請求項１に記載のデータ処理装置。
【発明の詳細な説明】
【技術分野】
【０００１】
実施の形態は、データ処理装置に関する。
【背景技術】
【０００２】
従来、セキュリティ用途のＬＳＩが搭載されるＩＣ（Integrated Circuit）カード等は、個人情報、残高情報等の秘密情報を扱うため、セキュリティ用途のＬＳＩには、秘密情報を保護するための暗号化処理技術が用いられている。
【０００３】
このようなセキュリティ用途のＬＳＩに対して、消費される電力を解析する電力解析攻撃、あるいは、放射される電磁波を解析する電磁波解析攻撃により、ＬＳＩから秘密情報（内部情報）を取り出すサイドチャンネル攻撃と呼ばれる攻撃手法が存在する。
【先行技術文献】
【特許文献】
【０００４】
【特許文献１】特開２００８−４８２６８号公報
【発明の概要】
【発明が解決しようとする課題】
【０００５】
実施形態の課題は、サイドチャンネル攻撃に対して耐性を確保することができるデータ処理装置を提供することを目的とすることである。
【課題を解決するための手段】
【０００６】
実施形態のデータ処理装置は、メモリと、アドレス圧縮回路と、第１及び第２のデータ変換回路と、第１の選択回路と、変換方式判定回路とを有する。メモリは、同一のデータ格納領域に少なくとも２つ以上のアドレスが割り当てられ、入力されたアドレスに対してデータを保持する。アドレス圧縮回路は、入力されたアドレスを圧縮し、メモリのアドレスを生成する。第１及び第２のデータ変換回路は、データをそれぞれ異なる所定のアルゴリズムに従って変換する。第１の選択回路は、第１及び第２のデータ変換回路からの出力のいずれか一方を選択する。変換方式判定回路は、入力されたアドレスから選択回路に供給する選択信号を生成する。
【図面の簡単な説明】
【０００７】
【図１】一実施形態に係るデータ処理装置の構成を示す図である。
【図２】不揮発性メモリの詳細な構成を説明するための図である。
【図３】変換部の詳細な構成を説明するための図である。
【図４】暗号器の詳細な構成を説明するための図である。
【図５】データ処理装置内のデータの流れを説明するための図である。
【図６】変形例に係る変換部の詳細な構成を説明するための図である。
【発明を実施するための形態】
【０００８】
以下、図面を参照して実施形態について詳細に説明する。  
【０００９】
従来、セキュリティ用途のＬＳＩに対して、消費される電力を解析する電力解析攻撃、あるいは、放射される電磁波を解析する電磁波解析攻撃により、ＬＳＩから秘密情報（内部情報）を取り出すサイドチャンネル攻撃と呼ばれる攻撃手法が存在する。このサイドチャンネル攻撃では、ＬＳＩ内部の電気的な変化、例えば、変化する消費電力や放射される電磁波を多数収集し、収集した多数の情報に対して統計的な処理を行うことで、ＬＳＩの秘密情報を取り出すようにしている。
【００１０】
ところで、セキュリティ用途のＬＳＩでは、重要な秘密情報が不揮発性メモリに保存されている。重要な秘密情報は、不揮発性メモリから読み出され、ＲＡＭ等の揮発性メモリに一時的に保存され後、ＣＰＵによって処理される。あるいは、重要な秘密情報は、さらに、ＣＰＵによってＲＡＭから読み出され、暗号器等の周辺回路に転送され処理される。
【００１１】
このように、重要な秘密情報は、不揮発性メモリから読み出された後、ＣＰＵを経由して周辺回路に転送されることが多く、ＣＰＵの転送経路が攻撃のターゲットとなることがある。
【００１２】
また、ＣＰＵから転送されたデータは、不揮発性メモリ内部において暗号化等の処理が行われて保持されることがある。この場合、暗号化の処理は、不揮発性メモリのメモリ部の近辺の回路によって行われる。あるいは、ＣＰＵによって暗号化の処理が行われ、暗号化されたデータが不揮発性メモリに転送されて保持される。
【００１３】
一方、暗号化されたデータが不揮発性メモリからＣＰＵによって読み出される際には、元のデータに復号されてからＣＰＵに取り込まれる。すなわち、ＣＰＵの転送経路では、暗号化されていない生データが転送されることになる。そのため、ＣＰＵの転送経路が攻撃のターゲットとなった場合、秘密情報が取り出されてしまう虞があった。
【００１４】
そこで、以下の本実施形態では、ＣＰＵの転送経路が攻撃のターゲットとなった場合でも、サイドチャンネル攻撃に対して耐性を確保することができるデータ処理装置について説明する。
【００１５】
まず、図１に基づき、一実施形態に係るデータ処理装置の構成について説明する。図１は、一実施形態に係るデータ処理装置の構成を示す図である。
【００１６】
実施形態のデータ処理装置１は、中央処理装置（ＣＰＵ）１１と、プログラム等を記憶したＲＯＭ１２と、ＣＰＵ１１の作業用記憶領域としてのＲＡＭ１３と、秘密情報を保持する不揮発性メモリ１４と、暗号器１５と、外部とのデータの送受信を行うための送受信インターフェース回路（以下、送受信Ｉ／Ｆ回路と略す）１６と、送受信Ｉ／Ｆ回路１６に接続され、外部とのデータの入出力を行うための入出力端子１７とを有して構成されている。また、データ処理装置１は、ＣＰＵ１１、ＲＯＭ１２、ＲＡＭ１３、不揮発性メモリ１４、暗号器１５、及び、送受信Ｉ／Ｆ回路１６を互いに接続するバス１８を有して構成されている。
【００１７】
データ処理装置１は、例えば、ＩＣカード等であり、カードリーダ装置等の外部装置（図示せず）からデータを受信すると、そのデータに対して所定の暗号処理を施し、その暗号処理結果のデータを出力又は送信する。外部装置とのデータの送受信は、送受信Ｉ／Ｆ回路１６及び入出力端子１７を介して、例えば無線通信により行われる。
【００１８】
ここで、秘密情報を保持する不揮発性メモリ１４の詳細な構成について、図２及び図３を用いて説明する。図２は、不揮発性メモリの詳細な構成を説明するための図であり、図３は、変換部の詳細な構成を説明するための図である。
【００１９】
図２に示すように、不揮発性メモリ１４は、変換方式判定回路２０と、変換部２１と、メモリ２５と有して構成されている。変換部２１は、アドレス変換部２２と、データ変換部２３と、データ変換部２４とを有して構成されている。
【００２０】
図３に示すように、アドレス変換部２２は、アドレス圧縮回路３１を有して構成されている。また、データ変換部２３は、データ変換回路（第１のデータ変換回路）３２と、データ変換回路（第２のデータ変換回路）３３と、データ選択回路（第１のデータ選択回路）３４とを有して構成されている。また、データ変換部２４は、データ変換回路（第３のデータ変換回路）３５と、データ変換回路（第４のデータ変換回路）３６と、データ選択回路（第２のデータ選択回路）３７とを有して構成されている。
【００２１】
なお、データ変換部２３は、２つのデータ変換回路３２及び３３を有して構成されているが、３つ以上のデータ変換回路を有して構成されていてもよい。同様に、データ変換部２４は、２つのデータ変換回路３５及び３６を有して構成されているが、３つ以上のデータ変換回路を有して構成されていてもよい。
【００２２】
アドレス変換部２２のアドレス圧縮回路３１には、ＣＰＵ１１からメモリ２５の物理アドレスを指定するためのアドレスが入力される。アドレス圧縮回路３１は、ＣＰＵ１１から入力されたアドレスをメモリ２５の物理アドレスに変換する機能を備えている。ここでは、メモリ２５の物理アドレスの空間の大きさをＮ、すなわち、Ｎ個のデータを保持することができるものとする。例えば、本実施形態では、メモリ２５は、図２に示すように、アドレスＡ０〜Ａ９のＮ＝１０のデータを保持することができる。
【００２３】
本実施形態では、メモリ２５の記憶領域は、複数のデータ格納領域（図２の例では、物理アドレスＡ０〜Ａ９の１０のデータ格納領域）により構成されており、同一のデータ格納領域に複数のアドレスが割り当てられている。すなわち、ＣＰＵ１１は、メモリ２５にＮより大きいＭ個のアドレスが割り当てられるものと認識する。例えば、メモリ２５には、Ｍ＝Ｎ×ｋ（ｋ＞１の整数）のアドレスが割り当てられる。例えば、ｋ＝２の場合、ＣＰＵ１１からは、メモリ２５が２Ｎのアドレスを有しているものとして認識される。
【００２４】
アドレス変換部２２のアドレス圧縮回路３１は、２Ｎのアドレス空間をＮのアドレス空間に変換（圧縮）する機能を備えている。例えば、Ｎ＝１０、ｋ＝２の場合、ＣＰＵ１１は、メモリ１５がアドレスＡ０〜Ａ１９のアドレスを有するものとして認識するが、実際のメモリ１５は、アドレスＡ０〜Ａ９の１０個のデータ格納領域しか有していない。
【００２５】
アドレス変換部２２のアドレス圧縮回路３１は、入力されたアドレスＡ０〜Ａ１９のいずれかのアドレスをアドレスＡ０〜Ａ９のアドレスに変換（圧縮）する。例えば、アドレス圧縮回路３１は、入力されたアドレスの最上位ビットを削除することでアドレスを圧縮する。なお、アドレス圧縮回路３１は、アドレスの変換（圧縮）を行うためのテーブルを有していていもよい。
【００２６】
具体的には、アドレス圧縮回路３１は、アドレスとして、アドレスＡ１が入力された場合、アドレスＡ１を出力し、アドレスＡ１１が入力された場合、アドレスＡ１を出力する。すなわち、アドレス圧縮回路３１は、アドレスＡ０〜Ａ９に対しては、それぞれアドレスＡ０〜Ａ９出力し、アドレスＡ１０〜Ａ１９に対しては、それぞれアドレスＡ０〜Ａ９を出力する。
【００２７】
このように、メモリ２５の同一のデータ格納領域には複数のアドレスが割り当てられ、例えば、アドレスＡ１、または、アドレスＡ１１が入力された場合、いずれもメモリ２５のアドレスＡ１のデータ格納領域にデータが保存されることになる。
【００２８】
不揮発性メモリ１４にデータＸ１を書き込む場合、不揮発性メモリ１４には、アドレス及びデータＸ１が入力される。アドレスは、変換方式判定回路２０及びアドレス変換部２２に入力される。変換方式判定回路２０は、入力されたアドレスから変換方式を決定し、選択信号をデータ変換部２３及びデータ変換部２４に出力する。
【００２９】
データ変換部２３に入力された選択信号は、図３に示すように、データ選択回路３４に入力される。同様に、データ変換部２４に入力された選択信号は、データ選択回路３７に入力される。
【００３０】
例えば、変換方式判定回路２０は、アドレスＡ０〜Ａ９が入力された場合、データ変換回路３２の出力を選択するための選択信号をデータ選択回路３４に出力し、アドレスＡ１０〜Ａ１９が入力された場合、データ変換回路３３の出力を選択するための選択信号をデータ選択回路３４に出力する。同様に、変換方式判定回路２０は、アドレスＡ０〜Ａ９が入力された場合、データ変換回路３５の出力を選択するための選択信号をデータ選択回路３７に出力し、アドレスＡ１０〜Ａ１９が入力された場合、データ変換回路３６の出力を選択するための選択信号をデータ選択回路３７に出力する。
【００３１】
また、不揮発性メモリ１４に入力されたデータＸ１は、データ変換部２３のデータ変換回路３２及びデータ変換回路３３に入力される。データ変換回路３２は、入力されたデータＸ１を関数ｆで変換し、データ選択回路３４に出力する。すなわち、データ変換回路３２からは、ｆ（Ｘ１）のデータがデータ選択回路３４に出力される。
【００３２】
一方、データ変換回路３３は、入力されたデータを関数ｇで変換し、データ選択回路３４に出力する。すなわち、データ変換回路３３からは、ｇ（Ｘ１）のデータがデータ選択回路３４に出力される。
【００３３】
データ選択回路３４は、変換方式判定回路２０からの選択信号に基づいて、データ変換回路３２またはデータ変換回路３３からの出力を選択し、メモリ２５に出力する。上述したように、アドレスＡ０〜Ａ９が変換方式判定回路２０に入力された場合、データ選択回路３４は、変換方式判定回路２０からの選択信号に基づき、データ変換回路３２からの出力を選択する。一方、アドレスＡ１０〜Ａ１９が変換方式判定回路２０に入力された場合、データ選択回路３４は、変換方式判定回路２０からの選択信号に基づき、データ変換回路３３からの出力を選択する。
【００３４】
すなわち、例えば、アドレスＡ１及びデータＸ１が不揮発性メモリ１４に入力された場合、メモリ２５のアドレスＡ１のデータ格納領域にｆ（Ｘ１）のデータが記憶され、アドレスＡ１１及びデータＸ１が不揮発性メモリ１４に入力された場合、メモリ２５のアドレスＡ１のデータ格納領域にｇ（Ｘ１）のデータが記憶されることになる。
【００３５】
一方、不揮発性メモリ１４からデータを読み出す場合、不揮発性メモリ１４には、アドレスが入力される。入力されたアドレスは、アドレス圧縮回路３１によりアドレス変換され、メモリ２５に出力される。上述したように、アドレス圧縮回路３１は、アドレスＡ１が入力された場合、アドレスＡ１をメモリ２５に出力し、アドレスＡ１１が入力された場合、アドレスを圧縮し、アドレスＡ１をメモリ２５に出力する。
【００３６】
この結果、メモリ２５のアドレスＡ１のデータ格納領域に記憶されているデータが読み出される。ここでは、メモリ２５のアドレスＡ１のデータ格納領域にｆ（Ｘ１）のデータが記憶されていることとする。メモリ２５から読み出されたｆ（Ｘ１）のデータは、データ変換部２４データ変換回路３５及びデータ変換回路３６に入力される。
【００３７】
データ変換回路３５は、入力されたデータを関数ｆ−１で変換し、データ選択回路３４に出力する。すなわち、データ変換回路３５は、データ変換回路３２の関数ｆの逆関数ｆ−１により逆変換を行う。このため、データ変換回路３５からは、元のデータＸ１がデータ選択回路３７に出力される。
【００３８】
一方、データ変換回路３６は、入力されたデータを関数ｇ−１で変換し、データ選択回路３７に出力する。データ変換回路３６は、データ変換回路３３の関数ｇの逆関数ｇ−１により逆変換を行う。このため、データ変換回路３６からは、ｇ−１（ｆ（Ｘ１））のデータがデータ選択回路３７に出力される。
【００３９】
データ選択回路３７は、変換方式判定回路２０からの選択信号に基づいて、データ変換回路３５またはデータ変換回路３６からの出力を選択し、不揮発性メモリ１４からバス１８上に出力する。上述したように、アドレスＡ０〜Ａ９が変換方式判定回路２０に入力された場合、データ選択回路３７は、変換方式判定回路２０からの選択信号に基づき、データ変換回路３５からの出力を選択する。一方、アドレスＡ１０〜Ａ１９が変換方式判定回路２０に入力された場合、データ選択回路３７は、変換方式判定回路２０からの選択信号に基づき、データ変換回路３６からの出力を選択する。
【００４０】
すなわち、例えば、アドレスＡ１が不揮発性メモリ１４に入力された場合、データ変換回路３５の出力である元のデータＸ１が不揮発性メモリ１４から読み出される。一方、アドレスＡ１１が不揮発性メモリ１４に入力された場合、データ変換回路３６の出力であるｇ−１（ｆ（Ｘ１））のデータが不揮発性メモリ１４から読み出される。
【００４１】
例えば、演算等で使用する秘密性が低く、直ちにそのデータを使用する必要があるデータについては、関数ｆにより変換してメモリ２５に記憶した後、読み出す際に逆関数ｆ−１により逆変換を行って元のデータに戻してから読み出す。あるいは、データを関数ｇにより変換してメモリ２５に記憶した後、読み出す際に逆関数ｇ−１により逆変換を行って元のデータに戻してから読み出す。これにより、読み出したデータを直ちに演算等に使用することができる。
【００４２】
一方、暗号鍵等の秘密性が高いデータについては、関数ｆにより変換してメモリ２５に記憶した後、読み出す際に関数ｇ−１により変換を行って読み出す。あるいは、データを関数ｇにより変換してメモリ２５に記憶した後、読み出す際に関数ｆ−１により変換を行って読み出す。これにより、不揮発性メモリ１４からは、ｇ−１（ｆ（Ｘ１））のデータ、あるいは、ｆ−１（ｇ（Ｘ１））のデータが読み出される。ＣＰＵ１１は、このように読み出したデータをバス１８を介して、例えば、周辺回路の暗号器１５に転送する。このとき、バス１８には、元のデータＸ１とは異なる形式に変換されたデータ、ここでは、ｇ−１（ｆ（Ｘ１））またはｆ−１（ｇ（Ｘ１））が転送されるため、電力解析攻撃や電磁波解析攻撃に対して耐性を持たせることが可能となる。
【００４３】
ここで、暗号器１５の詳細な構成について、図４を用いて説明する。図４は、暗号器の詳細な構成を説明するための図である。
【００４４】
図４に示すように、暗号器１５は、変換方式判定回路４０と、変換部４１と、暗号処理を行う暗号処理回路４５とを有して構成されている。変換部４１は、データ変換回路４２と、データ変換回路４３と、データ選択回路４４とを有して構成されている。
【００４５】
変換方式判定回路４０は、入力されたアドレスから変換方式を決定し、選択信号を変換部４１のデータ選択回路４４に出力する。例えば、変換方式判定回路４０は、アドレスＡ０〜Ａ９が入力された場合、データ変換回路４３の出力を選択するための選択信号をデータ選択回路４４に出力する。一方、変換方式判定回路４０は、アドレスＡ１０〜Ａ１９が入力された場合、データ変換回路４２の出力を選択するための選択信号をデータ選択回路４４に出力する。
【００４６】
データ変換回路４２は、入力されたデータを関数ｇで変換し、変換されたデータをさらに関数ｆ−１で変換し、データ選択回路４４に出力する。すなわち、データ変換回路４２は、ｇ−１（ｆ（Ｘ１））のデータが入力された場合、関数ｇ−１の逆関数ｇにより逆変換することで、ｆ（Ｘ１）のデータを得る。その後、データ変換回路４２は、関数ｆの逆関数ｆ−１により逆変換することで、元のデータＸ１を得て、データ選択回路４４に出力する。このように、データ変換回路４２は、関数ｇ−１（ｆ（Ｘ））の逆関数ｆ−１（ｇ（Ｘ））により逆変換を行う。
【００４７】
一方、データ変換回路４３は、入力されたデータを関数ｆで変換し、変換されたデータをさらに関数ｇ−１で変換し、データ選択回路４４に出力する。すなわち、データ変換回路４３は、ｆ−１（ｇ（Ｘ１））のデータが入力された場合、関数ｆ−１の逆関数ｆにより変換することで、ｇ（Ｘ１）のデータを得る。その後、データ変換回路４３は、関数ｇの逆関数ｇ−１により変換することで、元のデータＸ１を得て、データ選択回路４４に出力する。このように、データ変換回路４３は、関数ｆ−１（ｇ（Ｘ））の逆関数ｇ−１（ｆ（Ｘ））により変換を行う。
【００４８】
データ選択回路４４は、変換方式判定回路４０からの選択信号に基づいて、データ変換回路４２及びデータ変換回路４３の出力のいずれか一方を選択し、暗号処理回路４５に出力する。この結果、データ選択回路４４からは、元のデータＸ１が復号されて暗号処理回路４５に入力され、所定の暗号処理等が行われる。
【００４９】
このように、メモリアドレスと周辺回路のアドレスとを対応付け、変換方式を対応させることで、周辺回路である暗号器１５で元のデータＸ１を得る。なお、周辺回路として暗号器１５を用いて説明したが、複数の周辺回路を有する場合、それぞれの周辺回路に対してメモリアドレスを割り当て、その周辺回路に転送するデータは、それぞれの対応するアドレスから読み出すようにしてもよい。この結果、周辺回路毎に変換方式を変更することができ、より安全にデータの転送を行うことができる。
【００５０】
次に、このように構成されたデータ処理装置の動作について説明する。  
【００５１】
図５は、データ処理装置内のデータの流れを説明するための図である。
【００５２】
まず、入出力端子１７及び送受信Ｉ／Ｆ回路１６により外部から送信された秘密性の高いデータＸ１は、ＣＰＵ１１に取り込まれる。ＣＰＵ１１は、アドレス及びデータＸ１を不揮発性メモリ１４に転送することで、メモリ２５の所定のデータ格納領域にデータを格納する。
【００５３】
データＸ１は、変換部２１のデータ変換回路３２において、関数ｆにより変換され、ｆ（Ｘ１）のデータが得られる。また、データＸ１は、変換部２１のデータ変換回路３３において、関数ｇにより変換され、ｇ（Ｘ１）のデータが得られる。このように得られたデータは、入力されたアドレスに基づいて、いずれか一方が選択されメモリ２５に出力される。例えば、アドレスＡ１が入力された場合、データ変換回路３２の出力が選択され、ｆ（Ｘ１）のデータがメモリ２５に出力され、アドレスＡ１のデータ格納領域に記憶されることになる（破線矢印５０）。
【００５４】
次に、ＣＰＵ１１は、メモリ２５に記憶されたデータを読み出す場合、読み出すデータが記憶されているアドレスを不揮発性メモリ１４に出力する。本実施形態では、メモリ２５の同一のデータ格納領域に複数のアドレスが割り当て割れている。例えば、アドレスＡ１のデータ格納領域には、アドレスＡ１及びアドレスＡ１１が割り当てられている。そのため、ＣＰＵ１１は、アドレスＡ１またはアドレスＡ１１を不揮発性メモリ１４に出力することで、アドレスＡ１のデータ格納領域に格納されているｆ（Ｘ１）のデータを読み出す。
【００５５】
ｆ（Ｘ１）のデータは、変換部２１のデータ変換回路３５において、関数ｆ−１により変換され、元のデータＸ１が得られる。また、ｆ（Ｘ１）のデータは、変換部２１のデータ変換回路３６において、関数ｇ−１により変換され、ｇ−１（ｆ（Ｘ１））のデータが得られる。このように得られたデータは、入力されたアドレスに基づいて、いずれか一方が選択され、ＣＰＵ１１に転送される。例えば、アドレスＡ１１が入力された場合、データ変換回路３６の出力が選択され、ｇ−１（ｆ（Ｘ１））のデータがバス１８を介してＣＰＵ１１に転送される（破線矢印５１）。
【００５６】
次に、ＣＰＵ１１は、読み出したｇ−１（ｆ（Ｘ１））のデータを周辺回路の暗号器１５にバス１８を介して転送する。ｇ−１（ｆ（Ｘ１））のデータは、データ変換回路４２及びデータ変換回路４３に入力される。データ変換回路４２では、関数ｇ−１（ｆ（Ｘ））の逆関数ｆ−１（ｇ（Ｘ））で変換を行うことにより、元のデータＸ１を得る。一方、データ変換回路４３では、ｇ−１（ｆ（Ｘ１））のデータを関数ｇ−１（ｆ（Ｘ））で変換して、所定のデータを得る。このように得られたデータは、入力されたアドレスに基づいて、いずれか一方が選択され、暗号処理回路４５に出力される。例えば、アドレスＡ１１が入力された場合、データ変換回路４２の出力が選択され、元のデータＸ１が暗号処理回路４５に出力される（破線矢印５２）。
【００５７】
このように、データ処理装置１は、複数のデータ変換回路をメモリ２５のインターフェースに配置し、同じデータ格納領域に対して複数のアドレスを割り当て、各アドレス毎に異なる変換方式でデータを変換するようにしている。これにより、ＣＰＵ１１は、メモリ２５にアクセスする際のアドレスを制御することで、メモリ２５への書き込みデータと、メモリ２５からの読み出しデータを元のデータとは異なる形式に変換することができる。
【００５８】
この結果、データ処理装置１は、ＣＰＵ１１が不揮発性メモリ１４から秘密性の高いデータを読み出した際にも、バス１８上に元のデータとは異なる形式に変換されたデータが転送されることになるため、電力解析攻撃や電磁波解析攻撃に対して耐性を持たせることが可能となる。
【００５９】
よって、本実施形態のデータ処理装置によれば、ＣＰＵの転送経路が攻撃のターゲットとなった場合でも、サイドチャンネル攻撃に対して耐性を確保することができる。
【００６０】
なお、本実施形態では、所定の関数でデータを変換するデータ変換回路を用いて処理を行っているが、これに限定されることなく、例えば、暗号鍵とデータを用いて処理を行う暗号回路を用いてもよい。このとき、アドレスに応じて暗号鍵を変更する、あるいは、暗号方式を変更するようにしてもよい。また、データの書き込み毎に暗号鍵及び暗号方式の割り当てを変更するようにしてもよい。例えば、電源投入毎に乱数等を用いて暗号鍵を生成する、あるいは、乱数等によって暗号方式を変更することが可能である。
（変形例）  
次に、変形例について説明する。  
【００６１】
図６は、変形例に係る変換部の詳細な構成を説明するための図である。なお、図６において、図３と同様の構成については、同一の符号を付して説明を省略する。
【００６２】
図６に示すように、不揮発性メモリ１４ａの変換部２１ａは、図３の変換部２１のデータ変換部２３及びデータ変換部２４に代わり、それぞれデータ変換部２３ａ及びデータ変換部２４ａを用いて構成されている。
【００６３】
データ変換部２３ａは、図３のデータ変換回路３３が削除されるとともに、データ変換回路３２に代わりデータ変換回路３２ａを用いて構成されている。また、データ変換部２４ａは、図３のデータ変換回路３６が削除されるとともに、データ変換回路３５に代わりデータ変換回路３５ａを用いて構成されている。
【００６４】
データ変換回路３２ａは、入力されたデータＸ１を関数ｈで４回変換し、ｈ４（Ｘ１）のデータをデータ選択回路３４に出力する。この関数ｈは、あるデータをこの関数ｈで５回変換すると元のデータに復号することができる関数である。この結果、例えば、メモリ２５のアドレスＡ１にｈ４（Ｘ１）のデータが格納される。
【００６５】
なお、データＸ１を関数ｈで４回変換する方式は、これに限定されることなく、例えば、データＸ１を関数ｈで変換し、メモリ２５に格納した後、メモリ２５から読み出してデータ変換回路３２ａにおいて関数ｈで変換することを繰り返し、ｈ４（Ｘ１）のデータを得るようにしてもよい。
【００６６】
メモリ２５からｈ４（Ｘ１）のデータを読み出すと、読み出されたｈ４（Ｘ１）のデータは、データ変換回路３５ａ及びデータ選択回路３７に入力される。データ変換回路３５ａは、ｈ４（Ｘ１）のデータを関数ｈで１回変換し、元のデータＸ１を得て、データ選択回路３７に出力する。すなわち、データ選択回路３７には、元のデータＸ１とｈ４（Ｘ１）のデータとが入力される。
【００６７】
データ選択回路３７は、変換方式判定回路２０からの選択信号に基づいて、いずれか一方の入力を選択して出力する。例えば、データ選択回路３７は、読み出しアドレスとしてアドレスＡ１が入力された場合、選択信号に基づいて、データ変換回路３５ａの出力、すなわち、元のデータＸ１を選択する。一方、データ選択回路３７は、読み出しアドレスとしてアドレスＡ１１が入力された場合、選択信号に基づいて、メモリ２５の出力、すなわち、ｈ４（Ｘ１）のデータを選択する。
【００６８】
周辺回路の暗号器１５では、ｈ４（Ｘ１）のデータに対して関数ｈで１回変換することで、元のデータＸ１を得ることができる。これにより、上述した実施形態と同様に、秘密性の高いデータは、元のデータとは異なる変換して転送することができる。
【００６９】
よって、変形例のデータ処理装置によれば、上述した実施形態と同様に、ＣＰＵの転送経路が攻撃のターゲットとなった場合でも、サイドチャンネル攻撃に対して耐性を確保することができる。
【００７０】
発明のいくつかの実施の形態を説明したが、これらの実施の形態は、例として提示したものであり、発明の範囲を限定することは意図していない。これら新規な実施の形態は、その他の様々な形態で実施されることが可能であり、発明の要旨を逸脱しない範囲で、種々の省略、置き換え、変更を行うことができる。これら実施の形態やその変形は、発明の範囲や要旨に含まれるとともに、特許請求の範囲に記載された発明とその均等の範囲に含まれる。
【符号の説明】
【００７１】
１…データ処理装置、１１…ＣＰＵ、１２…ＲＯＭ、１３…ＲＡＭ、１４…不揮発性メモリ、１５…暗号器、１６…送受信Ｉ／Ｆ回路、１７…入出力端子、１８…バス、２０，４０…変換方式判定回路、２１，４１…変換部、２２…アドレス変換部、２３，２４…データ変換部、２５…メモリ、３１…アドレス圧縮回路、３２，３３，３５，３６，４２，４３…データ変換回路、３４，３７，４４…データ選択回路、４５…暗号処理回路。
【図１】
2017163277.tif 000003
【図２】
2017163277.tif 000004
【図３】
2017163277.tif 000005
【図４】
2017163277.tif 000006
【図５】
2017163277.tif 000007
【図６】
2017163277.tif 000008