説明

暗号演算装置、記憶装置および暗号演算方法

【課題】高速に暗号演算を実施できる暗号演算装置を得ること。
【解決手段】暗号演算を行う入力データのデータ単位を第1のデータ単位とし、第2の鍵データと、前記第1のデータ単位より大きい第2のデータ単位ごとに定められたデータ情報と、に基づいて初期マスク値を生成する初期マスク値生成部と、前記初期マスク値に基づいて、前記第1のデータ単位ごとにマスク値を生成するマスク値更新部と、前記初期マスク値と、前記マスク値更新部が生成したマスク値と、を保持し、保持しているマスク値を出力するマスク値保持部と、第1のデータ単位の入力データと、第1の鍵データと、前記マスク値保持部から出力されたマスク値と、に基づいて前記第1のデータ単位の入力データを暗号化した暗号化データを生成するデータ暗号演算部と、を備える。

【発明の詳細な説明】
【技術分野】
【0001】
本発明の実施の形態は、暗号演算装置、記憶装置および暗号演算方法に関する。
【背景技術】
【0002】
共通鍵方式の暗号アルゴリズムは、あらかじめ決められた長さ(ブロック長)のデータを秘匿化することが目的として設計されたものであり、そのままではブロック長よりも長いデータの秘匿化を行うことができない。しかし、秘匿化したいデータがブロック長よりも長い場合であっても共通鍵方式の暗号アルゴリズムを用いてブロック長より長いデータの秘匿化を行えるような演算方法や、もとのデータの改ざん検出のための認証子を生成する演算方式などが開発されている。このように共通鍵暗号方式を基本としてさまざまな用途に向いた暗号演算方法は、暗号利用モードと呼ばれる。
【0003】
この暗号利用モードの一つとして、ストレージデバイスに保存されるデータの秘匿化に特化して設計された利用モードとしてXTS(Xor−Encrypt−Xor−based Tweaked CodeBook with CipherText Stealing)があり、その仕様はIEEE(The Institute of Electrical and Electronics Engineers) P1619で定められている(下記非特許文献1参照)。
【0004】
XTSモードでは、入力データを暗号化するために用いる鍵データ#1とデータ初期マスク値を生成するための鍵データ#2との2つの鍵データを用いて暗号化および復号化を行う。XTSモードの暗号演算では、最初にTweak Valueと呼ばれる値と鍵データ#2を用いて初期マスク値を生成する。Tweak Valueとしては、通常ストレージデバイスのセクター番号を用いる。
【先行技術文献】
【非特許文献】
【0005】
【非特許文献1】SP800−38E/IEEE−Std−1619−2007
【発明の概要】
【発明が解決しようとする課題】
【0006】
XTSモードでは、初期マスク値の生成時に暗号演算を1回行う。この初期マスク値生成のための暗号演算が終わらなければ秘匿化または復元対象のデータの暗号演算を行うことができない。そのため、秘匿化または復元化演算の全体の演算時間には、秘匿化または復元対象のデータの暗号演算自体の演算速度だけでなく、初期マスク値生成のための演算時間が影響する。
【0007】
また、Tweak Valueにセクター番号が用いられる場合、複数のセクターに対応するデータを連続して書き込む際に、セクター番号が変更されるたびに、再び初期マスク値の生成を行う必要がある。この際、変更後のセクターに対応する初期マスク値の生成のために必要な情報が揃っていたとしても、変更前のセクターのデータの暗号演算が終了していなければ、変更後のセクターに対応する初期マスク値の生成処理を開始できない。
【課題を解決するための手段】
【0008】
実施の形態の暗号演算装置は、データの暗号化用の第1の鍵データと、初期マスク値生成用の第2の鍵データと、を用いて第1のデータ単位ごとに暗号演算を行なう暗号演算装置であり、前記第2の鍵データと、前記第1のデータ単位より大きい前記第2のデータ単位ごとに定められたデータ情報と、に基づいて初期マスク値を生成する初期マスク値生成部、を備える。また、この暗号演算装置は、初期マスク値に基づいて、前記第1のデータ単位ごとにマスク値を生成するマスク値更新部と、前記初期マスク値と前記マスク値更新部が生成したマスク値とを保持し、保持しているマスク値をデータ暗号演算部へ出力するマスク値保持部と、を備える。さらに、初期マスク値生成部とは別に、前記第1のデータ単位の入力データと、前記第1の鍵データと、前記マスク値保持部から出力されたマスク値と、に基づいて前記第1のデータ単位の入力データを暗号化した暗号化データを生成するデータ暗号演算部、を備えることを特徴とする。
【図面の簡単な説明】
【0009】
【図1】図1は、実施の形態の暗号演算用回路の機能構成例を示す図である。
【図2】図2は、実施の形態の記憶装置の機能構成例を示す図である。
【図3】図3は、XTSの暗号演算手順の一例を示すフローチャートである。
【図4】図4は、データ演算用暗号コアの機能構成例を示す図である。
【図5】図5は、実施の形態の記憶装置の書き込みおよび読み出し手順の一例を示すフローチャートである。
【図6】図6は、実施の形態の処理タイミングの概念の一例を示す図である。
【発明を実施するための形態】
【0010】
(実施の形態)
図1は、本実施の形態の暗号演算回路(暗号演算装置)の機能構成例を示す図である。図1に示すように、本実施の形態の暗号演算回路は、初期マスク値生成用暗号コア(初期マスク値生成部)11と、データ演算用暗号コア(データ暗号演算部)12−1〜12−Nと、マスク値保持回路(マスク値保持部)13と、マスク値更新回路(マスク値更新部)14と、セレクタ15,16と、で構成される。また、初期マスク値生成用暗号コア(初期マスク値生成用演算部)11は、初期マスク値保持回路21を備え、データ演算用暗号コア(データ用暗号演算部)12−k(k=1,2,…,N)は、マスク値保持回路(演算用マスク値保持部)22−kを備えている。
【0011】
本実施の形態の暗号演算用回路1は、データを不揮発に記憶するための記憶装置(ストレージデバイス)に組み込まれる回路である。本実施の形態の暗号演算用回路1が組み込まれる記憶装置は、例えば、NAND型半導体メモリ装置や磁気ディスク装置などであり、記憶方式に限定はない。
【0012】
図2は、本実施の形態の記憶装置の機能構成例を示す図である。図2に示すように、本実施の形態の記憶装置は、メモリ部2と、本実施の形態の暗号演算回路1と、インタフェース回路3と、ファームウェア部4と、で構成され、例えば計算機OS(Operating System)5から入力される書き込み対象のデータを暗号化して記憶する。
【0013】
本実施の形態の記憶装置は、入力される書き込み対象のデータを暗号化した後にメモリ部2へ格納し、メモリ部2へ格納されているデータの読みだす際には、読みだしたデータを復号化して出力する。メモリ部2は、NANDフラッシュメモリ等の不揮発にデータを記憶する記憶手段である。
【0014】
インタフェース回路3は、計算機OS5からのデータ書き込み要求に基づいて、計算機OS5から入力されるデータをメモリ部2へ書き込みを行い、また計算機OS5からのデータ読み出し要求に基づいて、メモリ部2に記憶されているデータの読み出しを行う。また、インタフェース回路3は、メモリ部2への書き込み時には、書き込み対象のデータを暗号化するよう暗号演算回路1へ指示し、メモリ部2からの読み出し時には、読み出したデータを復号化するよう暗号演算回路1へ指示する。すなわち、インタフェース回路3は、データの読み出しおよび書き込みと、暗号化および復号化と、を制御する制御部である。
【0015】
また、本実施の形態では、メモリ部2への書き込みをブロック単位で行うこととし、ブロックごとに入力データを暗号化して暗号化データを生成する。1ブロックの大きさに制約はないが、ここでは一例として1ブロックを128bitとする。また、複数のブロックで1つのセクターを構成することとし、ここでは一例として1セクターを512バイトとする。なお、1セクターのデータ量は512バイト以外でもよいが、ここでは1セクターは1ブロックの整数倍であるとする。
【0016】
つぎに、本実施の形態の動作について説明する。なお、本実施の形態では、メモリ部2へ書き込むデータの暗号化方式としてXTSモードの暗号化方式(以下、XTSという)を用いる。ここでは、初期マスク値に生成に用いるTweak Valueとして、セクター番号を用いることとする。また、XTSの暗号演算では、初期マスク値の生成のための鍵データ#1とデータ暗号化のための鍵データ#2とを1組とする鍵情報を用いる。この鍵情報は、どのような単位で定めておいてもよいが、メモリ部2を複数のエリアに分割し、分割したエリアごとに同一の鍵情報を用いるとする。例えば、128GBの容量である場合に、32GBごとに同一の鍵情報を用いる。したがって、同一エリアに属するセクターは同一の鍵情報を用いる。インタフェース回路3は、鍵情報とエリアの対応、およびエリアとそのエリア内のセクター番号の対応を保持しているとし、セクター番号ごとに用いる鍵情報を把握しているとする。
【0017】
ここで、XTSの一般的な暗号演算処理について説明する。図3は、XTSの暗号演算手順の一例を示すフローチャートである。図3は、1つのセクター(セクター番号i(i=は0以上の整数))について暗号化処理を行う場合を示している。複数のセクターについて連続して暗号化処理を行う場合には、セクター番号を更新して図3に示す処理を繰り返す。
【0018】
まず、セクター番号iと鍵データ#2(Key2)とに基づいて、以下の式(1)に基づいて初期マスク値T0の生成処理を実施し、jを0に初期化する(ステップS1)。なお、AESenc()は、共通鍵暗号演算処理の1種であるAESの暗号演算処理を表し、αj(j=0,1,2、…,m−1)は、ガロア体の原始元を示す。mは、1セクターを構成するブロック数である。
0=AESenc(Key2,i)×α0 …(1)
【0019】
つぎに、データ暗号演算が開始され、まず、j番目のブロックに対応する入力データ(暗号化対象データ)PjとTjとの排他的論理和PPを算出する(ステップS2)。そして、PPと鍵データ#1(Key1)を用いて以下の式(2)に従ってCCを算出し(ステップS3)、さらにCCとTjとの排他的論理和として暗号化データCjを求める(ステップS4)。
CC=AESenc(Key1,PP) …(2)
【0020】
つぎに、j=m−1であるか否か(すなわちセクターの最後のブロックであるか否か)を判断し(ステップS5)、j=m−1である場合(ステップS5 Yes)はそのセクターの暗号化処理を終了する。j=m−1でない場合(ステップ5 No)、jを1インクリメントし(ステップS6)、Tjを以下の式(3)に従って更新して(ステップS7)、ステップS2に戻る。
j=Tj-1×αj-1 …(3)
【0021】
以上のように、XTSの暗号演算では、ステップS1で示したように、初期マスク値の生成に暗号演算を実施する。また、この演算結果である初期マスク値を用いて、ステップS2〜ステップS4で示すような入力データ(書き込みデータ)を暗号化するための演算が行われる。ステップS1とステップS3の暗号演算(AESenc())は入力値が異なるだけで同様の演算である。したがって、1つの暗号コアを用いて演算をする場合、図3に示した処理をステップごとに実施することになる。そのため、初期マスク値の生成が終了するまで、入力データに対する暗号化の処理が実施できない。また、複数のセクターに対応するデータを連続して書き込む場合、次のセクターに対応する初期マスク値の生成のために必要な情報が揃っていたとしても、暗号化の処理中のセクターのデータの暗号演算が終了していないと、次のセクターの初期マスク値の生成処理を開始できない。
【0022】
これに対し、本実施の形態では、入力データに対しての暗号演算(ステップS2に対応)を行う暗号コア(データ演算用暗号コア12−1〜12−N)と別に、初期マスク値生成用暗号コア11を備え、前のセクターの入力データの暗号演算が終了していない場合でも、初期マスク値生成に必要な情報が揃い次第、初期マスク値の生成処理を開始し、処理結果を初期マスク値保持回路21に保持する。したがって、次のセクターの入力データの暗号演算を開始する際に、保持している初期マスク値を参照すればよいため、初期マスク値の生成を待機する時間を短縮することができる。
【0023】
さらに、本実施の形態では、入力データに対しての暗号演算(ステップS2に対応)を行う暗号コア(データ演算用暗号コア12−1〜12−N)についても複数備え、ブロックごとの暗号演算(ステップS2〜ステップS4)を並列に実施する。このため、入力データに対しての暗号演算の処理時間を、1つの暗号コアを用いる場合に比べ短縮することができる。なお、この際、処理対象のブロック番号をjとすると、上記のステップS2では、j=0の場合は、初期マスク値(T0)を用いるが、j≧1では、ステップS7で更新されたマスク値Tjを用いる。
【0024】
このマスク値Tjを生成する演算は、T0が生成されれば、ステップS2〜ステップS4の処理を待たずに、T1,T0,…, Tm-1の順に、順次生成することができる。本実施の形態では、マスク値更新回路14がこのマスク値Tを更新して、セレクタ15経由でマスク値保持回路13に格納する。そして、マスク値保持回路13に格納されたマスク値Tはインタフェース回路3の指示により、j番目のブロックの暗号演算を行うデータ演算用暗号コア12−j(ここでは一例としてj番目のブロックの暗号演算を行うデータ演算用暗号コアをデータ演算用暗号コア12−jとする)のマスク値保持回路22−jに格納される。
【0025】
そして、マスク値保持回路22−jにマスク値Tを格納すると、インタフェース回路3は、マスク値更新回路14にマスク値の更新(Tj+1の生成)を指示する。そして、マスク値保持回路13に格納されたマスク値Tj+1はインタフェース回路3の指示により、j+1番目のブロックの暗号演算を行うデータ演算用暗号コア12−(j+1)のマスク値保持回路22−(j+1)に格納される。以降、順にマスク値が更新され、対応するデータ演算用暗号コア12−1〜12−Nのマスク値保持回路22−1〜22−Nに格納される。そして、データ演算用暗号コア12−jは、インタフェース回路3は入力データと鍵データ#1を受け取り、起動を指示されると、マスク値保持回路22−jに格納されたマスク値Tjを用いてステップS2〜ステップS4の暗号化演算を行う。
【0026】
上述のように、本実施の形態のデータ演算用暗号コア12−1〜12−Nは、ステップS2〜ステップS4の暗号化演算を行う。図4は、データ演算用暗号コア12−1の構成例を示す図である。本実施の形態のデータ演算用暗号コア12−1は、例えば、マスク値Tjを保持するマスク値保持回路22−1と、マスク値Tjと、入力データPjと、の排他的論理和PPを算出する第1の排他的論理和算出回路23と、PPと、鍵データ#1と、に基づいてXTSの暗号演算(共通鍵暗号演算)を実施してCCを求める暗号演算回路24と、CCと、マスク値Tjと、の排他的論理和として暗号化データCjを算出する第2の排他的論理和算出回路25と、を備えることになる。データ演算用暗号コア12−2〜12−Nの構成もデータ演算用暗号コア12−1の構成と同様である。なお、データ演算用暗号コア12−1〜12−Nの構成は、これに限らず、同様の演算が実施できればどのような構成としてもよい。
【0027】
データ演算用暗号コア12−1と処理対象ブロックとの対応は、例えばセクターの最初のブロックから順にデータ演算用暗号コア12−1,データ演算用暗号コア12−2,…が処理すると対応付けておいてもよいし、インタフェース回路3が、処理の都度、ブロックごとに処理を行う暗号コアを、処理中でないデータ演算用暗号コア12−1〜12−Nのなかから選択してもよい。
【0028】
さらに、この初期マスク値生成用暗号コア11を備えることで、復号演算処理も高速化することもできる。以下に、復号演算について説明する。XTSでは、復号演算処理の際、暗号演算時の初期マスク値生成処理と同様の処理を実施する。すなわち、ステップS1と同じ暗号演算を復号演算時にも実施し、T0を求める。そして、暗号化データCjを入力データとする復号演算では、ステップS2´として、CjとTjとの排他的論理和CCを算出する。さらに、ステップS3´として、以下の式(4)に示す演算を行なう。なお、AESdec()はAESの復号演算を示す。
PP=AESdec(Key1,CC) …(4)
【0029】
つぎに、ステップS4´としてPPとTjとの排他的論理和Pを求める。そして、暗号演算処理のステップS5〜ステップS7と同様の処理を行うことにより、ブロックごとの復号化処理を実施する。
【0030】
以上のように、復号演算処理においても、ステップS1の処理(復号鍵の生成処理)を実施するため、初期マスク値生成用暗号コア11が復号演算処理におけるステップS1の処理を実施することが可能である。さらに、暗号化データの復号化処理ステップS2´〜ステップS4´は、ステップS3´の演算が暗号演算から復号演算に変わるだけで、後の演算は入力が異なるだけで同様の演算である。したがって、データ演算用暗号コア12−1〜12−Nが、暗号演算だけでなく復号演算も実施するようにしてもよい。また、初期マスク値生成用暗号コア11は暗号化演算と復号化演算で共用し、復号演算を並列して実施する複数のデータ演算用暗号コアをデータ演算用暗号コア12−1〜12−Nとは別に備えてもよい。
【0031】
本実施の形態のデータ演算用暗号コア12−jが復号演算も行う場合は、例えば、上述の暗号演算回路24が復号演算を行う機能も有することとし、上述の第1の排他的論理和算出回路23が、CjとTjとの排他的論理和CCを算出し、暗号演算回路24が、CCと鍵データ#1(Key1)を用いた復号演算を行いPPを算出し、第2の排他的論理和回路25が、PPとTjとの排他的論理和Pを求める。なお、暗号演算部とは別に復号演算部を備え、復号演算部がCCと鍵データ#1を用いた復号演算を行うようにしてもよい。
【0032】
復号演算処理においても、データ演算用の暗号コアとは別の初期マスク値生成用暗号コア11が復号演算処理におけるステップS1の処理を実施することにより、暗号演算処理と同様に、複数のセクターを連続して処理する場合に、ステップS1の処理に必要な情報が揃い次第ステップS1の演算を行うことができる。したがって、入力データ(復号演算の場合は暗号化データ)の復号演算の開始までの時間を短縮することができる。
【0033】
図5は、本実施の形態の記憶装置の書き込みおよび読み出し手順の一例を示すフローチャートである。まず、書き込み手順について説明する。本実施の形態のインタフェース回路3は、計算機OS5からの入力を待機する(ステップS21)、データ書き込み要求を受け取る(ステップS22)と、書き込み要求のあったデータの論理アドレスに対応するセクター番号の取得をファームウェア部4へ指示し、論理アドレスに対応するセクター番号をファームウェア部4から受け取る(ステップS23)。
【0034】
なお、計算機OS5は、データ書き込み要求(または読み出し要求)を記憶装置へ通知するとともに、書き込み対象(読み出し対象)のデータを記憶装置(インタフェース回路3)へ入力するとする。なお、書き込み対象のデータの論理アドレスは、計算機OS5から指示されてもよいし、インタフェース回路3が決定してもよい。また、ファームウェア部4は、論理アドレスとセクター番号との対応を保持しているとし、インタフェース回路3からの指示に基づいて論理アドレスに対応するセクター番号を出力するとする。
【0035】
つぎに、インタフェース回路3は、取得したセクター番号(Tweak Value)と、取得したセクター番号に対応する鍵データ#2と、を初期マスク値生成用暗号コア11に設定し(ステップS24)、初期マスク値生成用暗号コア11を起動する(ステップS25)。
【0036】
初期マスク値生成用暗号コア11は、演算終了後、演算結果(初期マスク値)を初期マスク値保持回路21に書き込む(ステップS26)。インタフェース回路3は、マスク値更新信号により、初期マスク値保持回路21に書き込まれた初期マスク値をマスク値保持回路13へ書き込む(ステップS27)。具体的には、インタフェース回路3は、マスク値更新信号をセレクタ15へ入力し、これによりセレクタ15は初期マスク値保持回路21に書き込まれた初期マスク値をマスク値保持回路13へ出力し、マスク値保持回路13は入力された値を保持する。
【0037】
つぎに、インタフェース回路3は、入力データ(書き込み対象データ)と鍵データ#1と、暗号の指示信号と、を入力データのブロック番号に対応する演算用暗号コア12−jへ入力し、当該コアを起動する(ステップS28)。なお、ここでは、データ演算用暗号コア12−1〜12−Nが復号演算についても実施するとし、演算用暗号コア12−1〜12−Nは、暗号の指示信号が入力された場合には暗号演算を行い、復号の指示信号が入力された場合には復号演算を行うとする。
【0038】
また、インタフェース回路3は、データ演算用暗号コア12−jの起動と同時に、マスク値保持回路13に格納されているマスク値Tjをデータ演算用暗号コア12−jのマスク値保持回路22−jに書き込み、かつマスク値更新回路14に対してマスク値の更新を指示し、更新後のマスク値Tj+1をマスク値保持回路13に格納するようセレクタ15に指示する(ステップS29)。
【0039】
そして、インタフェース回路3は、ステップS28での入力データがセクターの最後のブロックに対応する入力データであるか否かを判断し(ステップS30)、最後の入力データでない場合(ステップS30 No)には、ブロック番号jを1インクリメントし、ステップS28へ戻り次のブロックについての処理を実施する。
【0040】
ステップS28での入力データがセクターの最後のブロックに対応する入力データであると判断した場合(ステップS30 Yes)、インタフェース回路3は、さらに、次にセクターの書き込み処理を行うか否か(書き込みが続くか否か)を判断する(ステップS31)。次のセクターの書き込み処理を行う場合(ステップS 31 Yes)には、ステップS23に戻り、次のセクターの書き込み処理を実施する。また、ステップS31で次のセクターの書き込み処理を行なわないと判断した場合(ステップS30 No)、ステップS21に戻る。
【0041】
図6は、本実施の形態の処理タイミングの概念の一例を示す図である。図6では、各構成要素名に示した横線が処理時間を表している。この処理タイミング例では、複数のセクターについて連続して書き込み処理すなわち暗号演算を行う例を示している。なお、図6ででは、各セクターの最初のブロックをデータ暗号用演算コア12−1が暗号化処理を行うこととし、次のブロックをデータ暗号用演算コア12−2が処理し、…と番号順に処理していく例を示している。
【0042】
図6に示すように、初期マスク値生成用暗号コア11は、セクターごとに、初期値マスク値を生成するが、図6に示すように前のセクターのデータの暗号演算が終了していなくても、次のセクターのマスク値を算出することができる。また、データ暗号用演算コア12−1へ次のセクターの入力データが入力された時点では、既に初期マスク値の算出が終了しているため、入力データが揃い次第、暗号演算を開始することができる。さらに、データ暗号用演算コア12−1〜12−Nが並列処理を行っているため、高速に暗号演算を行うことができる。なお、図6は処理タイミングの概念を示しており、各処理時間の相対関係等は実際とは異なる。また、図6の処理タイミングは一例であり、各々の処理タイミングはこれに限らず、初期マスク値生成用暗号コア11とデータ暗号用演算コア12−1〜12−Nとの並列処理、データ暗号用演算コア12−1〜12−N間の並列処理が実施できるようなタイミングであればどのような処理タイミングとしてもよい。
【0043】
以上は書き込み処理の場合について説明したが、メモリ部2からの暗号化データの読み出し処理の場合にも、図5と同様の処理を実施する。読み出し処理の場合には、ステップS22では、書き込み要求の代わりに読み出し要求を受け取る。また、ステップS28では、復号指示信号をデータ演算用暗号コア12−jに入力する。また、ステップS28では、メモリ部2から復号対象の暗号化データを読み出し、入力データとする。
【0044】
また、インタフェース回路3は、セレクタ16に対して出力データとして選択するデータ演算用暗号コア21−1〜12−Nを指示する。セレクタ16は、指示に基づいてデータ演算用暗号コア21−1〜12−Nからの出力データのうちいずれか1つを選択して出力する。そして、インタフェース回路3は、データ書き込む処理の場合には、セレクタ16から出力される出力データをメモリ部2へ書き込み、データ読み出し処理の場合には、セレクタ16から出力される出力データを計算機OS5へ出力する。
【0045】
このように、本実施の形態では、初期マスク値生成用暗号コア11をデータの暗号演算用の暗号コアと別に備え、さらにデータ暗号演算用の暗号コア(データ演算用暗号コア12−1〜12−N)を複数備え、ブロックごとにデータの暗号演算を並列に処理するようにした。そのため、データの暗号演算を高速化できるとともに、データの暗号演算の進捗状況と無関係に任意のタイミングで初期マスク値および復号鍵を生成することができ、さらに初期マスク値生成処理および復号鍵生成処理を隠ぺいすることができる。また、マスク値を各データ演算用暗号コア12−1〜12−Nが保持するような回路構成とすることで、処理中のデータ演算に影響を与えずに、任意のタイミングで初期マスク値を更新することができ、異なるセクターのデータを混在させて暗号・復号演算を行うことができる暗号回路となる。
【符号の説明】
【0046】
1 暗号演算回路、2 メモリ部、3 インタフェース回路、11 初期マスク値生成用暗号コア、12−1〜12−N データ演算用暗号コア、13,22−1〜22−N マスク値保持回路、15,16 セレクタ、21 初期マスク値保持回路、23 第1の排他的論理和算出回路、24 暗号演算回路、25 第2の排他的論理和算出回路。

【特許請求の範囲】
【請求項1】
データの暗号化用の第1の鍵データと、初期マスク値生成用の第2の鍵データと、を用いて第1のデータ単位ごとに暗号演算を行なう暗号演算装置であって、
前記第2の鍵データと、前記第1のデータ単位より大きい第2のデータ単位ごとに定められたデータ情報と、に基づいて初期マスク値を生成する初期マスク値生成部と、
前記初期マスク値に基づいて、前記第1のデータ単位ごとにマスク値を生成するマスク値更新部と、
前記初期マスク値と、前記マスク値更新部が生成したマスク値と、を保持し、保持しているマスク値を出力するマスク値保持部と、
前記第1のデータ単位の入力データと、前記第1の鍵データと、前記マスク値保持部から出力されたマスク値と、に基づいて前記第1のデータ単位の入力データを暗号化した暗号化データを生成するデータ暗号演算部と、
を備える、
ことを特徴とする暗号演算装置。
【請求項2】
前記データ暗号演算部を複数備え、
前記マスク値保持部は、前記データ暗号演算部ごとに、前記データ暗号演算部が処理対象とする前記入力データに対応するマスク値を出力する、
ことを特徴とする請求項1に記載の暗号演算装置。
【請求項3】
前記マスク値更新部は、ガロア体の乗算を行なうことにより前記マスク値を生成する、
ことを特徴とする請求項1または2に記載の暗号演算装置。
【請求項4】
前記データ暗号演算部は、
前記マスク値保持部から入力された前記マスク値を保持する演算用マスク値保持部と、
前記演算用マスク値保持部が保持している前記マスク値と、前記入力データと、の排他的論理和を第1の演算結果として算出する第1の排他的論理和算出部と、
前記第1の演算結果と、前記第1の鍵データと、に基づいて所定の共通鍵暗号演算を実施することにより第2の演算結果を算出する暗号演算部と、
前記第2の演算結果と、前記演算用マスク値保持部が保持している前記マスク値と、の排他的論理和を前記暗号化データとして算出する第2の排他的論理和算出部と、
を備えることを特徴とする請求項1、2または3に記載の暗号演算装置。
【請求項5】
前記暗号化データは、データを不揮発に記憶するためのメモリ装置に書き込まれることとし、
前記第2のデータ単位を前記メモリ装置のセクターとし、前記第1のデータ単位を前記メモリ装置のブロックとし、前記データ情報をセクター番号とする、
ことを特徴とする請求項1〜4のいずれか1つに記載の暗号演算装置。
【請求項6】
前記データ暗号演算部は、暗号演算または復号演算を指示する指示信号の入力を受付け、前記指示信号が暗号演算を指示する信号であった場合に、前記入力データを暗号化した前記暗号化データを生成し、前記指示信号が復号演算を指示する信号であった場合に、前記入力データを復号する復号演算を実施する、
ことを特徴とする請求項1〜5のいずれか1つに記載の暗号演算装置。
【請求項7】
不揮発に記憶対象データを記憶するためのメモリ部と、
データの暗号化用の第1の鍵データと、初期マスク値生成用の第2の鍵データと、を用いて第1のデータ単位ごとに暗号演算を行なう暗号演算装置と、
前記初期マスク値生成部へ前記第2の鍵データと前記第1のデータ単位より大きい第2のデータ単位ごとに定められたデータ情報とを入力し、また、前記暗号演算装置へ前記第1の鍵データと、暗号化対象の前記第1の単位の入力データとを入力し、また、前記暗号演算装置が生成する暗号化データを前記メモリ部へ書き込む制御部と、
を備え、
前記暗号演算部は、
前記制御部から入力される前記第2の鍵データと前記データ情報とに基づいて、初期マスク値を生成する初期マスク値生成部と、
前記初期マスク値に基づいて、暗号演算を行なう入力データのデータ単位である第2のデータ単位ごとにマスク値を生成するマスク値更新部と、
前記初期マスク値と、前記マスク値更新部が生成したマスク値と、を保持し、保持しているマスク値を出力するマスク値保持部と、
前記制御部から入力される前記第1のデータ単位の入力データと前記第1の鍵データと、と、前記マスク値保持部から出力されたマスク値と、に基づいて前記第1のデータ単位の入力データを暗号化した暗号化データを生成するデータ暗号演算部と、
を備える、
ことを特徴とする記憶装置。
【請求項8】
前記データ暗号演算部は、暗号演算または復号演算を指示する指示信号の入力を受付け、前記指示信号が暗号演算を指示する信号であった場合に、前記入力データを暗号化した前記暗号化データを生成し、前記指示信号が復号演算を指示する信号であった場合に、前記入力データを復号する復号演算を実施し、
前記制御部は、前記メモリ部へのデータ書き込み処理を行う場合には、前記暗号演算部に暗号演算の実施を指示する前記指示信号を入力し、前記初期マスク値生成部へ前記第2の鍵データと前記データ情報とを入力し、前記暗号演算装置へ前記第1の鍵データと、暗号化対象の第2の単位の入力データとを入力し、前記暗号演算装置が生成する暗号化データを前記メモリ部へ書き込み、一方、前記暗号演算部に復号演算の実施を指示する前記指示信号を入力し、前記メモリ部からのデータ読み出し処理を行う場合には、前記暗号化データを読み出し、前記初期マスク値生成部へ前記第2の鍵データと前記データ情報とを入力し、また、前記暗号演算装置へ前記第1の鍵データと読みだした前記暗号化データとを入力し、また、前記暗号演算装置の復号演算結果を出力する、
ことを特徴とする請求項7に記載の記憶装置。
【請求項9】
データの暗号化用の第1の鍵データと、初期マスク値生成用の第2の鍵データと、を用いて第1のデータ単位ごとに暗号演算を行なう暗号演算装置における暗号演算方法であって、
前記暗号演算装置は、初期マスク値を生成する初期マスク生成部と、データの暗号演算を行うデータ暗号演算部とを備えることとし、
前記初期マスク生成部が、前記第2の鍵データと、前記第1のデータ単位より大きい第2のデータ単位ごとに定められたデータ情報と、に基づいて初期マスク値を生成する初期マスク値生成ステップと、
前記初期マスク値に基づいて、前記第1のデータ単位ごとにマスク値を生成するマスク値更新ステップと、
前記初期マスク値と、前記マスク値更新部が生成したマスク値と、を保持し、保持しているマスク値を、前記データ暗号演算部へ出力するマスク値保持ステップと、
前記データ暗号演算部が、前記第1のデータ単位の入力データと、前記第1の鍵データと、前記マスク値保持ステップで出力されたマスク値と、に基づいて前第1のデータ単位の入力データを暗号化した暗号化データを生成するデータ暗号演算ステップと、
含むことを特徴とする暗号演算方法。

【図1】
image rotate

【図2】
image rotate

【図3】
image rotate

【図4】
image rotate

【図5】
image rotate

【図6】
image rotate


【公開番号】特開2012−9928(P2012−9928A)
【公開日】平成24年1月12日(2012.1.12)
【国際特許分類】
【出願番号】特願2010−141473(P2010−141473)
【出願日】平成22年6月22日(2010.6.22)
【出願人】(000003078)株式会社東芝 (54,554)
【Fターム(参考)】