(57)【特許請求の範囲】
【請求項１】
暗号化装置と復号装置を有する暗号化システムであって、
Ｋを前記暗号化装置と前記復号装置の両方で共有する秘密鍵、Ａを追加認証データ、Ｍをメッセージ、Ｃを暗号文、Ｔをタグ、Ｋ，Ａ，Ｍをビット列、Ｎをすべてのビットが“０”のビット列を除くビット列、ｒ，ｃ，ｂ，Ｐ，Ｑ，Ｕを１以上の整数、ｂ＝ｒ＋ｃ、ｐを１以上Ｐ以下の整数、ｑを１以上Ｑ以下の整数、ｕを１以上Ｕ以下の整数、Ｓをあらかじめ定めた１以上の整数、ｓを１以上Ｓ以下の整数、ｆをｂビットの置換演算、ｇを０〜２ｃ−１の整数からなる有限体の元と０と１以外のあらかじめ定めた定数との有限体上での乗算とし、
ステートを、あらかじめ定められたｒビットがレート部分、ｃビットがキャパシティ部分であるｂビットのビット列とし、
前記暗号化装置は、
Ｎを選択し、ＮとＫを用いてｂビットの暗号化用初期値を生成し、前記暗号化用初期値をｆにより置換した結果をステートとする暗号化用初期値設定部と、
追加認証データＡのヘッダＡ’を、パディングを用いてｂビットごとの追加認証データブロックａ１’，…，ａＱ’に分割する暗号化用追加認証データヘッダ分割部と、
メッセージＭを、パディングを用いてｒビットごとのメッセージブロックｍ１，…，ｍＰに分割するメッセージ分割部と、
追加認証データＡのトレイラＡ”が存在する場合は、追加認証データＡのトレイラＡ”を、パディングを用いてｂビットごとの追加認証データブロックａ１”，…，ａＵ”に分割する暗号化用追加認証データトレイラ分割部と、
ステートに対して追加認証データブロックａｑ’との排他的論理和を計算し、さらにｆにより置換した結果を新たなステートとする処理を、ｑ＝１からｑ＝Ｑまで繰り返す暗号化用追加認証データヘッダ計算部と、
（１）ステートのレート部分に対してメッセージブロックｍｐとの排他的論理和を計算し、計算結果をｒビットの暗号ブロックｄｐとするとともに、ステートのレート部分を当該計算結果に置き換えた上でｆにより置換した結果を新たなステートとする処理を、ｐ＝１からｐ＝Ｐ−１まで繰り返し、
（２）ステートのレート部分に対してメッセージブロックｍＰとの排他的論理和を計算し、計算結果をｒビットの暗号ブロックｄＰとするともに、ステートのレート部分を当該計算結果に置き換え、キャパシティ部分のｃビットを０〜２ｃ−１の整数からなる有限体として扱ってｇによる乗算を行った上で、ｆにより置換した結果を新たなステートとする処理を行い、
（３）暗号ブロックｄ１，…，ｄＰの結合処理を用いて暗号文Ｃを求める
暗号化部と、
追加認証データＡのトレイラＡ”が存在する場合は、ステートに対して追加認証データブロックａｕ”との排他的論理和を計算し、さらにｆにより置換した結果を新たなステートとする処理を、ｕ＝１からｕ＝Ｕまで繰り返す暗号化用追加認証データトレイラ計算部と、
Ｓ＝１の場合はステートのレート部分からタグＴを求め、Ｓ≧２の場合は、ステートのレート部分をタグブロックｔ１とし、さらに、ステートをｆにより置換した結果を新たなステートとしてレート部分をタグブロックｔｓとする処理をｓ＝２からｓ＝Ｓまで繰り返し、タグブロックｔ１，…，ｔＳを用いてタグＴを求める暗号化用タグ計算部と、
Ｃ，Ｔ，Ａ，Ｎの組を出力する出力部と、
を備え、
前記復号装置は、
Ｃ，Ｔ，Ａ，Ｎの組を取得する入力部と、
ＮとＫを用いてｂビットの復号用初期値を生成し、前記復号用初期値をｆにより置換した結果をステートとする復号用初期値設定部と、
追加認証データＡのヘッダＡ’を、パディングを用いてｂビットごとの追加認証データブロックａ１’，…，ａＱ’に分割する復号用追加認証データヘッダ分割部と、
暗号文Ｃを、ｒビットごとの暗号ブロックｄ１，…，ｄＰに分割する暗号文分割部と、
追加認証データＡのトレイラＡ”が存在する場合は、追加認証データＡのトレイラＡ”を、パディングを用いてｂビットごとの追加認証データブロックａ１”，…，ａＵ”に分割する復号用追加認証データトレイラ分割部と、
ステートに対して追加認証データブロックａｑ’との排他的論理和を計算し、さらにｆにより置換した結果を新たなステートとする処理を、ｑ＝１からｑ＝Ｑまで繰り返す復号用追加認証データヘッダ計算部と、
（１）ステートのレート部分に対して暗号ブロックｄｐとの排他的論理和を計算し、計算結果をｒビットのメッセージブロックｍｐ’とするとともに、ステートのレート部分を暗号ブロックｄｐに置き換えた上でｆにより置換した結果を新たなステートとする処理を、ｐ＝１からｐ＝Ｐ−１まで繰り返し、
（２）ステートのレート部分に対して暗号ブロックｄＰとの排他的論理和を計算し、計算結果をｒビットのメッセージブロックｍＰ’とするともに、ステートのレート部分を暗号ブロックｄＰに置き換え、キャパシティ部分のｃビットを０〜２ｃ−１の整数からなる有限体として扱ってｇによる乗算を行った上で、ｆにより置換した結果を新たなステートとする処理を行い、
（３）メッセージブロックｍ１’，…，ｍＰ’からパディングで付加されたビットを取り除いた結合をしてメッセージＭ’とする
復号部と、
追加認証データＡのトレイラＡ”が存在する場合は、ステートに対して追加認証データブロックａｕ”との排他的論理和を計算し、さらにｆにより置換した結果を新たなステートとする処理を、ｕ＝１からｕ＝Ｕまで繰り返す復号用追加認証データトレイラ計算部と、
Ｓ＝１の場合はステートのレート部分からタグＴ’を求め、Ｓ≧２の場合は、ステートのレート部分をタグブロックｔ１’とし、さらに、ステートをｆにより置換した結果を新たなステートとしてレート部分をタグブロックｔｓ’とする処理をｓ＝２からｓ＝Ｓまで繰り返し、タグブロックｔ１’，…，ｔＳ’を用いてタグＴ’を求める復号用タグ計算部と、
タグＴとタグＴ’とを比較する検証部と
を備える
暗号化システム。
【請求項２】
暗号化装置と復号装置を有する暗号化システムであって、
Ｋを前記暗号化装置と前記復号装置の両方で共有する秘密鍵、Ａを追加認証データ、Ｍをメッセージ、Ｃを暗号文、Ｔをタグ、Ｋ，Ａ，Ｍをビット列、Ｎをすべてのビットが“０”のビット列を除くビット列、ｒ，ｃ，ｂ，Ｐ，Ｑ，ｂ＝ｒ＋ｃ、ｐを１以上Ｐ以下の整数、ｑを１以上Ｑ以下の整数、Ｓをあらかじめ定めた１以上の整数、ｓを１以上Ｓ以下の整数、ｆをｂビットの置換演算、ｇを０〜２ｃ−１の整数からなる有限体の元と０と１以外のあらかじめ定めた定数との有限体上での乗算とし、
ステートを、あらかじめ定められたｒビットがレート部分、ｃビットがキャパシティ部分であるｂビットのビット列とし、
前記暗号化装置は、
Ｎを選択し、ＮとＫを用いてｂビットの暗号化用初期値を生成し、前記暗号化用初期値をｆにより置換した結果をステートとする暗号化用初期値設定部と、
追加認証データＡを、パディングを用いてｂビットごとの追加認証データブロックａ１，…，ａＱに分割する暗号化用追加認証データ分割部と、
メッセージＭを、パディングを用いてｒビットごとのメッセージブロックｍ１，…，ｍＰに分割するメッセージ分割部と、
ステートに対して追加認証データブロックａｑとの排他的論理和を計算し、さらにｆにより置換した結果を新たなステートとする処理を、ｑ＝１からｑ＝Ｑまで繰り返す暗号化用追加認証データ計算部と、
（１）ステートのレート部分に対してメッセージブロックｍｐとの排他的論理和を計算し、計算結果をｒビットの暗号ブロックｄｐとするとともに、ステートのレート部分を当該計算結果に置き換えた上でｆにより置換した結果を新たなステートとする処理を、ｐ＝１からｐ＝Ｐ−１まで繰り返し、
（２）ステートのレート部分に対してメッセージブロックｍＰとの排他的論理和を計算し、計算結果をｒビットの暗号ブロックｄＰとするともに、ステートのレート部分を当該計算結果に置き換え、キャパシティ部分のｃビットを０〜２ｃ−１の整数からなる有限体として扱ってｇによる乗算を行った上で、ｆにより置換した結果を新たなステートとする処理を行い、
（３）暗号ブロックｄ１，…，ｄＰの結合処理を用いて暗号文Ｃを求める
暗号化部と、
Ｓ＝１の場合はステートのレート部分からタグＴを求め、Ｓ≧２の場合は、ステートのレート部分をタグブロックｔ１とし、さらに、ステートをｆにより置換した結果を新たなステートとしてレート部分をタグブロックｔｓとする処理をｓ＝２からｓ＝Ｓまで繰り返し、タグブロックｔ１，…，ｔＳを用いてタグＴを求める暗号化用タグ計算部と、
Ｃ，Ｔ，Ａ，Ｎの組を出力する出力部と、
を備え、
前記復号装置は、
Ｃ，Ｔ，Ａ，Ｎの組を取得する入力部と、
ＮとＫを用いてｂビットの復号用初期値を生成し、前記復号用初期値をｆにより置換した結果をステートとする復号用初期値設定部と、
追加認証データＡを、パディングを用いてｂビットごとの追加認証データブロックａ１，…，ａＱに分割する復号用追加認証データ分割部と、
暗号文Ｃを、ｒビットごとの暗号ブロックｄ１，…，ｄＰに分割する暗号文分割部と、
ステートに対して追加認証データブロックａｑとの排他的論理和を計算し、さらにｆにより置換した結果を新たなステートとする処理を、ｑ＝１からｑ＝Ｑまで繰り返す復号用追加認証データ計算部と、
（１）ステートのレート部分に対して暗号ブロックｄｐとの排他的論理和を計算し、計算結果をｒビットのメッセージブロックｍｐ’とするとともに、ステートのレート部分を暗号ブロックｄｐに置き換えた上でｆにより置換した結果を新たなステートとする処理を、ｐ＝１からｐ＝Ｐ−１まで繰り返し、
（２）ステートのレート部分に対して暗号ブロックｄＰとの排他的論理和を計算し、計算結果をｒビットのメッセージブロックｍＰ’とするともに、ステートのレート部分を暗号ブロックｄＰに置き換え、キャパシティ部分のｃビットを０〜２ｃ−１の整数からなる有限体として扱ってｇによる乗算を行った上で、ｆにより置換した結果を新たなステートとする処理を行い、
（３）メッセージブロックｍ１’，…，ｍＰ’からパディングで付加されたビットを取り除いた結合をしてメッセージＭ’とする
復号部と、
Ｓ＝１の場合はステートのレート部分からタグＴ’を求め、Ｓ≧２の場合は、ステートのレート部分をタグブロックｔ１’とし、さらに、ステートをｆにより置換した結果を新たなステートとしてレート部分をタグブロックｔｓ’とする処理をｓ＝２からｓ＝Ｓまで繰り返し、タグブロックｔ１’，…，ｔＳ’を用いてタグＴ’を求める復号用タグ計算部と、
タグＴとタグＴ’とを比較する検証部と
を備える
暗号化システム。
【請求項３】
請求項１記載の暗号化システムであって、
追加認証データＡのヘッダＡ’とトレイラＡ”に対するパディングは１０＊１パディングである
ことを特徴とする暗号化システム。
【請求項４】
請求項２記載の暗号化システムであって、
追加認証データＡに対するパディングは１０＊１パディングである
ことを特徴とする暗号化システム。
【請求項５】
請求項１から４のいずれかに記載の暗号化システムが有する暗号化装置。
【請求項６】
請求項１から４のいずれかに記載の暗号化システムが有する復号装置。
【請求項７】
暗号化装置と復号装置を用いる暗号化方法であって、
Ｋを前記暗号化装置と前記復号装置の両方で共有する秘密鍵、Ａを追加認証データ、Ｍをメッセージ、Ｃを暗号文、Ｔをタグ、Ｋ，Ａ，Ｍをビット列、Ｎをすべてのビットが“０”のビット列を除くビット列、ｒ，ｃ，ｂ，Ｐ，Ｑ，Ｕを１以上の整数、ｂ＝ｒ＋ｃ、ｐを１以上Ｐ以下の整数、ｑを１以上Ｑ以下の整数、ｕを１以上Ｕ以下の整数、Ｓをあらかじめ定めた１以上の整数、ｓを１以上Ｓ以下の整数、ｆをｂビットの置換演算、ｇを０〜２ｃ−１の整数からなる有限体の元と０と１以外のあらかじめ定めた定数との有限体上での乗算とし、
ステートを、あらかじめ定められたｒビットがレート部分、ｃビットがキャパシティ部分であるｂビットのビット列とし、
前記暗号化装置が、
Ｎを選択し、ＮとＫを用いてｂビットの暗号化用初期値を生成し、前記暗号化用初期値をｆにより置換した結果をステートとする暗号化用初期値設定ステップと、
追加認証データＡのヘッダＡ’を、パディングを用いてｂビットごとの追加認証データブロックａ１’，…，ａＱ’に分割する暗号化用追加認証データヘッダ分割ステップと、
メッセージＭを、パディングを用いてｒビットごとのメッセージブロックｍ１，…，ｍＰに分割するメッセージ分割ステップと、
追加認証データＡのトレイラＡ”が存在する場合は、追加認証データＡのトレイラＡ”を、パディングを用いてｂビットごとの追加認証データブロックａ１”，…，ａＵ”に分割する暗号化用追加認証データトレイラ分割ステップと、
ステートに対して追加認証データブロックａｑ’との排他的論理和を計算し、さらにｆにより置換した結果を新たなステートとする処理を、ｑ＝１からｑ＝Ｑまで繰り返す暗号化用追加認証データヘッダ計算ステップと、
（１）ステートのレート部分に対してメッセージブロックｍｐとの排他的論理和を計算し、計算結果をｒビットの暗号ブロックｄｐとするとともに、ステートのレート部分を当該計算結果に置き換えた上でｆにより置換した結果を新たなステートとする処理を、ｐ＝１からｐ＝Ｐ−１まで繰り返し、
（２）ステートのレート部分に対してメッセージブロックｍＰとの排他的論理和を計算し、計算結果をｒビットの暗号ブロックｄＰとするともに、ステートのレート部分を当該計算結果に置き換え、キャパシティ部分のｃビットを０〜２ｃ−１の整数からなる有限体として扱ってｇによる乗算を行った上で、ｆにより置換した結果を新たなステートとする処理を行い、
（３）暗号ブロックｄ１，…，ｄＰの結合処理を用いて暗号文Ｃを求める
暗号化ステップと、
追加認証データＡのトレイラＡ”が存在する場合は、ステートに対して追加認証データブロックａｕ”との排他的論理和を計算し、さらにｆにより置換した結果を新たなステートとする処理を、ｕ＝１からｕ＝Ｕまで繰り返す暗号化用追加認証データトレイラ計算ステップと、
Ｓ＝１の場合はステートのレート部分からタグＴを求め、Ｓ≧２の場合は、ステートのレート部分をタグブロックｔ１とし、さらに、ステートをｆにより置換した結果を新たなステートとしてレート部分をタグブロックｔｓとする処理をｓ＝２からｓ＝Ｓまで繰り返し、タグブロックｔ１，…，ｔＳを用いてタグＴを求める暗号化用タグ計算ステップと、
Ｃ，Ｔ，Ａ，Ｎの組を出力する出力ステップと、
を実行し、
前記復号装置が、
Ｃ，Ｔ，Ａ，Ｎの組を取得する入力ステップと、
ＮとＫを用いてｂビットの復号用初期値を生成し、前記復号用初期値をｆにより置換した結果をステートとする復号用初期値設定ステップと、
追加認証データＡのヘッダＡ’を、パディングを用いてｂビットごとの追加認証データブロックａ１’，…，ａＱ’に分割する復号用追加認証データヘッダ分割ステップと、
暗号文Ｃを、ｒビットごとの暗号ブロックｄ１，…，ｄＰに分割する暗号文分割ステップと、
追加認証データＡのトレイラＡ”が存在する場合は、追加認証データＡのトレイラＡ”を、パディングを用いてｂビットごとの追加認証データブロックａ１”，…，ａＵ”に分割する復号用追加認証データトレイラ分割ステップと、
ステートに対して追加認証データブロックａｑ’との排他的論理和を計算し、さらにｆにより置換した結果を新たなステートとする処理を、ｑ＝１からｑ＝Ｑまで繰り返す復号用追加認証データヘッダ計算ステップと、
（１）ステートのレート部分に対して暗号ブロックｄｐとの排他的論理和を計算し、計算結果をｒビットのメッセージブロックｍｐ’とするとともに、ステートのレート部分を暗号ブロックｄｐに置き換えた上でｆにより置換した結果を新たなステートとする処理を、ｐ＝１からｐ＝Ｐ−１まで繰り返し、
（２）ステートのレート部分に対して暗号ブロックｄＰとの排他的論理和を計算し、計算結果をｒビットのメッセージブロックｍＰ’とするともに、ステートのレート部分を暗号ブロックｄＰに置き換え、キャパシティ部分のｃビットを０〜２ｃ−１の整数からなる有限体として扱ってｇによる乗算を行った上で、ｆにより置換した結果を新たなステートとする処理を行い、
（３）メッセージブロックｍ１’，…，ｍＰ’からパディングで付加されたビットを取り除いた結合をしてメッセージＭ’とする
復号ステップと、
追加認証データＡのトレイラＡ”が存在する場合は、ステートに対して追加認証データブロックａｕ”との排他的論理和を計算し、さらにｆにより置換した結果を新たなステートとする処理を、ｕ＝１からｕ＝Ｕまで繰り返す復号用追加認証データトレイラ計算ステップと、
Ｓ＝１の場合はステートのレート部分からタグＴ’を求め、Ｓ≧２の場合は、ステートのレート部分をタグブロックｔ１’とし、さらに、ステートをｆにより置換した結果を新たなステートとしてレート部分をタグブロックｔｓ’とする処理をｓ＝２からｓ＝Ｓまで繰り返し、タグブロックｔ１’，…，ｔＳ’を用いてタグＴ’を求める復号用タグ計算ステップと、
タグＴとタグＴ’とを比較する検証ステップと
を実行する
暗号化方法。
【請求項８】
暗号化装置と復号装置を用いる暗号化方法であって、
Ｋを前記暗号化装置と前記復号装置の両方で共有する秘密鍵、Ａを追加認証データ、Ｍをメッセージ、Ｃを暗号文、Ｔをタグ、Ｋ，Ａ，Ｍをビット列、Ｎをすべてのビットが“０”のビット列を除くビット列、ｒ，ｃ，ｂ，Ｐ，Ｑ，ｂ＝ｒ＋ｃ、ｐを１以上Ｐ以下の整数、ｑを１以上Ｑ以下の整数、Ｓをあらかじめ定めた１以上の整数、ｓを１以上Ｓ以下の整数、ｆをｂビットの置換演算、ｇを０〜２ｃ−１の整数からなる有限体の元と０と１以外のあらかじめ定めた定数との有限体上での乗算とし、
ステートを、あらかじめ定められたｒビットがレート部分、ｃビットがキャパシティ部分であるｂビットのビット列とし、
前記暗号化装置が、
Ｎを選択し、ＮとＫを用いてｂビットの暗号化用初期値を生成し、前記暗号化用初期値をｆにより置換した結果をステートとする暗号化用初期値設定ステップと、
追加認証データＡを、パディングを用いてｂビットごとの追加認証データブロックａ１，…，ａＱに分割する暗号化用追加認証データ分割ステップと、
メッセージＭを、パディングを用いてｒビットごとのメッセージブロックｍ１，…，ｍＰに分割するメッセージ分割ステップと、
ステートに対して追加認証データブロックａｑとの排他的論理和を計算し、さらにｆにより置換した結果を新たなステートとする処理を、ｑ＝１からｑ＝Ｑまで繰り返す暗号化用追加認証データ計算ステップと、
（１）ステートのレート部分に対してメッセージブロックｍｐとの排他的論理和を計算し、計算結果をｒビットの暗号ブロックｄｐとするとともに、ステートのレート部分を当該計算結果に置き換えた上でｆにより置換した結果を新たなステートとする処理を、ｐ＝１からｐ＝Ｐ−１まで繰り返し、
（２）ステートのレート部分に対してメッセージブロックｍＰとの排他的論理和を計算し、計算結果をｒビットの暗号ブロックｄＰとするともに、ステートのレート部分を当該計算結果に置き換え、キャパシティ部分のｃビットを０〜２ｃ−１の整数からなる有限体として扱ってｇによる乗算を行った上で、ｆにより置換した結果を新たなステートとする処理を行い、
（３）暗号ブロックｄ１，…，ｄＰの結合処理を用いて暗号文Ｃを求める
暗号化ステップと、
Ｓ＝１の場合はステートのレート部分からタグＴを求め、Ｓ≧２の場合は、ステートのレート部分をタグブロックｔ１とし、さらに、ステートをｆにより置換した結果を新たなステートとしてレート部分をタグブロックｔｓとする処理をｓ＝２からｓ＝Ｓまで繰り返し、タグブロックｔ１，…，ｔＳを用いてタグＴを求める暗号化用タグ計算ステップと、
Ｃ，Ｔ，Ａ，Ｎの組を出力する出力ステップと、
を実行し、
前記復号装置が、
Ｃ，Ｔ，Ａ，Ｎの組を取得する入力ステップと、
ＮとＫを用いてｂビットの復号用初期値を生成し、前記復号用初期値をｆにより置換した結果をステートとする復号用初期値設定ステップと、
追加認証データＡを、パディングを用いてｂビットごとの追加認証データブロックａ１，…，ａＱに分割する復号用追加認証データ分割ステップと、
暗号文Ｃを、ｒビットごとの暗号ブロックｄ１，…，ｄＰに分割する暗号文分割ステップと、
ステートに対して追加認証データブロックａｑとの排他的論理和を計算し、さらにｆにより置換した結果を新たなステートとする処理を、ｑ＝１からｑ＝Ｑまで繰り返す復号用追加認証データ計算ステップと、
（１）ステートのレート部分に対して暗号ブロックｄｐとの排他的論理和を計算し、計算結果をｒビットのメッセージブロックｍｐ’とするとともに、ステートのレート部分を暗号ブロックｄｐに置き換えた上でｆにより置換した結果を新たなステートとする処理を、ｐ＝１からｐ＝Ｐ−１まで繰り返し、
（２）ステートのレート部分に対して暗号ブロックｄＰとの排他的論理和を計算し、計算結果をｒビットのメッセージブロックｍＰ’とするともに、ステートのレート部分を暗号ブロックｄＰに置き換え、キャパシティ部分のｃビットを０〜２ｃ−１の整数からなる有限体として扱ってｇによる乗算を行った上で、ｆにより置換した結果を新たなステートとする処理を行い、
（３）メッセージブロックｍ１’，…，ｍＰ’からパディングで付加されたビットを取り除いた結合をしてメッセージＭ’とする
復号ステップと、
Ｓ＝１の場合はステートのレート部分からタグＴ’を求め、Ｓ≧２の場合は、ステートのレート部分をタグブロックｔ１’とし、さらに、ステートをｆにより置換した結果を新たなステートとしてレート部分をタグブロックｔｓ’とする処理をｓ＝２からｓ＝Ｓまで繰り返し、タグブロックｔ１’，…，ｔＳ’を用いてタグＴ’を求める復号用タグ計算ステップと、
タグＴとタグＴ’とを比較する検証ステップと
を実行する
暗号化方法。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、追加認証データ付きの認証暗号を実行する暗号化システム、暗号化装置、復号装置、暗号化方法に関する。
【背景技術】
【０００２】
追加認証データ付認証暗号とは、メッセージＭの秘匿および、Ｍと追加認証データＡの認証（改ざん検知）を同時に行う共通鍵暗号プリミティブである。暗号化関数と復号関数の２つの関数から構成される。追加認証データ認証暗号では、受信者と送信者はあらかじめ秘密の鍵Ｋを共有しておく。送信者は、メッセージＭ、追加認証データＡに加えて、暗号化関数を呼び出すたびに変化する値（ナンスと呼ばれる）Ｎを選択する。暗号化関数は、Ｍ，Ａ，Ｎに対応する暗号文ＣとタグＴを生成し、（Ｃ，Ｔ，Ａ，Ｎ）の組を受信者に送る。受信者は（Ｃ，Ｔ，Ａ，Ｎ）を受け取るが、この時点でこれらの値が悪意ある第三者によって改ざんされていないという保証がない。受信者は受け取った（Ｃ，Ｔ，Ａ，Ｎ）と自分が保有するＫを用いて復号関数を計算する。復号関数は、メッセージＭ’とタグＴ’を計算する。計算して得られたＴ’と受信したＴが同じ値であれば、受け取った（Ｃ，Ｔ，Ａ，Ｎ）は正しい値であると判断し、復号されたメッセージとしてＭ’を出力する。Ｔ≠Ｔ’であれば、復号に失敗した（データが改ざんされた）という結果を出力する。
【０００３】
非特許文献１に記載されているSPONGEWRAPは、認証暗号の暗号化関数と復号関数の構成法である。保証したい安全性レベル(ビット数)に比べて比較的大きなサイズの置換（bijective map）を用いて暗号化関数、復号関数を構成するという特徴を持つ。
【０００４】
＜SPONGEWRAP＞
SPONGEWRAPの暗号化関数は、ステートと呼ばれるｂビットのデータを、ｂビットの置換ｆ：｛０，１｝ｂ→｛０，１｝ｂと入力データ（Ｎ，Ａ，Ｍ）と鍵Ｋを用いて繰り返しアップデートを行いながらＣとＴを計算する。またｂビットのステートは、レートと呼ばれるｒビットと、キャパシティと呼ばれるｃ（＝ｂ−ｒ）ビットに分割される。暗号化関数の計算の際、ステートの値は予め定められた初期値ＩＶと呼ばれるｂビットの値に初期化され（例えばＩＶ＝０）、ｆによりｂビットの置換が行われ、ステートが更新される。暗号化関数の具体的な計算手順は以下の手順１から手順４で説明される通りである。図１に、SPONGEWRAPの暗号化での計算構造を示す。
【０００５】
＜手順１＞
鍵Ｋをｒ−１ビット毎に分割する。最終ブロックでは１０＊パディングと呼ばれるパディング処理を施す。具体的には、最終ブロックのビット長がｒ−１ビットより短い場合には、１ビットの値“１”を与し、その後ｒ−１ビットになるまでビット“０”を付与する。最終ブロックのビット長が丁度ｒ−１ビットの場合には、次のブロックの先頭のビットとして 1 ビットの値“１”を与し、その後ｒ−１ビットになるまでビット“０”を付与する。
【０００６】
Ｋをｒ−１ビット毎に分割したそれぞれの値に、フレームビットと呼ばれる１ビットの値を連結し、ｒビットにする。具体的には、最初のブロックから最終ブロックの一つ手前のブロックまではフレームビットを“０”とし、最終ブロックのみフレームビットを“１”とする。ｂビットのステートのうちレート部分のｒビットに対し、Ｋとフレームビットを連結したｒビットの値との排他的論理和を計算し、置換ｆを計算する。ｆの出力を新たなステート値とする。この操作をＫの最終ブロックが排他的論理和されるまで続ける。なお、この処理まではあらかじめ行っておくことができるので、手順１までを初期化と呼んでもよい。
【０００７】
＜手順２＞
ナンスＮと追加認証データＡを連結し、ｒ−１ビット毎に分割する。最終ブロックに対しては１０＊パディングを施す。ＮとＡの連結をｒ−１ビット毎に分割したそれぞれの値に、１ビットのフレームビットを連結し、ｒビットにする。具体的には、最初のブロックから最終ブロックの一つ手前のブロックまではフレームビットを“０”とし、最終ブロックのみフレームビットを“１”とする。ｂビットのステートのうち、レート部分のｒビットに対し、ＮもしくはＡとフレームビットを連結した ｒビットの値との排他的論理和を計算し、置換ｆを計算する。ｆの出力を新たなステート値とする。この操作をＮ，Ａの最終ブロックが排他的論理和されるまで続ける。
【０００８】
＜手順３＞
メッセージＭをｒ−１ビット毎に分割する。最終ブロックに対しては１０＊パディングを施す。Ｍの連結をｒ−１ビット毎に分割したそれぞれの値に、１ビットのフレームビットを連結し、ｒビットにする。具体的には、最初のブロックから最終ブロックの一つ手前のブロックまではフレームビットを“１”とし、最終ブロックのみフレームビットを“０”とする。
【０００９】
ｂビットのステートのうち、レート部分のｒビットに対し、Ｍとフレームビットを連結した r ビットの値との排他的論理和を計算する。計算された ｒビットを暗号文のｒビットとして出力する。ステートに対し置換ｆを計算し、ｆの出力を新たなステート値とする。この操作をＭの最終ブロックが排他的論理和されるまで続ける。Ｍのサイズがｒの倍数でない場合、最終ブロックは端数分のみを暗号文として出力し、ステートに排他的論理和する。
【００１０】
＜手順４＞
ｂビットのステートのうち、レート部分のｒビットをタグのｒビットとして出力する。ステートに対し置換ｆを計算し、ｆの出力を新たなステート値とする。この操作をタグのビット数に達するまで続ける。タグ長がｒの倍数でない場合、最後のｒビットの出力を必要な端数に切り捨ててタグの出力とする。
【００１１】
＜復号＞
SPONGEWRAPの復号関数は、暗号化関数とほぼ同様の計算を行う。図２に、SPONGEWRAPの復号での計算構造を示す。ステートはＩＶに初期化され、暗号化関数の手順１，２同じ処理を行う。手順３は暗号化関数と異なっており、ｂビットのステートのうち、レート部分のｒビットとＣのｒビットの排他的論理和をとり、パディングやフレームビット付与の逆手順を通した値をＭ’のｒ−１ビットとする。ｂビットのステートのうち、レート部分のｒビットをＣのｒビットに置き換え、置換ｆを計算する。ｆの出力を新たなステート値とする。この操作をＣの最終ブロックが排他的論理和されるまで続ける。Ｃの最終ブロックのサイズがｒの倍数でない場合、端数分のみをＭ’の生成とステートの置き換えに利用する。手順３終了後、暗号化関数の手順４と同じ処理を行い、タグＴ’を得る。計算したＴ’と受け取ったＴを比較し、同じ値であればＭ’を復号されたメッセージとして出力する。一致しなかった場合は、復号に失敗したという結果を出力する。
【００１２】
＜donkeySponge＞
非特許文献２に示されたdonkeySpongeは、SPONGEWRAPの追加認証データ処理部分を利用してメッセージ認証コードを計算する方法である。図３にdonkeySpongeの計算構造を示す。メッセージ認証コードを生成する目的では、鍵Ｋおよび入力Ａをｂビットステートの全ビットに排他的論理和をしても安全性を損なうことが無く、効率的に入力データを処理することができる。
【００１３】
＜monkeyDuplex＞
非特許文献２に示されたmonkeyDuplexは、SPONGEWRAPのＫとＮの処理方法に工夫を加え、より効率的な計算を可能にする方法である。Ｋのｃビットまでを、ＩＶのｃビットのキャパシティ部分とする。もしくは、Ｋのｃビットまでと、別に定義されたｃビット定数との排他的論理和をＩＶのｃビットのキャパシティ部分とする。いずれの方法も、暗号化関数，復号関数で手順 １（Ｋの処理）におけるｆの計算関数を少なくすることができるため、計算効率が上昇する。なお、Ｋがｃビットに満たない場合、適切なパディングによりＩＶのｃビットがすべて定義されるようにする。
【００１４】
また、Ｎのｒビットまでを、ＩＶのｒビットのレート部分とする。もしくは、Ｎのｒビットまでと、別に定義されたｒビット定数との排他的論理和をＩＶのｒビットのレート部分とする。手順２におけるｆの計算関数を少なくすることができるため、計算効率が上昇する。なお、Ｎがｒビットに満たない場合、適切なパディングによりＩＶのｒビットがすべて定義されるようにする。monkeyDuplexによるステートの初期化およびＫ，Ｎの処理を図 ４に示す。
【先行技術文献】
【非特許文献】
【００１５】
【非特許文献１】Guido Bertoni, Joan Daemen, Michael Peeters and Gilles Van  Assche,“Duplexing the Sponge: Single-Pass Authenticated Encryption and Other Applications”, SAC 2011, (eds.) Ali Miri and Serge Vaudenay, LNCS, Vol. 7118, pages 320-337, Springer, 2012.
【非特許文献２】Guido Bertoni, Joan Daemen, Michael Peeters and Gilles Van Assche,“Permutation-based encryption, authentication and authenticated encryption”, Workshop Records of DIAC 2012.
【発明の概要】
【発明が解決しようとする課題】
【００１６】
しかしながら、SPONGEWRAPでは、追加認証データＡをｒ−１ビットごとに処理するため、置換演算ｆの回数が多くなり非効率である。そこで、本発明は、置換演算ｆの演算回数を少なくすることを目的とする。
【課題を解決するための手段】
【００１７】
本発明の暗号化システムは、暗号化装置と復号装置を有する。まず、Ｋを暗号化装置と復号装置の両方で共有する秘密鍵、Ａを追加認証データ、Ｍをメッセージ、Ｃを暗号文、Ｔをタグ、Ｋ，Ａ，Ｍをビット列、Ｎをすべてのビットが“０”のビット列を除くビット列、ｒ，ｃ，ｂ，Ｐ，Ｑ，Ｕを１以上の整数、ｂ＝ｒ＋ｃ、ｐを１以上Ｐ以下の整数、ｑを１以上Ｑ以下の整数、ｕを１以上Ｕ以下の整数、Ｓをあらかじめ定めた１以上の整数、ｓを１以上Ｓ以下の整数、ｆをｂビットの置換演算、ｇを０〜２ｃ−１の整数からなる有限体の元と０と１以外のあらかじめ定めた定数との有限体上での乗算とする。また、ステートを、あらかじめ定められたｒビットがレート部分、ｃビットがキャパシティ部分であるｂビットのビット列とする。
【００１８】
本発明の第１の暗号化装置は、暗号化用初期値設定部、暗号化用追加認証データヘッダ分割部、メッセージ分割部、暗号化用追加認証データトレイラ分割部、暗号化用追加認証データヘッダ計算部、暗号化部、暗号化用追加認証データトレイラ計算部、暗号化用タグ計算部、出力部を備える。暗号化用初期値設定部は、Ｎを選択し、ＮとＫを用いてｂビットの暗号化用初期値を生成し、暗号化用初期値をｆにより置換した結果をステートとする。暗号化用追加認証データヘッダ分割部は、追加認証データＡのヘッダＡ’を、パディングを用いてｂビットごとの追加認証データブロックａ１’，…，ａＱ’に分割する。メッセージ分割部は、メッセージＭを、パディングを用いてｒビットごとのメッセージブロックｍ１，…，ｍＰに分割する。暗号化用追加認証データトレイラ分割部は、追加認証データＡのトレイラＡ”が存在する場合は、追加認証データＡのトレイラＡ”を、パディングを用いてｂビットごとの追加認証データブロックａ１”，…，ａＵ”に分割する。暗号化用追加認証データヘッダ計算部は、ステートに対して追加認証データブロックａｑ’との排他的論理和を計算し、さらにｆにより置換した結果を新たなステートとする処理を、ｑ＝１からｑ＝Ｑまで繰り返す。暗号化部は、次の（１）〜（３）の処理を実行する。
【００１９】
（１）ステートのレート部分に対してメッセージブロックｍｐとの排他的論理和を計算し、計算結果をｒビットの暗号ブロックｄｐとするとともに、ステートのレート部分を当該計算結果に置き換えた上でｆにより置換した結果を新たなステートとする処理を、ｐ＝１からｐ＝Ｐ−１まで繰り返す。
【００２０】
（２）ステートのレート部分に対してメッセージブロックｍＰとの排他的論理和を計算し、計算結果をｒビットの暗号ブロックｄＰとするともに、ステートのレート部分を当該計算結果に置き換え、キャパシティ部分のｃビットを０〜２ｃ−１の整数からなる有限体として扱ってｇによる乗算を行った上で、ｆにより置換した結果を新たなステートとする処理を行う。
【００２１】
（３）暗号ブロックｄ１，…，ｄＰの結合処理を用いて暗号文Ｃを求める。
暗号化用追加認証データトレイラ計算部は、追加認証データＡのトレイラＡ”が存在する場合は、ステートに対して追加認証データブロックａｕ”との排他的論理和を計算し、さらにｆにより置換した結果を新たなステートとする処理を、ｕ＝１からｕ＝Ｕまで繰り返す。
【００２２】
暗号化用タグ計算部は、Ｓ＝１の場合はステートのレート部分からタグＴを求め、Ｓ≧２の場合は、ステートのレート部分をタグブロックｔ１とし、さらに、ステートをｆにより置換した結果を新たなステートとしてレート部分をタグブロックｔｓとする処理をｓ＝２からｓ＝Ｓまで繰り返し、タグブロックｔ１，…，ｔＳを用いてタグＴを求める。出力部は、Ｃ，Ｔ，Ａ，Ｎの組を出力する。
【００２３】
本発明の第１の復号装置は、入力部、復号用初期値設定部、復号用追加認証データヘッダ分割部、暗号文分割部、復号用追加認証データトレイラ分割部、復号用追加認証データヘッダ計算部、復号部、復号用追加認証データトレイラ計算部、復号用タグ計算部、検証部を備える。入力部は、Ｃ，Ｔ，Ａ，Ｎの組を取得する。復号用初期値設定部は、ＮとＫを用いてｂビットの復号用初期値を生成し、復号用初期値をｆにより置換した結果をステートとする。復号用追加認証データヘッダ分割部は、追加認証データＡのヘッダＡ’を、パディングを用いてｂビットごとの追加認証データブロックａ１’，…，ａＱ’に分割する。暗号文分割部は、暗号文Ｃを、ｒビットごとの暗号ブロックｄ１，…，ｄＰに分割する。復号用追加認証データトレイラ分割部は、追加認証データＡのトレイラＡ”が存在する場合は、追加認証データＡのトレイラＡ”を、パディングを用いてｂビットごとの追加認証データブロックａ１”，…，ａＵ”に分割する。復号用追加認証データヘッダ計算部は、ステートに対して追加認証データブロックａｑ’との排他的論理和を計算し、さらにｆにより置換した結果を新たなステートとする処理を、ｑ＝１からｑ＝Ｑまで繰り返す。復号部は、次の（１）〜（３）の処理を実行する。
【００２４】
（１）ステートのレート部分に対して暗号ブロックｄｐとの排他的論理和を計算し、計算結果をｒビットのメッセージブロックｍｐ’とするとともに、ステートのレート部分を暗号ブロックｄｐに置き換えた上でｆにより置換した結果を新たなステートとする処理を、ｐ＝１からｐ＝Ｐ−１まで繰り返す。
【００２５】
（２）ステートのレート部分に対して暗号ブロックｄＰとの排他的論理和を計算し、計算結果をｒビットのメッセージブロックｍＰ’とするともに、ステートのレート部分を暗号ブロックｄＰに置き換え、キャパシティ部分のｃビットを０〜２ｃ−１の整数からなる有限体として扱ってｇによる乗算を行った上で、ｆにより置換した結果を新たなステートとする処理を行う。
【００２６】
（３）メッセージブロックｍ１’，…，ｍＰ’からパディングで付加されたビットを取り除いた結合をしてメッセージＭ’とする。
復号用追加認証データトレイラ計算部は、追加認証データＡのトレイラＡ”が存在する場合は、ステートに対して追加認証データブロックａｕ”との排他的論理和を計算し、さらにｆにより置換した結果を新たなステートとする処理を、ｕ＝１からｕ＝Ｕまで繰り返す。復号用タグ計算部は、Ｓ＝１の場合はステートのレート部分からタグＴ’を求め、Ｓ≧２の場合は、ステートのレート部分をタグブロックｔ１’とし、さらに、ステートをｆにより置換した結果を新たなステートとしてレート部分をタグブロックｔｓ’とする処理をｓ＝２からｓ＝Ｓまで繰り返し、タグブロックｔ１’，…，ｔＳ’を用いてタグＴ’を求める。検証部は、タグＴとタグＴ’とを比較する。
【００２７】
本発明の第２の暗号化装置は、暗号化用初期値設定部、暗号化用追加認証データ分割部、メッセージ分割部、暗号化用追加認証データ計算部、暗号化部、暗号化用タグ計算部、出力部を備える。第１の暗号化装置との相違点は、追加認証データをヘッダとトレイラに分けて処理するか否かである。暗号化用追加認証データヘッダ分割部、暗号化用追加認証データトレイラ分割部、暗号化用追加認証データヘッダ計算部、暗号化用追加認証データトレイラ計算部の代わりに、暗号化用追加認証データ分割部と暗号化用追加認証データ計算部を備えている。暗号化用追加認証データ分割部は、追加認証データＡを、パディングを用いてｂビットごとの追加認証データブロックａ１，…，ａＱに分割する。暗号化用追加認証データ計算部は、ステートに対して追加認証データブロックａｑとの排他的論理和を計算し、さらにｆにより置換した結果を新たなステートとする処理を、ｑ＝１からｑ＝Ｑまで繰り返す。他の構成は第１の暗号化装置と同じである。
【００２８】
本発明の第２の復号装置は、入力部、復号用初期値設定部、復号用追加認証データ分割部、暗号文分割部、復号用追加認証データ計算部、復号部、復号用タグ計算部、検証部を備える。第１の復号装置との相違点は、追加認証データをヘッダとトレイラに分けて処理するか否かである。復号用追加認証データヘッダ分割部、復号用追加認証データトレイラ分割部、復号用追加認証データヘッダ計算部、復号用追加認証データトレイラ計算部の代わりに、復号用追加認証データ分割部、復号用追加認証データ計算部を備えている。復号用追加認証データ分割部は、追加認証データＡを、パディングを用いてｂビットごとの追加認証データブロックａ１，…，ａＱに分割する。復号用追加認証データ計算部は、ステートに対して追加認証データブロックａｑとの排他的論理和を計算し、さらにｆにより置換した結果を新たなステートとする処理を、ｑ＝１からｑ＝Ｑまで繰り返す。他の構成は第１の復号装置と同じである。
【発明の効果】
【００２９】
SPONGEWRAPでは追加認証データＡをｒ−１ビットごとに処理していた。これに対し、本発明の暗号化システムによれば、キャパシティ部分に対して排他的論理和の演算を行っても、その結果を分からない状態にできるので安全な暗号化を実現できる。よって、追加認証データＡの処理においてはｂビットごとの排他的論理和（トレイラ全体との排他的論理和）を行うことができる。したがって、追加認証データとステートとの排他的論理和の演算を、少なくともｂ−１ビットごとに処理できるので、置換演算ｆの回数を少なくできる。
【図面の簡単な説明】
【００３０】
【図１】SPONGEWRAPの暗号化での計算構造を示す図。
【図２】SPONGEWRAPの復号での計算構造を示す図。
【図３】donkeySpongeの計算構造を示す図。
【図４】monkeyDuplexによるステートの初期化およびＫ，Ｎの処理を示す図。
【図５】実施例１の暗号化システムの機能構成例を示す図。
【図６】実施例１の暗号化での計算構造の例を示す図。
【図７】実施例１の復号での計算構造の例を示す図。
【図８】実施例１の暗号化装置の処理フローを示す図。
【図９】実施例１の復号装置の処理フローを示す図。
【図１０】実施例１変形例１の暗号化システムの機能構成例を示す図。
【図１１】実施例１変形例１の暗号化での計算構造の例を示す図。
【図１２】実施例１変形例１の復号での計算構造の例を示す図。
【図１３】実施例１変形例１の暗号化装置の処理フローを示す図。
【図１４】実施例１変形例１の復号装置の処理フローを示す図。
【発明を実施するための形態】
【００３１】
以下、本発明の実施の形態について、詳細に説明する。なお、同じ機能を有する構成部には同じ番号を付し、重複説明を省略する。
【実施例１】
【００３２】
図５に実施例１の暗号化システムの機能構成例を示す。図６は実施例１の暗号化での計算構造の例を示す図、図７は実施例１の復号での計算構造の例を示す図である。また、図８は実施例１の暗号化装置の処理フロー、図９は実施例１の復号装置の処理フローを示す図である。実施例１の暗号化システムは、ネットワーク８００を介して接続された暗号化装置１００と復号装置２００で構成される。まず、Ｋを暗号化装置と復号装置の両方で共有する秘密鍵、Ａを追加認証データ、Ｍをメッセージ、Ｃを暗号文、Ｔをビット数ＬＴのタグ、Ｋ，Ａ，Ｍをビット列、Ｎをすべてのビットが“０”のビット列を除くビット列、ｒ，ｃ，ｂ，Ｐ，Ｑ，Ｕを１以上の整数、ｂ＝ｒ＋ｃ、ｐを１以上Ｐ以下の整数、ｑを１以上Ｑ以下の整数、ｕを１以上Ｕ以下の整数、Ｓをあらかじめ定めた１以上の整数、ｓを１以上Ｓ以下の整数、ｆをｂビットの置換演算、ｇを０〜２ｃ−１の整数からなる有限体の元と０と１以外のあらかじめ定めた定数との有限体上での乗算とする。また、ステートを、あらかじめ定められたｒビットがレート部分、ｃビットがキャパシティ部分であるｂビットのビット列とする。
【００３３】
＜暗号化装置＞
暗号化装置１００は、初期値設定部１１０、追加認証データヘッダ分割部１２０、メッセージ分割部１３０、追加認証データトレイラ分割部１４０、追加認証データヘッダ計算部１５０、暗号化部１６０、追加認証データトレイラ計算部１７０、タグ計算部１８０、出力部１９０を備える。初期値設定部１１０は、Ｎを選択し、ＮとＫを用いてｂビットの初期値を生成し、初期値をｆにより置換した結果をステートとする（Ｓ１１０）。例えば、初期値設定部１１０は、初期値として、レート部分にＮを埋め込み、キャパシティ部分にＫを埋め込めばよい。「埋め込む」とは、例えば、Ｎのビット数がｒより小さいときはパディングによってｒビットにした上でレート部分にすることを意味している。また、Ｎのビット数がｒよりも大きい場合はＮからｒビットを切り出す、もしくはハッシュ関数などを用いてｒビットに変換してレート部分にしてもよい。ｆはSPONGEWRAPで説明した置換と同じであり、あらかじめ暗号化装置１００と復号装置２００との間で定めておく。図６では、１１０を付した点線で囲まれた部分が初期値設定部に相当する。
【００３４】
追加認証データヘッダ分割部１２０は、追加認証データＡのヘッダＡ’を、パディングを用いてｂビットごとの追加認証データブロックａ１’，…，ａＱ’に分割する（Ｓ１２０）。パディングとして１０＊パディングを用いる場合は、ｂ−１の整数倍になるようにヘッダＡ’にパディングを行い、ｂ−１ビットずつを切り出して、フレームビットを付加して追加認証データブロックａｑ’に分割すればよい。また、パディングとして１０＊１パディング（最初と最後のビットが“１”、残りのビットが“０”のビット列を付加するパディング）を用いる場合は、ｂの整数倍になるようにヘッダＡ’にパディングを行い、ｂビットずつを切り出して追加認証データブロックａｑ’に分割すればよい。図６では、１２０を付した点線で囲まれた部分がメッセージ分割部に相当する。
【００３５】
メッセージ分割部１３０は、メッセージＭを、パディングを用いてｒビットごとのメッセージブロックｍ１，…，ｍＰに分割する（Ｓ１３０）。メッセージ分割部１３０のパディングには１０＊パディングを用いればよい。図６では、１３０を付した点線で囲まれた部分がメッセージ分割部に相当する。なお、追加認証データヘッダ分割部１２０と追加認証データトレイラ分割部１４０が、１０＊パディングを用いる場合は、メッセージＭからｒ−１ビットを切り出し、フレームビットを付加してｒビットにすればよい。追加認証データヘッダ分割部１２０と追加認証データトレイラ分割部１４０が、１０＊１パディングを用いる場合は、それぞれの置換演算ｆが追加認証データＡに対する処理かメッセージＭに対する処理かを判別できるので、メッセージＭをｒビットごとに分割すればよい（フレームビットを省略できる）。
【００３６】
追加認証データトレイラ分割部１４０は、追加認証データＡのトレイラＡ”が存在する場合は、追加認証データＡのトレイラＡ”を、パディングを用いてｂビットごとの追加認証データブロックａ１”，…，ａＵ”に分割する（Ｓ１４０）。パディングとして１０＊パディングを用いる場合は、ヘッダＡ’がｂ−１の整数倍になるようにパディングを行い、ｂ−１ビットずつを切り出して、フレームビットを付加して追加認証データブロックａｑ’に分割すればよい。また、パディングとして１０＊１パディングを用いる場合は、ヘッダＡ’がｂの整数倍になるようにパディングを行い、ｂビットずつを切り出して追加認証データブロックａｑ’に分割すればよい。追加認証データＡのトレイラＡ”が存在しない場合は、追加認証データトレイラ分割部１４０は、何も処理を行わない。図６では、１４０を付した点線で囲まれた部分が追加認証データトレイラ分割部に相当する。
【００３７】
追加認証データヘッダ計算部１５０は、ステートに対して追加認証データブロックａｑ’との排他的論理和を計算し、さらにｆにより置換した結果を新たなステートとする処理を、ｑ＝１からｑ＝Ｑまで繰り返す（Ｓ１５０）。「排他的論理和」はビット単位の排他的論理和であり、同じ位置のビット同士の排他的論理和を行う演算である。例えば、ビット列“１０１００”とビット列“００１１０”との排他的論理和の結果は“１００１０”である。図６では、１５０を付した点線で囲まれた部分が追加認証データヘッダ計算部に相当する。
【００３８】
暗号化部１６０は、次の（１）〜（３）の処理を実行する（Ｓ１６０）。図６では、１６０を付した点線で囲まれた部分が暗号化部に相当する。
【００３９】
（１）ステートのレート部分に対してメッセージブロックｍｐとの排他的論理和を計算し、計算結果をｒビットの暗号ブロックｄｐとするとともに、ステートのレート部分を当該計算結果に置き換えた上でｆにより置換した結果を新たなステートとする処理を、ｐ＝１からｐ＝Ｐ−１まで繰り返す。
【００４０】
（２）ステートのレート部分に対してメッセージブロックｍＰとの排他的論理和を計算し、計算結果をｒビットの暗号ブロックｄＰとするともに、ステートのレート部分を当該計算結果に置き換え、キャパシティ部分のｃビットを０〜２ｃ−１の整数からなる有限体として扱ってｇによる乗算を行った上で、ｆにより置換した結果を新たなステートとする処理を行う。
【００４１】
（３）暗号ブロックｄ１，…，ｄＰの結合処理を用いて暗号文Ｃを求める。「結合処理を用いて暗号文Ｃを求める」とは、単に暗号ブロックｄ１，…，ｄＰを結合して暗号文Ｃとすること、各暗号ブロックｄｐからフレームビットを取り除いてから結合して暗号文Ｃとすること、および、結合した上でパディング部分を取り除いて暗号文Ｃとすることを含む意味である。
【００４２】
追加認証データトレイラ計算部１７０は、追加認証データＡのトレイラＡ”が存在する場合は、ステートに対して追加認証データブロックａｕ”との排他的論理和を計算し、さらにｆにより置換した結果を新たなステートとする処理を、ｕ＝１からｕ＝Ｕまで繰り返す（Ｓ１７０）。図６では、１７０を付した点線で囲まれた部分が追加認証データトレイラ計算部に相当する。追加認証データＡのトレイラＡ”が存在しない場合は、追加認証データトレイラ計算部１７０は、何も処理を行わない。
【００４３】
タグ計算部１８０は、Ｓ＝１の場合はステートのレート部分からタグＴを求める。Ｓ≧２の場合は、ステートのレート部分をタグブロックｔ１とする。Ｓ≧２の場合はさらに、ステートをｆにより置換した結果を新たなステートとしてレート部分をタグブロックｔｓとする処理をｓ＝２からｓ＝Ｓまで繰り返す。そして、タグブロックｔ１，…，ｔＳを用いてタグＴを求める（Ｓ１８０）。Ｓ＝１の場合は、レート部分をそのままタグＴとしてもよいし、レート部の中からビット数ＬＴだけを切り出してタグＴとしてもよい。Ｓ≧２の場合は、例えば、タグブロックｔ１，…，ｔＳを結合した結果をタグＴとしてもよいし、タグブロックｔ１，…，ｔＳを結合した結果からビット数ＬＴよりも多いビット分を切り捨てて（ビット数ＬＴ分を切り出して）タグＴとしてもよい。また、各タグブロックｔｓから所定のビットを切り出した後、それらを結合してタグＴとしてもよい。なお、Ｓは、ｒ×ＳがタグＴのビット数ＬＴ以上となるようにあらかじめ定めておけばよい。図６では、１８０を付した点線で囲まれた部分がタグ計算部に相当する。出力部１９０は、Ｃ，Ｔ，Ａ，Ｎの組を出力する（Ｓ１９０）。出力されたＣ，Ｔ，Ａ，Ｎの組が復号装置２００に送信される。
【００４４】
＜復号装置＞
復号装置２００は、入力部２９０、初期値設定部２１０、追加認証データヘッダ分割部２２０、暗号文分割部２３０、追加認証データトレイラ分割部２４０、追加認証データヘッダ計算部２５０、復号部２６０、追加認証データトレイラ計算部２７０、タグ計算部２８０、検証部２８５を備える。入力部２９０は、Ｃ，Ｔ，Ａ，Ｎの組を取得する（Ｓ２９０）。
【００４５】
初期値設定部２１０は、ＮとＫを用いてｂビットの初期値を生成し、初期値をｆにより置換した結果をステートとする（Ｓ２１０）。例えば、初期値設定部２１０は、初期値として、レート部分にＮを埋め込み、キャパシティ部分にＫを埋め込めばよい。図７では、２１０を付した点線で囲まれた部分が初期値設定部に相当する。
【００４６】
追加認証データヘッダ分割部２２０は、追加認証データＡのヘッダＡ’を、パディングを用いてｂビットごとの追加認証データブロックａ１’，…，ａＱ’に分割する（Ｓ２２０）。パディングとして１０＊パディングを用いる場合は、ヘッダＡ’がｂ−１の整数倍になるようにパディングを行い、ｂ−１ビットずつを切り出して、フレームビットを付加して追加認証データブロックａｑ’に分割すればよい。また、パディングとして１０＊１パディング（最初と最後のビットを“１”とし、残りのビットを“０”にするパディング）を用いる場合は、ヘッダＡ’がｂの整数倍になるようにパディングを行い、ｂビットずつを切り出して追加認証データブロックａｑ’に分割すればよい。図７では、２２０を付した点線で囲まれた部分がメッセージ分割部に相当する。
【００４７】
暗号文分割部２３０は、暗号文Ｃを、ｒビットごとの暗号ブロックｄ１，…，ｄＰに分割する（Ｓ２３０）。図７では、２３０を付した点線で囲まれた部分がメッセージ分割部に相当する。なお、追加認証データヘッダ分割部２２０と追加認証データトレイラ分割部２４０が、１０＊パディングを用いる場合は、暗号文Ｃからｒ−１ビットを切り出し、フレームビットを付加して暗号ブロックｄｐにすればよい。追加認証データヘッダ分割部２２０と追加認証データトレイラ分割部２４０が、１０＊１パディングを用いる場合は、それぞれの置換演算ｆが追加認証データＡに対する処理かメッセージＭに対する処理かを判別できるので、暗号文Ｃからｒビットを切り出して暗号ブロックｄｐにすればよい。
【００４８】
追加認証データトレイラ分割部２４０は、追加認証データＡのトレイラＡ”が存在する場合は、追加認証データＡのトレイラＡ”を、パディングを用いてｂビットごとの追加認証データブロックａ１”，…，ａＵ”に分割する（Ｓ２４０）。パディングとして１０＊パディングを用いる場合は、ヘッダＡ’がｂ−１の整数倍になるようにパディングを行い、ｂ−１ビットずつを切り出して、フレームビットを付加して追加認証データブロックａｑ’に分割すればよい。また、パディングとして１０＊１パディングを用いる場合は、ヘッダＡ’がｂの整数倍になるようにパディングを行い、ｂビットずつを切り出して追加認証データブロックａｑ’に分割すればよい。追加認証データＡのトレイラＡ”が存在しない場合は、追加認証データトレイラ分割部２４０は、何も処理を行わない。図７では、２４０を付した点線で囲まれた部分が追加認証データトレイラ分割部に相当する。
【００４９】
追加認証データヘッダ計算部２５０は、ステートに対して追加認証データブロックａｑ’との排他的論理和を計算し、さらにｆにより置換した結果を新たなステートとする処理を、ｑ＝１からｑ＝Ｑまで繰り返す（Ｓ２５０）。図７では、２５０を付した点線で囲まれた部分が追加認証データヘッダ計算部に相当する。
【００５０】
復号部２６０は、次の（１）〜（３）の処理を実行する（Ｓ２６０）。図７では、２６０を付した点線で囲まれた部分が復号部に相当する。
【００５１】
（１）ステートのレート部分に対して暗号ブロックｄｐとの排他的論理和を計算し、計算結果をｒビットのメッセージブロックｍｐ’とするとともに、ステートのレート部分を暗号ブロックｄｐに置き換えた上でｆにより置換した結果を新たなステートとする処理を、ｐ＝１からｐ＝Ｐ−１まで繰り返す。
【００５２】
（２）ステートのレート部分に対して暗号ブロックｄＰとの排他的論理和を計算し、計算結果をｒビットのメッセージブロックｍＰ’とするともに、ステートのレート部分を暗号ブロックｄＰに置き換え、キャパシティ部分のｃビットを０〜２ｃ−１の整数からなる有限体として扱ってｇによる乗算を行った上で、ｆにより置換した結果を新たなステートとする処理を行う。
【００５３】
（３）メッセージブロックｍ１’，…，ｍＰ’からパディングで付加されたビットを取り除いた結合をしてメッセージＭ’とする。
【００５４】
追加認証データトレイラ計算部２７０は、追加認証データＡのトレイラＡ”が存在する場合は、ステートに対して追加認証データブロックａｕ”との排他的論理和を計算し、さらにｆにより置換した結果を新たなステートとする処理を、ｕ＝１からｕ＝Ｕまで繰り返す（Ｓ２７０）。図７では、２７０を付した点線で囲まれた部分が追加認証データトレイラ計算部に相当する。
【００５５】
タグ計算部２８０は、Ｓ＝１の場合はステートのレート部分からタグＴ’を求める。Ｓ≧２の場合は、ステートのレート部分をタグブロックｔ１’とする。Ｓ≧２の場合はさらに、ステートをｆにより置換した結果を新たなステートとしてレート部分をタグブロックｔｓ’とする処理をｓ＝２からｓ＝Ｓまで繰り返す。そして、タグブロックｔ１’，…，ｔＳ’を用いてタグＴ’を求める（Ｓ２８０）。図７では、２８０を付した点線で囲まれた部分がタグ計算部に相当する。検証部２８５は、タグＴとタグＴ’とを比較する（Ｓ２８５）。復号装置２００は、Ｔ＝Ｔ’のときはメッセージＭ’を復号されたメッセージとする。Ｔ≠Ｔ’のときは復号に失敗したという結果を出力する。
【００５６】
＜効果＞
実施例１の暗号化システムでは、キャパシティ部分に対して排他的論理和の演算を行っても、その結果を分からない状態にすれば暗号化の安全性を確保できることに着目している。そして、暗号化部１６０と復号部２６０の（２）の処理でｇの演算を行うことなどによって結果が分からないようにしている。よって、追加認証データＡの処理においてはｂビットごとの排他的論理和（トレイラ全体との排他的論理和）を行うことができる。そして、フレームビットを省略できない場合でも、追加認証データＡとステートとの排他的論理和の演算を、ｂ−１ビットごとに処理できるので、置換演算ｆの回数を少なくできる。さらに、追加認証データヘッダ分割部１２０，２２０と追加認証データトレイラ分割部１４０，２４０のパディングにおいて、１０＊１パディングを用いればフレームビットが不要にできるので、追加認証データとステートとの排他的論理和の演算をｂビットごと、メッセージとステートのレート部分との排他的論理和の演算をｒビットごとに処理できる。したがって、置換演算ｆの回数を少なくできる。
【００５７】
［変形例１］
図１０に本変形例の暗号化システムの機能構成例を示す。図１１は本変形例の暗号化での計算構造の例を示す図、図１２は本変形例の復号での計算構造の例を示す図である。また、図１３は本変形例の暗号化装置の処理フロー、図１４は本変形例の復号装置の処理フローを示す図である。本変形例の暗号化システムは、ネットワーク８００を介して接続された暗号化装置３００と復号装置４００で構成される。
【００５８】
＜暗号化装置＞
暗号化装置３００は、初期値設定部１１０、追加認証データ分割部３２０、メッセージ分割部１３０、追加認証データ計算部３５０、暗号化部１６０、タグ計算部１８０、出力部１９０を備える。初期値設定部１１０は、Ｎを選択し、ＮとＫを用いてｂビットの初期値を生成し、初期値をｆにより置換した結果をステートとする（Ｓ１１０）。図１１では、１１０を付した点線で囲まれた部分が初期値設定部に相当する。
【００５９】
追加認証データ分割部３２０は、追加認証データＡを、パディングを用いてｂビットごとの追加認証データブロックａ１，…，ａＱに分割する（Ｓ３２０）。パディングとして１０＊パディングを用いる場合は、ｂ−１の整数倍になるように追加認証データＡにパディングを行い、ｂ−１ビットずつを切り出して、フレームビットを付加して追加認証データブロックａｑに分割すればよい。また、パディングとして１０＊１パディングを用いる場合は、ｂの整数倍になるように追加認証データＡにパディングを行い、ｂビットずつを切り出して追加認証データブロックａｑに分割すればよい。図１１では、３２０を付した点線で囲まれた部分がメッセージ分割部に相当する。
【００６０】
メッセージ分割部１３０は、メッセージＭを、パディングを用いてｒビットごとのメッセージブロックｍ１，…，ｍＰに分割する（Ｓ１３０）。メッセージ分割部１３０のパディングには１０＊パディングを用いればよい。図１１では、１３０を付した点線で囲まれた部分がメッセージ分割部に相当する。なお、追加認証データ分割部３２０が、１０＊パディングを用いる場合は、メッセージＭからｒ−１ビットを切り出し、フレームビットを付加してｒビットにすればよい。追加認証データ分割部３２０が、１０＊１パディングを用いる場合は、それぞれの置換演算ｆが追加認証データＡに対する処理かメッセージＭに対する処理かを判別できるので、メッセージＭをｒビットごとに分割すればよい（フレームビットを省略できる）。
【００６１】
追加認証データ計算部３５０は、ステートに対して追加認証データブロックａｑとの排他的論理和を計算し、さらにｆにより置換した結果を新たなステートとする処理を、ｑ＝１からｑ＝Ｑまで繰り返す（Ｓ３５０）。図１１では、３５０を付した点線で囲まれた部分が追加認証データヘッダ計算部に相当する。
【００６２】
暗号化部１６０は、次の（１）〜（３）の処理を実行する（Ｓ１６０）。図１１では、１６０を付した点線で囲まれた部分が暗号化部に相当する。
【００６３】
（１）ステートのレート部分に対してメッセージブロックｍｐとの排他的論理和を計算し、計算結果をｒビットの暗号ブロックｄｐとするとともに、ステートのレート部分を当該計算結果に置き換えた上でｆにより置換した結果を新たなステートとする処理を、ｐ＝１からｐ＝Ｐ−１まで繰り返す。
【００６４】
（２）ステートのレート部分に対してメッセージブロックｍＰとの排他的論理和を計算し、計算結果をｒビットの暗号ブロックｄＰとするともに、ステートのレート部分を当該計算結果に置き換え、キャパシティ部分のｃビットを０〜２ｃ−１の整数からなる有限体として扱ってｇによる乗算を行った上で、ｆにより置換した結果を新たなステートとする処理を行う。
【００６５】
（３）暗号ブロックｄ１，…，ｄＰの結合処理を用いて暗号文Ｃを求める。「結合処理を用いて暗号文Ｃを求める」とは、単に暗号ブロックｄ１，…，ｄＰを結合して暗号文Ｃとすること、各暗号ブロックｄｐからフレームビットを取り除いてから結合して暗号文Ｃとすること、および、結合した上でパディング部分を取り除いて暗号文Ｃとすることを含み意味である。
【００６６】
タグ計算部１８０は、Ｓ＝１の場合はステートのレート部分からタグＴを求める。Ｓ≧２の場合は、ステートのレート部分をタグブロックｔ１とする。Ｓ≧２の場合はさらに、ステートをｆにより置換した結果を新たなステートとしてレート部分をタグブロックｔｓとする処理をｓ＝２からｓ＝Ｓまで繰り返す。そして、タグブロックｔ１，…，ｔＳを用いてタグＴを求める（Ｓ１８０）。図１１では、１８０を付した点線で囲まれた部分がタグ計算部に相当する。出力部１９０は、Ｃ，Ｔ，Ａ，Ｎの組を出力する（Ｓ１９０）。出力されたＣ，Ｔ，Ａ，Ｎの組が復号装置２００に送信される。
【００６７】
＜復号装置＞
復号装置４００は、入力部２９０、初期値設定部２１０、追加認証データ分割部４２０、暗号文分割部２３０、追加認証データ計算部４５０、復号部２６０、タグ計算部２８０、検証部２８５を備える。入力部２９０は、Ｃ，Ｔ，Ａ，Ｎの組を取得する（Ｓ２９０）。
【００６８】
初期値設定部２１０は、ＮとＫを用いてｂビットの初期値を生成し、初期値をｆにより置換した結果をステートとする（Ｓ２１０）。図１２では、２１０を付した点線で囲まれた部分が初期値設定部に相当する。
【００６９】
追加認証データ分割部４２０は、追加認証データＡを、パディングを用いてｂビットごとの追加認証データブロックａ１，…，ａＱに分割する（Ｓ４２０）。パディングとして１０＊パディングを用いる場合は、ｂ−１の整数倍になるように追加認証データＡにパディングを行い、ｂ−１ビットずつを切り出して、フレームビットを付加して追加認証データブロックａｑに分割すればよい。また、パディングとして１０＊１パディングを用いる場合は、ｂの整数倍になるように追加認証データＡにパディングを行い、ｂビットずつを切り出して追加認証データブロックａｑに分割すればよい。図１２では、４２０を付した点線で囲まれた部分がメッセージ分割部に相当する。
【００７０】
暗号文分割部２３０は、暗号文Ｃを、ｒビットごとの暗号ブロックｄ１，…，ｄＰに分割する（Ｓ２３０）。図１２では、２３０を付した点線で囲まれた部分がメッセージ分割部に相当する。なお、追加認証データ分割部４２０が１０＊パディングを用いる場合は、暗号文Ｃからｒ−１ビットを切り出し、フレームビットを付加して暗号ブロックｄｐにすればよい。追加認証データ分割部４２０が１０＊１パディングを用いる場合は、それぞれの置換演算ｆが追加認証データＡに対する処理かメッセージＭに対する処理かを判別できるので、暗号文Ｃからｒビットを切り出して暗号ブロックｄｐにすればよい。
【００７１】
追加認証データ計算部４５０は、ステートに対して追加認証データブロックａｑとの排他的論理和を計算し、さらにｆにより置換した結果を新たなステートとする処理を、ｑ＝１からｑ＝Ｑまで繰り返す（Ｓ４５０）。図１２では、４５０を付した点線で囲まれた部分が追加認証データ計算部に相当する。
【００７２】
復号部２６０は、次の（１）〜（３）の処理を実行する（Ｓ２６０）。図１２では、２６０を付した点線で囲まれた部分が復号部に相当する。
【００７３】
（１）ステートのレート部分に対して暗号ブロックｄｐとの排他的論理和を計算し、計算結果をｒビットのメッセージブロックｍｐ’とするとともに、ステートのレート部分を暗号ブロックｄｐに置き換えた上でｆにより置換した結果を新たなステートとする処理を、ｐ＝１からｐ＝Ｐ−１まで繰り返す。
【００７４】
（２）ステートのレート部分に対して暗号ブロックｄＰとの排他的論理和を計算し、計算結果をｒビットのメッセージブロックｍＰ’とするともに、ステートのレート部分を暗号ブロックｄＰに置き換え、キャパシティ部分のｃビットを０〜２ｃ−１の整数からなる有限体として扱ってｇによる乗算を行った上で、ｆにより置換した結果を新たなステートとする処理を行う。
【００７５】
（３）メッセージブロックｍ１’，…，ｍＰ’からパディングで付加されたビットを取り除いた結合をしてメッセージＭ’とする。
【００７６】
タグ計算部２８０は、Ｓ＝１の場合はステートのレート部分からタグＴ’を求める。Ｓ≧２の場合は、ステートのレート部分をタグブロックｔ１’とする。Ｓ≧２の場合はさらに、ステートをｆにより置換した結果を新たなステートとしてレート部分をタグブロックｔｓ’とする処理をｓ＝２からｓ＝Ｓまで繰り返す。そして、タグブロックｔ１’，…，ｔＳ’を用いてタグＴ’を求める（Ｓ２８０）。図１２では、２８０を付した点線で囲まれた部分がタグ計算部に相当する。検証部２８５は、タグＴとタグＴ’とを比較する（Ｓ２８５）。復号装置４００は、Ｔ＝Ｔ’のときはメッセージＭ’を復号されたメッセージとする。Ｔ≠Ｔ’のときは復号に失敗したという結果を出力する。
【００７７】
＜効果＞
本変形例の暗号化システムも、キャパシティ部分に対して排他的論理和の演算を行っても、その結果を分からない状態にすれば暗号化の安全性を確保できることに着目し、実現している。よって、実施例１と同様の効果が得られる。
【００７８】
［プログラム、記録媒体］
上述の各種の処理は、記載に従って時系列に実行されるのみならず、処理を実行する装置の処理能力あるいは必要に応じて並列的にあるいは個別に実行されてもよい。その他、本発明の趣旨を逸脱しない範囲で適宜変更が可能であることはいうまでもない。
【００７９】
また、上述の構成をコンピュータによって実現する場合、各装置が有すべき機能の処理内容はプログラムによって記述される。そして、このプログラムをコンピュータで実行することにより、上記処理機能がコンピュータ上で実現される。
【００８０】
この処理内容を記述したプログラムは、コンピュータで読み取り可能な記録媒体に記録しておくことができる。コンピュータで読み取り可能な記録媒体としては、例えば、磁気記録装置、光ディスク、光磁気記録媒体、半導体メモリ等どのようなものでもよい。
【００８１】
また、このプログラムの流通は、例えば、そのプログラムを記録したＤＶＤ、ＣＤ−ＲＯＭ等の可搬型記録媒体を販売、譲渡、貸与等することによって行う。さらに、このプログラムをサーバコンピュータの記憶装置に格納しておき、ネットワークを介して、サーバコンピュータから他のコンピュータにそのプログラムを転送することにより、このプログラムを流通させる構成としてもよい。
【００８２】
このようなプログラムを実行するコンピュータは、例えば、まず、可搬型記録媒体に記録されたプログラムもしくはサーバコンピュータから転送されたプログラムを、一旦、自己の記憶装置に格納する。そして、処理の実行時、このコンピュータは、自己の記録媒体に格納されたプログラムを読み取り、読み取ったプログラムに従った処理を実行する。また、このプログラムの別の実行形態として、コンピュータが可搬型記録媒体から直接プログラムを読み取り、そのプログラムに従った処理を実行することとしてもよく、さらに、このコンピュータにサーバコンピュータからプログラムが転送されるたびに、逐次、受け取ったプログラムに従った処理を実行することとしてもよい。また、サーバコンピュータから、このコンピュータへのプログラムの転送は行わず、その実行指示と結果取得のみによって処理機能を実現する、いわゆるＡＳＰ（Application Service Provider）型のサービスによって、上述の処理を実行する構成としてもよい。なお、本形態におけるプログラムには、電子計算機による処理の用に供する情報であってプログラムに準ずるもの（コンピュータに対する直接の指令ではないがコンピュータの処理を規定する性質を有するデータ等）を含むものとする。
【００８３】
また、この形態では、コンピュータ上で所定のプログラムを実行させることにより、本装置を構成することとしたが、これらの処理内容の少なくとも一部をハードウェア的に実現することとしてもよい。
【符号の説明】
【００８４】
１００，３００  暗号化装置
１１０，２１０，３１０，４１０  初期値設定部
１２０，２２０  追加認証データヘッダ分割部
１３０  メッセージ分割部
１４０，２４０  追加認証データトレイラ分割部
１５０，２５０  追加認証データヘッダ計算部
１６０  暗号化部
１７０，２７０  追加認証データトレイラ計算部
１８０，２８０  タグ計算部                １９０  出力部
２００，４００  復号装置                  ２３０  暗号文分割部
２６０  復号部                            ２８５  検証部
２９０  入力部
３２０，４２０  追加認証データ分割部
３５０，４５０  追加認証データ計算部
８００  ネットワーク
【図１】
0006273224.tif 000002
【図２】
0006273224.tif 000003
【図３】
0006273224.tif 000004
【図４】
0006273224.tif 000005
【図５】
0006273224.tif 000006
【図６】
0006273224.tif 000007
【図７】
0006273224.tif 000008
【図８】
0006273224.tif 000009
【図９】
0006273224.tif 000010
【図１０】
0006273224.tif 000011
【図１１】
0006273224.tif 000012
【図１２】
0006273224.tif 000013
【図１３】
0006273224.tif 000014
【図１４】
0006273224.tif 000015