(57)【要約】【課題】任意の平文を公開鍵を用いて暗号化する場合に平文空間に効率的に写像したり、平文空間から平文を効率的に復元したりすることを可能にする写像技術を提供する。【解決手段】暗号化処理装置１００は、任意のビット列を暗号化する際に当該ビット列に対して分割とパディングとを行って６次拡大体における素数位数のトーラス上の平文空間に写像する。復号処理装置２００は、暗号文が復号されて６次拡大体におけるトーラスの圧縮表現に写像され圧縮されたビット列について、パディングが正しく行われているか否かを判定し、当該判定結果に応じてアンパディングを行って得られた各ビット列を結合する。【選択図】        図１
2010002525.tif 000002
【特許請求の範囲】
【請求項１】
複数のビットが配列された任意のビット列を公開鍵を用いて暗号化する場合に平文空間に写像する文書・平文空間写像装置であって、
ビット列と、当該ビット列を標数p及び拡大次数mの有限体F_{p^m}の6次拡大体上の部分群の１つである素数位数のトーラスの要素の圧縮表現であるF_{p^m}× F_{p^m}^*の要素（p:素数,m:自然数,ｐ^m:pのm乗）に写像するためのpとmとを取得する取得部と、
取得された前記ビット列を、F_{p^m}の要素を表現するのに必要な m*|p-1|ビット以下のビット列に各々分割する分割部と、
分割された各前記ビット列に対して可逆な変換処理を行って、F_{p^m}の要素に写像する第１変換部と、
分割された各前記ビット列に対して可逆な変換処理を行ってF_{p^m}＾*の要素に写像する第２変換部と、
写像されたF_{p^m}×F_{p^m}＾*の要素の組を出力する出力部とを備える
ことを特徴とする文書・平文空間写像装置。
【請求項２】
複数のビットが配列された任意のビット列を公開鍵を用いて暗号化する場合に平文空間に写像する文書・平文空間写像装置であって、
ビット列と、当該ビット列を標数p及び拡大次数mの有限体F_{p^m}の6次拡大体上の部分群の1つである素数位数のトーラスの要素の圧縮表現 であるF_{p^m}× F_{p^m}^*の要素（p:素数,m:自然数,p^m：pのm乗） のベクトル表現の組に写像するためのpとmとを取得する取得部と、
取得された前記ビット列を、F_{p^m}の要素をベクトル表現するのに必要な m*|p-1|ビット以下のビット列に各々分割する分割部と、
分割された各前記ビット列に対して可逆な変換処理を行って、F_{p^m}の要素のベクトル表現に写像する第１変換部と、
分割された各前記ビット列に対して可逆な変換処理を行ってF_{p^m}^*の要素のベクトル表現に写像する第２変換部と、
写像されたF_{p^m}×F_{p^m}^*の要素のベクトル表現の組を出力する出力部とを備える
ことを特徴とする文書・平文空間写像装置。
【請求項３】
前記第１変換部は、分割された各前記ビット列に対してパディングを行ってF_{p^m}に写像し、
前記第２変換部は、分割された各前記ビット列に対してパディングを行ってF_{p^m}＾*に写像する
ことを特徴とする請求項２に記載の文書・平文空間写像装置。
【請求項４】
前記分割部は、取得された前記ビット列を|p-1|ビット以下の所定の長さ毎に分割し、
前記第１変換部は、前記所定の長さのビット列の一部の先頭に‘0’をパディングし、
前記第２変換部は、前記一部以外の部分の先頭に‘0’をパディングすると共に、先頭以外の所定のビット位置に少なくとも１つの‘1’をパディングする
ことを特徴とする請求項３に記載の文書・平文空間写像装置。
【請求項５】
前記取得部は、mが’1’より大きい場合、n*(2*m*(|p-1|-1)-1)ビット（n：自然数）のビット列とpとmとを取得し、
前記分割部は、
n*(2*m*(|p-1|-1)-1)ビットのビット列を(2*m*(|p-1|-1)-1)ビット毎に分割する第１分割部と、
(2*m*(|p-1|-1)-1)の各ビット列を、m個の(|p-1|-1)ビットのビット列を含む第１付加ビット列集合と、(m-1)個の(|p-1|-1)ビットのビット列と1個の(|p-1|-2)ビットのビット列とを含む第２付加ビット列集合とに各々分割する第２分割部とを有し、
前記第１変換部は、各前記第１付加ビット列集合に含まれる各ビット列の先頭に‘0’をパディングし、
前記第２変換部は、各前記第２付加ビット列集合に含まれる各ビット列の先頭に‘0’をパディングすると共に、各前記第２付加ビット列集合に含まれる(|p-1|-2)ビットのビット列の先頭以外の所定のビット位置に‘1’をパディングする
ことを特徴とする請求項４に記載の文書・平文空間写像装置。
【請求項６】
前記取得部は、mが’1’である場合、n*(2*|p-1|-3)ビット（n：自然数）のビット列とpとを取得し、
前記分割部は、
n*(2*|p-1|-3)ビットのビット列を(2*|p-1|-3)ビット毎に分割する第１分割部と、
(2*|p-1|-3)ビットの各ビット列を、(|p-1|-1)ビットの第１ビット列と(|p-1|-2)ビットの第２ビット列とに各々分割する第２分割部とを有し、
前記第１変換部は、各前記第１ビット列の先頭に‘0’をパディングし、
前記第２変換部は、各前記第２ビット列の先頭に‘0’をパディングすると共に、先頭以外の所定のビット位置に‘1’をパディングする
ことを特徴とする請求項４に記載の文書・平文空間写像装置。
【請求項７】
前記分割部は、取得された前記ビット列を m*|p-1|ビット以下の所定の長さ毎に各々分割し、
前記第１変換部は、前記所定の長さのビット列の一部の先頭に‘0’をパディングし、
前記第２変換部は、前記一部以外の部分に含まれる全てのビットが‘0’である場合、当該一部以外の部分の所定のビット列の先頭に‘1’をパディングし、前記一部以外の部分に含まれる少なくとも１つのビットが‘1’である場合、当該一部以外の部分の先頭に‘0’をパディングする
ことを特徴とする請求項３に記載の文書・平文空間写像装置。
【請求項８】
前記取得部は、mが’1’より大きい場合、2*n*m*(|p-1|-1)ビット（n：自然数）のビット列とpとmとを取得し、
前記分割部は、
2*n*m*(|p-1|-1)ビットのビット列を2*m*(|p-1|-1)ビット毎に分割する第１分割部と、
2*m*(|p-1|-1)ビットの各ビット列を、m個の(|p-1|-1)ビットのビット列を含む第１付加ビット列集合とm個の(|p-1|-1)ビットのビット列を含む第２付加ビット列集合とに各々分割する第２分割部とを有し、
前記第１変換部は、各前記第１付加ビット列集合に含まれる各ビット列の先頭に‘0’をパディングし、
前記第２変換部は、各前記第２付加ビット列集合に含まれる全てのビット列のビットが全て‘0’である場合、当該第２付加ビット列集合に含まれる所定のビット列の先頭に‘1’をパディングしその他のビット列の先頭に‘0’をパディングし、各前記第２付加ビット列集合に含まれるビット列の少なくとも１つのビットが‘1’である場合、当該第２付加ビット列集合に含まれる各ビット列の先頭に‘0’をパディングする
ことを特徴とする請求項７に記載の文書・平文空間写像装置。
【請求項９】
前記取得部は、mが’1’である場合、n*(2*|p-1|-2)ビット（n：自然数）のビット列とpとを取得し、
前記分割部は、
n*(2*|p-1|-2)ビットのビット列を(2*|p-1|-2)ビット毎に分割する第１分割部と、
(2*|p-1|-2)ビットの各ビット列を、(|p-1|-1)ビットの第１ビット列と(|p-1|-1)ビットの第２ビット列とに各々分割する第２分割部とを有し、
前記第１変換部は、各前記第１ビット列の先頭に‘0’をパディングし、
前記第２変換部は、各前記第２ビット列のビットが全て‘0’である場合、当該第２ビット列の先頭に‘1’をパディングし、各前記第２ビット列に含まれる少なくとも１つのビットが‘1’である場合、当該第２ビット列の先頭に‘0’をパディングする
ことを特徴とする請求項７に記載の文書・平文空間写像装置。
【請求項１０】
複数のビットが配列されたビット列であり暗号化されたビット列を公開鍵に対応する秘密鍵を用いて復号した後平文空間からビット列に写像する平文空間・文書写像装置であって、
標数ｐ及び拡大次数mの有限体の6次拡大体上の部分群の１つである素数位数のトーラスの要素の圧縮表現 F_{p^m}×F_{p^m}＾*の要素の組により表現されるビット列を取得する取得部と、
取得された前記ビット列に基づいて、F_{p^m}の要素で表現される第１付加ビット列集合に対して前記変換処理の逆変換処理を行うことにより、第１ビット列を得る第１逆変換部と、
取得された前記ビット列に基づいて、F_{p^m}＾*の要素で表現される第２付加ビット列集合に対して前記変換処理の逆変換処理を行うことにより、第２ビット列を得る第２逆変換部と、
前記第１ビット列及び前記第２ビット列を結合する結合部とを備える
ことを特徴とする平文空間・文書写像装置。
【請求項１１】
取得された前記ビット列に対して可逆な変換処理が正しく行われているか否かを判定する判定部を更に備え、
前記第１逆変換部は、前記判定部の判定結果が肯定的である場合、F_{p^m}の要素で表現される第１付加ビット列集合に対して前記変換処理の逆変換処理を行うことにより、第１ビット列を得て、
前記第２１逆変換部は、前記判定部の判定結果が肯定的である場合、F_{p^m}＾*の要素で表現される第２付加ビット列集合に対して前記変換処理の逆変換処理を行うことにより、第２ビット列を得る
ことを特徴とする請求項１０に記載の平文空間・文書写像装置。
【請求項１２】
前記判定部は、取得された前記ビット列に対してパディングが正しく行われているか否かを判定し、
前記第１逆変換部は、前記判定部の判定結果が肯定的である場合、前記第１付加ビット列集合に含まれる各ビット列からパディングを取り除くことにより、第１ビット列を得て、
前記第２逆変換部は、前記判定部の判定結果が肯定的である場合、前記第２付加ビット列集合に含まれる各ビット列からパディングを取り除くことにより、第２ビット列を得る
ことを特徴とする請求項１１に記載の平文空間・文書写像装置。
【請求項１３】
前記判定部は、
前記第１付加ビット列集合に含まれる各ビット列が所定の長さ以下である且つ先頭ビットが‘0’であるか否かを判定する第１判定部と、
前記第２付加ビット列集合に含まれる各ビット列が所定の長さ以下である且つ先頭ビットが‘0’である且つ所定のビット列の所定のビットが‘1’であるか否かを判定する第２判定部とを有し、
前記第１逆変換部は、前記第１判定部の判定結果が肯定的である場合、前記第１付加ビット列集合に含まれる各ビット列から先頭ビットを取り除くことにより、第１ビット列を得て、
前記第２逆変換部は、前記第２判定部の判定結果が肯定的である場合、前記第２付加ビット列集合に含まれる各ビット列から先頭ビット及び前記所定のビット列の前記所定のビットを取り除くことにより、第２ビット列を得る
ことを特徴とする請求項１２に記載の平文空間・文書写像装置。
【請求項１４】
前記判定部は、
mが’1’より大きい場合、前記第１付加ビット列集合の各ビット列の長さが|p-1|ビットである且つ先頭ビットが‘0’であるか否かを判定する第１判定部と、
mが’1’より大きい場合、前記第２付加ビット列集合の各ビット列の長さが|p-1|ビットである且つ先頭ビットが‘0’且つ所定のビット列の所定のビットが‘1’であるか否かを判定する第２判定部とを有し、
前記第１逆変換部は、前記第１判定部の判定結果が肯定的である場合、前記第１付加ビット列集合に含まれる各ビット列から先頭ビットを取り除くことにより、第１ビット列を得て、
前記第２逆変換部は、前記第２判定部の判定結果が肯定的である場合、前記第２付加ビット列集合に含まれる各ビット列から前記先頭ビット及び前記所定ビット列の前記所定のビットを取り除くことにより、第２ビット列を得る
ことを特徴とする請求項１３に記載の平文空間・文書写像装置。
【請求項１５】
前記判定部は、
mが’1’である場合、前記第１付加ビット列集合に含まれる第１付加ビット列の長さが|p-1|ビットである且つ先頭ビットが‘0’であるか否かを判定する第１判定部と、
mが’1’である場合、前記第２付加ビット列集合に含まれる第２付加ビット列の長さが|p-1|ビットである且つ当該第２付加ビット列の先頭ビットが‘0’且つ所定のビットが‘1’であるか否かを判定する第２判定部とを有し、
前記第１逆変換部は、前記第１判定部の判定結果が肯定的である場合、前記第１付加ビット列から先頭ビットを取り除くことにより、第１ビット列を得て、
前記第２逆変換部は、前記第２判定部の判定結果が肯定的である場合、前記第２付加ビット列から前記先頭ビット及び前記所定のビットを取り除くことにより、第２ビット列を得る
ことを特徴とする請求項１３に記載の平文空間・文書写像装置。
【請求項１６】
前記判定部は、
前記第１付加ビット列集合に含まれる各ビット列が所定の長さ以下である且つ先頭ビットが‘0’であるか否かを判定する第１判定部と、
前記第２付加ビット列集合に含まれる各ビット列が所定の長さ以下である且つ所定のビット列の先頭ビットが‘1’であるときその他のビットが全て‘0’である又は所定のビット列の先頭ビットが‘0’である且つその他のビット列の先頭ビットが’0’であるとき先頭ビット以外の少なくとも１つのビットが‘1’であるか否かを判定する第２判定部とを有し、
前記第１逆変換部は、前記第１判定部の判定結果が肯定的である場合、前記第１付加ビット列集合に含まれる各ビット列から先頭ビットを取り除くことにより、第１ビット列を得て、
前記第２逆変換部は、前記第２判定部の判定結果が肯定的である場合、前記第２付加ビット列集合に含まれる各ビット列から先頭ビットを取り除くことにより、第２ビット列を得る
ことを特徴とする請求項１１に記載の平文空間・文書写像装置。
【請求項１７】
前記判定部は、
mが’1’より大きい場合、前記第１付加ビット列集合に含まれる各ビット列の長さが|p-1|ビットである且つ先頭ビットが‘0’であるか否かを判定する第１判定部と、
mが’1’より大きい場合、前記第２付加ビット列集合に含まれる各ビット列の長さが|p-1|ビットである且つ所定のビット列の先頭ビットが‘1’であるときその他のビットが全て‘0’である又は前記所定のビット列の先頭ビットが‘0’である且つその他のビット列の先頭が’0’であるとき先頭ビット以外の少なくとも１つのビットが‘1’であるか否かを判定する第２判定部とを有し、
前記第１逆変換部は、前記第１判定部の判定結果が肯定的である場合、前記第１ビット列から先頭ビットを取り除くことにより、第１ビット列を得て、
前記第２逆変換部は、前記第２判定部の判定結果が肯定的である場合、前記第２ビット列から前記先頭ビットを取り除くことにより、第２ビット列を得る
ことを特徴とする請求項１５に記載の平文空間・文書写像装置。
【請求項１８】
前記判定部は、
mが’1’である場合、前記第１付加ビット列集合に含まれる第１付加ビット列の長さが|p-1|ビットである且つ先頭ビットが‘0’であるか否かを判定する第１判定部と、
mが’1’である場合、前記第２付加ビット列集合に含まれる第２付加ビット列の長さが|p-1|ビットである且つ当該第２付加ビット列の先頭ビットが‘1’であるとき２ビット目以降が全て‘0’である又は先頭ビットが‘0’であるとき先頭ビット以外の少なくとも１つのビットが‘1’であるか否かを判定する第２判定部とを有し、
前記第１逆変換部は、前記第１判定部の判定結果が肯定的である場合、前記第１付加ビット列から先頭ビットを取り除くことにより、第１ビット列を得て、
前記第２逆変換部は、前記第２判定部の判定結果が肯定的である場合、前記第２付加ビット列から前記先頭ビットを取り除くことにより、第２ビット列を得る
ことを特徴とする請求項１６に記載の平文空間・文書写像装置。
【請求項１９】
前記取得部は、F_{p^m}×F_{p^m}＾*の要素の組により表現されるビット列をn組（n：自然数）取得し、
前記判定部は、取得されたn組の前記ビット列に対して可逆な変換処理が正しく行われているか否かを各々判定し、
前記第１逆変換部は、n組全てに対して前記判定部の判定結果が肯定的である場合、F_{p^m}の要素で表現される第１付加ビット列集合に対して前記変換処理の逆変換処理を行うことにより、第１ビット列を得て、
前記第２逆変換部は、n組全てに対して前記判定部の判定結果が肯定的である場合、組毎に、F_{p^m}＾*の要素で表現される第２付加ビット列集合に対して前記変換処理の逆変換処理を行うことにより、第２ビット列を得て、
前記結合部は、n組全てについて前記第１ビット列及び前記第２ビット列を結合する
ことを特徴とする請求項１０乃至１６のいずれか一項に記載の平文空間・文書写像装置。
【請求項２０】
取得部と、分割部と、第１変換部と、第２変換部と、出力部とを備え、複数のビットが配列された任意のビット列を公開鍵を用いて暗号化する場合に平文空間に写像する文書・平文空間写像装置で実行される文書・平文空間写像方法であって、
前記取得部が、ビット列と、当該ビット列を標数p及び拡大次数ｍの有限体F_{p^m}の6次拡大体上の部分群の１つである素数位数のトーラスの要素の圧縮表現であるF_{p^m}× F_{p^m}^*の要素（p:素数,m:自然数,ｐ^m:pのｍ乗）に写像するためのpとmとを取得する取得ステップと、
前記分割部が、取得された前記ビット列を、F_{p^m}の要素を表現するのに必要な ｍ*|p-1|ビット以下のビット列に各々分割する分割ステップと、
前記第１変換部が、分割された各前記ビット列に対して可逆な変換処理を行ってF_{p^m}の要素に写像する第１変換ステップと、
前記第２変換部が、分割された各前記ビット列に対して可逆な変換処理を行ってF_{p^m}＾*の要素の要素に写像する第２変換ステップと、
前記出力部が、写像されたF_{p^m}×F_{p^m}＾*の要素の組を出力する出力ステップとを含む
ことを特徴とする文書・平文空間写像方法。
【請求項２１】
取得部と、分割部と、第１変換部と、第２変換部と、出力部とを備え、複数のビットが配列された任意のビット列を公開鍵を用いて暗号化する場合に平文空間に写像する文書・平文空間写像装置で実行される文書・平文空間写像方法であって、
前記取得部が、ビット列と、当該ビット列を標数p及び拡大次数ｍの有限体F_{p^m}の6次拡大体上の部分群の1つである素数位数のトーラスの要素の圧縮表現 であるF_{p^m}× F_{p^m}^*の要素（p:素数,m:自然数,p^m：pのm乗） のベクトル表現の組に写像するためのpとmとを取得する取得ステップと、
前記分割部が、取得された前記ビット列を、F_{p^m}の要素をベクトル表現するのに必要な m*|p-1|ビット以下のビット列に各々分割する分割ステップと、
前記第１変換部が、分割された各前記ビット列に対して可逆な変換処理を行って、F_{p^m}の要素のベクトル表現に写像する第１変換ステップと、
前記第２変換部が、分割された各前記ビット列に対して可逆な変換処理を行ってF_{p^m}^*の要素のベクトル表現に写像する第２変換ステップと、
前記出力部が、写像されたF_{p^m}×F_{p^m}^*の要素のベクトル表現の組を出力する出力ステップとを含む
ことを特徴とする文書・平文空間写像方法。
【請求項２２】
取得部と、判定部と、第１変換部と、第２変換部と、結合部とを備え、複数のビットが配列されたビット列であり暗号化されたビット列を公開鍵に対応する秘密鍵を用いて復号した後平文空間からビット列に写像する平文空間・文書写像装置で実行される平文空間・文書方法であって、
前記取得部が、標数ｐ及び拡大次数ｍの有限体の6次拡大体上の部分体の１つである素数位数のトーラスの要素の圧縮表現 F_{p^m}×F_{p^m}＾*の要素の組により表現されるビット列を取得する取得ステップと、
前記第１変換部が、取得された前記ビット列に基づいて、F_{p^m}の要素で表現される第１付加ビット列集合に対して前記変換処理の逆変換処理を行うことにより、第１ビット列を得る第１逆変換ステップと、
前記第２変換部が、取得された前記ビット列に基づいて、F_{p^m}＾*の要素で表現される第２付加ビット列集合に対して前記変換処理の逆変換処理を行うことにより、第２ビット列を得る第２逆変換ステップと、
前記結合部が、前記第１ビット列及び前記第２ビット列を結合する結合ステップとを含む
ことを特徴とする平文空間・文書写像方法。
【請求項２３】
請求項２０乃至２２のいずれか一項に記載の方法をコンピュータに実行させることを特徴とするプログラム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、平文を公開鍵を用いて暗号化する際に平文空間に写像する文書・平文空間写像装置、平文空間・文書写像装置、方法及びプログラムに関する。
【背景技術】
【０００２】
通信路を流れる情報を保護するために、暗号を用いる方法がある。暗号には、例えば、共通鍵暗号と公開鍵暗号とがある。共通鍵暗号を用いる場合、通信相手と事前に鍵を共有しておく必要があるため、インターネットのような不特定多数との通信の際には鍵の共有や管理に大きな手間がかかる。公開鍵暗号は、事前に鍵を共有することなしに安全な通信を実現できるため、ネットワーク・セキュリティの基盤技術として幅広く用いられている。
【０００３】
現在、公開鍵暗号において典型的なセキュリティパラメータは1024ビット〜2048ビットである。セキュリティパラメータとは、公開鍵サイズや暗号文サイズを決定するパラメータであり、暗号方式の安全性に影響を与えるパラメータである。このセキュリティパラメータが大きくなれば、公開鍵サイズや暗号文サイズも大きくなる。解読が困難とされるセキュリティパラメータは年々大きくなっている。これは、計算機の進歩に伴い攻撃者の能力も向上するためである。公開鍵暗号では公開鍵サイズや暗号文サイズは、暗号方式により異なるが、セキュリティパラメータの数倍となる。このため、メモリ容量や通信帯域が十分でない装置ではセキュリティパラメータの増大が問題になる。
【０００４】
そこで、公開鍵暗号における公開鍵サイズや暗号文サイズを圧縮する方法が提案されている（例えば、非特許文献１参照）。この方法は、公開鍵暗号で用いる数の集合のうち代数的トーラスと呼ばれる部分集合を用いると、集合の要素を小さいビット数で表現できるという事実に基づいている。代数的トーラスの属する拡大体の次数nが高々二つの素数p,qの冪の積n=(p^m)*(q^w)であるとき、圧縮率（＝圧縮前のビット数／圧縮後のビット数）はn/φ(n)となることが知られている。ただし、φ（・）はオイラー関数である。尚、^はべき乗を表す。p^mは、pのm乗である。小さいビット数の表現へ変換を行う写像をρと書き、それぞれRS圧縮写像と呼ぶことにする。暗号文を圧縮する場合の具体例を示す。RS圧縮写像では、暗号文cを入力として計算を行い、圧縮暗号文γを得る（式１参照）。
【０００５】
ρ(c)=γ・・・（式１）
【０００６】
元のビット数の表現に戻すには、ρの逆写像を計算すればよい。ρの逆写像を‘ρ-1’と書き、RS伸長写像と呼ぶことにする。RS伸長写像では、圧縮暗号文としてγが与えられたときに計算を行い、cを得る（式２参照）。
【０００７】
ρ-1(γ)= c・・・（式２）
【０００８】
また、非特許文献１では、次のような圧縮写像ρ6、伸長写像‘ρ6-1’の構成法が示されている。圧縮写像ρ6は、6次拡大体F_{p^6}上のトーラスＴの任意の元tを入力として計算し、{0,…,p-1}の要素と{1,…,p-1}の要素との組を得る（式３参照）。
【０００９】
ρ6(t)= (a,b) ∈ {0,…,p-1}×{1,…,p-1}・・・（式３）
【００１０】
伸長写像‘ρ6-1’は、(a,b) ∈ {0,…,p-1}×{1,…,p-1}を入力として計算し、6次拡大体F_{p^6}上のトーラスＴの元tを得る（式４参照）。
【００１１】
ρ-1(a,b)＝t ∈ T・・・（式４）
【００１２】
一方、Ｃｒａｍｅｒ−Ｓｈｏｕｐ暗号は、標準モデルで安全性が保証されている方式であるが、公開鍵や暗号文の成分の数が多いという特徴がある。また、有限アーベル群Ｇ上の素数位数の部分巡回群Ｇ〜を用いて暗号化を行うため、暗号化できる平文は部分巡回群Ｇ〜に属する要素のみとなる（例えば、非特許文献２参照）。部分巡回群Ｇ~に属する要素は、非連続な整数値を要素とする集合であるため、任意の平文を暗号化するのが難しい。従来の方式では、この問題を解決するために、Ｃｒａｍｅｒ−Ｓｈｏｕｐ暗号の他に、ハッシュ関数と任意の平文を暗号化可能な共通鍵暗号とを用いていた（例えば非特許文献３参照）。尚、有限アーベル群とは交換法則が成り立つ演算が定義される数の集合であり、その素数位数の部分巡回群とは、前記有限アーベル群の素数個の数を部分集合の要素とし、部分集合の全ての要素は生成元gのべき乗で表現することができ、さらに部分集合上で前記有限アーベル群と同じ演算が定義される。
【００１３】
【非特許文献１】K.Rubin and A.Silverberg, “Torus-Based Cryptography”, CRYPTO 2003, LNCS 2729, pp. 349-365, 2003.
【非特許文献２】R.Ｃｒａｍｅｒand V.Shoup, “A practical key cryptosystem provably secure against adaptive chosen ciphertext attack”, CRYPTO 1998, LNCS 1462, pp. 13-25, 1998.
【非特許文献３】V.Shoup, “ACE Encrypt: The Advanced Cryptographic Engine’s Public Key Encryption Scheme”, “http://www.zurich.ibm.com/security/ace/ace_encrypt.pdf”,2000.
【発明の開示】
【発明が解決しようとする課題】
【００１４】
Ｃｒａｍｅｒ−Ｓｈｏｕｐ暗号は、有限アーベル群Ｇ上の素数位数の部分巡回群Ｇ〜上で暗号化や復号を行う暗号系で、Ｇ〜上の要素を安全に暗号化したり復号したりする方式である。一般にＧ~に属する要素は、非連続な整数値を要素とする集合であるため、Ｃｒａｍｅｒ−Ｓｈｏｕｐ暗号のみを用いて任意の平文を暗号化したり復号したりするのは困難である。非特許文献３の技術では、ハッシュ関数と共通鍵暗号とを組み合わせて用いることで、任意の平文を暗号化したり復号したりしている。しかし、共通鍵暗号を用いる場合数々の演算が必要となるため、方式の構成が複雑になる。
【００１５】
本発明は、上記に鑑みてなされたものであって、任意の平文を公開鍵を用いて暗号化する場合に平文空間に効率的に写像したり、平文空間から平文を効率的に復元したりすることを可能にするための文書・平文空間写像装置、平文空間・文書写像装置、方法及びプログラムを提供することを目的とする。
【課題を解決するための手段】
【００１６】
上述した課題を解決し、本発明は、複数のビットが配列された任意のビット列を公開鍵を用いて暗号化する場合に平文空間に写像する文書・平文空間写像装置であって、ビット列と、当該ビット列を標数p及び拡大次数ｍの有限体F_{p^m}の6次拡大体上の部分群の１つである素数位数のトーラスの要素の圧縮表現であるF_{p^m}× F_{p^m}^*の要素（p:素数,m:自然数,ｐ^m:pのｍ乗）に写像するためのpとmとを取得する取得部と、取得された前記ビット列を、F_{p^m}の要素を表現するのに必要な ｍ*|p-1|ビット以下のビット列に各々分割する分割部と、分割された各前記ビット列に対して可逆な変換処理を行って、F_{p^m}の要素に写像する第１変換部と、分割された各前記ビット列に対して可逆な変換処理を行ってF_{p^m}＾*の要素に写像する第２変換部と、写像されたF_{p^m}×F_{p^m}＾*の要素の組を出力する出力部とを備えることを特徴とする。
【００１７】
また、本発明は、複数のビットが配列された任意のビット列を公開鍵を用いて暗号化する場合に平文空間に写像する文書・平文空間写像装置であって、ビット列と、当該ビット列を標数p及び拡大次数ｍの有限体F_{p^m}の6次拡大体上の部分群の1つである素数位数のトーラスの要素の圧縮表現 であるF_{p^m}× F_{p^m}^*の要素（p:素数,m:自然数,p^m：pのm乗） のベクトル表現の組に写像するためのpとmとを取得する取得部と、取得された前記ビット列を、F_{p^m}の要素をベクトル表現するのに必要な m*|p-1|ビット以下のビット列に各々分割する分割部と、分割された各前記ビット列に対して可逆な変換処理を行って、F_{p^m}の要素のベクトル表現に写像する第１変換部と、分割された各前記ビット列に対して可逆な変換処理を行ってF_{p^m}^*の要素のベクトル表現に写像する第２変換部と、写像されたF_{p^m}×F_{p^m}^*の要素のベクトル表現の組を出力する出力部とを備えることを特徴とする。
【００１８】
また、本発明は、複数のビットが配列されたビット列であり暗号化されたビット列を公開鍵に対応する秘密鍵を用いて復号した後平文空間からビット列に写像する平文空間・文書写像装置であって、標数ｐ及び拡大次数ｍの有限体の6次拡大体上の部分群の１つである素数位数のトーラスの要素の圧縮表現 F_{p^m}×F_{p^m}＾*の要素の組により表現されるビット列を取得する取得部と、取得された前記ビット列に基づいて、F_{p^m}の要素で表現される第１付加ビット列集合に対して前記変換処理の逆変換処理を行うことにより、第１ビット列を得る第１逆変換部と、取得された前記ビット列に基づいて、F_{p^m}＾*の要素で表現される第２付加ビット列集合に対して前記変換処理の逆変換処理を行うことにより、第２ビット列を得る第２逆変換部と、前記第１ビット列及び前記第２ビット列を結合する結合部とを備えることを特徴とする。
【００１９】
また、本発明は、取得部と、分割部と、第１変換部と、第２変換部と、出力部とを備え、複数のビットが配列された任意のビット列を公開鍵を用いて暗号化する場合に平文空間に写像する文書・平文空間写像装置文書・平文空間写像装置で実行される文書・平文空間写像方法であって、前記取得部が、ビット列と、当該ビット列を標数p及び拡大次数ｍの有限体F_{p^m}の6次拡大体上の部分群の１つである素数位数のトーラスの要素の圧縮表現であるF_{p^m}× F_{p^m}^*の要素（p:素数,m:自然数,ｐ^m:pの乗）に写像するためのpとmとを取得する取得ステップと、前記分割部が、取得された前記ビット列を、F_{p^m}の要素を表現するのに必要な ｍ*|p-1|ビット以下のビット列に各々分割する分割ステップと、前記第１変換部が、分割された各前記ビット列に対して可逆な変換処理を行ってF_{p^m}の要素に写像する第１変換ステップと、前記第２変換部が、分割された各前記ビット列に対して可逆な変換処理を行ってF_{p^m}＾*の要素の要素に写像する第２変換ステップと、前記出力部が、写像されたF_{p^m}×F_{p^m}＾*の要素の組を出力する出力ステップとを含むことを特徴とする。
【００２０】
また、本発明は、取得部と、分割部と、第１変換部と、第２変換部と、出力部とを備え、複数のビットが配列された任意のビット列を公開鍵を用いて暗号化する場合に平文空間に写像する文書・平文空間写像装置で実行される文書・平文空間写像方法であって、前記取得部が、ビット列と、当該ビット列を標数p及び拡大次数ｍの有限体F_{p^m}の6次拡大体上の部分群の1つである素数位数のトーラスの要素の圧縮表現 であるF_{p^m}× F_{p^m}^*の要素（p:素数,m:自然数,p^m：pのm乗） のベクトル表現の組に写像するためのpとmとを取得する取得ステップと、前記分割部が、取得された前記ビット列を、F_{p^m}の要素をベクトル表現するのに必要な m*|p-1|ビット以下のビット列に各々分割する分割ステップと、前記第１変換部が、分割された各前記ビット列に対して可逆な変換処理を行って、F_{p^m}の要素のベクトル表現に写像する第１変換ステップと、前記第２変換部が、分割された各前記ビット列に対して可逆な変換処理を行ってF_{p^m}^*の要素のベクトル表現に写像する第２変換ステップと、前記出力部が、写像されたF_{p^m}×F_{p^m}^*の要素のベクトル表現の組を出力する出力ステップとを含むことを特徴とする。
【００２１】
また、本発明は、取得部と、判定部と、第１変換部と、第２変換部と、結合部とを備え、複数のビットが配列されたビット列であり暗号化されたビット列を公開鍵に対応する秘密鍵を用いて復号した後平文空間からビット列に写像する平文空間・文書写像装置で実行される平文空間・文書方法であって、前記取得部が、標数ｐ及び拡大次数ｍの有限体の6次拡大体上の部分群の１つである素数位数のトーラスの要素の圧縮表現 F_{p^m}×F_{p^m}＾*の要素の組により表現されるビット列を取得する取得ステップと、前記第１変換部が、取得された前記ビット列に基づいて、F_{p^m}の要素で表現される第１付加ビット列集合に対して前記変換処理の逆変換処理を行うことにより、第１ビット列を得る第１逆変換ステップと、前記第２変換部が、取得された前記ビット列に基づいて、F_{p^m}＾*の要素で表現される第２付加ビット列集合に対して前記変換処理の逆変換処理を行うことにより、第２ビット列を得る第２逆変換ステップと、前記結合部が、前記第１ビット列及び前記第２ビット列を結合する結合ステップとを含むことを特徴とする。
【００２２】
また、本発明は、プログラムであって、上記の方法をコンピュータに実行させることを特徴とする。
【発明の効果】
【００２３】
本発明によれば、任意の平文を公開鍵を用いて暗号化する場合に、方式を複雑にすることなく、平文を平文空間に写像したり、平文空間から平文を復元したりすることを可能にする。
【発明を実施するための最良の形態】
【００２４】
以下に添付図面を参照して、この発明にかかる文書・平文空間写像装置、平文空間・文書写像装置、方法及びプログラムの最良な実施の形態を詳細に説明する。
【００２５】
[第１の実施の形態]
（１）構成
まず、本実施の形態にかかる暗号化処理装置及び復号処理装置について図１を用いて説明する。本実施の形態にかかる暗号化処理装置１００と復号処理装置２００とは、インターネット等のネットワーク３００に接続されている。暗号化処理装置１００は、平文に対して公開鍵を用いた暗号化処理を行って暗号文を生成して、ネットワーク３００を介して復号処理装置２００に送信する。復号処理装置２００は、ネットワーク３００を介して暗号化処理装置１００から送信された暗号文を受信して、公開鍵に対応した秘密鍵を用いて復号して、平文を得る。
【００２６】
尚、これらの暗号化処理装置１００及び復号処理装置２００は各々、装置全体を制御するＣＰＵ（Central Processing Unit）等の制御装置と、各種データや各種プログラムを記憶するＲＯＭ（Read Only Memory）やＲＡＭ（Random Access Memory）等の記憶装置と、各種データや各種プログラムを記憶するＨＤＤ（Hard Disk Drive）やＣＤ（Compact Disk）ドライブ装置等の外部記憶装置と、外部装置の通信を制御する通信Ｉ／Ｆ（interface）と、これらを接続するバスとを備えており、通常のコンピュータを利用したハードウェア構成となっている。
【００２７】
次に、暗号化処理装置１００の備えるＣＰＵが記憶装置や外部記憶装置に記憶された各種プログラムを実行することにより実現される各種機能について具体的に説明する。図１において、暗号化処理装置１００内に示される各部は、暗号化処理装置１００のＣＰＵのプログラム実行時にＲＡＭなどの記憶装置上に生成されるものである。暗号化処理装置１００は、文書・平文空間写像部１０１と、伸張部１０６と、暗号化部１０７と、送信部１０８とを有する。
【００２８】
尚、本実施の形態においては、まず、拡大次数mが‘1’の場合について説明する。文書・平文空間写像部１０１は、入力された平文を平文空間に写像する。文書・平文空間写像部１０１は、第１文書分割部１０２と、第２文書分割部１０３と、第１パディング部１０４と、第２パディング部１０５とを有する。第１文書分割部１０２には、平文として複数のビット列が配列された任意のビット列と、この平文を６次拡大体における素数位数のトーラス上の要素の圧縮表現F_p×F_p^*（p：素数）の組に写像するための標数pとが入力される。尚、ここでは、当該圧縮表現F_p×F_p^*の要素についてベクトル表現の組に写像するものとする。‘F_p={0,…,p-1}’であり、‘Ｆ_p^*＝{1,…,p-1}’である。圧縮表現における‘×’は直積を意味する。また、ここでは、n*｛2*(|p-1|-1)-1｝ビット、即ち、n*(2*|p-1|-3)ビットのビット列が第１文書分割部１０２に入力されるものとする。nは各々任意の自然数であり、|p-1|は（p-1）を表現するのに必要なビット数である。‘*’は乗算を意味する。第１文書分割部１０２は、n*(2*|p-1|-3)ビットのビット列を(2*|p-1|-3)ビット毎のビット列に分割して、n組の(2*|p-1|-3)ビットのビット列を出力する。第２文書分割部１０３は、第１文書分割部１０２から出力されたn組の(2*|p-1|-3)ビットのビット列を入力とし、組毎に、先頭から(|p-1|-1)ビット目までのビット列（（|p-1|-1）ビットのビット列）と、|p-1|ビット目から(|p-1|+j-1)ビット目までのビット列（jビットのビット列）と、(|p-1|+j)ビット目から(2*|p-1|-3)ビット目までのビット列（(|p-1|-j-2)ビットのビット列）とに分割してこれら３つのビット列を組毎に出力する。jは各々任意の自然数であり、予め定められているものとする。
【００２９】
図２は、n*(2*|p-1|-3)ビットのビット列の分割及びパディングを概念的に示す図である。同図に示されるように、n*(2|p-1|-3)ビットのビット列Ｄ１が、 (2*|p-1|-3)ビットのn組のビット列Ｄ１０に第１文書分割部１０２により分割される。各ビット列Ｄ１０が、（|p-1|-1）ビットのビット列Ｄ２０と、jビットのビット列Ｄ２１と、（|p-1|-j-2)ビットのビット列Ｄ２２とに第２文書分割部１０３により各々分割される。
【００３０】
第１パディング部１０４は、第２文書分割部１０３から組毎に３つずつ出力されたビット列のうち、先頭から(|p-1|-1)ビット目までのビット列（（|p-1|-1）ビットのビット列）を入力とし、先頭に‘0’を付加することによりパディングを行い、パディング後の0||((|p-1|-1)ビットのビット列)を組毎に出力する。尚、||は結合を表す。第２パディング部１０５は、第２文書分割部１０３から組毎に３つずつ出力されたビット列のうち、|p-1|ビット目から(|p-1|+j-1)ビット目までのビット列（jビットのビット列）と、(|p-1|+j)ビット目から(2*|p-1|-3)ビット目までのビット列（(|p-1|-j-2)ビットのビット列）とを入力とし、前者のビット列の先頭に’0’をパディングすると共に、後者のビット列の先頭に’1’をパディングし、これらのビット列を結合して、0||(jビットのビット列)||1||((|p-1|-j-2)ビットのビット列)を組毎に出力する。即ち、図２に示されるように、ビット列Ｄ２０の先頭に‘0’が第１パディング部１０４によりパディングされる。また、第２パディング部１０５により、ビット列Ｄ２１の先頭に‘0’がパディングされ、ビット列Ｄ２２の先頭に‘1’がパディングされこれらが結合される。そして、これが、先頭ビットが‘0’であり、所定のビット位置（ここでは（j+2）ビット目である）が‘1’であるビット列となる。
【００３１】
伸張部１０６は、第１パディング部１０４から出力されたビット列及び第２パディング部１０５から出力されたビット列を６次元拡大体上に写像して伸張して、データmiを得る。伸張の方法については、例えば非特許文献１に示されるため、ここではその詳細な説明を省略する。暗号化部１０７は、伸張部１０６により伸張されて得られたデータmiを、公開鍵を用いて暗号化し、暗号文Ciを出力する。暗号化の方法については、例えば非特許文献２に示されるため、ここではその詳細な説明を省略する。送信部１０８は、暗号化部１０７により出力された暗号文Ciを送信する。
【００３２】
次に、復号処理装置２００の備えるＣＰＵが記憶装置や外部記憶装置に記憶された各種プログラムを実行することにより実現される各種機能について具体的に説明する。図１において、復号処理装置２００内に示される各部は、復号処理装置２００のＣＰＵのプログラム実行時にＲＡＭなどの記憶装置上に生成されるものである。復号処理装置２００は、受信部２０１と、復号部２０２と、圧縮部２０３と、平文空間・文書写像部２０４とを有する。
【００３３】
受信部２０１は、上述した暗号化処理装置１００から出力された暗号文Ciを受信する。復号部２０２は、受信部２０１により受信された暗号文Ciを入力とし、上述の公開鍵に対応する秘密鍵を用いて、暗号文Ciを復号して、データmiを得る。復号の方法は、例えば非特許文献２に示されるため、ここではその詳細な説明を省略する。圧縮部２０３は、復号部２０２により暗号文Ciが復号されて得られたデータmiを６次拡大体におけるトーラスの圧縮表現に写像することにより、圧縮して、{0,…,p-1}により表現される|p-1|ビットのビット列である第１付加ビット列と{1,…,p-1}により表現される|p-1|ビットのビット列である第２付加ビット列とをn組出力する。圧縮の方法は、例えば非特許文献１に示されるため、ここではその詳細な説明を省略する。
【００３４】
平文空間・文書写像部２０４は、圧縮部２０３により出力されたn組の第１ビット列及び第２ビット列について、組毎に、パディングが正しく行われているか否かを判定し、判定結果に応じてアンパディングを行って、各ビット列を結合する。平文空間・文書写像部２０４は、判定部２０５と、第１アンパディング部２０６と、第２アンパディング部２０７と、第１文書結合部２０８と、第２文書結合部２０９とを有する。判定部２０５は、組毎の|p-1|ビットの第１付加ビット列及び|p-1|ビットの第２付加ビット列を入力とし、以下の判定条件を満たす場合、パディングが正しく行われていると判定し、第１付加ビット列及び第２付加ビット列を出力し、判定条件を満たさない場合、パディングが正しく行われていないと判定し、第１付加ビット列及び第２付加ビット列を出力しない。判定条件とは、第１付加ビット列の先頭ビットが‘0’且つ第２付加ビット列の先頭ビットが‘0’且つ第２付加ビット列の（j+2）ビット目が‘1’であることである。
【００３５】
第１アンパディング部２０６は、判定部２０５から第１付加ビット列及び第２付加ビット列が出力された場合、|p-1|ビットの第１ビット列について、組毎に、先頭ビットの‘0’を取り除くことによりアンパディングを行って、アンパディング後の(|p-1|-1)ビットのビット列である第１ビット列を出力する。第２アンパディング部２０７は、判定部２０５から第１付加ビット列及び第２付加ビット列が出力された場合、|p-1|ビットの第２付加ビット列について、組毎に、先頭ビットの‘0’を取り除くと共に（j+2）ビット目の‘1’を取り除き、アンパディング後の先頭からjビット目までのビット列（jビットのビット列）及び(j+1)ビット目から(|p-1|-2)ビット目までのビット列（(|p-1|-j-2)ビットのビット列）である第２ビット列を出力する。
【００３６】
第１文書結合部２０８は、第１アンパディング部２０６から組毎に出力された(|p-1|-1)ビットのビット列である第１ビット列と、第２アンパディング部２０７から組毎に出力されたjビットのビット列及び(|p-1|-j-2)ビットのビット列である第２ビット列を入力とし、これらを結合して、((|p-1|-1)ビットのビット列)||(jビットのビット列)||((|p-1|-j-2)ビットのビット列)を組毎に出力する。第２文書結合部２０９は、第１文書結合部２０８から組毎にn組の出力された(2*|p-1|-3)ビットのビット列を入力とし、これらを順番に結合して、(n*(2*|p-1|-3))ビットのビット列を出力する。ここで出力されるビット列が、図２に示したビット列Ｄ１である平文となる。
【００３７】
（２）動作
＜文書・平文空間写像処理＞
次に、本実施の形態にかかる暗号化処理装置１００が平文を暗号化する処理について説明する。ここでは、特に、文書・平文空間写像部１０１が行う文書・平文空間写像処理の手順について図３を用いて説明する。文書・平文空間写像部１０１は、n*(2*|p-1|-3)ビットの文書が入力されると、(2*|p-1|-3)ビット毎のビット列に分割して、n組の(2*|p-1|-3)ビットのビット列を出力する（ステップＳ１）。次いで、文書・平文空間写像部１０１は、n組の(2*|p-1|-3)ビットについて、組毎に、先頭から(|p-1|-1)ビット目までのビット列（（|p-1|-1）ビットのビット列）と、|p-1|ビット目から(|p-1|+j-1)ビット目までのビット列（jビットのビット列）と、(|p-1|+j)ビット目から(2*|p-1|-3)ビット目までのビット列(|p-1|-j-2)ビットのビット列）とに分割してこれら３つのビット列を出力する（ステップＳ２）。
【００３８】
そして、文書・平文空間写像部１０１は、ステップＳ２で組毎に３つずつ出力されたビット列のうち、先頭から(|p-1|-1)ビット目までのビット列（（|p-1|-1）ビットのビット列）について、先頭に‘0’をパディングし、0||((|p-1|-1)ビットのビット列)を組毎に出力する（ステップＳ３）。また、文書・平文空間写像部１０１は、ステップＳ２で組毎に３つずつ出力されたビット列のうち、|p-1|ビット目から(|p-1|+j-1)ビット目までのビット列（jビットのビット列）と、(|p-1|+j)ビット目から(2*|p-1|-3)ビット目までのビット列（(|p-1|-j-2)ビットのビット列）とについて、前者のビット列の先頭に‘0’をパディングすると共に、後者のビット列の先頭に‘1’をパディングし、これらのビット列を結合して、0||(jビットのビット列)||1||((|p-1|-j-2)ビットのビット列)を組毎に出力する（ステップＳ４）。
【００３９】
そして、図示はしないが、n組全てについてステップＳ３及びステップＳ４でビット列が各々出力されて、これらのビット列が伸張部１０６に入力されると、伸張部１０６は、これを伸張して、データmiを得る。暗号化部１０７は、伸張部１０６により伸張されて得られたデータmiを、公開鍵を用いて暗号化し、暗号文Ciを出力する。そして、送信部１０８が、暗号文Ciを復号処理装置２００に送信する。
【００４０】
＜平文空間・文書写像処理＞
次に、暗号化処理装置１００から送信された暗号文Ciを復号処理装置２００が復号する処理について説明する。ここでは、特に、平文空間・文書写像部２０４が行う平文空間・文書写像処理の手順について図４を用いて説明する。まず、図示はしないが、受信部２０１が暗号文Ciを受信し、復号部２０２が、上述の公開鍵に対応する秘密鍵を用いて、暗号文Ciを復号してデータmiを得る。圧縮部２０３は、復号部２０２により暗号文Ciが復号されて得られたデータmiを６次拡大体におけるトーラスの圧縮表現に写像することにより、圧縮して、{0,…,p-1}により表現される|p-1|ビットの第１ビット列と{1,…,p-1}により表現される|p-1|ビットの第２ビット列とをn組出力する。
【００４１】
次いで、平文空間・文書写像部２０４は、圧縮部２０３により出力された|p-1|ビットの第１ビット列及び|p-1|ビットの第２ビット列とについて、組毎に、パディングが正しく行われているか否かを判定する（ステップＳ２０）。具体的には、平文空間・文書写像部２０４は、判定条件を満たさない場合、パディングが正しく行われていないと判定して（ステップＳ２０：ＮＯ）、エラーを出力し（ステップＳ２１）、判定条件を満たす場合、パディングが正しく行われていると判定して（ステップＳ２０：ＹＥＳ）、第１付加ビット列及び第２付加ビット列を組毎に出力する（ステップＳ２２）。尚、ここでの判定条件は、上述したように、第１付加ビット列の先頭ビットが‘0’且つ第２付加ビット列の先頭ビットが‘0’且つ第２付加ビット列の（j+2）ビット目が‘1’であることである。
【００４２】
次いで、平文空間・文書写像部２０４は、ステップＳ２２で出力された|p-1|ビットの第１付加ビット列について、先頭ビットの‘0’を取り除き、(|p-1|-1)ビットのビット列である第１ビット列を組毎に出力する（ステップＳ２３）。また、平文空間・文書写像部２０４は、ステップＳ２２で出力された|p-1|ビットの第２付加ビット列について、先頭ビットの‘0’を取り除くと共に（j+2）ビット目の‘1’を取り除くために、2ビット目から(j+1)ビット目までのビット列（jビットのビット列）と、(j+3)ビット目から(|p-1|)ビット目までのビット列（(|p-1|-j-2)ビットのビット列）とである第２ビット列を組毎に出力する（ステップＳ２４）。
【００４３】
その後、平文空間・文書写像部２０４は、ステップＳ２３で組毎に出力された(|p-1|-1)ビットの第１ビット列と、ステップＳ２４で組毎に出力されたjビットのビット列及び(|p-1|-j-2)ビットの第２ビット列とが入力されると、これらを結合して、((|p-1|-1)ビットのビット列)||(jビットのビット列)||((|p-1|-j-2)ビットのビット列)を組毎に出力する（ステップＳ２５）。次いで、平文空間・文書写像部２０４は、ステップＳ２５で組毎にn組の出力された(2*|p-1|-3)ビットのビット列を順番に結合して、(n*(2*|p-1|-3))ビットのビット列を出力する（ステップＳ２６）。即ち、{0,…,p-1}×{1,…,p-1}の組からビット列に写像される。
【００４４】
以上のようにして、任意の平文を暗号化する際に、当該平文を分割しパディングを行うことで{0,…,p-1}×{1,…,p-1}の要素の組を出力する。一方、暗号化されたビット列を復号する際には、{0,…,p-1}×{1,…,p-1}の要素の組を入力としパディングを外し結合することで平文を復元する。このように、６次拡大体における素数位数のトーラスＴ上で暗号化や復号を行うＣｒａｍｅｒ−Ｓｈｏｕｐ暗号を用いれば、{0,…,p-1}×{1,…,p-1}の上の任意の要素を暗号化したり復号したりすることができる。
【００４５】
即ち、|p-1|ビットより短いビット列の先頭ビットに‘0’をパディングすることにより、{0,…,2^{|p-1|-1}-1}の要素になるため、必ず{0,…,p-1}に含まれるよう写像できる。また、|p-1|ビットより短いビット列の先頭ビットに‘0’をパディングし、少なくとも１つのビット位置に‘1’をパディングすることにより、{1,…,2^{|p-1|-1}-1}の要素になるため、必ず{1,…,p-1}に含まれるよう写像できる。なぜならば、2^{|p-1|-1}は2の倍数のため素数にはならず、|p-1|ビットの素数は必ず2^{|p-1|-1}以上となるからである。そして、このようにパディングされたビット位置が予め分かっていれば、そのビット位置のビットを取り除いたビット列を結合することで元のビット列を復元することができる。
【００４６】
従って、上述の実施の形態によれば、ビット列の分割とパディングとを行うことで、任意のビット列を、６次拡大体における素数位数のトーラスを利用したＣｒａｍｅｒ−Ｓｈｏｕｐ暗号の平文空間に効率良く写像することができる。このため、共通鍵暗号を利用することなく効率的に暗号化したり復号したりすることができる。
【００４７】
[第２の実施の形態]
次に、暗号化処理装置及び復号処理装置の第２の実施の形態について説明する。なお、上述の第１の実施の形態と共通する部分については、同一の符号を使用して説明したり、説明を省略したりする。
【００４８】
（１）構成
本実施の形態にかかる暗号化処理装置１００の有する文書・平文空間写像部１０１の各機能は上述の第１の実施の形態と以下の点で異なる。文書・平文空間写像部１０１の第１文書分割部１０２に入力される文書は、n*(2*|p-1|-2)ビットとなる。第１文書分割部１０２は、当該文書を(2*|p-1|-2)ビット毎のビット列に分割して、n組の(2*|p-1|-2)ビットのビット列を出力する。第２文書分割部１０３は、第１文書分割部１０２から出力されたn組の(2*|p-1|-2)ビットのビット列を入力とし、組毎に、先頭から(|p-1|-1)ビット目までのビット列（（|p-1|-1）ビットのビット列）と、|p-1|ビット目から(2*|p-1|-2)ビット目までのビット列（(|p-1|-1)ビットのビット列）とに分割してこれら２つのビット列を組毎に出力する。図５は、n*(2*|p-1|-2)ビットのビット列の分割及びパディングを概念的に示す図である。同図に示されるように、n組の(2*|p-1|-2)ビットのビット列Ｄ３０が、(2*|p-1|-2)ビットのn組のビット列Ｄ４０に第１文書分割部１０２により分割される。各ビット列Ｄ４０が、（|p-1|-1）ビットのビット列Ｄ５０と、（|p-1|-1）ビットのビット列Ｄ５１とに第２文書分割部１０３により各々分割される。
【００４９】
第１パディング部１０４は、第２文書分割部１０３から組毎に２つずつ出力されたビット列のうち、先頭から(|p-1|-1)ビット目までのビット列（（|p-1|-1）ビットのビット列）を入力とし、先頭に‘0’をパディングし、0||((|p-1|-1)ビットのビット列)を組毎に出力する。第２パディング部１０５は、第２文書分割部１０３から組毎に２つずつ出力されたビット列のうち、|p-1|ビット目から(2*|p-1|-2)ビット目までのビット列（(|p-1|-1)ビット）を入力とし、(|p-1|-1)ビットが全て‘0’である場合、先頭に‘1’をパディングして、1||((|p-1|-1)ビットのビット列)を組毎に出力し、(|p-1|-1)ビットのうち少なくとも１つのビットが‘1’である場合、先頭に‘0’をパディングして、0||((|p-1|-1)ビットのビット列)を組毎に出力する。即ち、図５に示されるように、ビット列Ｄ５０の先頭に‘0’が第１パディング部１０４によりパディングされる。また、ビット列Ｄ５１については、(|p-1|-1)ビットの各値に応じて、先頭に‘0’又は‘1’が第２パディング部１０５によりパディングされる。
【００５０】
本実施の形態にかかる復号処理装置２００の有する平文空間・文書写像部２０４の各機能が上述の第１の実施の形態と以下の点で異なる。平文空間・文書写像部２０４の判定部２０５は、上述の第１の実施の形態と同様に、{0,…,p-1}により表現される|p-1|ビットのビット列である第１付加ビット列と{1,…,p-1}により表現される|p-1|ビットのビット列である第２付加ビット列とについて、組毎に、判定条件を満たすか否かを判定し、当該判定結果に応じて、第１ビット列及び第２ビット列を出力するが、その判定条件が上述の第１の実施の形態と異なる。ここでの判定条件は、第１付加ビット列の先頭ビットが‘0’且つ第２付加ビット列の先頭ビットが‘1’であるとき他のビットは‘0’である又は第２付加ビット列の先頭ビットが‘0’であるとき他のビットのうち少なくとも１つは‘1’であることである。第１アンパディング部２０６は、判定部２０５から第１付加ビット列及び第２付加ビット列が出力された場合、|p-1|ビットの第１付加ビット列について、組毎に、先頭ビットの‘0’を取り除き、(|p-1|-1)ビットのビット列である第１ビット列を出力する。第２アンパディング部２０７は、判定部２０５から第１付加ビット列及び第２付加ビット列が出力された場合、|p-1|ビットの第２付加ビット列について、組毎に、先頭ビットの‘0’又は‘1’を取り除き、(|p-1|-1)ビットのビット列である第２ビット列を出力する。第１文書結合部２０８は、第１アンパディング部２０６から組毎に出力された(|p-1|-1)ビットの第１ビット列と、第２アンパディング部２０７から組毎に出力された(|p-1|-1)ビットの第２ビット列とを入力とし、これらを結合して、((|p-1|-1)ビットのビット列)||((|p-1|-1)ビットのビット列)を組毎に出力する。第２文書結合部２０９は、第１文書結合部２０８から組毎にn組の出力された(2*|p-1|-2)ビットのビット列を入力とし、これらを順番に結合して、(n*(2*|p-1|-2))ビットの文書を出力する。ここで出力されるビット列が、図５に示したビット列Ｄ３０である平文となる。
【００５１】
（２）動作
＜文書・平文空間写像処理＞
次に、本実施の形態にかかる暗号化処理装置１００の有する文書・平文空間写像部１０１が行う文書・平文空間写像処理の手順について図６を用いて説明する。文書・平文空間写像部１０１は、n*(2*|p-1|-2)ビットのビット列が入力されると、(2*|p-1|-2)ビット毎のビット列に分割して、n組の(2*|p-1|-2)ビットのビット列を出力する（ステップＳ４０）。次いで、文書・平文空間写像部１０１は、n組の(2*|p-1|-2)ビットについて、組毎に、先頭から(|p-1|-1)ビット目までのビット列（（|p-1|-1）ビットのビット列）と、|p-1|ビット目から(2*|p-1|-2)ビット目までのビット列（(|p-1|-1)ビットのビット列）とに分割してこれら２つのビット列を組毎に出力する（ステップＳ４１）。そして、文書・平文空間写像部１０１は、ステップＳ４１で組毎に２つずつ出力されたビット列のうち、先頭から(|p-1|-1)ビット目までのビット列（（|p-1|-1）ビットのビット列）について、先頭に‘0’をパディングし、0||((|p-1|-1)ビットのビット列)を組毎に出力する（ステップＳ４２）。また、文書・平文空間写像部１０１は、ステップＳ４１で組毎に２つずつ出力されたビット列のうち、|p-1|ビット目から(2*|p-1|-2)ビット目までのビット列（(|p-1|-1)ビットのビット列）について、(|p-1|-1)ビットが全て‘0’である場合、先頭に‘1’をパディングして、1||((|p-1|-1)ビットのビット列)を組毎に出力し、(|p-1|-1)ビットのうち少なくとも１つのビットが‘1’である場合、先頭に‘0’をパディングして、0||((|p-1|-1)ビットのビット列)を組毎に出力する（ステップＳ４３）。以降、上述の第１の実施の形態と同様にして、n組全てについてステップＳ３及びステップＳ４で出力されたビット列が伸張され、公開鍵を用いて暗号化され、暗号文Ciが出力されて、復号処理装置２００に送信される。
【００５２】
＜平文空間・文書写像処理＞
次に、暗号化処理装置１００から送信された暗号文Ciを復号処理装置２００が復号する際に、平文空間・文書写像部２０４が行う平文空間・文書写像処理の手順について図７を用いて説明する。上述の第１の実施の形態と同様にして、暗号文Ciが、上述の公開鍵に対応する秘密鍵を用いて、復号され圧縮されることにより、{0,…,p-1}により表現される|p-1|ビットの第１ビット列と{1,…,p-1}により表現される|p-1|ビットの第２ビット列とがn組出力されるものとする。ステップＳ２０〜Ｓ２２は上述の第１の実施の形態と同様である。但し、ここでの判定条件は、上述したように、第１付加ビット列の先頭ビットが‘0’且つ第２付加ビット列の先頭ビットが‘1’であるとき他のビットは‘0’である又は第２付加ビット列の先頭ビットが‘0’であるとき他のビットのうち少なくとも１つは‘1’であることである。ステップＳ６０では、平文空間・文書写像部２０４は、ステップＳ６１で出力された|p-1|ビットの第１付加ビット列について、先頭ビットの‘0’を取り除き、(|p-1|-1)ビットのビット列である第１ビット列を組毎に出力する。また、ステップＳ６１では、平文空間・文書写像部２０４は、ステップＳ２２で出力された|p-1|ビットの第２付加ビット列について、先頭ビットの‘0’又は‘1’を取り除き(|p-1|-1)ビットのビット列である第２ビット列を組毎に出力する。その後、平文空間・文書写像部２０４は、ステップＳ６０で組毎に出力された(|p-1|-1)ビットの第１ビット列と、ステップＳ６１で組毎に出力された(|p-1|-1)ビットの第２ビット列とが入力されると、これらを結合して、((|p-1|-1)ビットのビット列)||((|p-1|-1)ビットのビット列)を組毎に出力する（ステップＳ６２）。次いで、平文空間・文書写像部２０４は、ステップＳ６２で組毎にn組の出力された(2*|p-1|-2)ビットのビット列を順番に結合して、(n*(2*|p-1|-2))ビットの文書を出力する（ステップＳ６３）。
【００５３】
以上のように、|p-1|ビットより短いビット列の全てのビットが‘0’のとき先頭ビットに‘1’をパディングし、少なくとも１つのビット位置に‘1’が含まれるとき先頭ビットに‘0’をパディングすることにより、{1,…,2^{|p-1|-1}-1, 2^{|p-1|-1}}の要素になるため、必ず{1,…,p-1}に含まれるよう写像できる。なぜならば、2^{|p-1|-1}は2の倍数のため素数にはならず、|p-1|ビットの素数は必ず2^{|p-1|-1}以上となるからである。
【００５４】
従って、上述の実施の形態によっても、ビット列の分割とパディングとを行うことで、任意のビット列を６次拡大体上の素数位数トーラスを利用したＣｒａｍｅｒ−Ｓｈｏｕｐ暗号の平文空間に効率良く写像することができる。即ち、共通鍵暗号を利用することなく効率的に暗号化したり復号したりすることができる。
【００５５】
[第３の実施の形態]
次に、暗号化処理装置及び復号処理装置の第３の実施の形態について説明する。なお、上述の第１の実施の形態又は第２の実施の形態と共通する部分については、同一の符号を使用して説明したり、説明を省略したりする。
【００５６】
（１）構成
上述した第１の実施の形態及び第２の実施の形態においては、拡大次数mが’1’の場合について説明し、平文として複数のビット列が配列された任意のビット列を６次拡大体上の部分体の1つである素数位数のトーラス上の要素の圧縮表現F_p×F_p^*の組に写像した。本実施の形態においては、拡大次数mが‘1’より大きい整数である場合に一般化して説明する。即ち、ここでは、m次拡大体の6次拡大体上の部分体の１つである素数位数トーラスの要素の圧縮表現であるF_{p^m}×F_{p^m}＾*の組に任意のビット列を写像する。尚、ここでも、当該圧縮表現F_｛p^m｝×F_｛p^m｝^*の要素についてベクトル表現の組に写像するものとする。図８は、F_{p^m}×F_{p^m}＾*の組を概念的に示す図である。同図に示されるように、‘F_{p^m}={0,…,p-1}×{0,…,p-1}×…×{0,…,p-1}’である。‘F_{p^m}＾*＝{0,…,p-1}×{0,…,p-1}×…×{0,…,p-1}’であり、F_{p^m}のうち全ての数値が’0’である(0,0,…,0)を除いたものである。このような構成において、第１の実施の形態で説明した構成を‘1’以上の整数である拡大次数mに適用させた構成について以降詳細に説明する。
【００５７】
本実施の形態にかかる暗号化処理装置１００の機能的構成は上述の第１の実施の形態と以下の点で異なる。暗号化処理装置１００の有する第１文書分割部１０２には、平文として複数のビット列が配列された任意のビット列と、この平文を標数p及び拡大次数mの有限体F_{p^m}の6次拡大体上の部分群の1つである素数位数のトーラスの要素の圧縮表現であるF_{p^m}×F_{p^m}^*の要素（p：素数）の組に写像するためのpとmとが入力される。ここでは、n*（2*m*（|p-1|-1）-1）ビットのビット列が第１文書分割部１０２に入力されるものとする。nとmは各々任意の自然数であり、|p-1|は{0，・・・，p-1}の要素を表現するのに必要なビット数である。第１文書分割部１０２は、n*（2*m*（|p-1|-1）- 1）ビットのビット列を（2*m*（|p-1|-1）-1） ビット毎のビット列に分割して、n組の（2*m*（|p-1|-１）- 1）ビットのビット列を出力する。第２文書分割部１０３は、第１文書分割部１０２から出力されたn組の（2*m*（|p-1|-1）-1）ビットのビット列を入力とし、組毎に、先頭から（m*｜p-1|-1）ビット目までについてm個のビット列と、（m*｜p-1|）ビット目から（2*m*（|p-1|-1）-1）ビットまでの(m+1)個のビット列との合計(2*m+1)個のビット列とに分割してこれらを出力する。
【００５８】
前者のm個のビット列は、第２文書分割部１０３が以下のように分割を行うことにより得られる。第２文書分割部１０３は、先頭から(|p-1|-1)ビット目までのビット列（（|p-1|-1）ビットのビット列）と（|p-1|）ビット目から(2*|p-1|-2)ビット目までのビット列（（|p-1|-1）ビットのビット列）と・・・(（m-1）*｜p-1｜-m+2)ビット目から（m*｜p-1|-ｍ）ビット目までのビット列（（|p-1|-1）ビットのビット列）の計m個のビット列に分割する。後者の(m+1)個のビット列は、第２文書分割部１０３が、m個のうちk番目について、kが所定のiであるか否かに応じて、以下のように分割を行うことにより得られる。iは‘1’から‘m-1’までの自然数である。ここで、第２文書分割部１０３は、‘1’から‘m’までのkについて各々以下の(a)又は(b)又は(c)の分割を行う。
(a)‘k<i’であるとき ((m-1+k)*|p-1|-m-k)ビット目から ((m+k)*|p-1|-m-k-2)ビット目までのビット列（(|p-1|-1）ビットのビット列）に分割する。
(b)‘k=i’であるとき（(m-1+k)*|p-1|-m-k)ビット目から（(m-1+k)*|p-1|-m-k+j-1)ビット目までのビット列（jビットのビット列）と （(m-1+k)*|p-1|-m-k+j)ビット目から（(m+k)*|p-1|-m-k-3)ビット目（(|p-1|-j-2)ビットのビット列）に分割する。
(c)‘k>i’であるとき（(m+k)|p-1|-m-k-2)ビット目から（(m+k+1)*|p-1|-m-k-4)ビット目までのビット列（(|p-1|-1）ビットのビット列）に分割する。
尚、jは‘0’から‘|p-1|-2’までの自然数である。
【００５９】
図９は、n*（2*m*（|p-1|-１）-1）ビットのビット列の分割及びパディングを概念的に示す図である。尚、同図においては、説明の便宜上、‘i=m’としている。同図に示されるように、n*（2*m*（|p-1|-1）- 1） ビットのビット列Ｄ６０が、（2*m*（|p-1|-１）- 1)ビットのn組のビット列Ｄ７０に第１文書分割部１０２により分割される。各ビット列Ｄ７０は、(2*m-1)個の（|p-1|-1）ビットのビット列Ｄ８０と、1個のjビットのビット列Ｄ８１と、1個の（|p-1|-ｊ-2)ビットのビット列Ｄ８２とに第２文書分割部１０３により各々分割される。
【００６０】
第１パディング部１０４は、第２文書分割部１０３から組毎に（2*m+1）個ずつ出力されたビット列のうち、1個目からm個目のビット列（m個のビット列）を入力とし、各ビット列の先頭に‘0’を付加することによりパディングを行い、パディング後のm個の0||((|p-1|-1)ビットのビット列)を組毎に出力する。第２パディング部１０５は、第２文書分割部１０３から組毎に（2*m+1）個ずつ出力されたビット列のうち、（m+1）個目から（2*m+1）目までのビット列（（m+1）個のビット列）を入力とし、(m+i)番目のビット列と(m+i+1)番目のビット列以外のビット列の先頭に’0’をパディングし0||((|p-1|-1)ビットのビット列)とすると共に、(m+i)番目のビット列の先頭に‘0’をパディングし(m+i+1)番目のビット列の先頭に’1’をパディングしこれらのビット列を結合して、0||(ｊビットのビット列)||1||((|p-1|-ｊ-2)ビットのビット列)とし、パディングしたビット列を組毎に出力する。即ち、図９に示されるように、ビット列Ｄ８０の先頭に‘0’が第１パディング部１０４によりパディングされる。また、第２パディング部１０５により、ビット列Ｄ８１の先頭に‘0’がパディングされ、ビット列Ｄ８２の先頭に‘1’がパディングされこれらが結合される。そして、これが、先頭ビットが‘0’であり、所定のビット位置（ここでは（j+2）ビットである）が‘1’であるビット列となる。
【００６１】
伸張部１０６、暗号化部１０７及び送信部１０８の各機能は上述の第１の実施の形態と同様である。
【００６２】
次に、本実施の形態にかかる復号処理装置２００の機能的構成について上述の第１の実施の形態と異なる点について説明する。受信部２０１、復号部２０２の各機能は上述の第１の実施の形態と同様である。圧縮部２０３は、復号部２０２により暗号文Ciが復号されて得られたデータmiをF_{p^m}×F_{p^m}＾*の要素に写像することにより、圧縮して、F_{p^m}の要素により表現される|p-1|ビットのビット列の集合である第１付加ビット列集合とF_{p^m}＾*の要素により表現される|p-1|ビットのビット列の集合である第２付加ビット列集合とをn組出力する。圧縮の方法は、例えば非特許文献１に示されるため、ここではその詳細な説明を省略する。
【００６３】
平文空間・文書写像部２０４は、圧縮部２０３により出力されたn組の第１付加ビット列集合及び第２付加ビット列集合について、組毎に、パディングが正しく行われているか否かを判定し、判定結果に応じてアンパディングを行って、各ビット列を結合する。平文空間・文書写像部２０４の判定部２０５は、組毎のｍ個の|p-1|ビットのビット列を要素とする第１付加ビット列集合及びm個の|p-1|ビットのビット列を要素とする第２付加ビット列集合を入力とし、以下の判定条件を満たす場合、パディングが正しく行われていると判定し、第１付加ビット列集合及び第２付加ビット列集合を出力し、判定条件を満たさない場合、パディングが正しく行われていないと判定し、第１付加ビット列集合及び第２付加ビット列集合を出力しない。判定条件とは、第１付加ビット列集合に含まれる各ビット列の先頭ビットが‘0’且つ第２付加ビット列集合の各ビット列に含まれる先頭ビットが‘0’且つ第２付加ビット列集合に含まれるi番目のビット列の（j+2）ビット目が‘1’であることである。このiとは、上述の暗号化処理装置１００の第１パディング１０４がパディングを行う際に用いた’i’に相当する。判定部２０５は、このiを示す情報を暗号化処理装置００から予め取得しておく。
【００６４】
第１アンパディング部２０６は、判定部２０５から第１付加ビット列集合及び第２付加ビット列集合が出力された場合、第１付加ビット列集合に含まれる|p-1|ビットの各ビット列について、組毎に、各ビット列の先頭ビットの‘0’を取り除くことによりアンパディングを行って、アンパディング後の(|p-1|-1)ビットのビット列である第１ビット列を出力する。第２アンパディング部２０７は、判定部２０５から第１付加ビット列集合及び第２付加ビット列集合が出力された場合、第２付加ビット列集合に含まれる|p-1|ビットの各ビット列について、組毎に、各ビット列の先頭ビットの‘0’を取り除き、以下の(c)及び(d)の各ビット列である第２ビット列を出力する。
(c)i番目以外のビット列のアンパディング後の(m-1)個の(|p-1|-1)ビットのビット列
(d)i番目のビット列のアンパディング後の1ビット目からjビット目までのビット列（jビットのビット列）及び(j+1)ビット目から(|p-1|- 2 )ビット目までのビット列（(|p-1|-j-2)ビットのビット列）
【００６５】
第１文書結合部２０８は、第１アンパディング部２０６から組毎に出力されたm個の(|p-1|-1)ビットの第１ビット列と、第２アンパディング部２０７から組毎に出力された(m-1)個の(|p-1|-1)ビットのビット列、1個のjビットのビット列及び1個の(|p-1|-j-2)ビットである第２ビット列とを入力とし、これらを結合して、((|p-1|-1)ビットのビット列)＾m||((|p-1|-1)ビットのビット列)＾{i-1} ||(jビットのビット列)||((|p-1|-j-2)ビットのビット列)|| ((|p-1|-1)ビットのビット列)＾{m-i}を組毎に出力する。ただし、（xビットのビット列）^{y} (x,y:自然数) は、（xビットのビット列）をy個連結したビット列をあらわす。
【００６６】
第２文書結合部２０９は、第１文書結合部２０８から組毎に出力されたn組の(2*ｍ*（|p-1|-1)-1)ビットのビット列を入力とし、これらを順番に結合して、n* (2*ｍ*（|p-1|-1)-1)ビットのビット列を出力する。ここで出力されるビット列が、図９に示したビット列Ｄ６０である平文となる。
【００６７】
（２）動作
＜文書・平文空間写像処理＞
次に、本実施の形態にかかる暗号化処理装置１００が平文を暗号化する処理について説明する。ここでは、特に、文書・平文空間写像部１０１が行う文書・平文空間写像処理の手順について図１０を用いて説明する。文書・平文空間写像部１０１は、n*(2*m*（|p-1|-1）-１)ビットの文書が入力されると、(2*m*（|p-1|-1）-１)ビット毎のビット列に分割して、n組の(2*m*（|p-1|-1）-１)ビットのビット列を出力する（ステップＳ１２０）。次いで、文書・平文空間写像部１０１は、n組の(2*m*（|p-1|-1）-１)ビットについて、上述の構成欄で説明したように、組毎に、先頭から（m*（｜p-1|-1））ビット目までについて計m個のビット列と、（m*（｜p-1|-1）+1）ビット目から（2*m*（｜p-1|-1）-1）ビットめまでについて計(m+1)個のビット列との合計(2*m+1)個のビット列とに分割してこれらを出力する（ステップＳ１２１）。
【００６８】
そして、文書・平文空間写像部１０１は、ステップＳ１２１で組毎に（2*m+1）個ずつ出力されたビット列のうち、1個目からm個目までのビット列（（|p-1|-1）ビットのビット列）について、先頭に‘0’をパディングし、0||((|p-1|-1)ビットのビット列)を組毎に出力する（ステップＳ１２２）。また、文書・平文空間写像部１０１は、ステップＳ１２１で組毎に（2*m+1）個ずつ出力されたビット列のうち、（m+1）個目から（2*m+1）個目までのビット列（(m+i)個目のビット列はjビット、（m+i+1）個目のビット列は（|p-1|-j-2）ビット、それ以外は（|p-1|-1）ビットのビット列）について以下のようにパディングを行って、パディング後のビット列を出力する。文書・平文空間写像部１０１は、(m+i)番目のビット列と(m+i+1)番目のビット列以外のビット列の先頭に’0’をパディングし0||((|p-1|-1)ビットのビット列を出力する（ステップＳ１２２）また、文書・平文空間写像部１０１は、(m+i)番目のビット列の先頭に‘0’をパディングし(m+i+1)番目のビット列の先頭に’1’をパディングしこれらのビット列を結合して、0||(ｊビットのビット列)||1||((|p-1|-ｊ-2)ビットのビット列を組毎に出力する（ステップＳ１２３）。
【００６９】
そして、図示はしないが、n組全てについてステップＳ１２２及びステップＳ１２３でビット列が各々出力されて、これらのビット列が伸張部１０６に入力されると、伸張部１０６は、これを伸張して、データmiを得る。暗号化部１０７は、伸張部１０６により伸張されて得られたデータmiを、公開鍵を用いて暗号化し、暗号文Ciを出力する。そして、送信部１０８が、暗号文Ciを復号処理装置２００に送信する。
【００７０】
＜平文空間・文書写像処理＞
次に、暗号化処理装置１００から送信された暗号文Ciを復号処理装置２００が復号する処理について説明する。ここでは、特に、平文空間・文書写像部２０４が行う平文空間・文書写像処理の手順について図１１を用いて説明する。まず、図示はしないが、受信部２０１が暗号文Ciを受信し、復号部２０２が、上述の公開鍵に対応する秘密鍵を用いて、暗号文Ciを復号してデータmiを得る。圧縮部２０３は、復号部２０２により暗号文Ciが復号されて得られたデータmiをF_{p^m}×F_{p^m}^*に写像することにより、圧縮して、F_{p^m}の要素により表現されるm個の|p-1|ビットのビット列を含む第１付加ビット列集合とF_{p^m}^*の要素により表現されるm個の|p-1|ビットのビット列を含む第２付加ビット列集合とをn組出力する。
【００７１】
次いで、平文空間・文書写像部２０４は、圧縮部２０３により出力されたm個の|p-1|ビットのビット列を含む第１付加ビット列集合及びm個の|p-1|ビットのビット列を含む第２付加ビット列集合について、組毎に、パディングが正しく行われているか否かを判定する（ステップＳ１４０）。具体的には、平文空間・文書写像部２０４は、判定条件を満たさない場合、パディングが正しく行われていないと判定して（ステップＳ１４０：ＮＯ）、エラーを出力し（ステップＳ１４１）、判定条件を満たす場合、パディングが正しく行われていると判定して（ステップＳ２０：ＹＥＳ）、第１付加ビット列集合及び第２付加ビット列集合を組毎に出力する（ステップＳ１４２）。尚、ここでの判定条件は、上述したように、第１付加ビット列集合に含まれる各ビット列の先頭ビットが‘0’且つ第２付加ビット列集合に含まれる各ビット列の先頭ビットが‘0’且つ第２付加ビット列集合に含まれるi番目のビット列の（ｊ+2）ビット目が‘1’であることである。
【００７２】
次いで、平文空間・文書写像部２０４は、ステップＳ１４２で出力された第１付加ビット列集合に含まれるm個の|p-1|ビットの各ビット列について、各ビット列の先頭ビットの‘0’を取り除き、(|p-1|-1)ビットのビット列である第１ビット列を組毎に出力する（ステップＳ１４３）。また、平文空間・文書写像部２０４は、ステップＳ１４２で出力された第２付加ビット列集合に含まれるm個の(|p-1|)ビットの各ビット列について、先頭ビットの‘0’を取り除くと共にi番目のビット列の（ｊ+2）ビット目の‘1’を取り除き、i番目以外のビット列のアンパディング後の(m-1)個の(|p-1|-1)ビットのビット列とi番目のビット列のアンパディング後の1ビット目からjビット目までのビット列（jビットのビット列）及び(j+1)ビット目から(|p-1|- 2 )ビット目までのビット列（(|p-1|-j-2)ビットのビット列）である第１ビット列を出力する（ステップＳ１４４）。
【００７３】
その後、平文空間・文書写像部２０４は、ステップＳ１４３で組毎に出力されたm個の(|p-1|-1)ビットの第１ビット列と、ステップＳ１４４で組毎に出力された（ｍ-1）個の(|p-1|-1)ビットのビット列及び1個のｊビットのビット列及び１個の(|p-1|-ｊ-2)ビットのビット列とである第２ビット列とが入力されると、これらを結合して、((|p-1|-1)ビットのビット列)＾ｍ||((|p-1|-1)ビットのビット列)＾{i-1} ||(jビットのビット列)||((|p-1|-j-2)ビットのビット列)|| ((|p-1|-1)ビットのビット列)＾{m-i}を組毎に出力する（ステップＳ１４５）。次いで、平文空間・文書写像部２０４は、ステップＳ１４５で組毎に出力されたn組の(2*ｍ*(|p-1|-1)-1)ビットのビット列を順番に結合して、(n*(2*ｍ*(|p-1|-1)-1))ビットのビット列を出力する（ステップＳ１４６）。即ち、F_{p^m}×F_{p^m}^*の組からビット列に写像される。ただし、（xビットのビット列）^{y} (x,y:自然数) は、（xビットのビット列）をy個連結したビット列をあらわす。
【００７４】
以上のようにして、任意の平文を暗号化する際に、当該平文を分割しパディングを行うことでF_{p^m}×F_{p^m}＾*の要素の組を出力する。一方、暗号化されたビット列を復号する際には、F_{p^m}×F_{p^m}＾*の要素の組を入力としパディングを外し結合することで平文を復元する。このように、F_{p^m}の６次拡大体における素数位数のトーラス上で暗号化や復号を行うＣｒａｍｅｒ−Ｓｈｏｕｐ暗号を用いれば、F_{p^m}×F_{p^m}^*の上の任意の要素を暗号化したり復号したりすることができる。
【００７５】
即ち、|p-1|ビットより短いビット列の先頭ビットに‘0’をパディングすることにより、{0,…,2^{|p-1|-1}-1}の要素になるため、必ず{0,…,p-1}に含まれるよう写像できる。また、|p-1|ビットより短いビット列の先頭ビットに‘0’をパディングし、少なくとも１つのビット位置に‘1’をパディングすることにより、{1,…,2^{|p-1|-1}-1}の要素になるため、必ず{1,…,p-1}に含まれるよう写像できる。なぜならば、2^{|p-1|-1}は2の倍数のため素数にはならず、|p-1|ビットの素数は必ず2^{|p-1|-1}以上となるからである。そして、このようにパディングされたビット位置が予め分かっていれば、そのビット位置のビットを取り除いたビット列を結合することで元のビット列を復元することができる。
【００７６】
従って、上述の実施の形態によれば、ビット列の分割とパディングとを行うことで、任意のビット列を、F_{p^m}の６次拡大体における素数位数のトーラスを利用したＣｒａｍｅｒ−Ｓｈｏｕｐ暗号の平文空間に効率良く写像することができる。このため、共通鍵暗号を利用することなく効率的に暗号化したり復号したりすることができる。
【００７７】
[第４の実施の形態]
次に、文書・平文空間写像装置、平文空間・文書写像装置の第２の実施の形態について説明する。なお、上述の第１の実施の形態乃至第４の実施の形態と共通する部分については、同一の符号を使用して説明したり、説明を省略したりする。
【００７８】
・  構成
本実施の形態においても、上述の第３の実施の形態と同様に、拡大次数mが‘1’より大きい整数である場合に一般化して説明する。ここでは、第２の実施の形態で説明した構成を、‘1’以上の整数である拡大次数mに適用させた構成について詳細に説明する。
【００７９】
本実施の形態にかかる暗号化処理装置１００の機能的構成は上述の第２の実施の形態乃至第３の実施の形態と以下の点で異なる。暗号化処理装置１００の有する第１文書分割部１０２には、上述の第３の実施の形態と同様に、平文として複数のビット列が配列された任意のビット列と、この平文を標数ｐ及び拡大次数ｍの有限体F_{p^m}の6次拡大体上の部分群の1つである素数位数のトーラスの要素の圧縮表現であるF_{p^m}×F_{p^m}^*の要素（p：素数）の組に写像するためのpとmとが入力される。但し、ここでは、n*2* m*(|p-1|-1)ビットのビット列が第１文書分割部１０２に入力されるものとする。nとmは各々任意の自然数であり、|p-1|は{0，・・・，p-1}の要素を表現するのに必要なビット数である。第１文書分割部１０２は、n*2* m*(|p-1|-1)ビットのビット列を2*m*(|p-1|-1)ビット毎のビット列に分割して、n組の2*m*(|p-1|-1) ビットのビット列を出力する。第２文書分割部１０３は、第１文書分割部１０２から出力されたn組の2*m*(|p-1|-1)ビットのビット列を入力とし、組毎に、先頭からm*(|p-1|-1)ビット目までについてm個のビット列と、(m*（|p-１|-1）+1)ビット目から(2*m*（|p-１|-１）)ビット目までについてm個のビット列との合計2*m個のビット列とに分割してこれらを出力する。
【００８０】
前者の計m個のビット列は、第２文書分割部１０３が以下のように分割を行うことにより得られる。第２文書分割部１０３は、先頭から(|p-1|-1)ビット目までのビット列（(|p-1|-1)ビットのビット列）と（|p-1|）ビット目から(2*（|p-1|-1）)ビット目までのビット列（（|p-1|-1）ビットのビット列）と・・・((m-1)*（|p-1|-1）+1)ビット目から(m*（|p-1|-1）)ビット目までのビット列（（|p-1|-1）ビットのビット列）の計m個のビット列に分割する。後者のm個のビット列は、第２文書分割部１０３が以下のように分割を行うことにより得られる。第２文書分割部１０３は、(m*（|p-1|-1）+1)ビット目から((m+1)*（|p-1|-1）)ビット目までのビット列（（|p-1|-1）ビットのビット列）と（(m+1)*（|p-1|-1）+1）ビット目から((m+2)*（|p-1|-1）)ビット目までのビット列（（|p-1|-1）ビットのビット列）と・・・(（2*ｍ−１）*（｜ｐ−１｜-1）+1)ビット目から（2*ｍ*（｜ｐ−１｜−１））ビット目までのビット列（（|p-1|-1）ビットのビット列）の計m個に分割する。
【００８１】
図１２は、n*(2*m*（|p-1|-1）)ビットのビット列の分割及びパディングを概念的に示す図である。同図に示されるように、n*2* m*(|p-1|-1)ビットのビット列Ｄ９０が、2* m*(|p-1|-1)ビットのn組のビット列Ｄ１００に第１文書分割部１０２により分割される。各ビット列Ｄ７０が、m個の（|p-1|-1）ビットのビット列Ｄ１１０と、m個の（|p-1|-1）ビットのビット列Ｄ１１１とに第２文書分割部１０３により各々分割される。
【００８２】
第１パディング部１０４は、第２文書分割部１０３から組毎に2*m個ずつ出力された付加ビット列集合のうち、1個目からm個目までのビット列（（|p-1|-1）ビットのビット列）を入力とし、各ビット列の先頭に‘0’をパディングし、0||((|p-1|-1)ビットのビット列)を組毎に出力する。第２パディング部１０５は、第２文書分割部１０３から組毎に2*m個ずつ出力されたビット列のうち（m+1）個目から2*m個目までのビット列（(|p-1|-1)ビット）を入力とし、以下のようにパディングを行う。第１パディング部１０４は、m個の全てのビット列のビットが全て‘0’である場合、所定のビット列の先頭に‘1’をパディングしその他のビット列の先頭に‘0’をパディングし、m個のビット列の少なくとも１つのビットが‘1’である場合、各ビット列の先頭に‘0’をパディングする。尚、所定のビット列は、m個のビット列の中から任意に決定されるものであっても良い。ここでは、図１２に示されるように、ビット列Ｄ１１０の先頭に‘0’が第１パディング部１０４によりパディングされる。また、ビット列Ｄ１１１については、(|p-1|-1)ビットの各値に応じて、先頭に‘0’又は‘1’が第２パディング部１０５によりパディングされる。尚、同図においては、ビット列Ｄ１１１について、m個の全てのビット列のビットが全て‘0’である場合に’1’が先頭にパディングされる所定のビット列を２*m個目のビット列としている。
【００８３】
伸張部１０６、暗号化部１０７及び送信部１０８の各機能は上述の第１の実施の形態と同様である。
【００８４】
次に、本実施の形態にかかる復号処理装置２００の機能的構成について上述の第２の実施の形態乃至第３の実施の形態と異なる点について説明する。受信部２０１、復号部２０２の各機能は上述の第１の実施の形態と同様である。圧縮部２０３の機能は上述の第３の実施の形態と同様である。
【００８５】
平文空間・文書写像部２０４の判定部２０５は、上述の第３の実施の形態と同様に、F_{p^m}の要素により表現されるm個の|p-1|ビットのビット列を含む第１付加ビット列集合とF_{p^m}＾*により表現されるm個の|p-1|ビットのビット列のビット列を含む第２付加ビット列集合とについて、組毎に、判定条件を満たすか否かを判定し、当該判定結果に応じて、第１付加ビット列集合及び第２付加ビット列集合を出力するが、その判定条件が上述の第３の実施の形態と異なる。ここでの判定条件は、第１付加ビット列集合に含まれる各ビット列の先頭ビットが‘0’且つ第２付加ビット列集合に含まれる所定のビット列の先頭ビットが‘1’であるときその他のビットが全て‘0’である又は所定のビット列の先頭ビットが‘0’である且つその他のビット列の先頭が’0’であるとき先頭ビット以外の少なくとも１つのビットが‘1’であることである。この所定のビット列とは、上述の暗号化処理装置１００の第１パディング１０４がパディングを行う際に用いた所定のビット列に相当する。判定部２０５は、m個のビット列のうちいずれのビット列が所定のビット列に相当するかを示す情報を暗号化処理装置００から予め取得しておく。第１アンパディング部２０６は、判定部２０５から第１付加ビット列集合及び第２付加ビット列集合が出力された場合、第１付加ビット列集合に含まれるm個の|p-1|ビットの各ビット列について、組毎に、先頭ビットの‘0’を取り除き、(|p-1|-1)ビットの各ビット列である第１ビット列を出力する。第２アンパディング部２０７は、判定部２０５から第１付加ビット列集合及び第２付加ビット列集合が出力された場合、第２付加ビット列集合に含まれるm個の|p-1|ビットの各ビット列について、組毎に、先頭ビットの‘0’又は‘1’を取り除き、(|p-1|-1)ビットのビット列である第２ビット列を出力する。第１文書結合部２０８は、第１アンパディング部２０６から組毎に出力されたm個の(|p-1|-1)ビットの第１ビット列と、第２アンパディング部２０７から組毎に出力されたm個の(|p-1|-1)ビットの第２ビット列とを入力とし、これらを結合して、((|p-1|-1)ビットのビット列)＾m||((|p-1|-1)ビットのビット列)＾mを組毎に出力する。第２文書結合部２０９は、第１文書結合部２０８から組毎に出力されたn組の(2*m*(|p-1|-1))ビットのビット列を入力とし、これらを順番に結合して、(2*n*m*(|p-1|-1))ビットの文書を出力する。ここで出力されるビット列が、図１２に示したビット列Ｄ９０である平文となる。
【００８６】
（２）動作
＜文書・平文空間写像処理＞
次に、本実施の形態にかかる暗号化処理装置１００の有する文書・平文空間写像部１０１が行う文書・平文空間写像処理の手順について図１３を用いて説明する。文書・平文空間写像部１０１は、n*2* m*(|p-1|-1)ビットのビット列が入力されると、2*m*(|p-1|-1)ビット毎のビット列に分割して、n組の(2*ｍ*(|p-1|-1))ビットのビット列を出力する（ステップＳ１６０）。次いで、文書・平文空間写像部１０１は、n組の(2*ｍ*(|p-1|-1))ビットについて、上述の構成欄で説明したように、組毎に、先頭から（m*（｜p-1|-1））ビット目までについて計m個のビット列と、（m*（｜p-1|-1）+1）ビット目から（2*m*（｜p-1|-1））ビット目までについて計m個のビット列との合計2*m個のビット列とに分割してこれらを出力する（ステップＳ１６１）。そして、文書・平文空間写像部１０１は、ステップＳ１６１で組毎に2*m個ずつ出力されたビット列のうち、1個目からm個目までのビット列（（|p-1|-1）ビットのビット列）について、先頭に‘0’をパディングし、0||((|p-1|-1)ビットのビット列)を組毎に出力する（ステップＳ１６２）。また、文書・平文空間写像部１０１は、ステップＳ１６１で組毎に2*m個ずつ出力されたビット列のうち、（ｍ+1）個目から2*ｍ個目までのビット列（(|p-1|-１)ビットのビット列）について、m個の全てのビット列のビットが全て‘0’である場合、所定のビット列の先頭に‘1’をパディングして1||((|p-1|-1) ビットのビット列)としその他のビット列の先頭に‘0’をパディングして0||((|p-1|-１) ビットのビット列)とし組毎に出力し、m個のビット列の少なくとも１つのビットが‘1’である場合、各ビット列の先頭に‘0’をパディングして0||((|p-1|-１) ビットのビット列) を組毎に出力する（ステップＳ１６３）。以降、上述の第３の実施の形態と同様にして、n組全てについてステップＳ１６２及びステップＳ１６３で出力されたビット列が伸張され、公開鍵を用いて暗号化され、暗号文Ciが出力されて、復号処理装置２００に送信される。
【００８７】
＜平文空間・文書写像処理＞
次に、暗号化処理装置１００から送信された暗号文Ciを復号処理装置２００が復号する際に、平文空間・文書写像部２０４が行う平文空間・文書写像処理の手順について図１４を用いて説明する。上述の第１の実施の形態と同様にして、暗号文Ciが、上述の公開鍵に対応する秘密鍵を用いて、復号され圧縮されることにより、F_{p^m}により表現されるm個の|p-1|ビットのビット列からなる第１付加ビット列集合とF_{p^m}^*により表現されるm個の|p-1|ビットのビット列からなる第２付加ビット列集合とがn組出力されるものとする。次いで、平文空間・文書写像部２０４は、ステップＳ１４０で、上述の第３の実施の形態と同様にして、圧縮部２０３により出力されたm個の|p-1|ビットのビット列を含む第１付加ビット列集合及びm個の|p-1|ビットのビット列を含む第２付加ビット列集合とについて、組毎に、パディングが正しく行われているか否かを判定する。但し、ここでの判定条件は、上述したように、第１付加ビット列集合の各ビット列の先頭ビットが‘0’且つ第２付加ビット列集合の所定のビット列の先頭ビットが‘1’であるときその他のビットが全て‘0’である又は所定のビット列の先頭ビットが‘0’である且つその他のビット列の先頭が’0’であるとき先頭ビット以外の少なくとも１つのビットが‘1’であることである。そして、ステップＳ１４０の判定結果が否定的である場合、平文空間・文書写像部２０４は、エラーを出力し（ステップＳ１４１）、判定条件を満たす場合、パディングが正しく行われていると判定して、第１付加ビット列集合及び第２付加ビット列集合を組毎に出力する（ステップＳ１４２）。
【００８８】
ステップＳ１４２の後ステップＳ１８３では、平文空間・文書写像部２０４は、ステップＳ１４２で出力された第１付加ビット列集合に含まれるm個の|p-1|ビットの各ビット列について、各ビット列の先頭ビットの‘0’を取り除き、m個の(|p-1|-1)ビットのビット列である第１ビット列を組毎に出力する。また、ステップＳ１８４では、平文空間・文書写像部２０４は、ステップＳ１４２で出力された第２付加ビット列集合に含まれるm個の|p-1|ビットの各ビット列について、各ビット列の先頭ビットの‘0’又は‘1’を取り除きm個の(|p-1|-1)ビットのビット列である第２ビット列を組毎に出力する。その後、ステップＳ１４５では、平文空間・文書写像部２０４は、ステップＳ１８３で組毎に出力されたm個の(|p-1|-1)ビットの第１ビット列と、ステップＳ１８４で組毎に出力されたm個の(|p-1|-1)ビットの第２ビット列とが入力されると、これらを結合して、((|p-1|-1)ビットのビット列)＾m||((|p-1|-1)ビットのビット列)＾ｍを組毎に出力する。次いで、ステップＳ１４６では、平文空間・文書写像部２０４は、ステップＳ１４５で組毎に出力されたn組の（2*m*(|p-1|-1))ビットのビット列を順番に結合して、(n*2*m*(|p-1|-1))ビットの文書を出力する。
【００８９】
以上のように、|p-1|ビットより短いビット列の全てのビットが‘0’のとき先頭ビットに‘1’をパディングし、少なくとも１つのビット位置に‘1’が含まれるとき先頭ビットに‘0’をパディングすることにより、{1,…,2^{|p-1|-1}-1, 2^{|p-1|-1}}の要素になるため、必ず{1,…,p-1}に含まれるよう写像できる。なぜならば、2^{|p-1|-1}は2の倍数のため素数にはならず、|p-1|ビットの素数は必ず2^{|p-1|-1}以上となるからである。
【００９０】
従って、上述の実施の形態によっても、ビット列の分割とパディングとを行うことで、任意のビット列をF_{p^m}の６次拡大体上の素数位数トーラスを利用したＣｒａｍｅｒ−Ｓｈｏｕｐ暗号の平文空間に効率良く写像することができる。即ち、共通鍵暗号を利用することなく効率的に暗号化したり復号したりすることができる。
【００９１】
[変形例]
なお、本発明は前記実施形態そのままに限定されるものではなく、実施段階ではその要旨を逸脱しない範囲で構成要素を変形して具体化できる。また、前記実施形態に開示されている複数の構成要素の適宜な組み合わせにより、種々の発明を形成できる。例えば、実施形態に示される全構成要素から幾つかの構成要素を削除してもよい。さらに、異なる実施形態にわたる構成要素を適宜組み合わせてもよい。また、以下に例示するような種々の変形が可能である。
【００９２】
＜変形例１＞
上述した各実施の形態において、暗号化処理装置１００で実行される各種プログラムを、インターネット等のネットワークに接続されたコンピュータ上に格納し、ネットワーク経由でダウンロードさせることにより提供するように構成しても良い。当該各種プログラムを、インストール可能な形式又は実行可能な形式のファイルでＣＤ−ＲＯＭ、フレキシブルディスク（ＦＤ）、ＣＤ−Ｒ、ＤＶＤ（Digital Versatile Disk）等のコンピュータで読み取り可能な記録媒体に記録して提供するように構成しても良い。この場合には、プログラムは、暗号化処理装置１００において上記記録媒体から読み出して実行することにより記憶装置（例えばＲＡＭ）上にロードされ、上記機能的構成において説明した各部が記憶装置上に生成される。復号処理装置２００で実行される各種プログラムについても同様である。
【００９３】
＜変形例２＞
上述した第１の実施の形態においては、暗号化処理装置１００の第１文書分割部１０２に平文として入力されるビット列は、n*(2*|p-1|-3)ビットであるとしたが、これより多いビット列が入力されても良い。この場合、暗号化処理装置１００は、入力された平文をn*(2*|p-1|-3)ビット以下のビット列に分割した後、第１文書分割部１０２がn*(2*|p-1|-2)ビット以下のビット列を(2*|p-1|-2)ビット毎に分割するようにしても良い。
【００９４】
第２の実施の形態においても同様に、暗号化処理装置１００の第１文書分割部１０２に平文として入力されるビット列がn*(2*|p-1|-2)ビットより多い場合、暗号化処理装置１００は、入力された平文をn*(2*|p-1|-2)ビット以下のビット列に分割した後、第１文書分割部１０２がn*(2*|p-1|-2)ビット以下のビット列を(2*|p-1|-2)ビット毎に分割するようにしても良い。
【００９５】
＜変形例３＞
上述した各実施の形態においては、可逆な変換処理としてパディングを取り扱い、当該変換処理の逆変換処理としてアンパディングを取り扱ったが、可逆な変換処理及びこの逆変換処理はこれらに限らない。
【００９６】
＜変形例４＞
上述した各実施の形態においては、暗号化処理装置１００は送信部１０８を有し、復号処理装置２００は受信部２０１を有し、送信部１０８、受信部２０１及びネットワーク３００を介して暗号文Ciを受け渡すように構成した。しかし、暗号化処理装置１００は送信部１０８を有さず、復号処理装置２００は受信部２０１を有さず、暗号化処理装置１００が出力した暗号文Ciを、例えば、記憶媒体を介して復号処理装置２００は取得するように構成しても良い。
【００９７】
＜変形例５＞
上述した各実施の形態においては、６次拡大体における素数位数のトーラスを利用したＣｒａｍｅｒ−Ｓｈｏｕｐ暗号の平文空間に平文を写像する暗号化処理に適用する例について説明したが、これと同様の平文空間に写像する暗号化処理に適用しても良い。
【００９８】
＜変形例６＞
上述の第１の実施の形態においては、暗号化処理装置１００は、伸張部１０６及び暗号化部１０７を備えるようにしたが、図１５に示されるように、伸張部１０６を備えず、暗号化処理を行った後圧縮処理を行う暗号化部１０７´を備えるように構成しても良い。図１６は、本変形例にかかる暗号化処理の手順を示すフローチャートである。尚、ここでは、図示しないパラメータ生成装置が、公開鍵暗号に関する公開情報を生成し、鍵生成装置が、公開情報を用いて公開鍵と、これに対応する秘密鍵とを生成し、更に公開鍵を圧縮して圧縮公開鍵を予め生成しているものとする。尚、公開情報としては、公開鍵に関する情報として、群の要素やハッシュ関数などの情報や、暗号系が定義される群に関する情報として、位数や生成元の情報がある。
【００９９】
暗号化部１０７´は、公開情報に含まれる位数である公開パラメータｑ（ｑ：素数）を用いて、‘０≦ｕ＜ｑ’なる乱数ｕを生成する（ステップＳ８０）。次いで、暗号化部１０７´は、圧縮された公開鍵（ｇ~，ｅ，ｆ，ｈ）とｇとを伸長する（ステップＳ８１）。尚、ｇは暗号が定義される群Ｇ（位数はｑ）の生成元、ｇ~，ｅ，ｆ,ｈはＧの元とする。その後、暗号化部１０７´は、式５〜６によりべき乗を計算する（ステップＳ８２）。
【０１００】
ｃ１＝ｇ＾ｕ・・・(式５)
ｃ２＝（ｇ~）＾ｕ・・・（式６）
【０１０１】
そして、暗号化部１０７´は、ｃ１，ｃ２を圧縮する（ステップＳ８３）。その後、暗号化部１０７´は、平文ｍｓｇを伸長する（ステップＳ８４）。平文ｍｓｇは、第１パディング１０４で出力されたビット列m1iと第１パディング１０４で出力されたビット列m2i（1≦i≦4）とを含むものである。次いで、暗号化部１０７´は、式７によりべき乗を計算することにより、平文マスクを行う（ステップＳ８５）。
【０１０２】
ｃ３＝ｍｓｇ*ｈ＾ｕ・・・（式７）
【０１０３】
そして、暗号化部１０７´は、ｃ３を圧縮する（ステップＳ８６）。次いで、暗号化部１０７´は、ｃ１，ｃ２，ｃ３からハッシュ値を求め、ｖとする（ステップＳ８７）。そして、暗号化部１０７´は、式８によりべき乗を計算する（ステップＳ８８）。
【０１０４】
ｃ４＝（ｅ＾ｕ）*ｆ＾（ｕｖ）・・・（式８）
【０１０５】
次いで、暗号化部１０７´は、ｃ４を圧縮する（ステップＳ８９）。その後、暗号化部１０７´は、（ｃ１，ｃ２，ｃ３，ｃ４）を圧縮暗号文として出力する（ステップＳ９０）。
【０１０６】
以上のような構成によれば、暗号化処理と圧縮処理とを組み合わせて圧縮暗号文を出力することができる。
【０１０７】
＜変形例７＞
上述の第２の実施の形態においては、復号処理装置２００は、復号部２０２及び圧縮部２０３を備えるようにしたが、図１７に示されるように、圧縮部２０３を備えず、圧縮暗号文に対して復号処理を行う復号部２０２´を備えるように構成しても良い。図１８は、本変形例にかかる復号処理の手順を示すフローチャートである。尚、復号処理装置２００は、公開鍵（ｇ，ｇ~，ｅ,ｆ，ｈ）に対応する秘密鍵(ｘ1， ｘ2， ｙ1， ｙ2， ｚ1， ｚ2)を予め取得しているものとする。また、ここでは、受信部２０１は、圧縮暗号文（ｃ１，ｃ２，ｃ３，ｃ４）を暗号化処理装置１００から受信するものとする。そして、復号部２０２´は、（ｃ１，ｃ２，ｃ３，ｃ４）が正しい群の元であるか否かを判定する（ステップＳ１００）。即ち、復号部２０２´は、（ｃ１，ｃ２，ｃ３，ｃ４）の各要素が‘F_p×F_p^*’の元であるか否かを判定する。当該判定結果が肯定的である場合、復号部２０２´は、式９によりハッシュ計算を行う（ステップＳ１０１）。
【０１０８】
ｖ＝Ｈ（ｃ１，ｃ２，ｃ３）・・・（式９）
【０１０９】
次いで、復号部２０２´は、各ｃ１，ｃ２，ｃ３を伸長する（ステップＳ１０２）。その後、復号部２０２´は、式１０によりべき乗を計算することにより、検査式に用いるｃを計算する（ステップＳ１０３）。
【０１１０】
ｃ＝ｃ１＾（ｘ１＋ｙ１*ｖ）*ｃ２＾（ｘ２＋ｙ２*ｖ）・・・（式１０）
【０１１１】
そして、復号部２０２´は、ｃを圧縮する（ステップＳ１０４）。次いで、復号部２０２´は、検査式が成立するか否かを判定する（ステップＳ１０５）。即ち、復号部２０２´は、であるか否かを判定する。この判定は、例えば、ベクトル表現における各値が一致することで判定できる。当該判定結果が肯定的である場合、復号部２０２´は、式１１によりべき乗を計算する（ステップＳ１０６）。
【０１１２】
ｂ＝ｃ１＾ｚ１*ｃ２＾ｚ２・・・（式１１）
【０１１３】
次いで、復号部２０２´は、式１２により平文ｍｓｇを計算する（ステップＳ１０７）。
【０１１４】
ｍｓｇ＝ｃ３*ｂ＾（−１）・・・（式１２）
【０１１５】
その後、復号部２０２´は、平文ｍｓｇを圧縮する（ステップＳ１０８）。次いで、復号部２０２´は、圧縮した平文ｍｓｇを出力する（ステップＳ１０９）。そして、復号部２０２´は、平文ｍｓｇの全部又は一部について、{0,…,p-1}により表現される|p-1|ビットの第１ビット列と{1,…,p-1}により表現される|p-1|ビットの第２ビット列とをn組出力する。以降の平文空間・文書写像処理の手順は上述の第２の実施の形態と同様である。尚、ステップＳ１０５の判定結果が否定的である場合、復号部２０２´は、ｒｅｊｅｃｔを出力する（ステップＳ１１０）。また、ステップＳ１００の判定結果が否定的である場合、復号部２０２´は、ｉｎｖａｌｉｄを出力する（ステップＳ１１１）。但し、いずれの場合であっても、復号部２０２´は、なにも出力せずに処理を終了するようにしても良い。
【０１１６】
このように、圧縮暗号文（ｃ１，ｃ２，ｃ３，ｃ４）を入力とした場合であっても、以上のように圧縮された平文ｍｓｇについて、平文空間から平文に効率的に写像することが可能になる。
【０１１７】
＜変形例８＞
上述の各実施の形態においては、６次拡大体における素数位数のトーラス上の要素の圧縮表現の要素についてベクトル表現の組に写像するものとしたが、これに限らない。
【０１１８】
＜変形例９＞
上述の各実施の形態においては、復号処理装置２００は、判定部２０５を備えないように構成しても良い。この場合、第１アンパディング部２０６には、圧縮部２０３により出力されたn組の第１ビット列が入力され、第２アンパディング部２０７には、圧縮部２０３により出力されたn組の第２ビット列が入力される。第１アンパディング部２０６及び第２アンパディング部２０７が行う処理は上述の各実施の形態と同様である。例えば、暗号化処理装置１００においてパディングが正しく行われていると推定される場合には、復号処理装置２００の構成を判定部２０５を備えない構成にすることができ、これにより、復号処理装置２００の構成を簡素化することが可能になる。
【図面の簡単な説明】
【０１１９】
【図１】第１の実施の形態にかかる暗号化処理装置１００及び復号処理装置２００の構成を例示する図である。
【図２】同実施の形態にかかるn*(2*|p-1|-3)ビットのビット列の分割及びパディングを概念的に示す図である。
【図３】同実施の形態にかかる文書・平文空間写像部１０１が行う文書・平文空間写像処理の手順を示すフローチャートである。
【図４】同実施の形態にかかる平文空間・文書写像部２０４が行う平文空間・文書写像処理の手順を示すフローチャートである。
【図５】第２の実施の形態にかかるn*(2*|p-1|-2)ビットのビット列の分割及びパディングを概念的に示す図である。
【図６】同実施の形態にかかる文書・平文空間写像部１０１が行う文書・平文空間写像処理の手順を示すフローチャートである。
【図７】同実施の形態にかかる平文空間・文書写像部２０４が行う平文空間・文書写像処理の手順を示すフローチャートである。
【図８】第３の実施の形態にかかるF_{p^m}×F_{p^m}*の組を概念的に示す図である。
【図９】同実施の形態にかかるn*（2*m*（|p-1|-１）-1）ビットのビット列の分割及びパディングを概念的に示す図である。
【図１０】同実施の形態にかかる文書・平文空間写像部１０１が行う文書・平文空間写像処理の手順を示すフローチャートである。
【図１１】同実施の形態にかかる平文空間・文書写像部２０４が行う平文空間・文書写像処理の手順を示すフローチャートである。
【図１２】第４の実施の形態にかかるn*(2*m*（|p-1|-1）)ビットのビット列の分割及びパディングを概念的に示す図である。
【図１３】同実施の形態にかかる文書・平文空間写像部１０１が行う文書・平文空間写像処理の手順を示すフローチャートである。
【図１４】同実施の形態にかかる平文空間・文書写像部２０４が行う平文空間・文書写像処理の手順を示すフローチャートである。
【図１５】一変形例にかかる暗号化処理装置１００を例示する図である。
【図１６】同変形例にかかる暗号化処理及び圧縮処理の手順を示すフローチャートである。
【図１７】一変形例にかかる復号処理装置２００を例示する図である。
【図１８】同変形例にかかる復号処理の手順を示すフローチャートである。
【符号の説明】
【０１２０】
１００  暗号化処理装置
１０１  文書・平文空間写像部
１０２  第１文書分割部（第１分割部）
１０３  第２文書分割部（第２分割部）
１０４  第１パディング部（変換部）
１０５  第２パディング部（変換部）
１０６  伸張部
１０７，１０７´  暗号化部
１０８  送信部
２００  復号処理装置
２０１  受信部
２０２，２０２´  復号部
２０３  圧縮部
２０４  平文空間・文書写像部
２０５  判定部
２０６  第１アンパディング部（第１逆変換部）
２０７  第２アンパディング部（第２逆変換部）
２０８  第１文書結合部（第１結合部）
２０９  第２文書結合部（第２結合部）
３００  ネットワーク
【図１】
2010002525.tif 000003
【図２】
2010002525.tif 000004
【図３】
2010002525.tif 000005
【図４】
2010002525.tif 000006
【図５】
2010002525.tif 000007
【図６】
2010002525.tif 000008
【図７】
2010002525.tif 000009
【図８】
2010002525.tif 000010
【図９】
2010002525.tif 000011
【図１０】
2010002525.tif 000012
【図１１】
2010002525.tif 000013
【図１２】
2010002525.tif 000014
【図１３】
2010002525.tif 000015
【図１４】
2010002525.tif 000016
【図１５】
2010002525.tif 000017
【図１６】
2010002525.tif 000018
【図１７】
2010002525.tif 000019
【図１８】
2010002525.tif 000020