(57)【要約】  平文を分割したブロックを、補助変数を用いて暗号化する暗号化部と、前記平文を分割したブロックに基づいて、複数の部分チェックサムを生成する部分チェックサム生成部と、前記部分チェックサム生成部が生成した前記部分チェックサムに基づいて、メタチェックサムを生成するメタチェックサム生成部と、前記メタチェックサム生成部が生成した前記メタチェックサムに基づいて、改ざんの検出に用いるタグを生成するタグ生成部と、を有し、前記暗号化部が暗号化した前記暗号文と、前記タグ生成部が生成した前記タグと、を出力する。
2019163032.tif 000002
【特許請求の範囲】
【請求項１】
平文を分割したブロックを、補助変数を用いて暗号化する暗号化部と、
前記平文を分割したブロックに基づいて、複数の部分チェックサムを生成する部分チェックサム生成部と、
前記部分チェックサム生成部が生成した前記部分チェックサムに基づいて、メタチェックサムを生成するメタチェックサム生成部と、
前記メタチェックサム生成部が生成した前記メタチェックサムに基づいて、改ざんの検出に用いるタグを生成するタグ生成部と、
を有し、
前記暗号化部が暗号化した暗号文と、前記タグ生成部が生成した前記タグと、を出力する
暗号化装置。
【請求項２】
請求項１に記載の暗号化装置であって、
前記部分チェックサム生成部は、前記平文を分割したブロックを予め定められた数ごとにまとめて、まとめたそれぞれのブロックごとの前記部分チェックサムを生成することで、複数の前記部分チェックサムを生成する
暗号化装置。
【請求項３】
請求項２に記載の暗号化装置であって、
前記部分チェックサム生成部は、１つにまとめられた各ブロックの排他的論理和を求めることで、前記部分チェックサムを生成する
暗号化装置。
【請求項４】
請求項１から請求項３までのいずれかに記載の暗号化装置であって、
前記部分チェックサム生成部は、前記平文を分割したブロックのうちの偶数番目のブロックを予め定められた数ごとにまとめて、まとめたそれぞれのブロックごとの前記部分チェックサムを生成する
暗号化装置。
【請求項５】
請求項２から請求項４までのいずれかに記載の暗号化装置であって、
前記予め定められた数は、２以上の値である
暗号化装置。
【請求項６】
請求項１から請求項５までのいずれかに記載の暗号化装置であって、
前記メタチェックサム生成部は、前記部分チェックサム生成部が生成した複数の前記部分チェックサムを、鍵付きのハッシュ関数、又は、擬似ランダム関数を用いて1ブロックにハッシュすることで、前記メタチェックサムを生成する
暗号化装置。
【請求項７】
請求項１から請求項６までのいずれかに記載の暗号化装置であって、
前記タグ生成部は、前記メタチェックサム生成部が生成した前記メタチェックサムを、補助変数を用いて暗号化することで、前記タグを生成する
暗号化装置。
【請求項８】
請求項７に記載の暗号化装置であって、
前記タグ生成部が前記タグを生成する際に用いる補助変数には、前記暗号化部が前記平文を暗号化する際に用いる補助変数とは異なる値が含まれている
暗号化装置。
【請求項９】
暗号化装置が、
平文を分割したブロックを、補助変数を用いて暗号化し、
前記平文を分割したブロックに基づいて、複数の部分チェックサムを生成し、
生成した前記部分チェックサムに基づいて、メタチェックサムを生成し、
生成した前記メタチェックサムに基づいて、改ざんの検出に用いるタグを生成し、
前記平文を暗号化した暗号文と、前記タグと、を出力する
暗号化方法。
【請求項１０】
暗号化装置に、
平文を分割したブロックを、補助変数を用いて暗号化する暗号化部と、
前記平文を分割したブロックに基づいて、複数の部分チェックサムを生成する部分チェックサム生成部と、
前記部分チェックサム生成部が生成した前記部分チェックサムに基づいて、メタチェックサムを生成するメタチェックサム生成部と、
前記メタチェックサム生成部が生成した前記メタチェックサムに基づいて、改ざんの検出に用いるタグを生成するタグ生成部と、
を実現させ、
前記暗号化部が暗号化した暗号文と、前記タグ生成部が生成した前記タグと、を出力する
プログラム。
【請求項１１】
暗号文を分割したブロックを、補助変数を用いてブロックごとに復号して平文を生成する復号部と、
前記復号部が復号した前記平文のブロックに基づいて、複数の部分チェックサムを生成する部分チェックサム生成部と、
前記部分チェックサム生成部が生成した前記部分チェックサムに基づいて、メタチェックサムを生成するメタチェックサム生成部と、
前記メタチェックサム生成部が生成した前記メタチェックサムに基づいて、改ざんの検出に用いる検証用タグを生成するタグ生成部と、
前記暗号文とともに受信したタグと、前記タグ生成部が生成した前記検証用タグと、の比較検証を行うタグ検証部と、
を有し、
前記復号部が復号した前記平文と、前記タグ検証部による比較検証の結果と、を出力する
復号装置。
【請求項１２】
復号装置が、
暗号文を分割したブロックを、補助変数を用いてブロックごとに復号して平文を生成し、
復号した前記平文のブロックに基づいて、複数の部分チェックサムを生成し、
生成した前記部分チェックサムに基づいて、メタチェックサムを生成し、
生成した前記メタチェックサムに基づいて、改ざんの検出に用いる検証用タグを生成し、
前記暗号文とともに受信したタグと、生成した前記検証用タグと、の比較検証を行い、
復号した前記平文と、比較検証の結果と、を出力する
復号方法。
【請求項１３】
復号装置に、
暗号文を分割したブロックを、補助変数を用いてブロックごとに復号して平文を生成する復号部と、
前記復号部が復号した平文のブロックに基づいて、複数の部分チェックサムを生成する部分チェックサム生成部と、
前記部分チェックサム生成部が生成した前記部分チェックサムに基づいて、メタチェックサムを生成するメタチェックサム生成部と、
前記メタチェックサム生成部が生成した前記メタチェックサムに基づいて、改ざんの検出に用いる検証用タグを生成するタグ生成部と、
前記暗号文とともに受信したタグと、前記タグ生成部が生成した前記検証用タグと、の比較検証を行うタグ検証部と、
を実現させ、
前記復号部が復号した前記平文と、前記タグ検証部による比較検証の結果と、を出力する
プログラム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、暗号化装置、暗号化方法、プログラム、復号装置、復号方法に関する。
【背景技術】
【０００２】
事前に共有された秘密鍵を用いて、平文メッセージに対して暗号化と改ざん検知用の認証タグ計算とを同時に適用する認証暗号（Authenticated Encryption, AE）という技術が知られている。【０００３】
このような認証暗号を効率的に行う技術の一つとして、例えば、特許文献１に示すようなOCB（Offset Code Book）モードと呼ばれる認証暗号方式が知られている。OCBモードは、暗号化と復号の際に、Tweakと呼ばれる補助変数（調整値）を導入する、Tweakableブロック暗号と呼ばれるブロック暗号を拡張したものである。具体的には、OCBモードでは、非特許文献１に記載されているXEXモードによる暗号化を行うことで、Tweakを用いた暗号化を行っている。また、OCBモードでは、平文を分割した各ブロックの排他的論理和に上記暗号化を行う際と同様の処理を行うことでタグを生成している。【０００４】
また、認証暗号方式の一例として、例えば、特許文献２が知られている。特許文献２には、２ラウンドフェイステル暗号化手段を有する暗号化装置が記載されている。２ラウンドフェイステル暗号化手段は、平文を２つのnビットブロックごとに分割したうえで、２ラウンドフェイステル置換による暗号化行っている。２ラウンドフェイステル暗号化手段では、２ラウンドフェイステル構造のラウンド関数に、Tweakと呼ばれる補助変数を入れた暗号化関数を用いることになる。なお、特許文献２に記載の技術は、OTR（Offset Two-Round）方式とも呼ばれている。【０００５】
また、特許文献２に記載のOTR方式の変形例として、例えば、特許文献３がある。特許文献３には、ブロックデータごとに異なる値となるブロックナンスを生成するブロックナンス生成手段と、対応するブロックナンスを共通鍵で暗号化してブロックデータと排他的論理和をとることで暗号データを生成する暗号データ生成手段と、を有する認証暗号化装置が記載されている。特許文献３に記載の技術の場合、２ラウンドフェイステル置換の代わりに、上記処理を行うことになる。【０００６】
また、関連する技術として、例えば、特許文献４がある。特許文献４には、各セグメントについて暗号チェックサムを計算し、セグメントと暗号チェックサムを結合してメディアセグメントを生成する、という方法が記載されている。
【先行技術文献】
【特許文献】
【０００７】
【特許文献１】米国特許第８３２１６７５号明細書
【特許文献２】国際公開第２０１５／０１５７０２号
【特許文献３】特開２０１６−７５７６５号公報
【特許文献４】特表２００７−５３４２３０号公報
【非特許文献】
【０００８】
【非特許文献１】Efficient Instantiations of Tweakable Blockciphers and Refinements to Modes OCB and PMAC. Phillip Rogaway. ASIACRYPT 2004.http://web.cs.ucdavis.edu/~rogaway/papers/offsets.pdf
【非特許文献２】How to Securely Release Unverified Plaintext in Authenticated Encryption. Elena Andreeva, Andrey Bogdanov, Atul Luykx, Bart Mennink, Nicky Mouha, and Kan Yasuda. Asiacrypt 2014. https://eprint.iacr.org/2014/144.pdf
【非特許文献３】NIST Special Publication 800-38B. Recommendation for Block Cipher Modes of Operation: The CMAC Mode for Authentication http://csrc.nist.gov/publications/nistpubs/800-38B/SP_800-38B.pdf
【発明の概要】
【発明が解決しようとする課題】
【０００９】
認証暗号においてよく考えられる問題として、暗号化・復号における誤用（misuse）がある。これは、本来暗号化・復号を安全に行うために必要なルールを遵守しないことによる攻撃を指しており、現実の問題として考えられている。【００１０】
上記認証暗号の誤用の一つとして、復号における未検証平文の漏洩がある。本来、認証暗号の復号では、改ざんが見つかった場合には、復号中の平文、すなわち未検証の平文、は出力する必要はない。しかしながら、例えば、復号側のメモリの制約や暗号化プログラムの実装ミスなどにより、未検証の平文が出力される場合がある。このような場合、攻撃者が改ざんを行うことにより、その検証が受理されたか否かという２値情報以上の情報が攻撃者へ渡されることになり、認証暗号方式によっては攻撃を許すことになる。このような問題は、decryption-misuseとも呼ばれている。【００１１】
未検証平文の漏洩が有る場合における改ざんの困難性を評価する方法としては、非特許文献２に記載されているINT-RUP(Integrity-under-release-of-unverified-plaintext）安全性がある。非特許文献２では、特許文献１に記載されているようなOCBは、INT-RUP安全でないことが示されている。具体的には、非特許文献２では、n-bitブロック暗号（例えば、AESならばn =128）を用いたOCBについて、nブロック暗号文を未検証復号オラクルへ数回クエリすることで偽造が可能となることが示されている。なお、未検証復号オラクルは、復号装置（デコーダ）の役割を分割したものの一つに相当する。【００１２】
また、特許文献２に記載されているOTRの方式も、OCBと同様の構造を有している。そのため、OTRの方式もOCBと同様にINT-RUP安全ではない。【００１３】
以上のように、効率の良い認証暗号方式であるOCBやOTRについては、INT-RUP安全性を有さない。この事実は、未検証平文の漏洩があるシナリオ、例えば、復号側のメモリが非常に少ない場合など、において、OCBやOTRの利用を妨げる要因となっていた。【００１４】
なお、上述したように、特許文献３に記載されている技術はOTRの変形例であり、特許文献４では、上記のような問題は何ら考慮されていない。そのため、特許文献３、４に記載の技術を用いても、上記のような問題は解決できなかった。【００１５】
そこで、本発明は、未検証平文が漏洩するおそれがある場合、効率の良い認証暗号方式は安全でないおそれがある、という問題を解決する暗号化装置、暗号化方法、プログラム、復号装置、復号方法を提供することにある。
【課題を解決するための手段】
【００１６】
かかる目的を達成するため本発明の一形態である暗号化装置は、
平文を分割したブロックを、補助変数を用いて暗号化する暗号化部と、
前記平文を分割したブロックに基づいて、複数の部分チェックサムを生成する部分チェックサム生成部と、
前記部分チェックサム生成部が生成した前記部分チェックサムに基づいて、メタチェックサムを生成するメタチェックサム生成部と、
前記メタチェックサム生成部が生成した前記メタチェックサムに基づいて、改ざんの検出に用いるタグを生成するタグ生成部と、
を有し、
前記暗号化部が暗号化した暗号文と、前記タグ生成部が生成した前記タグと、を出力する
という構成をとる。【００１７】
また、本発明の他の形態である暗号化方法は、
暗号化装置が、
平文を分割したブロックを、補助変数を用いて暗号化し、
前記平文を分割したブロックに基づいて、複数の部分チェックサムを生成し、
生成した前記部分チェックサムに基づいて、メタチェックサムを生成し、
生成した前記メタチェックサムに基づいて、改ざんの検出に用いるタグを生成し、
前記平文を暗号化した暗号文と、前記タグと、を出力する
という構成をとる。【００１８】
また、本発明の他の形態であるプログラムは、
暗号化装置に、
平文を分割したブロックを、補助変数を用いて暗号化する暗号化部と、
前記平文を分割したブロックに基づいて、複数の部分チェックサムを生成する部分チェックサム生成部と、
前記部分チェックサム生成部が生成した前記部分チェックサムに基づいて、メタチェックサムを生成するメタチェックサム生成部と、
前記メタチェックサム生成部が生成した前記メタチェックサムに基づいて、改ざんの検出に用いるタグを生成するタグ生成部と、
を実現させ、
前記暗号化部が暗号化した暗号文と、前記タグ生成部が生成した前記タグと、を出力する
プログラムである。【００１９】
また、本発明の他の形態である復号装置は、
暗号文を分割したブロックを、補助変数を用いてブロックごとに復号して平文を生成する復号部と、
前記復号部が復号した前記平文のブロックに基づいて、複数の部分チェックサムを生成する部分チェックサム生成部と、
前記部分チェックサム生成部が生成した前記部分チェックサムに基づいて、メタチェックサムを生成するメタチェックサム生成部と、
前記メタチェックサム生成部が生成した前記メタチェックサムに基づいて、改ざんの検出に用いる検証用タグを生成するタグ生成部と、
前記暗号文とともに受信したタグと、前記タグ生成部が生成した前記検証用タグと、の比較検証を行うタグ検証部と、
を有し、
前記復号部が復号した前記平文と、前記タグ検証部による比較検証の結果と、を出力する
という構成をとる。【００２０】
また、本発明の他の形態である復号方法は、
復号装置が、
暗号文を分割したブロックを、補助変数を用いてブロックごとに復号して平文を生成し、
復号した前記平文のブロックに基づいて、複数の部分チェックサムを生成し、
生成した前記部分チェックサムに基づいて、メタチェックサムを生成し、
生成した前記メタチェックサムに基づいて、改ざんの検出に用いる検証用タグを生成し、
前記暗号文とともに受信したタグと、生成した前記検証用タグと、の比較検証を行い、
復号した前記平文と、比較検証の結果と、を出力する
という構成をとる。【００２１】
また、本発明の他の形態であるプログラムは、
復号装置に、
暗号文を分割したブロックを、補助変数を用いてブロックごとに復号して平文を生成する復号部と、
前記復号部が復号した平文のブロックに基づいて、複数の部分チェックサムを生成する部分チェックサム生成部と、
前記部分チェックサム生成部が生成した前記部分チェックサムに基づいて、メタチェックサムを生成するメタチェックサム生成部と、
前記メタチェックサム生成部が生成した前記メタチェックサムに基づいて、改ざんの検出に用いる検証用タグを生成するタグ生成部と、
前記暗号文とともに受信したタグと、前記タグ生成部が生成した前記検証用タグと、の比較検証を行うタグ検証部と、
を実現させ、
前記復号部が復号した前記平文と、前記タグ検証部による比較検証の結果と、を出力する
プログラムである。
【発明の効果】
【００２２】
本発明は、以上のように構成されることにより、未検証平文が漏洩するおそれがある場合、効率の良い認証暗号方式は安全でないおそれがある、という問題を解決する暗号化装置、暗号化方法、プログラム、復号装置、復号方法を提供することが可能となる。
【図面の簡単な説明】
【００２３】
【図１】本発明の第１の実施形態における認証暗号システムの全体の構成の一例を示すブロック図である。
【図２】暗号化装置が暗号化ルーチンをＸＥＸモードにより実現した場合の処理の一例を示す図である。
【図３】暗号化装置が暗号化ルーチンを２ラウンドフェイステル置換により実現した場合の処理の一例を示す図である。
【図４】２ラウンドフェイステル置換の内部構造の一例を示した図である。
【図５】２ラウンドフェイステル置換の内部構造の一例を示した図である。
【図６】復号装置が復号ルーチンをＸＥＸモードにより実現した場合の処理の一例を示す図である。
【図７】復号装置が復号ルーチンを２ラウンドフェイステル置換により実現した場合の処理の一例を示す図である。
【図８】２ラウンドフェイステル置換の内部構造の一例を示した図である。
【図９】暗号化装置が行う処理の一例を示す図である。
【図１０】暗号化装置の処理の流れの一例を示すフローチャートである。
【図１１】復号装置が行う処理の一例を示す図である。
【図１２】復号装置の処理の流れの一例を示すフローチャートである。
【図１３】本発明の第２の実施形態における暗号化装置の構成の一例を示すブロック図である。
【図１４】本発明の第２の実施形態における復号装置の構成の一例を示すブロック図である。
【発明を実施するための形態】
【００２４】
［第１の実施形態］
本発明の第１の実施形態を図１から図１２までを参照して説明する。図１は、認証暗号システムの全体の構成の一例を示すブロック図である。図２は、暗号化装置１０が暗号化ルーチンをＸＥＸモードにより実現した場合の処理の一例を示す図である。図３は、暗号化装置１０が暗号化ルーチンを２ラウンドフェイステル置換により実現した場合の処理の一例を示す図である。図４、図５は、２ラウンドフェイステル置換の内部構造の一例を示した図である。図６は、復号装置２０が復号ルーチンをＸＥＸモードにより実現した場合の処理の一例を示す図である。図７は、復号装置２０が復号ルーチンを２ラウンドフェイステル置換により実現した場合の処理の一例を示す図である。図８は、２ラウンドフェイステル置換の内部構造の一例を示した図である。図９は、暗号化装置１０が行う処理の一例を示す図である。図１０は、暗号化装置１０の処理の流れの一例を示すフローチャートである。図１１は、復号装置２０が行う処理の一例を示す図である。図１２は、復号装置２０の処理の流れの一例を示すフローチャートである。
【００２５】
第１の実施形態では、共通秘密鍵を用いた暗号化方式であって、平文を所定のサイズのブロックに分割して、１つまたは２つのブロックごとに暗号化を行う暗号化装置１０を有する暗号化システムについて説明する。本実施形態における暗号化装置１０は、暗号化する際に、Tweakと呼ばれる補助変数を用いる。また、後述するように、暗号化装置１０は、所定のパラメータｓに応じた数ごとにブロックをまとめて、ブロックのまとまりごとに複数の部分チェックサムを算出する。そして、暗号化装置１０は、部分チェックサムに基づいてメタチェックサムを算出するとともに、メタチェックサムを暗号化することでタグを生成する。このように部分チェックサムに基づくメタチェックサムを算出してタグを生成することで、INT-RUP安全性を確保することが可能となる。
【００２６】
認証暗号システムは、無線もしくは有線のデータ通信における暗号化とメッセージ認証、無線センサーデバイスと情報収集サーバとの通信の保護、などの用途に活用可能なシステムである（上記例示した以外に活用しても構わない）。図１は、認証暗号システムの構成の一例を示している。図１を参照すると、認証暗号システムは、暗号化装置１０と、復号装置２０と、を有している。なお、暗号化装置１０と復号装置２０は、互いに通信可能に接続された複数の情報処理装置により構成されても構わないし、一つの情報処理装置により構成されても構わない。
【００２７】
暗号化装置１０は、復号装置２０と共有する共通秘密鍵を用いて、平文Mに対する暗号化を行うとともに、改ざんの検出に用いる認証タグであるタグTを生成する。図１を参照すると、暗号化装置１０は、例えば、平文入力部１００と、初期ベクトル生成部１０１と、Tweak付き暗号化部１０２（暗号化部）と、部分チェックサム生成部１０３と、メタチェックサム生成部１０４と、メタチェックサム暗号化部１０５（タグ生成部）と、暗号文出力部１０６と、を有している。
【００２８】
例えば、暗号化装置１０は、図示しないCPU（Central Processing Unit）などの演算装置と記憶装置とを有している。暗号化装置１０は、例えば、図示しない記憶装置が有するプログラムを演算装置が実行することで、上記各処理部を実現する。なお、各処理部が行う暗号化に伴う処理は、暗号化装置１０が有する符号化器により実現される、ということも出来る。
【００２９】
平文入力部１００は、暗号化の対象となる平文Mを入力する。平文入力部１００は、例えば、キーボードなどの文字入力装置により実現される。平文入力部１００は、例えば、ネットワークを介して接続された外部装置などから平文Mの入力を受け付けても構わない。
【００３０】
初期ベクトル生成部１０１は、過去に生成した値とは異なる初期ベクトルNを生成する。初期ベクトル生成部１０１は、例えば、最初に任意の固定値を出力する。また、初期ベクトル生成部１０１は、直前に生成した初期ベクトルの値を記憶している。そして、初期ベクトル生成部１０１は、２回目以降に初期ベクトルNを生成する際、記憶する直前の値に１を加えた値を出力する。このように、初期ベクトル生成部１０１は、一つ前に既に出力した値に１を加えた値を出力することで、過去に生成した値とは異なる初期ベクトルNを生成する。なお、初期ベクトル生成部１０１は、過去に生成した値とは異なる値を生成可能ならば、上記例示した以外の方法で初期ベクトルを生成しても構わない。
【００３１】
Tweak付き暗号化部１０２は、平文Mをnビットブロックごとに分割することで生成したm個のブロックM[1],M[2],...,M[m]を得る。そして、Tweak付き暗号化部１０２は、それぞれのM[i](i=1,2,...,m)を初期ベクトルNおよびブロックのインデックスiをTweakと呼ばれる補助変数として、ブロックごとに共通鍵暗号で暗号化する。これにより、Tweak付き暗号化部１０２は、平文Mを分割したブロックと同じ長さの暗号文C = (C[1],C[2],...,C[m])を得る。なお、Tweakには、処理の種類を表すインデックスj（例えば、J=1）を含めてもよい。
【００３２】
例えば、Tweak付き暗号化部１０２は、非特許文献１が示すXEXモードによる暗号化を行うことが出来る。図２は、暗号化装置１０のTweak付き暗号化部１０２がXEXモードによる暗号化を行う際の、暗号化装置１０全体の処理の一例を示している。図２を参照すると、Tweak付き暗号化部１０２は、XEXモードによる暗号化を行う場合、Tweakableブロック暗号と呼ばれるブロック暗号の拡張をもちいて、
C[i] = TE(N,i,j)(M[i])  ただし TE(N,i,j) = g(N,i,j)+E(g(N,i,j)+M[i]) （式XEX）
と暗号化する。
【００３３】
ここで、+はビット毎の排他的論理和を表し、E(*)はブロック暗号E（秘密鍵も含まれているものとする）による暗号化関数を表す。また、g(*,*,*)は、nビットのマスク生成関数である。典型的には、2と3を有限体 GF(2^n)の生成元（多項式表現におけるx）および生成元+単位元（多項式表現におけるx+1）とみなし、X.Yを有限体GF(2^n)上の元XとYの乗算、2^iと3^jをそれぞれ2のi乗算,3のj乗算、としたうえで、g(N,i,j)= E(N).2^i.3^j とすることで作られる。
【００３４】
このように、Tweak付き暗号化部１０２は、TE関数と平文Mを分割したブロックとに基づいて、それぞれのブロックごとに暗号化を行う。例えば、図２で示す場合、Tweak付き暗号化部１０２は、平文のブロックM[1]とTE関数TE(N,1,1)とに基づく暗号化を行うことで、暗号文のブロックC［1］を得ている。なお、図２では、平文Mからm=6個のブロックを分割している場合について例示している。しかしながら、Tweak付き暗号化部１０２が分割するブロックの数は６に限定されない。つまり、mは任意の数で構わない。
【００３５】
また、Tweak付き暗号化部１０２は、図３から図５で示すように、平文を２つのnビットブロックごとに分割したうえで、特許文献２による２ラウンドフェイステル置換による暗号化を行うよう構成することも出来る。２ラウンドフェイステル置換による暗号化は、図４で示すように、連続する平文２ブロックM[i],M[i+1]（ただし、iは奇数）に対して、
C[i] = TE(N,(i+1)/2,j)(M[i])+M[i+1]
C[i+1] = TE(N,(i+1)/2,j')(C[i])+M[i]  （式 2RFesitel）
とすることで暗号化を行うものである。
【００３６】
なお、j,j'は異なる値であればよい。また、(i+1)/2の代わりに、任意の奇数iに関する関数f(i)で、f(i)とf(i+2)が異なるものを用いてもよい。
【００３７】
また、２ラウンドフェイステル変換による暗号化を行う際は、上記TE関数として、図５で示すような、XEXモードにおける外側のマスク加算を省略したXEモードTE(N,i,j) = E(g(N,i,j)+M[i]) （式XE）を用いることが出来る。なお、２ラウンドフェイステル変換による暗号化を行う際、上記TE関数として、上述したXEXモードを用いても構わない。
【００３８】
以上のように、Tweak付き暗号化部１０２は、図２で示すXEXモードによる暗号化、又は、図３で示す２ラウンドフェイステル置換による暗号化を行うよう構成することが出来る。XEXモードによる暗号化を行う場合、Tweak付き暗号化部１０２は、平文Mを分割したブロックごとに暗号化を行うことになる（図２参照）。一方、２ラウンドフェイステル置換による暗号化を行う場合、Tweak付き暗号化部１０２は、平文Mを分割したブロックのペアごとに暗号化を行うことになる（図３、図４参照）。
【００３９】
部分チェックサム生成部１０３は、平文M=M[1],M[2],...,M[m]の各ブロックを所定の正整数sごとにまとめる。そして、部分チェックサム生成部１０３は、１つにまとめられた各ブロックに基づいて、複数の部分チェックサムを求める。
【００４０】
例えば、部分チェックサム生成部１０３は、排他的論理和を用いて部分チェックサムを求めるよう構成することが出来る。排他的論理和を用いて部分チェックサムを求める場合、部分チェックサム生成部１０３は、個々の部分チェックサムとして
S[1] = M[1] + M[2] + ... + M[s],S[2] = M[s+1] + M[s+2] ... + M[2s], ...，を求める。そして、部分チェックサム生成部１０３は、それらの系列S = S[1],S[2],...,S[m/s] を出力する。
【００４１】
例えば、図２で示す例では、s=2である場合における、部分チェックサム生成部１０３の処理の一例を示している。図２で示す場合、部分チェックサム生成部１０３は、s=2個ごとにブロックをまとめており、例えば、１つにまとめられたM[1]とM[2]の排他的論理和を求めることで部分チェックサムS[1]を求めている。また、例えば、図３で示す例では、s=4である場合における、部分チェックサム生成部１０３の処理の一例を示している。図３で示す場合、部分チェックサム生成部１０３は、s=4個ごとにブロックをまとめており、例えば、M[1]とM[2]とM[3]とM[4]の排他的論理和を求めることで部分チェックサムS[1]を求めている。
【００４２】
なお、平文のブロック数mがsの倍数でない場合、部分チェックサム生成部１０３は、平文へ適当なパディングを行ったのち、部分チェックサムを求める。このような処理により、平文のブロック数mがsの倍数でない場合でも問題なく部分チェックサムを求めることが出来る。
【００４３】
なお、部分チェックサム生成部１０３は、排他的論理和に限らず、例えば算術加算など任意の群ないし環演算を用いて部分チェックサムを求めるよう構成しても構わない。
【００４４】
また、Tweak付き暗号化部１０２が２ラウンドフェイステル置換による暗号化を行う場合、部分チェックサム生成部１０３は、sを偶数とした上で、M[1]からM[s]のうちの偶数ブロックのみを用いても構わない。すなわち、S[i] = M[2i] + M[2i+2] + ... + C[2i+s],とすることも可能である。
【００４５】
メタチェックサム生成部１０４は、部分チェックサム生成部１０３が生成した部分チェックサム系列Sを、鍵付きのハッシュ関数、又は、擬似ランダム関数を用いて1ブロックにハッシュして、メタチェックサムMetaSumを出力する。
【００４６】
例えば、メタチェックサム生成部１０４は、非特許文献１によるPMAC（Parallelizable Message Authentication Code）と同様の鍵付きハッシュ手法を用いることが可能である。具体的には、メタチェックサム生成部１０４は、Tweak付き暗号化部１０２で用いたTE関数を用いて、V[i] = TE(N,i,j')(S[i])を各i= 1,..., m/sについて求める。そして、メタチェックサム生成部１０４は、各iについて求めた結果の排他的論理和を求めることでメタチェックサムMetaSumを求める。換言すると、メタチェックサム生成部１０４は、V[1] + V[2] + ... + V[m/s]を求めることでメタチェックサムMetaSumを求める。
【００４７】
なお、j'は、Tweak付き暗号化部１０２で用いたj（例えば、１）と異なる任意値であり、例えばj'=2である。また、メタチェックサム生成部１０４は、TEの外側のマスク加算を省略したXEモードTE(N,i,j) = E(g(N,i,j)+M[i]) （式XE）を用いて各iについてV[i]を求めても構わない。また、メタチェックサム生成部１０４は、非特許文献３などの汎用的な鍵付きハッシュ関数、あるいは、擬似ランダム関数も用いるよう構成しても構わない。
【００４８】
メタチェックサム暗号化部１０５は、初期ベクトル生成部１０１が生成した初期ベクトルNをTweakとして用いて、メタチェックサム生成部１０４が求めたメタチェックサムMetaSumを暗号化する。これにより、メタチェックサム暗号化部１０５は、タグTを生成する。
【００４９】
例えば、メタチェックサム暗号化部１０５は、Tweak付き暗号化部１０２で用いたTE関数を用いて、T = TE(N,i,j'')（MetaSum）とすることで暗号化を行う。なお、J''は、Tweak付き暗号化部１０２で用いたj（例えば、１）やメタチェックサム生成部１０４で用いたj'（例えば、２）と異なる任意値であり、例えばj''=3である。
【００５０】
暗号文出力部１０６は、初期ベクトル生成部１０１が生成した初期ベクトルNと、Tweak付き暗号化部１０２が暗号化した暗号文Cと、メタチェックサム暗号化部１０５が生成したタグTとを出力する。暗号文出力部１０６は、例えば、ディスプレイなどの文字表示装置により実現される。暗号文出力部１０６は、例えば、ネットワークを介して接続された外部装置などに対して、初期ベクトルN、暗号文C、タグTを出力するよう構成しても構わない。
【００５１】
以上が、暗号化装置１０の構成の一例である。続いて、復号装置２０の構成の一例について説明する。
【００５２】
復号装置２０は、暗号化装置１０と共有する共通秘密鍵を用いて、暗号文を復号するとともに、改ざんの有無を検出する。図１を参照すると、復号装置２０は、暗号文入力部２００と、Tweak付き復号部２０１と、部分チェックサム生成部２０２と、メタチェックサム生成部２０３と、メタチェックサム暗号化部２０４（タグ生成部）と、タグ検証部２０５と、復号結果出力部２０６と、を有している。
【００５３】
例えば、復号装置２０は、図示しないCPU（Central Processing Unit）などの演算装置と記憶装置とを有している。復号装置２０は、例えば、図示しない記憶装置が有するプログラムを演算装置が実行することで、上記各処理部を実現する。なお、各処理部が行う復号・検証に伴う処理は、復号装置２０が有する復号器により実現される、ということも出来る。
【００５４】
暗号文入力部２００は、復号の対象となる暗号文C、初期ベクトルN、タグTを入力する。暗号文入力部２００は、例えば、キーボードなどの文字入力装置により実現される。暗号文入力部２００は、例えば、ネットワークを介して接続された外部装置などから、暗号文C、初期ベクトルN、タグTの入力を受け付けても構わない。
【００５５】
Tweak付き復号部２０１は、Tweak付き暗号化部１０２に対応した復号を行う。Tweak付き復号部２０１は、暗号文Cをnビットブロックごとに分割することで生成したm個のブロックC[1],C[2],...,C[m]を得る。そして、Tweak付き復号部２０１は、それぞれのC[i]（i=1,2,...,m）を初期ベクトルNおよびブロックのインデックスiをTweakと呼ばれる補助変数として、ブロックごとに共通鍵暗号で復号する。これにより、Tweak付き復号部２０１は、暗号文Cを分割したブロックと同じ長さの平文M=(M[1],M[2],...,M[m])を得る。なお、Tweakには、処理の種類を表すインデックスj（例えば、J=1）を含めてもよい。
【００５６】
例えば、Tweak付き復号部２０１は、Tweak付き暗号化部１０２と同様に、XEXモードの復号を行う。図６は、復号装置２０のTweak付き復号部２０１がXEXモードによる復号を行う際の全体の処理の一例を示している。図６を参照すると、Tweak付き復号部２０１は、XEXモードによる復号を行う場合、
M[i] = TD(N,i,j)(C[i]),ただし TD(N,i,j) = g(N,i,j)+D(g(N,i,j)+C[i])
を行うことで、暗号文Cを復号する。
【００５７】
ここで、D(*)はブロック暗号の復号関数であり、（式XEX）におけるEの逆関数、すなわちD(E(M))=Mを満たすものである。
【００５８】
このように、Tweak付き復号部２０１は、TD関数と暗号文Cとに基づいて、それぞれのブロックごとに復号を行う。例えば、図６で示す場合、Tweak付き復号部２０１は、暗号文のブロックC[1]とTD関数TD(N,1,1)とに基づく復号を行うことで、平文のブロックM［1］を得ている。
【００５９】
また、Tweak付き復号部２０１は、図７、図８で示すように、暗号文Cを2つのnビットブロックごとに分割したうえで、特許文献２による２ラウンドフェイステル置換による復号を行うよう構成することも出来る。２ラウンドフェイステル置換による復号は、図８で示すように、連続する暗号文２ブロックC[i],C[i+1]（ただし、iは奇数）に対して、
M[i] = TE(N,(i+1)/2,j')(C[i])+C[i+1]
M[i+1] = TE(N,(i+1)/2,j)(M[i])+C[i]  
とすることで復号を行うものである。換言すると、Tweak付き復号部２０１は、上述した（式 2RFesitel）の逆関数を行うことになる。なお、XEXを用いる場合とは異なり、２ラウンドフェイステル置換による復号を行う場合、復号にはTDは必要としない。
【００６０】
なお、２ラウンドフェイステル置換による復号を行う際は、Tweak付き暗号化部１０２と同様に、上記TE関数として、XEモード（式XE）を用いても構わない。
【００６１】
以上のように、Tweak付き復号部２０１は、Tweak付き暗号化部１０２と対応する処理を行うことで、暗号文Cの復号を行う。
【００６２】
部分チェックサム生成部２０２、メタチェックサム生成部２０３、メタチェックサム暗号化部２０４の構成は、暗号化装置１０が有する部分チェックサム生成部１０３、メタチェックサム生成部１０４、メタチェックサム暗号化部１０５の構成と同様である。そのため、詳細な説明は省略する。ただし、メタチェックサム暗号化部２０４が出力するタグは暗号文入力部２００の出力したタグTとは異なり、ローカルに計算されたものである。以下、メタチェックサム暗号化部２０４が出力するタグを検証用タグＴ’と表記する。
【００６３】
タグ検証部２０５は、メタチェックサム暗号化部２０４の出力した、ローカルに計算された検証用タグT'と、暗号文入力部２００の出力したタグTとの比較検証を行う。そして、タグ検証部２０５は、検証結果に基づいて、検証用タグＴ’とタグＴが一致したことを示す「一致」、又は、検証用タグＴ’とタグＴが一致しなかったことを示す「不一致」、のいずれかの２値検証結果を出力する。
【００６４】
復号結果出力部２０６は、タグ検証部２０５の出力する２値検証結果と、Tweak付き復号部２０１の出力する平文Mとを出力する。復号結果出力部２０６は、例えば、ディスプレイなどの文字表示装置により実現される。復号結果出力部２０６は、例えば、ネットワークを介して接続された外部装置などに対して、平文Mを出力するよう構成しても構わない。
【００６５】
以上が、復号装置２０の構成の一例である。
【００６６】
続いて、図９から図１２までを参照して、暗号化装置１０が暗号化処理を行う際の流れの一例と、復号装置２０が復号処理を行う際の流れの一例について説明する。まず、図９、図１０を参照して、暗号化装置１０が暗号化処理を行う際の流れの一例について説明する。
【００６７】
図９、図１０を参照すると、平文入力部１００は、暗号化の対象となる平文M = (M[1],M[2],...,M[m])を入力する。図９で示すように、平文入力部１００に入力された平文Mは、複数のブロックに分割して、Tweak付き暗号化部１０２と部分チェックサム生成部１０３に入力される。また、初期ベクトル生成部１０１が初期ベクトルNを生成する（ステップＳ１０１）。
【００６８】
Tweak付き暗号化部１０２は、初期ベクトルNをTweakとして用いて、平文Mをブロックごとに暗号化して、平文Mのブロックと同じ長さの暗号化された暗号文Cを得る（ステップＳ１０２）。
【００６９】
部分チェックサム生成部１０３は、平文Mを所定のsブロックごとに分割する。そして、部分チェックサム生成部１０３は、それぞれ独立に部分チェックサム S[1],S[2],...,S[m/s]を求める（ステップＳ１０３）。続いて、メタチェックサム生成部１０４は、部分チェックサムの系列S = (S[1],S[2],...,S[m/s])を鍵つきハッシュして、1ブロックのメタチェックサムMetaSumとする（ステップＳ１０４）。そして、メタチェックサム暗号化部１０５は、メタチェックサムMetaSumを暗号化することで、タグTを得る（ステップＳ１０５）。
【００７０】
暗号文出力部１０６は、上記各処理により得られた初期ベクトルN、暗号文C、タグTを出力する（ステップＳ１０６）。 
【００７１】
以上が、暗号化装置１０が暗号化処理を行う際の流れの一例である。続いて、図１１、図１２を参照して、復号装置２０が復号処理を行う際の流れの一例について説明する。
【００７２】
図１１、図１２を参照すると、暗号文入力部２００が、対象となる暗号文C=(C[1],C[2],...,C[m])、初期ベクトルN、タグTを入力する（ステップＳ２０１）。図１１で示すように、上記のうち暗号文Cは、Tweak付き復号部２０１で用いられる。また、初期ベクトルＮは、Tweak付き復号部２０１、メタチェックサム生成部２０３、メタチェックサム暗号化部２０４で用いられる。タグTは、タグ検証部２０５で用いられる。
【００７３】
Tweak付き復号部２０１は、NをTweakとして用いて、暗号文Cをブロックごと復号して、暗号文Cのブロックと同じ長さの復号された平文Mを得る（ステップＳ２０２）。
【００７４】
部分チェックサム生成部２０２は、平文Mを所定のsブロックごとに分割する。そして、部分チェックサム生成部２０２は、それぞれ独立に部分チェックサム S[1],S[2],...,S[m/s] を求める（ステップＳ２０３）。続いて、メタチェックサム生成部２０３は、部分チェックサムの系列S = (S[1],S[2],...,S[m/s])を鍵つきハッシュして、1ブロックのメタチェックサムMetaSumとする（ステップＳ２０４）。そして、メタチェックサム暗号化部２０４は、メタチェックサムMetaSumを暗号化することで、ローカルに計算された検証用タグT’を得る（ステップＳ２０５）。
【００７５】
タグ検証部２０５は、暗号文入力部２００が出力したタグTと、メタチェックサム暗号化部２０４が出力した検証用タグT'とを比較する。そして、タグ検証部２０５は、一致または不一致を表す2値の検証結果を出力する（ステップＳ２０６）。
【００７６】
復号結果出力部２０６は、得られた2値の検証結果と、平文Mを出力する（ステップＳ２０７）。 
【００７７】
以上が、復号装置２０が復号処理を行う際の流れの一例である。
【００７８】
以上説明したように、本実施形態における暗号化装置１０は、部分チェックサム生成部１０３と、メタチェックサム生成部１０４と、メタチェックサム暗号化部１０５と、を有している。このような構成により、メタチェックサム暗号化部１０５は、部分チェックサム生成部１０３が算出した部分チェックサムに基づいてメタチェックサム生成部１０４が算出したメタチェックサムを暗号化することで、タグTを生成することが出来る。つまり、暗号化装置１０は、部分チェックサムを全て鍵付きハッシュしたメタチェックサムをタグの導出に用いている。これにより、INT-RUP安全性への攻撃は、sブロックの間で定義される線形制約（すなわち部分チェックサム）が全て満たされない限り成功しないことになる。その結果として、sを十分小さくおさえることで、高いINT-RUP安全性を保証することが可能となる。なお、sを１とした場合には、実質的に平文に対してメッセージ認証コードを適用していることとなるため、構成される認証暗号は汎用結合と同等のコストとなる。そのため、コストの観点からすると、ｓは２以上であることが望ましい。一方、s=２とした場合には汎用結合よりもおおよそ２５％の効率化が可能となる。パラメータsを大きくすることで効率をあげることができるが、定量的なINT-RUP安全性は下がるというトレードオフが存在する。そのため、アプリケーションに応じて適切なsを設定することが望ましい。
【００７９】
なお、非特許文献２に示された、OCBに対するINT-RUP安全性への攻撃を概説すると、下記のようになる。
【００８０】
非特許文献２に記載の攻撃においては、攻撃者は任意の初期ベクトルNとmブロックの平文M=(M[1],M[2],...,M[m])を暗号化オラクルへクエリする。そして、攻撃者は、暗号化オラクルから、暗号文C=(C[1],C[2],...,C[m])とタグTを得る。次に、攻撃者は、２つの暗号文とタグの対を用いて、未検証復号オラクルへのクエリを行う。つまり、(N,C_1=(C_1[1],C_1[2],...,C_1[m]),T_1)と(N,C_2=(C_2[1],C_2[2],...,C_2[m]),T_2)を用いて、未検証復号オラクルへのクエリを行う。ここでC_1の各ブロックとC_2の各ブロックとは暗号文Cの対応するブロックとは異なるものを選び、T_1,T_2は任意である。未検証復号オラクルからの戻り値、すなわち未検証の平文ブロック、はそれぞれ(M_1[1],M_1[2],...,M_1[m])と(M_2[1],M_2[2],...,M_2[m])であったとする。このとき、最初の暗号化オラクルへのクエリにより TE(N,6,2)(M[1]+M[2]+...+M[m]) = T は既に分かっている。またC_1のブロックとC_2のブロックを適当に組み合わせて得られる別の暗号文C'（例えば交互にC_1とC_2のブロックを使うと C'=(C_1[1],C_2[2],...)が得られる）に対する未検証平文の値、およびそのチェックサムも分かっている。
【００８１】
このような条件のもと、非特許文献２は、mがブロックサイズn程度であれば、ほぼ確率1/2で未検証平文のチェックサムが既知のチェックサム M[1]+M[2]+...+M[m] に一致するような組合せが存在し、存在すれば常に効率よく見つけられることを示した。このようなC'が見つかれば (N,C',T)が常に偽造として成功することになる。
【００８２】
上記の攻撃は、同じ初期ベクトルを復号側で繰り返して使い、未検証平文が特定の線形制約、すなわち、最初に暗号化クエリで用いた平文とチェックサムが同じになるという制約を満たすものをみつけることで機能している。一方、本発明では、上述したように、部分チェックサムを全て鍵付きハッシュしたメタチェックサムをタグの導出に用いている。そのために、上記のような攻撃は、sブロックの間で定義される線形制約（すなわち部分チェックサム）が全て満たされない限り成功しないため、結果としてsを十分小さくおさえることで高いINT-RUP安全性を保証できることになる。
【００８３】
［第２の実施形態］
次に、図１３、図１４を参照して、本発明の第２の実施形態について説明する。第２の実施形態では、暗号化装置３と復号装置４の構成の概要について説明する。
【００８４】
まず、図１３を参照して、暗号化装置３の構成について説明する。図１３は、暗号化装置３の構成の一例を示している。図１３を参照すると、暗号化装置３は、暗号化部３１と、部分チェックサム生成部３２と、メタチェックサム生成部３３と、タグ生成部３４と、を有している。
【００８５】
例えば、暗号化装置３は、図示しないCPUなどの演算装置と記憶装置とを有している。暗号化装置３は、例えば、図示しない記憶装置が有するプログラムを演算装置が実行することで、上記各処理部を実現する。なお、各処理部が行う暗号化に伴う処理は、暗号化装置３が有する符号化器により実現される、ということも出来る。
【００８６】
暗号化部３１は、平文を分割したブロックを、補助変数を用いて暗号化する。
【００８７】
部分チェックサム生成部３２は、平文を分割したブロックに基づいて、複数の部分チェックサムを生成する。また、メタチェックサム生成部３３は、部分チェックサム生成部３２が生成した部分チェックサムに基づいて、メタチェックサムを生成する。そして、タグ生成部３４は、メタチェックサム生成部３３が生成したメタチェックサムに基づいて、改ざんの検出に用いるタグを生成する。
【００８８】
暗号化装置３は、上記のように、平文を暗号化して暗号文を生成するとともに、タグを生成する。そして、暗号化装置３は、暗号化部３１が暗号化した暗号文と、タグ生成部３４が生成したタグと、を出力する。
【００８９】
このように、暗号化装置３は、部分チェックサム生成部３２と、メタチェックサム生成部３３と、タグ生成部３４と、を有している。このような構成により、タグ生成部３４は、部分チェックサム生成部３２が算出した複数の部分チェックサムに基づいてメタチェックサム生成部３３が算出したメタチェックサムを暗号化することで、タグTを生成することが出来る。これにより、高いINT-RUP安全性を保証することが可能となる。
【００９０】
また、上述した暗号化装置３は、当該暗号化装置３に所定のプログラムが組み込まれることで実現できる。具体的に、本発明の他の形態であるプログラムは、暗号化装置３に、平文を分割したブロックを、補助変数を用いて暗号化する暗号化部３１と、平文を分割したブロックに基づいて、複数の部分チェックサムを生成する部分チェックサム生成部３２と、部分チェックサム生成部３２が生成した部分チェックサムに基づいて、メタチェックサムを生成するメタチェックサム生成部３３と、メタチェックサム生成部３３が生成したメタチェックサムに基づいて、改ざんの検出に用いるタグを生成するタグ生成部３４と、を実現させ、暗号化部３１が暗号化した暗号文と、タグ生成部３４が生成したタグと、を出力するプログラムである。
【００９１】
また、上述した暗号化装置３により実行される暗号化方法は、暗号化装置３が、平文を分割したブロックを、補助変数を用いて暗号化し、平文を分割したブロックに基づいて、複数の部分チェックサムを生成し、生成した部分チェックサムに基づいて、メタチェックサムを生成し、生成したメタチェックサムに基づいて、改ざんの検出に用いるタグを生成し、暗号文と、タグと、を出力する、という方法である。
【００９２】
上述した構成を有する、プログラム、又は、暗号化方法、の発明であっても、上記暗号化装置３と同様の作用を有するために、上述した本発明の目的を達成することが出来る。
【００９３】
次に、図１４を参照して、復号装置４の構成について説明する。図１４は、復号装置４の構成の一例を示している。図１４を参照すると、復号装置４は、復号部４１と、部分チェックサム生成部４２と、メタチェックサム生成部４３と、タグ生成部４４と、タグ検証部４５と、を有している。
【００９４】
例えば、復号装置４は、図示しないCPUなどの演算装置と記憶装置とを有している。復号装置４は、例えば、図示しない記憶装置が有するプログラムを演算装置が実行することで、上記各処理部を実現する。なお、各処理部が行う復号・検証に伴う処理は、復号装置４が有する復号器により実現される、ということも出来る。
【００９５】
復号部４１は、暗号文を分割したブロックを、補助変数を用いてブロックごとに復号して平文を生成する。
【００９６】
部分チェックサム生成部４２は、復号部４１が復号した平文のブロックに基づいて、複数の部分チェックサムを生成する。また、メタチェックサム生成部４３は、部分チェックサム生成部４２が生成した部分チェックサムに基づいて、メタチェックサムを生成するそして、タグ生成部４４は、メタチェックサム生成部４３が生成したメタチェックサムに基づいて、改ざんの検出に用いる検証用タグを生成する。その後、タグ検証部４５は、暗号文とともに受信したタグと、タグ生成部４４が生成した検証用タグと、の比較検証を行う。
【００９７】
復号装置４は、上記のように、暗号文を復号して平文を生成するとともに、タグと検証用タグとの検証を行う。そして、復号装置４は、復号部４１が復号した平文と、タグ検証部４５による比較検証の結果と、を出力する。
【００９８】
このように、復号装置４は、部分チェックサム生成部４２と、メタチェックサム生成部４３と、タグ生成部４４と、タグ検証部４５を有している。このような構成であっても、暗号化装置３と同様に、本発明の目的を達成することが出来る。
【００９９】
また、上述した復号装置４は、当該復号装置４に所定のプログラムが組み込まれることで実現できる。具体的に、本発明の他の形態であるプログラムは、復号装置４に、暗号文を分割したブロックを、補助変数を用いてブロックごとに復号して平文を生成する復号部４１と、復号部４１が復号した平文のブロックに基づいて、複数の部分チェックサムを生成する部分チェックサム生成部４２と、部分チェックサム生成部４２が生成した部分チェックサムに基づいて、メタチェックサムを生成するメタチェックサム生成部４３と、メタチェックサム生成部４３が生成したメタチェックサムに基づいて、改ざんの検出に用いる検証用タグを生成するタグ生成部４４と、暗号文とともに受信したタグと、タグ生成部４４が生成した検証用タグと、の比較検証を行うタグ検証部４５と、を実現させ、復号部４１が復号した平文と、タグ検証部４５による比較検証の結果と、を出力するプログラムである。
【０１００】
また、上述した復号装置４により実行される復号方法は、復号装置４が、暗号文を分割したブロックを、補助変数を用いてブロックごとに復号して平文を生成し、復号した平文のブロックに基づいて、複数の部分チェックサムを生成し、生成した部分チェックサムに基づいて、メタチェックサムを生成し、生成したメタチェックサムに基づいて、改ざんの検出に用いる検証用タグを生成し、暗号文とともに受信したタグと、生成した検証用タグと、の比較検証を行い、復号した平文と、比較検証の結果と、を出力する、という方法である。
【０１０１】
上述した構成を有する、プログラム、又は、復号方法、の発明であっても、上記復号装置４と同様の作用を有するために、上述した本発明の目的を達成することが出来る。
【０１０２】
＜付記＞
上記実施形態の一部又は全部は、以下の付記のようにも記載されうる。以下、本発明における暗号化装置などの概略を説明する。但し、本発明は、以下の構成に限定されない。
【０１０３】
（付記１）
平文を分割したブロックを、補助変数を用いて暗号化する暗号化部と、
前記平文を分割したブロックに基づいて、複数の部分チェックサムを生成する部分チェックサム生成部と、
前記部分チェックサム生成部が生成した前記部分チェックサムに基づいて、メタチェックサムを生成するメタチェックサム生成部と、
前記メタチェックサム生成部が生成した前記メタチェックサムに基づいて、改ざんの検出に用いるタグを生成するタグ生成部と、
を有し、
前記暗号化部が暗号化した暗号文と、前記タグ生成部が生成した前記タグと、を出力する
暗号化装置。
（付記２）
付記１に記載の暗号化装置であって、
前記部分チェックサム生成部は、前記平文を分割したブロックを予め定められた数ごとにまとめて、まとめたそれぞれのブロックごとの前記部分チェックサムを生成することで、複数の前記部分チェックサムを生成する
暗号化装置。
（付記３）
付記２に記載の暗号化装置であって、
前記部分チェックサム生成部は、１つにまとめられた各ブロックの排他的論理和を求めることで、前記部分チェックサムを生成する
暗号化装置。
（付記４）
付記１から付記３までのいずれかに記載の暗号化装置であって、
前記部分チェックサム生成部は、前記平文を分割したブロックのうちの偶数番目のブロックを予め定められた数ごとにまとめて、まとめたそれぞれのブロックごとの前記部分チェックサムを生成する
暗号化装置。
（付記５）
付記２から付記４までのいずれかに記載の暗号化装置であって、
前記予め定められた数は、２以上の値である
暗号化装置。
（付記６）
付記１から付記５までのいずれかに記載の暗号化装置であって、
前記メタチェックサム生成部は、前記部分チェックサム生成部が生成した複数の前記部分チェックサムを、鍵付きのハッシュ関数、又は、擬似ランダム関数を用いて1ブロックにハッシュすることで、前記メタチェックサムを生成する
暗号化装置。
（付記７）
付記１から付記６までのいずれかに記載の暗号化装置であって、
前記タグ生成部は、前記メタチェックサム生成部が生成した前記メタチェックサムを、補助変数を用いて暗号化することで、前記タグを生成する
暗号化装置。
（付記８）
付記７に記載の暗号化装置であって、
前記タグ生成部が前記タグを生成する際に用いる補助変数には、前記暗号化部が前記平文を暗号化する際に用いる補助変数とは異なる値が含まれている
暗号化装置。
（付記９）
暗号化装置が、
平文を分割したブロックを、補助変数を用いて暗号化し、
前記平文を分割したブロックに基づいて、複数の部分チェックサムを生成し、
生成した前記部分チェックサムに基づいて、メタチェックサムを生成し、
生成した前記メタチェックサムに基づいて、改ざんの検出に用いるタグを生成し、
前記平文を暗号化した暗号文と、前記タグと、を出力する
暗号化方法。
（付記１０）
暗号化装置に、
平文を分割したブロックを、補助変数を用いて暗号化する暗号化部と、
前記平文を分割したブロックに基づいて、複数の部分チェックサムを生成する部分チェックサム生成部と、
前記部分チェックサム生成部が生成した前記部分チェックサムに基づいて、メタチェックサムを生成するメタチェックサム生成部と、
前記メタチェックサム生成部が生成した前記メタチェックサムに基づいて、改ざんの検出に用いるタグを生成するタグ生成部と、
を実現させ、
前記暗号化部が暗号化した暗号文と、前記タグ生成部が生成した前記タグと、を出力する
プログラム。
（付記１１）
暗号文を分割したブロックを、補助変数を用いてブロックごとに復号して平文を生成する復号部と、
前記復号部が復号した前記平文のブロックに基づいて、複数の部分チェックサムを生成する部分チェックサム生成部と、
前記部分チェックサム生成部が生成した前記部分チェックサムに基づいて、メタチェックサムを生成するメタチェックサム生成部と、
前記メタチェックサム生成部が生成した前記メタチェックサムに基づいて、改ざんの検出に用いる検証用タグを生成するタグ生成部と、
前記暗号文とともに受信したタグと、前記タグ生成部が生成した前記検証用タグと、の比較検証を行うタグ検証部と、
を有し、
前記復号部が復号した前記平文と、前記タグ検証部による比較検証の結果と、を出力する
復号装置。
（付記１２）
復号装置が、
暗号文を分割したブロックを、補助変数を用いてブロックごとに復号して平文を生成し、
復号した前記平文のブロックに基づいて、複数の部分チェックサムを生成し、
生成した前記部分チェックサムに基づいて、メタチェックサムを生成し、
生成した前記メタチェックサムに基づいて、改ざんの検出に用いる検証用タグを生成し、
前記暗号文とともに受信したタグと、生成した前記検証用タグと、の比較検証を行い、
復号した前記平文と、比較検証の結果と、を出力する
復号方法。
（付記１３）
復号装置に、
暗号文を分割したブロックを、補助変数を用いてブロックごとに復号して平文を生成する復号部と、
前記復号部が復号した平文のブロックに基づいて、複数の部分チェックサムを生成する部分チェックサム生成部と、
前記部分チェックサム生成部が生成した前記部分チェックサムに基づいて、メタチェックサムを生成するメタチェックサム生成部と、
前記メタチェックサム生成部が生成した前記メタチェックサムに基づいて、改ざんの検出に用いる検証用タグを生成するタグ生成部と、
前記暗号文とともに受信したタグと、前記タグ生成部が生成した前記検証用タグと、の比較検証を行うタグ検証部と、
を実現させ、
前記復号部が復号した前記平文と、前記タグ検証部による比較検証の結果と、を出力する
プログラム。
【０１０４】
なお、上記各実施形態及び付記において記載したプログラムは、記憶装置に記憶されていたり、コンピュータが読み取り可能な記録媒体に記録されていたりする。例えば、記録媒体は、フレキシブルディスク、光ディスク、光磁気ディスク、及び、半導体メモリ等の可搬性を有する媒体である。
【０１０５】
以上、上記各実施形態を参照して本願発明を説明したが、本願発明は、上述した実施形態に限定されるものではない。本願発明の構成や詳細には、本願発明の範囲内で当業者が理解しうる様々な変更をすることが出来る。
【符号の説明】
【０１０６】
１０  暗号化装置
１００  平文入力部
１０１  初期ベクトル生成部
１０２  Tweak付き暗号化部
１０３  部分チェックサム生成部
１０４  メタチェックサム生成部
１０５  メタチェックサム暗号化部
１０６  暗号文出力部
２０  復号装置
２００  暗号文入力部
２０１  Tweak付き復号部
２０２  部分チェックサム生成部
２０３  メタチェックサム生成部
２０４  メタチェックサム暗号化部
２０５  タグ検証部
２０６  復号結果出力部
３  暗号化装置
３１  暗号化部
３２  部分チェックサム生成部
３３  メタチェックサム生成部
３４  タグ生成部
４  復号装置
４１  復号部
４２  部分チェックサム生成部
４３  メタチェックサム生成部
４４  タグ生成部
４５  タグ検証部
【図１】
2019163032.tif 000003
【図２】
2019163032.tif 000004
【図３】
2019163032.tif 000005
【図４】
2019163032.tif 000006
【図５】
2019163032.tif 000007
【図６】
2019163032.tif 000008
【図７】
2019163032.tif 000009
【図８】
2019163032.tif 000010
【図９】
2019163032.tif 000011
【図１０】
2019163032.tif 000012
【図１１】
2019163032.tif 000013
【図１２】
2019163032.tif 000014
【図１３】
2019163032.tif 000015
【図１４】
2019163032.tif 000016
【手続補正書】
【提出日】令和2年8月4日(2020.8.4)
【手続補正１】
【補正対象書類名】特許請求の範囲
【補正対象項目名】全文
【補正方法】変更
【補正の内容】
【特許請求の範囲】
【請求項１】
平文を分割したブロックを、補助変数を用いて暗号化する暗号化部と、
前記平文を分割したブロックに基づいて、複数の部分チェックサムを生成する部分チェックサム生成部と、
前記部分チェックサム生成部が生成した前記部分チェックサムに基づいて、メタチェックサムを生成するメタチェックサム生成部と、
前記メタチェックサム生成部が生成した前記メタチェックサムに基づいて、改ざんの検出に用いるタグを生成するタグ生成部と、
を有し、
前記暗号化部が暗号化した暗号文と、前記タグ生成部が生成した前記タグと、を出力する
暗号化装置。
【請求項２】
請求項１に記載の暗号化装置であって、
前記部分チェックサム生成部は、前記平文を分割したブロックを予め定められた数ごとにまとめて、まとめたそれぞれのブロックごとの前記部分チェックサムを生成することで、複数の前記部分チェックサムを生成する
暗号化装置。
【請求項３】
請求項２に記載の暗号化装置であって、
前記部分チェックサム生成部は、１つにまとめられた各ブロックの排他的論理和を求めることで、前記部分チェックサムを生成する
暗号化装置。
【請求項４】
請求項１から請求項３までのいずれかに記載の暗号化装置であって、
前記部分チェックサム生成部は、前記平文を分割したブロックのうちの偶数番目のブロックを予め定められた数ごとにまとめて、まとめたそれぞれのブロックごとの前記部分チェックサムを生成する
暗号化装置。
【請求項５】
請求項２から請求項４までのいずれかに記載の暗号化装置であって、
前記予め定められた数は、２以上の値である
暗号化装置。
【請求項６】
請求項１から請求項５までのいずれかに記載の暗号化装置であって、
前記メタチェックサム生成部は、前記部分チェックサム生成部が生成した複数の前記部分チェックサムを、鍵付きのハッシュ関数、又は、擬似ランダム関数を用いて1ブロックにハッシュすることで、前記メタチェックサムを生成する
暗号化装置。
【請求項７】
請求項１から請求項６までのいずれかに記載の暗号化装置であって、
前記タグ生成部は、前記メタチェックサム生成部が生成した前記メタチェックサムを、補助変数を用いて暗号化することで、前記タグを生成する
暗号化装置。
【請求項８】
暗号化装置が、
平文を分割したブロックを、補助変数を用いて暗号化し、
前記平文を分割したブロックに基づいて、複数の部分チェックサムを生成し、
生成した前記部分チェックサムに基づいて、メタチェックサムを生成し、
生成した前記メタチェックサムに基づいて、改ざんの検出に用いるタグを生成し、
前記平文を暗号化した暗号文と、前記タグと、を出力する
暗号化方法。
【請求項９】
暗号化装置に、
平文を分割したブロックを、補助変数を用いて暗号化する暗号化部と、
前記平文を分割したブロックに基づいて、複数の部分チェックサムを生成する部分チェックサム生成部と、
前記部分チェックサム生成部が生成した前記部分チェックサムに基づいて、メタチェックサムを生成するメタチェックサム生成部と、
前記メタチェックサム生成部が生成した前記メタチェックサムに基づいて、改ざんの検出に用いるタグを生成するタグ生成部と、
を実現させ、
前記暗号化部が暗号化した暗号文と、前記タグ生成部が生成した前記タグと、を出力する
プログラム。
【請求項１０】
暗号文を分割したブロックを、補助変数を用いてブロックごとに復号して平文を生成する復号部と、
前記復号部が復号した前記平文のブロックに基づいて、複数の部分チェックサムを生成する部分チェックサム生成部と、
前記部分チェックサム生成部が生成した前記部分チェックサムに基づいて、メタチェックサムを生成するメタチェックサム生成部と、
前記メタチェックサム生成部が生成した前記メタチェックサムに基づいて、改ざんの検出に用いる検証用タグを生成するタグ生成部と、
前記暗号文とともに受信したタグと、前記タグ生成部が生成した前記検証用タグと、の比較検証を行うタグ検証部と、
を有し、
前記復号部が復号した前記平文と、前記タグ検証部による比較検証の結果と、を出力する
復号装置。
【国際調査報告】
2019163032.tif 000017
2019163032.tif 000018
2019163032.tif 000019
2019163032.tif 000020
2019163032.tif 000021
2019163032.tif 000022