(57)【要約】【課題】ホワイトボックスモデル暗号化において、逆方向の計算を抑止する。【解決手段】本開示に係る暗号化装置は、平文を構成する複数の入力値に応じて複数の出力値を出力し、前記複数の出力値の一部が落とし戸付一方向性関数に入力され、当該落とし戸付一方向関数に入力されない出力値と前記複数の入力値の任意の１つによって規定される所定の関係を有することと、前記複数の出力値の一部を前記落とし戸付一方向性関数により暗号化し、前記落とし戸付一方向性関数は落とし戸が不明な状態では暗号化したデータを復号化できない特性を有することと、を備える。【選択図】図９
2017203992.tif 000002
【特許請求の範囲】
【請求項１】
平文を構成する複数の入力値に応じて複数の出力値を出力し、前記複数の出力値の一部が落とし戸付一方向性関数に入力され、当該落とし戸付一方向関数に入力されない出力値と前記複数の入力値の任意の１つによって規定される所定の関係を有する変換関数と、
前記複数の出力値の一部を暗号化し、落とし戸が不明な状態では暗号化したデータを復号化できない特性を有する前記落とし戸付一方向性関数と、
を備える、暗号化装置。
【請求項２】
前記変換関数は、前記所定の関係として、前記複数の出力値のうち前記落とし戸付一方向性関数に入力されない出力値と前記複数の入力値の任意の１つとが定まると、前記複数の入力値の全てと前記複数の出力値の全てが定まる関係を有する、請求項１に記載の暗号化装置。
【請求項３】
前記落とし戸付一方向性関数に入力されて暗号化された出力値と、前記落とし戸付一方向性関数に入力されない出力値とを暗号化する暗号化関数を更に備える、請求項１に記載の暗号化装置。
【請求項４】
前記変換関数は、ｂ個の前記複数の入力値のうちの特定の１つと他のｂ−１個の入力値とをそれぞれ排他論理和演算して得られたｂ−１個の値と前記特定の１つの入力値とからなるｂ個の値を前記複数の出力値とする、請求項１に記載の暗号化装置。
【請求項５】
前記特定の入力値がそのまま前記落とし戸付一方向性関数に入力される、請求項４に記載の暗号化装置。
【請求項６】
前記変換関数は、前記複数の入力値のそれぞれについてランダム置換を行う非線形関数を含む、請求項４に記載の暗号化装置。
【請求項７】
前記変換関数は、ｂ個の前記複数の入力値のうちの特定の１つと他のｂ−１個の入力値とをそれぞれ排他論理和演算して得られたｂ−１個の出力値と、前記特定の１つの入力値と前記ｂ−１個の出力値を順次に排他論理和演算して得られた特定の１つの出力値とからなるｂ個の出力値を前記複数の出力値とする、請求項１に記載の暗号化装置。
【請求項８】
特定の１つの出力値が前記落とし戸付一方向性関数に入力される、請求項７に記載の暗号化装置。
【請求項９】
前記変換関数は、前記複数の入力値のそれぞれについてランダム置換を行う非線形関数を含む、請求項７に記載の暗号化装置。
【請求項１０】
前記変換関数は、前記特定の１つの入力値と他のｂ−１個の前記入力値とをそれぞれ排他論理和演算する前に、当該他のｂ−１個の前記入力値と排他論理和される前記特定の１つの入力値にランダム置換を行う非線形関数を含む、請求項７に記載の暗号化装置。
【請求項１１】
前記落とし戸付一方向性関数はＲＳＡである、請求項１に記載の暗号化装置。
【請求項１２】
平文を構成する複数の入力値に応じて複数の出力値を出力し、前記複数の出力値の一部が落とし戸付一方向性関数に入力され、当該落とし戸付一方向関数に入力されない出力値と前記複数の入力値の任意の１つによって規定される所定の関係を有することと、
前記複数の出力値の一部を前記落とし戸付一方向性関数により暗号化し、前記落とし戸付一方向性関数は落とし戸が不明な状態では暗号化したデータを復号化できない特性を有することと、
を備える、暗号化方法。
【請求項１３】
複数の入力値を復号して平文を構成する複数の出力値を出力する復号化部を備え、
前記復号化部は、平文を構成する複数の入力値に応じて複数の出力値を出力し、前記複数の出力値の一部が落とし戸付一方向性関数に入力され、当該落とし戸付一方向関数に入力されない出力値と前記複数の入力値の任意の１つによって規定される所定の関係を有する変換関数と、前記複数の出力値の一部を暗号化し、落とし戸が不明な状態では暗号化したデータを復号化できない特性を有する前記落とし戸付一方向性関数と、の逆演算により復号を行う、復号化装置。
【請求項１４】
複数の入力値を復号して平文を構成する複数の出力値を出力することを備え、
平文を構成する複数の入力値に応じて複数の出力値を出力し、前記複数の出力値の一部が落とし戸付一方向性関数に入力され、当該落とし戸付一方向関数に入力されない出力値と前記複数の入力値の任意の１つによって規定される所定の関係を有する変換関数と、前記複数の出力値の一部を暗号化し、落とし戸が不明な状態では暗号化したデータを復号化できない特性を有する前記落とし戸付一方向性関数と、の逆演算により復号を行う、復号化方法。
【発明の詳細な説明】
【技術分野】
【０００１】
本開示は、暗号化装置、暗号化方法、復号化装置、及び復号化方法に関する。
【背景技術】
【０００２】
従来、例えば下記の非特許文献１，２には、既存のブロック暗号をホワイトボックスモデルにおいても安全であるように変換する方法が記載されている。非特許文献１，２に記載された方法は、既存のアルゴリズム(ＤＥＳ,ＡＥＳ)のホワイトボックス実装に関し、演算を大きなテーブル参照に変換し、秘密鍵をテーブルに埋め込むことで、内部演算が外部から見られても安全性を保障する技術に関する。
【先行技術文献】
【非特許文献】
【０００３】
【非特許文献１】S. Chow, P. Eisen, H. Johnson, P.C. van Oorschot “A white-box DESimplementation for DRM applications. ” DRM 2002
【非特許文献２】S. Chow, P. Eisen, H. Johnson, P.C. van Oorschot “White-Box Cryptographyand an AES Implementation?” SAC 2002
【発明の概要】
【発明が解決しようとする課題】
【０００４】
非特許文献１，２に記載された方式は、ホワイトボックスモデルにおいては、暗号化をテーブル演算で行う。一般的には、テーブル参照ベースの演算を逆方向に計算することは容易である。つまり、攻撃者は暗号化関数Ｅｎｃにアクセスできれば、逆関数である復号関数Ｄｅｃを構成することが可能である。従って、非特許文献１，２に記載された技術では、満たすべき安全性を十分に確保することは困難である。【０００５】
そこで、ホワイトボックスモデル暗号化において、逆方向の計算を抑止することが求められていた。
【課題を解決するための手段】
【０００６】
本開示によれば、平文を構成する複数の入力値に応じて複数の出力値を出力し、前記複数の出力値の一部が落とし戸付一方向性関数に入力され、当該落とし戸付一方向関数に入力されない出力値と前記複数の入力値の任意の１つによって規定される所定の関係を有する変換関数と、前記複数の出力値の一部を暗号化し、落とし戸が不明な状態では暗号化したデータを復号化できない特性を有する前記落とし戸付一方向性関数と、を備える、暗号化装置が提供される。【０００７】
また、本開示によれば、平文を構成する複数の入力値に応じて複数の出力値を出力し、前記複数の出力値の一部が落とし戸付一方向性関数に入力され、当該落とし戸付一方向関数に入力されない出力値と前記複数の入力値の任意の１つによって規定される所定の関係を有することと、前記複数の出力値の一部を前記落とし戸付一方向性関数により暗号化し、前記落とし戸付一方向性関数は落とし戸が不明な状態では暗号化したデータを復号化できない特性を有することと、を備える、暗号化方法が提供される。【０００８】
また、本開示によれば、複数の入力値を復号して平文を構成する複数の出力値を出力する復号化部を備え、前記復号化部は、平文を構成する複数の入力値に応じて複数の出力値を出力し、前記複数の出力値の一部が落とし戸付一方向性関数に入力され、当該落とし戸付一方向関数に入力されない出力値と前記複数の入力値の任意の１つによって規定される所定の関係を有する変換関数と、前記複数の出力値の一部を暗号化し、落とし戸が不明な状態では暗号化したデータを復号化できない特性を有する前記落とし戸付一方向性関数と、の逆演算により復号を行う、復号化装置が提供される。【０００９】
また、本開示によれば、複数の入力値を復号して平文を構成する複数の出力値を出力することを備え、平文を構成する複数の入力値に応じて複数の出力値を出力し、前記複数の出力値の一部が落とし戸付一方向性関数に入力され、当該落とし戸付一方向関数に入力されない出力値と前記複数の入力値の任意の１つによって規定される所定の関係を有する変換関数と、前記複数の出力値の一部を暗号化し、落とし戸が不明な状態では暗号化したデータを復号化できない特性を有する前記落とし戸付一方向性関数と、の逆演算により復号を行う、復号化方法が提供される。
【発明の効果】
【００１０】
以上説明したように本開示によれば、ホワイトボックスモデルにおいて、逆方向の計算を抑止することが可能となる。
なお、上記の効果は必ずしも限定的なものではなく、上記の効果とともに、または上記の効果に代えて、本明細書に示されたいずれかの効果、または本明細書から把握され得る他の効果が奏されてもよい。
【図面の簡単な説明】
【００１１】
【図１】ｋビットの鍵長に対応したｎビット共通鍵ブロック暗号アルゴリズムＥを示す模式図である。
【図２】図１に示した暗号アルゴリズムＥに対応する復号アルゴリズムＤを示す模式図である。
【図３】ＣＢＣモードを示す模式図である。
【図４】ｃｏｕｎｔｅｒ（ＣＴＲ）モードを示す模式図である。
【図５】共通鍵ブロック暗号アルゴリズムＥの演算をテーブル参照演算で表現する例を示す模式図である。
【図６】公開鍵暗号方式を示す模式図である。
【図７】ハイブリッド暗号方式を示す模式図である。
【図８】本実施形態の基本的な構成を示す模式図である。
【図９】ホワイトボックスエンコーディング関数の構成を示す模式図である。
【図１０】変換関数の具体的構成を示す模式図である。
【図１１】変換関数の具体的構成を示す模式図である。
【図１２】変換関数の具体的構成を示す模式図である。
【図１３】変換関数の具体的構成を示す模式図である。
【図１４】変換関数の具体的構成を示す模式図である。
【図１５】ホワイトボックスエンコーディング関数１００の具体的な構成を示す模式図である。
【図１６】ホワイトボックスエンコーディング関数１００の具体的な構成を示す模式図である。
【図１７】ホワイトボックスエンコーディング関数１００の具体的な構成を示す模式図である。
【図１８】ホワイトボックスエンコーディング関数１００の具体的な構成を示す模式図である。
【図１９】ホワイトボックスエンコーディング関数１００の具体的な構成を示す模式図である。
【図２０】共通の擬似ランダム置換の出力にカウント値をＸＯＲする構成例を示す模式図である。
【図２１】変換関数の具体的構成を示す模式図である。
【図２２】変換関数の具体的構成を示す模式図である。
【図２３】変換関数の具体的構成を示す模式図である。
【図２４】変換関数の具体的構成を示す模式図である。
【図２５】変換関数の具体的構成を示す模式図である。
【発明を実施するための形態】
【００１２】
以下に添付図面を参照しながら、本開示の好適な実施の形態について詳細に説明する。なお、本明細書及び図面において、実質的に同一の機能構成を有する構成要素については、同一の符号を付することにより重複説明を省略する。
【００１３】
なお、説明は以下の順序で行うものとする。
１．前提となる技術
２．本実施形態の基本的な構成例
３．ホワイトボックスエンコーディング関数の構成例
４．落とし戸付き一方向性関数について
５．特別な性質を持った変換関数について
６．ホワイトボックスエンコーディング関数の具体的な構成例
７．エンコーディングの方法
８．デコーディングの方法
【００１４】
１．前提となる技術
図１は、ｋビットの鍵長に対応したｎビット共通鍵ブロック暗号アルゴリズムＥを示す模式図である。共通鍵ブロック暗号は、平文Ｐと鍵Ｋを入力とし、暗号文Ｃを出力する。平文と暗号文のビット長をブロックサイズと呼び、ここではｎで表す。ｎは任意の整数値を取りうるが、通常、ブロック暗号アルゴリズムごとに、予め１つに決められている値である。ブロック長がｎのブロック暗号のことをｎビットブロック暗号と称する場合がある。
【００１５】
図１に示すように、鍵Ｋのビット長をｋで表す。鍵Ｋは任意の整数値を取り得る。共通鍵ブロック暗号アルゴリズムは、１つまたは複数の鍵サイズに対応することになる。例えば、あるブロック暗号アルゴリズムＡはブロックサイズｎ＝１２８であり、ｋ＝１２８、またはｋ＝１９２、またはｋ＝２５６の鍵サイズに対応するという構成もあり得る。
ものとする。図１に示す例では、平文Ｐはｎビット、暗号文Ｃはｎビット、鍵Ｋはｋビットである。
【００１６】
図２は、図１に示した暗号アルゴリズムＥに対応する復号アルゴリズムＤを示す模式図である。ブロック暗号化アルゴリズムＥに対応する復号アルゴリズムＤは、ブロック暗号化アルゴリズムＥの逆関数Ｅ−１と定義でき、入力として暗号文Ｃと鍵Ｋを受け取り、平文Ｐを出力する。
【００１７】
ブロック暗号は、ｎビットの固定長の入出力の関数である。ｎビット以上の大きなサイズのデータを暗号化する際は、複数のブロック暗号アルゴリズムＥを接続し、大きな入出力サイズの暗号化関数を作成する。これを暗号化モードと称する。代表的な暗号化モードとして、ＣＢＣモードがある．ブロック単位に分割させた入力データをＰ１,Ｐ２,…,Ｐｂとした場合、以下のようにブロック単位の暗号文Ｃ１,Ｃ２,…,Ｃｂを作成する。ここで、ＩＶ（Ｉｎｉｔｉａｌｉｚａｔｉｏｎ  Ｖｅｃｔｏｒ）は、ブロックサイズと同じサイズの予測不可能な公開値とする。
Ｃ１＝Ｐ１  ＸＯＲ  ＩＶ
Ｃｂ＝  Ｐｂ  ＸＯＲ  Ｃｂ−１  ｆｏｒ  ｂ＞１
【００１８】
図３は、ＣＢＣモードを示す模式図である。また、図４はｃｏｕｎｔｅｒ（ＣＴＲ）モードを示す模式図である。その他に、暗号化モードとしてはＣｉｐｈｅｒ  Ｆｅｅｄｂａｃｋ（ＣＦＢ）,Ｏｕｔｐｕｔ  Ｆｅｅｄｂａｃｋ（ＯＦＢ）等がある。また、改ざん検知機能を付けたｃｏｕｎｔｅｒ  ｗｉｔｈ  ＣＢＣ−ＭＡＣ（ＣＣＭ）  ｍｏｄｅや、Ｇａｌｏｉｓ／Ｃｏｕｎｔｅｒ  Ｍｏｄｅ  （ＧＣＭ）  ｍｏｄｅなどがある。モードを含めた任意サイズ（ただし、ｎの定数倍）の暗号化関数をＥｎｃ、復号関数をＤｅｃと定義する。
【００１９】
ブロック暗号の安全性モデルとして、ブラックボックスモデルとホワイトボックスモデルがある．以下それぞれのモデルにおいて想定される攻撃者の能力と求められる安全性について説明する。
【００２０】
ブラックボックスモデルは、攻撃者がブロック暗号アルゴリズムの入力、出力である平文Ｐ、暗号文Ｃにしかアクセスすることができない安全性モデルである。攻撃者のタイプとして、平文、暗号文のペアの値を知っているのみである既知平文暗号文攻撃、さらに値自体を攻撃者が自由にコントロールできる選択平文暗号文攻撃に分けることができる。モデルでは、暗号演算自体は安全に実行され、攻撃者が暗号の中間値を見たり、改ざんできないことを想定している。ブラックボックスモデルは、ハードウェアサポートなどを利用し、暗号演算の耐タンパ性が保障できている場合が対応する。ブラックボックスモデル用の暗号アルゴリズムの実装方法をブラックボックス実装と称する。ブラックボックスモデルの安全性として、鍵回復攻撃耐性（鍵Ｋを求めることが計算量的に困難）、識別攻撃耐性（ブロック暗号と擬似ランダム鍵付置換を識別するのが計算量的に困難）が挙げられる。
【００２１】
ホワイトボックスモデルは、ブラックボックスモデルよりも強い攻撃者を想定した安全性モデルであり、攻撃者がブロック暗号アルゴリズムの入力、出力である平文Ｐ、暗号文Ｃのみならず、演算の中間値にも自由にアクセスできることを想定したモデルである。攻撃者がブロック暗号の入力である平文Ｐ、暗号文Ｃを自由にコントロールでき、さらに演算中の任意の中間値を見ることや、改ざんできることを想定している。ホワイトボックスモデルは、ハードウェアのサポートがないオールソフトウェアなどの、実装上の制約により耐タンパが保障できないケースに対応している。また、ホワイトボックスモデルは、バッファオーバーフロー等の実装上の脆弱性やマルウェア等により中間値が漏れてしまう場合にも対応する。ホワイトボックスモデル用の暗号アルゴリズムの実装方法をホワイトボックス実装と称する。ホワイトボックスモデルの安全性として、平文回復困難性（暗号文から平文を見つけることが計算量的に困難）が挙げられ、この安全性を満たすために、ホワイトボックスモデルにおいて、暗号化関数Ｅは、暗号化関数Ｅｎｃから復号化関数Ｄｅｃを作ることができないという一方向性を満たす必要がある。この一方向性をホワイトボックス一方向性と称することとする。
【００２２】
既存技術１
２００２年にＣｈｏｗらにより、ホワイトボックスモデルにおいても安全にブロック暗号ＤＥＳ,ＡＥＳを安全に実装する方法が提案された（前述した非特許文献１，２）。この技術では、先ず、図５に示すように、共通鍵ブロック暗号アルゴリズムＥの演算をテーブル参照演算で表現する。この手法は、テーブル５０をdecompositionの難しい問題から生成し、テーブル５０をつなぎ合わせることにより、ブロック暗号を生成するアプローチである。
【００２３】
これらの方式は、ホワイトボックスモデルにおいては、暗号化をテーブル演算で行う。一般的には、テーブル参照ベースの演算を逆方向に計算することは容易である。つまり、攻撃者は暗号化関数Ｅｎｃにアクセスできれば、逆関数である復号関数Ｄｅｃを構成することが可能である。よって、既存技術１では、満たすべき安全性であるホワイトボックス一方向性を満たすことができない。
【００２４】
既存技術２
図６は、公開鍵暗号方式を示す模式図である。公開鍵暗号方式では、暗号化(公開)鍵ｐｋと復号(秘密)鍵ｓｋが異なり、それぞれの鍵を用いて暗復号を行う。ここで、安全な公開鍵暗号方式では、暗号化鍵ｐｋからは復号鍵ｓｋを求めることは計算量的に困難である。一般に、暗号化鍵ｓｋは公開されて使用され、復号鍵ｓｋは秘密情報として使われる。よって、既存技術２においては、暗号化関数から復号関数を求めることは困難であり、ホワイトボックス一方向の条件をみたすことになる。具体的な公開鍵の構成方法として、ＲＳＡ，ＥＣＣなどが広く用いられている。
【００２５】
既存方法２は、ホワイトボックスモデルにおいて、安全性の要件は満たしているが、パフォーマンスが非常に悪く、広く使われている共通鍵方式と比べて数百倍から数千倍処理時間が遅くなる。このため、現実のアプリケーションとしては、大きなデータの暗号化を行うことはできない。
【００２６】
既存技術３（ハイブリッド暗号方式）
図７は、ハイブリッド暗号方式を示す模式図である。公開鍵暗号と秘密鍵暗号を組み合わせた方式であり、乱数生成器とハッシュ関数より、暗号化毎に共通鍵ブロック暗号用の秘密鍵Ｋを生成する方式である。この方式では、データサイズの小さい共通鍵ブロック暗号用の秘密鍵Ｋのハッシュされる前の値を公開鍵暗号方式で暗号化し、実際のデータは高速な共通鍵暗号方式で暗号化を行う。復号の際は、公開鍵暗号の復号関数とハッシュ関数によって共通鍵ブロック暗号用の秘密鍵Ｋを得る。その後、復号した共通鍵ブロック暗号用の秘密鍵Ｋで、実際のデータを復号する。
【００２７】
既存方法３では、共通鍵用の秘密鍵を毎回乱数生成器から生成する。乱数生成器は擬似乱数アルゴリズムと真性乱数生成器に分けることができる。擬似乱数生成器では、シードと呼ばれ秘密情報をベースに乱数を生成する。このため、ホワイトボックスモデルでは、秘密のシードは攻撃者に見えてしまい、アルゴリズムは公開であるため、乱数の出力を攻撃者は予想することができる。つまり、共通鍵用の秘密鍵Ｋを攻撃者が予測できるため、容易に復号関数を構成することができる。
【００２８】
真性乱数生成を用いた場合は上記のような安全上の問題は無いが、真性乱数生成器のハードウェアが必要になる。そもそもホワイトボックスモデルは、すべてソフトウェアで実行したとしても安全性を保つ方式であるため、ハードウェアを準備した場合、ホワイトボックスモデルが想定している問題と矛盾する。また、効率的で安全な真性乱数生成器を導入するコストは非常に高くなる。
【００２９】
以上のように、既存技術１,３は求められる安全性(ホワイトボックス一方向性)を満たすことができない。また、既存技術２は，安全性は満たしているが、パフォーマンスが非常に悪く、実際の環境やユースケースでは用いることができない。
【００３０】
２．本実施形態の基本的な構成例
図８は、本実施形態の基本的な構成を示す模式図である。本実施形態に係るホワイトボックスエンコーディング関数１００は、落とし戸付き一方向性関数と特別な性質から構成されるエンコーディング方法であり、ホワイトボックス一方向性の性質の成立を達成している。これを任意のブロック暗号演算を行う暗号化関数２００の前に付けることで、暗号化関数（Ｅｎｃ）２００にホワイトボックス一方向性の性質をもたせることができる。
【００３１】
３．ホワイトボックスエンコーディング関数の構成例
図９は、ホワイトボックスエンコーディング関数１００の構成を示す模式図である。図９に示すように、ホワイトボックスエンコーディング関数１００は、エンコーディング関数を落とし戸付き一方向性関数１０２と特別な性質(All-from-the-Part Transform)を持った変換関数１０４から構成する。具体的には、図９に示すように、平文Ｐを特別な性質を持った変換関数１０４に入力し、その出力の一部Ｐ＊１を落とし戸つき一方向性関数１０２の入力とする。落とし戸付き一方向性関数１０２の出力と、残りの特別な性質を持った変換関数１０４の出力をホワイトボックスエンコーディング関数１００の出力とする。暗号化関数２００の入力前にこの演算を行うことにより、任意のブロック暗号に対してホワイトボックス一方向性を持たせることができる。
【００３２】
４．落とし戸付き一方向性関数について
落とし戸付き一方向性関数１０２とは、順方向の演算は容易だが、逆方向の演算は”落とし戸”を知らない限り計算量的に困難な関数である。一方で、落とし戸さえ知っていれば、逆方向の演算も容易に計算できる関数である。例えば、ＲＳＡ関数が代表的な落とし戸付き関数である。ＲＳＡ関数では、公開鍵ｐｋを用いて順方向演算を行い、逆方向演算では、秘密鍵ｓｋを用いて行う。秘密鍵ｓｋが落とし戸に対応し、公開鍵ｐｋからは秘密鍵ｓｋを求めることは計算量的に困難である。その他、落とし戸付き一方向性関数としては、Ｒａｂｉｎ−ＷｉｌｌｉａｍｓやＫｕｒｏｓａｗａ−Ｉｔｏｈ−Ｔａｋｅｕｃｈｉ
ｃｒｙｐｔｏｓｙｓｔｅｍ,Ｄｉｃｋｓｏｎ ｐｏｌｙｎｏｍｉａｌｓ等がある。ここで、落とし戸付き一方向性関数１０２の入出力サイズをｎｉｎ,ｎｏｕｔと定義する。
【００３３】
５．特別な性質を持った変換関数について
特別な性質を持った変換関数１０４は、秘密鍵を含まない公開の関数であり、入力ブロックをＸ１,Ｘ２,Ｘ３, …,Ｘｂ、出力ブロックをＹ１,Ｙ２,Ｙ３,…,Ｙｂとしたときに、次の性質１を満たす関数である。
【００３４】
(性質１)ｂ−１通りのＹ２, Ｙ３, …, Ｙｂの出力ブロックと、任意の１つ入力ブロック（Ｘ１,Ｘ２,Ｘ３, …,Ｘｂのいずれか１つ）が与えられたとき、全ての入出力を決定的に求めることができる。例えば、Ｙ２,Ｙ３,…,ＹｂとＸ３が与えられたときに、Ｙ１と残りのＸは計算量１で計算可能である。なお、Ｘ１,Ｘ２,Ｘ３, …,Ｘｂは図９のＰ１,Ｐ２,Ｐ３,…,Ｐｂに対応し、Ｙ１,Ｙ２,Ｙ３, …, Ｙｂは図９のＰ＊１, Ｐ＊２, Ｐ＊３,…, Ｐ＊ｂに対応する。
【００３５】
図９に示したように、ホワイトボックスエンコーディング関数１００は、特別な性質を持った変換関数１０４と落とし戸付き一方向性関数１０２から構成される。平文をブロック毎に分けたＰ１,Ｐ２,Ｐ３,…,Ｐｂ，を特別な性質を持った変換関数１０４の入力とし、出力をＰ＊１,Ｐ＊２,Ｐ＊３,…,Ｐ＊ｂとする．ここで、出力の１ブロックを落とし戸付き一方向性関数１０２の入力とする。図９の場合、出力の１ブロックであるＰ＊１が落とし戸付き一方向性関数１０２の入力になる。Ｐ＊１以外の出力Ｐ＊２,Ｐ＊３,…,Ｐ＊ｎと、落とし戸付き一方向性関数１０２の出力とが、ホワイトボックスエンコーディング関数１００の出力Ｐ’１,Ｐ’２,Ｐ’３,…,Ｐ’ｂとなる。
【００３６】
図１０〜図１４は、特別な性質を持った変換関数１０４の具体的構成を示す模式図である。図１０に示す構成は、ＸＯＲ演算（ＸＯＲ  Ｏｐｅｒａｔｉｏｎ）のみの構成であって、以下の関係式で表すことができる。
Ｙｉ＝Ｘｉ  ＸＯＲ  Ｘｂ    （１≦ｉ≦ｎ−１）
Ｙｎ＝(Ｘｂ  ＸＯＲ  (ｂ ｍｏｄ ２))  Ｘ１  ＸＯＲ  Ｘ２  ＸＯＲ  Ｘ３  ＸＯＲ  Ｘ４  ＸＯＲ…ＸＯＲ  Ｘｂ−１
【００３７】
図１１に示す構成は、図１０に示す構成に非線形関数Ｐ１，…Ｐｂ−３，Ｐｂ−２，Ｐｂ−１を加えたものである。図１１に示す構成は、以下の関係式で表すことができる。
Ｙｉ＝Ｘｉ  ＸＯＲ  Ｐｉ（Ｘｂ）    (１≦ｉ≦ｎ−１)
Ｙｎ＝（Ｐ１（Ｘｂ）  ＸＯＲ  Ｐ２（Ｘｂ）  ＸＯＲ  …  ＸＯＲ  Ｐｎ−１（Ｘｂ））  ＸＯＲ  Ｘ２  ＸＯＲ  Ｘ３  ＸＯＲ  Ｘ４  ＸＯＲ…ＸＯＲ  Ｘｂ
ここで、Ｐｉはｎ−ｂｉｔの入出力の擬似ランダム置換である。
【００３８】
図１２に示す構成は、図１０に示す構成に非線形関数Ｐ１，…Ｐｂ−３，Ｐｂ−２，Ｐｂ−１を加えたものである。図１２に示す構成は、以下の関係式で表すことができる。
Ｙｉ＝Pｉ（Ｘｉ）  ＸＯＲ  Ｘｂ  （１≦ｉ≦ｎ−１）
Ｙｎ＝（Ｐｂ（Ｘｂ）  ＸＯＲ  （ｂ
ｍｏｄ ２））  Ｐｉ（Ｘ１）  ＸＯＲ  Ｐｉ（Ｘ２）  ＸＯＲ  Ｐｉ（Ｘ３）  ＸＯＲ  Ｐｉ(X4)  ＸＯＲ  …ＸＯＲ  Ｐｉ（Ｘｂ−１）
ここで、Ｐｉはｎ−ｂｉｔの入出力の擬似ランダム置換である。
【００３９】
図１３に示す構成は、ＸＯＲ演算（ＸＯＲ  Ｏｐｅｒａｔｉｏｎ）のみの最も基本的な構成例であって、以下の関係式で表すことができる。
Ｙ１＝Ｘ１
Ｙｉ＝Ｘ１  ＸＯＲ  Ｘｉ  （２≦ｉ≦ｎ）
【００４０】
図１４に示す構成は、図１３に示す構成に非線形関数Ｐ１，…Ｐ２，Ｐ３，Ｐｂを加えたものである。図１４に示す構成は、以下の関係式で表すことができる。
Ｙ１＝Ｐ１（Ｘ１）  
Ｙｉ＝Ｐ１（Ｘ１）  ＸＯＲ  Ｐｉ（Ｘｉ）  （２≦ｉ≦ｎ）
ここで、Ｐｉはｎ−ｂｉｔの入出力の独立な擬似ランダム置換である。
【００４１】
擬似ランダム置換は、秘密鍵は固定の公開値をいれることで、ブロック暗号から置換関数が構成可能である。効率的な構成方法として、ＡＥＳの１２８  ｂｉｔ鍵のＡＥＳを４  ｒｏｕｎｄに縮約したものがあげられる。４  ｒｏｕｎｄでも非線形関数として十分な性質を持っているためである。また独立な関数にするために、図２０に示すように、共通の擬似ランダム置換の出力にカウント値ｒをＸＯＲすることで疑似ランダム変換を構成することもできる。
図２１〜図２５は、特別な性質を持った変換関数１０４の更に別の具体的構成を示す模式図である。図２１〜図２５においても、入力ブロックをＸ１,Ｘ２,Ｘ３, …,Ｘｂ、出力ブロックをＹ１,Ｙ２,Ｙ３,…,Ｙｂとしている。また、図２２〜図２５に示す構成例では、入出力の独立な擬似ランダム置換Ｐｉを備えている。
【００４２】
６．ホワイトボックスエンコーディング関数の具体的な構成例
図１５〜図１９は、ホワイトボックスエンコーディング関数１００の具体的な構成を示す模式図である。図１５は、図１０に示す構成に落とし戸付き一方向性関数１０２を加えたものである。図１６は、図１１に示す構成に落とし戸付き一方向性関数１０２を加えたものである。図１７は、図１２に示す構成に落とし戸付き一方向性関数１０２を加えたものである。図１８は、図１３に示す構成に落とし戸付き一方向性関数１０２を加えたものである。図１９は、図１４に示す構成に落とし戸付き一方向性関数１０２を加えたものである。
【００４３】
７．エンコーディングの方法
ホワイトボックスエンコーディング関数１００におけるエンコーディングの方法は以下の通りである。先ず、平文Ｐをｎ−ｂｉｔブロック毎に分割する。次に、平文Ｐのブロックを入力として変換関数１０４による演算を行う。次に、出力の特定の１ブロックを落とし戸付き一方向性関数１０２に入力し、計算する。ここで、落とし戸付き一方向性関数１０２は、公開鍵を用いて演算される。次に、落とし戸付き一方向性関数１０２の出力と、変換関数１０４の残りの出力を暗号文として生成する。
【００４４】
８．デコーディングの方法
また、ホワイトボックスエンコーディング関数１００と逆方向のデコーディング関数によるデコーディング(復号)の方法は以下の通りである。先ず、暗号文Ｃをｎ−ｂｉｔブロック毎に分割する。次に、暗号文の特定のブロックを落とし戸付き一方向性関数１０２の逆関数の入力として計算する。ここで、落とし戸付き一方向性関数１０２の逆関数は、落とし戸である秘密鍵を用いて計算される。次に、落とし戸付き一方向性関数１０２の逆関数の出力と、残りの暗号文ブロックを入力として、変換関数１０４の逆関数を計算する。そして、変換関数１０４の逆関数の出力を平文Ｐとする。
【００４５】
本実施形態によれば、既存技術１，３で満たすことのできなかったホワイトボックス一方向性を満たすことができる。具体的には，ランダムに与えられた暗号文から平文を求めることが、落とし戸付き一方向性関数１０２を破るのと等価かそれ以上難しいことを証明可能である。
【００４６】
更に、ホワイトボックスモデルにおいて、暗号化関数Ｅｎｃからどの１つの平文ブロックの復号化関数Ｄｅｃを作ることもできない。これは、ランダムに与えられた暗号文から平文の１ブロックさえも求めることが難しいことを保障している。このように、より強い安全性も同様の安全性であることを証明可能である。また、エンコーディング関数を付けたとしても、ブロック暗号関数の持っている性質は保存可能である。
【００４７】
既存技術２は、ホワイトボックス一方向性を満たすことはできたが、パフォーマンスが非常に悪い欠点があった。ｂ個のブロックの暗号化に対して、既存技術２はｂ回のＲＳＡ演算が必要であったが、暗号化関数にＣＢＣ  ｍｏｄｅを用いた場合、本実施形態によれば、１回のＲＳＡとＮ回のブロック暗号演算になる。ｂの値が十分に大きい場合、それぞれＲＳＡ演算とブロック暗号演算のコストが支配的になり、提案方式は数百倍速くなる。
【００４８】
本実施形態の手法は、暗号化関数に入力される平文Ｐに対して実行される。つまり、暗号化関数とは独立に行われるため、基本的にはどんな暗号関数(ＡＥＳ,  ＣＬＥＦＩＡ)や暗号化モード(ＣＢＣ. ＣＴＲ ｍｏｄｅ)に対しても適用可能である。また、暗号化関数の実装に対しても変更を必要としないので、既存のライブラリに対してもｗｒａｐｐｅｒとして適用可能である。
【００４９】
以上、添付図面を参照しながら本開示の好適な実施形態について詳細に説明したが、本開示の技術的範囲はかかる例に限定されない。本開示の技術分野における通常の知識を有する者であれば、特許請求の範囲に記載された技術的思想の範疇内において、各種の変更例または修正例に想到し得ることは明らかであり、これらについても、当然に本開示の技術的範囲に属するものと了解される。
【００５０】
また、本明細書に記載された効果は、あくまで説明的または例示的なものであって限定的ではない。つまり、本開示に係る技術は、上記の効果とともに、または上記の効果に代えて、本明細書の記載から当業者には明らかな他の効果を奏しうる。
【００５１】
なお、以下のような構成も本開示の技術的範囲に属する。
（１）  平文を構成する複数の入力値に応じて複数の出力値を出力し、前記複数の出力値の一部が落とし戸付一方向性関数に入力され、当該落とし戸付一方向関数に入力されない出力値と前記複数の入力値の任意の１つによって規定される所定の関係を有する変換関数と、
前記複数の出力値の一部を暗号化し、落とし戸が不明な状態では暗号化したデータを復号化できない特性を有する前記落とし戸付一方向性関数と、
を備える、暗号化装置。
（２）  前記変換関数は、前記所定の関係として、前記複数の出力値のうち前記落とし戸付一方向性関数に入力されない出力値と前記複数の入力値の任意の１つとが定まると、前記複数の入力値の全てと前記複数の出力値の全てが定まる関係を有する、前記（１）に記載の暗号化装置。
（３）  前記落とし戸付一方向性関数に入力されて暗号化された出力値と、前記一方向性関数に入力されない出力値とを暗号化する暗号化関数を更に備える、前記（１）又は（２）に記載の暗号化装置。
（４）  前記変換関数は、ｂ個の前記複数の入力値のうちの特定の１つと他のｂ−１個の入力値とをそれぞれ排他論理和演算して得られたｂ−１個の値と前記特定の１つの入力値とからなるｂ個の値を前記複数の出力値とする、前記（１）〜（３）のいずれかに記載の暗号化装置。
（５）  前記特定の入力値がそのまま前記落とし戸付一方向性関数に入力される、前記（４）に記載の暗号化装置。
（６）  前記変換関数は、前記複数の入力値のそれぞれについてランダム置換を行う非線形関数を含む、前記（４）に記載の暗号化装置。
（７）  前記変換関数は、ｂ個の前記複数の入力値のうちの特定の１つと他のｂ−１個の入力値とをそれぞれ排他論理和演算して得られたｂ−１個の出力値と、前記特定の１つの入力値と前記ｂ−１個の出力値を順次に排他論理和演算して得られた特定の１つの出力値とからなるｂ個の出力値を前記複数の出力値とする、前記（１）〜（３）のいずれかに記載の暗号化装置。
（８）  特定の１つの出力値が前記落とし戸付一方向性関数に入力される、前記（７）に記載の暗号化装置。
（９）  前記変換関数は、前記複数の入力値のそれぞれについてランダム置換を行う非線形関数を含む、前記（７）記載の暗号化装置。
（１０）  前記変換関数は、前記特定の１つの入力値と他のｂ−１個の前記入力値とをそれぞれ排他論理和演算する前に、当該他のｂ−１個の前記入力値と排他論理和される前記特定の１つの入力値にランダム置換を行う非線形関数を含む、前記（７）に記載の暗号化装置。
（１１）  前記落とし戸付一方向性関数はＲＳＡである、前記（１）〜（１０）のいずれかに記載の暗号化装置。
（１２）  平文を構成する複数の入力値に応じて複数の出力値を出力し、前記複数の出力値の一部が落とし戸付一方向性関数に入力され、当該落とし戸付一方向関数に入力されない出力値と前記複数の入力値の任意の１つによって規定される所定の関係を有することと、
前記複数の出力値の一部を前記落とし戸付一方向性関数により暗号化し、前記落とし戸付一方向性関数は落とし戸が不明な状態では暗号化したデータを復号化できない特性を有することと、
を備える、暗号化方法。
（１３）  複数の入力値を復号して平文を構成する複数の出力値を出力する復号化部を備え、
前記復号化部は、平文を構成する複数の入力値に応じて複数の出力値を出力し、前記複数の出力値の一部が落とし戸付一方向性関数に入力され、当該落とし戸付一方向関数に入力されない出力値と前記複数の入力値の任意の１つによって規定される所定の関係を有する変換関数と、前記複数の出力値の一部を暗号化し、落とし戸が不明な状態では暗号化したデータを復号化できない特性を有する前記落とし戸付一方向性関数と、の逆演算により復号を行う、復号化装置。
（１４）  複数の入力値を復号して平文を構成する複数の出力値を出力することを備え、
平文を構成する複数の入力値に応じて複数の出力値を出力し、前記複数の出力値の一部が落とし戸付一方向性関数に入力され、当該落とし戸付一方向関数に入力されない出力値と前記複数の入力値の任意の１つによって規定される所定の関係を有する変換関数と、前記複数の出力値の一部を暗号化し、落とし戸が不明な状態では暗号化したデータを復号化できない特性を有する前記落とし戸付一方向性関数と、の逆演算により復号を行う、復号化方法。
【符号の説明】
【００５２】
１００    ホワイトボックスエンコーディング関数
１０２    落とし戸付き一方向性関数
１０４    変換関数
２００    暗号化関数
【図１】
2017203992.tif 000003
【図２】
2017203992.tif 000004
【図３】
2017203992.tif 000005
【図４】
2017203992.tif 000006
【図５】
2017203992.tif 000007
【図６】
2017203992.tif 000008
【図７】
2017203992.tif 000009
【図８】
2017203992.tif 000010
【図９】
2017203992.tif 000011
【図１０】
2017203992.tif 000012
【図１１】
2017203992.tif 000013
【図１２】
2017203992.tif 000014
【図１３】
2017203992.tif 000015
【図１４】
2017203992.tif 000016
【図１５】
2017203992.tif 000017
【図１６】
2017203992.tif 000018
【図１７】
2017203992.tif 000019
【図１８】
2017203992.tif 000020
【図１９】
2017203992.tif 000021
【図２０】
2017203992.tif 000022
【図２１】
2017203992.tif 000023
【図２２】
2017203992.tif 000024
【図２３】
2017203992.tif 000025
【図２４】
2017203992.tif 000026
【図２５】
2017203992.tif 000027
【国際調査報告】
2017203992.tif 000028
2017203992.tif 000029
2017203992.tif 000030
2017203992.tif 000031