(57)【要約】【課題】  初期マスク値生成用の回路を用意することなく、暗号化処理または復号処理の開始遅延の発生を防ぐ。【解決手段】  複数個M（M≧2）のブロック暗号処理部202-204は、データユニットに含まれる所定データサイズの一連のブロックのデータをブロック順に暗号化処理または復号処理する。複数個のブロック暗号処理部202-204は、ブロック順の処理を繰り返してデータユニットを暗号かまたは復号する。n回目（n≧1）の繰り返しにおいてnM番目（nM＜N、Nはブロック数）のブロックのデータを処理するブロック暗号処理部は、データユニットの処理の開始ごとに暗号化または復号に用いる初期マスク値を生成する。【選択図】  図2
2015156013.tif 000002
【特許請求の範囲】
【請求項１】
データユニットに含まれる所定データサイズの一連のブロックのデータをブロック順に暗号化処理または復号処理する複数個M（M≧2）の暗号処理手段を有し、
前記複数個の暗号処理手段は、前記ブロック順の処理を繰り返して前記データユニットを暗号化または復号し、
n回目（n≧1）の前記繰り返しにおいてnM番目（nM＜N、Nはブロック数）のブロックのデータを処理する第一の暗号処理手段は、データユニットの処理の開始ごとに前記暗号化または復号に用いる初期マスク値を生成する情報処理装置。
【請求項２】
さらに、前記初期マスク値を生成するための調整値および前記ブロックのデータを入力して、前記調整値を前記第一の暗号処理手段に出力するとともに、前記ブロックのデータを前記複数個の暗号処理手段に出力する入力手段を有し、
前記複数個の暗号処理手段は、前記入力手段が出力するブロックのデータを順に入力する請求項1に記載された情報処理装置。
【請求項３】
さらに、共通鍵暗号の第一の鍵または前記初期マスク値の生成用の第二の鍵を選択的に、前記第一の暗号処理手段に出力する第一の選択手段を有する請求項1または請求項2に記載された情報処理装置。
【請求項４】
さらに、前記初期マスク値に基づき各ブロックのデータの暗号化処理または復号処理に用いるマスク値を生成する生成手段を有する請求項1から請求項3の何れか一項に記載された情報処理装置。
【請求項５】
前記複数個の暗号処理手段はそれぞれ、
入力データと前記マスク値の排他的論理和値を演算する第一の演算部と、
前記第一または第二の鍵を用いて前記排他的論理和値に暗号化処理または復号処理を施す暗号処理部と、
前記暗号化処理または復号処理された排他的論理和値と前記マスク値の排他的論理和値を演算する第二の演算部とを有する請求項4に記載された情報処理装置。
【請求項６】
前記生成手段は、
マスク値を保持する保持手段と、
前記保持手段が保持するマスク値に定数を乗算したマスク値を計算する乗算手段と、
前記保持手段が保持するマスク値を前記定数でM-1回の除算を行ったマスク値を計算する除算手段と、
前記保持手段が保持すべきマスク値を前記初期マスク値、前記乗算手段が計算したマスク値、または、前記除算手段が計算したマスク値から選択する第二の選択手段と、
前記マスク値として、前記データユニットの処理の開始時はゼロを出力し、前記ブロック順の処理時は前記保持手段が保持するマスク値を出力する出力手段とを有する請求項5に記載された情報処理装置。
【請求項７】
前記乗算手段は、前記第一の演算部の演算ごとに、または、前記第二の演算部の演算ごとに前記乗算を行う請求項6に記載された情報処理装置。
【請求項８】
前記除算手段は、前記複数個の暗号化処理手段すべての前記第一の演算部の演算が終了した後、前記除算を行う請求項6または請求項7に記載された情報処理装置。
【請求項９】
前記第二の選択手段は、前記データユニットの処理の開始時は前記初期マスク値を前記保持手段に保持させ、前記ブロック順の処理ごとに、前記乗算手段または前記除算手段によって計算されたマスク値によって前記保持手段が保持するマスク値を更新する請求項6から請求項8の何れか一項に記載された情報処理装置。
【請求項１０】
さらに、前記複数個の暗号処理手段により暗号化処理または復号処理されたデータを前記ブロック順に出力する出力手段を有する請求項1から請求項9の何れか一項に記載された情報処理装置。
【請求項１１】
前記複数個の暗号処理手段はそれぞれ共通鍵暗号方式による暗号化処理または復号処理を行う請求項1から請求項10の何れか一項に記載された情報処理装置。
【請求項１２】
前記ブロックの数Nが前記複数個の暗号処理手段の数Mの倍数ではない請求項1から請求項11の何れか一項に記載された情報処理装置。
【請求項１３】
前記ブロックの数Nを前記複数個の暗号処理手段の数Mで除算した場合の剰余が1である請求項1から請求項12の何れか一項に記載された情報処理装置。
【請求項１４】
前記暗号化処理または復号処理はストレージデバイス用の暗号化処理または復号処理である請求項1から請求項13の何れか一項に記載された情報処理装置。
【請求項１５】
前記暗号化処理または復号処理はXTS-AESまたはXEXのアルゴリズムに基づく暗号化処理または復号処理である請求項1から請求項14の何れか一項に記載された情報処理装置。
【請求項１６】
データユニットに含まれる所定データサイズの一連のブロックのデータをブロック順に暗号化処理または復号処理する複数個M（M≧2）の暗号処理手段を有する情報処理装置の情報処理方法であって、
前記複数個の暗号処理手段が、前記ブロック順の処理を繰り返して前記データユニットを暗号化または復号し、
n回目（n≧1）の前記繰り返しにおいてnM番目（nM＜N、Nはブロック数）のブロックのデータを処理する第一の暗号処理手段が、データユニットの処理の開始ごとに前記暗号化または復号に用いる初期マスク値を生成する情報処理方法。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、暗号処理を行う情報処理に関する。
【背景技術】
【０００２】
ハードディスクなどのストレージデバイスハードディスクなどのストレージデバイスの暗号化アルゴリズムとして、IEEEはXTS-AESを規格化している（非特許文献1）。なお、XTS-AESは、XEX (Xor-encrypt-xor)-based tweaked-codebook mode with ciphertext stealing-Advanced Encryption Standardの略である。また、アメリカ標準技術研究所(NIST)は、XTS-AESをストレージ暗号として推奨している（非特許文献2）。
【０００３】
XTS-AESは、128ビットブロック単位に独立した暗号処理を行うアルゴリズムであり、暗号処理部を並列動作させることで、より高速に暗号処理を行うことができる。
【０００４】
XTS-AESにおいては、128ビットブロック（以下、単に「ブロック」）の暗号処理を開始する前にtweak値から初期マスク値を生成しなければならず、初期マスク値の生成中はブロックの暗号処理を開始することができない。初期マスク値の生成にも暗号処理が必要であるため、初期マスク値生成用の暗号処理回路を別途用意して、ブロックの暗号処理の開始遅延を防ぐ方法が提案されている（特許文献1）。
【０００５】
しかし、初期マスク値生成用の暗号処理回路の追加は回路規模を大きくし、回路規模に制限がある場合は高速化が難しい問題がある。
【先行技術文献】
【特許文献】
【０００６】
【特許文献１】特開2012-009928号公報
【非特許文献】
【０００７】
【非特許文献１】IEEE Std 1619-2007「IEEE Standard for Cryptographic Protection of Data on Block-Oriented Storage Devices」2008年4月
【非特許文献２】NIST SP 800-38E「Recommendation for Block Cipher Modes of Operation: The XTS-AES Mode for Confidentiality on Storage Devices」2010年1月
【発明の概要】
【発明が解決しようとする課題】
【０００８】
本発明は、初期マスク値生成用の回路を用意することなく、暗号化処理または復号処理の開始遅延の発生を防ぐことを目的とする。
【課題を解決するための手段】
【０００９】
本発明は、前記の目的を達成する一手段として、以下の構成を備える。
【００１０】
本発明にかかる情報処理装置は、データユニットに含まれる所定データサイズの一連のブロックのデータをブロック順に暗号化処理または復号処理する複数個M（M≧2）の暗号処理手段を有し、前記複数個の暗号処理手段は、前記ブロック順の処理を繰り返して前記データユニットを暗号化または復号し、n回目（n≧1）の前記繰り返しにおいてnM番目（nM＜N、Nはブロック数）のブロックのデータを処理する第一の暗号処理手段は、データユニットの処理の開始ごとに前記暗号化または復号に用いる初期マスク値を生成する。
【発明の効果】
【００１１】
本発明によれば、初期マスク値生成用の回路を用意することなく、暗号化処理または復号処理の開始遅延の発生を防ぐことができる。
【図面の簡単な説明】
【００１２】
【図１】XTS-AESアルゴリズムの概要を説明するブロック図。
【図２】実施例の情報処理装置の暗号処理部の構成例を示すブロック図。
【図３】ブロック暗号処理部の構成例を示すブロック図。
【図４】マスク値生成部の構成例を示す図ブロック図。
【図５】複数個のブロック暗号処理部の動作を説明する図。
【発明を実施するための形態】
【００１３】
以下、本発明にかかる実施例の情報処理を図面を参照して詳細に説明する。以下では、ストレージデバイス用のXTS-AESアルゴリズムに基づいて暗号処理を行う情報処理装置を例に説明するが、以下の実施の形態は例示であり、本発明の範囲を限定するものではない。また、本実施の形態で説明されている特徴の組み合わせの全てが本発明の解決手段に必須のものとは限らない。
【００１４】
［XTS-AESアルゴリズムの概要］
図1のブロック図によりXTS-AESアルゴリズムの概要を説明する。AES暗号化部101は、共通鍵暗号AES (Advanced Encryption Standard)を用いる暗号処理部で、Key2を鍵（第二の鍵）としてtweak値（調整値または微調整値）を暗号化した結果を初期マスク値として出力する。
【００１５】
乗算器102は、初期マスク値とαjを乗算した結果をマスク値として出力する。ここで、αは定数である。また、変数jは、入力データの例えば128ビットブロック（以下、単に「ブロック」）が、データユニットの何番目のブロックかを示す整数である。つまり、データユニットのブロックの総数をN（N＞0）とするとj=0, 1, …, N-1である。また、乗算器102が行う乗算は、バイナリフィールドGF(2)上の多項式の乗算のことである。なお、暗号化対象のデータは、データユニットに分割され、データユニットのブロック単位に暗号処理が行われる。
【００１６】
XOR103は、ビットごとに排他的論理和演算を行って、マスク値とブロックデータの排他的論理和値を出力する。AES処理部104は、共通鍵暗号AESを用いる暗号処理部であり、Key1を鍵（第一の鍵）としてXOR103の出力を暗号化処理する。XOR105は、ビットごとの排他的論理和演算を行って、マスク値とAES部104の出力の排他的論理和値をブロックデータの暗号化データとして出力する。
【００１７】
［装置の構成］
図2のブロック図により実施例の暗号処理を行う情報処理装置の構成例を示す。入力部201は、tweak値およびブロックデータを入力する。複数個のブロック暗号処理部は、入力部201が連続して出力するブロックデータを順に入力して暗号化処理または復号処理を行う。
【００１８】
実施例ではブロック暗号処理部の数Mが3の例を説明する。つまり、ブロック暗号処理部202、203、204は、入力部201から出力される一連のデータをブロック順に暗号化または復号する。なお、復号処理を行う場合、複数個のブロック暗号処理部は、複数個のブロック復号処理部として機能する。なお、複数個のブロック暗号処理部の詳細は後述する。
【００１９】
複数個のブロック暗号処理部のうちブロック暗号処理部204は、入力部201から選択的に入力されるtweak値から初期マスク値の生成を行う。セレクタ205は、データユニットの処理を開始する場合（ブロック暗号処理部204がtweak値を暗号化する場合）はKey2を選択的に出力し、ブロック暗号処理部204がブロックデータを処理する場合はKey1を選択的に出力する。
【００２０】
マスク値生成部206は、詳細は後述するが、ブロック暗号処理部204が生成した初期マスク値を入力して、図1に示す乗算器102に相当する乗算を行う。そして、マスク値生成部206は、データユニットの処理を開始する場合（ブロック暗号処理部204がtweak値を暗号化する場合）はマスク値として0（ゼロ）を出力し、ブロックデータの処理時はブロックに対応するマスク値を出力する。また、出力部207は、ブロックデータの暗号化データまたは復号データをブロック順に出力する。
【００２１】
●ブロック暗号処理部
図3のブロック図によりブロック暗号処理部の構成例を示す。なお、複数個のブロック暗号処理部は同様の構成を有し、図3には一つのブロック暗号処理部の構成だけを示す。
【００２２】
XOR301は、ビットごとの排他的論理和演算を行う演算部であり、つまり図1に示すXOR103に相当する排他的論理和演算を行い、入力されるデータとマスク値の排他的論理和演算を行う。なお、入力部201からブロック暗号処理部にtweak値が入力される場合、マスク値生成部206から入力されるマスク値は0（ゼロ）であるから、XOR301は、入力されるtweak値をそのまま出力する。
【００２３】
AES処理部302は、Key1またはKey2を鍵とする共通鍵暗号方式（例えばAESアルゴリズム）による暗号化処理または復号処理を行う。tweak値を処理する場合、セレクタ205からKey2が入力されるため、AES処理部302は、Key2を用いてtweak値を暗号化した初期マスク値を生成する。一方、ブロックデータを処理する場合、セレクタ205からまたは直接、Key1が入力されるため、AES処理部302は、Key1を用いてXOR301が出力する排他的論理和値を暗号化処理または復号処理する。
【００２４】
XOR303は、ビットごとの排他的論理和演算を行う演算部であり、つまり図1に示すXOR105に相当する排他的論理和演算を行い、AES処理部302が出力するデータとマスク値の排他的論理和演算を行う。なお、入力部201からブロック暗号処理部にtweak値が入力される場合、マスク値生成部206から入力されるマスク値は0（ゼロ）であるから、XOR303は、AES処理部302が出力する初期マスク値そのまま出力する。
【００２５】
●マスク値生成部
図4のブロック図によりマスク値生成部206の構成例を示す。セレクタ404は、データユニットの処理の開始時はブロック暗号処理部204が生成した初期マスク値を選択的にマスク値レジスタ401に出力する。また、データユニットの処理の開始時以外は、乗算部402の出力または除算部403の出力を選択的にマスク値レジスタ401に出力する。マスク値レジスタ401はセレクタ404から入力されるマスク値を保持する。
【００２６】
乗算部402は、図1に示す乗算器102に対応し、ブロックデータのXOR301の処理ごと、または、XOR303の処理ごとに、マスク値レジスタ401が保持する値に定数αを乗算した結果をマスク値としてセレクタ404に出力する。セレクタ404は、乗算部402から入力されるマスク値をマスク値レジスタ401に出力して、乗算後のマスク値をマスク値レジスタ401に保持させる。出力部405は、マスク値レジスタ401に保持されたマスク値をブロックデータのXOR301における処理用またはXOR303における処理用のマスク値として出力する。
【００２７】
乗算部402と乗算器102が対応する理由を説明する。乗算器102は初期マスク値とαjを乗算するが、j値（0〜N-1）はブロックごとにカウントアップする。従って、マスク値レジスタ401が保持する前のブロックデータの処理用のマスク値に定数αを乗算すれば、次のブロックデータの処理用のマスク値を得ることができる。
【００２８】
一方、除算部403は、複数個Mのブロック暗号処理部内のすべてのXOR301の処理が完了した後、マスク値レジスタ401が保持する値をαM-1で割った結果をマスク値として出力する。セレクタ404は、除算部403から入力されるマスク値をマスク値レジスタ401に出力して、除算後のマスク値をマスク値レジスタ401に保持させる。
【００２９】
除算部403が必要な理由を説明する。ブロック暗号処理部202-204の処理は、二度の排他的論理和演算を含み、両排他的論理和演算に同じマスク値を必要とする。一方、例えば、ブロック0、1、2に対する一度目の排他的論理和演算にはα0、α1、α2が乗算されたマスク値が必要になり、マスク値レジスタ401が保持するマスク値が更新される。その結果、二度目の排他的論理和演算の際には、マスク値レジスタ401保持するマスク値を一度目の排他的論理和演算時のマスク値に戻す必要がある。
【００３０】
図2の構成によれば、ブロック暗号処理部202-204内のXOR301の処理により、三つのブロック分、j値がカウントアップする。ブロック暗号処理部202内のXOR303が処理を行う際は、ブロック暗号処理部202内のXOR301が処理を行った際に用いたマスク値、つまり二つ前のj値に対応するマスク値が必要になる。そのため、除算部403により、マスク値を定数αでM-1回（図2においてはM-1=2であるから二回）除算して、マスク値レジスタ401が保持するマスク値をブロック暗号処理部202内のXOR301が処理を行った際のマスク値に戻す。
【００３１】
言うまでもなく、除算部403によってαM-1による除算が行われた後、XOR303の処理ごとに、マスク値レジスタ401が保持するマスク値に乗算部402によってαが乗算される。つまり、マスク値レジスタ401が保持するマスク値が、処理対象のブロックに対応するマスク値に更新される。
【００３２】
また、出力部405は、ブロックデータの処理時はマスク値レジスタ401が保持するマスク値を選択的に出力し、tweak値の暗号化時は、前述したように、0（ゼロ）をマスク値として出力する。
【００３３】
●ブロック暗号処理部の動作
図5によりブロック暗号処理部202-204の動作を説明する。データユニットの処理か開始されると、ブロック暗号処理部204は、初期マスク値の計算（図5(A)のtweak値の暗号化501）を行う。初期マスク値の計算が完了すると、ブロック暗号処理部202はj=0のブロックの処理を行う。同時に、ブロック暗号処理部203がj=1のブロックの処理を行い、ブロック暗号処理部204がj=2のブロックの処理を行う、ブロック順の暗号化処理または復号処理が行われる。
【００３４】
ブロック暗号処理部202-204は、ブロック順の処理を繰り返し行い、32個のブロックの処理が完了（言い替えれば、データユニットの暗号化処理または復号処理が完了）する。続いて、次のデータユニットの処理が開始され、ブロック暗号処理部204は、初期マスク値の計算（tweak値の暗号化502）を行う。
【００３５】
ブロック順の処理の繰り返し回数をn（n≧1）とすると、ブロック暗号処理部204は、nM番目のブロックのデータの処理を行う。そして、データユニットの処理の開始ごとに、ブロック暗号処理部204は、XTS-AESアルゴリズムの初期マスク値を生成する。
【００３６】
データユニットのブロック数Nがブロック暗号処理部の数Mで割り切れる（NがMの倍数、nM≦N）とすると、データユニットの末尾のブロック（以下、エンドブロック）のブロックデータの処理はブロック暗号処理部204が行うことになる。この場合、ブロック暗号処理部204は、エンドブロックのブロックデータの処理が終了した後、次のデータユニット用の初期マスク値の生成を開始することになる。初期マスク値の生成が終了するまでブロック暗号処理部202、203は処理を開始することができないから、ブロックデータの処理に必要な時間分の暗号化処理または復号処理の開始遅延が発生する。
【００３７】
図5(A)は、一つのデータユニットに32個のブロックが存在する（つまりN=32）例を示している。この場合、データユニットのブロック数Nがブロック暗号処理部の数Mで割り切れず（NがMの倍数ではない、nM＜N）、エンドブロックのブロックデータの処理はブロック暗号処理部203が行うことになる。ブロック暗号処理部204は、エンドブロックのブロックデータの処理を行う必要がないから、直ちに、次のデータユニットの初期マスク値の生成を開始する。従って、暗号化処理または復号処理の開始遅延が発生することはない。
【００３８】
図5(B)は、データユニットが4096バイトの場合のブロック暗号処理部202-204の動作例を示している。この例は、ストレージデバイスのセクタをデータユニットとして暗号処理する場合に相当し、データユニットのブロック数Nは256個になる。この例では、エンドブロックのブロックデータの処理はブロック暗号処理部202が行い、ブロック暗号処理部203がアイドル状態になるため、図5(A)の例に比べて若干効率が悪い。しかし、ブロック暗号処理部204は、直ちに、次のデータユニットの初期マスク値の生成を開始することができ、暗号化処理または復号処理の開始遅延が発生することはない。
【００３９】
つまり、データユニットのブロック数Nを割り切れない数Mのブロック暗号処理部を用意すれば暗号化処理または復号処理の開始遅延の発生を防ぐことができる。言い替えれば、ブロック暗号処理部の数Mをブロックの数Nの倍数にしないことである。さらに、図5(A)に示すように、ブロックの数Nをブロック暗号処理部の数Mで除算した場合の剰余が1であることが好ましい。
【００４０】
このように、複数個M（M≧2）のブロック暗号処理部は、データユニットに含まれる所定データサイズ（例えば128ビット）の一連のブロックのブロックデータをブロック順に処理する。つまり、複数個のブロック暗号処理部がブロック順の処理を繰り返してデータユニットを暗号化処理または復号処理する。その際、n回目の繰り返しにおいてnM番目（nM＜N）のブロックのデータを処理するブロック暗号処理部は、データユニットの処理の開始ごとにXTS-AESアルゴリズムの初期マスク値を生成する。
【００４１】
このように、XTS-AESアルゴリズムに基づく暗号化処理または復号処理を行う情報処理装置において、初期マスク値生成用の回路を別途用意する必要がなく、初期マスク値の生成による暗号化処理または復号処理の開始遅延の発生を防ぐことができる。従って、回路規模の増大を防いで、暗号処理のスループットの向上を図ることができる。
【００４２】
［変形例］
上記においては、XTS-AESアルゴリズムを前提として、上記の実施例を適用する構成について説明した。しかし、上記の実施例は、XTS-AESアルゴリズム以外にも、tweak値を暗号化して初期マスク値を生成するブロック暗号処理を行う他のアルゴリズムにも適用可能である。そのようなアルゴリズムとしては、XEX (Xor-encrypt-xor)などが考えられる。
【００４３】
また、上記の実施例においては、ブロック暗号処理部204において初期マスク値を生成する例を示した。しかし、一つのブロック暗号処理部（例えばブロック暗号処理部204）において初期マスク値を生成するのではなく、二つ以上のブロック暗号処理部を用いて初期マスク値を生成してもよい。
【００４４】
［その他の実施例］
本発明は、上述の実施形態の一以上の機能を実現するプログラムを、ネットワーク又は記憶媒体を介してシステム又は装置に供給し、そのシステム又は装置のコンピュータにおける一以上のプロセッサがプログラムを読み出し実行する処理でも実現可能である。また、一以上の機能を実現する回路（例えば、ASIC）によっても実現可能である。
【符号の説明】
【００４５】
202-204 … ブロック暗号処理部
【図１】
2015156013.tif 000003
【図２】
2015156013.tif 000004
【図３】
2015156013.tif 000005
【図４】
2015156013.tif 000006
【図５】
2015156013.tif 000007