IP Force 特許公報掲載プロジェクト 2022.1.31 β版

知財求人 - 知財ポータルサイト「IP Force」

▶ 株式会社村田製作所の特許一覧

特許7103334平文暗号化復号化方法および平文暗号化復号化装置
<>
  • 特許-平文暗号化復号化方法および平文暗号化復号化装置 図1
  • 特許-平文暗号化復号化方法および平文暗号化復号化装置 図2
  • 特許-平文暗号化復号化方法および平文暗号化復号化装置 図3
  • 特許-平文暗号化復号化方法および平文暗号化復号化装置 図4
< >
(19)【発行国】日本国特許庁(JP)
(12)【公報種別】特許公報(B2)
(11)【特許番号】
(24)【登録日】2022-07-11
(45)【発行日】2022-07-20
(54)【発明の名称】平文暗号化復号化方法および平文暗号化復号化装置
(51)【国際特許分類】
   G09C 1/00 20060101AFI20220712BHJP
【FI】
G09C1/00 610Z
【請求項の数】 9
(21)【出願番号】P 2019222522
(22)【出願日】2019-12-09
(65)【公開番号】P2021092634
(43)【公開日】2021-06-17
【審査請求日】2021-07-13
(73)【特許権者】
【識別番号】000006231
【氏名又は名称】株式会社村田製作所
(74)【代理人】
【識別番号】100104204
【弁理士】
【氏名又は名称】峯岸 武司
(72)【発明者】
【氏名】石井 宏一良
【審査官】金沢 史明
(56)【参考文献】
【文献】特開平08-227269(JP,A)
【文献】特開2008-122804(JP,A)
【文献】米国特許第05623548(US,A)
(58)【調査した分野】(Int.Cl.,DB名)
G09C 1/00
H04L 9/00- 9/38
(57)【特許請求の範囲】
【請求項1】
識別値生成手段により、秘匿用暗号化文をメモリに保存する保存先を指定するアドレス値に平文を付加して第1結合値を生成し、前記第1結合値のハッシュ値を演算し、前記第1結合値のハッシュ値における所定位置の値から識別値を生成する識別値生成ステップと、暗号化手段により、前記平文を暗号化して暗号化文を生成する暗号化ステップと、第1比較手段により、乱数発生手段で発生される乱数を前記アドレス値に付加して第2結合値を生成し、前記第2結合値のハッシュ値を演算し、前記第2結合値のハッシュ値の所定位置の値と前記識別値とを比較し、比較結果が一致しない場合には、前記乱数発生手段で次に発生される乱数を前記アドレス値にさらに付加して新たな前記第2結合値を生成する処理、新たな前記第2結合値のハッシュ値を演算する処理、および、新たな前記第2結合値のハッシュ値における所定位置の値と前記識別値とを比較する処理を比較結果が一致するまで繰り返す第1比較ステップと、撹拌手段により、前記第1比較ステップにおける比較結果が一致したときまでに発生される前記乱数の数列を撹拌テーブルとして前記暗号化文を撹拌して撹拌暗号化文を生成する撹拌ステップと、秘匿暗号化手段により、前記撹拌暗号化文に前記乱数の数列を付加して前記秘匿用暗号化文を生成する秘匿暗号化ステップと、保存手段により、生成した前記秘匿用暗号化文を前記アドレス値によって指定されるアドレスの前記メモリに保存する保存ステップと、読出手段により、前記アドレス値によって指定されるアドレスの前記メモリから前記秘匿用暗号化文を読み出す読出ステップと、第2比較手段により、読み出した前記秘匿用暗号化文の所定位置の値を前記乱数の数列を構成する乱数として抽出し、抽出した当該乱数を前記アドレス値に付加して第3結合値を生成し、前記第3結合値のハッシュ値を演算し、前記第3結合値のハッシュ値における所定位置の値を前記識別値と比較し、比較結果が一致しない場合には、読み出した前記秘匿用暗号化文の所定位置の値に連続して並ぶ位置の値を前記乱数の数列を構成する次の乱数として前記アドレス値にさらに付加した新たな前記第3結合値を生成する処理、新たな前記第3結合値のハッシュ値を演算する処理、および、新たな前記第3結合値のハッシュ値における所定位置の値と前記識別値とを比較する処理を比較結果が一致するまで繰り返す第2比較ステップと、撹拌テーブル抽出手段により、前記第2比較ステップにおける比較結果が一致したときに得られる前記乱数の数列を前記撹拌テーブルとして抽出する撹拌テーブル抽出ステップと、撹拌暗号化文抽出手段により、抽出した前記撹拌テーブルを読み出した前記秘匿用暗号化文から取り除いた文を前記撹拌暗号化文として抽出する撹拌暗号化文抽出ステップと、逆変換手段により、抽出した前記撹拌暗号化文を抽出した前記撹拌テーブルに基づいて逆変換して前記暗号化文に戻す逆変換ステップと、復号化手段により、逆変換されて得られた前記暗号化文を復号化して前記平文を得る復号化ステップとを備える平文暗号化復号化方法。
【請求項2】
第3比較手段により、前記復号化ステップで復号化された前記平文を前記アドレス値に付加して第4結合値を生成し、前記第4結合値のハッシュ値を演算し、前記第4結合値のハッシュ値における所定位置の値を前記識別値と比較する第3比較ステップと、改ざん判定手段により、前記第3比較ステップの比較結果から前記秘匿用暗号化文に対する改ざんの有無を判定する改ざん判定ステップとを備えることを特徴とする請求項1に記載の平文暗号化復号化方法。
【請求項3】
前記暗号化ステップにおける暗号化は前記平文を所定長の前記暗号化文に変換することで行われ、
前記撹拌ステップにおける撹拌は、前記撹拌テーブルを構成する各乱数値を前記所定長で除した剰余値に基づいて、前記暗号化文における各値の位置を交換して行うことで行われ、
前記逆変換ステップにおける逆変換は、抽出した前記撹拌テーブルを構成する各乱数値を前記所定長で除した剰余値に基づいて、前記撹拌暗号化文における各値の位置を元の位置に戻して行うことを特徴とする請求項1または請求項2に記載の平文暗号化復号化方法。
【請求項4】
前記撹拌ステップにおける撹拌は、前記撹拌テーブルを構成する各乱数値を前記暗号化文の全ての各値に作用させる行列計算による線形変換処理を使って行われ、
前記逆変換ステップにおける逆変換は、前記行列計算の逆行列計算による線形変換処理を使って行われることを特徴とする請求項1または請求項2に記載の平文暗号化復号化方法。
【請求項5】
前記メモリは乱数で初期化されていることを特徴とする請求項1から請求項4のいずれか1項に記載の平文暗号化復号化方法。
【請求項6】
前記識別値生成ステップは、前記アドレス値の末尾に前記平文を付加した前記第1結合値のハッシュ値における末尾の値から前記識別値を生成し、
前記第1比較ステップは、前記乱数発生手段で発生される乱数を前記アドレス値の末尾に付加して得られる前記第2結合値のハッシュ値における末尾の値と前記識別値とを比較し、比較結果が一致しない場合には、前記乱数発生手段で次に発生される乱数を前記アドレス値の末尾にさらに付加して得られる新たな前記第2結合値のハッシュ値における末尾の値と前記識別値とを比較することで行われ、
前記撹拌ステップは、前記第2結合値のハッシュ値における末尾の値と前記識別値とが一致するときまでに前記アドレス値の末尾に付加された前記乱数の数列を前記撹拌テーブルとすることで行われ、
前記第2比較ステップは、読み出した前記秘匿用暗号化文の末尾の値を前記アドレス値の末尾に付加した前記第3結合値のハッシュ値における末尾の値を前記識別値とを比較し、比較結果が一致しない場合には、読み出した前記秘匿用暗号化文の末尾から遡る値を前記アドレス値の末尾にさらに付加した新たな前記第3結合値のハッシュ値における末尾の値と前記識別値とを比較することで行われ、
前記撹拌テーブル抽出ステップは、前記第3結合値のハッシュ値における末尾の値と前記識別値とが一致したときに前記アドレス値の末尾に並ぶ値の数列を前記撹拌テーブルとすることで行われること特徴とする請求項1から請求項5のいずれか1項に記載の平文暗号化復号化方法。
【請求項7】
前記第3比較ステップは、前記復号化ステップで復号化された前記平文を前記アドレス値の末尾に付加した前記第4結合値のハッシュ値における末尾の値を前記識別値と比較することで行われることを特徴とする請求項2を引用する請求項6に記載の平文暗号化復号化方法。
【請求項8】
秘匿用暗号化文をメモリに保存する保存先を指定するアドレス値に平文を付加して第1結合値を生成し、前記第1結合値のハッシュ値を演算し、前記第1結合値のハッシュ値における所定位置の値から識別値を生成する識別値生成手段と、前記平文を暗号化して暗号化文を生成する暗号化手段と、乱数を発生する乱数発生手段と、前記乱数発生手段で発生される乱数を前記アドレス値に付加して第2結合値を生成し、前記第2結合値のハッシュ値を演算し、前記第2結合値のハッシュ値の所定位置の値と前記識別値とを比較し、比較結果が一致しない場合には、前記乱数発生手段で次に発生される乱数を前記アドレス値にさらに付加して新たな前記第2結合値を生成する処理、新たな前記第2結合値のハッシュ値を演算する処理、および、新たな前記第2結合値のハッシュ値における所定位置の値と前記識別値とを比較する処理を比較結果が一致するまで繰り返す第1比較手段と、前記第1比較手段における比較結果が一致したときまでに発生される前記乱数の数列を撹拌テーブルとして前記暗号化文を撹拌して撹拌暗号化文を生成する撹拌手段と、前記撹拌暗号化文に前記乱数の数列を付加して前記秘匿用暗号化文を生成する秘匿暗号化手段と、生成した前記秘匿用暗号化文を前記アドレス値によって指定されるアドレスの前記メモリに保存する保存手段と、前記アドレス値によって指定されるアドレスの前記メモリから前記秘匿用暗号化文を読み出す読出手段と、読み出した前記秘匿用暗号化文の所定位置の値を前記乱数の数列を構成する乱数として抽出し、抽出した当該乱数を前記アドレス値に付加して第3結合値を生成し、前記第3結合値のハッシュ値を演算し、前記第3結合値のハッシュ値における所定位置の値を前記識別値と比較し、比較結果が一致しない場合には、読み出した前記秘匿用暗号化文の所定位置の値に連続して並ぶ位置の値を前記乱数の数列を構成する次の乱数として前記アドレス値にさらに付加した新たな前記第3結合値を生成する処理、新たな前記第3結合値のハッシュ値を演算する処理、および、新たな前記第3結合値のハッシュ値における所定位置の値と前記識別値とを比較する処理を比較結果が一致するまで繰り返す第2比較手段と、前記第2比較手段における比較結果が一致したときに得られる前記乱数の数列を前記撹拌テーブルとして抽出する撹拌テーブル抽出手段と、抽出した前記撹拌テーブルを読み出した前記秘匿用暗号化文から取り除いた文を前記撹拌暗号化文として抽出する撹拌暗号化文抽出手段と、抽出した前記撹拌暗号化文を抽出した前記撹拌テーブルに基づいて逆変換して前記暗号化文に戻す逆変換手段と、逆変換されて得られた前記暗号化文を復号化して前記平文を得る復号化手段とを備える平文暗号化復号化装置。
【請求項9】
前記復号化手段で復号化された前記平文を前記アドレス値に付加して第4結合値を生成し、前記第4結合値のハッシュ値を演算し、前記第4結合値のハッシュ値における所定位置の値を前記識別値と比較する第3比較手段と、前記第3比較手段の比較結果から前記秘匿用暗号化文に対する改ざんの有無を判定する改ざん判定手段とを備えることを特徴とする請求項8に記載の平文暗号化復号化装置。
【発明の詳細な説明】
【技術分野】
【0001】
本発明は、平文の暗号化文を撹拌テーブルによって撹拌して秘匿化する平文暗号化復号化方法および平文暗号化復号化装置に関するものである。
【背景技術】
【0002】
従来、この種の平文暗号化復号化方法および装置としては、例えば、特許文献1に開示された暗号化方法および復号化方法、装置がある。
【0003】
この方法、装置では、一般化Feistel構造を有する2つのFeistel処理手段の間に拡散処理手段を配置した構成の暗号化手段が用いられる。平文はn個に分割されて1つ目のFeistel処理手段に入力される。各Feistel処理手段は、それぞれ、鍵データにて非線形変換を行う1ラウンド以上のn系列一般化Feistel構造によって構成される。1つ目のFeistel処理手段で処理されたデータは、その後、拡散処理手段に入力される。拡散処理手段は、n行n列の行列で表現される拡散テーブルを使った行列計算を行い、n個の入力データを拡散テーブルの各数値に掛け合わして拡散する。拡散されたn個の出力データは、その後、2つ目のFeistel処理手段に入力されて処理されることで、暗号文に変換される。
【先行技術文献】
【特許文献】
【0004】
【文献】国際公開第2009/075337号
【発明の概要】
【発明が解決しようとする課題】
【0005】
しかしながら、特許文献1に開示されたような従来の平文暗号化および復号化方法、装置における拡散(撹拌、アフィン)処理は、上記の拡散テーブルのようなメモリに記憶されて固定されたテーブルに基づいて行われる。したがって、拡散処理の鍵となる拡散テーブルが公開されていたり、総当たりで露見したりすると、拡散処理されたデータは容易に元の拡散前のデータに戻すことができる。このため、このような固定テーブルを用いて拡散処理が行われた暗号文は、その秘匿性が十分に保たれない。また、従来の方法および装置では、固定テーブルのテーブル値をメモリに保存しておく記憶領域が必要となり、メモリの増大化につながる。
【0006】
本発明は、このような課題を解消するためになされたもので、暗号文の秘匿性を向上させることができると共に、メモリの増大化を招くことのない平文暗号化復号化方法および平文暗号化復号化装置を提供することを目的とする。
【課題を解決するための手段】
【0007】
このために、本発明は、識別値生成手段により、秘匿用暗号化文をメモリに保存する保存先を指定するアドレス値に平文を付加して第1結合値を生成し、第1結合値のハッシュ値を演算し、第1結合値のハッシュ値における所定位置の値から識別値を生成する識別値生成ステップと、暗号化手段により、平文を暗号化して暗号化文を生成する暗号化ステップと、第1比較手段により、乱数発生手段で発生される乱数を前記アドレス値に付加して第2結合値を生成し、第2結合値のハッシュ値を演算し、第2結合値のハッシュ値の所定位置の値と識別値とを比較し、比較結果が一致しない場合には、乱数発生手段で次に発生される乱数を前記アドレス値にさらに付加して新たな第2結合値を生成する処理、新たな第2結合値のハッシュ値を演算する処理、および、新たな第2結合値のハッシュ値における所定位置の値と識別値とを比較する処理を比較結果が一致するまで繰り返す第1比較ステップと、撹拌手段により、第1比較ステップにおける比較結果が一致したときまでに発生される乱数の数列を撹拌テーブルとして暗号化文を撹拌して撹拌暗号化文を生成する撹拌ステップと、秘匿暗号化手段により、撹拌暗号化文に前記乱数の数列を付加して秘匿用暗号化文を生成する秘匿暗号化ステップと、保存手段により、生成した秘匿用暗号化文を前記アドレス値によって指定されるアドレスのメモリに保存する保存ステップと、読出手段により、前記アドレス値によって指定されるアドレスのメモリから秘匿用暗号化文を読み出す読出ステップと、第2比較手段により、読み出した秘匿用暗号化文の所定位置の値を前記乱数の数列を構成する乱数として抽出し、抽出した当該乱数を前記アドレス値に付加して第3結合値を生成し、第3結合値のハッシュ値を演算し、第3結合値のハッシュ値における所定位置の値を識別値と比較し、比較結果が一致しない場合には、読み出した秘匿用暗号化文の所定位置の値に連続して並ぶ位置の値を前記乱数の数列を構成する次の乱数として前記アドレス値にさらに付加した新たな第3結合値を生成する処理、新たな第3結合値のハッシュ値を演算する処理、および、新たな第3結合値のハッシュ値における所定位置の値と識別値とを比較する処理を比較結果が一致するまで繰り返す第2比較ステップと、撹拌テーブル抽出手段により、第2比較ステップにおける比較結果が一致したときに得られる乱数の数列を撹拌テーブルとして抽出する撹拌テーブル抽出ステップと、撹拌暗号化文抽出手段により、抽出した撹拌テーブルを読み出した秘匿用暗号化文から取り除いた文を撹拌暗号化文として抽出する撹拌暗号化文抽出ステップと、逆変換手段により、抽出した撹拌暗号化文を抽出した撹拌テーブルに基づいて逆変換して暗号化文に戻す逆変換ステップと、復号化手段により、逆変換されて得られた暗号化文を復号化して平文を得る復号化ステップとを備える平文暗号化復号化方法を構成した。
【0008】
また、本発明は、秘匿用暗号化文をメモリに保存する保存先を指定するアドレス値に平文を付加して第1結合値を生成し、第1結合値のハッシュ値を演算し、第1結合値のハッシュ値における所定位置の値から識別値を生成する識別値生成手段と、平文を暗号化して暗号化文を生成する暗号化手段と、乱数を発生する乱数発生手段と、乱数発生手段で発生される乱数を前記アドレス値に付加して第2結合値を生成し、第2結合値のハッシュ値を演算し、第2結合値のハッシュ値の所定位置の値と識別値とを比較し、比較結果が一致しない場合には、乱数発生手段で次に発生される乱数を前記アドレス値にさらに付加して新たな第2結合値を生成する処理、新たな第2結合値のハッシュ値を演算する処理、および、新たな第2結合値のハッシュ値における所定位置の値と識別値とを比較する処理を比較結果が一致するまで繰り返す第1比較手段と、第1比較手段における比較結果が一致したときまでに発生される乱数の数列を撹拌テーブルとして暗号化文を撹拌して撹拌暗号化文を生成する撹拌手段と、撹拌暗号化文に前記乱数の数列を付加して秘匿用暗号化文を生成する秘匿暗号化手段と、生成した秘匿用暗号化文を前記アドレス値によって指定されるアドレスのメモリに保存する保存手段と、前記アドレス値によって指定されるアドレスのメモリから秘匿用暗号化文を読み出す読出手段と、読み出した秘匿用暗号化文の所定位置の値を前記乱数の数列を構成する乱数として抽出し、抽出した当該乱数を前記アドレス値に付加して第3結合値を生成し、第3結合値のハッシュ値を演算し、第3結合値のハッシュ値における所定位置の値を識別値と比較し、比較結果が一致しない場合には、読み出した秘匿用暗号化文の所定位置の値に連続して並ぶ位置の値を前記乱数の数列を構成する次の乱数として前記アドレス値にさらに付加した新たな第3結合値を生成する処理、新たな第3結合値のハッシュ値を演算する処理、および、新たな第3結合値のハッシュ値における所定位置の値と識別値とを比較する処理を比較結果が一致するまで繰り返す第2比較手段と、第2比較手段における比較結果が一致したときに得られる乱数の数列を撹拌テーブルとして抽出する撹拌テーブル抽出手段と、抽出した撹拌テーブルを読み出した秘匿用暗号化文から取り除いた文を撹拌暗号化文として抽出する撹拌暗号化文抽出手段と、抽出した撹拌暗号化文を抽出した撹拌テーブルに基づいて逆変換して暗号化文に戻す逆変換手段と、逆変換されて得られた暗号化文を復号化して平文を得る復号化手段とを備える平文暗号化復号化装置を構成した。
【0009】
本構成によれば、乱数発生手段で発生される各乱数が、秘匿用暗号化文を保存するメモリのアドレス値に順に付加されていくことで、第2結合値が生成される。生成された第2結合値はそのハッシュ値が演算され、演算されたハッシュ値の所定位置の値と識別値とが比較される。撹拌テーブルは、その比較結果、第2結合値のハッシュ値の所定位置の値と識別値とが一致したときまでに発生される乱数の数列として、その時々に応じて動的に生成される。暗号化文の撹拌は、このように動的に生成される撹拌テーブルを用いて、行われる。
【0010】
したがって、メモリに固定して記憶された撹拌テーブルを用いてデータの撹拌が行われる従来の平文暗号化復号化方法および装置とは異なり、撹拌処理の鍵となる撹拌テーブルが公開されたり、総当たりで露見したりする事態は生じない。このため、撹拌処理されたデータを容易に元の撹拌前のデータに戻すことが困難になり、暗号文の秘匿性は向上する。また、従来のように、固定テーブルのテーブル値をメモリに保存しておく記憶領域が必要とされないため、メモリが増大化することもない。
【発明の効果】
【0011】
このため、本発明によれば、暗号文の秘匿性を向上させることができると共に、メモリの増大化を招くことのない平文暗号化復号化方法および平文暗号化復号化装置を提供することができる。
【図面の簡単な説明】
【0012】
図1】本発明の一実施形態による平文暗号化復号化装置を構成するホストの機能構成を示すブロック図である。
図2】本発明の一実施形態による平文暗号化復号化方法によって行われる平文の暗号化処理を示すフローチャートである。
図3図2に示す平文の暗号化処理において行われる暗号化文の撹拌処理を説明するためのテーブルである。
図4】本発明の一実施形態による平文暗号化復号化方法によって行われる平文の復号化処理を示すフローチャートである。
【発明を実施するための形態】
【0013】
次に、本発明による平文暗号化復号化方法および平文暗号化復号化装置を実施するための形態について、説明する。
【0014】
図1は、本発明の一実施形態による平文暗号化復号化装置を構成するホスト(HOST)1の機能構成を示すブロック図である。
【0015】
HOST1はパーソナルコンピュータ(PC)やマイクロコンピュータ(通称マイコン)などであり、EEPROM(Electrically Erasable Programmable Read-Only Memory)である外部メモリ2と、HSM(Hardware Security Module)3に接続されている。外部メモリ2は、EEPROMに限られることはなく、DDR(Double Data Rate)やNAND FLASH(NAND Fash Memory)などでもよい。この外部メモリ2は乱数で初期化されている。また、HSM3は、暗号鍵を保護するために特別に設計された暗号プロセッサである。
【0016】
HOST1は、内部メモリ1a、識別値生成手段1b、暗号化手段1c、乱数発生手段1d、第1比較手段1e、撹拌手段1f、秘匿暗号化手段1g、保存手段1h、読出手段1i、第2比較手段1j、撹拌テーブル抽出手段1k、撹拌暗号化文抽出手段1l、逆変換手段1m、復号化手段1n、第3比較手段1o、および、改ざん判定手段1pを機能ブロックとして備える。
【0017】
HOST1は、図示しないCPU(中央演算処理装置)、および、内部メモリ1aであるROM(読み出し専用メモリ)やRAM(読み書き可能メモリ)を備えるICモジュールとして構成されている。
【0018】
CPUは、ROMに記憶されたコンピュータプログラムにしたがって各部の制御を行う。上記の各手段1b~1pは、このCPUのコンピュータプログラムにしたがったソフトウエア制御によって実現される。しかし、これらはCPUのソフトウエア制御に代えて、電子回路によるハードウエアによって実現するように、構成してもよい。ROMには、コンピュータプログラムの他、演算パラメータや各種のテーブルなどが格納される。RAMには、CPUの制御処理などで使用されるパラメータなどが一時的に記憶され、一時記憶作業領域として使用される。
【0019】
HOST1は、内部メモリ1aに記憶されたまたは外部から入力された平文Hを暗号化し、内部メモリ1aに記憶されたまたは外部から入力されたアドレス値Aによって指定される外部メモリ2に、暗号化された後述する秘匿暗号化文Zを保存する。図2に示すフローチャートは、この際にCPUによって行われる平文Hの暗号化処理、図4に示すフローチャートは、外部メモリ2から読み出した秘匿暗号化文ZをCPUによって平文Hに復号化する復号化処理を表わす。以下の説明では、オリジナルデータである平文Hは、5バイトの16進数により“15 5d 39 c0 7d”と表わされ、4バイトの16進数により表わされるアドレス値A=“df 94 f5 2c”で指定されるアドレスの外部メモリ2に保存されるものとする。
【0020】
平文の暗号化処理においては、まず、図2、ステップ(以下、Sと記す)101の識別値生成ステップにおいて、識別値生成手段1bにより、アドレス値Aの末尾に平文Hが付加されて第1結合値{アドレス値・平文}=“df 94 f5 2c 15 5d 39 c0 7d”が生成され、その第1結合値のハッシュ値HASH1=“55 89 94 9d 02 d5 55 1c 2c 94 20 0f 22 da a0 20 8d 01 d8 a2 51 bb e9 27 61 22 aa ac 96 1f af ad”がハッシュ関数によって演算される。本実施形態では、ハッシュ関数にSHA-256を使っているが、SHA-512やMD5などをつかってもよい。識別値生成手段1bは、演算したハッシュ値HASH1における所定位置の値、本実施形態ではHASH1の末尾の下2桁にある値“ad”を識別値として生成し、秘匿情報であるHASH-IDとしてHSM3等に保存する。
【0021】
次に、S102の暗号化ステップにおいて、暗号化手段1cにより、平文Hが暗号化されて8バイトの所定長の暗号化文X=“02 a3 f9 76 21 d3 4a c9”が生成される。
【0022】
次に、第1比較ステップを構成するS103において、第1比較手段1eにより、乱数発生手段1dで発生される各乱数値Rによって乱数列B=“4a”、“fc 4a”…が順に生成される。そして、第1比較ステップを構成するS104において、乱数発生手段1dで発生される乱数値Rが第1比較手段1eによりアドレス値Aの末尾に順に付加されていって、第2結合値{アドレス値・乱数列}=“df 94 f5 2c 4a”、“df 94 f5 2c fc 4a”…が順に生成される。生成される各第2結合値は、第1比較手段1eにより、ハッシュ関数によってハッシュ化されて、ハッシュ値HASH2が生成される。例えば、S103において乱数列B=“fc 4a”が生成されたときには、S104において第2結合値=“df 94 f5 2c fc 4a”からHASH2=“0d 49 21 78 0a f7 65 2b 9a 02 8e d6 22 ac 1c 95 43 2e c3 ee 02 74 56 68 e1 9f 86 c1 b1 3e 03 93”が生成される。
【0023】
次に、S103およびS104と共に第1比較ステップを構成するS105において、乱数値Rがアドレス値Aの末尾に付加して得られる第2結合値のHASH2における末尾の下2桁の値と、S101で生成されたHASH1における末尾の下2桁の値であるHASH-IDとが、第1比較手段1eによって比較される。その比較結果がNoで一致しない場合には、処理はS103に戻り、乱数発生手段1dで次に新たに発生される乱数値Rが乱数列Bの先頭に加えられる。そして、S104において、新たな乱数列Bがアドレス値Aの末尾に付加されて、言い換えれば、新たに発生された乱数値Rがアドレス値Aの末尾にさらに付加されて、新たな第2結合値が生成され、新たな第2結合値のHASH2が演算される。そして、S105において、再度、新たなHASH2における末尾の下2桁の値とHASH-IDとが比較される。
【0024】
S103~S105の処理は、HASH2における末尾の下2桁の値とHASH-IDとが一致されるまで、繰り返される。しかし、HASH2のデータ長が、設定で上限に決められていたサイズを超える場合、一時記憶領域として使用される内部メモリ1aのメモリ容量を超えないように、乱数列Bがリセットされて、S103~S105の処理が再実施される。
【0025】
S103で例えば乱数列B=“81 94 0a e6 9b 76 cb 66 fc 4a”が生成され、S104で演算されるHASH2が“4b.....................d 27 22 ad”と演算されると、HASH2における末尾の下2桁の値とHASH-IDとが“ad”で一致して、S105における比較結果がYesとなる。この場合、撹拌ステップを構成するS106において、S105における比較結果が一致したときまでに乱数発生手段1dによって発生されて、アドレス値Aの末尾に付加された乱数値Rの数列B=“81 94 0a e6 9b 76 cb 66 fc 4a”が比較手段1eから撹拌手段1fに入力され、その数列Bが撹拌手段1fによって撹拌テーブルとされる。そして、撹拌ステップをS106と共に構成するS107において、撹拌手段1fによって暗号化文Xが撹拌されて、撹拌暗号化文Yが生成される。
【0026】
この撹拌処理は、本実施形態では、撹拌テーブルを構成する各乱数値Rを暗号化文Xの長さである8で除した剰余値に基づいて、暗号化文Xにおける各値の位置が交換されて行われる。すなわち、まず、撹拌テーブルを構成する各乱数値R(=16進数)81, 94, 0a, e6, 9b, 76, cb, 66, fc, 4aが暗号化文Xの長さ8でモジュロ演算され、撹拌テーブルは、演算式81 mod 8 = 1, 94 mod 8 = 4, 0a mod 8 = 2, e6 mod 8 = 6, 9b mod 8 = 5, 76 mod 8 = 6, cb mod 8 = 5, 66 mod 8 = 6, fc mod 8 = 4, 4a mod 8 = 2から求まる数列C=“1 4 2 6 5 6 5 6 4 2”に変換される。この変換により、数列Cを構成する各値は、暗号化文Xの長さ8未満の値になる。
【0027】
暗号化文X=“02 a3 f9 76 21 d3 4a c9”は、この数列C=“1 4 2 6 5 6 5 6 4 2”に基づいて、図3のテーブルに示すように、各値の位置が交換されて、撹拌される。つまり、数列Cの各値は、暗号化文Xの各値の0~7の位置を表わすインデックスとして扱われ、数列Cの先頭から2つの値“1 4”により、暗号化文Xのインデックス1の位置にある値“a3”と、インデックス4の位置にある値“21”とが交換され、暗号化文Xは暗号化文X1=“02 21 f9 76 a3 d3 4a c9”に変換される。次に、数列Cの値“1 4”に続く2つの値“2 6”により、暗号化文X1のインデックス2の位置にある値“f9”と、インデックス6の位置にある値“4a”とが交換され、暗号化文X1は暗号化文X2=“02 21 4a 76 a3 d3 f9 c9”に変換される。
【0028】
次に、数列Cの値“2 6”に続く2つの値“5 6”により、暗号化文X2のインデックス5の位置にある値“d3”と、インデックス6の位置にある値“f9”とが交換され、暗号化文X2は暗号化文X3=“02 21 4a 76 a3 f9 d3 c9”に変換される。次に、数列Cの値“5 6”に続く2つの値“5 6”により、暗号化文X3のインデックス5の位置にある値“f9”と、インデックス6の位置にある値“d3”とが交換され、暗号化文X3は暗号化文X4=“02 21 4a 76 a3 d3 f9 c9”に変換される。次に、数列Cの値“5 6”に続く2つの値“4 2”により、暗号化文X4のインデックス4の位置にある値“a3”と、インデックス2の位置にある値“4a”とが交換され、暗号化文X4は暗号化文X5=“02 21 a3 76 4a d3 f9 c9”に変換される。撹拌手段1fは、この暗号化文X5=“02 21 a3 76 4a d3 f9 c9”を撹拌暗号化文Yとし、秘匿暗号化手段1gへ出力する。
【0029】
次に、秘匿暗号化ステップおよび保存ステップを構成する図2のS108において、秘匿暗号化手段1gにより、撹拌暗号化文Y=“02 21 a3 76 4a d3 f9 c9”の末尾に、撹拌テーブルのテーブル値を構成する数列B=“81 94 0a e6 9b 76 cb 66 fc 4a”が付加されて、秘匿用暗号化文Z=“02 21 a3 76 4a d3 f9 c9 81 94 0a e6 9b 76 cb 66 fc 4a”が生成される。生成されたこの秘匿用暗号化文Zは、保存手段1hにより、アドレス値A=“df 94 f5 2c”によって指定されるアドレスの外部メモリ2に保存される。
【0030】
秘匿暗号化文Zの復号化処理においては、まず、図4,S201の読出ステップにおいて、読出手段1iにより、アドレス値Aによって指定されるアドレスの外部メモリ2から秘匿用暗号化文Zが読み出される。次に、第2比較ステップを構成するS202において、第2比較手段1jにより、読み出された秘匿用暗号化文Zの所定位置の値に、その所定位置の値に連続して並ぶ各位置の値が順に付加されていって、乱数値Rの数列Bが再生される。本実施形態では、秘匿用暗号化文Zの末尾の下2桁の値“4a”に、その値“4a”に遡って連続して並ぶ各位置の値“fc”、“66”、“cb”…が順に加えられていって、乱数値Rの数列B=“…cb 66 fc 4a”が再生される。そして、その数列Bがアドレス値A=“df 94 f5 2c”の末尾に付加されて、第3結合値{アドレス値・乱数列}=“df 94 f5 2c 4a”、“df 94 f5 2c fc 4a”…が順に生成される。生成される各第3結合値は、第2比較手段1jにより、ハッシュ関数でハッシュ化されて、ハッシュ値HASH3が生成される。
【0031】
次に、第2比較ステップをS202と共に構成するS203において、第3結合値のハッシュ値HASH3における所定位置の値、本実施形態では末尾の下2桁の値が、第2比較手段1jによってHASH-IDと比較される。その比較結果がNoで一致しない場合には、処理はS202に戻り、読み出された秘匿用暗号化文Zの末尾から遡る値がアドレス値Aの末尾にさらに付加されて、新たな第3結合値が生成される。そして、新たな第3結合値のハッシュ値HASH3が演算されて、S203において、再度、HASH3における末尾の下2桁の値とHASH-IDとが比較される。
【0032】
S203において、HASH3における末尾の下2桁の値とHASH-IDとが“ad”で一致して、比較結果がYesになると、次に、S204の撹拌テーブル抽出ステップが行われる。このとき、秘匿用暗号化文Zの末尾から遡る全ての値がアドレス値Aの末尾に付加されて生成された第3結合値についてのHASH3における末尾の下2桁の値が、HASH-IDと一致しない場合には、秘匿用暗号化文Zが改ざんされていると、見なすことができる。
【0033】
ステップS204では、第2比較手段1jにおける比較結果が一致したときにアドレス値Aの末尾に並んで得られる乱数値Rの数列B=“81 94 0a e6 9b 76 cb 66 fc 4a”が、撹拌テーブル抽出手段1kによって撹拌テーブルとして抽出される。次に、S205の撹拌暗号化文抽出ステップにおいて、S204で抽出された撹拌テーブルが、撹拌暗号化文抽出手段1lにより、S201で読み出された秘匿用暗号化文Zから取り除かれ、撹拌テーブルと秘匿用暗号化文Zとが分離される。そして、撹拌テーブルが取り除かれた文が、撹拌暗号化文抽出手段1lによって撹拌暗号化文Y=“02 21 a3 76 4a d3 f9 c9”として抽出される。
【0034】
次に、S206の逆変換ステップにおいて、S205で抽出された撹拌暗号化文Yが、逆変換手段1mにより、S204で抽出された撹拌テーブルに基づいて逆変換されて、暗号化文Xに戻される。すなわち、撹拌テーブルを構成する各乱数値R81, 94, 0a, e6, 9b, 76, cb, 66, fc, 4aが暗号化文Xの長さ8でモジュロ演算され、撹拌テーブルを構成する各値が、上述した各モジュロ演算式によって数列C=“1 4 2 6 5 6 5 6 4 2”に変換される。そして、この数列C=“1 4 2 6 5 6 5 6 4 2”に基づいて、図3のテーブルに示すように、撹拌暗号化文Y=“02 21 a3 76 4a d3 f9 c9”の各値の位置が、暗号化文X5~X1へ向かって逆に元に戻されて、暗号化文X=“02 a3 f9 76 21 d3 4a c9”に逆変換される。
【0035】
次に、S207の復号化ステップにおいて、逆変換されて得られた暗号化文Xが復号化手段1nによって復号化されて、元の平文H=“15 5d 39 c0 7d”に変換される。次に、第3比較ステップを構成するS208において、第3比較手段1oにより、復号化手段1nで復号化された平文H=“15 5d 39 c0 7d”がアドレス値A=“df 94 f5 2c”の末尾に付加されて、第4結合値{アドレス値・平文}=“df 94 f5 2c 15 5d 39 c0 7d”が生成される。そして、その第4結合値のハッシュ値HASH4=“55 89 94 9d 02 d5 55 1c 2c 94 20 0f 22 da a0 20 8d 01 d8 a2 51 bb e9 27 61 22 aa ac 96 1f af ad”がハッシュ関数によって演算され、そのHASH4における所定位置の値である末尾の下2桁の値が、第3比較手段1oによってHASH-IDと比較される。
【0036】
次に、第3比較ステップと共に改ざん判定ステップを構成するS208において、改ざん判定手段1pにより、第3比較手段1oの比較結果から、秘匿用暗号化文Zに対する改ざんの有無が判定される。
【0037】
このような本実施形態の平文暗号化復号化方法および平文暗号化復号化装置によれば、乱数発生手段1dで発生される各乱数値Rが、秘匿用暗号化文Zを保存する外部メモリ2のアドレス値Aに図2,S104で順に付加されていくことで、第2結合値=“df 94 f5 2c 4a”、“df 94 f5 2c fc 4a”…が生成される。生成された第2結合値はそのハッシュ値HASH2が演算され、演算されたハッシュ値HASH2の末尾の下2桁の値とHASH-IDとが図2,S105で比較される。撹拌テーブルは、その比較結果、第2結合値のハッシュ値HASH2の末尾の下2桁の値とHASH-IDとが一致したときまでに発生される乱数の数列Bとして、S106でその時々に応じて動的に生成される。暗号化文Xの撹拌は、このように動的に生成される撹拌テーブルを用いて、図3に示すように行われる。
【0038】
したがって、本実施形態によれば、メモリに固定して記憶された撹拌テーブルを用いてデータの撹拌が行われる従来の平文暗号化復号化方法および装置とは異なり、撹拌処理の鍵となる撹拌テーブルが公開されたり、総当たりで露見したりする事態は生じない。このため、撹拌処理されたデータを容易に元の撹拌前のデータに戻すことが困難になり、秘匿暗号化文Zの秘匿性は向上する。また、従来のように、固定テーブルのテーブル値をメモリに保存しておく記憶領域が必要とされないため、内部メモリ1aや外部メモリ2が増大化することもない。
【0039】
このため、本実施形態の平文暗号化復号化方法および平文暗号化復号化装置によれば、暗号文の秘匿性を向上させることができると共に、メモリの増大化を招くことのない平文暗号化復号化方法および平文暗号化復号化装置を提供することができる。
【0040】
また、従来の平文暗号化復号化方法および装置では、例えば、秘匿用暗号化文Zが記憶された外部メモリ2に別のメモリのデータが上書きされて書き換えられても、改ざんが行われたか否かは分からない。また、秘匿用暗号化文Zが記憶された外部メモリ2の一部のデータが書き換えられても、復号化したデータが化けたと判断できるデータ構造でない限り、改ざんは判明しない。しかし、本実施形態の平文暗号化復号化方法および平文暗号化復号化装置では、図4,S207において復号化手段1nで復号化された平文Hが、S208において、秘匿用暗号化文Zを保存する外部メモリ2のアドレス値Aに付加されることで第4結合値=“df 94 f5 2c 15 5d 39 c0 7d”が生成され、第4結合値のハッシュ値HASH4における末尾の下2桁の値がHASH-ID=“ad”と比較される。
【0041】
HASH-IDは、アドレス値Aに元の平文Hが付加されることで図2,S101で生成される第1結合値のハッシュ値HASH1における末尾の下2桁の値から生成されている。したがって、第4結合値のハッシュ値HASH4における末尾の下2桁の値は、秘匿用暗号化文Zに対する改ざんが無ければ、第1結合値のハッシュ値HASH1における末尾の下2桁の値、つまり、HASH-IDに一致するはずである。このため、本実施形態の平文暗号化復号化方法および平文暗号化復号化装置によれば、第4結合値のハッシュ値HASH4における末尾の下2桁の値をHASH-IDと比較することで、秘匿用暗号化文Zに対する改ざんの有無を判定することができる。
【0042】
また、改ざんを行うためには平文Hを知らなくてはならず、平文Hを知らないままで改ざんを行うしかなくなる。しかし、秘匿用暗号化文Zに対する改ざんを行うことによって、秘匿暗号化文Zにおける撹拌暗号化文Yの値や各値の位置が変わってしまい、撹拌暗号化文Yから戻される平文Hの値や各値の位置が変わってしまって、秘匿用暗号化文Zから元の平文Hに戻らなくなる。したがって、秘匿用暗号化文Zに対する改ざんが行われた場合、第4結合値のハッシュ値HASH4における末尾の下2桁の値とHASH-IDとが合致する可能性はかなり低くなる。このため、秘匿用暗号化文Zに対する改ざんを検出することが可能となり、改ざんを防止することが可能となる。
【0043】
また、本実施形態では、撹拌テーブルを上記のように第1結合値のハッシュ値HASH1や第2結合値のハッシュ値HASH2と関連付けて、図2,S106で動的に撹拌テーブルを生成することにより、撹拌テーブルの大きさを抑制しながら改ざん防止性を高めることができている。その結果、平文Hの暗号化復号化の処理を簡単にしつつ、改ざん困難性を実現することができている。
【0044】
また、本実施形態では、第3結合値のハッシュ値HASH3における末尾の下2桁の値をHASH-IDと比較する図4,S203での比較結果が一致したときに、撹拌テーブルが抽出できるように構成すると共に、第4結合値のハッシュ値HASH4における末尾の下2桁の値とHASH-IDとの一致をS208で確認するように構成し、2回にわたるハッシュ値の合致確認をとる構成を採用することで、改ざんをより困難にさせている。
【0045】
また、本実施形態の平文暗号化復号化方法および平文暗号化復号化装置によれば、撹拌暗号化文Yを元の暗号化文Xに図4,S206で逆変換する際、暗号化文Xの長さが分からないと、S201で読み出した秘匿用暗号化文Zの末尾の値に、その末尾の値に連続して遡って並ぶ各位置の値をどこまで順に加えていって、乱数の数列Bを再生すればよいか分からない。したがって、乱数の数列Bとして得られる撹拌テーブルを抽出することができず、外部メモリ2から読み出した秘匿用暗号化文Zから撹拌テーブルを取り除いて、撹拌暗号化文Yを得ることは容易にできない。平文Hは、撹拌暗号化文Yを秘匿用暗号化文Zから抽出する解読と、撹拌暗号化文Yを暗号化文Xに逆変換する解読と、暗号化文Xを平文Hに戻す暗号解読とがセットで行われなければ、解読できない。このため、撹拌テーブルがたとえ短い乱数の数列から構成される場合にも、秘匿用暗号化文Zから撹拌暗号化文Yを経由して暗号化文Xに正しく戻せたかを知り得るまでに相当な時間がかかり、ハッカーによる攻撃に強い平文Hの暗号化および復号化を行える。
【0046】
また、本実施形態の平文暗号化復号化方法および平文暗号化復号化装置によれば、外部メモリ2が乱数で初期化されているため、外部メモリ2中の記憶数値の並びにおいて、秘匿暗号化文Zの前後関係と、そのブロック長とが不明になる。したがって、外部メモリ2の記憶数値を読み出した者は、読み出した数値が外部メモリ2の初期値なのか、秘匿暗号化文Zの値なのかを判別できず、どこからどこまでが秘匿暗号化文Zのブロックであるか分からない。このため、外部メモリ2中の記憶数値の並びにおける秘匿暗号化文Zの記憶位置を特定することが困難になり、外部メモリ2中の記憶数値から秘匿暗号化文Zを特定して読み出すことができなくなる。
【0047】
なお、上記実施形態において、図2,S107の撹拌ステップにおける暗号化文Xの撹拌は、撹拌テーブルを構成する各乱数値Rを暗号化文Xの長さ8で除した剰余値に基づいて、暗号化文Xにおける各値の位置を図3に示すように交換して行うことで行われた。しかし、暗号化文Xの撹拌は、撹拌テーブルを構成する各乱数値Rを暗号化文Xの全ての各値に作用させる行列計算による線形変換(線形写像)処理を使って行い、図4,S206の逆変換ステップにおける逆変換は、その行列計算の逆行列計算による線形変換処理を使って行うように、構成してもよい。
【0048】
このような構成によれば、暗号化文Xを構成する全ての値が行列計算による線形変換処理によって撹拌される。このため、撹拌テーブルを構成する各乱数値Rを暗号化文Xの長さ8で除した剰余値に基づいて、暗号化文Xにおける各値の位置を交換して行う本実施形態における撹拌処理に比較して、ハッカーによる攻撃により強い平文Hの暗号化および復号化を行える。
【0049】
また、上記実施形態においては、第1結合値のハッシュ値HASH1における末尾の下2桁の値からHASH-IDを構成し、このHASH-IDを各ハッシュ値HASH2,3,4の末尾の下2桁の値と比較するように構成した。しかし、HASH-IDを構成する値の桁数は、多いほど乱数列Bを生成する時間やその他の処理時間がかかるが、多ければ多いほど改ざん耐性を上げることができる。
【符号の説明】
【0050】
1…ホスト(HOST)
2…外部メモリ
3…HSM(ハードウエアセキュリティーモジュール)
図1
図2
図3
図4