(57)【要約】【課題】  従来のＥＭＥモードと同等の安全性を実現しつつ、全体の処理を効率化する。【解決手段】  暗号化装置１０においては、ＥＭＥモードで必要とされるブロック間の相互作用が第２マスクデータ２Ｍ〜８Ｍとの排他的論理和機能（XOR42〜XOR44）により実現されるため、従来手法と同等の安全性を提供できる。また、暗号化装置１０においては、従来の１層目の暗号化部分（ＥＣＢ１）に相当する部分のビットスライス実装ではビットスライス逆変換を行わず、従来の２層目の暗号化部分（ＥＣＢ２）に相当する部分のビットスライス実装ではビットスライス変換を行わないため、従来手法のＥＭＥモードにビットスライスの手法をそのまま適用した場合に比べ、ビットスライス逆変換（Ｉ−ＢＳ）及びビットスライス変換（ＢＳ）を１層ずつ削減でき、処理効率を向上できる。【選択図】  図２
2009175196.tif 000002
【特許請求の範囲】
【請求項１】
ビットスライス手法による共通鍵暗号方式を用いた暗号化装置であって、
前記共通鍵暗号方式の共通鍵ｋ及び非秘密情報Ｔを記憶する記憶手段と、
前記記憶手段内の共通鍵ｋに基づいて、ｍ個の互いに異なる第１マスクデータＬ，２Ｌ，…，２m-1Ｌを生成する第１マスクデータ生成手段と、
平文データをブロックＰ1，Ｐ2，…，Ｐm毎に分割して得られたｍ個のブロックＰ1，Ｐ2，…，Ｐmと、前記各第１マスクデータＬ，２Ｌ，…，２m-1Ｌとの排他的論理和を個別に計算し、当該ブロック毎の計算結果を得る第１の排他的論理和計算手段と、
前記ブロック毎の計算結果に対し、前記ビットスライス手法によるビットスライス変換を実行し、ブロック毎のビットスライス変換結果を得るビットスライス変換手段と、
前記ブロック毎のビットスライス変換結果に対し、前記記憶手段内の共通鍵ｋに基づいて前記ビットスライス手法による暗号化処理を実行し、当該ブロック毎の暗号化結果を得る第１のビットスライス暗号化手段と、
前記ブロック毎の全ての暗号化結果と、前記非秘密情報Ｔとの排他的論理和を計算し、計算結果を得る第２の排他的論理和計算手段と、
前記第２の排他的論理和計算手段の計算結果に対し、前記記憶手段内の共通鍵ｋに基づいて暗号化処理を実行し、暗号化結果を得る暗号化手段と、
前記第２の排他的論理和計算手段の計算結果と、前記暗号化手段の暗号化結果との排他的論理和を計算し、計算結果Ｍを得る第３の排他的論理和計算手段と、
前記第３の排他的論理和計算手段の計算結果Ｍに基づいて、ｍ−１個の互いに異なる第２マスクデータ２Ｍ，４Ｍ，…，２m-1Ｍを生成する第２マスクデータ生成手段と、
前記第１のビットスライス暗号化手段における２番目乃至ｍ番目のブロック毎の暗号化結果と、前記各第２マスクデータ２Ｍ，４Ｍ，…，２m-1Ｍとの排他的論理和を個別に計算し、当該ブロック毎の計算結果を得る第４の排他的論理和計算手段と、
前記第４の排他的論理和計算手段により得られたブロック毎の計算結果と、前記非秘密情報Ｔとの排他的論理和を計算し、新たな計算結果を得る第５の排他的論理和計算手段と、
前記第５の排他的論理和計算手段により得られた計算結果と、前記第４の排他的論理和計算手段により得られたブロック毎の計算結果とに対し、前記記憶手段内の共通鍵ｋに基づいて前記ビットスライス手法による暗号化処理を実行し、ブロック毎の暗号化結果を得る第２のビットスライス暗号化手段と、
前記第２のビットスライス暗号化手段により得られたブロック毎の暗号化結果に対し、前記ビットスライス手法によるビットスライス逆変換を実行し、当該ブロック毎のビットスライス逆変換結果を得るビットスライス逆変換手段と、
前記ブロック毎のビットスライス逆変換結果と、前記各第１マスクデータＬ，２Ｌ，…，２m-1Ｌとの排他的論理和を個別に計算し、得られたブロック毎の計算結果を暗号文データとして出力する第６の排他的論理和計算手段と、
を備えたことを特徴とする暗号化装置。
【請求項２】
請求項１に記載の暗号化装置において、
前記第１マスク生成手段は、
予め設定された変更可能な非秘密変数を、前記記憶手段内の共通鍵ｋに基づいて暗号化し、暗号化結果を得る変数暗号化手段と、
前記変数暗号化手段により得られた暗号化結果に有限体上の所定の演算処理をｍ回実行し、各回の実行結果として各第１マスクデータＬ，２Ｌ，…，２m-1Ｌを生成する演算手段と、
を備えたことを特徴とする暗号化装置。
【請求項３】
請求項２に記載の暗号化装置において、
前記有限体上の所定の演算処理は、有限体上の乗算処理であることを特徴とする暗号化装置。
【請求項４】
ビットスライス手法による共通鍵暗号方式を用いた暗号化装置であって、
前記共通鍵暗号方式の共通鍵ｋ及び非秘密情報Ｔを記憶する記憶手段と、
前記記憶手段内の共通鍵ｋに基づいて、ｍ個の互いに異なる第１マスクデータＬ，２Ｌ，…，２m-1Ｌを生成する第１マスクデータ生成手段と、
平文データをブロックＰ1，Ｐ2，…，Ｐm毎に分割して得られたｍ個のブロックＰ1，Ｐ2，…，Ｐmと、前記各第１マスクデータＬ，２Ｌ，…，２m-1Ｌとの排他的論理和を個別に計算し、当該ブロック毎の計算結果を得る第１の排他的論理和計算手段と、
前記ブロック毎の計算結果に対し、前記記憶手段内の共通鍵ｋに基づいて前記ビットスライス手法による暗号化処理を実行し、当該ブロック毎の暗号化結果を得る第１のビットスライス暗号化手段と、
前記ブロック毎の全ての暗号化結果と、前記非秘密情報Ｔとの排他的論理和を計算し、計算結果を得る第２の排他的論理和計算手段と、
前記第２の排他的論理和計算手段の計算結果に対し、前記記憶手段内の共通鍵ｋに基づいて暗号化処理を実行し、暗号化結果を得る暗号化手段と、
前記第２の排他的論理和計算手段の計算結果と、前記暗号化手段の暗号化結果との排他的論理和を計算し、計算結果Ｍを得る第３の排他的論理和計算手段と、
前記第３の排他的論理和計算手段の計算結果Ｍに基づいて、ｍ−１個の互いに異なる第２マスクデータ２Ｍ，４Ｍ，…，２m-1Ｍを生成する第２マスクデータ生成手段と、
前記第１のビットスライス暗号化手段における２番目乃至ｍ番目のブロック毎の暗号化結果と、前記各第２マスクデータ２Ｍ，４Ｍ，…，２m-1Ｍとの排他的論理和を個別に計算し、当該ブロック毎の計算結果を得る第４の排他的論理和計算手段と、
前記第４の排他的論理和計算手段により得られたブロック毎の計算結果と、前記非秘密情報Ｔとの排他的論理和を計算し、計算結果を得る第５の排他的論理和計算手段と、
前記第５の排他的論理和計算手段により得られた計算結果と、前記第４の排他的論理和計算手段により得られたブロック毎の計算結果とに対し、前記記憶手段内の共通鍵ｋに基づいて前記ビットスライス手法による暗号化処理を実行し、ブロック毎の暗号化結果を得る第２のビットスライス暗号化手段と、
前記第２のビットスライス暗号化手段により得られたブロック毎の暗号化結果と、前記各第１マスクデータＬ，２Ｌ，…，２m-1Ｌとの排他的論理和を個別に計算し、得られたブロック毎の計算結果を暗号文データとして出力する第６の排他的論理和計算手段と、
を備えたことを特徴とする暗号化装置。
【請求項５】
請求項４に記載の暗号化装置において、
前記第１マスク生成手段は、
予め設定された変更可能な非秘密変数を、前記記憶手段内の共通鍵ｋに基づいて暗号化し、暗号化結果を得る変数暗号化手段と、
前記変数暗号化手段により得られた暗号化結果に有限体上の所定の演算処理をｍ回実行し、各回の実行結果として各第１マスクデータＬ，２Ｌ，…，２m-1Ｌを生成する演算手段と、
を備えたことを特徴とする暗号化装置。
【請求項６】
請求項５に記載の暗号化装置において、
前記有限体上の所定の演算処理は、有限体上の乗算処理であることを特徴とする暗号化装置。
【請求項７】
共通鍵暗号方式を用いた暗号化装置であって、
前記共通鍵暗号方式の共通鍵ｋ及び非秘密情報Ｔを記憶する記憶手段と、
前記記憶手段内の共通鍵ｋに基づいて、ｍ個の互いに異なる第１マスクデータＬ，２Ｌ，…，２m-1Ｌを生成する第１マスクデータ生成手段と、
前記各第１マスクデータＬ，２Ｌ，…，２m-1Ｌのうちの１番目の第１マスクデータＬと、前記非秘密情報Ｔとの排他的論理和を計算し、計算結果を得る第１の排他的論理和計算手段と、
前記第１の排他的論理和計算手段により得られた計算結果と、平文データをブロックＰ1，Ｐ2，…，Ｐm毎に分割して得られたｍ個のブロックＰ1，Ｐ2，…，Ｐmのうちの２番目乃至ｍ番目のブロックＰ2，Ｐ3，…，Ｐmとに基づいてハッシュ関数を計算し、ハッシュ値を得るハッシュ関数計算手段と、
前記ｍ個のブロックＰ1，Ｐ2，…，Ｐmのうちの１番目のブロックＰ1と、前記ハッシュ値と、前記非秘密情報Ｔとの排他的論理和を計算し、計算結果Ｕを得る第２の排他的論理和計算手段と、
前記第２の排他的論理和計算手段の計算結果Ｕに基づいて、ｍ−２個の互いに異なる第２マスクデータ２Ｕ，…，２m-2Ｕを生成する第２マスクデータ生成手段と、
前記２番目乃至ｍ番目のブロックＰ2，Ｐ3，…，Ｐmと、前記計算結果Ｕ及び前記各第２マスクデータ２Ｕ，…，２m-2Ｕとの排他的論理和を個別に計算し、当該ブロック毎の計算結果を得る第３の排他的論理和計算手段と、
前記第２の排他的論理和計算手段の計算結果Ｕに対し、前記記憶手段内の共通鍵ｋに基づいて暗号化処理を実行し、暗号化結果Ｍを得る第１の暗号化手段と、
前記第１の暗号化手段の暗号化結果Ｍに基づいて、ｍ−１個の互いに異なる第３マスクデータ２Ｍ，４Ｍ，…，２m-1Ｍを生成する第３マスクデータ生成手段と、
前記第３の排他的論理和計算手段により得られたブロック毎の計算結果と、前記各第３マスクデータ２Ｍ，４Ｍ，…，２m-1Ｍとの排他的論理和を個別に計算し、当該ブロック毎の新たな計算結果を得る第４の排他的論理和計算手段と、
前記第４の排他的論理和計算手段により得られたブロック毎の計算結果と、前記非秘密情報Ｔとの排他的論理和を計算し、計算結果を得る第５の排他的論理和計算手段と、
前記第５の排他的論理和計算手段により得られた計算結果と、前記第４の排他的論理和計算手段により得られたブロック毎の計算結果とに対し、前記記憶手段内の共通鍵ｋに基づいて暗号化処理を実行し、ブロック毎の暗号化結果を得る第２の暗号化手段と、
前記第２の暗号化手段により得られたブロック毎の暗号化結果と、前記各第１マスクデータＬ，２Ｌ，…，２m-1Ｌとの排他的論理和を個別に計算し、得られたブロック毎の計算結果を暗号文データとして出力する第６の排他的論理和計算手段と、
を備えたことを特徴とする暗号化装置。
【請求項８】
請求項７に記載の暗号化装置において、
前記第２の暗号化手段は、ＥＣＢモードの前記暗号化処理を実行することを特徴とする暗号化装置。
【請求項９】
請求項７に記載の暗号化装置において、
前記第２の暗号化手段は、
前記第５の排他的論理和計算手段により得られた計算結果と、前記第４の排他的論理和計算手段により得られたブロック毎の計算結果とに対し、前記記憶手段内の共通鍵ｋに基づいてビットスライス手法による前記暗号化処理を実行し、当該ブロック毎の暗号化結果を得るビットスライス暗号化手段と、
前記ビットスライス暗号化手段により得られたブロック毎の暗号化結果に対し、前記ビットスライス手法によるビットスライス逆変換を実行し、得られたブロック毎のビットスライス逆変換結果をブロック毎の暗号化結果として前記第６の排他的論理和計算手段に送出するビットスライス逆変換手段と、
を備えたことを特徴とする暗号化装置。
【請求項１０】
請求項７に記載の暗号化装置において、
前記第２の暗号化手段は、
前記第５の排他的論理和計算手段により得られた計算結果と、前記第４の排他的論理和計算手段により得られたブロック毎の計算結果とに対し、前記記憶手段内の共通鍵ｋに基づいて前記ビットスライス手法による前記暗号化処理を実行し、得られたブロック毎の暗号化結果を前記第６の排他的論理和計算手段に送出するビットスライス暗号化手段、
を備えたことを特徴とする暗号化装置。
【請求項１１】
請求項７に記載の暗号化装置において、
前記第２の暗号化手段及び前記第６の排他的論理和計算手段はＣＢＣモードを構成していることを特徴とする暗号化装置。
【請求項１２】
請求項７乃至請求項１１のいずれか１項に記載の暗号化装置において、
前記第１のマスクデータ生成手段は、ｈ番目の第１マスクデータ２h-1Ｌに有限体上の乗算処理を実行してｈ＋１番目の第１マスクデータ２hＬを生成する第１演算手段（但し、ｈ＝１，２，…，ｍ−１）を備え、
前記第２のマスクデータ生成手段は、ｉ番目の第２マスクデータ２i-1Ｕに有限体上の乗算処理を実行してｉ＋１番目の第２マスクデータ２iＵを生成する第２演算手段（但し、ｉ＝１，２，…，ｍ−２）を備え、
前記第３のマスクデータ生成手段は、ｊ番目の第３マスクデータ２j-1Ｍに有限体上の乗算処理を実行してｊ＋１番目の第３マスクデータ２jＭを生成する第３演算手段（但し、ｊ＝１，２，…，ｍ−１）を備えたことを特徴とする暗号化装置。
【請求項１３】
請求項１２に記載の暗号化装置において、
前記第１乃至第３演算手段は、ブロック毎のブロック幅のビット数よりも小さい次数の前記有限体上の乗算処理を実行することを特徴とする暗号化装置。
【請求項１４】
ビットスライス手法による共通鍵暗号方式を用いた復号装置であって、
前記共通鍵暗号方式の共通鍵ｋ及び非秘密情報Ｔを記憶する記憶手段と、
前記記憶手段内の共通鍵ｋに基づいて、ｍ個の互いに異なる第１マスクデータＬ，２Ｌ，…，２m-1Ｌを生成する第１マスクデータ生成手段と、
暗号文データをブロックＣ1，Ｃ2，…，Ｃm毎に分割して得られたｍ個のブロックＣ1，Ｃ2，…，Ｃmと、前記各第１マスクデータＬ，２Ｌ，…，２m-1Ｌとの排他的論理和を個別に計算し、当該ブロック毎の計算結果を得る第１の排他的論理和計算手段と、
前記ブロック毎の計算結果に対し、前記ビットスライス手法によるビットスライス逆変換を実行し、ブロック毎のビットスライス逆変換結果を得るビットスライス逆変換手段と、
前記ブロック毎のビットスライス逆変換結果に対し、前記記憶手段内の共通鍵ｋに基づいて前記ビットスライス手法による復号処理を実行し、当該ブロック毎の復号結果を得る第１のビットスライス復号手段と、
前記ブロック毎の全ての復号結果と、前記非秘密情報Ｔとの排他的論理和を計算し、計算結果を得る第２の排他的論理和計算手段と、
前記第２の排他的論理和計算手段の計算結果に対し、前記記憶手段内の共通鍵ｋに基づいて復号処理を実行し、復号結果を得る復号手段と、
前記第２の排他的論理和計算手段の計算結果と、前記復号手段の復号結果との排他的論理和を計算し、計算結果Ｍを得る第３の排他的論理和計算手段と、
前記第３の排他的論理和計算手段の計算結果Ｍに基づいて、ｍ−１個の互いに異なる第２マスクデータ２Ｍ，４Ｍ，…，２m-1Ｍを生成する第２マスクデータ生成手段と、
前記第１のビットスライス復号手段における２番目乃至ｍ番目のブロック毎の復号結果と、前記各第２マスクデータ２Ｍ，４Ｍ，…，２m-1Ｍとの排他的論理和を個別に計算し、当該ブロック毎の計算結果を得る第４の排他的論理和計算手段と、
前記第４の排他的論理和計算手段により得られたブロック毎の計算結果と、前記非秘密情報Ｔとの排他的論理和を計算し、新たな計算結果を得る第５の排他的論理和計算手段と、
前記第５の排他的論理和計算手段により得られた計算結果と、前記第４の排他的論理和計算手段により得られたブロック毎の計算結果とに対し、前記記憶手段内の共通鍵ｋに基づいて前記ビットスライス手法による復号処理を実行し、ブロック毎の復号結果を得る第２のビットスライス復号手段と、
前記第２のビットスライス復号手段により得られたブロック毎の復号結果に対し、前記ビットスライス手法によるビットスライス変換を実行し、当該ブロック毎のビットスライス変換結果を得るビットスライス変換手段と、
前記ブロック毎のビットスライス変換結果と、前記各第１マスクデータＬ，２Ｌ，…，２m-1Ｌとの排他的論理和を個別に計算し、得られたブロック毎の計算結果を平文データとして出力する第６の排他的論理和計算手段と、
を備えたことを特徴とする復号装置。
【請求項１５】
請求項１４に記載の復号装置において、
前記第１マスク生成手段は、
予め設定された変更可能な非秘密変数を、前記記憶手段内の共通鍵ｋに基づいて暗号化し、暗号化結果を得る変数暗号化手段と、
前記変数暗号化手段により得られた暗号化結果に有限体上の所定の演算処理をｍ回実行し、各回の実行結果として各第１マスクデータＬ，２Ｌ，…，２m-1Ｌを生成する演算手段と、
を備えたことを特徴とする復号装置。
【請求項１６】
請求項１５に記載の復号装置において、
前記有限体上の所定の演算処理は、有限体上の乗算処理であることを特徴とする復号装置。
【請求項１７】
ビットスライス手法による共通鍵暗号方式を用いた復号装置であって、
前記共通鍵暗号方式の共通鍵ｋ及び非秘密情報Ｔを記憶する記憶手段と、
前記記憶手段内の共通鍵ｋに基づいて、ｍ個の互いに異なる第１マスクデータＬ，２Ｌ，…，２m-1Ｌを生成する第１マスクデータ生成手段と、
暗号文データをブロックＣ1，Ｃ2，…，Ｃm毎に分割して得られたｍ個のブロックＣ1，Ｃ2，…，Ｃmと、前記各第１マスクデータＬ，２Ｌ，…，２m-1Ｌとの排他的論理和を個別に計算し、当該ブロック毎の計算結果を得る第１の排他的論理和計算手段と、
前記ブロック毎の計算結果に対し、前記記憶手段内の共通鍵ｋに基づいて前記ビットスライス手法による復号処理を実行し、当該ブロック毎の暗号化結果を得る第１のビットスライス復号手段と、
前記ブロック毎の全ての復号結果と、前記非秘密情報Ｔとの排他的論理和を計算し、計算結果を得る第２の排他的論理和計算手段と、
前記第２の排他的論理和計算手段の計算結果に対し、前記記憶手段内の共通鍵ｋに基づいて復号処理を実行し、復号結果を得る暗号化手段と、
前記第２の排他的論理和計算手段の計算結果と、前記復号手段の復号結果との排他的論理和を計算し、計算結果Ｍを得る第３の排他的論理和計算手段と、
前記第３の排他的論理和計算手段の計算結果Ｍに基づいて、ｍ−１個の互いに異なる第２マスクデータ２Ｍ，４Ｍ，…，２m-1Ｍを生成する第２マスクデータ生成手段と、
前記第１のビットスライス復号手段における２番目乃至ｍ番目のブロック毎の復号結果と、前記各第２マスクデータ２Ｍ，４Ｍ，…，２m-1Ｍとの排他的論理和を個別に計算し、当該ブロック毎の計算結果を得る第４の排他的論理和計算手段と、
前記第４の排他的論理和計算手段により得られたブロック毎の計算結果と、前記非秘密情報Ｔとの排他的論理和を計算し、計算結果を得る第５の排他的論理和計算手段と、
前記第５の排他的論理和計算手段により得られた計算結果と、前記第４の排他的論理和計算手段により得られたブロック毎の計算結果とに対し、前記記憶手段内の共通鍵ｋに基づいて前記ビットスライス手法による復号処理を実行し、ブロック毎の復号結果を得る第２のビットスライス復号手段と、
前記第２のビットスライス復号手段により得られたブロック毎の復号結果と、前記各第１マスクデータＬ，２Ｌ，…，２m-1Ｌとの排他的論理和を個別に計算し、得られたブロック毎の計算結果を平文データとして出力する第６の排他的論理和計算手段と、
を備えたことを特徴とする復号装置。
【請求項１８】
請求項１７に記載の復号装置において、
前記第１マスク生成手段は、
予め設定された変更可能な非秘密変数を、前記記憶手段内の共通鍵ｋに基づいて暗号化し、暗号化結果を得る変数暗号化手段と、
前記変数暗号化手段により得られた暗号化結果に有限体上の所定の演算処理をｍ回実行し、各回の実行結果として各第１マスクデータＬ，２Ｌ，…，２m-1Ｌを生成する演算手段と、
を備えたことを特徴とする復号装置。
【請求項１９】
請求項１８に記載の復号装置において、
前記有限体上の所定の演算処理は、有限体上の乗算処理であることを特徴とする復号装置。
【請求項２０】
共通鍵暗号方式を用いた復号装置であって、
前記共通鍵暗号方式の共通鍵ｋ及び非秘密情報Ｔを記憶する記憶手段と、
前記記憶手段内の共通鍵ｋに基づいて、ｍ個の互いに異なる第１マスクデータＬ，２Ｌ，…，２m-1Ｌを生成する第１マスクデータ生成手段と、
暗号文データをブロックＣ1，Ｃ2，…，Ｃm毎に分割して得られたｍ個のブロックＣ1，Ｃ2，…，Ｃmと、前記各第１マスクデータＬ，２Ｌ，…，２m-1Ｌとの排他的論理和を個別に計算し、当該ブロック毎の計算結果を得る第１の排他的論理和計算手段と、
前記第１の排他的論理和計算手段により得られたブロック毎の計算結果に対し、前記記憶手段内の共通鍵ｋに基づいて復号処理を実行し、ブロック毎の復号結果を得る第１の復号手段と、
前記第１の復号手段により得られたブロック毎の復号結果と、前記非秘密情報Ｔとの排他的論理和を計算し、計算結果Ｍを得る第２の排他的論理和計算手段と、
前記第２の排他的論理和計算手段の計算結果Ｍに基づいて、ｍ−１個の互いに異なる第２マスクデータ２Ｍ，４Ｍ，…，２m-1Ｍを生成する第２マスクデータ生成手段と、
前記第１の復号手段により得られた復号結果のうちの２番目乃至ｍ番目のブロックに対応する復号結果と、前記各第２マスクデータ２Ｍ，４Ｍ，…，２m-1Ｍとの排他的論理和を個別に計算し、当該ブロック毎の新たな計算結果を得る第３の排他的論理和計算手段と、
前記第２の排他的論理和計算手段の計算結果Ｍに対し、前記記憶手段内の共通鍵ｋに基づいて復号処理を実行し、復号結果Ｕを得る第２の復号手段と、
前記第２の復号手段の復号結果Ｕに基づいて、ｍ−２個の互いに異なる第３マスクデータ２Ｕ，…，２m-2Ｕを生成する第３マスクデータ生成手段と、
前記第３の排他的論理和計算手段により得られたブロック毎の計算結果と、前記計算結果Ｕ及び前記各第３マスクデータ２Ｕ，…，２m-2Ｕとの排他的論理和を個別に計算し、当該ブロック毎の新たな計算結果を得る第４の排他的論理和計算手段と、
前記各第１マスクデータＬ，２Ｌ，…，２m-1Ｌのうちの１番目の第１マスクデータＬと、前記非秘密情報Ｔとの排他的論理和を計算し、計算結果を得る第５の排他的論理和計算手段と、
前記第５の排他的論理和計算手段により得られた計算結果と、前記第４の排他的論理和計算手段により得られたブロック毎の計算結果とに基づいてハッシュ関数を計算し、ハッシュ値を得るハッシュ関数計算手段と、
前記第２の復号手段の復号結果Ｕと、前記ハッシュ値と、前記非秘密情報Ｔとの排他的論理和を計算し、計算結果を得る第６の排他的論理和計算手段と、
前記第６の排他的論理和計算手段により得られた計算結果と、前記第４の排他的論理和計算手段により得られたブロック毎の計算結果とを平文データとして出力する手段と、
を備えたことを特徴とする復号装置。
【請求項２１】
請求項２０に記載の復号装置において、
前記第１の復号手段は、ＥＣＢモードの前記復号処理を実行することを特徴とする復号装置。
【請求項２２】
請求項２０に記載の復号装置において、
前記第１の復号手段は、
前記第１の排他的論理和計算手段により得られたブロック毎の計算結果に対し、ビットスライス手法によるビットスライス逆変換を実行し、当該ブロック毎のビットスライス逆変換結果を得るビットスライス逆変換手段と、
前記ビットスライス逆変換手段により得られたブロック毎のビットスライス逆変換結果に対し、前記記憶手段内の共通鍵ｋに基づいて前記ビットスライス手法による前記復号処理を実行し、当該ブロック毎の復号結果を得るビットスライス復号手段と、
を備えたことを特徴とする復号装置。
【請求項２３】
請求項２０に記載の復号装置において、
前記第１の復号手段は、
前記第１の排他的論理和計算手段により得られたブロック毎の計算結果に対し、前記記憶手段内の共通鍵ｋに基づいてビットスライス手法による前記復号処理を実行し、当該ブロック毎の復号結果を得るビットスライス復号手段、
を備えたことを特徴とする復号装置。
【請求項２４】
請求項２０に記載の復号装置において、
前記第１の排他的論理和計算手段及び前記第１の復号手段はＣＢＣモードを構成していることを特徴とする復号装置。
【請求項２５】
請求項２０乃至請求項２４のいずれか１項に記載の復号装置において、
前記第１のマスクデータ生成手段は、ｈ番目の第１マスクデータ２h-1Ｌに有限体上の乗算処理を実行してｈ＋１番目の第１マスクデータ２hＬを生成する第１演算手段（但し、ｈ＝１，２，…，ｍ−１）を備え、
前記第２のマスクデータ生成手段は、ｊ番目の第２マスクデータ２j-1Ｍに有限体上の乗算処理を実行してｊ＋１番目の第２マスクデータ２jＭを生成する第２演算手段（但し、ｊ＝１，２，…，ｍ−１）を備え、
前記第３のマスクデータ生成手段は、ｉ番目の第３マスクデータ２i-1Ｕに有限体上の乗算処理を実行してｉ＋１番目の第３マスクデータ２iＵを生成する第３演算手段（但し、ｉ＝１，２，…，ｍ−２）を備えたことを特徴とする復号装置。
【請求項２６】
請求項２５に記載の復号装置において、
前記第１乃至第３演算手段は、ブロック毎のブロック幅のビット数よりも小さい次数の前記有限体上の乗算処理を実行することを特徴とする復号装置。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、共通鍵暗号方式を用いた暗号化装置及び復号装置に係わり、例えば、従来のＥＭＥモードと同等の安全性を実現しつつ、全体の処理を効率化し得る暗号化装置及び復号装置に関する。
【背景技術】
【０００２】
一般に、データ記憶媒体としては、例えば共通鍵暗号方式における共通鍵ブロック暗号を用いて暗号化された状態のデータを保存するものとして、ハードディスク装置やテープ装置といった磁気ディスクや、光ディスク、フラッシュメモリなどが知られている。この種の記憶媒体は、一般にブロックデバイスと呼ばれ、あるまとまった大きさのブロックを単位としてデータを入出力する。ブロックデバイスにおいては、このあるまとまった大きさのブロックが一般にセクタと呼ばれる。セクタとしては、５１２バイトあるいは２０４８バイトといった一定の単位が用いられる。セクタ単位でデータを管理することにより、データの更新、複製、削除や配置などが効率化され管理が容易となる利点がある。
【０００３】
また、データの保存に限らず、データ通信においても、通信するデータの暗号化には共通鍵ブロック暗号が用いられる。現代のデータ通信においては、通信するデータをブロックに分割して送受信するパケット通信が一般的である。例えば、インターネットなどで用いられるＴＣＰ／ＩＰ(Transmission Control Protocol/Internet Protocol)はパケット通信の上位プロトコルであり、あるまとまった大きさのブロックを単位として、ＩＰヘッダあるいはＴＣＰヘッダを付加してデータを送受信する。ＴＣＰ／ＩＰを例とすると、データが格納されるブロックはペイロードと呼ばれ、５１２バイトあるいはそれ以上の単位のデータが格納される。
【０００４】
これらセクタあるいはペイロード単位でデータを暗号化する場合、ＡＥＳ(Advanced Encryption Standard)（非特許文献１参照）などの共通鍵ブロック暗号アルゴリズムが一般に用いられる。以下、共通鍵ブロック暗号アルゴリズムの処理単位をブロックとよぶ。また、前述したセクタとペイロードは、一般性を損ねることなくセクタと呼ぶ。すなわち、ＡＥＳを用いてハードディスクを暗号化する場合、一般的にはブロックは１２８ビットすなわち１６バイトであり、セクタは５１２バイトである。
【０００５】
共通鍵ブロック暗号を用いてセクタ単位でデータを暗号化する場合、セクタ内のブロック単位で暗号化する方法は、ＥＣＢ(Electronic Codebook)モード暗号化（非特許文献２参照）として知られている。
【０００６】
しかしながら、ＥＣＢモードは、ブロック単位での変更が同一セクタ内の他のブロックに影響を与えないため、データの並び替えや置き換えといった改ざん攻撃に対して極めて脆弱である。そのため、改ざんを検出するための機構が必要となる不都合がある。
【０００７】
一方、ＣＢＣ(Cipher Block Chaining)モード暗号化（非特許文献２参照）は、前ブロックの暗号文を平文に排他的論理和（以下、ＸＯＲ(exclusive or)）することにより、ブロック間で連鎖を行う方法であり、セクタ単位の暗号化に広く用いられている。特に、先頭のブロックの平文に対する連鎖値の初期値をＩＶ(initialization vector)）と呼ぶ。
【０００８】
しかしながら、ＣＢＣモード暗号化には、変更のあったブロックの直後のブロックにしか変更の影響が波及しないことによる脆弱性や、初期値ＩＶが既知あるいは予測可能な場合に改ざんが容易である脆弱性や、処理の並列性に課題があることが知られている。
【０００９】
これらＥＣＢモードやＣＢＣモードなどは総称して暗号利用モードと呼ばれる。このような暗号利用モードは、さまざまなものが提案されている。例えば、ＯＣＢ(Offset Codebook)（非特許文献３及び特許文献２参照）、ＥＭＤ(Encipher/Mask/Decipher)及びＥＭＥ(ECB/Mask/ECB)とＣＭＣ(CBC/Mask/CBC)（特許文献１参照）、ＬＲＷ(Liskov - Rivest - Wagner)（非特許文献４参照）及びＣＣＭ(counter with cipher block chaining-message authentication code)（非特許文献５参照）などの暗号利用モードが考案されている。
【００１０】
データの秘匿を含む暗号利用モードは、データの秘匿を目的とする手法と、秘匿に加え改ざん検出機能を備えた方法に大別される。改ざん検出機能を実現する場合、暗号化による秘匿に加え改ざんを検出するためのデータが必要となるため、一般にデータ量が増加する。ブロックデバイスにおいては、データの管理単位であるセクタの大きさが固定であるため、暗号処理によるデータ量の増加は望ましくない。このため、データ量を増加させずに、データの秘匿を目的とする手法が用いられる。ＥＭＤ及びＥＭＥとＣＭＣ、ＬＲＷは暗号化対象のデータ量と比較して暗号化後のデータ量が増加しないため、セクタ単位での暗号化に適している。
【００１１】
ＥＭＤは、暗号化処理Ｅにより求めた中間値を攪拌処理Ｍで攪拌し、攪拌した中間値に復号処理Ｄを行うことにより、共通鍵ブロック暗号の処理をセクタ単位に広げる暗号利用モードである。ＥＭＤの暗号処理には、tweakと呼ばれる公開情報に基づいて、暗号処理の内部データの一部を変更し、セクタ間での複製を困難とする機構が備わっている。ＥＭＤは、ＮＲ(Naor - Reingold)モード（非特許文献７，８）の概念を具体化したモデルである。ＥＭＤの実現方法としては、暗号化処理Ｅと復号処理ＤにそれぞれＥＣＢモードによる暗号化を使用するＥＭＥモードと、それぞれＣＢＣモードによる暗号化を使用するＣＭＣモードが知られている。
【００１２】
図１９は従来の暗号化装置により実行されるＥＭＥモードの暗号化処理を説明するための模式図である。ここで、暗号化処理Ｅk１，Ｅk１１〜Ｅk１４，Ｅk２１，Ｅk３１〜Ｅk３４は、例えば１６バイトをブロックとした、共通鍵ｋに基づくＡＥＳ暗号処理である。ここでは、６４バイトのデータの処理について説明する。
【００１３】
最初に、暗号化装置は、入力データにラベルＬによるマスクとＥＣＢモードによる暗号化処理ＥＣＢ１を行う。すなわち、暗号化装置は、６４バイトの入力データを各１６バイトずつ４つのブロックＰ1，Ｐ2，Ｐ3，Ｐ4に分割し、それぞれラベルＬ、２Ｌ、４Ｌ、８Ｌとの排他的論理和XOR11〜XOR14を計算する。
【００１４】
ここで、ラベルＬは、図２０に示すように、１２８ビットの０データを暗号化処理Ｅk１で暗号化した出力を、ガロア体ＧＦ（２128）上でｘ倍演算“xtime128()”処理xt1した結果である。ラベル２Ｌは、１２８ビットのラベルＬをガロア体ＧＦ（２128）上でｘ倍演算“xtime128()”処理xt2した結果である。以下同様に、ラベル４Ｌは、１２８ビットのラベル２Ｌをガロア体ＧＦ（２128）上でｘ倍演算“xtime128()”処理xt3した結果であり、ラベル８Ｌは、１２８ビットのラベル４Ｌをガロア体ＧＦ（２128）上でｘ倍演算“xtime128()”処理xt4した結果である。
【００１５】
また、暗号化装置は、４つの排他的論理和XOR11〜XOR14の計算結果に対して個別に暗号化処理Ｅk１１〜１４を実行し、４つの暗号化結果を出力する。
【００１６】
次に、暗号化装置は、これら４つの暗号化結果と、セクタ毎に異なる非秘密情報Ｔとの排他的論理和XOR21を計算する。
【００１７】
次に、暗号化装置は、排他的論理和XOR21の計算結果を暗号化処理Ｅk３１により暗号化し、得られた暗号化結果と、暗号化前の排他的論理和XOR21の計算結果との排他的論理和XOR31を計算し、排他的論理和XOR31の計算結果としての中間値Ｍを得る。
【００１８】
また、暗号化装置は、前述したラベル２Ｌ〜８Ｌと同様に、中間値Ｍにガロア体ＧＦ（２128）上のｘ倍演算“xtime128()”を適用し、中間値２Ｍ，４Ｍ，８Ｍを得る。すなわち、中間値２Ｍは、１２８ビットの中間値Ｍをガロア体ＧＦ（２128）上でｘ倍演算“xtime128()”処理した結果であり、中間値４Ｍは、１２８ビットの中間値２Ｍをガロア体ＧＦ（２128）上でｘ倍演算“xtime128()”処理した結果である。中間値８Ｍは、１２８ビットの中間値４Ｍをガロア体ＧＦ（２128）上でｘ倍演算“xtime128()”処理した結果である。
【００１９】
暗号化装置は、これら中間値２Ｍ，４Ｍ，８Ｍと、暗号化処理Ｅk１２，Ｅk１３，Ｅk１４との排他的論理和XOR42，XOR43，XOR44を個別に計算する。
【００２０】
次に、暗号化装置は、セクタ毎に異なる非秘密情報Ｔと、これら３つの排他的論理和XOR42，XOR43，XOR44の計算結果との排他的論理和XOR51を計算する。
【００２１】
次に、暗号化装置は、この排他的論理和XOR51の計算結果と、３つの排他的論理和XOR42，XOR43，XOR44の計算結果とに対し、個別に暗号化処理Ｅk３１〜Ｅk３４を実行し、得られた４つの暗号化結果と、４つのラベルＬ，２Ｌ，４Ｌ，８Ｌの排他的論理和XOR61〜XOR64を計算する。最後に、暗号化装置は、４つの排他的論理和XOR61〜XOR64の計算結果を各１６バイトずつ４つのブロックＣ1〜Ｃ4に分配し、ＥＭＥモードの暗号化出力、すなわち暗号文とする。
【００２２】
図２１は従来の復号装置により実行されるＥＭＥモードの復号処理を説明するための模式図であり、図１９に示した暗号化処理に比べ、入力が暗号文Ｃ1〜Ｃ4であり、出力が平文Ｐ1〜Ｐ4である点と、暗号化処理Ｅk１１〜Ｅk１４，Ｅk２１，Ｅk３１〜Ｅk３４に代えて、復号処理Ｄk１１〜Ｄk１４，Ｄk２１，Ｄk３１〜Ｄk３４を行う点とが異なる。ここで、復号処理Ｄk１１〜Ｄk１４，Ｄk２１，Ｄk３１〜Ｄk３４は、例えば１６バイトをブロックとした、共通鍵ｋに基づくＡＥＳ復号処理である。
【００２３】
図２２は従来の暗号化装置により実行されるＣＭＣモードの暗号化処理を説明するための模式図である。ここで、暗号化処理Ｅk１１〜Ｅk１４，Ｅk４１〜Ｅk４４は、前述同様に、例えば１６バイトをブロックとした、共通鍵ｋに基づくＡＥＳ暗号処理である。ここでは、６４バイトのデータの処理について説明する。
【００２４】
最初に、暗号化装置は、暗号化処理ＣＢＣ１において、入力データをＣＢＣモードで暗号化する。すなわち、暗号化装置は、６４バイトの入力データを各１６バイトずつ４つのブロックＰ1〜Ｐ4に分割し、先頭のブロックＰ1の暗号化処理Ｅk１１を実行し、暗号化結果を出力する。なお、先頭のブロックＰ1は、前ブロックがないため、暗号化処理Ｅk１１前の排他的論理和が省略される。
【００２５】
暗号化装置は、暗号化処理Ｅk１１による暗号化結果と、次のブロックＰ2との排他的論理和XOR12を計算し、この計算結果の暗号化処理Ｅk１２を実行し、暗号化結果を出力する。
【００２６】
同様に、暗号化装置は、暗号化処理Ｅk１２，Ｅk１３による暗号化結果と、次のブロックＰ3，Ｐ4との排他的論理和XOR13，XOR14を計算し、この計算結果の暗号化処理Ｅk１３，Ｅk１４を実行し、暗号化結果を出力する。
【００２７】
また、暗号化装置は、先頭のブロックＰ1に対する暗号化処理Ｅk１１による暗号化結果と、末尾のブロックＰ4に対する暗号化処理Ｅk１４による暗号化結果との排他的論理和XOR24を計算し、計算結果をガロア体ＧＦ（２128）上でｘ倍演算“xtime128()”処理xt24した結果として中間値Ｍを得る。
【００２８】
次に、暗号化装置は、中間値マスク処理XOR-Mにおいて、各暗号化処理Ｅk１１〜Ｅk１４による暗号化結果と、中間値Ｍとの排他的論理和XOR31〜XOR34を個別に計算し、計算結果を出力する。
【００２９】
次に、暗号化装置は、暗号化処理ＣＢＣ２において、逆方向にＣＢＣモードで復号相当の処理を行う。但し、一般のＣＢＣモードによる復号処理の場合とは異なり、暗号化処理Ｅk４１〜Ｅk４４を実行する。
【００３０】
具体的には暗号化装置は、先頭のブロックにおける排他的論理和XOR31の計算結果の暗号化処理Ｅk４１を実行し、この暗号化結果と、次のブロックの排他的論理和XOR32の計算結果との排他的論理和XOR41を計算し、この計算結果を暗号文Ｃ4として出力する。
【００３１】
同様に、暗号化装置は、排他的論理和XOR32，XOR33の計算結果に対する暗号化処理Ｅk４２，Ｅk４３による暗号化結果と、次のブロックの排他的論理和XOR33，XOR34の計算結果との排他的論理和XOR42，XOR43を計算し、この計算結果を暗号文Ｃ3，Ｃ2として出力する。
【００３２】
また、暗号化装置は、末尾のブロックにおける排他的論理和XOR34の計算結果の暗号化処理Ｅk４４を実行し、この暗号化結果を暗号文Ｃ1として出力する。
【００３３】
図２３は従来の復号装置により実行されるＣＭＣモードの復号処理を説明するための模式図であり、図２２に示した暗号化処理に比べ、入力が暗号文Ｃ1〜Ｃ4であり、出力が平文Ｐ4〜Ｐ1である点と、暗号化処理Ｅk１１〜Ｅk１４，Ｅk４１〜Ｅk４４に代えて、復号処理Ｄk１１〜Ｄk１４，Ｄk４１〜Ｄk４４を行う点とが異なる。ここで、復号処理Ｄk１１〜Ｄk１４，Ｄk４１〜Ｄk４４は、例えば１６バイトをブロックとした、共通鍵ｋに基づくＡＥＳ復号処理である。
【００３４】
ＣＭＣモードは、従来のＣＢＣモードによる暗号化処理ＣＢＣ１，ＣＢＣ２を順方向と逆方向の２度繰り返す構造であり、処理のパイプライン化による並列処理が困難であるという不都合と、一般にＥＣＢモードに比べて低速であるＣＢＣモードを２度繰り返すため、安全性が向上する代償として速度が低下するという不都合がある。
【００３５】
また、ＥＭＥモードは、従来のＥＣＢモードによる暗号化処理ＥＣＢ１，ＥＣＢ２を２度繰り返す構造に、攪拌用の１回の暗号化処理Ｅk３１と、マスクによるデータランダム化用の１回の事前計算処理（Mask2n-1M）を加えた構造であり、安全性が向上する代償として速度が低下する不都合がある。
【００３６】
一方、処理を効率化する観点から、データ処理をビット単位で並列化容易な構成とする実装手法として、ビットスライス手法が知られている。ビットスライス手法は、ＥＣＢモードによる暗号処理に対し、従来のデータ処理同様に適用可能であることが非特許文献６などで知られている（なお、非特許文献６では、ビットスライスとは呼ばず、ＳＩＭＤ(Single Instruction for Multiple Data)実装と呼んでいる。）。
【００３７】
また、ビットスライス手法は、ＥＭＥモード内部のＥＣＢモードによる暗号処理相当部分にも適用可能である。
【００３８】
しかしながら、ビットスライス手法をＥＣＢモードによる暗号処理相当部分に適用する場合、ＥＭＥモードの入出力及び、内部の攪拌処理の前後でビットスライス用のデータ表現に変換する処理を追加する必要があるので、ＥＭＥモード全体の処理が複雑となり、ビットスライス手法による効率化の利点を発揮できないという不都合がある。
【非特許文献１】米国標準技術研究所 (National Institute of Standards and Technology): “Advanced Encryption Standard”, Federal Information Processing Standards 197, 2001
【非特許文献２】米国標準技術研究所 (National Institute of Standards and Technology): “Recommendation for Block Cipher Modes of Operation - Methods and Techniques”, NIST Special Publication 800-38A 2001 Edition, 2001.
【非特許文献３】P. Rogaway, M. Bellare, J. Bloack, and T. Krovetz. “OCB: A Block-Cipher Mode of Operation for Efficient Authenticated Encryption. “ACM Transactions on Information and System Security (TISSEC), vol. 6, no. 3, pp. 365-403, August 2003.
【非特許文献４】M. Liskov, R. Rivest, and D.Wagner. “Tweakable block ciphers”, In Advances in Cryptology−CRYPTO ’02, Lecture Notes in Computer Science. Springer-Verlag, 2002.
【非特許文献５】米国標準技術研究所 (National Institute of Standards and Technology): “Recommendation for Block Cipher Modes of Operation: the CCM Mode for Authentication and Confidentiality”, NIST Special Publication 800-38C 2007.
【非特許文献６】E.Biham, A fast new DES implementation in software, Proc. Fast Software Encryption, Lecture Notes in Computer Science, Springer-Verlang, 1997.
【非特許文献７】M.Naor and O.Reingold “On the Construction of Pseudo-Random Permutations: Luby-Rackoff Revisited”, Journal of Cryptography vol.12 no.1, pp 29-66, 1999.
【非特許文献８】M.Naor and O.Reingold “A pseudo-random encrypt mode”(Naors'web)
【特許文献１】米国公開特許ＵＳ２００４／０１３１１８２  Ａ１
【特許文献２】米国登録特許ＵＳ７，０４６，８０２  Ｂ２
【発明の開示】
【発明が解決しようとする課題】
【００３９】
以上説明したように、ＥＭＥモード及びＣＭＣモードは、攪拌処理と２重の暗号化処理を備えた構造により、安全性が向上する代償として、処理効率及び速度が低下している。
【００４０】
また、ＥＣＢモードを内部に含むＥＭＥモードにおいては、ビットスライス手法によるＥＣＢモードの効率化を図ると、ＥＭＥモード全体の処理が複雑となり、ビットスライス手法による効率化の利点を発揮できないという不都合がある。
【００４１】
本発明は上記実情を考慮してなされたもので、従来のＥＭＥモードと同等の安全性を実現しつつ、全体の処理を効率化し得る暗号化装置及び復号装置を提供することを目的とする。
【課題を解決するための手段】
【００４２】
本発明の第１の局面は、ビットスライス手法による共通鍵暗号方式を用いた暗号化装置であって、前記共通鍵暗号方式の共通鍵ｋ及び非秘密情報Ｔを記憶する記憶手段と、前記記憶手段内の共通鍵ｋに基づいて、ｍ個の互いに異なる第１マスクデータＬ，２Ｌ，…，２m-1Ｌを生成する第１マスクデータ生成手段と、平文データをブロックＰ1，Ｐ2，…，Ｐm毎に分割して得られたｍ個のブロックＰ1，Ｐ2，…，Ｐmと、前記各第１マスクデータＬ，２Ｌ，…，２m-1Ｌとの排他的論理和を個別に計算し、当該ブロック毎の計算結果を得る第１の排他的論理和計算手段と、前記ブロック毎の計算結果に対し、前記ビットスライス手法によるビットスライス変換を実行し、ブロック毎のビットスライス変換結果を得るビットスライス変換手段と、前記ブロック毎のビットスライス変換結果に対し、前記記憶手段内の共通鍵ｋに基づいて前記ビットスライス手法による暗号化処理を実行し、当該ブロック毎の暗号化結果を得る第１のビットスライス暗号化手段と、前記ブロック毎の全ての暗号化結果と、前記非秘密情報Ｔとの排他的論理和を計算し、計算結果を得る第２の排他的論理和計算手段と、前記第２の排他的論理和計算手段の計算結果に対し、前記記憶手段内の共通鍵ｋに基づいて暗号化処理を実行し、暗号化結果を得る暗号化手段と、前記第２の排他的論理和計算手段の計算結果と、前記暗号化手段の暗号化結果との排他的論理和を計算し、計算結果Ｍを得る第３の排他的論理和計算手段と、前記第３の排他的論理和計算手段の計算結果Ｍに基づいて、ｍ−１個の互いに異なる第２マスクデータ２Ｍ，４Ｍ，…，２m-1Ｍを生成する第２マスクデータ生成手段と、前記第１のビットスライス暗号化手段における２番目乃至ｍ番目のブロック毎の暗号化結果と、前記各第２マスクデータ２Ｍ，４Ｍ，…，２m-1Ｍとの排他的論理和を個別に計算し、当該ブロック毎の計算結果を得る第４の排他的論理和計算手段と、前記第４の排他的論理和計算手段により得られたブロック毎の計算結果と、前記非秘密情報Ｔとの排他的論理和を計算し、新たな計算結果を得る第５の排他的論理和計算手段と、前記第５の排他的論理和計算手段により得られた計算結果と、前記第４の排他的論理和計算手段により得られたブロック毎の計算結果とに対し、前記記憶手段内の共通鍵ｋに基づいて前記ビットスライス手法による暗号化処理を実行し、ブロック毎の暗号化結果を得る第２のビットスライス暗号化手段と、前記第２のビットスライス暗号化手段により得られたブロック毎の暗号化結果に対し、前記ビットスライス手法によるビットスライス逆変換を実行し、当該ブロック毎のビットスライス逆変換結果を得るビットスライス逆変換手段と、前記ブロック毎のビットスライス逆変換結果と、前記各第１マスクデータＬ，２Ｌ，…，２m-1Ｌとの排他的論理和を個別に計算し、得られたブロック毎の計算結果を暗号文データとして出力する第６の排他的論理和計算手段と、を備えた暗号化装置である。
【００４３】
本発明の第２の局面は、ビットスライス手法による共通鍵暗号方式を用いた暗号化装置であって、前記共通鍵暗号方式の共通鍵ｋ及び非秘密情報Ｔを記憶する記憶手段と、前記記憶手段内の共通鍵ｋに基づいて、ｍ個の互いに異なる第１マスクデータＬ，２Ｌ，…，２m-1Ｌを生成する第１マスクデータ生成手段と、平文データをブロックＰ1，Ｐ2，…，Ｐm毎に分割して得られたｍ個のブロックＰ1，Ｐ2，…，Ｐmと、前記各第１マスクデータＬ，２Ｌ，…，２m-1Ｌとの排他的論理和を個別に計算し、当該ブロック毎の計算結果を得る第１の排他的論理和計算手段と、前記ブロック毎の計算結果に対し、前記記憶手段内の共通鍵ｋに基づいて前記ビットスライス手法による暗号化処理を実行し、当該ブロック毎の暗号化結果を得る第１のビットスライス暗号化手段と、前記ブロック毎の全ての暗号化結果と、前記非秘密情報Ｔとの排他的論理和を計算し、計算結果を得る第２の排他的論理和計算手段と、前記第２の排他的論理和計算手段の計算結果に対し、前記記憶手段内の共通鍵ｋに基づいて暗号化処理を実行し、暗号化結果を得る暗号化手段と、前記第２の排他的論理和計算手段の計算結果と、前記暗号化手段の暗号化結果との排他的論理和を計算し、計算結果Ｍを得る第３の排他的論理和計算手段と、前記第３の排他的論理和計算手段の計算結果Ｍに基づいて、ｍ−１個の互いに異なる第２マスクデータ２Ｍ，４Ｍ，…，２m-1Ｍを生成する第２マスクデータ生成手段と、前記第１のビットスライス暗号化手段における２番目乃至ｍ番目のブロック毎の暗号化結果と、前記各第２マスクデータ２Ｍ，４Ｍ，…，２m-1Ｍとの排他的論理和を個別に計算し、当該ブロック毎の計算結果を得る第４の排他的論理和計算手段と、前記第４の排他的論理和計算手段により得られたブロック毎の計算結果と、前記非秘密情報Ｔとの排他的論理和を計算し、計算結果を得る第５の排他的論理和計算手段と、前記第５の排他的論理和計算手段により得られた計算結果と、前記第４の排他的論理和計算手段により得られたブロック毎の計算結果とに対し、前記記憶手段内の共通鍵ｋに基づいて前記ビットスライス手法による暗号化処理を実行し、ブロック毎の暗号化結果を得る第２のビットスライス暗号化手段と、前記第２のビットスライス暗号化手段により得られたブロック毎の暗号化結果と、前記各第１マスクデータＬ，２Ｌ，…，２m-1Ｌとの排他的論理和を個別に計算し、得られたブロック毎の計算結果を暗号文データとして出力する第６の排他的論理和計算手段と、を備えた暗号化装置である。
【００４４】
本発明の第３の局面は、共通鍵暗号方式を用いた暗号化装置であって、前記共通鍵暗号方式の共通鍵ｋ及び非秘密情報Ｔを記憶する記憶手段と、前記記憶手段内の共通鍵ｋに基づいて、ｍ個の互いに異なる第１マスクデータＬ，２Ｌ，…，２m-1Ｌを生成する第１マスクデータ生成手段と、前記各第１マスクデータＬ，２Ｌ，…，２m-1Ｌのうちの１番目の第１マスクデータＬと、前記非秘密情報Ｔとの排他的論理和を計算し、計算結果を得る第１の排他的論理和計算手段と、前記第１の排他的論理和計算手段により得られた計算結果と、平文データをブロックＰ1，Ｐ2，…，Ｐm毎に分割して得られたｍ個のブロックＰ1，Ｐ2，…，Ｐmのうちの２番目乃至ｍ番目のブロックＰ2，Ｐ3，…，Ｐmとに基づいてハッシュ関数を計算し、ハッシュ値を得るハッシュ関数計算手段と、前記ｍ個のブロックＰ1，Ｐ2，…，Ｐmのうちの１番目のブロックＰ1と、前記ハッシュ値と、前記非秘密情報Ｔとの排他的論理和を計算し、計算結果Ｕを得る第２の排他的論理和計算手段と、前記第２の排他的論理和計算手段の計算結果Ｕに基づいて、ｍ−２個の互いに異なる第２マスクデータ２Ｕ，…，２m-2Ｕを生成する第２マスクデータ生成手段と、前記２番目乃至ｍ番目のブロックＰ2，Ｐ3，…，Ｐmと、前記計算結果Ｕ及び前記各第２マスクデータ２Ｕ，…，２m-2Ｕとの排他的論理和を個別に計算し、当該ブロック毎の計算結果を得る第３の排他的論理和計算手段と、前記第２の排他的論理和計算手段の計算結果Ｕに対し、前記記憶手段内の共通鍵ｋに基づいて暗号化処理を実行し、暗号化結果Ｍを得る第１の暗号化手段と、前記第１の暗号化手段の暗号化結果Ｍに基づいて、ｍ−１個の互いに異なる第３マスクデータ２Ｍ，４Ｍ，…，２m-1Ｍを生成する第３マスクデータ生成手段と、前記第３の排他的論理和計算手段により得られたブロック毎の計算結果と、前記各第３マスクデータ２Ｍ，４Ｍ，…，２m-1Ｍとの排他的論理和を個別に計算し、当該ブロック毎の新たな計算結果を得る第４の排他的論理和計算手段と、前記第４の排他的論理和計算手段により得られたブロック毎の計算結果と、前記非秘密情報Ｔとの排他的論理和を計算し、計算結果を得る第５の排他的論理和計算手段と、前記第５の排他的論理和計算手段により得られた計算結果と、前記第４の排他的論理和計算手段により得られたブロック毎の計算結果とに対し、前記記憶手段内の共通鍵ｋに基づいて暗号化処理を実行し、ブロック毎の暗号化結果を得る第２の暗号化手段と、前記第２の暗号化手段により得られたブロック毎の暗号化結果と、前記各第１マスクデータＬ，２Ｌ，…，２m-1Ｌとの排他的論理和を個別に計算し、得られたブロック毎の計算結果を暗号文データとして出力する第６の排他的論理和計算手段と、を備えた暗号化装置である。
【００４５】
本発明の第４の局面は、ビットスライス手法による共通鍵暗号方式を用いた復号装置であって、前記共通鍵暗号方式の共通鍵ｋ及び非秘密情報Ｔを記憶する記憶手段と、前記記憶手段内の共通鍵ｋに基づいて、ｍ個の互いに異なる第１マスクデータＬ，２Ｌ，…，２m-1Ｌを生成する第１マスクデータ生成手段と、暗号文データをブロックＣ1，Ｃ2，…，Ｃm毎に分割して得られたｍ個のブロックＣ1，Ｃ2，…，Ｃmと、前記各第１マスクデータＬ，２Ｌ，…，２m-1Ｌとの排他的論理和を個別に計算し、当該ブロック毎の計算結果を得る第１の排他的論理和計算手段と、前記ブロック毎の計算結果に対し、前記ビットスライス手法によるビットスライス逆変換を実行し、ブロック毎のビットスライス逆変換結果を得るビットスライス逆変換手段と、前記ブロック毎のビットスライス逆変換結果に対し、前記記憶手段内の共通鍵ｋに基づいて前記ビットスライス手法による復号処理を実行し、当該ブロック毎の復号結果を得る第１のビットスライス復号手段と、前記ブロック毎の全ての復号結果と、前記非秘密情報Ｔとの排他的論理和を計算し、計算結果を得る第２の排他的論理和計算手段と、前記第２の排他的論理和計算手段の計算結果に対し、前記記憶手段内の共通鍵ｋに基づいて復号処理を実行し、復号結果を得る復号手段と、前記第２の排他的論理和計算手段の計算結果と、前記復号手段の復号結果との排他的論理和を計算し、計算結果Ｍを得る第３の排他的論理和計算手段と、前記第３の排他的論理和計算手段の計算結果Ｍに基づいて、ｍ−１個の互いに異なる第２マスクデータ２Ｍ，４Ｍ，…，２m-1Ｍを生成する第２マスクデータ生成手段と、前記第１のビットスライス復号手段における２番目乃至ｍ番目のブロック毎の復号結果と、前記各第２マスクデータ２Ｍ，４Ｍ，…，２m-1Ｍとの排他的論理和を個別に計算し、当該ブロック毎の計算結果を得る第４の排他的論理和計算手段と、前記第４の排他的論理和計算手段により得られたブロック毎の計算結果と、前記非秘密情報Ｔとの排他的論理和を計算し、新たな計算結果を得る第５の排他的論理和計算手段と、前記第５の排他的論理和計算手段により得られた計算結果と、前記第４の排他的論理和計算手段により得られたブロック毎の計算結果とに対し、前記記憶手段内の共通鍵ｋに基づいて前記ビットスライス手法による復号処理を実行し、ブロック毎の復号結果を得る第２のビットスライス復号手段と、前記第２のビットスライス復号手段により得られたブロック毎の復号結果に対し、前記ビットスライス手法によるビットスライス変換を実行し、当該ブロック毎のビットスライス変換結果を得るビットスライス変換手段と、前記ブロック毎のビットスライス変換結果と、前記各第１マスクデータＬ，２Ｌ，…，２m-1Ｌとの排他的論理和を個別に計算し、得られたブロック毎の計算結果を平文データとして出力する第６の排他的論理和計算手段と、を備えた復号装置である。
【００４６】
本発明の第５の局面は、ビットスライス手法による共通鍵暗号方式を用いた復号装置であって、前記共通鍵暗号方式の共通鍵ｋ及び非秘密情報Ｔを記憶する記憶手段と、前記記憶手段内の共通鍵ｋに基づいて、ｍ個の互いに異なる第１マスクデータＬ，２Ｌ，…，２m-1Ｌを生成する第１マスクデータ生成手段と、暗号文データをブロックＣ1，Ｃ2，…，Ｃm毎に分割して得られたｍ個のブロックＣ1，Ｃ2，…，Ｃmと、前記各第１マスクデータＬ，２Ｌ，…，２m-1Ｌとの排他的論理和を個別に計算し、当該ブロック毎の計算結果を得る第１の排他的論理和計算手段と、前記ブロック毎の計算結果に対し、前記記憶手段内の共通鍵ｋに基づいて前記ビットスライス手法による復号処理を実行し、当該ブロック毎の暗号化結果を得る第１のビットスライス復号手段と、前記ブロック毎の全ての復号結果と、前記非秘密情報Ｔとの排他的論理和を計算し、計算結果を得る第２の排他的論理和計算手段と、前記第２の排他的論理和計算手段の計算結果に対し、前記記憶手段内の共通鍵ｋに基づいて復号処理を実行し、復号結果を得る暗号化手段と、前記第２の排他的論理和計算手段の計算結果と、前記復号手段の復号結果との排他的論理和を計算し、計算結果Ｍを得る第３の排他的論理和計算手段と、前記第３の排他的論理和計算手段の計算結果Ｍに基づいて、ｍ−１個の互いに異なる第２マスクデータ２Ｍ，４Ｍ，…，２m-1Ｍを生成する第２マスクデータ生成手段と、前記第１のビットスライス復号手段における２番目乃至ｍ番目のブロック毎の復号結果と、前記各第２マスクデータ２Ｍ，４Ｍ，…，２m-1Ｍとの排他的論理和を個別に計算し、当該ブロック毎の計算結果を得る第４の排他的論理和計算手段と、前記第４の排他的論理和計算手段により得られたブロック毎の計算結果と、前記非秘密情報Ｔとの排他的論理和を計算し、計算結果を得る第５の排他的論理和計算手段と、前記第５の排他的論理和計算手段により得られた計算結果と、前記第４の排他的論理和計算手段により得られたブロック毎の計算結果とに対し、前記記憶手段内の共通鍵ｋに基づいて前記ビットスライス手法による復号処理を実行し、ブロック毎の復号結果を得る第２のビットスライス復号手段と、前記第２のビットスライス復号手段により得られたブロック毎の復号結果と、前記各第１マスクデータＬ，２Ｌ，…，２m-1Ｌとの排他的論理和を個別に計算し、得られたブロック毎の計算結果を平文データとして出力する第６の排他的論理和計算手段と、を備えた復号装置である。
【００４７】
本発明の第６の局面は、共通鍵暗号方式を用いた復号装置であって、前記共通鍵暗号方式の共通鍵ｋ及び非秘密情報Ｔを記憶する記憶手段と、前記記憶手段内の共通鍵ｋに基づいて、ｍ個の互いに異なる第１マスクデータＬ，２Ｌ，…，２m-1Ｌを生成する第１マスクデータ生成手段と、暗号文データをブロックＣ1，Ｃ2，…，Ｃm毎に分割して得られたｍ個のブロックＣ1，Ｃ2，…，Ｃmと、前記各第１マスクデータＬ，２Ｌ，…，２m-1Ｌとの排他的論理和を個別に計算し、当該ブロック毎の計算結果を得る第１の排他的論理和計算手段と、前記第１の排他的論理和計算手段により得られたブロック毎の計算結果に対し、前記記憶手段内の共通鍵ｋに基づいて復号処理を実行し、ブロック毎の復号結果を得る第１の復号手段と、前記第１の復号手段により得られたブロック毎の復号結果と、前記非秘密情報Ｔとの排他的論理和を計算し、計算結果Ｍを得る第２の排他的論理和計算手段と、前記第２の排他的論理和計算手段の計算結果Ｍに基づいて、ｍ−１個の互いに異なる第２マスクデータ２Ｍ，４Ｍ，…，２m-1Ｍを生成する第２マスクデータ生成手段と、前記第１の復号手段により得られた復号結果のうちの２番目乃至ｍ番目のブロックに対応する復号結果と、前記各第２マスクデータ２Ｍ，４Ｍ，…，２m-1Ｍとの排他的論理和を個別に計算し、当該ブロック毎の新たな計算結果を得る第３の排他的論理和計算手段と、前記第２の排他的論理和計算手段の計算結果Ｍに対し、前記記憶手段内の共通鍵ｋに基づいて復号処理を実行し、復号結果Ｕを得る第２の復号手段と、前記第２の復号手段の復号結果Ｕに基づいて、ｍ−２個の互いに異なる第３マスクデータ２Ｕ，…，２m-2Ｕを生成する第３マスクデータ生成手段と、前記第３の排他的論理和計算手段により得られたブロック毎の計算結果と、前記計算結果Ｕ及び前記各第３マスクデータ２Ｕ，…，２m-2Ｕとの排他的論理和を個別に計算し、当該ブロック毎の新たな計算結果を得る第４の排他的論理和計算手段と、前記各第１マスクデータＬ，２Ｌ，…，２m-1Ｌのうちの１番目の第１マスクデータＬと、前記非秘密情報Ｔとの排他的論理和を計算し、計算結果を得る第５の排他的論理和計算手段と、前記第５の排他的論理和計算手段により得られた計算結果と、前記第４の排他的論理和計算手段により得られたブロック毎の計算結果とに基づいてハッシュ関数を計算し、ハッシュ値を得るハッシュ関数計算手段と、前記第２の復号手段の復号結果Ｕと、前記ハッシュ値と、前記非秘密情報Ｔとの排他的論理和を計算し、計算結果を得る第６の排他的論理和計算手段と、前記第６の排他的論理和計算手段により得られた計算結果と、前記第４の排他的論理和計算手段により得られたブロック毎の計算結果とを平文データとして出力する手段と、を備えた復号装置である。
【００４８】
なお、第１乃至第６の局面は、「装置」として表現したが、これに限らず、「プログラム」、「プログラムを記憶したコンピュータ読み取り可能な記憶媒体」又は「方法」として表現してもよい。
【００４９】
（作用）
本発明の第１及び第４の局面によれば、従来のＥＭＥモードを削除すると共に、ビットスライス用表現への変換の一部を削除して効率化したビットスライス手法の暗号化処理あるいは復号処理を従来手法に組み合わせることにより、従来のＥＭＥモードと同等の安全性を実現しつつ、全体の処理を効率化することができる。
【００５０】
また、本発明の第２及び第５の局面によれば、第１の局面の暗号化装置及び復号装置がそれぞれビットスライス変換手段とビットスライス逆変換手段を省略した構成により、第１の局面に対応する作用に加え、安全性を低下させることなく、より一層、全体の処理を効率化できることができる。
【００５１】
さらに、本発明の第３及び第６の局面によれば、ハッシュ関数計算手段と、内部データの攪拌手段としての第３及び第４の排他的論理和手段と、第２の暗号化手段あるいは第１の復号手段を組み合わせることにより、従来のＥＭＥモードと同等の安全性を実現しつつ、全体の処理を効率化することができる。
【発明の効果】
【００５２】
以上説明したように本発明によれば、従来のＥＭＥモードと同等の安全性を実現しつつ、全体の処理を効率化できる。
【発明を実施するための最良の形態】
【００５３】
以下、本発明の各実施形態について図面を用いて説明する。なお、以下の各装置は、装置毎に、ハードウェア構成、又はハードウェア資源とソフトウェアとの組合せ構成のいずれでも実施可能となっている。組合せ構成のソフトウェアとしては、予めネットワーク又は記憶媒体から対応する装置のコンピュータにインストールされ、対応する装置の機能を実現させるためのプログラムが用いられる。また、以下の各実施形態は、平文データを暗号化してハードディスク装置に書き込む場合やハードディスク装置内の暗号文データを復号して出力する場合に限らず、平文データを暗号化してネットワークパケット通信を行う場合やネットワークパケット通信により受信した暗号パケットを復号する場合などにも適用可能である。また、暗号化装置及び復号装置は、別々の装置とする場合に限らず、１台の装置として設けてもよい。
【００５４】
（第１の実施形態）
図１は本発明の第１の実施形態に係る暗号化装置の構成を示す模式図である。この暗号化装置１０は、図１９に示したＥＣＢモードによる暗号化処理ＥＣＢ１，ＥＣＢ２に代えて、図２に示すように、ビットスライス変換処理ＢＳ、第１のビットスライス暗号化処理ＢＳ−Ｅk１、第２のビットスライス暗号化処理ＢＳ−Ｅk２及びビットスライス逆変換処理Ｉ−ＢＳを実行するものである。
【００５５】
具体的には、暗号化装置１０は、ＲＯＭ１１、ＲＡＭ１２、不揮発性メモリ１３、ＣＰＵ１４及び入出力部１５が互いにバス１６を介して接続された構成となっている。
【００５６】
ここで、ＲＯＭ１１は、ＣＰＵ１４から読出可能な読出専用メモリであり、暗号化装置１０のＯＳが予め記憶されている。
【００５７】
ＲＡＭ１２は、ＣＰＵ１４から読出／書込可能なランダムアクセスメモリであり、暗号化処理の前に不揮発性メモリ１３の記憶内容が書き込まれ、更に、平文データＰ、計算結果等といった処理中データ、暗号文データＣ等を一時的に保存するために用いられる。
【００５８】
不揮発性メモリ１３は、ＣＰＵ１４から読出／書込可能で電源オフ時にも記憶内容が消去されないメモリであり、例えば、外部の記憶媒体からインストールされた暗号化プログラムｅｐ、及び前述した公開情報tweakに相当する非秘密情報Ｔなどが予め記憶され、また、後述する外部の復号装置２０と共有する共通鍵ｋなどが適宜、記憶される。
【００５９】
なお、非秘密情報Ｔとしては、例えば不揮発性メモリ１３がハードディスク装置（mass-storage device）の場合、当該ハードディスク装置のセクタ毎に異なるセクタ番号（sector index）が使用可能となっている（例えば、特許文献１の第００１２−００１３段落参照。）。また、非秘密情報Ｔとしてセクタ番号が使用可能なことは、復号装置２０及び以下の各実施形態でも同様である。
【００６０】
ＣＰＵ１４は、入出力部１５から入力された平文データＰに対して暗号化処理を実行し、得られた暗号文データＣを入出力部１５から出力するものであり、具体的にはＲＡＭ１２を参照しながら暗号化プログラムｅｐに基づいて、図２、図３及び図２０に示す処理を実行する機能をもっている。
【００６１】
具体的にはＣＰＵ１４は、暗号化プログラムｅｐに基づく、以下の各機能(f14-1)〜(f14-14)をもっている。なお、「機能」を「処理」と呼び、「…機能をもっている」に代えて、「…処理を実行する」と述べてもよく、これは復号装置２０でも同様である。
【００６２】
(f14-1)  共通鍵暗号方式の共通鍵ｋ及び非秘密情報ＴをＲＡＭ１２に書き込む機能。
【００６３】
(f14-2)  ＲＡＭ１２内の共通鍵ｋに基づいて、ｍ個の互いに異なる第１マスクデータＬ，２Ｌ，…，２m-1Ｌを生成する第１マスクデータ生成機能（Ｅk１，xt1〜xt4；図２０）。補足すると、第１マスクデータ生成機能は、予め設定された変更可能な非秘密変数を、ＲＡＭ１２内の共通鍵ｋに基づいて暗号化し、暗号化結果を得る変数暗号化機能（Ｅk１）と、変数暗号化機能により得られた暗号化結果に有限体上の所定の演算処理をｍ回実行し、各回の実行結果として各第１マスクデータＬ，２Ｌ，…，２m-1Ｌを生成する演算機能（xt1〜xt4）と、を備えている。この演算機能における有限体上の所定の演算処理は、有限体上の乗算処理であり、ここではガロア体ＧＦ（２128）上のｘ倍演算“xtime128()”としている。また、本実施形態では、ｍ＝４個の場合を代表例に挙げて述べるが、ｍ＝４に限定されない。以上の第１マスクデータ生成機能の説明は、後述する復号装置２０と、以下の各実施形態でも同様である。
【００６４】
(f14-3)  平文データＰをブロックＰ1，Ｐ2，…，Ｐm毎に分割して得られたｍ個のブロックＰ1，Ｐ2，…，Ｐmと、各第１マスクデータＬ，２Ｌ，…，２m-1Ｌとの排他的論理和を個別に計算し、当該ブロック毎の計算結果を得る第１の排他的論理和計算機能（XOR11〜XOR14；図２）。
【００６５】
(f14-4)  このブロック毎の計算結果に対し、ビットスライス手法によるビットスライス変換を実行し、ブロック毎のビットスライス変換結果を得るビットスライス変換機能（ＢＳ；図２及び図３）。補足すると、ビットスライス変換機能は、従来のＥＣＢモードによる暗号化部分（ＥＣＢ１）を、ビットスライス手法により並列化するための機能であり、具体的には、各暗号化機能（Ｅk１１〜Ｅk１４）の入力ブロックの同じビット位置を集めて変数に格納するビットスライス処理用のビット表現に変換する機能である。ｍ＝４を例とすると、ビットスライス変換処理の入力は６４バイトであり、１変数をｍビット（すなわち４ビット）とする１２８個のビットスライス処理用のビット表現に変換される。なお、このビットスライス変換機能は、復号装置２０及び以下の各実施形態でも同様である。
【００６６】
(f14-5)  このブロック毎のビットスライス変換結果に対し、ＲＡＭ１２内の共通鍵ｋに基づいてビットスライス手法による暗号化処理を実行し、当該ブロック毎の暗号化結果を得る第１のビットスライス暗号化機能（ＢＳ−Ｅk１；図２）。なお、第１のビットスライス暗号化機能（ＢＳ−Ｅk１）は、ブロック単位の従来の暗号化機能（Ｅk）を並列化してセクタ単位で暗号化する機能に相当し、例えばＣＰＵが３２ビットの場合、１回に最大で３２ブロック分の並列計算を実行できる（なお、図３の例では、４ビットの１２８変数で４ブロック分の並列計算を実行できる。）。これは第２のビットスライス暗号化機能（ＢＳ−Ｅk２）及び以下の各実施形態でも同様である。
【００６７】
(f14-6)  このブロック毎の全ての暗号化結果と、ＲＡＭ１２内の非秘密情報Ｔとの排他的論理和を計算し、計算結果を得る第２の排他的論理和計算機能（XOR21；図２）。
【００６８】
(f14-7)  第２の排他的論理和計算機能による計算結果に対し、ＲＡＭ１２内の共通鍵ｋに基づいて暗号化処理を実行し、暗号化結果を得る暗号化機能(Ｅk２１；図２)。
【００６９】
(f14-8)  第２の排他的論理和計算機能による計算結果と、暗号化機能による暗号化結果との排他的論理和を計算し、計算結果Ｍを得る第３の排他的論理和計算機能（XOR31；図２）。
【００７０】
(f14-9)  第３の排他的論理和計算機能による計算結果Ｍに基づいて、ｍ−１個の互いに異なる第２マスクデータ２Ｍ，４Ｍ，…，２m-1Ｍを生成する第２マスクデータ生成機能（xt1〜xt4；図２０）。
【００７１】
(f14-10)  第１のビットスライス暗号化機能による２番目乃至ｍ番目のブロック毎の暗号化結果と、各第２マスクデータ２Ｍ，４Ｍ，…，２m-1Ｍとの排他的論理和を個別に計算し、当該ブロック毎の計算結果を得る第４の排他的論理和計算機能（XOR42〜XOR44；図２）。
【００７２】
(f14-11)  第４の排他的論理和計算手段により得られたブロック毎の計算結果と、ＲＡＭ１２内の非秘密情報Ｔとの排他的論理和を計算し、新たな計算結果を得る第５の排他的論理和計算機能（XOR51；図２）。
【００７３】
(f14-12)  第５の排他的論理和計算機能により得られた計算結果と、第４の排他的論理和計算機能により得られたブロック毎の計算結果とに対し、ＲＡＭ１２内の共通鍵ｋに基づいてビットスライス手法による暗号化処理を実行し、ブロック毎の暗号化結果を得る第２のビットスライス暗号化機能（ＢＳ−Ｅk２；図２）。
【００７４】
(f14-13)  第２のビットスライス暗号化機能により得られたブロック毎の暗号化結果に対し、ビットスライス手法によるビットスライス逆変換を実行し、当該ブロック毎のビットスライス逆変換結果を得るビットスライス逆変換機能（Ｉ−ＢＳ；図２及び図３）。補足すると、ビットスライス逆変換機能は、前述したビットスライス変換機能により得られたビットスライス処理用のビット表現を元のバイトまたビットの集まりに復元する機能である。なお、このビットスライス逆変換機能は、復号装置２０及び以下の各実施形態でも同様である。
【００７５】
(f14-14)  ブロック毎のビットスライス逆変換結果と、各第１マスクデータＬ，２Ｌ，…，２m-1Ｌとの排他的論理和を個別に計算し、得られたブロック毎の計算結果を暗号文データとして出力する第６の排他的論理和計算機能（XOR61〜XOR64；図２）。
【００７６】
入出力部１５は、図示しない外部装置と暗号化装置１０との間のデータ等の入出力機能や、暗号化装置１０を操作する操作者との間のユーザインタフェース機能をもっている。
【００７７】
一方、図４は同実施形態における復号装置の構成を示す模式図である。この復号装置２０は、図２１に示したＥＣＢモードによる復号処理Ｄk１１〜Ｄk１４，Ｄk３１〜Ｄk３４に代えて、図５に示すように、ビットスライス逆変換処理Ｉ−ＢＳ、第１のビットスライス復号処理ＢＳ−Ｄk１、第２のビットスライス復号処理ＢＳ−Ｄk２及びビットスライス変換処理ＢＳを実行するものである。
【００７８】
具体的には、復号装置２０は、ＲＯＭ２１、ＲＡＭ２２、不揮発性メモリ２３、ＣＰＵ２４及び入出力部２５が互いにバス２６を介して接続された構成となっている。
【００７９】
ここで、ＲＯＭ２１は、ＣＰＵ２４から読出可能な読出専用メモリであり、復号装置２０のＯＳが予め記憶されている。
【００８０】
ＲＡＭ２２は、ＣＰＵ２４から読出／書込可能なランダムアクセスメモリであり、復号処理の前に不揮発性メモリ２３の記憶内容が書き込まれ、更に、暗号文データＣ、計算結果等といった処理中データ、平文データＰ等を一時的に保存するために用いられる。
【００８１】
不揮発性メモリ２３は、ＣＰＵ２４から読出／書込可能で電源オフ時にも記憶内容が消去されないメモリであり、例えば、外部の記憶媒体からインストールされた復号プログラムｄｐ、及び公開情報tweakに相当する非秘密情報Ｔなどが予め記憶され、また、外部の暗号化装置１０と共有する共通鍵ｋなどが適宜、記憶される。
【００８２】
ＣＰＵ２４は、入出力部２５から入力された暗号部データＣに対して復号処理を実行し、得られた平文データＰを入出力部２５から出力するものであり、具体的にはＲＡＭ２２を参照しながら復号プログラムｓｐに基づいて、図５及び図２０に示す処理を実行する機能をもっている。
【００８３】
具体的にはＣＰＵ２４は、復号プログラムｄｐに基づく、以下の各機能(f24-1)〜(f24-14)をもっている。
【００８４】
(f24-1)  共通鍵暗号方式の共通鍵ｋ及び非秘密情報ＴをＲＡＭ２２に書き込む機能。
【００８５】
(f24-2)  ＲＡＭ１２内の共通鍵ｋに基づいて、ｍ個の互いに異なる第１マスクデータＬ，２Ｌ，…，２m-1Ｌを生成する第１マスクデータ生成機能（Ｅk１，xt1〜xt4；図２０）。この第１マスクデータ生成機能は、暗号装置１０の第１マスクデータ生成機能と同一の機能であり、前述同様に、予め設定された変更可能な非秘密変数を、ＲＡＭ２２内の共通鍵ｋに基づいて暗号化し、暗号化結果を得る変数暗号化機能（Ｅk１）と、変数暗号化機能により得られた暗号化結果に有限体上の所定の演算処理をｍ回実行し、各回の実行結果として各第１マスクデータＬ，２Ｌ，…，２m-1Ｌを生成する演算機能（xt1〜xt4）と、を備えている。この演算機能における有限体上の所定の演算処理は、有限体上の乗算処理であり、ここではガロア体ＧＦ（２128）上のｘ倍演算“xtime128()”としている。
【００８６】
(f24-3)  暗号文データをブロックＣ1，Ｃ2，…，Ｃm毎に分割して得られたｍ個のブロックＣ1，Ｃ2，…，Ｃmと、各第１マスクデータＬ，２Ｌ，…，２m-1Ｌとの排他的論理和を個別に計算し、当該ブロック毎の計算結果を得る第１の排他的論理和計算機能（XOR11〜XOR14；図５）。
【００８７】
(f24-4)  このブロック毎の計算結果に対し、ビットスライス手法によるビットスライス逆変換を実行し、ブロック毎のビットスライス逆変換結果を得るビットスライス逆変換機能（Ｉ−ＢＳ；図３及び図５）。
【００８８】
(f24-5)  このブロック毎のビットスライス逆変換結果に対し、ＲＡＭ２２内の共通鍵ｋに基づいてビットスライス手法による復号処理を実行し、当該ブロック毎の復号結果を得る第１のビットスライス復号機能（ＢＳ−Ｄk１；図５）。なお、第１のビットスライス復号機能（ＢＳ−Ｄk１）は、ブロック単位の従来の復号機能（Ｄk）を並列化してセクタ単位で復号する機能に相当する。これは第２のビットスライス復号機能（ＢＳ−Ｄk２）及び以下の各実施形態でも同様である。
【００８９】
(f24-6)  このブロック毎の全ての復号結果と、ＲＡＭ２２内の非秘密情報Ｔとの排他的論理和を計算し、計算結果を得る第２の排他的論理和計算機能（XOR21；図５）。
【００９０】
(f24-7)  第２の排他的論理和計算機能による計算結果に対し、ＲＡＭ２２内の共通鍵ｋに基づいて復号処理を実行し、復号結果を得る復号機能（Ｄk２１；図５）。
【００９１】
(f24-8)  第２の排他的論理和計算機能による計算結果と、復号機能による復号結果との排他的論理和を計算し、計算結果Ｍを得る第３の排他的論理和計算機能（XOR31；図５）。
【００９２】
(f24-9)  第３の排他的論理和計算機能による計算結果Ｍに基づいて、ｍ−１個の互いに異なる第２マスクデータ２Ｍ，４Ｍ，…，２m-1Ｍを生成する第２マスクデータ生成機能（xt1〜xt4；図２０）。
【００９３】
(f24-10)  第１のビットスライス復号機能による２番目乃至ｍ番目のブロック毎の復号結果と、各第２マスクデータ２Ｍ，４Ｍ，…，２m-1Ｍとの排他的論理和を個別に計算し、当該ブロック毎の計算結果を得る第４の排他的論理和計算機能（XOR42〜XOR44；図５）。
【００９４】
(f24-11)  第４の排他的論理和計算機能により得られたブロック毎の計算結果と、ＲＡＭ２２内の非秘密情報Ｔとの排他的論理和を計算し、新たな計算結果を得る第５の排他的論理和計算機能（XOR51；図５）。
【００９５】
(f24-12)  第５の排他的論理和計算機能により得られた計算結果と、第４の排他的論理和計算機能により得られたブロック毎の計算結果とに対し、ＲＡＭ２２内の共通鍵ｋに基づいてビットスライス手法による復号処理を実行し、ブロック毎の復号結果を得る第２のビットスライス復号機能（ＢＳ−Ｄk２；図５）。
【００９６】
(f24-13)  第２のビットスライス復号機能により得られたブロック毎の復号結果に対し、ビットスライス手法によるビットスライス変換を実行し、当該ブロック毎のビットスライス変換結果を得るビットスライス変換機能（ＢＳ；図５）。
【００９７】
(f24-14)  ブロック毎のビットスライス変換結果と、各第１マスクデータＬ，２Ｌ，…，２m-1Ｌとの排他的論理和を個別に計算し、得られたブロック毎の計算結果を平文データとして出力する第６の排他的論理和計算機能（XOR61〜XOR64；図５）。
【００９８】
入出力部２５は、図示しない外部装置と復号装置２０との間のデータ等の入出力機能や、復号装置２０を操作する操作者との間のユーザインタフェース機能をもっている。
【００９９】
次に、以上のように構成された暗号化装置及び復号装置の動作を説明する。  
（暗号化装置１０の動作）
いま、暗号化装置１０では、操作者の操作により、ＣＰＵ１４が不揮発性メモリ１３内の暗号化プログラムｅｐをＲＡＭ１２にロードして起動し、不揮発性メモリ１３内の非秘密情報Ｔ及び共通鍵ｋをＲＡＭ１２に書き込んだとする。また、暗号化装置１０では、操作者の操作により、平文データＰが入出力部１５を介してＲＡＭ１２に書き込まれた後、暗号化要求が入出力部１５を介して入力されたとする。
【０１００】
ＣＰＵ１４は、この暗号化要求を受けると、第１マスクデータ生成機能（Ｅk１，xt1〜xt4）により、ＲＡＭ１２内の共通鍵ｋに基づいて、４個の互いに異なる第１マスクデータＬ，２Ｌ，…，８Ｌを生成する。
【０１０１】
また、ＣＰＵ１４は、第１の排他的論理和計算機能（XOR11〜XOR14）により、ＲＡＭ１２内の平文データＰをブロックＰ1，Ｐ2，…，Ｐ4毎に分割して得られた４個のブロックＰ1，Ｐ2，…，Ｐ4と、各第１マスクデータＬ，２Ｌ，…，８Ｌとの排他的論理和を個別に計算し、当該ブロック毎の計算結果を得る。補足すると、４個のブロックＰ1，Ｐ2，…，Ｐ4は、平文データ全体のうち、６４バイトのセクタ毎の平文データＰを１６バイトのブロックＰ1，Ｐ2，…，Ｐ4毎に分割したものである。但し、セクタ単位は６４バイトに限定されない。
【０１０２】
さらに、ＣＰＵ１４は、ビットスライス変換機能（ＢＳ）により、このブロック毎の計算結果に対し、ビットスライス手法によるビットスライス変換を実行し、ブロック毎のビットスライス変換結果を得る。
【０１０３】
また、ＣＰＵ１４は、第１のビットスライス暗号化機能（ＢＳ−Ｅk１）により、このブロック毎のビットスライス変換結果に対し、ＲＡＭ１２内の共通鍵ｋに基づいてビットスライス手法による暗号化処理を実行し、当該ブロック毎の暗号化結果を得る。
【０１０４】
さらに、ＣＰＵ１４は、第２の排他的論理和計算機能（XOR21）により、このブロック毎の全ての暗号化結果と、ＲＡＭ１２内の非秘密情報Ｔとの排他的論理和を計算し、計算結果を得る。
【０１０５】
また、ＣＰＵ１４は、暗号化機能（Ｅk２１）により、第２の排他的論理和計算機能による計算結果に対し、ＲＡＭ１２内の共通鍵ｋに基づいて暗号化処理を実行し、暗号化結果を得る。
【０１０６】
さらに、ＣＰＵ１４は、第３の排他的論理和計算機能（XOR31）により、第２の排他的論理和計算機能による計算結果と、暗号化機能による暗号化結果との排他的論理和を計算し、計算結果Ｍを得る。
【０１０７】
また、ＣＰＵ１４は、第２マスクデータ生成機能（xt1〜xt4）により、第３の排他的論理和計算機能による計算結果Ｍに基づいて、３個の互いに異なる第２マスクデータ２Ｍ，４Ｍ，８Ｍを生成する。
【０１０８】
さらに、ＣＰＵ１４は、第４の排他的論理和計算機能（XOR42〜XOR44）により、第１のビットスライス暗号化機能による２番目乃至４番目のブロック毎の暗号化結果と、各第２マスクデータ２Ｍ，４Ｍ，８Ｍとの排他的論理和を個別に計算し、当該ブロック毎の計算結果を得る。
【０１０９】
また、ＣＰＵ１４は、第５の排他的論理和計算機能（XOR51）により、第４の排他的論理和計算手段により得られたブロック毎の計算結果と、ＲＡＭ１２内の非秘密情報Ｔとの排他的論理和を計算し、新たな計算結果を得る。
【０１１０】
さらに、ＣＰＵ１４は、第２のビットスライス暗号化機能（ＢＳ−Ｅk２）により、第５の排他的論理和計算機能により得られた計算結果と、第４の排他的論理和計算機能により得られたブロック毎の計算結果とに対し、ＲＡＭ１２内の共通鍵ｋに基づいてビットスライス手法による暗号化処理を実行し、ブロック毎の暗号化結果を得る。
【０１１１】
また、ＣＰＵ１４は、ビットスライス逆変換機能（Ｉ−ＢＳ）により、第２のビットスライス暗号化機能により得られたブロック毎の暗号化結果に対し、ビットスライス手法によるビットスライス逆変換を実行し、当該ブロック毎のビットスライス逆変換結果を得る。
【０１１２】
さらに、ＣＰＵ１４は、第６の排他的論理和計算機能（XOR61〜XOR64）により、ブロック毎のビットスライス逆変換結果と、各第１マスクデータＬ，２Ｌ，…，８Ｌとの排他的論理和を個別に計算し、得られたブロック毎の計算結果をＲＡＭ１２に書き込んだ後に暗号文データとして入出力部１５から出力する。補足すると、出力される暗号文データは、ＲＡＭ１２に書き込まれたブロック毎の計算結果Ｃ1，Ｃ2，…，Ｃ4を連接して６４バイトのセクタ毎の暗号文データＣとし、以下同様にして得られたセクタ毎の暗号文データＣを順次連接して、平文データ全体に対応する暗号文データとして得られたものである。但し、セクタ単位は６４バイトに限定されない。
【０１１３】
（従来の暗号化処理との比較説明）
図１９に示す従来のＥＭＥモード暗号化は、始めに、マスクとＥＣＢモードによる１層目の暗号化処理を行う。すなわち、値Ｌ乃至８Ｌのマスクをそれぞれ排他的論理和機能（XOR11〜XOR14）により演算し、暗号化機能（Ｅk１１〜Ｅk１４）でＥＣＢモードによる暗号化を行う。
【０１１４】
ここで、従来のＥＣＢモードによる暗号化部分（ＥＣＢ１）は、ビットスライス手法により並列化が可能である。この際、ビットスライス手法で計算を行うためには、各暗号化機能（Ｅk１１〜Ｅk１４）の入力ブロックの同じビット位置を集めて変数に格納するビットスライス処理用のビット表現に変換するビットスライス変換機能（ＢＳ）と、ビットスライス暗号化処理のビットスライス暗号化機能（ＢＳ−Ｅk）と、ビットスライス処理用のビット表現を元のバイトまたビットの集まりに復元するビットスライス逆変換機能（Ｉ−ＢＳ）とが必要となる。
【０１１５】
同様に、図１９に示す如き、ＥＣＢモードによる２層目の暗号化部分（ＥＣＢ２）も、ビットスライス変換機能（ＢＳ）、ビットスライス暗号化機能（ＢＳ−Ｅk）及びビットスライス逆変換機能（Ｉ−ＢＳ）の処理により置き換える必要がある。
【０１１６】
一方、第１の実施形態の図２に示す暗号化処理においては、従来の図１９のＥＣＢモードによる１層目の暗号化機能（ＥＣＢ１）をビットスライス変換機能（ＢＳ）と第１のビットスライス暗号化機能（ＢＳ−Ｅk１）で置き換え、図１９のＥＣＢモードによる２層目の暗号化機能（ＥＣＢ２）を第２のビットスライス暗号化機能（ＢＳ−Ｅk２）とビットスライス逆変換機能（Ｉ−ＢＳ）で置き換えた構成となっている。また、図２の第２マスクデータＭ，…，８Ｍの処理部分（ＰMASK1）は、図１９に示す従来手法と同様の手順で処理を行う。
【０１１７】
すなわち、第１の実施形態は、従来の１層目の暗号化部分（ＥＣＢ１）に相当する部分のビットスライス実装ではビットスライス逆変換を行わず、従来の２層目の暗号化部分（ＥＣＢ２）に相当する部分のビットスライス実装ではビットスライス変換を行わないため、図１９に示す従来手法とは扱うデータが異なる。
【０１１８】
第１の実施形態によれば、扱うデータが異なるものの、ＥＭＥモードで必要とされるブロック間の相互作用が第２マスクデータ２Ｍ乃至８Ｍとの排他的論理和機能（XOR42〜XOR44）により実現されるため、従来手法と同等の安全性を提供できる。また、第１の実施形態によれば、従来手法のＥＭＥモードにビットスライスの手法をそのまま適用した場合に比べ、ビットスライス逆変換（Ｉ−ＢＳ）及びビットスライス変換（ＢＳ）を１層ずつ削減できるので、処理効率を向上させることができる。
【０１１９】
なお、図１９に示す従来のＥＭＥモード暗号化と、図２に示す第１の実施形態によるＥＭＥモード暗号化とは、平文データと共通鍵ｋとの同じ組み合わせに対しても、図１９と図２で異なる暗号文データを出力することから、互換性が無く、互いに異なる手法である。このことは、後述する復号装置２０においても同様である。しかし、第１の実施形態をセクタ単位での暗号化及び復号に使用する場合には、従来の類似の手法とのデータ互換性は必要条件ではない。
【０１２０】
なお、暗号化装置１０において、第１の排他的論理和機能（XOR11〜XOR14）とビットスライス変換機能（ＢＳ）との間での順序の入れ替え及び、第６の排他的論理和機能（XOR61〜XOR64）とビットスライス逆変換機能（Ｉ−ＢＳ）との間での順序の入れ替えは、それぞれ一般性を損なうことなく可能である。
【０１２１】
（復号装置２０の動作）
いま、復号装置１０では、操作者の操作により、ＣＰＵ１４が不揮発性メモリ１３内の復号プログラムｄｐをＲＡＭ２２にロードして起動し、不揮発性メモリ２３内の非秘密情報Ｔ及び共通鍵ｋをＲＡＭ２２に書き込んだとする。また、復号装置２０では、操作者の操作により、暗号文データＣが入出力部２５を介してＲＡＭ２２に書き込まれた後、復号要求が入出力部２５を介して入力されたとする。
【０１２２】
ＣＰＵ２４は、この復号要求を受けると、第１マスクデータ生成機能（Ｅk１，xt1〜xt4）により、ＲＡＭ２２内の共通鍵ｋに基づいて、４個の互いに異なる第１マスクデータＬ，２Ｌ，…，８Ｌを生成する。
【０１２３】
また、ＣＰＵ２４は、第１の排他的論理和計算機能（XOR11〜XOR14）により、ＲＡＭ２２内の暗号文データをブロックＣ1，Ｃ2，…，Ｃ4毎に分割して得られた４個のブロックＣ1，Ｃ2，…，Ｃ4と、各第１マスクデータＬ，２Ｌ，…，８Ｌとの排他的論理和を個別に計算し、当該ブロック毎の計算結果を得る。補足すると、４個のブロックＣ1，Ｃ2，…，Ｃ4は、暗号文データ全体のうち、６４バイトのセクタ毎の暗号文データＣを１６バイトのブロックＣ1，Ｃ2，…，Ｃ4毎に分割したものである。但し、セクタ単位は６４バイトに限定されない。
【０１２４】
さらに、ＣＰＵ２４は、ビットスライス逆変換機能（Ｉ−ＢＳ）により、このブロック毎の計算結果に対し、ビットスライス手法によるビットスライス逆変換を実行し、ブロック毎のビットスライス逆変換結果を得る。
【０１２５】
また、ＣＰＵ２４は、第１のビットスライス復号機能（ＢＳ−Ｄk１）により、このブロック毎のビットスライス逆変換結果に対し、ＲＡＭ２２内の共通鍵ｋに基づいてビットスライス手法による復号処理を実行し、当該ブロック毎の復号結果を得る。
【０１２６】
さらに、ＣＰＵ２４は、第２の排他的論理和計算機能（XOR21）により、このブロック毎の全ての復号結果と、ＲＡＭ２２内の非秘密情報Ｔとの排他的論理和を計算し、計算結果を得る。
【０１２７】
また、ＣＰＵ２４は、復号機能（Ｄk２１）により、第２の排他的論理和計算機能による計算結果に対し、ＲＡＭ２２内の共通鍵ｋに基づいて復号処理を実行し、復号結果を得る。
【０１２８】
さらに、ＣＰＵ２４は、第３の排他的論理和計算機能（XOR31）により、第２の排他的論理和計算機能による計算結果と、復号機能による復号結果との排他的論理和を計算し、計算結果Ｍを得る。
【０１２９】
また、ＣＰＵ２４は、第２マスクデータ生成機能（xt1〜xt4）により、第３の排他的論理和計算機能による計算結果Ｍに基づいて、３個の互いに異なる第２マスクデータ２Ｍ，４Ｍ，８Ｍを生成する。
【０１３０】
さらに、ＣＰＵ２４は、第４の排他的論理和計算機能（XOR42〜XOR44）により、第１のビットスライス復号機能による２番目乃至４番目のブロック毎の復号結果と、各第２マスクデータ２Ｍ，４Ｍ，８Ｍとの排他的論理和を個別に計算し、当該ブロック毎の計算結果を得る。
【０１３１】
また、ＣＰＵ２４は、第５の排他的論理和計算機能（XOR51）により、第４の排他的論理和計算機能により得られたブロック毎の計算結果と、ＲＡＭ２２内の非秘密情報Ｔとの排他的論理和を計算し、新たな計算結果を得る。
【０１３２】
さらに、ＣＰＵ２４は、第２のビットスライス復号機能（ＢＳ−Ｄk２）により、第５の排他的論理和計算機能により得られた計算結果と、第４の排他的論理和計算機能により得られたブロック毎の計算結果とに対し、ＲＡＭ２２内の共通鍵ｋに基づいてビットスライス手法による復号処理を実行し、ブロック毎の復号結果を得る。
【０１３３】
また、ＣＰＵ２４は、ビットスライス変換機能（ＢＳ）により、第２のビットスライス復号機能で得られたブロック毎の復号結果に対し、ビットスライス手法によるビットスライス変換を実行し、当該ブロック毎のビットスライス変換結果を得る。
【０１３４】
さらに、ＣＰＵ２４は、第６の排他的論理和計算機能（XOR61〜XOR64）により、ブロック毎のビットスライス変換結果と、各第１マスクデータＬ，２Ｌ，…，８Ｌとの排他的論理和を個別に計算し、得られたブロック毎の計算結果をＲＡＭ２２に書き込んだ後に平文データとして入出力部２５から出力する。補足すると、出力される平文データは、ＲＡＭ２２に書き込まれたブロック毎の計算結果Ｐ1，Ｐ2，…，Ｐ4を連接して６４バイトのセクタ毎の平文データＰとし、以下同様にして得られたセクタ毎の平文データＰを順次連接して、暗号文データ全体に対応する平文データとして得られたものである。但し、セクタ単位は６４バイトに限定されない。
【０１３５】
（従来の復号処理との比較説明）
この比較説明は、暗号化装置１０の比較説明に述べた内容と同様の内容となる。また特に、復号装置２０によれば、従来手法のＥＭＥモードにビットスライスの手法をそのまま適用した場合に比べ、ビットスライス変換（ＢＳ）及びビットスライス逆変換（Ｉ−ＢＳ）を１層ずつ削減できるので、処理効率を向上させることができる。
【０１３６】
また同様に、復号装置２０において、第１の排他的論理和機能（XOR11〜XOR14）とビットスライス逆変換機能（Ｉ−ＢＳ）との間での順序の入れ替え及び、第６の排他的論理和機能（XOR61〜XOR64）とビットスライス変換機能（ＢＳ）との間での順序の入れ替えは、それぞれ一般性を損なうことなく可能である。
【０１３７】
上述したように本実施形態によれば、従来のＥＭＥモードを削除すると共に、ビットスライス用表現への変換の一部を削除して効率化したビットスライス手法の暗号化処理あるいは復号処理を従来手法に組み合わせることにより、従来のＥＭＥモードと同等の安全性を実現しつつ、全体の処理を効率化することができる。
【０１３８】
補足すると、本実施形態によれば、ＥＭＥモードで必要とされるブロック間の相互作用が第２マスクデータ２Ｍ〜８Ｍとの排他的論理和機能（XOR42〜XOR44）により実現されるため、従来手法と同等の安全性を提供できる。また、本実施形態によれば、従来の１層目の暗号化部分（ＥＣＢ１）に相当する部分のビットスライス実装ではビットスライス逆変換を行わず、従来の２層目の暗号化部分（ＥＣＢ２）に相当する部分のビットスライス実装ではビットスライス変換を行わないため、従来手法のＥＭＥモードにビットスライスの手法をそのまま適用した場合に比べ、ビットスライス逆変換（Ｉ−ＢＳ）及びビットスライス変換（ＢＳ）を１層ずつ削減でき、処理効率を向上できる。
【０１３９】
（第２の実施形態）
図６は本発明の第２の実施形態に係る暗号化装置が暗号化プログラムに基づいて実現する機能を説明するための模式図であり、図７は同実施形態における復号装置が復号プログラムに基づいて実現する機能を説明するための模式図であって、前述した図面と同様の機能には同一符号を付してその詳しい説明を省略し、ここでは異なる機能について主に述べる。なお、以下の各実施形態についても同様にして重複した説明を省略する。また、第１の実施形態で述べた図１及び図４に示す各装置１０，２０の構成は、以下の各実施形態でも同様に用いられる。以下の各実施形態では、図１及び図４に示す各装置１０，２０の構成において、暗号化プログラムｅｐ及び復号プログラムｄｐの内容が異なっており、当該各プログラムｅｐ，ｄｐにより実現される各機能が異なっている。
【０１４０】
すなわち、第２の実施形態は、第１の実施形態の図２及び図５に示した各機能に比べ、図６及び図７に示すように、ビットスライス変換機能（ＢＳ）及びビットスライス逆変換機能（Ｉ−ＢＳ）を省略した各機能を実現するための暗号化プログラムｅｐ及び復号プログラムｄｐがそれぞれ暗号化装置１０及び復号装置２０にインストールされた構成となっている。なお、各装置１０，２０のＣＰＵ１４，２４は、各プログラムｅｐ，ｄｐに基づいて、図６、図２０及び図７に示す処理を実行する機能をもっている。
【０１４１】
次に、以上のように構成された暗号化装置及び復号装置の動作を説明する。
【０１４２】
（暗号化装置１０の動作）
いま、暗号化装置１０では、操作者の操作により、ＣＰＵ１４が不揮発性メモリ１３内の暗号化プログラムｅｐをＲＡＭ１２にロードして起動し、不揮発性メモリ１３内の非秘密情報Ｔ及び共通鍵ｋをＲＡＭ１２に書き込んだとする。また、暗号化装置１０では、操作者の操作により、平文データＰが入出力部１５を介してＲＡＭ１２に書き込まれた後、暗号化要求が入出力部１５を介して入力されたとする。
【０１４３】
ＣＰＵ１４は、この暗号化要求を受けると、第１マスクデータ生成機能（Ｅk１，xt1〜xt4）により、ＲＡＭ１２内の共通鍵ｋに基づいて、４個の互いに異なる第１マスクデータＬ，２Ｌ，…，８Ｌを生成する。
【０１４４】
また、ＣＰＵ１４は、第１の排他的論理和計算機能（XOR11〜XOR14）により、ＲＡＭ１２内の平文データＰをブロックＰ1，Ｐ2，…，Ｐ4毎に分割して得られた４個のブロックＰ1，Ｐ2，…，Ｐ4と、各第１マスクデータＬ，２Ｌ，…，８Ｌとの排他的論理和を個別に計算し、当該ブロック毎の計算結果を得る。
【０１４５】
また、ＣＰＵ１４は、第１のビットスライス暗号化機能（ＢＳ−Ｅk１）により、このブロック毎の計算結果に対し、ＲＡＭ１２内の共通鍵ｋに基づいてビットスライス手法による暗号化処理を実行し、当該ブロック毎の暗号化結果を得る。
【０１４６】
さらに、ＣＰＵ１４は、第２の排他的論理和計算機能（XOR21）により、このブロック毎の全ての暗号化結果と、ＲＡＭ１２内の非秘密情報Ｔとの排他的論理和を計算し、計算結果を得る。
【０１４７】
また、ＣＰＵ１４は、暗号化機能（Ｅk２１）により、第２の排他的論理和計算機能による計算結果に対し、ＲＡＭ１２内の共通鍵ｋに基づいて暗号化処理を実行し、暗号化結果を得る。
【０１４８】
さらに、ＣＰＵ１４は、第３の排他的論理和計算機能（XOR31）により、第２の排他的論理和計算機能による計算結果と、暗号化機能による暗号化結果との排他的論理和を計算し、計算結果Ｍを得る。
【０１４９】
また、ＣＰＵ１４は、第２マスクデータ生成機能（xt1〜xt4）により、第３の排他的論理和計算機能による計算結果Ｍに基づいて、３個の互いに異なる第２マスクデータ２Ｍ，４Ｍ，８Ｍを生成する。
【０１５０】
さらに、ＣＰＵ１４は、第４の排他的論理和計算機能（XOR42〜XOR44）により、第１のビットスライス暗号化機能による２番目乃至４番目のブロック毎の暗号化結果と、各第２マスクデータ２Ｍ，４Ｍ，８Ｍとの排他的論理和を個別に計算し、当該ブロック毎の計算結果を得る。
【０１５１】
また、ＣＰＵ１４は、第５の排他的論理和計算機能（XOR51）により、第４の排他的論理和計算手段により得られたブロック毎の計算結果と、ＲＡＭ１２内の非秘密情報Ｔとの排他的論理和を計算し、新たな計算結果を得る。
【０１５２】
さらに、ＣＰＵ１４は、第２のビットスライス暗号化機能（ＢＳ−Ｅk２）により、第５の排他的論理和計算機能により得られた計算結果と、第４の排他的論理和計算機能により得られたブロック毎の計算結果とに対し、ＲＡＭ１２内の共通鍵ｋに基づいてビットスライス手法による暗号化処理を実行し、ブロック毎の暗号化結果を得る。
【０１５３】
また、ＣＰＵ１４は、第６の排他的論理和計算機能（XOR61〜XOR64）により、ブロック毎の暗号化結果と、各第１マスクデータＬ，２Ｌ，…，８Ｌとの排他的論理和を個別に計算し、得られたブロック毎の計算結果をＲＡＭ１２に書き込んだ後に暗号文データとして入出力部１５から出力する。
【０１５４】
（復号装置２０の動作）
いま、復号装置１０では、操作者の操作により、ＣＰＵ１４が不揮発性メモリ１３内の復号プログラムｄｐをＲＡＭ２２にロードして起動し、不揮発性メモリ２３内の非秘密情報Ｔ及び共通鍵ｋをＲＡＭ２２に書き込んだとする。また、復号装置２０では、操作者の操作により、暗号文データＣが入出力部２５を介してＲＡＭ２２に書き込まれた後、復号要求が入出力部２５を介して入力されたとする。
【０１５５】
ＣＰＵ２４は、この復号要求を受けると、第１マスクデータ生成機能（Ｅk１，xt1〜xt4）により、ＲＡＭ２２内の共通鍵ｋに基づいて、４個の互いに異なる第１マスクデータＬ，２Ｌ，…，８Ｌを生成する。
【０１５６】
また、ＣＰＵ２４は、第１の排他的論理和計算機能（XOR11〜XOR14）により、ＲＡＭ２２内の暗号文データをブロックＣ1，Ｃ2，…，Ｃ4毎に分割して得られた４個のブロックＣ1，Ｃ2，…，Ｃ4と、各第１マスクデータＬ，２Ｌ，…，８Ｌとの排他的論理和を個別に計算し、当該ブロック毎の計算結果を得る。
【０１５７】
また、ＣＰＵ２４は、第１のビットスライス復号機能（ＢＳ−Ｄk１）により、このブロック毎の計算結果に対し、ＲＡＭ２２内の共通鍵ｋに基づいてビットスライス手法による復号処理を実行し、当該ブロック毎の復号結果を得る。
【０１５８】
さらに、ＣＰＵ２４は、第２の排他的論理和計算機能（XOR21）により、このブロック毎の全ての復号結果と、ＲＡＭ２２内の非秘密情報Ｔとの排他的論理和を計算し、計算結果を得る。
【０１５９】
また、ＣＰＵ２４は、復号機能（Ｄk２１）により、第２の排他的論理和計算機能による計算結果に対し、ＲＡＭ２２内の共通鍵ｋに基づいて復号処理を実行し、復号結果を得る。
【０１６０】
さらに、ＣＰＵ２４は、第３の排他的論理和計算機能（XOR31）により、第２の排他的論理和計算機能による計算結果と、復号機能による復号結果との排他的論理和を計算し、計算結果Ｍを得る。
【０１６１】
また、ＣＰＵ２４は、第２マスクデータ生成機能（xt1〜xt4）により、第３の排他的論理和計算機能による計算結果Ｍに基づいて、３個の互いに異なる第２マスクデータ２Ｍ，４Ｍ，８Ｍを生成する。
【０１６２】
さらに、ＣＰＵ２４は、第４の排他的論理和計算機能（XOR42〜XOR44）により、第１のビットスライス復号機能による２番目乃至４番目のブロック毎の復号結果と、各第２マスクデータ２Ｍ，４Ｍ，８Ｍとの排他的論理和を個別に計算し、当該ブロック毎の計算結果を得る。
【０１６３】
また、ＣＰＵ２４は、第５の排他的論理和計算機能（XOR51）により、第４の排他的論理和計算機能により得られたブロック毎の計算結果と、ＲＡＭ２２内の非秘密情報Ｔとの排他的論理和を計算し、新たな計算結果を得る。
【０１６４】
さらに、ＣＰＵ２４は、第２のビットスライス復号機能（ＢＳ−Ｄk２）により、第５の排他的論理和計算機能により得られた計算結果と、第４の排他的論理和計算機能により得られたブロック毎の計算結果とに対し、ＲＡＭ２２内の共通鍵ｋに基づいてビットスライス手法による復号処理を実行し、ブロック毎の復号結果を得る。
【０１６５】
また、ＣＰＵ２４は、第６の排他的論理和計算機能（XOR61〜XOR64）により、ブロック毎の復号結果と、各第１マスクデータＬ，２Ｌ，…，８Ｌとの排他的論理和を個別に計算し、得られたブロック毎の計算結果をＲＡＭ２２に書き込んだ後に平文データとして入出力部２５から出力する。
【０１６６】
上述したように第２の実施形態によれば、第１の実施形態に比べ、暗号化装置１０及び復号装置２０がそれぞれビットスライス変換機能（ＢＳ）とビットスライス逆変換機能（Ｉ−ＢＳ）を更に省略した構成により、安全性を低下させることなく、より一層、全体の処理を効率化でき、第１の実施形態よりも高速に実行することができる。
【０１６７】
補足すると、ビットスライス変換機能（ＢＳ）とビットスライス逆変換機能（Ｉ−ＢＳ）がいずれもビット転置処理であり、平文乃至暗号文に対する線形演算に相当し安全性に寄与しないことから、両機能（ＢＳ，Ｉ−ＢＳ）を省略しても、安全性を低下させることなく、全体の処理を効率化することができる。
【０１６８】
（第３の実施形態）
図８は本発明の第３の実施形態に係る暗号化装置が暗号化プログラムに基づいて実現する機能を説明するための模式図であり、図９は同実施形態における復号装置が復号プログラムに基づいて実現する機能を説明するための模式図である。
【０１６９】
すなわち、第３の実施形態は、暗号装置１０においては、従来の図１９に示した入力側のＥＣＢモードの暗号化部分（ＥＣＢ１）、第２及び第３の排他的論理和機能（XOR21,XOR31）を省略し、図８に示すように、第１の排他的論理和計算機能（XOR1）、ハッシュ関数計算機能（Ｈ）、第２の排他的論理和計算機能（XOR2）及び第４の排他的論理和計算機能（XOR42〜XOR44）を備えた各機能を実現するための暗号化プログラムｅｐがインストールされた構成となっている。
【０１７０】
一方、復号装置２０においては、従来の図２１に示した出力側のＥＣＢモードの復号部分（Ｄk３１〜Ｄｋ３４）、第３及び第５の排他的論理和計算機能（XOR31,XOR51）を省略し、図９に示すように、第３乃至第５の排他的論理和計算機能（XOR32’〜XOR34’,XOR42’〜XOR44’,XOR5）、ハッシュ関数計算機能（Ｈ）及び第６の排他的論理和計算機能（XOR6）を備えた各機能を実現するための復号プログラムｄｐがインストールされた構成となっている。なお、各装置１０，２０のＣＰＵ１４，２４は、各プログラムｅｐ，ｄｐに基づいて、図８、図２０及び図９に示す処理を実行する機能をもっている。
【０１７１】
次に、以上のように構成された暗号化装置及び復号装置の動作を説明する。
【０１７２】
（暗号化装置１０の動作）
いま、暗号化装置１０では、操作者の操作により、ＣＰＵ１４が不揮発性メモリ１３内の暗号化プログラムｅｐをＲＡＭ１２にロードして起動し、不揮発性メモリ１３内の非秘密情報Ｔ及び共通鍵ｋをＲＡＭ１２に書き込んだとする。また、暗号化装置１０では、操作者の操作により、平文データＰが入出力部１５を介してＲＡＭ１２に書き込まれた後、暗号化要求が入出力部１５を介して入力されたとする。
【０１７３】
ＣＰＵ１４は、この暗号化要求を受けると、第１マスクデータ生成機能（Ｅk１，xt1〜xt4）により、ＲＡＭ１２内の共通鍵ｋに基づいて、４個の互いに異なる第１マスクデータＬ，２Ｌ，…，８Ｌを生成する。補足すると、第１マスクデータ生成機能（Ｅk１，xt1〜xt4）は、ｈ番目の第１マスクデータ２h-1Ｌに有限体上の乗算処理を実行してｈ＋１番目の第１マスクデータ２hＬを生成する第１演算機能（xt1〜xt4）（但し、ｈ＝１，２，…，ｍ−１）を含んでいる。
【０１７４】
また、ＣＰＵ１４は、第１の排他的論理和計算機能（XOR11〜XOR14）により、各第１マスクデータＬ，２Ｌ，…，２m-1Ｌのうちの１番目の第１マスクデータＬと、ＲＡＭ１２内の非秘密情報Ｔとの排他的論理和を計算し、計算結果を得る。
【０１７５】
ＣＰＵ１４は、ハッシュ関数計算機能（Ｈ）により、第１の排他的論理和計算機能により得られた計算結果と、平文データをブロックＰ1，Ｐ2，…，Ｐm毎に分割して得られた４個のブロックＰ1，Ｐ2，…，Ｐ4のうちの２番目乃至４番目のブロックＰ2，Ｐ3，Ｐ4とに基づいてハッシュ関数を計算し、ハッシュ値を得る。ここで、ハッシュ関数としては、例えば、ＭＤ４、ＭＤ５、ＳＨＡ−１、ＳＨＡ−２５６などさまざまなハッシュ関数が利用可能である。なお、計算したハッシュ値が、後述する第１の暗号化機能（Ｅk２１）のブロック幅よりも大きいならば、一般性を損なうことなく、計算したハッシュ値の先頭あるいは末尾などの一部のビットを選択して、最終的に得られたハッシュ値とする。また、ハッシュ値は、ダイジェスト値と呼んでもよい。
【０１７６】
また、ＣＰＵ１４は、第２の排他的論理和計算機能（XOR2）により、４個のブロックＰ1，Ｐ2，…，Ｐ4のうちの１番目のブロックＰ1と、ハッシュ値と、非秘密情報Ｔとの排他的論理和を計算し、計算結果Ｕを得る。
【０１７７】
ＣＰＵ１４は、第２マスクデータ生成機能（xt2,xt3）により、第２の排他的論理和計算機能の計算結果Ｕに基づいて、２個の互いに異なる第２マスクデータ２Ｕ，４Ｕを生成する。補足すると、第２マスクデータ生成機能（xt2,xt3）は、ｉ番目の第２マスクデータ２i-1Ｕに有限体上の乗算処理を実行してｉ＋１番目の第２マスクデータ２iＵを生成する第２演算機能（xt2,xt3）（但し、ｉ＝１，２，…，ｍ−２）を含んでいる。
【０１７８】
また、ＣＰＵ１４は、第３の排他的論理和計算機能（XOR32〜XOR34）により、２番目乃至４番目のブロックＰ2，Ｐ3，Ｐ4と、計算結果Ｕ及び各第２マスクデータ２Ｕ，４Ｕとの排他的論理和を個別に計算し、当該ブロック毎の計算結果を得る。
【０１７９】
ＣＰＵ１４は、第１の暗号化機能（Ｅk２１）により、第２の排他的論理和計算機能の計算結果Ｕに対し、ＲＡＭ１２内の共通鍵ｋに基づいて暗号化処理を実行し、暗号化結果Ｍを得る。
【０１８０】
また、ＣＰＵ１４は、第３マスクデータ生成機能（xt2〜xt4）により、第１の暗号化機能の暗号化結果Ｍに基づいて、３個の互いに異なる第３マスクデータ２Ｍ，４Ｍ，８Ｍを生成する。補足すると、第３マスクデータ生成機能（xt2〜xt4）は、ｊ番目の第３マスクデータ２j-1Ｍに有限体上の乗算処理を実行してｊ＋１番目の第３マスクデータ２jＭを生成する第３演算機能（xt2〜xt4）（但し、ｊ＝１，２，…，ｍ−１）を含んでいる。
【０１８１】
ＣＰＵ１４は、第４の排他的論理和計算機能（XOR42〜XOR44）により、第３の排他的論理和計算機能により得られたブロック毎の計算結果と、各第３マスクデータ２Ｍ，４Ｍ，８Ｍとの排他的論理和を個別に計算し、当該ブロック毎の新たな計算結果を得る。ここで、同じデータ、例えば平文データの２番目のブロックＰ2に対し、第３の排他的論理和機能（XOR32）ではＵすなわち１Ｕとの排他的論理和を、第４の排他的論理和機能（XOR42）では２Ｍとの排他的論理和を計算する。すなわち、同一のデータに対して排他的論理和が計算されるマスクデータＵとＭのｘ倍演算には異なる係数を用いる。すなわち、ここでは、係数１と２を用いた。２〜３番目のブロックＰ3、Ｐ4に対しても同様に異なる係数である、２と４、４と８を用いる。
【０１８２】
また、ＣＰＵ１４は、第５の排他的論理和計算機能（XOR51）により、第４の排他的論理和計算機能により得られたブロック毎の計算結果と、ＲＡＭ１２内の非秘密情報Ｔとの排他的論理和を計算し、計算結果を得る。
【０１８３】
ＣＰＵ１４は、第２の暗号化機能（Ｅk３１〜Ｅk３４）により、第５の排他的論理和計算機能により得られた計算結果と、第４の排他的論理和計算機能により得られたブロック毎の計算結果とに対し、ＲＡＭ１２内の共通鍵ｋに基づいて暗号化処理を実行し、ブロック毎の暗号化結果を得る。なお、第２の暗号化機能はＥＣＢモードの暗号化処理を実行するものである。
【０１８４】
また、ＣＰＵ１４は、第６の排他的論理和計算機能（XOR61〜XOR64）により、第２の暗号化機能により得られたブロック毎の暗号化結果と、各第１マスクデータＬ，２Ｌ，…，８Ｌとの排他的論理和を個別に計算し、得られたブロック毎の計算結果をＲＡＭ１２に書き込んだ後に暗号文データとして入出力部１５から出力する。
【０１８５】
（復号装置２０の動作）
いま、復号装置１０では、操作者の操作により、ＣＰＵ１４が不揮発性メモリ１３内の復号プログラムｄｐをＲＡＭ２２にロードして起動し、不揮発性メモリ２３内の非秘密情報Ｔ及び共通鍵ｋをＲＡＭ２２に書き込んだとする。また、復号装置２０では、操作者の操作により、暗号文データＣが入出力部２５を介してＲＡＭ２２に書き込まれた後、復号要求が入出力部２５を介して入力されたとする。
【０１８６】
ＣＰＵ２４は、この復号要求を受けると、第１マスクデータ生成機能（Ｅk１，xt1〜xt4）により、ＲＡＭ２２内の共通鍵ｋに基づいて、４個の互いに異なる第１マスクデータＬ，２Ｌ，…，８Ｌを生成する。補足すると、第１マスクデータ生成機能（Ｅk１，xt1〜xt4）は、ｈ番目の第１マスクデータ２h-1Ｌに有限体上の乗算処理を実行してｈ＋１番目の第１マスクデータ２hＬを生成する第１演算機能（xt1〜xt4）（但し、ｈ＝１，２，…，ｍ−１）を含んでいる。
【０１８７】
また、ＣＰＵ２４は、第１の排他的論理和計算機能（XOR11〜XOR14）により、ＲＡＭ２２内の暗号文データをブロックＣ1，Ｃ2，…，Ｃ4毎に分割して得られた４個のブロックＣ1，Ｃ2，…，Ｃ4と、各第１マスクデータＬ，２Ｌ，…，８Ｌとの排他的論理和を個別に計算し、当該ブロック毎の計算結果を得る。
【０１８８】
また、ＣＰＵ２４は、第１の復号機能（Ｄk１１〜Ｄk１４）により、このブロック毎の計算結果に対し、ＲＡＭ２２内の共通鍵ｋに基づいて復号処理を実行し、当該ブロック毎の復号結果を得る。なお、第１の復号機能はＥＣＢモードの復号処理を実行するものである。
【０１８９】
さらに、ＣＰＵ２４は、第２の排他的論理和計算機能（XOR21）により、このブロック毎の全ての復号結果と、ＲＡＭ２２内の非秘密情報Ｔとの排他的論理和を計算し、計算結果Ｍを得る。
【０１９０】
また、ＣＰＵ２４は、第２マスクデータ生成機能（xt1〜xt4）により、第３の排他的論理和計算機能による計算結果Ｍに基づいて、３個の互いに異なる第２マスクデータ２Ｍ，４Ｍ，８Ｍを生成する。補足すると、第２マスクデータ生成機能（xt1〜xt4）は、ｊ番目の第２マスクデータ２j-1Ｍに有限体上の乗算処理を実行してｊ＋１番目の第２マスクデータ２jＭを生成する第２演算機能（xt1〜xt4）（但し、ｊ＝１，２，…，ｍ−１）を含んでいる。
【０１９１】
さらに、ＣＰＵ２４は、第３の排他的論理和計算機能（XOR32’〜XOR34’）により、第１の復号機能により得られた復号結果のうちの２番目乃至４番目のブロックに対応する復号結果と、各第２マスクデータ２Ｍ，４Ｍ，８Ｍとの排他的論理和を個別に計算し、当該ブロック毎の計算結果を得る。
【０１９２】
また、ＣＰＵ２４は、第２の復号機能（Ｄk２１）により、第２の排他的論理和計算機能による計算結果Ｍに対し、ＲＡＭ２２内の共通鍵ｋに基づいて復号処理を実行し、復号結果Ｕを得る。
【０１９３】
ＣＰＵ２４は、第３マスクデータ生成機能（xt2,xt3）により、第２の復号機能の復号結果Ｕに基づいて、２個の互いに異なる第３マスクデータ２Ｕ，４Ｕを生成する。補足すると、第３マスクデータ生成機能（xt2,xt3）は、ｉ番目の第３マスクデータ２i-1Ｕに有限体上の乗算処理を実行してｉ＋１番目の第３マスクデータ２iＵを生成する第３演算機能（xt2,xt3）（但し、ｉ＝１，２，…，ｍ−２）を備えている。
【０１９４】
また、ＣＰＵ２４は、第４の排他的論理和計算機能（XOR42’〜XOR44’）により、第３の排他的論理和計算機能により得られたブロック毎の計算結果と、計算結果Ｕ及び各第３マスクデータ２Ｕ，４Ｕとの排他的論理和を個別に計算し、当該ブロック毎の新たな計算結果を得る。
【０１９５】
また、ＣＰＵ２４は、第５の排他的論理和計算機能（XOR5）により、各第１マスクデータＬ，２Ｌ，…，８Ｌのうちの１番目の第１マスクデータＬと、ＲＡＭ２２内の非秘密情報Ｔとの排他的論理和を計算し、計算結果を得る。
【０１９６】
ＣＰＵ２４は、ハッシュ関数計算機能（Ｈ）により、第５の排他的論理和計算機能により得られた計算結果と、第４の排他的論理和計算機能により得られたブロック毎の計算結果とに基づいてハッシュ関数を計算し、ハッシュ値を得る。
【０１９７】
また、ＣＰＵ２４は、第６の排他的論理和計算機能（XOR6）により、第２の復号機能の復号結果Ｕと、ハッシュ値と、ＲＡＭ２２内の非秘密情報Ｔとの排他的論理和を計算し、計算結果を得る。
【０１９８】
ＣＰＵ２４は、第６の排他的論理和計算機能により得られた計算結果と、第４の排他的論理和計算機能により得られたブロック毎の計算結果とをＲＡＭ２２に書き込んだ後に平文データとして入出力部２５から出力する。
【０１９９】
上述したように第３の実施形態によれば、ハッシュ関数計算機能（Ｈ）と、内部データの攪拌手段としての第３及び第４の排他的論理和機能（XOR32〜XOR34,XOR42〜XOR44,XOR32’〜XOR34’,XOR42’〜XOR44’）と、ＥＣＢモードによる暗号化機能（ECB2）あるいは復号機能（Ｄk１１〜Ｄk１４）を組み合わせることにより、従来のＥＭＥモードと同等の安全性を実現しつつ、全体の処理を効率化できる。
【０２００】
補足すると、各実施形態においては、平文データと暗号文データのサイズが互いに同一であることを前提とし、入力が少し変われば出力全体が変化することが望まれる。このことを踏まえ、第３の実施形態においては、図８に示したように、次の構成（１）〜（４）を用いている。  
（１）ハッシュ関数計算機能（Ｈ）の入力に非秘密情報Ｔと第１マスクデータＬとの排他的論理和（XOR1）の計算結果を用いている。
【０２０１】
（２）第１の暗号化機能（Ｅk２１）は従来のＥＭＥ／ＣＭＣモードと同等である。  
（３）第３の排他的論理和機能（XOR32〜XOR34）における第２マスクデータＵ，２Ｕ，４Ｕと、第４の排他的論理和機能（XOR32〜XOR34）における第３マスクデータ２Ｍ，４Ｍ，８Ｍとは、同一ブロックにおける各マスクデータの係数が互いにズレている。なお、従来のＥＭＥ／ＣＭＣモードは、同一ブロックにおける各マスクデータの係数が互いに同一である。
【０２０２】
（４）第２の暗号化機能（Ｅk３１〜Ｅk３４）及び第６の排他的論理和計算機能（XOR61〜XOR64）は、従来のＥＭＥ／ＣＭＣモードと同等である。
【０２０３】
これらの構成（１）〜（３）のうち、第１から第３の構成（１）〜（３）により、入力の少しの変化を出力全体に波及させることができる。
【０２０４】
これに加え、第１の構成（１）によれば、セクタ毎に異なる非秘密情報Ｔと共通鍵ｋに関係した第１マスクデータＬとの排他的論理和の値をハッシュ関数の入力に用いることから、攻撃者に第２マスクデータＵの衝突を起こさせにくい効果がある。なお、衝突とは、異なる入力で出力値／中間値が同じになることであり、ここでは、異なる平文データＰ1〜Ｐ4を入力したときに同一のマスクデータＵが生成されてしまうことを衝突と表現している。
【０２０５】
また、第３の構成（３）によれば、各排他的論理和機能において、同一ブロックにおける各マスクデータの係数を互いにズラした構成としたので、従来手法に比べ、マスクデータによる攪拌効果を向上させることができる。
【０２０６】
また、第４の構成（４）によれば、以上の構成（１）〜（３）により攪拌した中間データからブロック毎の暗号文データを作成することができる。なお、第４の構成は、以下の第４及び第５の実施形態に示すように、ビットスライス手法による暗号化機能に置換することができ、あるいは第６の実施形態に示すように、ＣＢＣモードの暗号化機能に置換することもできる。
【０２０７】
また、本実施形態によれば、図１９に示した従来のＥＭＥモードによる暗号化処理（ＣＥＢ１）に代えて、図８に示すように、ハッシュ関数計算機能（Ｈ）を用い、第２マスクデータＵ、２Ｕ、４Ｕを用いた第３の排他的論理和機能（XOR32〜XOR34）などを付加した構成としたが、ハッシュ関数計算機能（Ｈ）に例えばＭＤ４のようなＥＣＢモード暗号化よりも高速なハッシュ関数を用いることにより、従来よりも効率的なセクタ単位での暗号化処理を実現することができる。このことは復号装置２０でも同様である。
【０２０８】
（第４の実施形態）
図１０は本発明の第４の実施形態に係る暗号化装置が暗号化プログラムに基づいて実現する機能を説明するための模式図であり、図１１は同実施形態における復号装置が復号プログラムに基づいて実現する機能を説明するための模式図である。
【０２０９】
すなわち、第４の実施形態は、第３の実施形態の図８に示したＥＣＢモードの暗号化機能（Ｅk１１〜Ｅk１４）に代えて、図１０に示すように、ビットスライス暗号化機能（ＢＳ−Ｅk）及びビットスライス逆変換機能（Ｉ−ＢＳ）を備えた暗号化プログラムｅｐ暗号化装置１０にインストールされた構成となっている。なお、暗号化装置１０のＣＰＵ１４は、暗号化プログラムｅｐに基づいて、図１０及び図２０に示す処理を実行する機能をもっている。
【０２１０】
ここで、暗号化プログラムｅｐによるビットスライス暗号化機能（ＢＳ−Ｅk）は、第５の排他的論理和計算機能（XOR51）により得られた計算結果と、第４の排他的論理和計算機能（XOR42〜XOR44）により得られたブロック毎の計算結果とに対し、ＲＡＭ１２内の共通鍵ｋに基づいてビットスライス手法による暗号化処理を実行し、当該ブロック毎の暗号化結果を得る機能である。
【０２１１】
また、暗号化プログラムｅｐによるビットスライス逆変換機能（Ｉ−ＢＳ）は、ビットスライス暗号化機能（ＢＳ−Ｅk）により得られたブロック毎の暗号化結果に対し、ビットスライス手法によるビットスライス逆変換を実行し、得られたブロック毎のビットスライス逆変換結果をブロック毎の暗号化結果として第６の排他的論理和計算機能（XOR61〜XOR64）に送出する機能である。
【０２１２】
同様に、第４の実施形態は、第３の実施形態の図９に示したＥＣＢモードの復号機能（Ｄk１１〜Ｄk１４）に代えて、図１１に示すように、ビットスライス逆変換機能（Ｉ−ＢＳ）及びビットスライス復号機能（ＢＳ−Ｄk）を備えた復号プログラムｄｐが復号装置２０にインストールされた構成となっている。なお、復号装置２０のＣＰＵ２４は、復号プログラムｄｐに基づいて、図１１及び図２０に示す処理を実行する機能をもっている。
【０２１３】
ここで、復号プログラムｄｐによるビットスライス逆変換機能（Ｉ−ＢＳ）は、第１の排他的論理和計算機能（XOR11〜XOR14）により得られたブロック毎の計算結果に対し、ビットスライス手法によるビットスライス逆変換を実行し、当該ブロック毎のビットスライス逆変換結果を得る機能である。
【０２１４】
また、復号プログラムｄｐによるビットスライス復号機能（ＢＳ−Ｄk）は、ビットスライス逆変換機能により得られたブロック毎のビットスライス逆変換結果に対し、ＲＡＭ２２内の共通鍵ｋに基づいてビットスライス手法による復号処理を実行し、当該ブロック毎の復号結果を得る機能である。
【０２１５】
以上のような構成によれば、第３の実施形態の効果に加え、第１の実施形態と同様に、従来手法のＥＭＥモードにビットスライスの手法をそのまま適用した場合に比べ、暗号化装置１０及び復号装置２０ではそれぞれビットスライス変換機能（ＢＳ）を１層ずつ削減できるので、処理効率を向上させることができる。
【０２１６】
換言すると、第４の実施形態によれば、従来のＥＭＥモードを削除すると共に、ビットスライス用表現への変換の一部を削除して効率化したビットスライス手法の暗号化処理（ＢＳ−Ｅk，Ｉ−ＢＳ）あるいは復号処理（Ｉ−ＢＳ，ＢＳ−Ｄk）と、ハッシュ関数計算機能（Ｈ）と、内部データの攪拌手段としての第３及び第４の排他的論理和機能（XOR32〜XOR34,XOR42〜XOR44,XOR32’〜XOR34’,XOR42’〜XOR44’）とを従来手法に組み合わせることにより、従来のＥＭＥモードと同等の安全性を実現しつつ、全体の処理を効率化することができる。
【０２１７】
なお、図８に示す第３の実施形態による暗号化処理と、図１０に示す第４の実施形態によるＥＭＥモード暗号化とは、平文データと共通鍵ｋとの同じ組み合わせに対しても、図８と図１０で異なる暗号文データを出力することから、互換性が無く、互いに異なる手法である。このことは、図１１に示した復号装置２０においても同様である。しかし、第４の実施形態をセクタ単位での暗号化及び復号に使用する場合には、第３の実施形態の手法とのデータ互換性は必要条件ではない。
【０２１８】
また、暗号化装置１０において、第６の排他的論理和機能（XOR61〜XOR64）とビットスライス逆変換機能（Ｉ−ＢＳ）との間での順序の入れ替えは、一般性を損なうことなく可能である。
【０２１９】
同様に、復号装置２０において、第１の排他的論理和機能（XOR11〜XOR14）とビットスライス逆変換機能（Ｉ−ＢＳ）との間での順序の入れ替えは、一般性を損なうことなく可能である。
【０２２０】
（第５の実施形態）
図１２は本発明の第５の実施形態に係る暗号化装置が暗号化プログラムに基づいて実現する機能を説明するための模式図であり、図１３は同実施形態における復号装置が復号プログラムに基づいて実現する機能を説明するための模式図である。
【０２２１】
すなわち、第５の実施形態は、第４の実施形態の図１０及び図１１に示した各機能に比べ、図１２及び図１３に示すように、ビットスライス逆変換機能（Ｉ−ＢＳ）を省略した各機能を実現するための暗号化プログラムｅｐ及び復号プログラムｄｐがそれぞれ暗号化装置１０及び復号装置２０にインストールされた構成となっている。なお、各装置１０，２０のＣＰＵ１４，２４は、各プログラムｅｐ，ｄｐに基づいて、図１２、図２０及び図１３に示す処理を実行する機能をもっている。
【０２２２】
ここで、暗号化プログラムｅｐによるビットスライス暗号化機能（ＢＳ−Ｅk）は、第５の排他的論理和計算機能（XOR51）により得られた計算結果と、第４の排他的論理和計算機能（XOR42〜XOR44）により得られたブロック毎の計算結果とに対し、ＲＡＭ１２内の共通鍵ｋに基づいてビットスライス手法による暗号化処理を実行し、得られたブロック毎の暗号化結果を第６の排他的論理和計算機能（XOR61〜XOR64）に送出する機能である。
【０２２３】
同様に、復号プログラムｄｐによるビットスライス復号機能（ＢＳ−Ｄk）は、第１の排他的論理和計算機能（XOR11〜XOR14）により得られたブロック毎の計算結果に対し、ＲＡＭ２２内の共通鍵ｋに基づいてビットスライス手法による復号処理を実行し、当該ブロック毎の復号結果を得る機能である。
【０２２４】
以上のような構成の第５の実施形態によれば、第４の実施形態に比べ、暗号化装置１０及び復号装置２０がそれぞれビットスライス逆変換機能（Ｉ−ＢＳ）を更に省略した構成により、安全性を低下させることなく、より一層、全体の処理を効率化でき、第４の実施形態よりも高速に実行することができる。
【０２２５】
補足すると、ビットスライス逆変換機能（Ｉ−ＢＳ）がビット転置処理であり、平文乃至暗号文に対する線形演算に相当し安全性に寄与しないことから、この機能（Ｉ−ＢＳ）を省略しても、安全性を低下させることなく、全体の処理を効率化することができる。
【０２２６】
（第６の実施形態）
図１４は本発明の第６の実施形態に係る暗号化装置が暗号化プログラムに基づいて実現する機能を説明するための模式図であり、図１５は同実施形態における復号装置が復号プログラムに基づいて実現する機能を説明するための模式図である。
【０２２７】
すなわち、第６の実施形態は、第３の実施形態の図８に示した各機能に比べ、図１４に示すように、ＥＣＢモードの暗号化機能（ＥＣＢ２）及び第６の排他的論理和機能（XOR61〜XOR64）に代えて、ＣＢＣモードを構成する暗号化機能（Ｅk３１〜Ｅk３４）及び第６の排他的論理和機能（XOR61〜XOR63）を備えた各機能を実現するための暗号化プログラムｅｐが暗号化装置１０にインストールされた構成となっている。
【０２２８】
同様に、第６の実施形態は、第３の実施形態の図９に示したＥＣＢモードの復号機能（Ｄｋ１１〜Ｄk１４）に代えて、図１５に示すように、ＣＢＣモードを構成する復号機能（Ｄk１１〜Ｄk１４）及び第１の排他的論理和機能（XOR12〜XOR14）を備えた各機能を実現するための復号プログラムｄｐが復号装置２０にインストールされた構成となっている。なお、各装置１０，２０のＣＰＵ１４，２４は、各プログラムｅｐ，ｄｐに基づいて、図１４、図２０及び図１５に示す処理を実行する機能をもっている。
【０２２９】
以上のような構成によれば、第３の実施形態の作用効果と従来のＣＢＣモードの作用効果とを組み合わせた作用効果を奏することができる。
【０２３０】
すなわち、第６の実施形態によれば、ハッシュ関数計算機能（Ｈ）と、内部データの攪拌手段としての第３及び第４の排他的論理和機能（XOR32〜XOR34,XOR42〜XOR44,XOR32’〜XOR34’,XOR42’〜XOR44’）と、ＣＢＣモードによる暗号化機能（ＣＢＣ２）あるいは復号機能（Ｄk１１〜Ｄk１４）を組み合わせることにより、従来のＣＭＣモードと同等の安全性を実現しつつ、全体の処理を効率化することができる。
【０２３１】
＜各実施形態の補足説明＞
（入出力データのサイズ）
各実施形態において、入出力データのサイズ、すなわちセクタの単位は６４バイトとして説明したが、６４バイトに制限されるものではない。例えば、ハードディスクのセクタとして一般的な５１２バイトの場合、各実施形態を説明する図における平文Ｐ1乃至Ｐ4は、それぞれＰ1乃至Ｐ32に一般性を損なうことなく拡張される。例えば、第３の実施形態の図８及び図９における平文データＰ1乃至Ｐ4は、図１６及び図１７に示すように、平文データＰ1乃至Ｐ32に拡張される。これらの拡張は、特には図示しないが、他の各実施形態でも同様に行われる。
【０２３２】
（ガロア体上のｘ倍演算）
各実施形態において、２Ｌ乃至８Ｌの計算や２Ｍ乃至８Ｍの計算といったガロア体ＧＦ（２n）のｘ倍演算は、例えばｎ＝１２８によるガロア体ＧＦ（２128）上のｘ倍演算“xtime128()”（xt1〜xt4；図２０）が利用可能である。なお、ガロア体ＧＦ（２128）上のｘ倍演算に用いる既約多項式は、原始多項式であることが望ましいが、例えばｘ128＋ｘ7＋ｘ2＋ｘ＋１といった広く一般に知られている原始多項式であってもよい。
【０２３３】
ビットスライス手法を用いた各実施形態において、ガロア体上のｘ倍演算を、ビットスライス手法で用いる演算ビット幅と同一とすることにより、ｘ倍演算の処理負荷を低減し、処理を効率化できる。
【０２３４】
より具体的には、３２ビットＣＰＵにおけるビットスライス手法では、演算ビット幅は３２ビットであることが望ましい。すなわち、本発明による、例えば６４バイトのセクタ単位での暗号化にビットスライス手法を用いる場合、１６バイトの４つのブロックは、３２ビット（すなわち４バイト）の１６個の入力変数からなるビットスライス処理用表現に変換される。５１２バイトのセクタ単位の場合、同様にビットスライス処理用の３２ビットの入力変数は１２８個となる。
【０２３５】
ここで、ガロア体上のｘ倍演算を、ＧＦ（２32）上で行うと仮定すると、次数が３２であるため、ある３２ビットの値からｘ倍演算を用いて生成する値は、安全性の観点から３２個以下であることが望ましい。
【０２３６】
ここで、各実施形態におけるＬ、Ｕ、Ｍなどは、ＡＥＳ暗号の出力する１２８ビットのデータであるため、３２ビットあるいは６４ビットのブロックに分割しても、ブロック間のビットが無相関であるという性質がある。この性質に伴い、図１８に示すように、１２８ビットを３２ビットの４つのブロックに分割し、それぞれ個別にガロア体上のｘ倍演算を行うことにより、５１２バイトのセクタ単位の処理において、ビットスライス処理及びガロア体上のｘ倍演算の単位を３２ビットで効率的に実装することが可能となる。換言すると、第１〜第３マスクデータ生成機能は、ブロック毎のブロック幅のビット数（例、１１２８ビット）よりも小さい次数（例、次数３２）の有限体の乗算処理を実行するように実装することが可能である。具体的には、例えば、図８における、各マスクデータＵ及びＭはそれぞれ３２ビットの各マスク部分データＵ０、Ｕ１、Ｕ２、Ｕ３と、Ｍ０、Ｍ１、Ｍ２、Ｍ３に分割し、第３の排他的論理和計算機能（XOR32〜XOR34）及び第４の排他的論理和計算機能（XOR42〜XOR44）は、各マスクデータを３２ビット単位で数えた位置を４で割った余りに対応した各マスク部分データＵ０、Ｕ１、Ｕ２、Ｕ３あるいはＭ０、Ｍ１、Ｍ２、Ｍ３を初期値とするｘ倍演算結果との排他的論理和を計算する。
【０２３７】
なお、ガロア体ＧＦ（２32）上のｘ倍演算に用いる既約多項式は、原始多項式であることが望ましいが、例えばｘ32＋ｘ7＋ｘ6＋ｘ5＋ｘ3＋ｘ2＋ｘ＋１やｘ32＋ｘ7＋ｘ6＋ｘ2＋ｘ＋１といった広く一般に知られている原始多項式であってもよい。
【０２３８】
また、６４ビットＣＰＵにおけるビットスライス手法も、一般性を損なうことなく同様の効率化が可能である。このとき、ガロア体ＧＦ（２64）上のｘ倍演算に用いる既約多項式は、原始多項式であることが望ましいが、例えばｘ64＋ｘ4＋ｘ3＋ｘ＋１といった広く一般に知られている原始多項式であってもよい。
【０２３９】
なお、上記実施形態に記載した手法は、コンピュータに実行させることのできるプログラムとして、磁気ディスク（フロッピー（登録商標）ディスク、ハードディスクなど）、光ディスク（ＣＤ−ＲＯＭ、ＤＶＤなど）、光磁気ディスク（ＭＯ）、半導体メモリなどの記憶媒体に格納して頒布することもできる。
【０２４０】
また、この記憶媒体としては、プログラムを記憶でき、かつコンピュータが読み取り可能な記憶媒体であれば、その記憶形式は何れの形態であっても良い。
【０２４１】
また、記憶媒体からコンピュータにインストールされたプログラムの指示に基づきコンピュータ上で稼働しているＯＳ（オペレーティングシステム）や、データベース管理ソフト、ネットワークソフト等のＭＷ（ミドルウェア）等が上記実施形態を実現するための各処理の一部を実行しても良い。
【０２４２】
さらに、本発明における記憶媒体は、コンピュータと独立した媒体に限らず、ＬＡＮやインターネット等により伝送されたプログラムをダウンロードして記憶または一時記憶した記憶媒体も含まれる。
【０２４３】
また、記憶媒体は１つに限らず、複数の媒体から上記実施形態における処理が実行される場合も本発明における記憶媒体に含まれ、媒体構成は何れの構成であっても良い。
【０２４４】
尚、本発明におけるコンピュータは、記憶媒体に記憶されたプログラムに基づき、上記実施形態における各処理を実行するものであって、パソコン等の１つからなる装置、複数の装置がネットワーク接続されたシステム等の何れの構成であっても良い。
【０２４５】
また、本発明におけるコンピュータとは、パソコンに限らず、情報処理機器に含まれる演算処理装置、マイコン等も含み、プログラムによって本発明の機能を実現することが可能な機器、装置を総称している。
【０２４６】
なお、本願発明は、上記実施形態そのままに限定されるものではなく、実施段階ではその要旨を逸脱しない範囲で構成要素を変形して具体化できる。また、上記実施形態に開示されている複数の構成要素の適宜な組合せにより種々の発明を形成できる。例えば、実施形態に示される全構成要素から幾つかの構成要素を削除してもよい。更に、異なる実施形態に亘る構成要素を適宜組合せてもよい。
【図面の簡単な説明】
【０２４７】
【図１】本発明の第１の実施形態に係る暗号化装置の構成を示す模式図である。
【図２】同実施形態における暗号化処理を説明するための模式図である。
【図３】同実施形態におけるビットスライス変換及びビットスライス逆変換を説明するための模式図である。
【図４】同実施形態における復号装置の構成を示す模式図である。
【図５】同実施形態における復号処理を説明するための模式図である。
【図６】本発明の第２の実施形態における暗号化処理を説明するための模式図である。
【図７】同実施形態における復号処理を説明するための模式図である。
【図８】本発明の第３の実施形態に係る暗号化処理を説明するための模式図である。
【図９】同実施形態における復号処理を説明するための模式図である。
【図１０】本発明の第４の実施形態における暗号化処理を説明するための模式図である。
【図１１】同実施形態における復号処理を説明するための模式図である。
【図１２】本発明の第５の実施形態における暗号化処理を説明するための模式図である。
【図１３】同実施形態における復号処理を説明するための模式図である。
【図１４】本発明の第６の実施形態における暗号化処理を説明するための模式図である。
【図１５】同実施形態における復号処理を説明するための模式図である。
【図１６】第３の実施形態における入出力データの拡張例を説明するための模式図である。
【図１７】第３の実施形態における入出力データの拡張例を説明するための模式図である。
【図１８】各実施形態におけるｘ倍演算の変形例を説明するための模式図である。
【図１９】従来のＥＭＥモードにおける暗号化処理を説明するための模式図である。
【図２０】一般的なラベルＬ，２Ｌ，４Ｌ，８Ｌの生成処理を説明するための模式図である。
【図２１】従来のＥＭＥモードにおける復号処理を説明するための模式図である。
【図２２】従来のＣＭＣモードにおける暗号化処理を説明するための模式図である。
【図２３】従来のＣＭＣモードにおける復号処理を説明するための模式図である。
【符号の説明】
【０２４８】
１０…暗号化装置、１１，２１…ＲＯＭ、１２，２２…ＲＡＭ、１３，２３…不揮発性メモリ、１４，２４…ＣＰＵ、１５，２５…入出力部、１６，２６…バス、２０…復号装置、Ｌ〜８Ｌ，Ｍ〜８Ｌ，Ｕ〜４Ｕ…マスクデータ、Ｔ…非秘密情報、Ｐ1〜Ｐ4…平文データ、Ｃ1〜Ｃ4…平文データ、XOR1,XOR2,XOR5,XOR6,XOR11〜XOR14，XOR21,XOR31,XOR32〜XOR34,XOR42〜XOR44,XOR51,XOR61〜XOR64…排他的論理和機能、ＢＳ…ビットスライス変換機能、Ｉ−ＢＳ…ビットスライス逆変換機能、ＢＳ−Ｅk１，ＢＳ−Ｅk２…ビットスライス暗号化機能、ＢＳ−Ｄk１，ＢＳ−Ｄk２…ビットスライス復号機能、Ｅk２１…暗号化機能、Ｄk２１…復号機能、Ｈ…ハッシュ関数計算機能。
【図１】
2009175196.tif 000003
【図２】
2009175196.tif 000004
【図３】
2009175196.tif 000005
【図４】
2009175196.tif 000006
【図５】
2009175196.tif 000007
【図６】
2009175196.tif 000008
【図７】
2009175196.tif 000009
【図８】
2009175196.tif 000010
【図９】
2009175196.tif 000011
【図１０】
2009175196.tif 000012
【図１１】
2009175196.tif 000013
【図１２】
2009175196.tif 000014
【図１３】
2009175196.tif 000015
【図１４】
2009175196.tif 000016
【図１５】
2009175196.tif 000017
【図１６】
2009175196.tif 000018
【図１７】
2009175196.tif 000019
【図１８】
2009175196.tif 000020
【図１９】
2009175196.tif 000021
【図２０】
2009175196.tif 000022
【図２１】
2009175196.tif 000023
【図２２】
2009175196.tif 000024
【図２３】
2009175196.tif 000025