(57)【要約】【課題】ＤＥＳやＡＥＳなどの暗号アルゴリズムの攻撃法の１つであるＤＰＡに対して耐性を有する暗号化装置を提供する。【解決手段】本発明の暗号化装置は、第１および第２のメモリ（メモリＡおよびメモリＢ）をアクセスするアドレスをランダムに入れ替えるアドレス生成装置（装置Ａおよび装置Ｂ）によって生成されるアドレスに基づいて、第１のメモリから入力データを読み出してキャッシュ機構に入力し、キャッシュ機構から入力データを暗号処理装置に入力し、暗号処理装置によって入力データを暗号化し、暗号処理装置から出力される出力データをキャッシュ機構に入力し、キャッシュ機構から出力データを読み出して第２のメモリに書き込むことを、全アドレスについて繰り返し行う。【選択図】図１
2007251483.tif 000002
【特許請求の範囲】
【請求項１】
入力データを暗号化し、暗号化後の出力データを出力する暗号処理装置と、
前記暗号処理装置によって暗号化されていない入力データが入力された場合、該入力データを前記暗号処理装置に入力して、前記入力データと前記暗号処理装置から入力される出力データとを対応付けて保持し、前記暗号処理装置によって既に暗号化されている入力データが入力された場合、該入力データを前記暗号処理装置に入力せず、既に保持されている出力データを出力するキャッシュ機構と、
乱数データを発生する乱数発生器と、
前記キャッシュ機構に入力される入力データを格納し、該入力データが所定ワード数よりも少ない場合、不足分の前記入力データのダミーデータとして、前記乱数発生器によって発生された乱数データを格納する第１のメモリと、
前記キャッシュ機構から出力される出力データを格納する第２のメモリと、
前記乱数発生器から入力された乱数データに基づいて、前記第１および第２のメモリの全アドレスにわたって、該第１および第２のメモリをアクセスするアドレスをランダムに入れ替える処理を行うアドレス生成装置とを備え、
前記アドレス生成装置によって生成されるアドレスに基づいて、前記第１のメモリから入力データを読み出して前記キャッシュ機構に入力し、該キャッシュ機構から入力データを前記暗号処理装置に入力し、該暗号処理装置によって入力データを暗号化し、前記暗号処理装置から出力される出力データを前記キャッシュ機構に入力し、該キャッシュ機構から出力データを読み出して前記第２のメモリに書き込む暗号化処理を、前記全アドレスについて繰り返し行うことを特徴とする暗号化装置。
【請求項２】
前記キャッシュ機構は、前記アドレス生成装置から入力されるアドレスと前記入力データの個数とを比較して、前記入力データがダミーデータであると判断した場合、当該入力データと、これに対応する出力データを保持しないことを特徴とする請求項１に記載の暗号化装置。
【請求項３】
前記入力データが所定ワード数よりも多い場合、全ての前記入力データを、所定ワード数の前記入力データからなる複数のブロックに分け、各々の前記ブロックを単位として、上記暗号化処理を繰り返し行うことを特徴とする請求項１または２に記載の暗号化装置。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、ＤＥＳ（Data Encryption Standard）やＡＥＳ（Advanced Encryption Standard）などの標準的な暗号アルゴリズムの攻撃法の１つである差分電力解析（ＤＰＡ：Differential Power Analysis）に対して耐性を有する暗号化装置に関するものである。
【背景技術】
【０００２】
従来、上記のＤＥＳやＡＥＳなどの標準的な暗号アルゴリズムに対する攻撃法の１つとして、例えば非特許文献１に開示されているように、ＤＰＡと呼ばれる暗号解析法が知られている。
【０００３】
ＤＰＡは、暗号処理装置により生成される暗号文と、この暗号文を生成する際の暗号処理装置における消費電力とを組にしたデータを数千組サンプルし、そのデータに基づいた統計処理を行うことによって暗号鍵を解析するものであり、対策が非常に困難な攻撃である。ＤＰＡでは、上記の統計処理を行う際に、暗号処理装置の出力である暗号文から、暗号処理装置内に現れる内部データを推定する。
【０００４】
これを回避するための従来技術としては、特許文献１に開示されている"Masking Method"（固定マスク値法）や、非特許文献２に開示されている“Duplication Method”などが有名である。また、ＤＰＡを回避するための従来技術として、特許文献２に開示されているように、暗号化を行う度に内部回路を変更し、消費電力の統計的解析を困難にする方策などが知られている。
【０００５】
【特許文献１】特開２００２−３６６０２９号公報
【特許文献２】特開平１３−２６８０７１号公報
【非特許文献１】Paul Kocher, Joshua Jaffe, Benjamin Jun、“Differential Power Analysis”、[online]、Cryptography Research, Inc.、[平成１８年２月２７日検索]、インターネット＜URL : http://www.cryptography.com/resources/whitepapers/DPA.pdf＞
【非特許文献２】“耐タンパー性に関する標準化調査研究開発  実証実験  報告書  第二部”、ｐ５４〜７８、“第３章  ３．３  GoubinらによるＤＰＡ対策のソフトウェア実装”、[online]、平成１６年３月、財団法人  日本規格協会、情報技術標準化研究センター、株式会社  東芝、[平成１８年２月２７日検索]、インターネット＜URL : http://www.jsa.or.jp/domestic/instac/committe/H15report/report-contents/01_06_02.PDF＞
【発明の開示】
【発明が解決しようとする課題】
【０００６】
しかしながら、特許文献１の"Masking Method"や、非特許文献２の“Duplication Method”は、暗号処理装置が実装している暗号アルゴリズムを熟知していなければ実装できない。特に、“Duplication Method”については、暗号アルゴリズムによっては実装手段があるかどうかも保証できない。また、両技術ともに既存の暗号処理装置の内部を変更しないと該技術を実装できず、既存の資産を有効に利用できない。
【０００７】
また、特許文献２に関しては、回路の書き替えに時間がかかるため、結果として暗号化処理に要する時間が非常に長くなり、実用的であるとは言えない。
【０００８】
本発明の目的は、前記従来技術に基づく問題点を解消し、ＤＥＳやＡＥＳなどの暗号アルゴリズムの攻撃法の１つであるＤＰＡに対して耐性を有する暗号化装置を提供することにある。
【課題を解決するための手段】
【０００９】
上記目的を達成するために、本発明は、入力データを暗号化し、暗号化後の出力データを出力する暗号処理装置と、
前記暗号処理装置によって暗号化されていない入力データが入力された場合、該入力データを前記暗号処理装置に入力して、前記入力データと前記暗号処理装置から入力される出力データとを対応付けて保持し、前記暗号処理装置によって既に暗号化されている入力データが入力された場合、該入力データを前記暗号処理装置に入力せず、既に保持されている出力データを出力するキャッシュ機構と、
乱数データを発生する乱数発生器と、
前記キャッシュ機構に入力される入力データを格納し、該入力データが所定ワード数よりも少ない場合、不足分の前記入力データのダミーデータとして、前記乱数発生器によって発生された乱数データを格納する第１のメモリと、
前記キャッシュ機構から出力される出力データを格納する第２のメモリと、
前記乱数発生器から入力された乱数データに基づいて、前記第１および第２のメモリの全アドレスにわたって、該第１および第２のメモリをアクセスするアドレスをランダムに入れ替える処理を行うアドレス生成装置とを備え、
前記アドレス生成装置によって生成されるアドレスに基づいて、前記第１のメモリから入力データを読み出して前記キャッシュ機構に入力し、該キャッシュ機構から入力データを前記暗号処理装置に入力し、該暗号処理装置によって入力データを暗号化し、前記暗号処理装置から出力される出力データを前記キャッシュ機構に入力し、該キャッシュ機構から出力データを読み出して前記第２のメモリに書き込む暗号化処理を、前記全アドレスについて繰り返し行うことを特徴とする暗号化装置を提供するものである。
【００１０】
ここで、前記キャッシュ機構は、前記アドレス生成装置から入力されるアドレスと前記入力データの個数とを比較して、前記入力データがダミーデータであると判断した場合、当該入力データと、これに対応する出力データを保持しないことが好ましい。
【００１１】
また、前記入力データが所定ワード数よりも多い場合、全ての前記入力データを、所定ワード数の前記入力データからなる複数のブロックに分け、各々の前記ブロックを単位として、上記暗号化処理を繰り返し行うことが好ましい。
【発明の効果】
【００１２】
本発明によれば、暗号処理装置の暗号アルゴリズムを知らなくても、ＤＰＡの対策が可能である。また、既存の暗号処理装置の内部を変更する必要がないため、これまでの設計資産を有効に活用することができる。また、回路の書き替えが不要なため、ある一定以上の数のまとまった入力データを暗号化処理する場合は、処理時間を増加させることなくＤＰＡ対策が可能である。
【発明を実施するための最良の形態】
【００１３】
以下に、添付の図面に示す好適実施形態に基づいて、本発明の暗号化装置を詳細に説明する。
【００１４】
図１は、本発明の暗号化装置の構成を表す一実施形態のブロック概略図である。同図に示す暗号化装置１０は、第１のメモリ（メモリＡ）１２と、第２のメモリ（メモリＢ）１４と、暗号処理装置１６と、キャッシュ機構１８と、乱数発生器２０と、第１の装置（装置Ａ）２２と、第２の装置（装置Ｂ）２４と、制御装置（ＣＰＵ：中央処理装置）２６とによって構成されている。
【００１５】
第１のメモリ１２は、キャッシュ機構１８に入力される暗号化前の入力データを格納する半導体記憶装置である。また、第２のメモリ１４は、キャッシュ機構１８から出力される暗号化後の出力データを格納する半導体記憶装置である。本実施形態では、第１のメモリ１２に格納される暗号化処理対象の入力データ数（入力データのワード数）をＮとし、第１および第２のメモリ１２，１４に格納可能な最大データ数（格納可能な最大ワード数）をＮ’＝１０２４とする（Ｎ≦Ｎ’）。
【００１６】
続いて、暗号処理装置１６は、ＤＥＳやＡＥＳなどの標準的な暗号アルゴリズムに基づいて、キャッシュ機構１８から入力される入力データを暗号化し、暗号化後の出力データをキャッシュ機構１８に出力する。
【００１７】
キャッシュ機構（キャッシュメモリおよびキャッシュコントローラを含む）１８は、暗号処理装置１６が何度も繰り返して同一値の入力データを暗号化しないように、暗号処理装置１６によって入力データを暗号化した時に、第１のメモリ１２から入力される入力データと、暗号処理装置１６から入力される出力データ（入力データに対応する出力データ）とを対応付けて保持する。
【００１８】
ここで、キャッシュ機構１８を設けていないと、入力データに同一値が含まれる場合に、攻撃者に後述する順序の入れ替え方に関する手掛かりを与える可能性がある。すなわち、暗号文（本暗号化装置１０の出力）に同一値が含まれていた場合、電力消費パターンが似ているＮ箇所のタイミングを見つければ、そのタイミングで、そのデータが処理されていたことを知られてしまう。
【００１９】
言い換えると、キャッシュ機構１８を設けることによって、攻撃者に、順序の入れ替え方に関する手掛かりを与えることを防止することができる。また、キャッシュ機構１８を設けることによって、暗号処理装置１６が何度も繰り返して同一値の入力データを暗号化するのを防止することができる。また、キャッシュ機構１８を設けることによって、処理時間を短縮する効果も得られる。
【００２０】
乱数発生器２０は、乱数データＲを発生する。第１のメモリ１２に格納される入力データ数Ｎが、最大データ数Ｎ’（＝１０２４）よりも少ない場合、その不足分の（Ｎ’−Ｎ）個（ワード）の入力データのダミーデータとして、乱数データＲが第１のメモリ１２に格納される。また、乱数データＲは、後述するように、第２の装置２４が、第１の装置２２によって生成されたアドレスを変換する時にも使用される。
【００２１】
第１の装置２２は、第１のメモリ１２から入力データを読み出し、第２のメモリ１４に出力データを書き込む時に使用するアドレスＡＤＲ１を生成する、キャッシュ機構１８に入力データを書き込む、キャッシュ機構１８に暗号化開始コマンドを発行する、キャッシュ機構１８から出力データを読み出す、などの処理を行う。第１の装置２２は、第１のメモリ１２をアドレスの昇順、すなわち、０番地〜１０２３番地の順にアクセスする。
【００２２】
なお、第１の装置２２が、第１のメモリ１２をアドレスの降順、すなわち、１０２３番地〜０番地の順にアクセスするように構成しても良い。
【００２３】
第２の装置２４は、乱数発生器２０から入力される乱数データＲに基づいて、第１の装置２２から入力されるアドレスＡＤＲ１をアドレスＡＤＲ２に変換する。言い換えると、第２の装置２４は、アドレスＡＤＲ１が０〜１０２３まで変化する時に、その順序を入れ替える処理を行う。すなわち、アドレスＡＤＲ２は、アドレスＡＤＲ１が０〜１０２３まで変化した時に、その順序は異なるが、全アドレス０〜１０２３を１つずつ含む。
【００２４】
これら第１および第２の装置２２，２４は、本発明のアドレス生成装置を構成する。本発明に関わるアドレス生成装置は、乱数発生器から入力された乱数データに基づいて、第１および第２のメモリの全アドレスにわたって、第１および第２のメモリをアクセス（読み出しおよび書き込み）するアドレスをランダムに入れ替える処理を行うものであれば、その具体的な構成は何ら限定されない。
【００２５】
制御装置２６は、第１のメモリ１２にＮ個の入力データを書き込む、乱数発生器２０から（Ｎ’−Ｎ）個の乱数データＲを読み出して、第１のメモリ１２に入力データのダミーデータとして書き込む、乱数発生器２０から１個の乱数データＲを読み出して、第２の装置２４に入力する、第１の装置２２に暗号化処理の開始を指示する、などの暗号化装置１０全体の動作制御を行う。
【００２６】
第１および第２のメモリ１２，１４、キャッシュ機構１８、乱数発生器２０、第２の装置２４、制御装置２６は、システムバス２８を介して相互に接続されている。また、第１の装置２２は第２の装置２４に接続され、第２の装置２４を介してシステムバス２８と接続されている。同様に、暗号処理装置１６はキャッシュ機構１８に接続され、キャッシュ機構１８を介してシステムバス２８と接続されている。
【００２７】
次に、暗号化装置１０の動作を説明する。
【００２８】
暗号化処理を行う場合、制御装置２６が、暗号化処理対象となるＮ個の入力データを、アドレス０から昇順に第１のメモリ１２に書き込む。すなわち、第１のメモリ１２には、そのアドレス０〜（Ｎ−１）番地まで入力データが書き込まれる。
【００２９】
ここで、Ｎ＜Ｎ’（Ｎ’＝１０２４）である場合、制御装置２６が、乱数発生器２０から（Ｎ’−Ｎ）個の乱数データＲを読み出し、読み出した乱数データＲを、入力データのダミーデータとして、アドレスＮ番地から昇順にアドレス（Ｎ’−１）番地まで第１のメモリ１２に書き込む。すなわち、第１のメモリ１２には、その最大データ数Ｎ’個の入力データ（ダミーデータを含む）が書き込まれる。
【００３０】
続いて、制御装置２６が、乱数発生器２０から１個の乱数データＲを読み出し、これを第２の装置２４に書き込む。また、制御装置２６は、最大データ数Ｎ’を、第１および第２の装置２２，２４に書き込み、入力データ数Ｎを、キャッシュ機構１８に書き込む。
【００３１】
なお、第２の装置２４に書き込む乱数データＲの個数は１個に限らず、２個以上の乱数データＲを書き込んでも良い。この場合、複数の乱数データＲを順次入れ替えて使用したり、複数の乱数データＲを組み合わせて使用するなど、どのように使用しても良い。
【００３２】
その後、制御装置２６は、第１の装置２２に処理開始コマンドを発行する。これに応じて、第１の装置２２は、内部変数であるアドレスＡＤＲ１を０に初期化し、このアドレスＡＤＲ１を第２の装置２４に出力する。
【００３３】
第２の装置２４は、第１の装置２２からアドレスＡＤＲ１を受け取ると、制御装置２６から書き込まれた乱数データＲに基づいて、アドレスＡＤＲ１をアドレスＡＤＲ２に変換する。前述の通り、アドレスＡＤＲ２は、アドレスＡＤＲ１が０〜１０２３まで変化した時に、０〜１０２３の値を１つずつ含む（アドレスＡＤＲ１の順序を入れ替える）。第２の装置２４から出力されるアドレスＡＤＲ２は、第１および第２のメモリ１２，１４、ならびに、キャッシュ機構１８に入力される。
【００３４】
続いて、第１の装置２２から第１のメモリ１２に入力データの読み出しコマンドが発行され、第１のメモリ１２から、そのアドレスＡＤＲ２に格納されている入力データが読み出される。その後、第１の装置２２によって、第１のメモリ１２から読み出された入力データがキャッシュ機構１８に入力され、さらに、第１の装置２２からキャッシュ機構１８に暗号化開始コマンドが発行される。
【００３５】
キャッシュ機構１８は、暗号処理装置１６によって暗号化されていない入力データが入力された場合、入力データを暗号処理装置１６に入力して、この入力データと暗号処理装置１６から入力される出力データ（入力データに対応する出力データ）とを対応付けて保持する。一方、暗号処理装置１６によって既に暗号化されている入力データが入力された場合、その入力データを暗号処理装置１６に入力せず、既に保持されている出力データ（入力データに対応する出力データ）を出力する。
【００３６】
なお、キャッシュ機構１８は、アドレスＡＤＲ２と暗号化処理対象の入力データの個数Ｎとを比較して、入力データがダミーデータであると判断した場合（すなわち、アドレスＡＤＲ２≧Ｎの場合）、この入力データと、これに対応する出力データを保持しない。その理由は、ダミーデータを暗号化した出力データは、暗号化装置１０から出力される暗号文として使用されないからであるが、処理時間を短縮する目的から、ダミーデータとその出力データを保持する構成としても良い。
【００３７】
続いて、第１の装置２２からキャッシュ機構１８に出力データの読み出しコマンドが発行され、キャッシュ機構１８から、入力データに対応する出力データが読み出される。その後、第１の装置２２によって、キャッシュ機構１８から読み出された出力データが第２のメモリ１４に入力され、さらに、第１の装置２２から第２のメモリ１４に出力データの書き込みコマンドが発行される。
【００３８】
第２のメモリ１４には、前述の通り、第２の装置２４から出力されるアドレスＡＤＲ２が入力されている。従って、第２のメモリ１４のアドレスＡＤＲ２に出力データが書き込まれる。すなわち、第１のメモリ１２の各々のアドレスに格納されている入力データが、暗号処理装置１６によって暗号化されて得られる出力データは、第２のメモリ１４の同一アドレスに格納される。
【００３９】
続いて、第１の装置２２において、アドレスＡＤＲ１が１つ増加される（ＡＤＲ１＝ＡＤＲ１＋１）。これ以降は、アドレスＡＤＲ１が、第１および第２の最大データ数Ｎ’−１である１０２３になるまで、上記暗号化処理が繰り返し行われる。
【００４０】
なお、入力データ数Ｎが１０２４よりも多い場合、全入力データ数Ｎを１０２４の入力データからなる複数のブロックに分け、各々のブロックを単位として、上記暗号化処理が繰り返し行われる。
【００４１】
暗号化装置１０では、第１および第２の装置２２，２４（アドレス生成装置）によって、暗号化処理対象の入力データ群が、その処理順序を入れ替えられ、暗号処理装置１６によって順次暗号化される。なお、同一値を持つ入力データの暗号処理に関しては、その処理順序を入れ替えても効果がないため、暗号化装置１０は、２回以上同じ入力データが暗号処理されないようにキャッシュ機構１８を備えている。
【００４２】
また、暗号処理対象のデータ数が少ない場合でも安全性を確保できるように、ある一定数（所定ワード数）未満の入力データを暗号化する際には、処理対象の入力データ群にダミーデータを挿入し、充分な数の入力データに対して入れ替え処理を行うことができる。なお、入力データのワード数を多くするに従って安全性は高くなるが、処理時間が増大するので、安全性のレベルを考慮して適宜決定するのが好ましい。
【００４３】
以上説明したように、暗号化装置１０では、暗号処理装置の暗号アルゴリズムを知らなくても、ＤＰＡの対策が可能である。また、既存の暗号処理装置の内部を変更する必要がないため、これまでの設計資産を有効に活用することができる。また、回路の書き替えが不要なため、ある一定以上の数のまとまった入力データを暗号化処理する場合は、処理時間を増加させることなくＤＰＡ対策が可能である。
【００４４】
なお、第１および第２のメモリ１２，１４、暗号処理装置１６、キャッシュ機構１８、乱数発生器２０、第１および第２の装置（アドレス生成装置）２２，２４、制御装置２６の具体的な構成は何ら限定されず、同様の機能を果たす各種構成のものがいずれも利用可能である。また、第１および第２のメモリ１２，１４は、１つの半導体記憶装置で構成することも可能である。
【００４５】
本発明は、基本的に以上のようなものである。
以上、本発明の暗号化装置について詳細に説明したが、本発明は上記実施形態に限定されず、本発明の主旨を逸脱しない範囲において、種々の改良や変更をしてもよいのはもちろんである。
【図面の簡単な説明】
【００４６】
【図１】本発明の暗号化装置の構成を表す一実施形態のブロック概略図である。
【符号の説明】
【００４７】
１０  暗号化装置
１２  第１のメモリ（メモリＡ）
１４  第２のメモリ（メモリＢ）
１６  暗号処理装置
１８  キャッシュ機構
２０  乱数発生器
２２  第１の装置（装置Ａ）
２４  第２の装置（装置Ｂ）
２６  制御装置（ＣＰＵ：中央処理装置）
２８  システムバス
【図１】
2007251483.tif 000003