(57)【要約】課題：既存のＡＯＮＴ法の実装上の制約を軽減して、より強固なセキュリティを達成する。解決手段：原ビット列を、第１ブロック長を各々有する複数の入力ブロックへセグメント化し、ランダムビット列を生成し、前記ランダムビット列に基づく（第１ブロック長よりも大きい鍵長の）鍵を用いるブロック暗号方式を利用して前記複数の入力ブロックのそれぞれを暗号化することにより中間ブロックを導出し、中間ブロックを所定の数ごとに連結して１つ以上の出力ブロックを形成し、前記１つ以上の出力ブロック及び前記ランダムビット列を用いて逆変換可能な変換関数で演算することで、さらなる出力ブロックを導出し、それら出力ブロックを含む暗号化ビット列を出力する、ように構成される処理回路、を備えるデータ処理装置が提供される。上記暗号化ビット列を原ビット列へ逆変換するための装置、並びに、それら装置に対応する方法及びプログラムもまた提供される。
2019225735.tif 000002
【特許請求の範囲】
【請求項１】
原ビット列を、第１ブロック長を各々有する複数の入力ブロックへセグメント化し、
前記第１ブロック長よりも大きいビット長のランダムビット列を生成し、
生成される前記ランダムビット列に基づく鍵であって前記第１ブロック長よりも大きい鍵長の前記鍵を用いるブロック暗号型の対称鍵暗号方式を利用して前記複数の入力ブロックのそれぞれを暗号化して、複数の中間ブロックを導出し、
導出される前記複数の中間ブロックを所定の数の中間ブロックごとに連結して、前記ランダムビット列の前記ビット長に等しい第２ブロック長を各々有する１つ以上の出力ブロックを形成し、
前記１つ以上の出力ブロック及び前記ランダムビット列を用いて逆変換可能な変換関数で演算することで、前記第２ブロック長を有するさらなる出力ブロックを導出し、
前記１つ以上の出力ブロック及び前記さらなる出力ブロックを含む暗号化ビット列を出力する、
ように構成される処理回路、を備えるデータ処理装置。
【請求項２】
前記逆変換可能な変換関数は、排他的論理和である、請求項１に記載のデータ処理装置。
【請求項３】
前記複数の入力ブロックのそれぞれを暗号化する際に用いられる前記鍵は、前記ランダムビット列と同一である、請求項１または２に記載のデータ処理装置。
【請求項４】
前記対称鍵暗号方式は、ＡＥＳ（Advanced  Encryption  Standard）であり、前記第１ブロック長は、１２８ビットであり、前記第２ブロック長及び前記鍵長は、２５６ビットである、請求項３に記載のデータ処理装置。
【請求項５】
前記処理回路は、前記暗号化ビット列を、前記出力ブロックのうちの少なくとも１つを各々包含する２つ以上の分散ビット列へ分散する、ようにさらに構成される、請求項１〜４のいずれか１項に記載のデータ処理装置。
【請求項６】
前記処理回路は、前記２つ以上の分散ビット列をそれぞれ異なる記憶デバイスに記憶させる、ようにさらに構成される、請求項５に記載のデータ処理装置。
【請求項７】
前記複数の入力ブロックのそれぞれを暗号化する際に用いられる前記鍵は、前記ランダムビット列の前記ビット長よりも小さい前記鍵長を有し、前記ランダムビット列の一部である、請求項１または２に記載のデータ処理装置。
【請求項８】
データ処理装置において原ビット列を暗号化ビット列へ変換するための方法であって、
前記原ビット列を、第１ブロック長を各々有する複数の入力ブロックへセグメント化することと、
前記第１ブロック長よりも大きいビット長のランダムビット列を生成することと、
生成される前記ランダムビット列に基づく鍵であって前記第１ブロック長よりも大きい鍵長の前記鍵を用いるブロック暗号型の対称鍵暗号方式を利用して前記複数の入力ブロックのそれぞれを暗号化して、複数の中間ブロックを導出することと、
導出される前記複数の中間ブロックを所定の数の中間ブロックごとに連結して、前記ランダムビット列の前記ビット長に等しい第２ブロック長を各々有する１つ以上の出力ブロックを形成することと、
前記１つ以上の出力ブロック及び前記ランダムビット列を用いて逆変換可能な変換関数で演算することで、前記第２ブロック長を有するさらなる出力ブロックを導出することと、
前記１つ以上の出力ブロック及び前記さらなる出力ブロックを含む前記暗号化ビット列を出力することと、
を含む方法。
【請求項９】
データ処理装置のプロセッサにより実行された場合に、前記データ処理装置に、
原ビット列を、第１ブロック長を各々有する複数の入力ブロックへセグメント化することと、
前記第１ブロック長よりも大きいビット長のランダムビット列を生成することと、
生成される前記ランダムビット列に基づく鍵であって前記第１ブロック長よりも大きい鍵長の前記鍵を用いるブロック暗号型の対称鍵暗号方式を利用して前記複数の入力ブロックのそれぞれを暗号化して、複数の中間ブロックを導出することと、
導出される前記複数の中間ブロックを所定の数の中間ブロックごとに連結して、前記ランダムビット列の前記ビット長に等しい第２ブロック長を各々有する１つ以上の出力ブロックを形成することと、
前記１つ以上の出力ブロック及び前記ランダムビット列を用いて逆変換可能な変換関数で演算することで、前記第２ブロック長を有するさらなる出力ブロックを導出することと、
前記１つ以上の出力ブロック及び前記さらなる出力ブロックを含む暗号化ビット列を出力することと、
を行わせるためのコンピュータプログラム。
【請求項１０】
暗号化ビット列を、ブロック暗号型の対称鍵暗号方式のブロック長に等しい第１ブロック長よりも大きい第２ブロック長を各々有する複数の入力ブロックへセグメント化し、
前記複数の入力ブロックを用いて、原ビット列を前記暗号化ビット列へ変換する際に利用された変換関数に対して逆変換となる変換関数で演算することで、原ビット列を前記暗号化ビット列へ変換する際に利用されたランダムビット列を復元し、
前記複数の入力ブロックのうちの１つ以上をそれぞれ所定の数の中間ブロックへ分離して、前記第１ブロック長を各々有する複数の中間ブロックを形成し、
復元される前記ランダムビット列に基づく鍵を用いる前記対称鍵暗号方式を利用して前記複数の中間ブロックのそれぞれを復号して、複数の出力ブロックを導出し、
導出される前記複数の出力ブロックを連結して、前記原ビット列を復元する、
ように構成される処理回路、を備えるデータ処理装置。
【請求項１１】
前記変換関数は、排他的論理和である、請求項１０に記載のデータ処理装置。
【請求項１２】
前記複数の中間ブロックのそれぞれを復号する際に用いられる前記鍵は、前記ランダムビット列のビット長よりも小さい鍵長を有し、前記ランダムビット列の一部である、請求項１０または１１に記載のデータ処理装置。
【請求項１３】
データ処理装置において暗号化ビット列を原ビット列へ逆変換するための方法であって、
前記暗号化ビット列を、ブロック暗号型の対称鍵暗号方式のブロック長に等しい第１ブロック長よりも大きい第２ブロック長を各々有する複数の入力ブロックへセグメント化することと、
前記複数の入力ブロックを用いて、原ビット列を前記暗号化ビット列へ変換する際に利用された変換関数に対して逆変換となる変換関数で演算することで、前記原ビット列を前記暗号化ビット列へ変換する際に利用されたランダムビット列を復元することと、
前記複数の入力ブロックのうちの１つ以上をそれぞれ所定の数の中間ブロックへ分離して、前記第１ブロック長を各々有する複数の中間ブロックを形成することと、
復元される前記ランダムビット列に基づく鍵を用いる前記対称鍵暗号方式を利用して前記複数の中間ブロックのそれぞれを復号して、複数の出力ブロックを導出することと、
導出される前記複数の出力ブロックを連結して、前記原ビット列を復元することと、
を含む方法。
【請求項１４】
データ処理装置のプロセッサにより実行された場合に、前記データ処理装置に、
暗号化ビット列を、ブロック暗号型の対称鍵暗号方式のブロック長に等しい第１ブロック長よりも大きい第２ブロック長を各々有する複数の入力ブロックへセグメント化することと、
前記複数の入力ブロックを用いて、原ビット列を前記暗号化ビット列へ変換する際に利用された変換関数に対して逆変換となる変換関数で演算することで、原ビット列を前記暗号化ビット列へ変換する際に利用されたランダムビット列を復元することと、
前記複数の入力ブロックのうちの１つ以上をそれぞれ所定の数の中間ブロックへ分離して、前記第１ブロック長を各々有する複数の中間ブロックを形成することと、
復元される前記ランダムビット列に基づく鍵を用いる前記対称鍵暗号方式を利用して前記複数の中間ブロックのそれぞれを復号して、複数の出力ブロックを導出することと、
導出される前記複数の出力ブロックを連結して、前記原ビット列を復元することと、
を行わせるためのコンピュータプログラム。
【発明の詳細な説明】
【技術分野】
【０００１】
本開示は、データ処理装置、方法及びコンピュータプログラムに関する。
【背景技術】
【０００２】
一般に、セキュリティリスクからデータを保護するために、パスワードを用いた暗号化が利用されている。しかし、単に情報を暗号化するだけでは、クラッキング又はソーシャルハッキングといった攻撃に対する十分なセキュリティを確保することが難しい。全てのユーザがパスワードを厳重に管理することを期待することも、現実的ではない。そこで、近年秘密分散法が注目を集めている。秘密分散法は、定足数以上の断片（シェアともいう）が集まらない限り元のデータが復元不能となるように、データを複数の断片へと分散する技術である。【０００３】
秘密分散法の代表例である閾値分散法によれば、定足数をｋとして、分散数ｎをｋ以上の任意の整数とすることができるが、分散を通じてデータサイズが約ｎ倍に増加する。一方、非特許文献１において提案されたＡＯＮＴ（All  Or  Nothing  Transform）法は、総データサイズをわずかにしか増大させることなく、小さなデータブロックが１つでも欠如すると元のデータ全体が復元不能となるように、データをランダム化（即ち、無意味なビット列へ変換）する。よって、変換後のデータをｎ個の断片へ分散することで、ＡＯＮＴ法を、定足数ｋが分散数ｎに等しい秘密分散法の一変種として扱うことができる。総データサイズをわずかにしか増大させないというＡＯＮＴ法の特性は、処理能力、通信性能又は記憶容量といった様々な面でリソースに限界を有する現代の多様なシステム又は装置において、秘密分散法を利用することを容易にする（例えば、特許文献１参照）。【０００４】
非特許文献２において提案されたＣＴＲＴ（CounTeR  Transform）法は、ＡＯＮＴ法を実践するための変換アルゴリズムの１つである。ＣＴＲＴ法の安全性は、非特許文献２において証明されている。ＣＴＲＴ法は、ビット単位ではなくブロック単位でデータを分散することを要するものの、ブロック暗号を再利用してＡＯＮＴ法を実装することを可能にする点でコンピュータ実装との高い親和性を有する。例えば、他の変換アルゴリズムである非特許文献３において提案されたＯＡＥＰ（Optimal  Asymmetric  Encryption  Padding）法がハッシュ値の伸長といった演算コストの比較的大きい処理を含むのに対し、そうした処理を含まないＣＴＲＴ法は、処理の高速化の面で優位である。
【先行技術文献】
【特許文献】
【０００５】
【特許文献１】特許第６２２１１９６号公報
【非特許文献】
【０００６】
【非特許文献１】R.  Rivest,  “All-or-Nothing  Encryption  and  The  Package  Transform”,  FSE  '97  Proceedings  of  Fast  Software  Encryption,  pp.210-218,  1997
【非特許文献２】A.  Desai,  “The  Security  of  All-Or-Nothing  Encryption:  Protecting  Against  Exhaustive  Key  Search”,  Advances  in  Cryptology  -  CRYPTO  2000,  pp.359-375,  LNCS  Vol.  1880,  2000
【非特許文献３】V.  Boyko,  “On  the  Security  Properties  of  OAEP  as  an  All-or-Nothing  Transform”,  Advances  in  Cryptology  -  CRYPTO  1999,  pp.503-518,  LNCS  Vol.  1666,  1999
【発明の概要】
【発明が解決しようとする課題】
【０００７】
非特許文献２に記載されたＣＴＲＴ法のアルゴリズムは、データブロックのブロック長ｌとブロック暗号の鍵長ｋとの間に、ｋ≦ｌという制約を有する。例えば、ブロック暗号の旧来の方式の１つであるＤＥＳ（Data  Encryption  Standard）は、ブロック長ｌ＝６４ビット、鍵長ｋ＝５６ビットであることから、この制約を満たす。一方、ＤＥＳよりも高い暗号強度を有するＡＥＳ（Advanced  Encryption  Standard）のブロック長ｌは１２８ビットであり、鍵長ｋは１２８、１９２又は２５６ビットから選択されるものとされている。これは、より強固なセキュリティが期待されるはずのＡＥＳの１９２又は２５６ビットの鍵長が、ブロック長よりも大きいために、ＣＴＲＴ法を実装する用途では利用不能であることを意味する。【０００８】
本開示に係る技術は、既存のＡＯＮＴ法に関連する上述した不都合を克服し又は少なくとも軽減することを目的とする。
【課題を解決するための手段】
【０００９】
本開示によれば、原ビット列を、第１ブロック長を各々有する複数の入力ブロックへセグメント化し、前記第１ブロック長よりも大きいビット長のランダムビット列を生成し、生成される前記ランダムビット列に基づく鍵であって前記第１ブロック長よりも大きい鍵長の前記鍵を用いるブロック暗号型の対称鍵暗号方式を利用して前記複数の入力ブロックのそれぞれを暗号化して、複数の中間ブロックを導出し、導出される前記複数の中間ブロックを所定の数の中間ブロックごとに連結して、前記ランダムビット列の前記ビット長に等しい第２ブロック長を各々有する１つ以上の出力ブロックを形成し、前記１つ以上の出力ブロック及び前記ランダムビット列を用いて逆変換可能な変換関数で演算することで、前記第２ブロック長を有するさらなる出力ブロックを導出し、前記１つ以上の出力ブロック及び前記さらなる出力ブロックを含む暗号化ビット列を出力する、ように構成される処理回路、を備えるデータ処理装置が提供される。【００１０】
また、本開示によれば、データ処理装置において原ビット列を暗号化ビット列へ変換するための方法であって、前記原ビット列を、第１ブロック長を各々有する複数の入力ブロックへセグメント化することと、前記第１ブロック長よりも大きいビット長のランダムビット列を生成することと、生成される前記ランダムビット列に基づく鍵であって前記第１ブロック長よりも大きい鍵長の前記鍵を用いるブロック暗号型の対称鍵暗号方式を利用して前記複数の入力ブロックのそれぞれを暗号化して、複数の中間ブロックを導出することと、導出される前記複数の中間ブロックを所定の数の中間ブロックごとに連結して、前記ランダムビット列の前記ビット長に等しい第２ブロック長を各々有する１つ以上の出力ブロックを形成することと、前記１つ以上の出力ブロック及び前記ランダムビット列を用いて逆変換可能な変換関数で演算することで、前記第２ブロック長を有するさらなる出力ブロックを導出することと、前記１つ以上の出力ブロック及び前記さらなる出力ブロックを含む前記暗号化ビット列を出力することと、を含む方法が提供される。【００１１】
また、本開示によれば、データ処理装置のプロセッサにより実行された場合に、前記データ処理装置に、原ビット列を、第１ブロック長を各々有する複数の入力ブロックへセグメント化することと、前記第１ブロック長よりも大きいビット長のランダムビット列を生成することと、生成される前記ランダムビット列に基づく鍵であって前記第１ブロック長よりも大きい鍵長の前記鍵を用いるブロック暗号型の対称鍵暗号方式を利用して前記複数の入力ブロックのそれぞれを暗号化して、複数の中間ブロックを導出することと、導出される前記複数の中間ブロックを所定の数の中間ブロックごとに連結して、前記ランダムビット列の前記ビット長に等しい第２ブロック長を各々有する１つ以上の出力ブロックを形成することと、前記１つ以上の出力ブロック及び前記ランダムビット列を用いて逆変換可能な変換関数で演算することで、前記第２ブロック長を有するさらなる出力ブロックを導出することと、前記１つ以上の出力ブロック及び前記さらなる出力ブロックを含む暗号化ビット列を出力することと、を行わせるためのコンピュータプログラムが提供される。【００１２】
また、本開示によれば、暗号化ビット列を、ブロック暗号型の対称鍵暗号方式のブロック長に等しい第１ブロック長よりも大きい第２ブロック長を各々有する複数の入力ブロックへセグメント化し、前記複数の入力ブロックを用いて、原ビット列を前記暗号化ビット列へ変換する際に利用された変換関数に対して逆変換となる変換関数で演算することで、原ビット列を前記暗号化ビット列へ変換する際に利用されたランダムビット列を復元し、前記複数の入力ブロックのうちの１つ以上をそれぞれ所定の数の中間ブロックへ分離して、前記第１ブロック長を各々有する複数の中間ブロックを形成し、復元される前記ランダムビット列に基づく鍵を用いる前記対称鍵暗号方式を利用して前記複数の中間ブロックのそれぞれを復号して、複数の出力ブロックを導出し、導出される前記複数の出力ブロックを連結して、前記原ビット列を復元する、ように構成される処理回路、を備えるデータ処理装置が提供される。【００１３】
また、本開示によれば、データ処理装置において暗号化ビット列を原ビット列へ逆変換するための方法であって、前記暗号化ビット列を、ブロック暗号型の対称鍵暗号方式のブロック長に等しい第１ブロック長よりも大きい第２ブロック長を各々有する複数の入力ブロックへセグメント化することと、前記複数の入力ブロックを用いて、原ビット列を前記暗号化ビット列へ変換する際に利用された変換関数に対して逆変換となる変換関数で演算することで、前記原ビット列を前記暗号化ビット列へ変換する際に利用されたランダムビット列を復元することと、前記複数の入力ブロックのうちの１つ以上をそれぞれ所定の数の中間ブロックへ分離して、前記第１ブロック長を各々有する複数の中間ブロックを形成することと、復元される前記ランダムビット列に基づく鍵を用いる前記対称鍵暗号方式を利用して前記複数の中間ブロックのそれぞれを復号して、複数の出力ブロックを導出することと、導出される前記複数の出力ブロックを連結して、前記原ビット列を復元することと、を含む方法が提供される。【００１４】
また、本開示によれば、データ処理装置のプロセッサにより実行された場合に、前記データ処理装置に、暗号化ビット列を、ブロック暗号型の対称鍵暗号方式のブロック長に等しい第１ブロック長よりも大きい第２ブロック長を各々有する複数の入力ブロックへセグメント化することと、前記複数の入力ブロックを用いて、原ビット列を前記暗号化ビット列へ変換する際に利用された変換関数に対して逆変換となる変換関数で演算することで、原ビット列を前記暗号化ビット列へ変換する際に利用されたランダムビット列を復元することと、前記複数の入力ブロックのうちの１つ以上をそれぞれ所定の数の中間ブロックへ分離して、前記第１ブロック長を各々有する複数の中間ブロックを形成することと、復元される前記ランダムビット列に基づく鍵を用いる前記対称鍵暗号方式を利用して前記複数の中間ブロックのそれぞれを復号して、複数の出力ブロックを導出することと、導出される前記複数の出力ブロックを連結して、前記原ビット列を復元することと、を行わせるためのコンピュータプログラムが提供される。
【発明の効果】
【００１５】
本開示に係る技術によれば、既存のＡＯＮＴ法の実装上の制約が軽減され、より強固なセキュリティを達成することができる。
【図面の簡単な説明】
【００１６】
【図１】一実施形態に係る修正ＣＴＲＴ法のＡＯＮＴ変換アルゴリズムを模式的に表現するブロック図である。
【図２】図１に関連して説明したＡＯＮＴ変換アルゴリズムをブロック長に着目してさらに説明するための説明図である。
【図３】一実施形態に係る修正ＣＴＲＴ法のＡＯＮＴ逆変換アルゴリズムを模式的に表現するブロック図である。
【図４】一実施形態に係る拡張された修正ＣＴＲＴ法のＡＯＮＴ変換アルゴリズムを模式的に表現するブロック図（その１）である。
【図５】一実施形態に係る拡張された修正ＣＴＲＴ法のＡＯＮＴ逆変換アルゴリズムを模式的に表現するブロック図（その１）である。
【図６】一実施形態に係る拡張された修正ＣＴＲＴ法のＡＯＮＴ変換アルゴリズムを模式的に表現するブロック図（その２）である。
【図７】一実施形態に係る拡張された修正ＣＴＲＴ法のＡＯＮＴ逆変換アルゴリズムを模式的に表現するブロック図（その２）である。
【図８】ＣＢＣモード、ＥＣＢモードおよびＣＦＢモードにおける修正ＣＴＲＴ法を説明するための図である。
【図９】一実施形態に係るデータ処理装置の構成の一例を示すブロック図である。
【図１０】一実施形態に係るＡＯＮＴ変換のための方法の流れの一例を示すフローチャートである。
【図１１】一実施形態に係るＡＯＮＴ逆変換のための方法の流れの一例を示すフローチャートである。
【発明を実施するための形態】
【００１７】
以下に添付図面を参照しながら、本開示の好適な実施の形態について詳細に説明する。なお、本明細書及び図面において、実質的に同一の機能構成を有する構成要素については、同一の符号を付することにより重複説明を省略する。
【００１８】
また、以下の順序で説明を行う。
１．導入
１−１．ＡＯＮＴ法
１−２．既存のアルゴリズム
１−３．課題の説明
２．新たな技法
２−１．修正されたアルゴリズム
２−２．アルゴリズムの一般化
３．データ処理装置の構成例
４．処理の流れ
４−１．ＡＯＮＴ変換
４−２．ＡＯＮＴ逆変換
５．まとめ
【００１９】
＜１．導入＞
［１−１．ＡＯＮＴ法］
非特許文献１において、Rivestは、メッセージシーケンス（メッセージブロックのシーケンス）を疑似メッセージシーケンスへ写す変換ｆがＡＯＮＴであると言えるためには、変換ｆが次の３つの条件を満たすべきであると提唱している：
・変換ｆが逆変換を有する。即ち、疑似メッセージシーケンスが与えられれば元のメッセージシーケンスを復元することができる；
・変換ｆ及びその逆変換が多項式時間内に計算可能である；
・疑似メッセージブロックの全てが既知でなければ、元のメッセージブロックのどの１つを復元することも計算量的に実現不能である。
【００２０】
ＡＯＮＴのこれら条件を満たす変換アルゴリズムは、非特許文献２において提案されたＣＴＲＴ法及び非特許文献３において提案されたＯＡＥＰ法など、いくつか存在する。ＯＡＥＰ法は、ビットごとの演算が可能であるためにメッセージ分散の柔軟性が高いという利点を有するが、ハッシュ値の伸長といった演算コストの比較的大きい処理を含む。一方、ＣＴＲＴ法は、ビット単位ではなくブロック単位でデータを分散することを要するものの、ブロック暗号を再利用してＡＯＮＴ法を実装できることからコンピュータ実装との高い親和性を有し、処理の高速化の面で優位である。ＣＴＲＴ法の安全性は、非特許文献２において証明されている。
【００２１】
［１−２．既存のアルゴリズム］
ＣＴＲＴ法に従ってメッセージ、即ち秘匿すべきデータのビット列を変換するための変換アルゴリズム及び原ビット列を復元するための逆変換アルゴリズムは、非特許文献２の第５節“All-Or-Nothing  Transforms”に記述されている。下の表１は、その変換アルゴリズムと実質的に同じアルゴリズムを示している。
【００２２】
【表１】
2019225735.tif 000003
【００２３】
表１の第１行は、アルゴリズムへ入力されるビット列がｎ個の入力ブロックｘ［１］，…，ｘ［ｎ］へセグメント化されることを示している。各入力ブロックのブロック長はｌに等しい。第２行において、ビット長ｌのランダムビット列Ｋ´が生成される。第３行において、鍵長ｋの鍵Ｋが、ランダムビット列Ｋ´を２のｋ乗で除算した剰余として導出される。第４行〜第６行では、ｎ個の入力ブロックｘ［１］，…，ｘ［ｎ］の各々が、鍵Ｋを用いて何らかの（理想的な）暗号方式ＦＫを利用して暗号化される。暗号化後のブロックｘ´［１］，…，ｘ´［ｎ］を、ここでは出力ブロックという。第７行では、ランダムビット列Ｋ´と出力ブロックｘ´［１］，…，ｘ´［ｎ］との間で排他的論理和が計算され、さらなる出力ブロックｘ´［ｎ＋１］が導出される。第８行において、一連の出力ブロックｘ´［１］，ｘ´［２］，…，ｘ´［ｎ］，ｘ´［ｎ＋１］が暗号化されたビット列として出力される。
【００２４】
下の表２は、非特許文献２の第５節に記述されている逆変換アルゴリズムと実質的に同じアルゴリズムを示している。
【００２５】
【表２】
2019225735.tif 000004
【００２６】
表２の第１行は、アルゴリズムへ入力される暗号化ビット列がｎ＋１個の入力ブロックｘ´［１］，…，ｘ´［ｎ＋１］へセグメント化されることを示している。各入力ブロックのブロック長はｌに等しい。第２行において、入力ブロックｘ´［１］，…，ｘ´［ｎ＋１］の間で排他的論理和が計算され、原ビット列を暗号化ビット列へ変換する際に利用されたランダムビット列Ｋ´が復元される。第３行において、鍵長ｋの鍵Ｋが、ランダムビット列Ｋ´を２のｋ乗で除算した剰余として導出される。第４行〜第６行では、ｎ個の入力ブロックｘ´［１］，…，ｘ´［ｎ］の各々が、鍵Ｋを用いて暗号方式ＦＫを利用して復号される。復号後のブロックｘ［１］，…，ｘ［ｎ］を、ここでは出力ブロックという。第７行において、一連の出力ブロックｘ［１］，…，ｘ［ｎ］が復元された原ビット列として出力される。
【００２７】
表１及び表２の説明から理解されるように、ＣＴＲＴ法は、秘匿すべきデータを変換するプロセスの途中で鍵長ｋの鍵を生成し、生成したその鍵を用いる対称鍵暗号方式ＦＫを利用してメッセージブロックの各々を暗号化する。実際には、ＣＴＲモードでは、ブロックごとに変化するカウンタの値が対称鍵暗号方式で暗号化され、暗号化されたカウンタ値と各メッセージブロックとの排他的論理和によって各メッセージブロックもまた暗号化される。鍵は、それら暗号化後のブロックとのさらなる排他的論理和を通じてメッセージ全体へ拡散されることにより秘匿される。原ビット列を復元するためには、得られたビット列ｘ´［１］，…，ｘ´［ｎ＋１］のうちのどの１つのブロックも欠如してはならず、１ブロックでも欠如すれば原ビット列が復元不能となる。これらブロックからなる出力ビット列の全体は、例えば、各断片が少なくとも１つのブロックを包含するように複数の断片へ分散され、それら断片が異なる（セキュアな）ストレージにそれぞれ記憶される。すると、１つのストレージのセキュリティが破られたとしても、元のデータは攻撃者へ漏洩しない。また、データを所有するユーザは、暗号鍵を自ら管理することを要しない。
【００２８】
［１−３．課題の説明］
前項で説明したＣＴＲＴ法での変換／逆変換のアルゴリズムは、ブロック長ｌとブロック暗号の鍵長ｋとの間に、ｋ≦ｌという制約を有する。この制約は、例えば、鍵Ｋをメッセージ全体へ拡散して秘匿するための、ブロック間の排他的論理和を実現するために必要とされる。例えば、ブロック暗号の代表的な方式の１つであるＤＥＳは、ブロック長ｌ＝６４ビット、鍵長ｋ＝５６ビットであることからこの制約を満たすため、既存のＣＴＲＴ法の実装において、ＤＥＳを利用することができる。しかし、通常、対称鍵暗号方式（共通鍵暗号方式ともいう）の暗号強度は鍵の長さに依存する。例えば、ＤＥＳの５６ビットという鍵長は短過ぎるために、飛躍的に向上した現代のコンピュータ性能を前提とすると、ＤＥＳはもはや実用的な時間内で総当り攻撃でも解読可能であるとされている。
【００２９】
一方、ＣＴＲＴ法を実装する際に、暗号強度の向上のためにより鍵長の大きいブロック暗号を利用するというアイディアは、ブロック長ｌと鍵長ｋとの間の上述した制約により妨げられ得る。例えば、Rijndael暗号としても知られる対称鍵暗号方式であるＡＥＳのブロック長ｌは１２８ビットであり、鍵長ｋは１２８、１９２又は２５６ビットから選択されるものとされている。従って、高い暗号強度が期待されるはずのＡＥＳの１９２又は２５６ビットという鍵長はＡＥＳのブロック長よりも大きいために、上述したＣＴＲＴ法での変換／逆変換のアルゴリズムにおいてこれら鍵長を採用することができない。
【００３０】
そこで、次節より詳しく説明する実施形態において、ブロック暗号のブロック長よりも大きい鍵長を採用することが可能となるように、ＣＴＲＴ法の変換／逆変換アルゴリズムが修正される。
【００３１】
＜２．新たな技法＞
［２−１．修正されたアルゴリズム］
以下の説明において、ブロック長ｌよりも大きい鍵長ｋを採用することが可能となるように修正されたＣＴＲＴ法に基づく技法を、修正ＣＴＲＴ法という。下の表３は、修正ＣＴＲＴ法に従って原ビット列をＡＯＮＴ変換するための変換アルゴリズムの一例を示している。また、図１は、表３の変換アルゴリズムを模式的に表現するブロック図である。
【００３２】
【表３】
2019225735.tif 000005
【００３３】
表３の第１行に示したように、原ビット列、即ち秘匿すべきデータのビット列は、まず、第１ブロック長を各々有する複数の入力ブロックｘ［１］，…，ｘ［ｎ］へセグメント化される。第１ブロック長は、後のステップで利用されるブロック暗号型の対称鍵暗号方式に固有のブロック長ｌに等しい。対称鍵暗号方式としてＡＥＳが利用される場合には、ｌ＝１２８ビットである。図１の上段では、入力メッセージ１０がｎ個の入力ブロックへセグメント化される様子が示されている。入力メッセージ１０のサイズが第１ブロック長の整数倍ではない場合には、ｎ個の入力ブロックの各々のサイズが第１ブロック長と等しくなるように、例えば入力メッセージ１０の末尾に１つ以上のパディングビットが追加されてもよい。また、後に説明する中間ブロックの数を所定の数にするためのパディングもここで併せて行われてよい。特に後者のブロック単位のパディングにおけるパディングビットは、ランダムなビット値を有することが望ましい。
【００３４】
次いで、表３の第２行に示したように、ビット長ｋのランダムビット列Ｋが、対称鍵暗号のための鍵Ｋとして生成される。鍵Ｋの生成は、図１においてステップＳ１１として示されている。ここでは、ｋ＝２ｌであるものとする。対称鍵暗号方式としてＡＥＳが利用される場合には、鍵長ｋとしてｋ＝２５６ビットを選択することができる。
【００３５】
次いで、表３の第３行〜第５行に示したように、生成したランダムビット列に基づく鍵Ｋを用いるブロック暗号型の対称鍵暗号方式を利用してＣＴＲモードで入力ブロックｘ［１］，…，ｘ［ｎ］のそれぞれを暗号化して、複数の中間ブロックｘ´［１］，…，ｘ´［ｎ］が導出される。図１において、鍵Ｋを用いた各ブロックの暗号化は、ステップＳ１３における、関数ＦＫで暗号化されたカウンタ値との排他的論理和の演算として表現されている。
【００３６】
次いで、表３の第６行〜第８行に示したように、導出した複数の中間ブロックｘ´［１］，…，ｘ´［ｎ］を２個の中間ブロックごとに連結して、第２ブロック長を各々有する１つ以上の出力ブロックｙ［１］，…，ｙ［ｍ−１］が形成される。ここでは、第２ブロック長は、第１ブロック長の２倍（即ち、２ｌ）に等しく、かつ鍵Ｋの鍵長（即ち、ｋ）に等しい。図１においては、一連の中間ブロックのうちの連続する２つのブロックが、ステップＳ１５において互いに連結されている、例えば、それぞれｌビットの中間ブロックｘ´［１］及びｘ´［２］が連結されて１番目の出力ブロックｙ［１］が形成され、同様に中間ブロックｘ´［３］及びｘ´［４］が連結されて２番目の出力ブロックｙ［２］が形成されている。中間ブロックの数ｎが奇数である場合には、最後の中間ブロックとしてここでパディングブロックが追加されてもよい。
【００３７】
次いで、表３の第９行に示したように、ｍ−１個の出力ブロックｙ［１］，…，ｙ［ｍ−１］及び生成済みのランダムビット列（ここでは、鍵Ｋに等しい）の間で排他的論理和が計算され、さらなる出力ブロックｙ［ｍ］が導出される。出力ブロックｙ［ｍ］のサイズは、上述した第２ブロック長に等しい。出力ブロックｙ［ｍ］の導出は、図１においてステップＳ１７として示されている。
【００３８】
次いで、表３の第１０行に示したように、一連の出力ブロックｙ［１］，…，ｙ［ｍ］を含む暗号化ビット列が出力される。図１では、出力ブロックｙ［１］，…，ｙ［ｍ−１］及びさらなる出力ブロックｙ［ｍ］を含む出力メッセージ２０が形成される様子が示されている。
【００３９】
最後に、表３には示していないものの、データ変換のプロセスの途中で生成された鍵Ｋが消去される。鍵Ｋの消去は、図１においてステップＳ１９として示されている。このような変換後の暗号化ビット列は、例えば、出力ブロックｙ［１］，…，ｙ［ｍ］のうちの少なくとも１つを各々包含する２つ以上の分散ビット列へ分散され、別個の記憶デバイスにより記憶され得る。
【００４０】
図２は、図１に関連して説明したＡＯＮＴ変換アルゴリズムを、ブロック長に着目してさらに説明するための説明図である。ここでは、対称鍵暗号方式としてＡＥＳが利用され、ブロック長ｌ＝１２８ビット、鍵長ｋ＝２５６ビットであるものとする。図２の最上段には、第１ブロック長ｌを各々有する、一連の入力ブロックｘ［１］，…，ｘ［ｎ］が示されている。これら入力ブロックは、秘匿すべきデータ又はメッセージを構成するブロックである。入力ブロックｘ［１］，…，ｘ［ｎ］は、鍵長ｋ＝２５６（＝２ｌ）ビットの鍵Ｋを用いるＡＥＳを利用してＣＴＲモードでそれぞれ暗号化され、図２の２段目に示した一連の中間ブロックｘ´［１］，…，ｘ´［ｎ］が導出される。各中間ブロックもまた第１ブロック長を有する。次いで、一連の中間ブロックｘ´［１］，…，ｘ´［ｎ］のうち２個ずつの中間ブロックが互いに連結され、図２の３段目に示したｍ−１個の出力ブロックｙ［１］，…，ｙ［ｍ−１］が形成される。各出力ブロックは、第２ブロック長（ｋ＝２ｌ）を有する。さらに、図２の４段目では、出力ブロックｙ［１］，…，ｙ［ｍ−１］の後ろにさらなる出力ブロックｙ［ｍ］が追加されている。出力ブロックｙ［ｍ］は、出力ブロックｙ［１］，…，ｙ［ｍ−１］と鍵Ｋとの間の排他的論理和であり、そのサイズは第２ブロック長（ｋ＝２ｌ）に等しい。そして、図２の最下段では、全ての出力ブロックｙ［１］，…，ｙ［ｍ］を含む暗号化ビット列が、２つ以上の断片ＦＧ１，ＦＧ２，…へ分散されている。これら断片のうち最も小さい断片のサイズｇは、出力ブロックのサイズｋ以上である（２ｌ＝ｋ≦ｇ）。どの断片も、出力ブロックのうちの少なくとも１つを含む。結果的に、これら断片のうちの任意の１つを除く他の全ての断片を攻撃者が手に入れたとしても、元のメッセージも鍵Ｋも実質的に漏洩しない。
【００４１】
下の表４は、修正ＣＴＲＴ法に従って暗号化ビット列をＡＯＮＴ逆変換する（原ビット列を復元する）ための逆変換アルゴリズムの一例を示している。また、図３は、表４の逆変換アルゴリズムを模式的に表現するブロック図である。
【００４２】
【表４】
2019225735.tif 000006
【００４３】
暗号化ビット列は、典型的には、別個の記憶デバイスによりそれぞれ記憶されている２つ以上の分散ビット列を連結することにより取得される。表４の第１行に示したように、暗号化ビット列は、まず、第１ブロック長の２倍の第２ブロック長を各々有する複数の入力ブロックｙ［１］，…，ｙ［ｍ］へセグメント化される。第１ブロック長は、ブロック暗号型の対称鍵暗号方式に固有のブロック長に等しい。ここでは、対称鍵暗号方式としてＡＥＳが利用され、第１ブロック長は１２８ビット、第２ブロック長は２５６ビットである。図３の下段では、暗号化メッセージ３０がｍ個の入力ブロックへセグメント化される様子が示されている。
【００４４】
次いで、表４の第２行に示したように、ｍ個の入力ブロックｙ［１］，…，ｙ［ｍ］の間で排他的論理和が計算され、ランダムビット列に相当する鍵Ｋが復元される。ここでは、鍵Ｋの鍵長ｋは、上述した第２ブロック長に等しい。鍵Ｋの復元は、図３においてステップＳ３１として示されている。
【００４５】
次いで、表４の第３行〜第５行に示したように、１つ以上の入力ブロックｙ［１］，…，ｙ［ｍ−１］をそれぞれ等サイズの２個のブロックへ分離して、第１ブロック長を各々有する複数の中間ブロックｘ´［１］，…，ｘ´［ｎ］が形成される。図３においては、各入力ブロックがステップＳ３３において連続する２つの中間ブロックへ分離されている。例えば、１番目の入力ブロックｙ［１］が中間ブロックｘ´［１］及びｘ´［２］へ、２番目の入力ブロックｙ［２］が中間ブロックｘ´［３］及びｘ´［４］へ分離されている。最後の中間ブロックがパディングブロックである場合には、パディングブロックはここで削除されてもよい。
【００４６】
次いで、表４の第６行〜第８行に示したように、復元したランダムビット列に基づく鍵Ｋを用いるブロック暗号型の対称鍵暗号方式を利用してＣＴＲモードで中間ブロックｘ´［１］，…，ｘ´［ｎ］のそれぞれを復号して、複数の出力ブロックｘ［１］，…，ｘ［ｎ］が導出される。図３において、鍵Ｋを用いた各ブロックの復号は、ステップＳ３５における排他的論理和の演算として表現されている。
【００４７】
次いで、表４の第９行に示したように、一連の出力ブロックｘ［１］，…，ｘ［ｎ］を含む原ビット列が出力される。図３の上段では、出力ブロックｘ［１］，…，ｘ［ｎ］を連結して原ビット列４０が形成される様子が示されている。
【００４８】
最後に、表４には示していないものの、逆変換のプロセスの途中で生成された鍵Ｋが消去される。鍵Ｋの消去は、図３においてステップＳ３７として示されている。
【００４９】
［２−２．アルゴリズムの一般化］
図１〜図３に模式的に示したアルゴリズムは、ブロック長ｌと鍵長ｋとの間にｋ＝２ｌという関係が成り立つケースに適用可能である。例えば、対称鍵暗号方式としてＡＥＳが利用され、ＡＥＳの鍵長として２５６ビット（ｋ＝２５６）が選択される場合、ＡＥＳ固有のブロック長（即ち、メッセージブロック長）は１２８ビット（ｌ＝１２８）であるため、ｋ＝２ｌという関係が成り立つ。これは、上述した修正ＣＴＲＴ法が、未だ十分な計算量的安全性を有するとされるＡＥＳの中でも最も長い鍵長を使用するケースに適用可能であることを意味する。
【００５０】
さらに、修正ＣＴＲＴ法を拡張することにより、ブロック長ｌと鍵長ｋとがｋ＝２ｌ以外の関係を有する様々なケースに対処することができる。
【００５１】
例えば、鍵長ｋが第１ブロック長ｌのｑ倍（ｑは２以上の整数）に等しいものとする（ｋ＝ｑｌ）。この場合、原ビット列を変換する際に、暗号化された中間ブロックｘ´［１］，…，ｘ´［ｎ］をｑ個の中間ブロックごとに連結することで、第１ブロック長ｌのｑ倍に等しい第２ブロック長を各々有する１つ以上の出力ブロックが形成される。それにより、それら出力ブロックと鍵長ｋ＝ｑｌの鍵Ｋとの間で排他的論理和を計算して、鍵Ｋを秘匿することができる。逆変換の際には、入力ブロック間の排他的論理和を通じて、第２ブロック長に等しい鍵長（ｋ＝ｑｌ）の鍵Ｋを復元した後に、各入力ブロックを連続するｑ個の中間ブロックへ分離することで、第１ブロック長ｌを各々有する複数の中間ブロックを形成することができる。第１ブロック長ｌは、利用すべき対称鍵暗号方式に固有のブロック長である。
【００５２】
また、例えば、各ブロックを暗号化する際に用いられる鍵の鍵長ｋがブロック長ｌの整数倍に等しくない場合には、例えば、以下に説明する方法により、修正ＣＴＲＴ法を拡張することができる。
【００５３】
たとえば、ブロック長ｌが１２８ビットであり、鍵長ｋが１９２ビットである場合において、原ビット列をＡＯＮＴ変換する場合には、図４に示すように、ステップＳ１７で出力ブロックｙ［１］の排他的論理和を演算する前に、ステップＳ１６において、１９２ビットの鍵Ｋの上位に６４ビットのパディングＰを連結して２５６ビットのランダムビット列Ｋ´（Ｋ´＝Ｐ||Ｋ）を生成する。この場合、鍵ＫおよびパディングＰはランダムに決定することができる。そして、ステップＳ１７では、ステップＳ１６で生成した２５６ビットのランダムビット列Ｋ´と２５６ビットの出力ブロックｙ［１］との間で排他的論理和（ＸＯＲ）を演算することで、鍵Ｋの鍵長ｋがブロック長ｌの整数倍に等しくない場合でも、本発明に係る修正ＣＴＲＴ法を拡張して適用することができる。
また、暗号化ビット列をＡＯＮＴ逆変換する場合も、図５に示すように、入力ブロックｙ［１］，…，ｙ［ｍ］の間で排他的論理和を演算することで、ステップＳ３１において、１９２ビットの鍵Ｋに６４ビットのパディングＰを連結した２５６ビットのランダムビット列Ｋ´を復元することができる。そして、ステップＳ３２において、復元した２５６ビットのランダムビット列Ｋ’から６４ビットのパディングＰを取り除くことで、１９２ビットの鍵Ｋが復元される。そして、復元した鍵Ｋを用いて、中間ブロックｘ´［１］，…，ｘ´［ｎ］から、出力ブロックｘ［１］，…，ｘ［ｎ］を出力することができる。
なお、これらの方法では、パディングＰを鍵Ｋの上位に連結してランダムビット列Ｋ´を生成している（Ｋ´＝Ｐ||Ｋ）が、これに限定されず、パディングＰを鍵Ｋの下位に連結してランダムビット列Ｋ´を生成してもよい（Ｋ´＝Ｋ||Ｐ）。
【００５４】
また、別の方法としては、図６に示すように、まず、ステップＳ１１において、ブロック長ｌの整数倍に等しいビット長であって、鍵長ｋよりも大きい当該ビット長のランダムビット列Ｋ´を生成する。そして、ステップＳ１２において、ランダムビット列Ｋ´に基づいて、よりサイズの小さい鍵Ｋを生成し、生成した鍵Ｋを各ブロックの暗号化（又は復号）のために使用してもよい。たとえば、ブロック長ｌが１２８ビットであり、鍵長ｋが１９２ビットである場合、まずステップＳ１１で、２５６ビットのランダムビット列Ｋ´として生成する。また、ステップＳ１２で、２５６ビットのランダムビット列Ｋ´の部分列のうち１９２ビット分の部分列を、鍵Ｋとして生成する。これにより、ステップＳ１３において、入力ブロックｘ［１］，…，ｘ［ｎ］を暗号化する場合には１９２ビットの鍵Ｋを使用することができる。また、ステップＳ１７において、出力ブロックｙ［１］について排他的論理和（ＸＯＲ）を演算する場合には、ブロック長の整数倍である２５６ビットのランダムビット列Ｋ´を使用することができる。なお、ランダムビット列Ｋ´の部分列を鍵Ｋとして生成する場合、例えば、Ｋ´を２ｋで除算した剰余を鍵Ｋとして生成することができる。
また、暗号化ビット列をＡＯＮＴ逆変換する場合も、図７に示すように、ステップＳ３１において、入力ブロックｙ［１］，…，ｙ［ｍ］の間で排他的論理和を計算することで、２５６ビットのランダムビット列Ｋ´が復元される。そして、ステップＳ３２で、復元した鍵Ｋ’を剰余演算することにより、２５６ビットのＫ’の部分列を１９２ビットの鍵Ｋとして生成することができる。そして、復元した鍵Ｋを用いて、中間ブロックｘ´［１］，…，ｘ´［ｎ］から、出力ブロックｘ［１］，…，ｘ［ｎ］を出力することができる。
なお、図６および図７においてＫ´を２ｋで除算した剰余を鍵Ｋとして生成する場合、Ｋは、Ｋ´の下位ｋビットを抽出した値と同じとなる。すなわち、図６，７に示す方法と、図４，５に示す方法（パディングＰを鍵Ｋの下位に連結してランダムビット列Ｋ´を生成する方法）では、演算手順は異なるが、Ｋ’が同じである場合には、生成されるＫは同じ値となる。ただし、図６および図７に示す方法では、図４，５に示す方法と比べて、演算量が少ないため、より好ましい方法と言える。
【００５５】
こうした一般化のための手法を組み合わせることで、既存のＣＴＲＴ法が有していたブロック長ｌと鍵長ｋとの間のｋ≦ｌという制約を排除し、暗号強度、処理速度又は通信環境といった様々な条件に応じて最適な暗号方式及び鍵長を使用することが可能となる。また、本開示に係る技術は、上述したＣＴＲモードの代わりに、ＣＢＣ（Cipher  Block  Chaining）モード、ＥＣＢ（Electronic CodeBook）モード、ＣＦＢ（Cipher  FeedBack）モード、ＯＦＢ（Output FeedBack）モードといった他の暗号利用モードが利用されるケースに適用されてもよい。ＣＢＣモードでは、図１，３のＶＩＩＩ部分が図８（Ａ）に示すように変換されること以外は、上述したＣＴＲモードと同様に修正ＣＴＲＴ法によるＡＯＮＴ変換・逆変換を行うことができる。また、ＥＣＢモードまたはＣＦＢモードでは、図１，３のＶＩＩＩ部分が図８（Ｂ）または図８（Ｃ）に示すようにそれぞれ変換されること以外は、上述したＣＴＲモードと同様に修正ＣＴＲＴ法によるＡＯＮＴ変換・逆変換を行うことができる。同様に、ＯＦＢモードにおいても、修正ＣＴＲＴ法によるＡＯＮＴ変換・逆変換を行うことができる。
【００５６】
さらに、上述した例では、鍵暗号方式としてＡＥＳを利用する構成を例示したが、本開示に係る技術は、ＡＥＳに限定されず、ｋ＞ｌとなるようにブロック長ｌと鍵長ｋとを選択可能なトリプルＤＥＳ、ＭＩＳＴＹ１、Ｃａｍｅｌｌｉａなどの任意のブロック暗号（対象鍵暗号）を利用することができる。
【００５７】
＜３．データ処理装置の構成例＞
図９は、一実施形態に係るデータ処理装置１００の構成の一例を示すブロック図である。図９を参照すると、データ処理装置１００は、処理回路１１０、記憶デバイス１３０、通信インタフェース１４０、ディスプレイ１５０及び入力インタフェース１６０を備える。
【００５８】
処理回路１１０は、例えばＣＰＵ（Central  Processing  Unit）又はＭＰＵ（Micro  Processing  Unit）といった１つ以上の汎用的なプロセッサを含んでもよい。また、処理回路１１０は、ＡＳＩＣ（Application  Specific  Integrated  Circuit）又はＦＰＧＡ（Field  Programmable  Gate  Arrays）といった例えばＡＯＮＴ変換／逆変換のために特別に設計された回路を含んでもよい。
【００５９】
記憶デバイス１３０は、データ処理装置１００の動作のために必要とされるデータ、制御パラメータ及びコンピュータプログラムを記憶するためのデバイスである。記憶デバイス１３０は、不揮発性の記憶媒体（例えば、ＲＯＭ（Read  Only  Memory））及び揮発性の記憶媒体（例えば、ＲＡＭ（Random  Access  Memory））を含んでもよい。また、記憶デバイス１３０は、ＨＤＤ（Hard  Disk  Drive）又はＳＳＤ（Solid  State  Drive）を含んでもよい。記憶デバイス１３０により記憶される制御パラメータは、例えば、利用可能な暗号化方式の識別情報、選択可能な鍵長、及び分散片の格納先のロケーションなどを含み得る。
【００６０】
通信インタフェース１４０は、データ処理装置１００による他の装置との通信のためのインタフェースである。通信インタフェース１４０は、有線ＬＡＮインタフェース、無線ＬＡＮ（Ｗｉ−Ｆｉともいう）インタフェース又はセルラー通信インタフェースなどを含んでよい。図９の例では、通信インタフェース１４０は、ネットワーク１９０を介して外部ストレージ１８０へ接続されている。
【００６１】
ディスプレイ１５０は、例えば、液晶ディスプレイ（ＬＣＤ）又は有機発光ダイオード（ＯＬＥＤ）ディスプレイなどといった表示デバイスである。ディスプレイ１５０は、例えばデータ処理装置１００がユーザへ提供する情報をスクリーンに表示させる。
【００６２】
入力インタフェース１６０は、ユーザがデータ処理装置１００を操作し又はデータ処理装置１００へ情報を入力するために使用されるインタフェースである。入力インタフェース１６０は、例えば、タッチセンサ、キーパッド、キーボード、ボタン、スイッチ又はポインティングデバイスなどといった、いかなる種類のインタフェースを含んでもよい。
【００６３】
処理回路１１０は、例えば記憶デバイス１３０のコンピュータ読取可能な記憶媒体に記憶されているコンピュータプログラムを実行することにより、データ処理装置１００の機能性を動作させる。例えば、データ処理装置１００は、論理的な機能モジュールとして、データ入出力モジュール１１１、変換モジュール１１３、及び逆変換モジュール１１５を含む。
【００６４】
データ入出力モジュール１１１は、対象データを秘匿することが求められる場合に、対象データのビット列（即ち、原ビット列）を、例えばユーザの指示に応じて記憶デバイス１３０から読み出し又は通信インタフェース１４０を介して受信するなどして取得する。そして、データ入出力モジュール１１１は、取得した原ビット列を変換モジュール１１３へ出力する。また、データ入出力モジュール１１１は、変換モジュール１１３により原ビット列が成功裏に暗号化ビット列へ変換されると、暗号化ビット列を２つ以上の分散ビット列へ分散する。それら分散ビット列の各々は、上述した第２ブロック長を有する少なくとも１つの出力ブロックを包含する。データ入出力モジュール１１１は、２つ以上の分散ビット列をそれぞれ対応するストレージ（例えば、記憶デバイス１３０又は外部ストレージ１８０）へ出力して記憶させる。
【００６５】
また、データ入出力モジュール１１１は、対象データを復元することが求められる場合に、対象データに関連付けられる分散片をそれぞれ対応するストレージから収集し、収集した分散片を連結することにより形成される暗号化ビット列を逆変換モジュール１１５へ出力する。また、データ入出力モジュール１１１は、逆変換モジュール１１５により暗号化ビット列から成功裏に原ビット列が復元されると、復元された原ビット列を、例えばユーザの指示に応じて、記憶デバイス１３０若しくはディスプレイ１５０へ提供し、又は通信インタフェース１４０を介して他の装置へ送信する。
【００６６】
変換モジュール１１３は、データ入出力モジュール１１１からＡＯＮＴ変換すべき原ビット列が入力された場合に、その原ビット列を上述した修正ＣＴＲＴ法に従って暗号化ビット列へ変換し、暗号化ビット列をデータ入出力モジュール１１１へ返却する。変換モジュール１１３により実行される具体的な処理の流れの一例について、次節で詳細に説明する。
【００６７】
逆変換モジュール１１５は、データ入出力モジュール１１１からＡＯＮＴ逆変換すべき暗号化ビット列が入力された場合に、その暗号化ビット列を上述した修正ＣＴＲＴ法に従って逆変換することにより原ビット列を復元し、原ビット列をデータ入出力モジュール１１１へ返却する。逆変換モジュール１１５により実行される具体的な処理の流れの一例について、次節で詳細に説明する。
【００６８】
＜４．処理の流れ＞
［４−１．ＡＯＮＴ変換］
図１０は、一実施形態に係るデータ処理装置１００により実行され得るＡＯＮＴ変換のための方法の流れの一例を示すフローチャートである。
【００６９】
まず、データ入出力モジュール１１１は、秘匿すべき対象データを取得する（ステップＳ１１１）。そして、データ入出力モジュール１１１は、取得した対象データを変換モジュール１１３へ出力する。
【００７０】
次いで、変換モジュール１１３は、対象データのビット列を、第１ブロック長を各々有する複数の入力ブロックへセグメント化する（ステップＳ１１３）。第１ブロック長は、ブロック暗号型の対称鍵暗号方式に固有のブロック長に等しい。
【００７１】
次いで、変換モジュール１１３は、第１ブロック長の整数倍に等しいビット長のランダムビット列を生成する（ステップＳ１１５）。なお、本明細書における「ランダムな」ビット列とは、各ビットが疑似的にランダムに決定された値を有するビット列を含んでよい。ここでは、第１ブロック長のｑ倍（ｑは２以上の整数）に等しいビット長のランダムビット列が生成されるものとする。
【００７２】
次いで、変換モジュール１１３は、セグメント化した複数の入力ブロックのうちの１つを選択する（ステップＳ１１７）。そして、変換モジュール１１３は、選択した入力ブロックをステップＳ１１５で生成したランダムビット列に基づく鍵を用いるブロック暗号型の対称鍵暗号方式を利用して暗号化して、暗号化されたブロックを導出する（ステップＳ１１９）。ここで導出されるブロックを中間ブロックという。ステップＳ１１９において使用される鍵は、第１ブロック長よりも大きい鍵長を有する。変換モジュール１１３は、未処理の入力ブロックが無くなるまで、上述したステップＳ１１７及びステップＳ１１９の処理を繰り返す（ステップＳ１２１）。
【００７３】
次いで、変換モジュール１１３は、導出される中間ブロックのうち所定の数のブロックを選択する（ステップＳ１２３）。そして、変換モジュール１１３は、選択した中間ブロックを連結して、第２ブロック長を有する出力ブロックを形成する（ステップＳ１２５）。ここでは、ｑ個の連続する中間ブロックが選択されて、互いに連結される。結果的に、第２ブロック長は、上記ランダムビット列のビット長に等しくなる。変換モジュール１１３は、残りの中間ブロックが無くなるまで、上述したステップＳ１２３及びステップＳ１２５の処理を繰り返す（ステップＳ１２７）。
【００７４】
次いで、変換モジュール１１３は、形成された全ての出力ブロックと上記ランダムビット列との間で排他的論理和を計算して、さらなる出力ブロックを導出する（ステップＳ１２９）。
【００７５】
次いで、変換モジュール１１３は、ステップＳ１２５において反復的に形成された１つ以上の出力ブロック及びステップＳ１２９において導出された上記さらなる出力ブロックを連結して、暗号化ビット列を形成する（ステップＳ１３１）。そして、変換モジュール１１３は、形成した暗号化ビット列をデータ入出力モジュール１１１へ返却する。
【００７６】
データ入出力モジュール１１１は、暗号化ビット列を出力ブロックのうちの少なくとも１つを各々包含する２つ以上の分散ビット列へ分散する（ステップＳ１３３）。そして、データ入出力モジュール１１１は、２つ以上の分散ビット列をそれぞれ異なる記憶デバイスに記憶させる。変換モジュール１１３は、ＡＯＮＴ変換が完了すると、ランダムビット列を消去する（ステップＳ１３５）。
【００７７】
［４−２．ＡＯＮＴ逆変換］
図１１は、一実施形態に係るデータ処理装置１００により実行され得るＡＯＮＴ逆変換のための方法の流れの一例を示すフローチャートである。
【００７８】
まず、データ入出力モジュール１１１は、復元すべき対象データに関連付けられる２つ以上の分散ビット列を連結して、暗号化ビット列を形成する（ステップＳ１６１）。そして、データ入出力モジュール１１１は、形成した暗号化ビット列を逆変換モジュール１１５へ出力する。
【００７９】
次いで、逆変換モジュール１１５は、暗号化ビット列を第２ブロック長を各々有する複数の入力ブロックへセグメント化する（ステップＳ１６３）。第２ブロック長は、ブロック暗号型の対称鍵暗号方式に固有のブロック長に相当する第１ブロック長のｑ倍（ｑは２以上の整数）に等しいものとする。
【００８０】
次いで、逆変換モジュール１１５は、セグメント化した複数の入力ブロックの間で排他的論理和を計算して、ランダムビット列を復元する（ステップＳ１６５）。ここで復元されるランダムビット列は、対称鍵暗号方式を利用して個々のブロックを復号する際に用いられる鍵と同一であってもよい。あるいは、ランダムビット列は、個々のブロックを復号する際に用いられる鍵を一部に含むより大きいビット列であってもよい。
【００８１】
次いで、逆変換モジュール１１５は、上述した複数の入力ブロックのうちの１つを選択する（ステップＳ１６７）。そして、逆変換モジュール１１５は、選択した入力ブロックを所定の数の中間ブロックへ分離する（ステップＳ１６９）。ここでは、各入力ブロックがｑ個の連続する中間ブロックへ分離されるものとする。結果的に、中間ブロックのブロック長は、第１ブロック長に等しくなる。さらに、逆変換モジュール１１５は、入力ブロックを分離することにより形成された中間ブロックを、復元したランダムビット列に基づく鍵を用いる対称鍵暗号方式を利用してそれぞれを復号して、所定の数の出力ブロックを導出する（ステップＳ１７１）。逆変換モジュール１１５は、未処理の入力ブロックが無くなるまで、上述したステップＳ１６７〜ステップＳ１７１の処理を繰り返す（ステップＳ１７３）。なお、入力ブロックの末尾のブロックはステップＳ１６５におけるランダムビット列の復元のためにのみ使用され、ここでの復号の反復からは除外されてよい。
【００８２】
次いで、逆変換モジュール１１５は、上述した中間ブロックの復号を通じて導出される複数の出力ブロックを連結して、原ビット列を復元する（ステップＳ１７５）。そして、逆変換モジュール１１５は、復元した原ビット列をデータ入出力モジュール１１１へ返却する。逆変換モジュール１１５は、ＡＯＮＴ逆変換が完了すると、ランダムビット列を消去する（ステップＳ１７７）。
【００８３】
本節で説明した処理ステップは、必ずしも図示された順序で実行されなくてよい。いくつかの処理ステップは、並列的に実行されてもよい。また、追加的な処理ステップが採用されてもよく、一部の処理ステップが省略されてもよい。
【００８４】
＜５．まとめ＞
本開示において説明した修正ＣＴＲＴ法は、既存のＣＴＲＴ法が有していたブロック長ｌと鍵長ｋとの間のｋ≦ｌという制約を排除し、よりセキュリティの強固なブロック暗号型の暗号方式及び鍵長の組み合わせを利用してＡＯＮＴ変換／逆変換を実装することを可能にする。修正ＣＴＲＴ法も、既存のＣＴＲＴ法と同様に、例えばＯＡＥＰ法が必要とするハッシュ値の伸長といった演算コストの大きい処理を含まない。また、原ビット列に対する暗号化ビット列のデータサイズの増加は、パディングビット分に加えて出力ブロック１つ分の増加のみである。従って、修正ＣＴＲＴ法によれば、処理能力、通信性能又は記憶容量といった様々な面でリソースに限界を有する多様なシステム又は装置での利用が容易であるというＡＯＮＴ法の利点を維持しつつ、より長い鍵長を選択して強固なセキュリティを達成することができる。
【００８５】
ある実施例において、上記暗号方式は、１２８ビットという固有のブロック長を有するＡＥＳ（Advanced  Encryption  Standard）であり、２５６ビットの鍵長を有する暗号鍵が選択される。このケースでは、鍵長ｋがブロック長ｌのちょうど２倍に等しい。そのため、ＡＯＮＴ変換の際に、ＡＥＳ暗号化後の中間ブロックを２つずつ連結して出力ブロックとすることで、それら出力ブロックと暗号鍵との排他的論理和を通じて暗号鍵を容易にメッセージ全体へ拡散して秘匿することができる。また、ブロック単位のビット列の連結／分離及び排他的論理和の演算の反復は、汎用プロセッサでの高速な逐次処理又は並列化によるさらなる高速化にも適している。但し、かかる例に限定されず、本開示に係る技術は、他の鍵長及びブロック長の組み合わせにも適用可能である。
【００８６】
本明細書において説明した技法は、ソフトウェア、ファームウェア、ハードウェア又はそれらの任意の組み合わせで実現されてよい。ソフトウェア又はファームウェアを構成するコンピュータプログラムは、例えば、装置の内部又は外部に設けられるコンピュータ読取可能な記憶媒体（非一時的な媒体：non-transitory  media）に予め格納される。そして、コンピュータプログラムは、例えば、実行時にＲＡＭへロードされ、処理回路により実行される。
【００８７】
以上、添付図面を参照しながら本開示の好適な実施形態について詳細に説明したが、本開示の技術的範囲はかかる例に限定されない。本開示の技術分野における通常の知識を有する者であれば、特許請求の範囲に記載された技術的思想の範疇内において、各種の変更例または修正例に想到し得ることは明らかであり、これらについても、当然に本開示の技術的範囲に属するものと了解される。
【００８８】
たとえば、上述した実施形態では、修正ＣＴＲＴ法により原ビット列をＡＯＮＴ変換する場合に、１つ以上の出力ブロックｙ［１］，…，ｙ［ｍ−１］とランダムビット列Ｋとの間で排他的論理和を計算し、さらなる出力ブロックｙ［ｍ］を導出する構成を例示したが、１つ以上の出力ブロックｙ［１］，…，ｙ［ｍ−１］とランダムビット列Ｋとの間で算術和を計算し、さらなる出力ブロックｙ［ｍ］を導出する構成としてもよい。
また、上述した実施形態では、修正ＣＴＲＴ法により暗号化ビット列をＡＯＮＴ逆変換する場合も、複数の入力ブロックｙ［１］，…，ｙ［ｍ］の間で排他的論理和を計算して、ランダムビット列Ｋを復元する構成を例示したが、複数の入力ブロックｙ［１］，…，ｙ［ｍ］の間で算術差を計算して、ランダムビット列Ｋを復元する構成としてもよい。
反対に、原ビット列をＡＯＮＴ変換する場合に算術差を用い、暗号ビット列をＡＯＮＴ逆変換する場合に算術和を用いる構成としてもよい。
このように、修正ＣＴＲＴ法により原ビット列をＡＯＮＴ変換する場合においてランダムビット列Ｋを用いてｙ［ｍ］を導出する場合（ランダムビット列Ｋを秘匿する場合）、および、修正ＣＴＲＴ法により暗号化ビット列をＡＯＮＴ逆変換する場合においてランダムビット列Ｋを復元する場合には、排他的論理和による演算に限定されず、算術演算など逆変換が可能な変換関数を用いることができる。
【符号の説明】
【００８９】
１０，４０      原ビット列
２０，３０      暗号化ビット列
１００          データ処理装置
１１０          処理回路
１３０，１８０  記憶デバイス／ストレージ
【図１】
2019225735.tif 000007
【図２】
2019225735.tif 000008
【図３】
2019225735.tif 000009
【図４】
2019225735.tif 000010
【図５】
2019225735.tif 000011
【図６】
2019225735.tif 000012
【図７】
2019225735.tif 000013
【図８】
2019225735.tif 000014
【図９】
2019225735.tif 000015
【図１０】
2019225735.tif 000016
【図１１】
2019225735.tif 000017
【手続補正書】
【提出日】令和2年11月20日(2020.11.20)
【手続補正１】
【補正対象書類名】明細書
【補正対象項目名】００５４
【補正方法】変更
【補正の内容】
【００５４】
また、別の方法としては、図６に示すように、まず、ステップＳ１１において、ブロック長ｌの整数倍に等しいビット長であって、鍵長ｋよりも大きい当該ビット長のランダムビット列Ｋ´を生成する。そして、ステップＳ１２において、ランダムビット列Ｋ´に基づいて、よりサイズの小さい鍵Ｋを生成し、生成した鍵Ｋを各ブロックの暗号化（又は復号）のために使用してもよい。たとえば、ブロック長ｌが１２８ビットであり、鍵長ｋが１９２ビットである場合、まずステップＳ１１で、２５６ビットのランダムビット列Ｋ´として生成する。また、ステップＳ１２で、２５６ビットのランダムビット列Ｋ´の部分列のうち１９２ビット分の部分列を、鍵Ｋとして生成する。これにより、ステップＳ１３において、入力ブロックｘ［１］，…，ｘ［ｎ］を暗号化する場合には１９２ビットの鍵Ｋを使用することができる。また、ステップＳ１７において、出力ブロックｙ［１］について排他的論理和（ＸＯＲ）を演算する場合には、ブロック長の整数倍である２５６ビットのランダムビット列Ｋ´を使用することができる。なお、ランダムビット列Ｋ´の部分列を鍵Ｋとして生成する場合、例えば、Ｋ´を２ｋで除算した剰余を鍵Ｋとして生成することができる。
また、暗号化ビット列をＡＯＮＴ逆変換する場合も、図７に示すように、ステップＳ３１において、入力ブロックｙ［１］，…，ｙ［ｍ］の間で排他的論理和を計算することで、２５６ビットのランダムビット列Ｋ´が復元される。そして、ステップＳ３２で、復元したランダムビット列Ｋ’を剰余演算することにより、２５６ビットのＫ’の部分列を１９２ビットの鍵Ｋとして生成することができる。そして、復元した鍵Ｋを用いて、中間ブロックｘ´［１］，…，ｘ´［ｎ］から、出力ブロックｘ［１］，…，ｘ［ｎ］を出力することができる。
なお、図６および図７においてＫ´を２ｋで除算した剰余を鍵Ｋとして生成する場合、Ｋは、Ｋ´の下位ｋビットを抽出した値と同じとなる。すなわち、図６，７に示す方法と、図４，５に示す方法（パディングＰを鍵Ｋの上位に連結してランダムビット列Ｋ´を生成する方法）では、演算手順は異なるが、Ｋ’が同じである場合には、生成されるＫは同じ値となる。ただし、図６および図７に示す方法では、図４，５に示す方法と比べて、演算量が少ないため、より好ましい方法と言える。
【手続補正２】
【補正対象書類名】明細書
【補正対象項目名】００５８
【補正方法】変更
【補正の内容】
【００５８】
処理回路１１０は、例えばＣＰＵ（Central  Processing  Unit）又はＭＰＵ（Micro  Processing  Unit）といった１つ以上の汎用的なプロセッサを含んでもよい。また、処理回路１１０は、ＡＳＩＣ（Application  Specific  Integrated  Circuit）又はＦＰＧＡ（Field  Programmable  Gate  Array）といった例えばＡＯＮＴ変換／逆変換のために特別に設計された回路を含んでもよい。
【手続補正３】
【補正対象書類名】図面
【補正対象項目名】図９
【補正方法】変更
【補正の内容】
【図９】
2019225735.tif 000018
【手続補正４】
【補正対象書類名】図面
【補正対象項目名】図１０
【補正方法】変更
【補正の内容】
【図１０】
2019225735.tif 000019
【手続補正５】
【補正対象書類名】図面
【補正対象項目名】図１１
【補正方法】変更
【補正の内容】
【図１１】
2019225735.tif 000020
【国際調査報告】
2019225735.tif 000021
2019225735.tif 000022