(57)【要約】  乱数生成部２２２は、整数ｓをランダムに生成する。第一暗号文生成部２４１は、整数ｓに基づいて平文Ｍを暗号化して第一暗号文Ｃ１を生成する。第二暗号文生成部２４２は、整数ｓと受信者ＩＤとに基づいて、第二暗号文Ｃ２を生成する。第三暗号文生成部２４３は、整数ｓに基づいて第三暗号文Ｃ３を生成する。ハッシュ値算出部２４４は、第一暗号文Ｃ１と第二暗号文Ｃ２と第三暗号文Ｃ３とを結合してハッシュ値Ｈ０を算出する。第四暗号文生成部２４５は、ハッシュ値Ｈ０に基づいて、第四暗号文Ｃ４を生成する。暗号文結合部２４６は、第一暗号文Ｃ１と第二暗号文Ｃ２と第三暗号文Ｃ３と第四暗号文Ｃ４とを結合して、暗号文Ｃを生成する。これにより、同一の平文を暗号化した暗号文を複数受信者に対して送信しても安全なＩＤベース公開鍵暗号通信システムを提供できる。
2008087734.tif 000002
【特許請求の範囲】
【請求項１】
平文Ｍをｎ人の受信者（ｎは、１以上の整数。）に対して通知する暗号文Ｃを生成する暗号文生成装置において、
情報を記憶する記憶装置と、情報を処理する処理装置と、暗号パラメータ記憶部と、受信者識別入力部と、平文入力部と、暗号文主文生成部と、ハッシュ値算出部と、暗号文検証文生成部と、暗号文結合部とを有し、
上記暗号パラメータ記憶部は、上記記憶装置を用いて、公開暗号パラメータを記憶し、
上記受信者識別入力部は、上記処理装置を用いて、ｎ人の受信者をそれぞれ識別するｎ個の受信者識別情報ＩＤｉ（ｉは、１以上ｎ以下の整数。）を入力し、
上記平文入力部は、上記処理装置を用いて、平文Ｍを入力し、
上記暗号文主文生成部は、上記処理装置を用いて、上記暗号パラメータ記憶部が記憶した公開暗号パラメータと、上記受信者識別入力部が入力したｎ個の受信者識別情報ＩＤｉと、上記平文入力部が入力した平文Ｍとに基づいて、ｎ人の受信者に対応するｎ個の暗号文主文ＣＢｉ（ｉは、１以上ｎ以下の整数。）を生成し、
上記ハッシュ値算出部は、上記処理装置を用いて、上記暗号文主文生成部が生成したｎ個の暗号文主文ＣＢｉを結合して、結合暗号文を生成し、上記処理装置を用いて、生成した結合暗号文に基づいて、ハッシュ値Ｈを算出し、
上記暗号文検証文生成部は、上記処理装置を用いて、上記暗号パラメータ記憶部が記憶した公開暗号パラメータと、上記ハッシュ値算出部が算出したハッシュ値Ｈとに基づいて、暗号文検証文ＣＣを生成し、
上記暗号文結合部は、上記処理装置を用いて、上記暗号文主文生成部が生成したｎ個の暗号文主文ＣＢｉと、上記暗号文検証文生成部が生成した暗号文検証文ＣＣとを結合して、１つの暗号文Ｃとする
ことを特徴とする暗号文生成装置。
【請求項２】
上記暗号文生成装置は、更に、乱数生成部を有し、
上記乱数生成部は、上記処理装置を用いて、ｎ人の受信者に対応するｎ個の整数ｓｉ（ｉは、１以上ｎ以下の整数。）をランダムに生成し、
上記暗号文主文生成部は、第一暗号文生成部と、第二暗号文生成部と、第三暗号文生成部とを有し、
上記第一暗号文生成部は、上記処理装置を用いて、上記暗号パラメータ記憶部が記憶した公開暗号パラメータと、上記平文入力部が入力した平文Ｍと、上記乱数生成部が生成したｎ個の整数ｓｉとに基づいて、ｎ人の受信者に対応するｎ個の第一暗号文Ｃ１ｉ（ｉは、１以上ｎ以下の整数。）を生成し、
上記第二暗号文生成部は、上記処理装置を用いて、上記暗号パラメータ記憶部が記憶した公開暗号パラメータと、上記受信者識別入力部が入力したｎ個の受信者識別情報ＩＤｉと、上記乱数生成部が生成したｎ個の整数ｓｉとに基づいて、ｎ人の受信者に対応するｎ個の第二暗号文Ｃ２ｉ（ｉは、１以上ｎ以下の整数。）を生成し、
上記第三暗号文生成部は、上記処理装置を用いて、上記暗号パラメータ記憶部が記憶した公開暗号パラメータと、上記乱数生成部が生成したｎ個の整数ｓｉとに基づいて、ｎ人の受信者に対応するｎ個の第三暗号文Ｃ３ｉ（ｉは、１以上ｎ以下の整数。）を生成し、
上記第一暗号文生成部が生成したｎ個の第一暗号文Ｃ１ｉと、上記第二暗号文生成部が生成したｎ個の第二暗号文Ｃ２ｉと、上記第三暗号文生成部が生成したｎ個の第三暗号文Ｃ３ｉとを、ｎ人の受信者に対応するｎ個の暗号文主文ＣＢｉとし、
上記ハッシュ値算出部は、上記処理装置を用いて、上記第一暗号文生成部が生成したｎ個の第一暗号文Ｃ１ｉと、上記第二暗号文生成部が生成したｎ個の第二暗号文Ｃ２ｉと、上記第三暗号文生成部が生成したｎ個の第三暗号文Ｃ３ｉとを結合して、１つの結合暗号文とし、上記処理装置を用いて、結合した１つの結合暗号文に基づいて、１つのハッシュ値Ｈを算出し、
上記暗号文検証文生成部は、上記処理装置を用いて、上記暗号パラメータ記憶部が記憶した公開暗号パラメータと、上記乱数生成部が生成したｎ個の整数ｓｉと、上記ハッシュ値算出部が算出した１つのハッシュ値Ｈとに基づいて、ｎ人の受信者に対応するｎ個の暗号文検証文ＣＣｉ（ｉは、１以上ｎ以下の整数。）を生成し、
上記暗号文結合部は、上記処理装置を用いて、上記第一暗号文生成部が生成したｎ個の第一暗号文Ｃ１ｉと、上記第二暗号文生成部が生成したｎ個の第二暗号文Ｃ２ｉと、上記第三暗号文生成部が生成したｎ個の第三暗号文Ｃ３ｉと、上記暗号文検証文生成部が生成したｎ個の暗号文検証文ＣＣｉとを結合して、１つの暗号文Ｃとする
ことを特徴とする請求項１に記載の暗号文生成装置。
【請求項３】
上記暗号パラメータ記憶部は、上記記憶装置を用いて、公開暗号パラメータとして、自然数ｒと、位数が上記自然数ｒである乗法群Ｇ１と、位数が上記自然数ｒである乗法群Ｇ２と、位数が上記自然数ｒである乗法群ＧＴと、乗法群Ｇ１の要素と乗法群Ｇ２の要素とから乗法群ＧＴの要素を算出するペアリングｅと、乗法群ＧＴの要素から所定の長さのビット列を算出する鍵生成関数ＫＤＦと、任意の長さのビット列から上記自然数ｒ未満の自然数を算出するハッシュ関数ＨＦと、乗法群Ｇ１の要素ｇと、乗法群Ｇ１の要素ｇ１と、乗法群Ｇ２の要素ｇ２と、乗法群Ｇ２の要素ｈ１と、乗法群Ｇ２の要素ｈ２と、乗法群Ｇ２の要素ｈ３とを表わす情報を記憶し、
上記受信者識別入力部は、上記処理装置を用いて、ｎ個の整数ＩＤｉをｎ個の受信者識別情報として入力し、
上記乱数生成部は、上記処理装置を用いて、上記暗号パラメータ記憶部が記憶した公開暗号パラメータが表わす自然数ｒに基づいて、ｎ人の受信者に対応するｎ個の１以上自然数ｒ未満の整数ｓｉ（ｉは、１以上ｎ以下の整数。）をランダムに生成し、
上記第一暗号文生成部は、上記処理装置を用いて、上記暗号パラメータ記憶部が記憶した公開暗号パラメータが表わす乗法群Ｇ１の要素ｇと乗法群Ｇ２の要素ｈ１とペアリングｅと、鍵生成関数ＫＤＦと、上記乱数生成部が生成したｎ個の整数ｓｉとに基づいて、ｎ人の受信者に対応するｎ個の鍵ビット列ｋｉ＝ＫＤＦ（ｅ（ｇ，ｈ１）＾ｓｉ）（ｉは、１以上ｎ以下の整数。）を算出し、上記処理装置を用いて、算出したｎ個の鍵ビット列ｋｉにより、上記平文入力部が入力した平文Ｍをそれぞれ暗号化して、ｎ人の受信者に対応するｎ個の第一暗号文Ｃ１ｉ（ｉは、１以上ｎ以下の整数。）とし、
上記第二暗号文生成部は、上記処理装置を用いて、上記暗号パラメータ記憶部が記憶した公開暗号パラメータが表わす乗法群Ｇ１の要素ｇと、乗法群Ｇ１の要素ｇ１と、上記受信者識別入力部が入力したｎ個の整数ＩＤｉと、上記乱数生成部が生成したｎ個の整数ｓｉとに基づいて、ｎ人の受信者に対応するｎ個の乗法群Ｇ１の要素ｕｉ＝（ｇ１・ｇ＾−ＩＤｉ）＾ｓｉ（ｉは、１以上ｎ以下の整数。）を算出し、算出したｎ個の乗法群Ｇ１の要素ｕｉをそれぞれ表わすビット列を、ｎ人の受信者に対応するｎ個の第二暗号文Ｃ２ｉ（ｉは、１以上ｎ以下の整数。）とし、
上記第三暗号文生成部は、上記処理装置を用いて、上記暗号パラメータ記憶部が記憶した公開暗号パラメータが表わす乗法群Ｇ１の要素ｇと乗法群Ｇ２の要素ｇ２とペアリングｅと、上記乱数生成部が生成したｎ個の整数ｓｉとに基づいて、ｎ人の受信者に対応するｎ個の乗法群ＧＴの要素ｖｉ＝ｅ（ｇ，ｇ２）＾ｓｉ（ｉは、１以上ｎ以下の整数。）を算出し、算出した乗法群ＧＴの要素ｖｉをそれぞれ表わすビット列を、ｎ人の受信者に対応するｎ個の第三暗号文Ｃ３ｉ（ｉは、１以上ｎ以下の整数。）とし、
上記ハッシュ値算出部は、上記処理装置を用いて、上記暗号パラメータ記憶部が記憶した公開暗号パラメータが表わすハッシュ関数ＨＦに基づいて、１つの自然数β０を算出して、ハッシュ値Ｈとし、
上記暗号文検証文生成部は、上記処理装置を用いて、上記暗号パラメータ記憶部が記憶した公開暗号パラメータが表わす乗法群Ｇ１の要素ｇと乗法群Ｇ２の要素ｈ２と乗法群Ｇ２の要素ｈ３とペアリングｅと、上記乱数生成部が生成したｎ個の整数ｓｉと、上記ハッシュ値算出部が算出した１つの自然数β０とに基づいて、ｎ人の受信者に対応するｎ個の乗法群ＧＴの要素ｙｉ＝ｅ（ｇ，ｈ２）＾ｓｉ・ｅ（ｇ，ｈ３）＾（ｓｉ・β０）（ｉは、１以上ｎ以下の整数。）を算出し、算出したｎ個の乗法群ＧＴの要素ｙｉをそれぞれ表わすビット列を、ｎ人の受信者に対応するｎ個の暗号文検証文ＣＣｉ（ｉは、１以上ｎ以下の整数。）とする
ことを特徴とする請求項２に記載の暗号文生成装置。
【請求項４】
上記暗号パラメータ記憶部は、上記記憶装置を用いて、公開暗号パラメータとして、自然数ｒと、位数が上記自然数ｒである乗法群Ｇ１と、位数が上記自然数ｒである乗法群Ｇ２と、位数が上記自然数ｒである乗法群ＧＴと、乗法群Ｇ１の要素と乗法群Ｇ２の要素とから乗法群ＧＴの要素を算出するペアリングｅと、乗法群ＧＴの要素から所定の長さのビット列を算出する鍵生成関数ＫＤＦと、所定の長さのビット列から乗法群ＧＴの要素を算出する２つの関数Ｖ１及びＶ２と、任意の長さのビット列から所定の長さのビット列を算出するハッシュ関数ＨＦと、乗法群Ｇ１の要素ｇと、乗法群Ｇ１の要素ｇ１と、乗法群Ｇ２の要素ｇ２とを表わす情報を記憶し、
上記受信者識別入力部は、上記処理装置を用いて、ｎ個の所定の長さのビット列ＩＤｉをｎ個の受信者識別情報として入力し、
上記乱数生成部は、上記処理装置を用いて、上記暗号パラメータ記憶部が記憶した公開暗号パラメータが表わす自然数ｒに基づいて、ｎ人の受信者に対応するｎ個の１以上自然数ｒ未満の整数ｓｉ（ｉは、１以上ｎ以下の整数。）をランダムに生成し、
上記第一暗号文生成部は、上記処理装置を用いて、上記暗号パラメータ記憶部が記憶した公開暗号パラメータが表わす乗法群Ｇ１の要素ｇ１と乗法群Ｇ２の要素ｇ２とペアリングｅと鍵生成関数ＫＤＦと、上記乱数生成部が生成したｎ個の整数ｓｉとに基づいて、ｎ人の受信者に対応するｎ個の鍵ビット列ｋｉ＝ＫＤＦ（ｅ（ｇ１，ｇ２）＾ｓｉ）（ｉは、１以上ｎ以下の整数。）を算出し、上記処理装置を用いて、算出したｎ個の鍵ビット列ｋｉにより、上記平文入力部が入力した平文Ｍをそれぞれ暗号化して、ｎ人の受信者に対応するｎ個の第一暗号文Ｃ１ｉ（ｉは、１以上ｎ以下の整数。）とし、
上記第二暗号文生成部は、上記処理装置を用いて、上記暗号パラメータ記憶部が記憶した公開暗号パラメータが表わす関数Ｖ１と、上記乱数生成部が生成したｎ個の整数ｓｉと、上記受信者識別入力部が入力したｎ個の所定の長さのビット列ＩＤｉとに基づいて、ｎ人の受信者に対応するｎ個の乗法群Ｇ２の要素ｕｉ＝Ｖ１（ＩＤｉ）＾ｓｉ（ｉは、１以上ｎ以下の整数。）を算出し、算出したｎ個の乗法群Ｇ２の要素ｕｉをそれぞれ表わすビット列を、ｎ人の受信者に対応するｎ個の第二暗号文Ｃ２ｉ（ｉは、１以上ｎ以下の整数。）とし、
上記第三暗号文生成部は、上記処理装置を用いて、上記暗号パラメータ記憶部が記憶した公開暗号パラメータが表わす乗法群Ｇ１の要素ｇと、上記乱数生成部が生成したｎ個の整数ｓｉとに基づいて、ｎ人の受信者に対応するｎ個の乗法群Ｇ１の要素ｖｉ＝ｇ＾ｓｉ（ｉは、１以上ｎ以下の整数。）を算出し、算出したｎ個の乗法群Ｇ１の要素ｖｉをそれぞれ表わすビット列を、ｎ人の受信者に対応するｎ個の第三暗号文Ｃ３ｉ（ｉは、１以上ｎ以下の整数。）とし、
上記ハッシュ値算出部は、上記処理装置を用いて、上記暗号パラメータ記憶部が記憶した公開暗号パラメータが表わすハッシュ関数ＨＦに基づいて、１つの所定の長さのビット列ｗ０を算出して、ハッシュ値Ｈとし、
上記暗号文検証文生成部は、上記処理装置を用いて、上記暗号パラメータ記憶部が記憶した公開暗号パラメータが表わす関数Ｖ２と、上記乱数生成部が生成したｎ個の整数ｓｉと、上記ハッシュ値算出部が算出した１つの所定の長さのビット列ｗ０とに基づいて、ｎ人の受信者に対応するｎ個の乗法群Ｇ２の要素ｙｉ＝Ｖ２（ｗ０）＾ｓｉ（ｉは、１以上ｎ以下の整数。）を算出し、算出したｎ個の乗法群Ｇ２の要素ｙｉをそれぞれ表わすビット列を、ｎ人の受信者に対応するｎ個の暗号文検証文ＣＣｉ（ｉは、１以上ｎ以下の整数。）とする
ことを特徴とする請求項２に記載の暗号文生成装置。
【請求項５】
上記暗号パラメータ記憶部は、上記記憶装置を用いて、２つの関数Ｖ１及びＶ２を表わす情報として、ｍ１個の乗法群Ｇ２の要素ｈξ（ξは、１以上ｍ１以下の整数。）と、２つの乗法群Ｇ２の要素ｈ１’及びｈ２’とを表わす情報を記憶し、
上記第二暗号文生成部は、上記処理装置を用いて、上記受信者識別入力部が入力したｎ個の所定の長さのビット列ＩＤｉそれぞれを、ｍ１個の所定の長さのビット列νｉξ（ξは、１以上ｍ１以下の整数。）に分割し、分割したｍ１個の所定の長さのビット列νｉξをｍ１個の整数として取り扱い、上記処理装置を用いて、上記暗号パラメータ記憶部が記憶した公開暗号パラメータが表わすｍ１個の乗法群Ｇ２の要素ｈξ（ξは、１以上ｍ１以下の整数。）と乗法群Ｇ２の要素ｈ１’と、分割したｍ１個の整数νｉξとに基づいて、関数Ｖ１の値である乗法群Ｇ２の要素Ｖ１（ＩＤｉ）＝ｈ１’・Π（ｈξ＾νｉξ）（ξは、１以上ｍ１以下の整数。）を算出し、
上記暗号文検証文生成部は、上記処理装置を用いて、上記ハッシュ値算出部が算出した所定の長さのビット列ｗを、ｍ１個の所定の長さのビット列νξ（ξは、１以上ｍ１以下の整数。）に分割し、分割したｍ１個の所定の長さのビット列νξをｍ１個の整数として取り扱い、上記処理装置を用いて、上記暗号パラメータ記憶部が記憶した公開暗号パラメータが表わすｍ１個の乗法群Ｇ２の要素ｈξ（ξは、１以上ｍ１以下の整数。）と乗法群Ｇ２の要素ｈ２’と、分割したｍ１個の整数νξとに基づいて、関数Ｖ２の値である乗法群Ｇ２の要素Ｖ２（ｗ）＝ｈ２’・Π（ｈξ＾νξ）（ξは、１以上ｍ１以下の整数。）を算出する
ことを特徴とする請求項４に記載の暗号文生成装置。
【請求項６】
上記暗号文主文生成部は、上記処理装置を用いて、上記受信者識別入力部が入力したｎ個の受信者識別情報ＩＤｉを含むｎ個の暗号文主文ＣＢｉを生成する
ことを特徴とする請求項１に記載の暗号文生成装置。
【請求項７】
上記暗号文生成装置は、更に、暗号文通知部を有し、
上記暗号文通知部は、上記処理装置を用いて、上記受信者識別入力部が入力したｎ個の受信者識別情報ＩＤｉによって識別されるｎ人の受信者に対して、上記暗号文結合部が結合した１つの暗号文Ｃを通知する
ことを特徴とする請求項１に記載の暗号文生成装置。
【請求項８】
上記暗号文生成装置は、更に、セッション鍵生成部を有し、
上記セッション鍵生成部は、上記処理装置を用いて、所定の長さのビット列をランダムに生成して、セッション鍵Ｋとし、
上記平文入力部は、上記処理装置を用いて、平文Ｍとして、上記セッション鍵生成部が生成したセッション鍵Ｋを入力する
ことを特徴とする請求項１に記載の暗号文生成装置。
【請求項９】
上記暗号文生成装置は、更に、データ入力部と、データ暗号化部と、暗号文通知部とを有し、
上記データ入力部は、上記処理装置を用いて、ｎ人の受信者に対して送信すべき１つの平文データを入力し、
上記データ暗号化部は、上記処理装置を用いて、上記セッション鍵生成部が生成したセッション鍵Ｋにより、上記データ入力部が入力した１つの平文データを暗号化して、１つの暗号化データとし、
上記暗号文通知部は、上記処理装置を用いて、上記受信者識別入力部が入力したｎ個の受信者識別情報ＩＤｉによって識別されるｎ人の受信者に対して、上記暗号文結合部が結合した１つの暗号文Ｃと、上記データ暗号化部が暗号化した１つの暗号化データとを通知する
ことを特徴とする請求項８に記載の暗号文生成装置。
【請求項１０】
それぞれが対応する暗号文受信装置を有するｎ人の受信者（ｎは、１以上の整数。）に対して、平文Ｍを１つの暗号文Ｃにより通知する暗号通信システムにおいて、
暗号パラメータ生成装置と、暗号文生成装置と、複数の暗号文受信装置とを有し、
上記暗号パラメータ生成装置は、
情報を記憶する記憶装置と、情報を処理する処理装置と、秘密情報生成部と、秘密情報記憶部と、公開パラメータ生成部と、公開パラメータ公開部と、識別情報入力部と、秘密鍵生成部と、秘密鍵通知部とを有し、
上記秘密情報生成部は、上記処理装置を用いて、秘密情報をランダムに生成し、
上記秘密情報記憶部は、上記記憶装置を用いて、上記秘密情報生成部が生成した秘密情報を記憶し、
上記公開パラメータ生成部は、上記処理装置を用いて、上記秘密情報生成部が生成した秘密情報に基づいて、公開暗号パラメータを生成し、
上記公開パラメータ公開部は、上記処理装置を用いて、上記公開パラメータ生成部が生成した公開暗号パラメータを公開し、
上記識別情報入力部は、上記処理装置を用いて、上記複数の暗号文受信装置のうち１つの暗号文受信装置に対応する１人の受信者を識別する受信者識別情報ＩＤを入力し、
上記秘密鍵生成部は、上記処理装置を用いて、上記秘密情報記憶部が記憶した秘密情報と、上記公開パラメータ生成部が生成した公開暗号パラメータと、上記識別情報入力部が入力した受信者識別情報ＩＤとに基づいて、上記１人の受信者に対応する秘密鍵ｄＩＤを生成し、
上記秘密鍵通知部は、上記処理装置を用いて、上記１人の受信者に対応する１つの暗号文受信装置に対して、上記秘密鍵生成部が生成した秘密鍵ｄＩＤを秘密裏に通知し、
上記暗号文生成装置は、
情報を記憶する記憶装置と、情報を処理する処理装置と、暗号パラメータ記憶部と、受信者識別入力部と、平文入力部と、暗号文主文生成部と、ハッシュ値算出部と、暗号文検証文生成部と、暗号文結合部と、暗号文通知部とを有し、
上記暗号パラメータ記憶部は、上記記憶装置を用いて、上記暗号パラメータ生成装置が公開した公開暗号パラメータを記憶し、
上記受信者識別入力部は、上記処理装置を用いて、ｎ人の受信者をそれぞれ識別するｎ個の受信者識別情報ＩＤｉ（ｉは、１以上ｎ以下の整数。）を入力し、
上記平文入力部は、上記処理装置を用いて、平文Ｍを入力し、
上記暗号文主文生成部は、上記処理装置を用いて、上記暗号パラメータ記憶部が記憶した公開暗号パラメータと、上記受信者識別入力部が入力したｎ個の受信者識別情報ＩＤｉと、上記平文入力部が入力した平文Ｍとに基づいて、ｎ人の受信者に対応するｎ個の暗号文主文ＣＢｉ（ｉは、１以上ｎ以下の整数。）を生成し、
上記ハッシュ値算出部は、上記処理装置を用いて、上記暗号文主文生成部が生成したｎ個の暗号文主文ＣＢｉを結合して、結合暗号文を生成し、上記処理装置を用いて、生成した結合暗号文に基づいて、ハッシュ値Ｈを算出し、
上記暗号文検証文生成部は、上記処理装置を用いて、上記暗号パラメータ記憶部が記憶した公開暗号パラメータと、上記ハッシュ値算出部が算出したハッシュ値Ｈとに基づいて、暗号文検証文ＣＣを生成し、
上記暗号文結合部は、上記処理装置を用いて、上記暗号文主文生成部が生成したｎ個の暗号文主文ＣＢｉと、上記暗号文検証文生成部が生成した暗号文検証文ＣＣとを結合して、１つの暗号文Ｃとし、
上記暗号文通知部は、上記処理装置を用いて、上記ｎ人の受信者に対応するｎ個の暗号文受信装置に対して、上記暗号文結合部が結合した１つの暗号文Ｃを通知し、
上記複数の暗号文受信装置は、それぞれ、
情報を記憶する記憶装置と、情報を処理する処理装置と、公開パラメータ記憶部と、秘密鍵記憶部と、暗号文受信部と、暗号文分解部と、検証ハッシュ値算出部と、暗号文検証部と、暗号文復号部とを有し、
上記公開パラメータ記憶部は、上記記憶装置を用いて、上記暗号パラメータ生成装置が公開した公開暗号パラメータを記憶し、
上記秘密鍵記憶部は、上記記憶装置を用いて、上記暗号パラメータ生成装置が通知した秘密鍵ｄＩＤを記憶し、
上記暗号文受信部は、上記処理装置を用いて、上記暗号文生成装置が通知した１つの暗号文Ｃを受信し、
上記暗号文分解部は、上記処理装置を用いて、上記暗号文受信部が受信した１つの暗号文Ｃに基づいて、ｎ個の暗号文主文ＣＢｉと、暗号文検証文ＣＣとを取得し、
上記検証ハッシュ値算出部は、上記処理装置を用いて、上記暗号文分解部が取得したｎ個の暗号文主文ＣＢｉを結合した検証結合暗号文に基づいて、検証ハッシュ値Ｈ’を算出し、
上記暗号文検証部は、上記処理装置を用いて、上記公開パラメータ記憶部が記憶した公開暗号パラメータと、上記暗号文分解部が取得したｎ個の暗号文主文ＣＢｉのうち、暗号文受信装置が対応する受信者に対応する１つの対応暗号文主文ＣＢＩＤと、暗号文検証文ＣＣと、上記検証ハッシュ値算出部が算出した検証ハッシュ値Ｈ’とに基づいて、上記暗号文受信部が受信した１つの暗号文Ｃに整合性があるか否かを判定し、
上記暗号文復号部は、上記暗号文受信部が受信した１つの暗号文Ｃに整合性があると、上記暗号文検証部が判定した場合に、上記処理装置を用いて、上記公開パラメータ記憶部が記憶した公開暗号パラメータと、上記秘密鍵記憶部が記憶した秘密鍵ｄＩＤと、上記暗号文分解部が取得したｎ個の暗号文主文ＣＢｉのうち、暗号文受信装置が対応する受信者に対応する１つの対応暗号文主文ＣＢＩＤとに基づいて、平文Ｍを復元する
ことを特徴とする暗号通信システム。
【請求項１１】
上記暗号文生成装置は、更に、乱数生成部を有し、
上記乱数生成部は、上記処理装置を用いて、ｎ人の受信者に対応するｎ個の整数ｓｉ（ｉは、１以上ｎ以下の整数。）をランダムに生成し、
上記暗号文主文生成部は、第一暗号文生成部と、第二暗号文生成部と、第三暗号文生成部とを有し、
上記第一暗号文生成部は、上記処理装置を用いて、上記暗号パラメータ記憶部が記憶した公開暗号パラメータと、上記平文入力部が入力した平文Ｍと、上記乱数生成部が生成したｎ個の整数ｓｉとに基づいて、ｎ人の受信者に対応するｎ個の第一暗号文Ｃ１ｉ（ｉは、１以上ｎ以下の整数。）を生成し、
上記第二暗号文生成部は、上記処理装置を用いて、上記暗号パラメータ記憶部が記憶した公開暗号パラメータと、上記受信者識別入力部が入力したｎ個の受信者識別情報ＩＤｉと、上記乱数生成部が生成したｎ個の整数ｓｉとに基づいて、ｎ人の受信者に対応するｎ個の第二暗号文Ｃ２ｉ（ｉは、１以上ｎ以下の整数。）を生成し、
上記第三暗号文生成部は、上記処理装置を用いて、上記暗号パラメータ記憶部が記憶した公開暗号パラメータと、上記乱数生成部が生成したｎ個の整数ｓｉとに基づいて、ｎ人の受信者に対応するｎ個の第三暗号文Ｃ３ｉ（ｉは、１以上ｎ以下の整数。）を生成し、
上記第一暗号文生成部が生成したｎ個の第一暗号文Ｃ１ｉと、上記第二暗号文生成部が生成したｎ個の第二暗号文Ｃ２ｉと、上記第三暗号文生成部が生成したｎ個の第三暗号文Ｃ３ｉとを、ｎ人の受信者に対応するｎ個の暗号文主文ＣＢｉとし、
上記ハッシュ値算出部は、上記処理装置を用いて、上記第一暗号文生成部が生成したｎ個の第一暗号文Ｃ１ｉと、上記第二暗号文生成部が生成したｎ個の第二暗号文Ｃ２ｉと、上記第三暗号文生成部が生成したｎ個の第三暗号文Ｃ３ｉとを結合して、１つの結合暗号文とし、上記処理装置を用いて、結合した１つの結合暗号文に基づいて、１つのハッシュ値Ｈを算出し、
上記暗号文検証文生成部は、上記処理装置を用いて、上記暗号パラメータ記憶部が記憶した公開暗号パラメータと、上記乱数生成部が生成したｎ個の整数ｓｉと、上記ハッシュ値算出部が算出した１つのハッシュ値Ｈとに基づいて、ｎ人の受信者に対応するｎ個の暗号文検証文ＣＣｉ（ｉは、１以上ｎ以下の整数。）を生成し、
上記暗号文結合部は、上記処理装置を用いて、上記第一暗号文生成部が生成したｎ個の第一暗号文Ｃ１ｉと、上記第二暗号文生成部が生成したｎ個の第二暗号文Ｃ２ｉと、上記第三暗号文生成部が生成したｎ個の第三暗号文Ｃ３ｉと、上記暗号文検証文生成部が生成したｎ個の暗号文検証文ＣＣｉとを結合して、１つの暗号文Ｃとし、
上記暗号文分解部は、上記処理装置を用いて、上記暗号文受信部が受信した１つの暗号文Ｃに基づいて、ｎ個の第一暗号文Ｃ１ｉと、ｎ個の第二暗号文Ｃ２ｉと、ｎ個の第三暗号文Ｃ３ｉと、ｎ個の暗号文検証文ＣＣｉとを取得し、上記処理装置を用いて、取得したｎ個の第一暗号文Ｃ１ｉとｎ個の第二暗号文Ｃ２ｉとｎ個の第三暗号文Ｃ３ｉとｎ個の暗号文検証文ＣＣｉとのうち、暗号文受信装置が対応する受信者に対応する１つの対応第一暗号文Ｃ１ＩＤと１つの対応第二暗号文Ｃ２ＩＤと１つの対応第三暗号文Ｃ３ＩＤと１つの対応暗号文検証文ＣＣＩＤとを取得し、
上記検証ハッシュ値算出部は、上記処理装置を用いて、上記暗号文分解部が取得したｎ個の第一暗号文Ｃ１ｉとｎ個の第二暗号文Ｃ２ｉとｎ個の第三暗号文Ｃ３ｉとを結合した検証結合暗号文に基づいて、検証ハッシュ値Ｈ’を算出し、
上記暗号文検証部は、上記処理装置を用いて、上記公開パラメータ記憶部が記憶した公開暗号パラメータと、上記暗号文分解部が取得した１つの対応第二暗号文Ｃ２ＩＤと１つの対応第三暗号文Ｃ３ＩＤとの少なくともいずれかと１つの対応暗号文検証文ＣＣＩＤと、上記検証ハッシュ値算出部が算出した検証ハッシュ値Ｈ’とに基づいて、上記暗号文受信部が受信した１つの暗号文Ｃに整合性があるか否かを判定し、
上記暗号文復号部は、上記暗号文受信部が受信した１つの暗号文Ｃに整合性があると、上記暗号文検証部が判定した場合に、上記処理装置を用いて、上記公開パラメータ記憶部が記憶した公開暗号パラメータと、上記秘密鍵記憶部が記憶した秘密鍵ｄＩＤと、上記暗号文分解部が取得した１つの対応第一暗号文Ｃ１ＩＤと１つの対応第二暗号文Ｃ２ＩＤと１つの対応第三暗号文Ｃ３ＩＤとに基づいて、平文Ｍを復元する
ことを特徴とする請求項１０に記載の暗号通信システム。
【請求項１２】
上記暗号パラメータ生成装置は、更に、群パラメータ記憶部を有し、
上記群パラメータ記憶部は、上記記憶装置を用いて、群パラメータとして、自然数ｒと、位数が上記自然数ｒである乗法群Ｇ１と、位数が上記自然数ｒである乗法群Ｇ２と、位数が上記自然数ｒである乗法群ＧＴと、乗法群Ｇ１の要素と乗法群Ｇ２の要素とから乗法群ＧＴの要素を算出するペアリングｅとを表わす情報を記憶し、
上記秘密情報生成部は、上記処理装置を用いて、上記群パラメータ記憶部が記憶した群パラメータが表わす自然数ｒに基づいて、１以上自然数ｒ未満の整数αをランダムに生成し、
上記秘密情報記憶部は、上記記憶装置を用いて、上記秘密情報生成部が生成した整数αを表わす情報を秘密情報として記憶し、
上記公開パラメータ生成部は、上記処理装置を用いて、乗法群ＧＴの要素から所定の長さのビット列を算出する鍵生成関数ＫＤＦと、任意の長さのビット列から上記自然数ｒ未満の自然数を算出するハッシュ関数ＨＦとを決定し、上記処理装置を用いて、上記群パラメータ記憶部が記憶した群パラメータが表わす乗法群Ｇ１と乗法群Ｇ２とに基づいて、乗法群Ｇ１の要素ｇと乗法群Ｇ２の要素ｇ２と乗法群Ｇ２の要素ｈ１と乗法群Ｇ２の要素ｈ２と乗法群Ｇ２の要素ｈ３とをランダムに選択し、上記処理装置を用いて、上記秘密情報生成部が生成した秘密情報が表わす整数αと、選択した乗法群Ｇ１の要素ｇとに基づいて、乗法群Ｇ１の要素ｇ１＝ｇ＾αを算出し、上記群パラメータ記憶部が記憶した群パラメータと、決定した鍵生成関数ＫＤＦとハッシュ関数ＨＦと、選択した乗法群Ｇ１の要素ｇと乗法群Ｇ２の要素ｇ２と乗法群Ｇ２の要素ｈ１と乗法群Ｇ２の要素ｈ２と乗法群Ｇ２の要素ｈ３と、算出した乗法群Ｇ１の要素ｇ１とを表わす情報を公開暗号パラメータとし、
上記識別情報入力部は、上記処理装置を用いて、整数ＩＤを受信者識別情報として入力し、
上記秘密鍵生成部は、上記処理装置を用いて、上記公開パラメータ生成部が生成した公開暗号パラメータが表わす自然数ｒに基づいて、１以上自然数ｒ未満の整数ｒＩＤ，１と、１以上自然数ｒ未満の整数ｒＩＤ，２と、１以上自然数ｒ未満の整数ｒＩＤ，３とをランダムに生成し、上記処理装置を用いて、上記公開パラメータ生成部が生成した公開暗号パラメータが表わす乗法群Ｇ２の要素ｇ２と乗法群Ｇ２の要素ｈ１と乗法群Ｇ２の要素ｈ２と乗法群Ｇ２の要素ｈ３と、上記秘密情報記憶部が記憶した整数αと、上記識別情報入力部が入力した整数ＩＤと、生成した整数ｒＩＤ，１と整数ｒＩＤ，２と整数ｒＩＤ，３とに基づいて、乗法群Ｇ２の要素ｈＩＤ，１＝（ｈ１・ｇ２＾（−ｒＩＤ，１））＾（１／（α−ＩＤ））と、乗法群Ｇ２の要素ｈＩＤ，２＝（ｈ２・ｇ２＾（−ｒＩＤ，２））＾（１／（α−ＩＤ））と、乗法群Ｇ２の要素ｈＩＤ，３＝（ｈ３・ｇ２＾（−ｒＩＤ，３））＾（１／（α−ＩＤ））とを算出し、生成した整数ｒＩＤ，１と整数ｒＩＤ，２と整数ｒＩＤ，３と、算出した乗法群Ｇ２の要素ｈＩＤ，１と乗法群Ｇ２の要素ｈＩＤ，２と乗法群Ｇ２の要素ｈＩＤ，３とを表わす情報を秘密鍵ｄＩＤとし、
上記受信者識別入力部は、上記処理装置を用いて、ｎ個の整数ＩＤｉをｎ個の受信者識別情報として入力し、
上記乱数生成部は、上記処理装置を用いて、上記暗号パラメータ記憶部が記憶した公開暗号パラメータが表わす自然数ｒに基づいて、ｎ人の受信者に対応するｎ個の１以上自然数ｒ未満の整数ｓｉ（ｉは、１以上ｎ以下の整数。）をランダムに生成し、
上記第一暗号文生成部は、上記処理装置を用いて、上記暗号パラメータ記憶部が記憶した公開暗号パラメータが表わす乗法群Ｇ１の要素ｇと乗法群Ｇ２の要素ｈ１とペアリングｅと、鍵生成関数ＫＤＦと、上記乱数生成部が生成したｎ個の整数ｓｉとに基づいて、ｎ人の受信者に対応するｎ個の鍵ビット列ｋｉ＝ＫＤＦ（ｅ（ｇ，ｈ１）＾ｓｉ）（ｉは、１以上ｎ以下の整数。）を算出し、上記処理装置を用いて、算出したｎ個の鍵ビット列ｋｉにより、上記平文入力部が入力した平文Ｍをそれぞれ暗号化して、ｎ人の受信者に対応するｎ個の第一暗号文Ｃ１ｉ（ｉは、１以上ｎ以下の整数。）とし、
上記第二暗号文生成部は、上記処理装置を用いて、上記暗号パラメータ記憶部が記憶した公開暗号パラメータが表わす乗法群Ｇ１の要素ｇと、乗法群Ｇ１の要素ｇ１と、上記受信者識別入力部が入力したｎ個の整数ＩＤｉと、上記乱数生成部が生成したｎ個の整数ｓｉとに基づいて、ｎ人の受信者に対応するｎ個の乗法群Ｇ１の要素ｕｉ＝（ｇ１・ｇ＾（−ＩＤｉ））＾ｓｉ（ｉは、１以上ｎ以下の整数。）を算出し、算出したｎ個の乗法群Ｇ１の要素ｕｉをそれぞれ表わすビット列を、ｎ人の受信者に対応するｎ個の第二暗号文Ｃ２ｉ（ｉは、１以上ｎ以下の整数。）とし、
上記第三暗号文生成部は、上記処理装置を用いて、上記暗号パラメータ記憶部が記憶した公開暗号パラメータが表わす乗法群Ｇ１の要素ｇと乗法群Ｇ２の要素ｇ２とペアリングｅと、上記乱数生成部が生成したｎ個の整数ｓｉとに基づいて、ｎ人の受信者に対応するｎ個の乗法群ＧＴの要素ｖｉ＝ｅ（ｇ，ｇ２）＾ｓｉ（ｉは、１以上ｎ以下の整数。）を算出し、算出したｎ個の乗法群ＧＴの要素ｖｉをそれぞれ表わすビット列を、ｎ人の受信者に対応するｎ個の第三暗号文Ｃ３とし、
上記ハッシュ値算出部は、上記処理装置を用いて、上記暗号パラメータ記憶部が記憶した公開暗号パラメータが表わすハッシュ関数ＨＦに基づいて、１つの自然数β０を算出して、ハッシュ値Ｈとし、
上記暗号文検証文生成部は、上記処理装置を用いて、上記暗号パラメータ記憶部が記憶した公開暗号パラメータが表わす乗法群Ｇ１の要素ｇと乗法群Ｇ２の要素ｈ２と乗法群Ｇ２の要素ｈ３とペアリングｅと、上記乱数生成部が生成したｎ個の整数ｓｉと、上記ハッシュ値算出部が算出した１つの自然数β０とに基づいて、ｎ人の受信者に対応するｎ個の乗法群ＧＴの要素ｙｉ＝ｅ（ｇ，ｈ２）＾ｓｉ・ｅ（ｇ，ｈ３）＾（ｓｉ・β０）（ｉは、１以上ｎ以下の整数。）を算出し、算出した乗法群ＧＴの要素ｙｉをそれぞれ表わすビット列を、ｎ人の受信者に対応するｎ個の暗号文検証文ＣＣｉ（ｉは、１以上ｎ以下の整数。）とし、
上記検証ハッシュ値算出部は、上記処理装置を用いて、上記公開パラメータ記憶部が記憶した公開暗号パラメータが表わすハッシュ関数ＨＦに基づいて、自然数β’を算出して、検証ハッシュ値Ｈ’とし、
上記暗号文検証部は、上記処理装置を用いて、上記公開パラメータ記憶部が記憶した公開暗号パラメータが表わすペアリングｅと、上記秘密鍵記憶部が記憶した秘密鍵ｄＩＤが表わす整数ｒＩＤ，２と整数ｒＩＤ，３と乗法群Ｇ２の要素ｈＩＤ，２と乗法群Ｇ２の要素ｈＩＤ，３と、上記暗号文分解部が取得した１つの対応第二暗号文Ｃ２ＩＤが表わす乗法群Ｇ１の要素ｕＩＤと１つの対応第三暗号文Ｃ３ＩＤが表わす乗法群ＧＴの要素ｖＩＤと、上記検証ハッシュ値算出部が算出した自然数β’とに基づいて、乗法群ＧＴの要素ｙ’＝ｅ（ｕＩＤ，ｈＩＤ，２・ｈＩＤ，３＾β’）・ｖＩＤ＾（ｒＩＤ，２＋ｒＩＤ，３・β’）を算出し、上記処理装置を用いて、算出した乗法群ＧＴの要素ｙ’と、上記暗号文分解部が取得した対応暗号文検証文ＣＣＩＤが表わす乗法群ＧＴの要素ｙＩＤとを比較し、乗法群ＧＴの要素ｙ’と乗法群ＧＴの要素ｙＩＤとが一致する場合に、上記暗号文受信部が受信した１つの暗号文Ｃに整合性があると判定し、
上記暗号文復号部は、上記暗号文受信部が受信した１つの暗号文Ｃに整合性があると、上記暗号文検証部が判定した場合に、上記処理装置を用いて、上記公開パラメータ記憶部が記憶した公開暗号パラメータが表わすペアリングｅと鍵生成関数ＫＤＦと、上記秘密鍵記憶部が記憶した秘密鍵ｄＩＤが表わす整数ｒＩＤ，１と乗法群Ｇ２の要素ｈＩＤ，１と、上記暗号文分解部が取得した１つの対応第二暗号文Ｃ２ＩＤが表わす乗法群Ｇ１の要素ｕＩＤと、対応第三暗号文Ｃ３ＩＤが表わす乗法群Ｇ２の要素ｖＩＤとに基づいて、鍵ビット列ｋ’＝ＫＤＦ（ｅ（ｕＩＤ，ｈＩＤ，１）・ｖＩＤ＾ｒＩＤ，１）を算出し、上記処理装置を用いて、算出した鍵ビット列ｋ’により、上記暗号文分解部が取得した対応第一暗号文Ｃ１ＩＤを復号して、平文Ｍを復元する
ことを特徴とする請求項１１に記載の暗号通信システム。
【請求項１３】
上記暗号通信システムは、更に、群パラメータ生成装置を有し、
上記群パラメータ生成装置は、
情報を処理する処理装置と、群位数候補生成部と、群位数安全性判定部と、パラメータ生成部とを有し、
上記群位数候補生成部は、上記処理装置を用いて、素数ｒを群位数の候補として生成し、
上記群位数安全性判定部は、上記処理装置を用いて、上記群位数候補生成部が生成した素数ｒに基づいて、素数ｒと１との差（ｒ−１）の因数と、素数ｒと１との和（ｒ＋１）の因数とを算出し、上記処理装置を用いて、算出した（ｒ−１）の因数と（ｒ＋１）の因数とに基づいて、上記群位数候補生成部が生成した素数ｒが安全な群位数であるか否かを判定し、
上記パラメータ生成部は、上記群位数候補生成部が生成した素数ｒが安全な群位数であると群位数安全性判定部が判定した場合に、上記処理装置を用いて、上記群位数候補生成部が生成した素数ｒに基づいて、素数ｒを群位数とする乗法群を算出し、上記処理装置を用いて、算出した乗法群を表わす情報を含む群パラメータを生成し、
上記群パラメータ記憶部は、上記記憶装置を用いて、上記群パラメータ生成装置が生成した群パラメータを記憶する
ことを特徴とする請求項１２に記載の暗号通信システム。
【請求項１４】
上記群位数候補生成部は、上記処理装置を用いて、所定の整数ｋの倍数に１を加えた素数ｒを群位数の候補として生成し、
上記群位数安全性判定部は、剰余算出部と、判定値算出部と、素因数判定部とを有し、
上記剰余算出部は、上記処理装置を用いて、上記群位数候補生成部が生成した素数ｒに基づいて、素数ｒを４で割った余りを算出し、
上記判定値算出部は、上記剰余算出部が算出した余りが１である場合に、上記処理装置を用いて、上記所定の整数ｋと、上記群位数候補生成部が生成した素数ｒとに基づいて、素数ｒと１との差（ｒ−１）を、整数ｋと４との最小公倍数ＬＣＭ（ｋ，４）で割った商である整数ｒ１＝（ｒ−１）／ＬＣＭ（ｋ，４）を算出し、上記処理装置を用いて、上記群位数候補生成部が生成した素数ｒに基づいて、素数ｒと１との和（ｒ＋１）を２で割った商である整数ｒ２＝（ｒ＋１）／２を算出し、上記剰余算出部が算出した余りが３である場合に、上記処理装置を用いて、上記所定の整数ｋと、上記群位数候補生成部が生成した素数ｒとに基づいて、素数ｒと１との差（ｒ−１）を、整数ｋと２との最小公倍数ＬＣＭ（ｋ，２）で割った商である整数ｒ１＝（ｒ−１）／ＬＣＭ（ｋ，２）を算出し、上記処理装置を用いて、上記群位数候補生成部が生成した素数ｒに基づいて、素数ｒと１との和（ｒ＋１）を４で割った商である整数ｒ２＝（ｒ＋１）／４を算出し、
上記素因数判定部は、上記処理装置を用いて、上記判定値算出部が算出した整数ｒ１に基づいて、整数ｒ１が所定の整数Ｂ１より小さい素因数を有するか否かを判定し、上記処理装置を用いて、上記判定値算出部が算出した整数ｒ２に基づいて、整数ｒ２が所定の整数Ｂ２より小さい素因数を有するか否かを判定し、整数ｒ１が所定の整数Ｂ１より小さい素因数を有すると判定した場合、及び、整数ｒ２が所定の整数Ｂ２よりも小さい素因数を有すると判定した場合に、上記群位数候補生成部が生成した素数ｒが安全な群位数でないと判定する
ことを特徴とする請求項１３に記載の暗号通信システム。
【請求項１５】
上記群位数候補生成部は、上記処理装置を用いて、所定の整数ｋの倍数に１を加えた素数ｒを群位数の候補として生成し、
上記群位数安全性判定部は、剰余算出部と、判定値算出部と、素因数判定部とを有し、
上記剰余算出部は、上記処理装置を用いて、上記群位数候補生成部が生成した素数ｒに基づいて、素数ｒを４で割った余りを算出し、
上記判定値算出部は、上記剰余算出部が算出した余りが１である場合に、上記処理装置を用いて、上記所定の整数ｋと、上記群位数候補生成部が生成した素数ｒとに基づいて、素数ｒと１との差（ｒ−１）を、整数ｋと４との最小公倍数ＬＣＭ（ｋ，４）で割った商である整数ｒ１＝（ｒ−１）／ＬＣＭ（ｋ，４）を算出し、上記処理装置を用いて、上記群位数候補生成部が生成した素数ｒに基づいて、素数ｒと１との和（ｒ＋１）を２で割った商である整数ｒ２＝（ｒ＋１）／２を算出し、上記剰余算出部が算出した余りが３である場合に、上記処理装置を用いて、上記所定の整数ｋと、上記群位数候補生成部が生成した素数ｒとに基づいて、素数ｒと１との差（ｒ−１）を、整数ｋと２との最小公倍数ＬＣＭ（ｋ，２）で割った商である整数ｒ１＝（ｒ−１）／ＬＣＭ（ｋ，２）を算出し、上記処理装置を用いて、上記群位数候補生成部が生成した素数ｒに基づいて、素数ｒと１との和（ｒ＋１）を４で割った商である整数ｒ２＝（ｒ＋１）／４を算出し、
上記素因数判定部は、上記処理装置を用いて、上記判定値算出部が算出した整数ｒ１に基づいて、整数ｒ１が素数であるか否かを判定し、上記処理装置を用いて、上記判定値算出部が算出した整数ｒ２に基づいて、整数ｒ２が素数であるか否かを判定し、整数ｒ１が素数でないと判定した場合、及び、整数ｒ２が素数でないと判定した場合に、上記群位数候補生成部が生成した素数ｒが安全な群位数でないと判定する
ことを特徴とする請求項１３に記載の暗号通信システム。
【請求項１６】
上記暗号パラメータ生成装置は、更に、群パラメータ記憶部を有し、
上記群パラメータ記憶部は、上記記憶装置を用いて、群パラメータとして、自然数ｒと、位数が上記自然数ｒである乗法群Ｇ１と、位数が上記自然数ｒである乗法群Ｇ２と、位数が上記自然数ｒである乗法群ＧＴと、乗法群Ｇ１の要素と乗法群Ｇ２の要素とから乗法群ＧＴの要素を算出するペアリングｅとを表わす情報を記憶し、
上記秘密情報生成部は、上記処理装置を用いて、上記群パラメータ記憶部が記憶した群パラメータが表わす自然数ｒに基づいて、１以上自然数ｒ未満の整数αをランダムに生成し、
上記公開パラメータ生成部は、上記処理装置を用いて、乗法群ＧＴの要素から所定の長さのビット列を算出する鍵生成関数ＫＤＦと、所定の長さのビット列から乗法群ＧＴの要素を算出する２つの関数Ｖ１及びＶ２と、任意の長さのビット列から所定の長さのビット列を算出するハッシュ関数ＨＦとを決定し、上記処理装置を用いて、上記群パラメータ記憶部が記憶した群パラメータが表わす乗法群Ｇ１と乗法群Ｇ２とに基づいて、乗法群Ｇ１の要素ｇと乗法群Ｇ２の要素ｇ２とをランダムに選択し、上記秘密情報生成部が生成した整数αと、選択した乗法群Ｇ１の要素ｇとに基づいて、乗法群Ｇ１の要素ｇ１＝ｇ＾αを算出し、上記処理装置を用いて、上記群パラメータ記憶部が記憶した群パラメータと、決定した鍵生成関数ＫＤＦと２つの関数Ｖ１及びＶ２とハッシュ関数ＨＦと、選択した乗法群Ｇ１の要素ｇと乗法群Ｇ２の要素ｇ２と、算出した乗法群Ｇ１の要素ｇ１とを表わす情報を公開暗号パラメータとし、
上記秘密情報生成部は、更に、上記処理装置を用いて、生成した整数αと、上記公開パラメータ生成部が選択した乗法群Ｇ２の要素ｇ２とに基づいて、乗法群Ｇ２の要素ｍｓｋ＝ｇ２＾αを算出し、
上記秘密情報記憶部は、上記記憶装置を用いて、上記秘密情報生成部が算出した乗法群Ｇ２の要素ｍｓｋを表わす情報を秘密情報として記憶し、
上記識別情報入力部は、上記処理装置を用いて、所定の長さのビット列ＩＤを受信者識別情報として入力し、
上記秘密鍵生成部は、上記処理装置を用いて、上記公開パラメータ生成部が生成した公開暗号パラメータが表わす自然数ｒに基づいて、１以上自然数ｒ未満の整数ｒＩＤをランダムに生成し、上記処理装置を用いて、上記公開パラメータ生成部が生成した公開暗号パラメータが表わす乗法群Ｇ１の要素ｇと関数Ｖ１と、上記秘密情報記憶部が記憶した秘密情報が表わす乗法群Ｇ２の要素ｍｓｋと、生成した整数ｒＩＤとに基づいて、乗法群Ｇ２の要素ｄ０ＩＤ＝ｍｓｋ・Ｖ１（ＩＤ）＾ｒＩＤと、乗法群Ｇ１の要素ｄ１ＩＤ＝ｇ＾ｒＩＤとを算出し、算出した乗法群Ｇ２の要素ｄ０ＩＤと乗法群Ｇ１の要素ｄ１ＩＤとを表わす情報を、秘密鍵ｄＩＤとし、
上記受信者識別入力部は、上記処理装置を用いて、ｎ個の所定の長さのビット列ＩＤｉをｎ個の受信者識別情報として入力し、
上記乱数生成部は、上記処理装置を用いて、上記暗号パラメータ記憶部が記憶した公開暗号パラメータが表わす自然数ｒに基づいて、ｎ人の受信者に対応するｎ個の１以上自然数ｒ未満の整数ｓｉ（ｉは、１以上ｎ以下の整数。）をランダムに生成し、
上記第一暗号文生成部は、上記処理装置を用いて、上記暗号パラメータ記憶部が記憶した公開暗号パラメータが表わす乗法群Ｇ１の要素ｇ１と乗法群Ｇ２の要素ｇ２とペアリングｅと鍵生成関数ＫＤＦと、上記乱数生成部が生成したｎ個の整数ｓｉとに基づいて、ｎ人の受信者に対応するｎ個の鍵ビット列ｋｉ＝ＫＤＦ（ｅ（ｇ１，ｇ２）＾ｓｉ）（ｉは、１以上ｎ以下の整数。）を算出し、上記処理装置を用いて、算出したｎ個の鍵ビット列ｋｉにより、上記平文入力部が入力した平文Ｍをそれぞれ暗号化して、ｎ人の受信者に対応するｎ個の第一暗号文Ｃ１ｉ（ｉは、１以上ｎ以下の整数。）とし、
上記第二暗号文生成部は、上記処理装置を用いて、上記暗号パラメータ記憶部が記憶した公開暗号パラメータが表わす関数Ｖ１と、上記受信者識別入力部が入力したｎ個の所定の長さのビット列ＩＤｉと、上記乱数生成部が生成したｎ個の整数ｓｉ（ｉは、１以上ｎ以下の整数。）とに基づいて、ｎ人の受信者に対応するｎ個の乗法群Ｇ２の要素ｕｉ＝Ｖ１（ＩＤｉ）＾ｓｉ（ｉは、１以上ｎ以下の整数。）を算出し、算出したｎ個の乗法群Ｇ２の要素ｕｉをそれぞれ表わすビット列を、ｎ人の受信者に対応するｎ個の第二暗号文Ｃ２ｉ（ｉは、１以上ｎ以下の整数。）とし、
上記第三暗号文生成部は、上記処理装置を用いて、上記暗号パラメータ記憶部が記憶した公開暗号パラメータが表わす乗法群Ｇ１の要素ｇと、上記乱数生成部が生成したｎ個の整数ｓｉとに基づいて、ｎ人の受信者に対応するｎ個の乗法群Ｇ１の要素ｖｉ＝ｇ＾ｓｉ（ｉは、１以上ｎ以下の整数。）を算出し、算出したｎ個の乗法群Ｇ１の要素ｖｉをそれぞれ表わすビット列を、ｎ人の受信者に対応するｎ個の第三暗号文Ｃ３ｉ（ｉは、１以上ｎ以下の整数。）とし、
上記ハッシュ値算出部は、上記処理装置を用いて、上記暗号パラメータ記憶部が記憶した公開暗号パラメータが表わすハッシュ関数ＨＦに基づいて、１つの所定の長さのビット列ｗ０を算出して、ハッシュ値Ｈとし、
上記暗号文検証文生成部は、上記処理装置を用いて、上記暗号パラメータ記憶部が記憶した公開暗号パラメータが表わす関数Ｖ２と、上記乱数生成部が生成したｎ個の整数ｓｉと、上記ハッシュ値算出部が算出した１つの所定の長さのビット列ｗ０とに基づいて、ｎ人の受信者に対応するｎ個の乗法群Ｇ２の要素ｙｉ＝Ｖ２（ｗ０）＾ｓｉ（ｉは、１以上ｎ以下の整数。）を算出し、算出したｎ個の乗法群Ｇ２の要素ｙｉをそれぞれ表わすビット列を、ｎ人の受信者に対応するｎ個の暗号文検証文ＣＣｉとし、
上記検証ハッシュ値算出部は、上記処理装置を用いて、上記公開パラメータ記憶部が記憶した公開暗号パラメータが表わすハッシュ関数ＨＦに基づいて、所定の長さのビット列ｗ’を算出して、検証ハッシュ値Ｈ’とし、
上記暗号文検証部は、上記処理装置を用いて、上記公開パラメータ記憶部が記憶した公開暗号パラメータが表わすペアリングｅと関数Ｖ２と、上記暗号文分解部が取得した対応第三暗号文Ｃ３ＩＤが表わす乗法群Ｇ１の要素ｖＩＤと上記検証ハッシュ値算出部が算出した所定の長さのビット列ｗ’とに基づいて、乗法群ＧＴの要素ｅ（ｖＩＤ，Ｖ２（ｗ’））を算出し、上記処理装置を用いて、上記公開パラメータ記憶部が記憶した公開暗号パラメータが表わす乗法群Ｇ１の要素ｇとペアリングｅと、上記暗号文分解部が取得した対応暗号文検証文ＣＣＩＤが表わす乗法群Ｇ２の要素ｙＩＤとに基づいて、乗法群ＧＴの要素ｅ（ｇ，ｙＩＤ）を算出し、上記処理装置を用いて、算出した乗法群ＧＴの要素ｅ（ｖＩＤ，Ｖ２（ｗ’））と、算出した乗法群ＧＴの要素ｅ（ｇ，ｙＩＤ）とを比較し、乗法群ＧＴの要素ｅ（ｖＩＤ，Ｖ２（ｗ’））と乗法群ＧＴの要素ｅ（ｇ，ｙＩＤ）とが一致する場合に、上記暗号文受信部が受信した１つの暗号文Ｃに整合性があると判定し、
上記暗号文復号部は、上記暗号文受信部が受信した１つの暗号文Ｃに整合性があると、上記暗号文検証部が判定した場合に、上記処理装置を用いて、上記公開パラメータ記憶部が記憶した公開暗号パラメータが表わすペアリングｅと鍵生成関数ＫＤＦと、上記秘密鍵記憶部が記憶した秘密鍵ｄＩＤが表わす乗法群Ｇ２の要素ｄ０ＩＤと乗法群Ｇ１の要素ｄ１ＩＤと、上記暗号文分解部が取得した１つの対応第二暗号文Ｃ２ＩＤが表わす乗法群Ｇ２の要素ｕＩＤと対応第三暗号文Ｃ３ＩＤが表わす乗法群Ｇ１の要素ｖＩＤとに基づいて、鍵ビット列ｋ’＝ＫＤＦ（ｅ（ｖＩＤ，ｄ０ＩＤ）／ｅ（ｄ１ＩＤ，ｕＩＤ））を算出し、上記処理装置を用いて、算出した鍵ビット列ｋ’により、上記暗号文分解部が取得した対応第一暗号文Ｃ１ＩＤを復号して、平文Ｍを復元する
ことを特徴とする請求項１１に記載の暗号通信システム。
【請求項１７】
上記暗号文主文生成部は、上記処理装置を用いて、上記受信者識別入力部が入力したｎ個の受信者識別情報ＩＤｉを含むｎ個の暗号文主文ＣＢｉを生成する
ことを特徴とする請求項１０に記載の暗号通信システム。
【請求項１８】
上記暗号文生成装置は、更に、セッション鍵生成部と、データ入力部と、データ暗号化部と、暗号文通知部とを有し、
上記セッション鍵生成部は、上記処理装置を用いて、所定の長さのビット列をランダムに生成して、セッション鍵Ｋとし、
上記平文入力部は、上記処理装置を用いて、平文Ｍとして、上記セッション鍵生成部が生成したセッション鍵Ｋを入力し、
上記データ入力部は、上記処理装置を用いて、ｎ人の受信者に対して送信すべき１つの平文データを入力し、
上記データ暗号化部は、上記処理装置を用いて、上記セッション鍵生成部が生成したセッション鍵Ｋにより、上記データ入力部が入力した１つの平文データを暗号化して、１つの暗号化データとし、
上記暗号文通知部は、上記処理装置を用いて、上記受信者識別入力部が入力したｎ個の受信者識別情報によって識別されるｎ人の受信者に対して、上記暗号文結合部が結合した１つの暗号文Ｃと、上記データ暗号化部が暗号化した１つの暗号化データとを通知し、
上記複数の暗号文受信装置は、更に、それぞれ、データ復号部を有し、
上記暗号文受信部は、上記処理装置を用いて、上記暗号文生成装置が通知した１つの暗号文Ｃと１つの暗号化データとを受信し、
上記データ復号部は、上記暗号文復号部が復元した平文Ｍをセッション鍵Ｋ’とし、上記処理装置を用いて、上記セッション鍵Ｋ’により、上記暗号文受信部が受信した１つの暗号化データを復号する
ことを特徴とする請求項１０に記載の暗号通信システム。
【請求項１９】
それぞれが対応する暗号文受信装置を有するｎ人の受信者（ｎは、１以上の整数。）に対して、平文Ｍを１つの暗号文Ｃにより通知する暗号通信システムにおける暗号処理に使用する乗法群のパラメータを生成する群パラメータ生成装置において、
情報を処理する処理装置と、群位数候補生成部と、群位数安全性判定部と、パラメータ生成部とを有し、
上記群位数候補生成部は、上記処理装置を用いて、素数ｒを群位数の候補として生成し、
上記群位数安全性判定部は、上記処理装置を用いて、上記群位数候補生成部が生成した素数ｒに基づいて、素数ｒと１との差（ｒ−１）の因数と、素数ｒと１との和（ｒ＋１）の因数とを算出し、上記処理装置を用いて、算出した（ｒ−１）の因数と（ｒ＋１）の因数とに基づいて、上記群位数候補生成部が生成した素数ｒが安全な群位数であるか否かを判定し、
上記パラメータ生成部は、上記群位数候補生成部が生成した素数ｒが安全な群位数であると群位数安全性判定部が判定した場合に、上記処理装置を用いて、上記群位数候補生成部が生成した素数ｒに基づいて、素数ｒを群位数とする乗法群を算出し、上記処理装置を用いて、算出した乗法群を表わす情報を含む群パラメータを生成し、
上記群パラメータ記憶部は、上記記憶装置を用いて、上記群パラメータ生成装置が生成した群パラメータを記憶する
ことを特徴とする群パラメータ生成装置。
【請求項２０】
上記群位数候補生成部は、上記処理装置を用いて、所定の整数ｋの倍数に１を加えた素数ｒを群位数の候補として生成し、
上記群位数安全性判定部は、剰余算出部と、判定値算出部と、素因数判定部とを有し、
上記剰余算出部は、上記処理装置を用いて、上記群位数候補生成部が生成した素数ｒに基づいて、素数ｒを４で割った余りを算出し、
上記判定値算出部は、上記剰余算出部が算出した余りが１である場合に、上記処理装置を用いて、上記所定の整数ｋと、上記群位数候補生成部が生成した素数ｒとに基づいて、素数ｒと１との差（ｒ−１）を、整数ｋと４との最小公倍数ＬＣＭ（ｋ，４）で割った商である整数ｒ１＝（ｒ−１）／ＬＣＭ（ｋ，４）を算出し、上記処理装置を用いて、上記群位数候補生成部が生成した素数ｒに基づいて、素数ｒと１との和（ｒ＋１）を２で割った商である整数ｒ２＝（ｒ＋１）／２を算出し、上記剰余算出部が算出した余りが３である場合に、上記処理装置を用いて、上記所定の整数ｋと、上記群位数候補生成部が生成した素数ｒとに基づいて、素数ｒと１との差（ｒ−１）を、整数ｋと２との最小公倍数ＬＣＭ（ｋ，２）で割った商である整数ｒ１＝（ｒ−１）／ＬＣＭ（ｋ，２）を算出し、上記処理装置を用いて、上記群位数候補生成部が生成した素数ｒに基づいて、素数ｒと１との和（ｒ＋１）を４で割った商である整数ｒ２＝（ｒ＋１）／４を算出し、
上記素因数判定部は、上記処理装置を用いて、上記判定値算出部が算出した整数ｒ１に基づいて、整数ｒ１が所定の整数Ｂ１より小さい素因数を有するか否かを判定し、上記処理装置を用いて、上記判定値算出部が算出した整数ｒ２に基づいて、整数ｒ２が所定の整数Ｂ２より小さい素因数を有するか否かを判定し、整数ｒ１が所定の整数Ｂ１より小さい素因数を有すると判定した場合、及び、整数ｒ２が所定の整数Ｂ２よりも小さい素因数を有すると判定した場合に、上記群位数候補生成部が生成した素数ｒが安全な群位数でないと判定する
ことを特徴とする請求項１９に記載の群パラメータ生成装置。
【請求項２１】
上記群位数候補生成部は、上記処理装置を用いて、所定の整数ｋの倍数に１を加えた素数ｒを群位数の候補として生成し、
上記群位数安全性判定部は、剰余算出部と、判定値算出部と、素因数判定部とを有し、
上記剰余算出部は、上記処理装置を用いて、上記群位数候補生成部が生成した素数ｒに基づいて、素数ｒを４で割った余りを算出し、
上記判定値算出部は、上記剰余算出部が算出した余りが１である場合に、上記処理装置を用いて、上記所定の整数ｋと、上記群位数候補生成部が生成した素数ｒとに基づいて、素数ｒと１との差（ｒ−１）を、整数ｋと４との最小公倍数ＬＣＭ（ｋ，４）で割った商である整数ｒ１＝（ｒ−１）／ＬＣＭ（ｋ，４）を算出し、上記処理装置を用いて、上記群位数候補生成部が生成した素数ｒに基づいて、素数ｒと１との和（ｒ＋１）を２で割った商である整数ｒ２＝（ｒ＋１）／２を算出し、上記剰余算出部が算出した余りが３である場合に、上記処理装置を用いて、上記所定の整数ｋと、上記群位数候補生成部が生成した素数ｒとに基づいて、素数ｒと１との差（ｒ−１）を、整数ｋと２との最小公倍数ＬＣＭ（ｋ，２）で割った商である整数ｒ１＝（ｒ−１）／ＬＣＭ（ｋ，２）を算出し、上記処理装置を用いて、上記群位数候補生成部が生成した素数ｒに基づいて、素数ｒと１との和（ｒ＋１）を４で割った商である整数ｒ２＝（ｒ＋１）／４を算出し、
上記素因数判定部は、上記処理装置を用いて、上記判定値算出部が算出した整数ｒ１に基づいて、整数ｒ１が素数であるか否かを判定し、上記処理装置を用いて、上記判定値算出部が算出した整数ｒ２に基づいて、整数ｒ２が素数であるか否かを判定し、整数ｒ１が素数でないと判定した場合、及び、整数ｒ２が素数でないと判定した場合に、上記群位数候補生成部が生成した素数ｒが安全な群位数でないと判定する
ことを特徴とする請求項１９に記載の群パラメータ生成装置。
【発明の詳細な説明】
【技術分野】
【０００１】
この発明は、ＩＤベース暗号通信方式を用いた暗号通信システムに関する。
【背景技術】
【０００２】
公開鍵暗号方式は、送信相手の公開鍵により暗号化したデータを送信し、送信相手が公開鍵とペアである秘密鍵で復号することにより、送信相手しか復号できない暗号通信を実現する。
従来、公開鍵が送信相手のものであることを保証するため、公開鍵認証機関が発行する公開鍵証明書を検証することが行われている。
また、公開鍵認証機関のようなインフラストラクチャがなくても、公開鍵とその所有者との対応を保証するため、送信相手の名前や名前や機器番号のような識別名（ＩＤ）を公開鍵として用いるＩＤベース暗号通信方式が提案されている。【０００３】
公開鍵暗号方式の安全性を保証するため、公開鍵暗号方式の安全性を数学的な問題を解くことの困難性に帰着させて証明することが行われる。
すなわち、その暗号を確率的に解読できる攻撃者がいると仮定して、その攻撃者を利用することにより、その数学的な問題を解くことができるアルゴリズムが存在する場合、その暗号方式はその数学的な問題に帰着するという。【０００４】
この証明において重要なのは、帰着する数学的な問題の良し悪し、帰着効率の良し悪し、モデルの良し悪しである。
帰着する数学的な問題の良し悪しとは、その問題を解くことの難しさのことである。解くことが難しい問題に帰着させることができる公開鍵暗号方式は、その分、安全性が高いと言うことができる。
帰着効率の良し悪しとは、攻撃者が暗号を解読するために利用する資源（時間・メモリなど）と、攻撃者を利用して数学的な問題を解くために利用する資源との間の関係のことである。暗号解読に必要な資源と、数学的な問題を解くために必要な資源との間に、あまり差がなければ、帰着効率が良いという。この場合、暗号が解読できれば、すなわち数学的な問題を解くことができるということになるので、対偶をとれば、数学的な問題を解くことが困難であれば、暗号を解読することも同じくらい困難だといえる。これに対して、帰着効率が悪い場合、すなわち、暗号解読に必要な資源との比較において数学的な問題を解くために必要な資源が非常に大きいのであれば、数学的な問題を解くことが困難であっても、暗号を解読することが同じくらい困難だとは限らない。
モデルの良し悪しとは、証明の前提となるモデルが現実に即しているか否かのことである。例えば、ランダムオラクルを用いないモデルは、ランダムオラクルを仮定するモデルよりも、良いモデルである。
【特許文献１】国際公開２００５−０５０９０８号
【非特許文献１】境隆一、大岸聖史、笠原正雄「楕円曲線上のペアリングを用いた暗号方式」暗号と情報セキュリティシンポジウム（ＳＣＩＳ  ２００１）、２００１年
【非特許文献２】Ｄａｎ  Ｂｏｎｅｈ、Ｍａｔｔ  Ｆｒａｎｋｌｉｎ「Ｉｄｅｎｔｉｔｙ−Ｂａｓｅｄ  Ｅｎｃｒｙｐｔｉｏｎ  ｆｒｏｍ  ｔｈｅ  Ｗｅｉｌ  Ｐａｉｒｉｎｇ」Ｃｒｙｐｔｏ  ２００１、ＬＮＣＳ  ２１３９、２１３〜２２９ページ、２００１年
【非特許文献３】Ｘａｖｉｅｒ  Ｂｏｙｅｎ「Ｔｈｅ  ＢＢ１  Ｉｄｅｎｔｉｔｙ−Ｂａｓｅｄ  Ｃｒｙｐｔｏｓｙｓｔｅｍ：Ａ  Ｓｔａｎｄａｒｄ  ｆｏｒ  Ｅｎｃｒｙｐｔｉｏｎ  ａｎｄ  Ｋｅｙ  Ｅｎｃａｐｓｕｌａｔｉｏｎ」Ｓｕｂｍｉｓｓｉｏｎｓ  ｆｏｒ  ＩＥＥＥ  Ｐ１３６３．３、２００６年（ｈｔｔｐ：／／ｇｒｏｕｐｅｒ．ｉｅｅｅ．ｏｒｇ／ｇｒｏｕｐｓ／１３６３／ＩＢＣ／ｓｕｂｍｉｓｓｉｏｎｓ／ｉｎｄｅｘ．ｈｔｍｌ）
【非特許文献４】Ｃｒａｉｇ  Ｇｅｎｔｒｙ「Ｐｒａｃｔｉｃａｌ  Ｉｄｅｎｔｉｔｙ−Ｂａｓｅｄ  Ｅｎｃｒｙｐｔｉｏｎ  Ｗｉｔｈｏｕｔ  Ｒａｎｄｏｍ  Ｏｒａｃｌｅｓ」Ｅｕｒｏｃｒｙｐｔ  ２００６、ＬＮＣＳ  ４００４、４４５〜４６４ページ、２００６年
【非特許文献５】Ｊｕｎｇ  Ｈｅｅ  Ｃｈｅｏｎ「Ｓｅｃｕｒｉｔｙ  Ａｎａｌｙｓｉｓ  ｏｆ  ｔｈｅ  Ｓｔｒｏｎｇ  Ｄｉｆｆｉｅ−Ｈｅｌｌｍａｎ  Ｐｒｏｂｌｅｍ」Ｅｕｒｏｃｒｙｐｔ  ２００６、１〜１３ページ、２００６年
【非特許文献６】Ｍｉｈｉｒ  Ｂｅｌｌａｒｅ、Ａｌｅｘａｎｄｒａ  Ｂｏｌｄｙｒｅｖａ、Ｓｉｌｖｉｏ  Ｍｉｃａｌｉ「Ｐｕｂｌｉｃ−ｋｅｙ  Ｅｎｃｒｙｐｔｉｏｎ  ｉｎ  ａ  Ｍｕｌｔｉ−Ｕｓｅｒ  Ｓｅｔｔｉｎｇ：  Ｓｅｃｕｔｒｉｔｙ  Ｐｒｏｏｆｓ  ａｎｄ  Ｉｍｐｒｏｖｅｍｅｎｔｓ」Ｅｕｒｏｃｒｙｐｔ  ２０００、ＬＮＣＳ  １８０７、２０００年（ｈｔｔｐ：／／ｗｗｗ−ｃｓｅ．ｕｃｓｄ．ｅｄｕ／ｕｓｅｒｓ／ｍｉｈｉｒ／ｃｒｙｐｔｏ−ｒｅｓｅａｒｃｈ−ｐａｐｅｒｓ．ｈｔｍｌ）
【非特許文献７】Ｍｉｈｉｒ  Ｂｅｌｌａｒｅ、Ａｌｅｘａｎｄｒａ  Ｂｏｌｄｙｒｅｖａ、Ｊｅｓｓｉｃａ  Ｓｔａｄｄｏｎ「Ｍｕｌｔｉ−Ｒｅｃｉｐｉｅｎｔ  Ｅｎｃｒｙｐｔｉｏｎ  Ｓｃｈｅｍｅｓ：Ｓｅｃｕｒｉｔｙ  Ｎｏｔｉｏｎｓ  ａｎｄ  Ｒａｎｄｏｍｎｅｓｓ  Ｒｅ−Ｕｓｅ」ＰＫＣ  ２００３、ＬＮＣＳ  ２５６７、２００３年（ｈｔｔｐ：／／ｗｗｗ−ｃｓｅ．ｕｓｃｄ．ｅｄｕ／ｕｓｅｒｓ．ｍｉｈｉｒ／ｃｒｙｐｔｏ−ｒｅｓｅａｒｃｈ−ｐａｐｅｒｓ．ｈｔｍｌ）
【非特許文献８】Ｒｏｎａｌｄ  Ｃｒａｍｅｒ、Ｖｉｃｔｏｒ  Ｓｈｏｕｐ「Ｄｅｓｉｇｎ  ａｎｄ  Ａｎａｌｙｓｉｓ  ｏｆ  Ｐｒａｃｔｉｃａｌ  Ｐｕｂｌｉｃ−Ｋｅｙ  Ｅｎｃｒｙｐｔｉｏｎ  Ｓｃｈｅｍｅｓ  Ｓｅｃｕｒｅ  ａｇａｉｎｓｔ  Ａｄａｐｔｉｖｅ  Ｃｈｏｓｅｎ  Ｃｉｐｈｅｒｔｅｘｔ  Ａｔｔａｃｋ」ＳＩＡＭ  Ｊ．Ｃｏｍｐｕｔ、ｖｏｌ．３３、２００３年
【非特許文献９】Ｄａｎ  Ｂｏｎｅｈ、Ｘａｖｉｅｒ  Ｂｏｙｅｎ「Ｅｆｆｉｃｉｅｎｔ  Ｓｅｌｅｃｔｉｖｅ−ＩＤ  Ｓｅｃｕｒｅ  Ｉｄｅｎｔｉｔｙ  Ｂａｓｅｄ  Ｅｎｃｒｙｐｔｉｏｎ  Ｗｉｔｈｏｕｔ  Ｒａｎｄｏｍ  Ｏｒａｃｌｅｓ」Ｅｕｒｏｃｒｙｐｔ  ２００４、ＬＮＣＳ  ３０２７、２２３〜２３８ページ、２００４年（ｈｔｔｐ：／／ｃｒｙｐｔｏ．ｓｔａｎｆｏｒｄ．ｅｄｕ／〜ｄａｂｏ／）
【非特許文献１０】Ｂｒｅｎｔ  Ｗａｔｅｒｓ「Ｅｆｆｉｃｉｅｎｔ  Ｉｄｅｎｔｉｔｙ−Ｂａｓｅｄ  Ｅｎｃｒｙｐｔｉｏｎ  Ｗｉｔｈｏｕｔ  Ｒａｎｄｏｍ  Ｏｒａｃｌｅｓ」Ｅｕｒｏｃｒｙｐｔ  ２００５（ｈｔｔｐ：／／ｗｗｗ．ｃｓ１．ｓｒｉ．ｃｏｍ／ｕｓｅｒｓ／ｂｗａｔｅｒｓ／ｐｕｂｌｉｃａｔｉｏｎｓ／ｐｕｂｌｉｃａｔｉｏｎｓ．ｈｔｍｌ）
【非特許文献１１】Ｄａｖｉｄ  Ｎａｃｃａｃｈｅ「Ｓｅｃｕｒｅ  ａｎｄ  Ｐｒａｃｔｉｃａｌ  Ｉｄｅｎｔｉｔｙ−Ｂａｓｅｄ  Ｅｎｃｒｙｐｔｉｏｎ」（ｈｔｔｐ：／／ｅｐｒｉｎｔ．ｉａｃｒ．ｏｒｇ／２００５／３６９）
【非特許文献１２】Ｓａｎｊｉｔ  Ｃｈａｔｔｅｒｊｅｅ、Ｐａｌａｓｈ  Ｓａｒｋａｒ「Ｔｒａｄｉｎｇ  Ｔｉｍｅ  ｆｏｒ  Ｓｐａｃｅ：Ｔｏｗａｒｄｓ  ａｎ  Ｅｆｆｉｃｉｅｎｔ  ＩＢＥ  Ｓｃｈｅｍｅ  ｗｉｔｈ  Ｓｈｏｒｔ（ｅｒ）  Ｐｕｂｌｉｃ  Ｐａｒａｍｅｔｅｒｓ  ｉｎ  ｔｈｅ  Ｓｔａｎｄａｒｄ  Ｍｏｄｅｌ」ＩＣＩＳＣ  ２００５、ＬＮＣＳ  ３９３５、４２４〜４４０ページ、２００６年
【非特許文献１３】Ｎ．Ｐ．Ｓｍａｒｔ「Ｅｆｆｉｃｉｅｎｔ  Ｋｅｙ  Ｅｎｃａｐｓｕｌａｔｉｏｎ  ｔｏ  Ｍｕｌｔｉｐｌｅ  Ｐａｒｔｉｅｓ」ＳＣＮ  ２００４、ＬＮＣＳ  ３３５２、２０８〜２１９ページ、２００５年
【非特許文献１４】Ｍ．Ｂａｒｂｏｓａ、Ｐ．Ｆａｒｓｈｉｍ「Ｅｆｆｉｃｉｅｎｔ  Ｉｄｅｎｔｉｔｙ−Ｂａｓｅｄ  Ｋｅｙ  Ｅｎｃａｐｓｕｌａｔｉｏｎ  ｔｏ  Ｍｕｌｔｉｐｌｅ  Ｐａｒｔｉｅｓ」Ｃｒｙｐｔｏｇｒａｐｈｙ  ａｎｄ  Ｃｏｄｉｎｇ、１０ｔｈ  ＩＭＡ  Ｉｎｔ．Ｃｏｆ．２００５、ＬＮＣＳ  ３７９６、Ｓｐｒｉｎｇｅｒ  Ｖｅｒｌｏｇ、４２８〜４４１ページ、２００５年
【非特許文献１５】Ｊｏｏｎｓａｎｇ  Ｂａｅｋ、Ｒｅｉｈａｎｅｈ  Ｓａｆａｖｉ−Ｎａｉｎｉ、Ｗｉｌｌｙ  Ｓｕｓｉｌｏ「Ｅｆｆｉｃｉｅｎｔ  Ｍｕｌｔｉ−ｒｅｃｅｉｖｅｒ  Ｉｄｅｎｔｉｔｙ−Ｂａｓｅｄ  Ｅｎｃｒｙｐｔｉｏｎ  ａｎｄ  Ｉｔｓ  Ａｐｐｌｉｃａｔｉｏｎ  ｔｏ  Ｂｒｏａｄｃａｓｔ  Ｅｎｃｒｙｐｔｉｏｎ」ＰＫＣ  ２００５、ＬＮＣＳ  ３３８６、３８０〜３９７ページ、２００５年
【非特許文献１６】Ｓａｎｊｉｔ  Ｃｈａｔｔｅｒｊｅｅ、Ｐａｌａｓｈ  Ｓａｒｋａｒ「Ｇｅｎｅｒａｌｉｚａｔｉｏｎ  ｏｆ  ｔｈｅ  Ｓｅｌｅｃｔｉｖｅ−ＩＤ  Ｓｅｃｕｒｉｔｙ  Ｍｏｄｅｌ  ｆｏｒ  ＨＩＢＥ  Ｐｒｏｔｏｃｏｌｓ」ＰＫＣ  ２００６、２００６年
【非特許文献１７】Ｓａｎｊｉｔ  Ｃｈａｔｔｅｒｊｅｅ、Ｐａｌａｓｈ  Ｓａｒｋａｒ「Ｍｕｌｔｉ−ｒｅｃｅｉｖｅｒ  Ｉｄｅｎｔｉｔｙ−Ｂａｓｅｄ  Ｋｅｙ  Ｅｎｃａｐｓｕｌａｔｉｏｎ  ｗｉｔｈ  Ｓｈｏｒｔｅｎｅｄ  Ｃｉｐｈｅｒｔｅｘｔ」Ｉｎｄｏｃｒｙｐｔ  ２００６、ＬＮＣＳ  ４３２９、３９４〜４０８ページ、２００６年
【非特許文献１８】Ｘａｖｉｅｒ  Ｂｏｙｅｎ、Ｑｉｘｉａｎｇ  Ｍｅｉ、Ｂｒｅｎｔ  Ｗａｔｅｒｓ「Ｄｉｒｅｃｔ  Ｃｈｏｓｅｎ  Ｃｉｐｈｅｒｔｅｘｔ  Ｓｅｃｕｒｉｔｙ  ｆｒｏｍ  Ｉｄｅｎｔｉｔｙ−Ｂａｓｅｄ  Ｔｅｃｈｎｉｑｕｅｓ」ＡＣＭ−ＣＣＳ  ２００５、３２０〜３２９ページ、２００５年
【発明の開示】
【発明が解決しようとする課題】
【０００５】
暗号の利用方法として、同一の平文を暗号化した暗号文を、複数の異なる受信者に対して送信するという使い方がある。
公開鍵暗号方式では、暗号処理に時間がかかることから、通常、セッション鍵を暗号化して受信者に対して送信し、暗号処理の速い共通鍵暗号方式により、送信したセッション鍵を用いて、送信したいデータを暗号化する。
公開鍵暗号方式では、平文（セッション鍵）を、それぞれの受信者の公開鍵で暗号化して複数の暗号文を生成し、生成した複数の暗号文を１つにまとめて、メール通信や、データ放送などにより送信する。【０００６】
従来の公開鍵暗号方式においては、このような複数受信者に対して送信する使い方をした場合の安全性についての議論が行われているが、ＩＤベース暗号方式においては、まだ、このような複数受信者の場合における安全性についての議論が不十分である。【０００７】
また、受信者が多数の場合、セッション鍵を暗号化する処理だけでも多くの時間が必要となるので、処理を効率化する必要がある。【０００８】
この発明は、例えば、上記のような課題を解決するためになされたものであり、同一の平文を暗号化して複数の受信者に対して送信する複数受信者環境において、暗号処理に必要な資源が少なくて済み、高速に処理可能なＩＤベース暗号方式を提供することを目的とする。
【課題を解決するための手段】
【０００９】
この発明にかかる暗号文生成装置は、
平文Ｍをｎ人の受信者（ｎは、１以上の整数。）に対して通知する暗号文Ｃを生成する暗号文生成装置において、
情報を記憶する記憶装置と、情報を処理する処理装置と、暗号パラメータ記憶部と、受信者識別入力部と、平文入力部と、暗号文主文生成部と、ハッシュ値算出部と、暗号文検証文生成部と、暗号文結合部とを有し、
上記暗号パラメータ記憶部は、上記記憶装置を用いて、公開暗号パラメータを記憶し、
上記受信者識別入力部は、上記処理装置を用いて、ｎ人の受信者をそれぞれ識別するｎ個の受信者識別情報ＩＤｉ（ｉは、１以上ｎ以下の整数。）を入力し、
上記平文入力部は、上記処理装置を用いて、平文Ｍを入力し、
上記暗号文主文生成部は、上記処理装置を用いて、上記暗号パラメータ記憶部が記憶した公開暗号パラメータと、上記受信者識別入力部が入力したｎ個の受信者識別情報ＩＤｉと、上記平文入力部が入力した平文Ｍとに基づいて、ｎ人の受信者に対応するｎ個の暗号文主文ＣＢｉ（ｉは、１以上ｎ以下の整数。）を生成し、
上記ハッシュ値算出部は、上記処理装置を用いて、上記暗号文主文生成部が生成したｎ個の暗号文主文ＣＢｉを結合して、結合暗号文を生成し、上記処理装置を用いて、生成した結合暗号文に基づいて、ハッシュ値Ｈを算出し、
上記暗号文検証文生成部は、上記処理装置を用いて、上記暗号パラメータ記憶部が記憶した公開暗号パラメータと、上記ハッシュ値算出部が算出したハッシュ値Ｈとに基づいて、暗号文検証文ＣＣを生成し、
上記暗号文結合部は、上記処理装置を用いて、上記暗号文主文生成部が生成したｎ個の暗号文主文ＣＢｉと、上記暗号文検証文生成部が生成した暗号文検証文ＣＣとを結合して、１つの暗号文Ｃとすることを特徴とする。【００１０】
この発明にかかる暗号文生成装置は、更に、乱数生成部を有し、
上記乱数生成部は、上記処理装置を用いて、ｎ人の受信者に対応するｎ個の整数ｓｉ（ｉは、１以上ｎ以下の整数。）をランダムに生成し、
上記暗号文主文生成部は、第一暗号文生成部と、第二暗号文生成部と、第三暗号文生成部とを有し、
上記第一暗号文生成部は、上記処理装置を用いて、上記暗号パラメータ記憶部が記憶した公開暗号パラメータと、上記平文入力部が入力した平文Ｍと、上記乱数生成部が生成したｎ個の整数ｓｉとに基づいて、ｎ人の受信者に対応するｎ個の第一暗号文Ｃ１ｉ（ｉは、１以上ｎ以下の整数。）を生成し、
上記第二暗号文生成部は、上記処理装置を用いて、上記暗号パラメータ記憶部が記憶した公開暗号パラメータと、上記受信者識別入力部が入力したｎ個の受信者識別情報ＩＤｉと、上記乱数生成部が生成したｎ個の整数ｓｉとに基づいて、ｎ人の受信者に対応するｎ個の第二暗号文Ｃ２ｉ（ｉは、１以上ｎ以下の整数。）を生成し、
上記第三暗号文生成部は、上記処理装置を用いて、上記暗号パラメータ記憶部が記憶した公開暗号パラメータと、上記乱数生成部が生成したｎ個の整数ｓｉとに基づいて、ｎ人の受信者に対応するｎ個の第三暗号文Ｃ３ｉ（ｉは、１以上ｎ以下の整数。）を生成し、
上記第一暗号文生成部が生成したｎ個の第一暗号文Ｃ１ｉと、上記第二暗号文生成部が生成したｎ個の第二暗号文Ｃ２ｉと、上記第三暗号文生成部が生成したｎ個の第三暗号文Ｃ３ｉとを、ｎ人の受信者に対応するｎ個の暗号文主文ＣＢｉとし、
上記ハッシュ値算出部は、上記処理装置を用いて、上記第一暗号文生成部が生成したｎ個の第一暗号文Ｃ１ｉと、上記第二暗号文生成部が生成したｎ個の第二暗号文Ｃ２ｉと、上記第三暗号文生成部が生成したｎ個の第三暗号文Ｃ３ｉとを結合して、１つの結合暗号文とし、上記処理装置を用いて、結合した１つの結合暗号文に基づいて、１つのハッシュ値Ｈを算出し、
上記暗号文検証文生成部は、上記処理装置を用いて、上記暗号パラメータ記憶部が記憶した公開暗号パラメータと、上記乱数生成部が生成したｎ個の整数ｓｉと、上記ハッシュ値算出部が算出した１つのハッシュ値Ｈとに基づいて、ｎ人の受信者に対応するｎ個の暗号文検証文ＣＣｉ（ｉは、１以上ｎ以下の整数。）を生成し、
上記暗号文結合部は、上記処理装置を用いて、上記第一暗号文生成部が生成したｎ個の第一暗号文Ｃ１ｉと、上記第二暗号文生成部が生成したｎ個の第二暗号文Ｃ２ｉと、上記第三暗号文生成部が生成したｎ個の第三暗号文Ｃ３ｉと、上記暗号文検証文生成部が生成したｎ個の暗号文検証文ＣＣｉとを結合して、１つの暗号文Ｃとすることを特徴とする。【００１１】
この発明にかかる暗号文生成装置は、更に、以下の点を特徴とする。
上記暗号パラメータ記憶部は、上記記憶装置を用いて、公開暗号パラメータとして、自然数ｒと、位数が上記自然数ｒである乗法群Ｇ１と、位数が上記自然数ｒである乗法群Ｇ２と、位数が上記自然数ｒである乗法群ＧＴと、乗法群Ｇ１の要素と乗法群Ｇ２の要素とから乗法群ＧＴの要素を算出するペアリングｅと、乗法群ＧＴの要素から所定の長さのビット列を算出する鍵生成関数ＫＤＦと、任意の長さのビット列から上記自然数ｒ未満の自然数を算出するハッシュ関数ＨＦと、乗法群Ｇ１の要素ｇと、乗法群Ｇ１の要素ｇ１と、乗法群Ｇ２の要素ｇ２と、乗法群Ｇ２の要素ｈ１と、乗法群Ｇ２の要素ｈ２と、乗法群Ｇ２の要素ｈ３とを表わす情報を記憶し、
上記受信者識別入力部は、上記処理装置を用いて、ｎ個の整数ＩＤｉをｎ個の受信者識別情報として入力し、
上記乱数生成部は、上記処理装置を用いて、上記暗号パラメータ記憶部が記憶した公開暗号パラメータが表わす自然数ｒに基づいて、ｎ人の受信者に対応するｎ個の１以上自然数ｒ未満の整数ｓｉ（ｉは、１以上ｎ以下の整数。）をランダムに生成し、
上記第一暗号文生成部は、上記処理装置を用いて、上記暗号パラメータ記憶部が記憶した公開暗号パラメータが表わす乗法群Ｇ１の要素ｇと乗法群Ｇ２の要素ｈ１とペアリングｅと、鍵生成関数ＫＤＦと、上記乱数生成部が生成したｎ個の整数ｓｉとに基づいて、ｎ人の受信者に対応するｎ個の鍵ビット列ｋｉ＝ＫＤＦ（ｅ（ｇ，ｈ１）＾ｓｉ）（ｉは、１以上ｎ以下の整数。）を算出し、上記処理装置を用いて、算出したｎ個の鍵ビット列ｋｉにより、上記平文入力部が入力した平文Ｍをそれぞれ暗号化して、ｎ人の受信者に対応するｎ個の第一暗号文Ｃ１ｉ（ｉは、１以上ｎ以下の整数。）とし、
上記第二暗号文生成部は、上記処理装置を用いて、上記暗号パラメータ記憶部が記憶した公開暗号パラメータが表わす乗法群Ｇ１の要素ｇと、乗法群Ｇ１の要素ｇ１と、上記受信者識別入力部が入力したｎ個の整数ＩＤｉと、上記乱数生成部が生成したｎ個の整数ｓｉとに基づいて、ｎ人の受信者に対応するｎ個の乗法群Ｇ１の要素ｕｉ＝（ｇ１・ｇ＾−ＩＤｉ）＾ｓｉ（ｉは、１以上ｎ以下の整数。）を算出し、算出したｎ個の乗法群Ｇ１の要素ｕｉをそれぞれ表わすビット列を、ｎ人の受信者に対応するｎ個の第二暗号文Ｃ２ｉ（ｉは、１以上ｎ以下の整数。）とし、
上記第三暗号文生成部は、上記処理装置を用いて、上記暗号パラメータ記憶部が記憶した公開暗号パラメータが表わす乗法群Ｇ１の要素ｇと乗法群Ｇ２の要素ｇ２とペアリングｅと、上記乱数生成部が生成したｎ個の整数ｓｉとに基づいて、ｎ人の受信者に対応するｎ個の乗法群ＧＴの要素ｖｉ＝ｅ（ｇ，ｇ２）＾ｓｉ（ｉは、１以上ｎ以下の整数。）を算出し、算出した乗法群ＧＴの要素ｖｉをそれぞれ表わすビット列を、ｎ人の受信者に対応するｎ個の第三暗号文Ｃ３ｉ（ｉは、１以上ｎ以下の整数。）とし、
上記ハッシュ値算出部は、上記処理装置を用いて、上記暗号パラメータ記憶部が記憶した公開暗号パラメータが表わすハッシュ関数ＨＦに基づいて、１つの自然数β０を算出して、ハッシュ値Ｈとし、
上記暗号文検証文生成部は、上記処理装置を用いて、上記暗号パラメータ記憶部が記憶した公開暗号パラメータが表わす乗法群Ｇ１の要素ｇと乗法群Ｇ２の要素ｈ２と乗法群Ｇ２の要素ｈ３とペアリングｅと、上記乱数生成部が生成したｎ個の整数ｓｉと、上記ハッシュ値算出部が算出した１つの自然数β０とに基づいて、ｎ人の受信者に対応するｎ個の乗法群ＧＴの要素ｙｉ＝ｅ（ｇ，ｈ２）＾ｓｉ・ｅ（ｇ，ｈ３）＾（ｓｉ・β０）（ｉは、１以上ｎ以下の整数。）を算出し、算出したｎ個の乗法群ＧＴの要素ｙｉをそれぞれ表わすビット列を、ｎ人の受信者に対応するｎ個の暗号文検証文ＣＣｉ（ｉは、１以上ｎ以下の整数。）とすることを特徴とする。【００１２】
この発明にかかる暗号文生成装置は、更に、以下の点を特徴とする。
上記暗号パラメータ記憶部は、上記記憶装置を用いて、公開暗号パラメータとして、自然数ｒと、位数が上記自然数ｒである乗法群Ｇ１と、位数が上記自然数ｒである乗法群Ｇ２と、位数が上記自然数ｒである乗法群ＧＴと、乗法群Ｇ１の要素と乗法群Ｇ２の要素とから乗法群ＧＴの要素を算出するペアリングｅと、乗法群ＧＴの要素から所定の長さのビット列を算出する鍵生成関数ＫＤＦと、所定の長さのビット列から乗法群ＧＴの要素を算出する２つの関数Ｖ１及びＶ２と、任意の長さのビット列から所定の長さのビット列を算出するハッシュ関数ＨＦと、乗法群Ｇ１の要素ｇと、乗法群Ｇ１の要素ｇ１と、乗法群Ｇ２の要素ｇ２とを表わす情報を記憶し、
上記受信者識別入力部は、上記処理装置を用いて、ｎ個の所定の長さのビット列ＩＤｉをｎ個の受信者識別情報として入力し、
上記乱数生成部は、上記処理装置を用いて、上記暗号パラメータ記憶部が記憶した公開暗号パラメータが表わす自然数ｒに基づいて、ｎ人の受信者に対応するｎ個の１以上自然数ｒ未満の整数ｓｉ（ｉは、１以上ｎ以下の整数。）をランダムに生成し、
上記第一暗号文生成部は、上記処理装置を用いて、上記暗号パラメータ記憶部が記憶した公開暗号パラメータが表わす乗法群Ｇ１の要素ｇ１と乗法群Ｇ２の要素ｇ２とペアリングｅと鍵生成関数ＫＤＦと、上記乱数生成部が生成したｎ個の整数ｓｉとに基づいて、ｎ人の受信者に対応するｎ個の鍵ビット列ｋｉ＝ＫＤＦ（ｅ（ｇ１，ｇ２）＾ｓｉ）（ｉは、１以上ｎ以下の整数。）を算出し、上記処理装置を用いて、算出したｎ個の鍵ビット列ｋｉにより、上記平文入力部が入力した平文Ｍをそれぞれ暗号化して、ｎ人の受信者に対応するｎ個の第一暗号文Ｃ１ｉ（ｉは、１以上ｎ以下の整数。）とし、
上記第二暗号文生成部は、上記処理装置を用いて、上記暗号パラメータ記憶部が記憶した公開暗号パラメータが表わす関数Ｖ１と、上記乱数生成部が生成したｎ個の整数ｓｉと、上記受信者識別入力部が入力したｎ個の所定の長さのビット列ＩＤｉとに基づいて、ｎ人の受信者に対応するｎ個の乗法群Ｇ２の要素ｕｉ＝Ｖ１（ＩＤｉ）＾ｓｉ（ｉは、１以上ｎ以下の整数。）を算出し、算出したｎ個の乗法群Ｇ２の要素ｕｉをそれぞれ表わすビット列を、ｎ人の受信者に対応するｎ個の第二暗号文Ｃ２ｉ（ｉは、１以上ｎ以下の整数。）とし、
上記第三暗号文生成部は、上記処理装置を用いて、上記暗号パラメータ記憶部が記憶した公開暗号パラメータが表わす乗法群Ｇ１の要素ｇと、上記乱数生成部が生成したｎ個の整数ｓｉとに基づいて、ｎ人の受信者に対応するｎ個の乗法群Ｇ１の要素ｖｉ＝ｇ＾ｓｉ（ｉは、１以上ｎ以下の整数。）を算出し、算出したｎ個の乗法群Ｇ１の要素ｖｉをそれぞれ表わすビット列を、ｎ人の受信者に対応するｎ個の第三暗号文Ｃ３ｉ（ｉは、１以上ｎ以下の整数。）とし、
上記ハッシュ値算出部は、上記処理装置を用いて、上記暗号パラメータ記憶部が記憶した公開暗号パラメータが表わすハッシュ関数ＨＦに基づいて、１つの所定の長さのビット列ｗ０を算出して、ハッシュ値Ｈとし、
上記暗号文検証文生成部は、上記処理装置を用いて、上記暗号パラメータ記憶部が記憶した公開暗号パラメータが表わす関数Ｖ２と、上記乱数生成部が生成したｎ個の整数ｓｉと、上記ハッシュ値算出部が算出した１つの所定の長さのビット列ｗ０とに基づいて、ｎ人の受信者に対応するｎ個の乗法群Ｇ２の要素ｙｉ＝Ｖ２（ｗ０）＾ｓｉ（ｉは、１以上ｎ以下の整数。）を算出し、算出したｎ個の乗法群Ｇ２の要素ｙｉをそれぞれ表わすビット列を、ｎ人の受信者に対応するｎ個の暗号文検証文ＣＣｉ（ｉは、１以上ｎ以下の整数。）とすることを特徴とする。【００１３】
この発明にかかる暗号文生成装置は、更に、以下の点を特徴とする。
上記暗号パラメータ記憶部は、上記記憶装置を用いて、２つの関数Ｖ１及びＶ２を表わす情報として、ｍ１個の乗法群Ｇ２の要素ｈξ（ξは、１以上ｍ１以下の整数。）と、２つの乗法群Ｇ２の要素ｈ１’及びｈ２’とを表わす情報を記憶し、
上記第二暗号文生成部は、上記処理装置を用いて、上記受信者識別入力部が入力したｎ個の所定の長さのビット列ＩＤｉそれぞれを、ｍ１個の所定の長さのビット列νｉξ（ξは、１以上ｍ１以下の整数。）に分割し、分割したｍ１個の所定の長さのビット列νｉξをｍ１個の整数として取り扱い、上記処理装置を用いて、上記暗号パラメータ記憶部が記憶した公開暗号パラメータが表わすｍ１個の乗法群Ｇ２の要素ｈξ（ξは、１以上ｍ１以下の整数。）と乗法群Ｇ２の要素ｈ１’と、分割したｍ１個の整数νｉξとに基づいて、関数Ｖ１の値である乗法群Ｇ２の要素Ｖ１（ＩＤｉ）＝ｈ１’・Π（ｈξ＾νｉξ）（ξは、１以上ｍ１以下の整数。）を算出し、
上記暗号文検証文生成部は、上記処理装置を用いて、上記ハッシュ値算出部が算出した所定の長さのビット列ｗを、ｍ１個の所定の長さのビット列νξ（ξは、１以上ｍ１以下の整数。）に分割し、分割したｍ１個の所定の長さのビット列νξをｍ１個の整数として取り扱い、上記処理装置を用いて、上記暗号パラメータ記憶部が記憶した公開暗号パラメータが表わすｍ１個の乗法群Ｇ２の要素ｈξ（ξは、１以上ｍ１以下の整数。）と乗法群Ｇ２の要素ｈ２’と、分割したｍ１個の整数νξとに基づいて、関数Ｖ２の値である乗法群Ｇ２の要素Ｖ２（ｗ）＝ｈ２’・Π（ｈξ＾νξ）（ξは、１以上ｍ１以下の整数。）を算出することを特徴とする。【００１４】
この発明にかかる暗号文生成装置は、更に、以下の点を特徴とする。
上記暗号文主文生成部は、上記処理装置を用いて、上記受信者識別入力部が入力したｎ個の受信者識別情報ＩＤｉを含むｎ個の暗号文主文ＣＢｉを生成することを特徴とする。【００１５】
この発明にかかる暗号文生成装置は、更に、暗号文通知部を有し、
上記暗号文通知部は、上記処理装置を用いて、上記受信者識別入力部が入力したｎ個の受信者識別情報ＩＤｉによって識別されるｎ人の受信者に対して、上記暗号文結合部が結合した１つの暗号文Ｃを通知することを特徴とする。【００１６】
この発明にかかる暗号文生成装置は、更に、セッション鍵生成部を有し、
上記セッション鍵生成部は、上記処理装置を用いて、所定の長さのビット列をランダムに生成して、セッション鍵Ｋとし、
上記平文入力部は、上記処理装置を用いて、平文Ｍとして、上記セッション鍵生成部が生成したセッション鍵Ｋを入力することを特徴とする。【００１７】
この発明にかかる暗号文生成装置は、更に、データ入力部と、データ暗号化部と、暗号文通知部とを有し、
上記データ入力部は、上記処理装置を用いて、ｎ人の受信者に対して送信すべき１つの平文データを入力し、
上記データ暗号化部は、上記処理装置を用いて、上記セッション鍵生成部が生成したセッション鍵Ｋにより、上記データ入力部が入力した１つの平文データを暗号化して、１つの暗号化データとし、
上記暗号文通知部は、上記処理装置を用いて、上記受信者識別入力部が入力したｎ個の受信者識別情報ＩＤｉによって識別されるｎ人の受信者に対して、上記暗号文結合部が結合した１つの暗号文Ｃと、上記データ暗号化部が暗号化した１つの暗号化データとを通知することを特徴とする。【００１８】
この発明にかかる暗号通信システムは、
それぞれが対応する暗号文受信装置を有するｎ人の受信者（ｎは、１以上の整数。）に対して、平文Ｍを１つの暗号文Ｃにより通知する暗号通信システムにおいて、
暗号パラメータ生成装置と、暗号文生成装置と、複数の暗号文受信装置とを有し、
上記暗号パラメータ生成装置は、
情報を記憶する記憶装置と、情報を処理する処理装置と、秘密情報生成部と、秘密情報記憶部と、公開パラメータ生成部と、公開パラメータ公開部と、識別情報入力部と、秘密鍵生成部と、秘密鍵通知部とを有し、
上記秘密情報生成部は、上記処理装置を用いて、秘密情報をランダムに生成し、
上記秘密情報記憶部は、上記記憶装置を用いて、上記秘密情報生成部が生成した秘密情報を記憶し、
上記公開パラメータ生成部は、上記処理装置を用いて、上記秘密情報生成部が生成した秘密情報に基づいて、公開暗号パラメータを生成し、
上記公開パラメータ公開部は、上記処理装置を用いて、上記公開パラメータ生成部が生成した公開暗号パラメータを公開し、
上記識別情報入力部は、上記処理装置を用いて、上記複数の暗号文受信装置のうち１つの暗号文受信装置に対応する１人の受信者を識別する受信者識別情報ＩＤを入力し、
上記秘密鍵生成部は、上記処理装置を用いて、上記秘密情報記憶部が記憶した秘密情報と、上記公開パラメータ生成部が生成した公開暗号パラメータと、上記識別情報入力部が入力した受信者識別情報ＩＤとに基づいて、上記１人の受信者に対応する秘密鍵ｄＩＤを生成し、
上記秘密鍵通知部は、上記処理装置を用いて、上記１人の受信者に対応する１つの暗号文受信装置に対して、上記秘密鍵生成部が生成した秘密鍵ｄＩＤを秘密裏に通知し、
上記暗号文生成装置は、
情報を記憶する記憶装置と、情報を処理する処理装置と、暗号パラメータ記憶部と、受信者識別入力部と、平文入力部と、暗号文主文生成部と、ハッシュ値算出部と、暗号文検証文生成部と、暗号文結合部と、暗号文通知部とを有し、
上記暗号パラメータ記憶部は、上記記憶装置を用いて、上記暗号パラメータ生成装置が公開した公開暗号パラメータを記憶し、
上記受信者識別入力部は、上記処理装置を用いて、ｎ人の受信者をそれぞれ識別するｎ個の受信者識別情報ＩＤｉ（ｉは、１以上ｎ以下の整数。）を入力し、
上記平文入力部は、上記処理装置を用いて、平文Ｍを入力し、
上記暗号文主文生成部は、上記処理装置を用いて、上記暗号パラメータ記憶部が記憶した公開暗号パラメータと、上記受信者識別入力部が入力したｎ個の受信者識別情報ＩＤｉと、上記平文入力部が入力した平文Ｍとに基づいて、ｎ人の受信者に対応するｎ個の暗号文主文ＣＢｉ（ｉは、１以上ｎ以下の整数。）を生成し、
上記ハッシュ値算出部は、上記処理装置を用いて、上記暗号文主文生成部が生成したｎ個の暗号文主文ＣＢｉを結合して、結合暗号文を生成し、上記処理装置を用いて、生成した結合暗号文に基づいて、ハッシュ値Ｈを算出し、
上記暗号文検証文生成部は、上記処理装置を用いて、上記暗号パラメータ記憶部が記憶した公開暗号パラメータと、上記ハッシュ値算出部が算出したハッシュ値Ｈとに基づいて、暗号文検証文ＣＣを生成し、
上記暗号文結合部は、上記処理装置を用いて、上記暗号文主文生成部が生成したｎ個の暗号文主文ＣＢｉと、上記暗号文検証文生成部が生成した暗号文検証文ＣＣとを結合して、１つの暗号文Ｃとし、
上記暗号文通知部は、上記処理装置を用いて、上記ｎ人の受信者に対応するｎ個の暗号文受信装置に対して、上記暗号文結合部が結合した１つの暗号文Ｃを通知し、
上記複数の暗号文受信装置は、それぞれ、
情報を記憶する記憶装置と、情報を処理する処理装置と、公開パラメータ記憶部と、秘密鍵記憶部と、暗号文受信部と、暗号文分解部と、検証ハッシュ値算出部と、暗号文検証部と、暗号文復号部とを有し、
上記公開パラメータ記憶部は、上記記憶装置を用いて、上記暗号パラメータ生成装置が公開した公開暗号パラメータを記憶し、
上記秘密鍵記憶部は、上記記憶装置を用いて、上記暗号パラメータ生成装置が通知した秘密鍵ｄＩＤを記憶し、
上記暗号文受信部は、上記処理装置を用いて、上記暗号文生成装置が通知した１つの暗号文Ｃを受信し、
上記暗号文分解部は、上記処理装置を用いて、上記暗号文受信部が受信した１つの暗号文Ｃに基づいて、ｎ個の暗号文主文ＣＢｉと、暗号文検証文ＣＣとを取得し、
上記検証ハッシュ値算出部は、上記処理装置を用いて、上記暗号文分解部が取得したｎ個の暗号文主文ＣＢｉを結合した検証結合暗号文に基づいて、検証ハッシュ値Ｈ’を算出し、
上記暗号文検証部は、上記処理装置を用いて、上記公開パラメータ記憶部が記憶した公開暗号パラメータと、上記暗号文分解部が取得したｎ個の暗号文主文ＣＢｉのうち、暗号文受信装置が対応する受信者に対応する１つの対応暗号文主文ＣＢＩＤと、暗号文検証文ＣＣと、上記検証ハッシュ値算出部が算出した検証ハッシュ値Ｈ’とに基づいて、上記暗号文受信部が受信した１つの暗号文Ｃに整合性があるか否かを判定し、
上記暗号文復号部は、上記暗号文受信部が受信した１つの暗号文Ｃに整合性があると、上記暗号文検証部が判定した場合に、上記処理装置を用いて、上記公開パラメータ記憶部が記憶した公開暗号パラメータと、上記秘密鍵記憶部が記憶した秘密鍵ｄＩＤと、上記暗号文分解部が取得したｎ個の暗号文主文ＣＢｉのうち、暗号文受信装置が対応する受信者に対応する１つの対応暗号文主文ＣＢＩＤとに基づいて、平文Ｍを復元することを特徴とする。【００１９】
この発明にかかる暗号通信システムは、更に、以下の点を特徴とする。
上記暗号文生成装置は、更に、乱数生成部を有し、
上記乱数生成部は、上記処理装置を用いて、ｎ人の受信者に対応するｎ個の整数ｓｉ（ｉは、１以上ｎ以下の整数。）をランダムに生成し、
上記暗号文主文生成部は、第一暗号文生成部と、第二暗号文生成部と、第三暗号文生成部とを有し、
上記第一暗号文生成部は、上記処理装置を用いて、上記暗号パラメータ記憶部が記憶した公開暗号パラメータと、上記平文入力部が入力した平文Ｍと、上記乱数生成部が生成したｎ個の整数ｓｉとに基づいて、ｎ人の受信者に対応するｎ個の第一暗号文Ｃ１ｉ（ｉは、１以上ｎ以下の整数。）を生成し、
上記第二暗号文生成部は、上記処理装置を用いて、上記暗号パラメータ記憶部が記憶した公開暗号パラメータと、上記受信者識別入力部が入力したｎ個の受信者識別情報ＩＤｉと、上記乱数生成部が生成したｎ個の整数ｓｉとに基づいて、ｎ人の受信者に対応するｎ個の第二暗号文Ｃ２ｉ（ｉは、１以上ｎ以下の整数。）を生成し、
上記第三暗号文生成部は、上記処理装置を用いて、上記暗号パラメータ記憶部が記憶した公開暗号パラメータと、上記乱数生成部が生成したｎ個の整数ｓｉとに基づいて、ｎ人の受信者に対応するｎ個の第三暗号文Ｃ３ｉ（ｉは、１以上ｎ以下の整数。）を生成し、
上記第一暗号文生成部が生成したｎ個の第一暗号文Ｃ１ｉと、上記第二暗号文生成部が生成したｎ個の第二暗号文Ｃ２ｉと、上記第三暗号文生成部が生成したｎ個の第三暗号文Ｃ３ｉとを、ｎ人の受信者に対応するｎ個の暗号文主文ＣＢｉとし、
上記ハッシュ値算出部は、上記処理装置を用いて、上記第一暗号文生成部が生成したｎ個の第一暗号文Ｃ１ｉと、上記第二暗号文生成部が生成したｎ個の第二暗号文Ｃ２ｉと、上記第三暗号文生成部が生成したｎ個の第三暗号文Ｃ３ｉとを結合して、１つの結合暗号文とし、上記処理装置を用いて、結合した１つの結合暗号文に基づいて、１つのハッシュ値Ｈを算出し、
上記暗号文検証文生成部は、上記処理装置を用いて、上記暗号パラメータ記憶部が記憶した公開暗号パラメータと、上記乱数生成部が生成したｎ個の整数ｓｉと、上記ハッシュ値算出部が算出した１つのハッシュ値Ｈとに基づいて、ｎ人の受信者に対応するｎ個の暗号文検証文ＣＣｉ（ｉは、１以上ｎ以下の整数。）を生成し、
上記暗号文結合部は、上記処理装置を用いて、上記第一暗号文生成部が生成したｎ個の第一暗号文Ｃ１ｉと、上記第二暗号文生成部が生成したｎ個の第二暗号文Ｃ２ｉと、上記第三暗号文生成部が生成したｎ個の第三暗号文Ｃ３ｉと、上記暗号文検証文生成部が生成したｎ個の暗号文検証文ＣＣｉとを結合して、１つの暗号文Ｃとし、
上記暗号文分解部は、上記処理装置を用いて、上記暗号文受信部が受信した１つの暗号文Ｃに基づいて、ｎ個の第一暗号文Ｃ１ｉと、ｎ個の第二暗号文Ｃ２ｉと、ｎ個の第三暗号文Ｃ３ｉと、ｎ個の暗号文検証文ＣＣｉとを取得し、上記処理装置を用いて、取得したｎ個の第一暗号文Ｃ１ｉとｎ個の第二暗号文Ｃ２ｉとｎ個の第三暗号文Ｃ３ｉとｎ個の暗号文検証文ＣＣｉとのうち、暗号文受信装置が対応する受信者に対応する１つの対応第一暗号文Ｃ１ＩＤと１つの対応第二暗号文Ｃ２ＩＤと１つの対応第三暗号文Ｃ３ＩＤと１つの対応暗号文検証文ＣＣＩＤとを取得し、
上記検証ハッシュ値算出部は、上記処理装置を用いて、上記暗号文分解部が取得したｎ個の第一暗号文Ｃ１ｉとｎ個の第二暗号文Ｃ２ｉとｎ個の第三暗号文Ｃ３ｉとを結合した検証結合暗号文に基づいて、検証ハッシュ値Ｈ’を算出し、
上記暗号文検証部は、上記処理装置を用いて、上記公開パラメータ記憶部が記憶した公開暗号パラメータと、上記暗号文分解部が取得した１つの対応第二暗号文Ｃ２ＩＤと１つの対応第三暗号文Ｃ３ＩＤとの少なくともいずれかと１つの対応暗号文検証文ＣＣＩＤと、上記検証ハッシュ値算出部が算出した検証ハッシュ値Ｈ’とに基づいて、上記暗号文受信部が受信した１つの暗号文Ｃに整合性があるか否かを判定し、
上記暗号文復号部は、上記暗号文受信部が受信した１つの暗号文Ｃに整合性があると、上記暗号文検証部が判定した場合に、上記処理装置を用いて、上記公開パラメータ記憶部が記憶した公開暗号パラメータと、上記秘密鍵記憶部が記憶した秘密鍵ｄＩＤと、上記暗号文分解部が取得した１つの対応第一暗号文Ｃ１ＩＤと１つの対応第二暗号文Ｃ２ＩＤと１つの対応第三暗号文Ｃ３ＩＤとに基づいて、平文Ｍを復元することを特徴とする。【００２０】
この発明にかかる暗号通信システムは、更に、以下の点を特徴とする。
上記暗号パラメータ生成装置は、更に、群パラメータ記憶部を有し、
上記群パラメータ記憶部は、上記記憶装置を用いて、群パラメータとして、自然数ｒと、位数が上記自然数ｒである乗法群Ｇ１と、位数が上記自然数ｒである乗法群Ｇ２と、位数が上記自然数ｒである乗法群ＧＴと、乗法群Ｇ１の要素と乗法群Ｇ２の要素とから乗法群ＧＴの要素を算出するペアリングｅとを表わす情報を記憶し、
上記秘密情報生成部は、上記処理装置を用いて、上記群パラメータ記憶部が記憶した群パラメータが表わす自然数ｒに基づいて、１以上自然数ｒ未満の整数αをランダムに生成し、
上記秘密情報記憶部は、上記記憶装置を用いて、上記秘密情報生成部が生成した整数αを表わす情報を秘密情報として記憶し、
上記公開パラメータ生成部は、上記処理装置を用いて、乗法群ＧＴの要素から所定の長さのビット列を算出する鍵生成関数ＫＤＦと、任意の長さのビット列から上記自然数ｒ未満の自然数を算出するハッシュ関数ＨＦとを決定し、上記処理装置を用いて、上記群パラメータ記憶部が記憶した群パラメータが表わす乗法群Ｇ１と乗法群Ｇ２とに基づいて、乗法群Ｇ１の要素ｇと乗法群Ｇ２の要素ｇ２と乗法群Ｇ２の要素ｈ１と乗法群Ｇ２の要素ｈ２と乗法群Ｇ２の要素ｈ３とをランダムに選択し、上記処理装置を用いて、上記秘密情報生成部が生成した秘密情報が表わす整数αと、選択した乗法群Ｇ１の要素ｇとに基づいて、乗法群Ｇ１の要素ｇ１＝ｇ＾αを算出し、上記群パラメータ記憶部が記憶した群パラメータと、決定した鍵生成関数ＫＤＦとハッシュ関数ＨＦと、選択した乗法群Ｇ１の要素ｇと乗法群Ｇ２の要素ｇ２と乗法群Ｇ２の要素ｈ１と乗法群Ｇ２の要素ｈ２と乗法群Ｇ２の要素ｈ３と、算出した乗法群Ｇ１の要素ｇ１とを表わす情報を公開暗号パラメータとし、
上記識別情報入力部は、上記処理装置を用いて、整数ＩＤを受信者識別情報として入力し、
上記秘密鍵生成部は、上記処理装置を用いて、上記公開パラメータ生成部が生成した公開暗号パラメータが表わす自然数ｒに基づいて、１以上自然数ｒ未満の整数ｒＩＤ，１と、１以上自然数ｒ未満の整数ｒＩＤ，２と、１以上自然数ｒ未満の整数ｒＩＤ，３とをランダムに生成し、上記処理装置を用いて、上記公開パラメータ生成部が生成した公開暗号パラメータが表わす乗法群Ｇ２の要素ｇ２と乗法群Ｇ２の要素ｈ１と乗法群Ｇ２の要素ｈ２と乗法群Ｇ２の要素ｈ３と、上記秘密情報記憶部が記憶した整数αと、上記識別情報入力部が入力した整数ＩＤと、生成した整数ｒＩＤ，１と整数ｒＩＤ，２と整数ｒＩＤ，３とに基づいて、乗法群Ｇ２の要素ｈＩＤ，１＝（ｈ１・ｇ２＾（−ｒＩＤ，１））＾（１／（α−ＩＤ））と、乗法群Ｇ２の要素ｈＩＤ，２＝（ｈ２・ｇ２＾（−ｒＩＤ，２））＾（１／（α−ＩＤ））と、乗法群Ｇ２の要素ｈＩＤ，３＝（ｈ３・ｇ２＾（−ｒＩＤ，３））＾（１／（α−ＩＤ））とを算出し、生成した整数ｒＩＤ，１と整数ｒＩＤ，２と整数ｒＩＤ，３と、算出した乗法群Ｇ２の要素ｈＩＤ，１と乗法群Ｇ２の要素ｈＩＤ，２と乗法群Ｇ２の要素ｈＩＤ，３とを表わす情報を秘密鍵ｄＩＤとし、
上記受信者識別入力部は、上記処理装置を用いて、ｎ個の整数ＩＤｉをｎ個の受信者識別情報として入力し、
上記乱数生成部は、上記処理装置を用いて、上記暗号パラメータ記憶部が記憶した公開暗号パラメータが表わす自然数ｒに基づいて、ｎ人の受信者に対応するｎ個の１以上自然数ｒ未満の整数ｓｉ（ｉは、１以上ｎ以下の整数。）をランダムに生成し、
上記第一暗号文生成部は、上記処理装置を用いて、上記暗号パラメータ記憶部が記憶した公開暗号パラメータが表わす乗法群Ｇ１の要素ｇと乗法群Ｇ２の要素ｈ１とペアリングｅと、鍵生成関数ＫＤＦと、上記乱数生成部が生成したｎ個の整数ｓｉとに基づいて、ｎ人の受信者に対応するｎ個の鍵ビット列ｋｉ＝ＫＤＦ（ｅ（ｇ，ｈ１）＾ｓｉ）（ｉは、１以上ｎ以下の整数。）を算出し、上記処理装置を用いて、算出したｎ個の鍵ビット列ｋｉにより、上記平文入力部が入力した平文Ｍをそれぞれ暗号化して、ｎ人の受信者に対応するｎ個の第一暗号文Ｃ１ｉ（ｉは、１以上ｎ以下の整数。）とし、
上記第二暗号文生成部は、上記処理装置を用いて、上記暗号パラメータ記憶部が記憶した公開暗号パラメータが表わす乗法群Ｇ１の要素ｇと、乗法群Ｇ１の要素ｇ１と、上記受信者識別入力部が入力したｎ個の整数ＩＤｉと、上記乱数生成部が生成したｎ個の整数ｓｉとに基づいて、ｎ人の受信者に対応するｎ個の乗法群Ｇ１の要素ｕｉ＝（ｇ１・ｇ＾（−ＩＤｉ））＾ｓｉ（ｉは、１以上ｎ以下の整数。）を算出し、算出したｎ個の乗法群Ｇ１の要素ｕｉをそれぞれ表わすビット列を、ｎ人の受信者に対応するｎ個の第二暗号文Ｃ２ｉ（ｉは、１以上ｎ以下の整数。）とし、
上記第三暗号文生成部は、上記処理装置を用いて、上記暗号パラメータ記憶部が記憶した公開暗号パラメータが表わす乗法群Ｇ１の要素ｇと乗法群Ｇ２の要素ｇ２とペアリングｅと、上記乱数生成部が生成したｎ個の整数ｓｉとに基づいて、ｎ人の受信者に対応するｎ個の乗法群ＧＴの要素ｖｉ＝ｅ（ｇ，ｇ２）＾ｓｉ（ｉは、１以上ｎ以下の整数。）を算出し、算出したｎ個の乗法群ＧＴの要素ｖｉをそれぞれ表わすビット列を、ｎ人の受信者に対応するｎ個の第三暗号文Ｃ３とし、
上記ハッシュ値算出部は、上記処理装置を用いて、上記暗号パラメータ記憶部が記憶した公開暗号パラメータが表わすハッシュ関数ＨＦに基づいて、１つの自然数β０を算出して、ハッシュ値Ｈとし、
上記暗号文検証文生成部は、上記処理装置を用いて、上記暗号パラメータ記憶部が記憶した公開暗号パラメータが表わす乗法群Ｇ１の要素ｇと乗法群Ｇ２の要素ｈ２と乗法群Ｇ２の要素ｈ３とペアリングｅと、上記乱数生成部が生成したｎ個の整数ｓｉと、上記ハッシュ値算出部が算出した１つの自然数β０とに基づいて、ｎ人の受信者に対応するｎ個の乗法群ＧＴの要素ｙｉ＝ｅ（ｇ，ｈ２）＾ｓｉ・ｅ（ｇ，ｈ３）＾（ｓｉ・β０）（ｉは、１以上ｎ以下の整数。）を算出し、算出した乗法群ＧＴの要素ｙｉをそれぞれ表わすビット列を、ｎ人の受信者に対応するｎ個の暗号文検証文ＣＣｉ（ｉは、１以上ｎ以下の整数。）とし、
上記検証ハッシュ値算出部は、上記処理装置を用いて、上記公開パラメータ記憶部が記憶した公開暗号パラメータが表わすハッシュ関数ＨＦに基づいて、自然数β’を算出して、検証ハッシュ値Ｈ’とし、
上記暗号文検証部は、上記処理装置を用いて、上記公開パラメータ記憶部が記憶した公開暗号パラメータが表わすペアリングｅと、上記秘密鍵記憶部が記憶した秘密鍵ｄＩＤが表わす整数ｒＩＤ，２と整数ｒＩＤ，３と乗法群Ｇ２の要素ｈＩＤ，２と乗法群Ｇ２の要素ｈＩＤ，３と、上記暗号文分解部が取得した１つの対応第二暗号文Ｃ２ＩＤが表わす乗法群Ｇ１の要素ｕＩＤと１つの対応第三暗号文Ｃ３ＩＤが表わす乗法群ＧＴの要素ｖＩＤと、上記検証ハッシュ値算出部が算出した自然数β’とに基づいて、乗法群ＧＴの要素ｙ’＝ｅ（ｕＩＤ，ｈＩＤ，２・ｈＩＤ，３＾β’）・ｖＩＤ＾（ｒＩＤ，２＋ｒＩＤ，３・β’）を算出し、上記処理装置を用いて、算出した乗法群ＧＴの要素ｙ’と、上記暗号文分解部が取得した対応暗号文検証文ＣＣＩＤが表わす乗法群ＧＴの要素ｙＩＤとを比較し、乗法群ＧＴの要素ｙ’と乗法群ＧＴの要素ｙＩＤとが一致する場合に、上記暗号文受信部が受信した１つの暗号文Ｃに整合性があると判定し、
上記暗号文復号部は、上記暗号文受信部が受信した１つの暗号文Ｃに整合性があると、上記暗号文検証部が判定した場合に、上記処理装置を用いて、上記公開パラメータ記憶部が記憶した公開暗号パラメータが表わすペアリングｅと鍵生成関数ＫＤＦと、上記秘密鍵記憶部が記憶した秘密鍵ｄＩＤが表わす整数ｒＩＤ，１と乗法群Ｇ２の要素ｈＩＤ，１と、上記暗号文分解部が取得した１つの対応第二暗号文Ｃ２ＩＤが表わす乗法群Ｇ１の要素ｕＩＤと、対応第三暗号文Ｃ３ＩＤが表わす乗法群Ｇ２の要素ｖＩＤとに基づいて、鍵ビット列ｋ’＝ＫＤＦ（ｅ（ｕＩＤ，ｈＩＤ，１）・ｖＩＤ＾ｒＩＤ，１）を算出し、上記処理装置を用いて、算出した鍵ビット列ｋ’により、上記暗号文分解部が取得した対応第一暗号文Ｃ１ＩＤを復号して、平文Ｍを復元することを特徴とする。【００２１】
この発明にかかる暗号通信システムは、更に、群パラメータ生成装置を有し、
上記群パラメータ生成装置は、
情報を処理する処理装置と、群位数候補生成部と、群位数安全性判定部と、パラメータ生成部とを有し、
上記群位数候補生成部は、上記処理装置を用いて、素数ｒを群位数の候補として生成し、
上記群位数安全性判定部は、上記処理装置を用いて、上記群位数候補生成部が生成した素数ｒに基づいて、素数ｒと１との差（ｒ−１）の因数と、素数ｒと１との和（ｒ＋１）の因数とを算出し、上記処理装置を用いて、算出した（ｒ−１）の因数と（ｒ＋１）の因数とに基づいて、上記群位数候補生成部が生成した素数ｒが安全な群位数であるか否かを判定し、
上記パラメータ生成部は、上記群位数候補生成部が生成した素数ｒが安全な群位数であると群位数安全性判定部が判定した場合に、上記処理装置を用いて、上記群位数候補生成部が生成した素数ｒに基づいて、素数ｒを群位数とする乗法群を算出し、上記処理装置を用いて、算出した乗法群を表わす情報を含む群パラメータを生成し、
上記群パラメータ記憶部は、上記記憶装置を用いて、上記群パラメータ生成装置が生成した群パラメータを記憶することを特徴とする。【００２２】
この発明にかかる暗号通信システムは、更に、以下の点を特徴とする。
上記群位数候補生成部は、上記処理装置を用いて、所定の整数ｋの倍数に１を加えた素数ｒを群位数の候補として生成し、
上記群位数安全性判定部は、剰余算出部と、判定値算出部と、素因数判定部とを有し、
上記剰余算出部は、上記処理装置を用いて、上記群位数候補生成部が生成した素数ｒに基づいて、素数ｒを４で割った余りを算出し、
上記判定値算出部は、上記剰余算出部が算出した余りが１である場合に、上記処理装置を用いて、上記所定の整数ｋと、上記群位数候補生成部が生成した素数ｒとに基づいて、素数ｒと１との差（ｒ−１）を、整数ｋと４との最小公倍数ＬＣＭ（ｋ，４）で割った商である整数ｒ１＝（ｒ−１）／ＬＣＭ（ｋ，４）を算出し、上記処理装置を用いて、上記群位数候補生成部が生成した素数ｒに基づいて、素数ｒと１との和（ｒ＋１）を２で割った商である整数ｒ２＝（ｒ＋１）／２を算出し、上記剰余算出部が算出した余りが３である場合に、上記処理装置を用いて、上記所定の整数ｋと、上記群位数候補生成部が生成した素数ｒとに基づいて、素数ｒと１との差（ｒ−１）を、整数ｋと２との最小公倍数ＬＣＭ（ｋ，２）で割った商である整数ｒ１＝（ｒ−１）／ＬＣＭ（ｋ，２）を算出し、上記処理装置を用いて、上記群位数候補生成部が生成した素数ｒに基づいて、素数ｒと１との和（ｒ＋１）を４で割った商である整数ｒ２＝（ｒ＋１）／４を算出し、
上記素因数判定部は、上記処理装置を用いて、上記判定値算出部が算出した整数ｒ１に基づいて、整数ｒ１が所定の整数Ｂ１より小さい素因数を有するか否かを判定し、上記処理装置を用いて、上記判定値算出部が算出した整数ｒ２に基づいて、整数ｒ２が所定の整数Ｂ２より小さい素因数を有するか否かを判定し、整数ｒ１が所定の整数Ｂ１より小さい素因数を有すると判定した場合、及び、整数ｒ２が所定の整数Ｂ２よりも小さい素因数を有すると判定した場合に、上記群位数候補生成部が生成した素数ｒが安全な群位数でないと判定することを特徴とする。【００２３】
この発明にかかる暗号通信システムは、更に、以下の点を特徴とする。
上記群位数候補生成部は、上記処理装置を用いて、所定の整数ｋの倍数に１を加えた素数ｒを群位数の候補として生成し、
上記群位数安全性判定部は、剰余算出部と、判定値算出部と、素因数判定部とを有し、
上記剰余算出部は、上記処理装置を用いて、上記群位数候補生成部が生成した素数ｒに基づいて、素数ｒを４で割った余りを算出し、
上記判定値算出部は、上記剰余算出部が算出した余りが１である場合に、上記処理装置を用いて、上記所定の整数ｋと、上記群位数候補生成部が生成した素数ｒとに基づいて、素数ｒと１との差（ｒ−１）を、整数ｋと４との最小公倍数ＬＣＭ（ｋ，４）で割った商である整数ｒ１＝（ｒ−１）／ＬＣＭ（ｋ，４）を算出し、上記処理装置を用いて、上記群位数候補生成部が生成した素数ｒに基づいて、素数ｒと１との和（ｒ＋１）を２で割った商である整数ｒ２＝（ｒ＋１）／２を算出し、上記剰余算出部が算出した余りが３である場合に、上記処理装置を用いて、上記所定の整数ｋと、上記群位数候補生成部が生成した素数ｒとに基づいて、素数ｒと１との差（ｒ−１）を、整数ｋと２との最小公倍数ＬＣＭ（ｋ，２）で割った商である整数ｒ１＝（ｒ−１）／ＬＣＭ（ｋ，２）を算出し、上記処理装置を用いて、上記群位数候補生成部が生成した素数ｒに基づいて、素数ｒと１との和（ｒ＋１）を４で割った商である整数ｒ２＝（ｒ＋１）／４を算出し、
上記素因数判定部は、上記処理装置を用いて、上記判定値算出部が算出した整数ｒ１に基づいて、整数ｒ１が素数であるか否かを判定し、上記処理装置を用いて、上記判定値算出部が算出した整数ｒ２に基づいて、整数ｒ２が素数であるか否かを判定し、整数ｒ１が素数でないと判定した場合、及び、整数ｒ２が素数でないと判定した場合に、上記群位数候補生成部が生成した素数ｒが安全な群位数でないと判定することを特徴とする。【００２４】
この発明にかかる暗号通信システムは、更に、以下の点を特徴とする。
上記暗号パラメータ生成装置は、更に、群パラメータ記憶部を有し、
上記群パラメータ記憶部は、上記記憶装置を用いて、群パラメータとして、自然数ｒと、位数が上記自然数ｒである乗法群Ｇ１と、位数が上記自然数ｒである乗法群Ｇ２と、位数が上記自然数ｒである乗法群ＧＴと、乗法群Ｇ１の要素と乗法群Ｇ２の要素とから乗法群ＧＴの要素を算出するペアリングｅとを表わす情報を記憶し、
上記秘密情報生成部は、上記処理装置を用いて、上記群パラメータ記憶部が記憶した群パラメータが表わす自然数ｒに基づいて、１以上自然数ｒ未満の整数αをランダムに生成し、
上記公開パラメータ生成部は、上記処理装置を用いて、乗法群ＧＴの要素から所定の長さのビット列を算出する鍵生成関数ＫＤＦと、所定の長さのビット列から乗法群ＧＴの要素を算出する２つの関数Ｖ１及びＶ２と、任意の長さのビット列から所定の長さのビット列を算出するハッシュ関数ＨＦとを決定し、上記処理装置を用いて、上記群パラメータ記憶部が記憶した群パラメータが表わす乗法群Ｇ１と乗法群Ｇ２とに基づいて、乗法群Ｇ１の要素ｇと乗法群Ｇ２の要素ｇ２とをランダムに選択し、上記秘密情報生成部が生成した整数αと、選択した乗法群Ｇ１の要素ｇとに基づいて、乗法群Ｇ１の要素ｇ１＝ｇ＾αを算出し、上記処理装置を用いて、上記群パラメータ記憶部が記憶した群パラメータと、決定した鍵生成関数ＫＤＦと２つの関数Ｖ１及びＶ２とハッシュ関数ＨＦと、選択した乗法群Ｇ１の要素ｇと乗法群Ｇ２の要素ｇ２と、算出した乗法群Ｇ１の要素ｇ１とを表わす情報を公開暗号パラメータとし、
上記秘密情報生成部は、更に、上記処理装置を用いて、生成した整数αと、上記公開パラメータ生成部が選択した乗法群Ｇ２の要素ｇ２とに基づいて、乗法群Ｇ２の要素ｍｓｋ＝ｇ２＾αを算出し、
上記秘密情報記憶部は、上記記憶装置を用いて、上記秘密情報生成部が算出した乗法群Ｇ２の要素ｍｓｋを表わす情報を秘密情報として記憶し、
上記識別情報入力部は、上記処理装置を用いて、所定の長さのビット列ＩＤを受信者識別情報として入力し、
上記秘密鍵生成部は、上記処理装置を用いて、上記公開パラメータ生成部が生成した公開暗号パラメータが表わす自然数ｒに基づいて、１以上自然数ｒ未満の整数ｒＩＤをランダムに生成し、上記処理装置を用いて、上記公開パラメータ生成部が生成した公開暗号パラメータが表わす乗法群Ｇ１の要素ｇと関数Ｖ１と、上記秘密情報記憶部が記憶した秘密情報が表わす乗法群Ｇ２の要素ｍｓｋと、生成した整数ｒＩＤとに基づいて、乗法群Ｇ２の要素ｄ０ＩＤ＝ｍｓｋ・Ｖ１（ＩＤ）＾ｒＩＤと、乗法群Ｇ１の要素ｄ１ＩＤ＝ｇ＾ｒＩＤとを算出し、算出した乗法群Ｇ２の要素ｄ０ＩＤと乗法群Ｇ１の要素ｄ１ＩＤとを表わす情報を、秘密鍵ｄＩＤとし、
上記受信者識別入力部は、上記処理装置を用いて、ｎ個の所定の長さのビット列ＩＤｉをｎ個の受信者識別情報として入力し、
上記乱数生成部は、上記処理装置を用いて、上記暗号パラメータ記憶部が記憶した公開暗号パラメータが表わす自然数ｒに基づいて、ｎ人の受信者に対応するｎ個の１以上自然数ｒ未満の整数ｓｉ（ｉは、１以上ｎ以下の整数。）をランダムに生成し、
上記第一暗号文生成部は、上記処理装置を用いて、上記暗号パラメータ記憶部が記憶した公開暗号パラメータが表わす乗法群Ｇ１の要素ｇ１と乗法群Ｇ２の要素ｇ２とペアリングｅと鍵生成関数ＫＤＦと、上記乱数生成部が生成したｎ個の整数ｓｉとに基づいて、ｎ人の受信者に対応するｎ個の鍵ビット列ｋｉ＝ＫＤＦ（ｅ（ｇ１，ｇ２）＾ｓｉ）（ｉは、１以上ｎ以下の整数。）を算出し、上記処理装置を用いて、算出したｎ個の鍵ビット列ｋｉにより、上記平文入力部が入力した平文Ｍをそれぞれ暗号化して、ｎ人の受信者に対応するｎ個の第一暗号文Ｃ１ｉ（ｉは、１以上ｎ以下の整数。）とし、
上記第二暗号文生成部は、上記処理装置を用いて、上記暗号パラメータ記憶部が記憶した公開暗号パラメータが表わす関数Ｖ１と、上記受信者識別入力部が入力したｎ個の所定の長さのビット列ＩＤｉと、上記乱数生成部が生成したｎ個の整数ｓｉ（ｉは、１以上ｎ以下の整数。）とに基づいて、ｎ人の受信者に対応するｎ個の乗法群Ｇ２の要素ｕｉ＝Ｖ１（ＩＤｉ）＾ｓｉ（ｉは、１以上ｎ以下の整数。）を算出し、算出したｎ個の乗法群Ｇ２の要素ｕｉをそれぞれ表わすビット列を、ｎ人の受信者に対応するｎ個の第二暗号文Ｃ２ｉ（ｉは、１以上ｎ以下の整数。）とし、
上記第三暗号文生成部は、上記処理装置を用いて、上記暗号パラメータ記憶部が記憶した公開暗号パラメータが表わす乗法群Ｇ１の要素ｇと、上記乱数生成部が生成したｎ個の整数ｓｉとに基づいて、ｎ人の受信者に対応するｎ個の乗法群Ｇ１の要素ｖｉ＝ｇ＾ｓｉ（ｉは、１以上ｎ以下の整数。）を算出し、算出したｎ個の乗法群Ｇ１の要素ｖｉをそれぞれ表わすビット列を、ｎ人の受信者に対応するｎ個の第三暗号文Ｃ３ｉ（ｉは、１以上ｎ以下の整数。）とし、
上記ハッシュ値算出部は、上記処理装置を用いて、上記暗号パラメータ記憶部が記憶した公開暗号パラメータが表わすハッシュ関数ＨＦに基づいて、１つの所定の長さのビット列ｗ０を算出して、ハッシュ値Ｈとし、
上記暗号文検証文生成部は、上記処理装置を用いて、上記暗号パラメータ記憶部が記憶した公開暗号パラメータが表わす関数Ｖ２と、上記乱数生成部が生成したｎ個の整数ｓｉと、上記ハッシュ値算出部が算出した１つの所定の長さのビット列ｗ０とに基づいて、ｎ人の受信者に対応するｎ個の乗法群Ｇ２の要素ｙｉ＝Ｖ２（ｗ０）＾ｓｉ（ｉは、１以上ｎ以下の整数。）を算出し、算出したｎ個の乗法群Ｇ２の要素ｙｉをそれぞれ表わすビット列を、ｎ人の受信者に対応するｎ個の暗号文検証文ＣＣｉとし、
上記検証ハッシュ値算出部は、上記処理装置を用いて、上記公開パラメータ記憶部が記憶した公開暗号パラメータが表わすハッシュ関数ＨＦに基づいて、所定の長さのビット列ｗ’を算出して、検証ハッシュ値Ｈ’とし、
上記暗号文検証部は、上記処理装置を用いて、上記公開パラメータ記憶部が記憶した公開暗号パラメータが表わすペアリングｅと関数Ｖ２と、上記暗号文分解部が取得した対応第三暗号文Ｃ３ＩＤが表わす乗法群Ｇ１の要素ｖＩＤと上記検証ハッシュ値算出部が算出した所定の長さのビット列ｗ’とに基づいて、乗法群ＧＴの要素ｅ（ｖＩＤ，Ｖ２（ｗ’））を算出し、上記処理装置を用いて、上記公開パラメータ記憶部が記憶した公開暗号パラメータが表わす乗法群Ｇ１の要素ｇとペアリングｅと、上記暗号文分解部が取得した対応暗号文検証文ＣＣＩＤが表わす乗法群Ｇ２の要素ｙＩＤとに基づいて、乗法群ＧＴの要素ｅ（ｇ，ｙＩＤ）を算出し、上記処理装置を用いて、算出した乗法群ＧＴの要素ｅ（ｖＩＤ，Ｖ２（ｗ’））と、算出した乗法群ＧＴの要素ｅ（ｇ，ｙＩＤ）とを比較し、乗法群ＧＴの要素ｅ（ｖＩＤ，Ｖ２（ｗ’））と乗法群ＧＴの要素ｅ（ｇ，ｙＩＤ）とが一致する場合に、上記暗号文受信部が受信した１つの暗号文Ｃに整合性があると判定し、
上記暗号文復号部は、上記暗号文受信部が受信した１つの暗号文Ｃに整合性があると、上記暗号文検証部が判定した場合に、上記処理装置を用いて、上記公開パラメータ記憶部が記憶した公開暗号パラメータが表わすペアリングｅと鍵生成関数ＫＤＦと、上記秘密鍵記憶部が記憶した秘密鍵ｄＩＤが表わす乗法群Ｇ２の要素ｄ０ＩＤと乗法群Ｇ１の要素ｄ１ＩＤと、上記暗号文分解部が取得した１つの対応第二暗号文Ｃ２ＩＤが表わす乗法群Ｇ２の要素ｕＩＤと対応第三暗号文Ｃ３ＩＤが表わす乗法群Ｇ１の要素ｖＩＤとに基づいて、鍵ビット列ｋ’＝ＫＤＦ（ｅ（ｖＩＤ，ｄ０ＩＤ）／ｅ（ｄ１ＩＤ，ｕＩＤ））を算出し、上記処理装置を用いて、算出した鍵ビット列ｋ’により、上記暗号文分解部が取得した対応第一暗号文Ｃ１ＩＤを復号して、平文Ｍを復元することを特徴とする。【００２５】
この発明にかかる暗号通信システムは、更に、以下の点を特徴とする。
上記暗号文主文生成部は、上記処理装置を用いて、上記受信者識別入力部が入力したｎ個の受信者識別情報ＩＤｉを含むｎ個の暗号文主文ＣＢｉを生成することを特徴とする。【００２６】
この発明にかかる暗号通信システムは、更に、以下の点を特徴とする。
上記暗号文生成装置は、更に、セッション鍵生成部と、データ入力部と、データ暗号化部と、暗号文通知部とを有し、
上記セッション鍵生成部は、上記処理装置を用いて、所定の長さのビット列をランダムに生成して、セッション鍵Ｋとし、
上記平文入力部は、上記処理装置を用いて、平文Ｍとして、上記セッション鍵生成部が生成したセッション鍵Ｋを入力し、
上記データ入力部は、上記処理装置を用いて、ｎ人の受信者に対して送信すべき１つの平文データを入力し、
上記データ暗号化部は、上記処理装置を用いて、上記セッション鍵生成部が生成したセッション鍵Ｋにより、上記データ入力部が入力した１つの平文データを暗号化して、１つの暗号化データとし、
上記暗号文通知部は、上記処理装置を用いて、上記受信者識別入力部が入力したｎ個の受信者識別情報によって識別されるｎ人の受信者に対して、上記暗号文結合部が結合した１つの暗号文Ｃと、上記データ暗号化部が暗号化した１つの暗号化データとを通知し、
上記複数の暗号文受信装置は、更に、それぞれ、データ復号部を有し、
上記暗号文受信部は、上記処理装置を用いて、上記暗号文生成装置が通知した１つの暗号文Ｃと１つの暗号化データとを受信し、
上記データ復号部は、上記暗号文復号部が復元した平文Ｍをセッション鍵Ｋ’とし、上記処理装置を用いて、上記セッション鍵Ｋ’により、上記暗号文受信部が受信した１つの暗号化データを復号することを特徴とする。【００２７】
この発明にかかる群パラメータ生成装置は、
それぞれが対応する暗号文受信装置を有するｎ人の受信者（ｎは、１以上の整数。）に対して、平文Ｍを１つの暗号文Ｃにより通知する暗号通信システムにおける暗号処理に使用する乗法群のパラメータを生成する群パラメータ生成装置において、
情報を処理する処理装置と、群位数候補生成部と、群位数安全性判定部と、パラメータ生成部とを有し、
上記群位数候補生成部は、上記処理装置を用いて、素数ｒを群位数の候補として生成し、
上記群位数安全性判定部は、上記処理装置を用いて、上記群位数候補生成部が生成した素数ｒに基づいて、素数ｒと１との差（ｒ−１）の因数と、素数ｒと１との和（ｒ＋１）の因数とを算出し、上記処理装置を用いて、算出した（ｒ−１）の因数と（ｒ＋１）の因数とに基づいて、上記群位数候補生成部が生成した素数ｒが安全な群位数であるか否かを判定し、
上記パラメータ生成部は、上記群位数候補生成部が生成した素数ｒが安全な群位数であると群位数安全性判定部が判定した場合に、上記処理装置を用いて、上記群位数候補生成部が生成した素数ｒに基づいて、素数ｒを群位数とする乗法群を算出し、上記処理装置を用いて、算出した乗法群を表わす情報を含む群パラメータを生成し、
上記群パラメータ記憶部は、上記記憶装置を用いて、上記群パラメータ生成装置が生成した群パラメータを記憶することを特徴とする。【００２８】
この発明にかかる群パラメータ生成装置は、更に、以下の点を特徴とする。
上記群位数候補生成部は、上記処理装置を用いて、所定の整数ｋの倍数に１を加えた素数ｒを群位数の候補として生成し、
上記群位数安全性判定部は、剰余算出部と、判定値算出部と、素因数判定部とを有し、
上記剰余算出部は、上記処理装置を用いて、上記群位数候補生成部が生成した素数ｒに基づいて、素数ｒを４で割った余りを算出し、
上記判定値算出部は、上記剰余算出部が算出した余りが１である場合に、上記処理装置を用いて、上記所定の整数ｋと、上記群位数候補生成部が生成した素数ｒとに基づいて、素数ｒと１との差（ｒ−１）を、整数ｋと４との最小公倍数ＬＣＭ（ｋ，４）で割った商である整数ｒ１＝（ｒ−１）／ＬＣＭ（ｋ，４）を算出し、上記処理装置を用いて、上記群位数候補生成部が生成した素数ｒに基づいて、素数ｒと１との和（ｒ＋１）を２で割った商である整数ｒ２＝（ｒ＋１）／２を算出し、上記剰余算出部が算出した余りが３である場合に、上記処理装置を用いて、上記所定の整数ｋと、上記群位数候補生成部が生成した素数ｒとに基づいて、素数ｒと１との差（ｒ−１）を、整数ｋと２との最小公倍数ＬＣＭ（ｋ，２）で割った商である整数ｒ１＝（ｒ−１）／ＬＣＭ（ｋ，２）を算出し、上記処理装置を用いて、上記群位数候補生成部が生成した素数ｒに基づいて、素数ｒと１との和（ｒ＋１）を４で割った商である整数ｒ２＝（ｒ＋１）／４を算出し、
上記素因数判定部は、上記処理装置を用いて、上記判定値算出部が算出した整数ｒ１に基づいて、整数ｒ１が所定の整数Ｂ１より小さい素因数を有するか否かを判定し、上記処理装置を用いて、上記判定値算出部が算出した整数ｒ２に基づいて、整数ｒ２が所定の整数Ｂ２より小さい素因数を有するか否かを判定し、整数ｒ１が所定の整数Ｂ１より小さい素因数を有すると判定した場合、及び、整数ｒ２が所定の整数Ｂ２よりも小さい素因数を有すると判定した場合に、上記群位数候補生成部が生成した素数ｒが安全な群位数でないと判定することを特徴とする。【００２９】
この発明にかかる群パラメータ生成装置は、更に、以下の点を特徴とする。
上記群位数候補生成部は、上記処理装置を用いて、所定の整数ｋの倍数に１を加えた素数ｒを群位数の候補として生成し、
上記群位数安全性判定部は、剰余算出部と、判定値算出部と、素因数判定部とを有し、
上記剰余算出部は、上記処理装置を用いて、上記群位数候補生成部が生成した素数ｒに基づいて、素数ｒを４で割った余りを算出し、
上記判定値算出部は、上記剰余算出部が算出した余りが１である場合に、上記処理装置を用いて、上記所定の整数ｋと、上記群位数候補生成部が生成した素数ｒとに基づいて、素数ｒと１との差（ｒ−１）を、整数ｋと４との最小公倍数ＬＣＭ（ｋ，４）で割った商である整数ｒ１＝（ｒ−１）／ＬＣＭ（ｋ，４）を算出し、上記処理装置を用いて、上記群位数候補生成部が生成した素数ｒに基づいて、素数ｒと１との和（ｒ＋１）を２で割った商である整数ｒ２＝（ｒ＋１）／２を算出し、上記剰余算出部が算出した余りが３である場合に、上記処理装置を用いて、上記所定の整数ｋと、上記群位数候補生成部が生成した素数ｒとに基づいて、素数ｒと１との差（ｒ−１）を、整数ｋと２との最小公倍数ＬＣＭ（ｋ，２）で割った商である整数ｒ１＝（ｒ−１）／ＬＣＭ（ｋ，２）を算出し、上記処理装置を用いて、上記群位数候補生成部が生成した素数ｒに基づいて、素数ｒと１との和（ｒ＋１）を４で割った商である整数ｒ２＝（ｒ＋１）／４を算出し、
上記素因数判定部は、上記処理装置を用いて、上記判定値算出部が算出した整数ｒ１に基づいて、整数ｒ１が素数であるか否かを判定し、上記処理装置を用いて、上記判定値算出部が算出した整数ｒ２に基づいて、整数ｒ２が素数であるか否かを判定し、整数ｒ１が素数でないと判定した場合、及び、整数ｒ２が素数でないと判定した場合に、上記群位数候補生成部が生成した素数ｒが安全な群位数でないと判定することを特徴とする。
【発明の効果】
【００３０】
この実施の形態における暗号文生成装置によれば、ＩＤベース暗号通信方式において、同一の平文Ｍを複数の受信者に対して通知する１つの暗号文Ｃを生成する処理の一部であるハッシュ値を算出する処理と、算出したハッシュ値に基づく処理とをそれぞれ１回で済ますことができるので、処理が効率化し、高速な暗号処理が可能になるという効果を奏する。
【発明を実施するための最良の形態】
【００３１】
実施の形態１．
実施の形態１を、図１〜図１０を用いて説明する。【００３２】
図１は、この実施の形態におけるＩＤベース暗号通信システム８００の全体構成の一例を示すシステム構成図である。
ＩＤベース暗号通信システム８００は、暗号パラメータ生成装置１００、暗号文生成装置２００、複数の暗号文受信装置３０１〜３０３を有する。【００３３】
暗号文受信装置３０１〜３０３は、それぞれ受信者に対応し、対応する受信者を識別する受信者識別情報５３１〜５３３と対応づけられている。
受信者識別情報５３１〜５３３は、例えば、受信者の住所・氏名、メールアドレスなど、受信者を一意に識別することができる情報である。受信者識別情報５３１〜５３３は、ＩＤベース暗号通信システム８００において公開された情報５００の一部であり、対応関係が正しいか否かを容易に検証可能な情報である。【００３４】
暗号パラメータ生成装置１００は、ＩＤベース暗号通信システム８００における暗号処理に必要な公開暗号パラメータ５１０を生成する。暗号パラメータ生成装置１００は、生成した公開暗号パラメータ５１０を公開し、公開暗号パラメータ５１０は、ＩＤベース暗号通信システム８００において公開された情報５００の一部となる。【００３５】
また、暗号パラメータ生成装置１００は、暗号文受信装置３０１〜３０３の受信者識別情報５３１〜５３３を入力し、入力した受信者識別情報５３１〜５３３に基づいて、暗号文受信装置３０１〜３０３の秘密鍵６０１〜６０３を生成する。暗号パラメータ生成装置１００は、生成した秘密鍵６０１〜６０３を、それぞれの暗号文受信装置３０１〜３０３に対して、第三者に知られる可能性のない安全な方法で、秘密裏に通知する。例えば、暗号パラメータ生成装置１００は生成した秘密鍵６０１〜６０３をそれぞれフレキシブルディスクなどの記憶媒体に記録し、秘密鍵６０１を記録したフレキシブルディスクを暗号文受信装置３０１に対応する受信者本人に直接手渡しして、受信者本人が暗号文受信装置３０１に秘密鍵６０１をインストールすることにより、暗号文受信装置３０１に秘密鍵６０１を通知する。秘密鍵６０２，６０３も同様にして、暗号文受信装置３０２，３０３に通知する。【００３６】
暗号文生成装置２００は、暗号文受信装置３０１〜３０３の全部または一部である複数の暗号文受信装置に対して、通知したいデータ（平文データ７１０）を入力する。ここでは、平文データ７１０を、暗号文受信装置３０１と暗号文受信装置３０３に対して通知したいが、暗号文受信装置３０２には通知したくない場合を例として説明する。
暗号文生成装置２００は、暗号文受信装置３０１及び暗号文受信装置３０３に対して、通知データ７２０を通知する。【００３７】
通知データ７２０は、例えば、メール通信やデータ放送などを介して、暗号文受信装置３０１及び暗号文受信装置３０３に通知される。したがって、通知データ７２０は、すべての受信者に対して同一のデータである。
通知データ７２０は公開を意図するものではないが、暗号文生成装置２００が通知データ７２０を通知する経路は、例えば、インターネットやデータ放送など、第三者が容易に通知データ７２０を傍受可能な環境である。そのため、通知データ７２０は、平文データ７１０を暗号化した暗号化データ７２２を含む。
また、平文データ７１０は、例えば、動画データなど巨大なデータである場合もあるので、通知相手に関わらず、共通のセッション鍵Ｋを用いて暗号化する。通知相手ごとにセッション鍵Ｋを変えると、通知相手の数と同じ数の暗号化データ７２２を生成する必要があるので、暗号文生成装置２００の暗号化処理の負荷が増え、通知経路のトラフィックを増大させてしまうからである。【００３８】
通知データ７２０は、更に、平文データ７１０を暗号化したセッション鍵Ｋを暗号化した鍵暗号文Ｃ７２１を含む。
暗号文受信装置３０１は、鍵暗号文Ｃ７２１を復号することにより、セッション鍵Ｋを取得し、取得したセッション鍵Ｋで暗号化データ７２２を復号することにより、平文データ７１０を取得する。【００３９】
暗号文生成装置２００は、暗号パラメータ生成装置１００が公開した公開暗号パラメータ５１０と、暗号文受信装置３０１及び暗号文受信装置３０３の公開された受信者識別情報５３１及び受信者識別情報５３３とを入力する。
暗号文生成装置２００は、入力した情報に基づいて、ＩＤベース暗号方式の暗号処理をし、セッション鍵Ｋと鍵暗号文Ｃ７２１とを生成する。
暗号文生成装置２００は、生成したセッション鍵Ｋにより、平文データ７１０を暗号化して暗号化データ７２２を生成する。
暗号文生成装置２００は、生成した鍵暗号文Ｃ７２１と暗号化データ７２２とを含む通知データ７２０を、暗号文受信装置３０１及び暗号文受信装置３０３に対して通知する。【００４０】
鍵暗号文Ｃ７２１は、それぞれの通知相手に対応する部分を含む。鍵暗号文Ｃ７２１は、更に、通知相手にかかわらず共通の部分を含んでいてもよい。
暗号文受信装置３０１は、鍵暗号文Ｃ７２１のなかから、暗号文受信装置３０１に対応する部分（及び共通の部分）を取得し、秘密鍵６０１を用いて、ＩＤベース暗号方式の復号処理をして、セッション鍵Ｋを取得する。
暗号文受信装置３０３も同様に、秘密鍵６０１を用いて、セッション鍵Ｋを取得する。【００４１】
一方、鍵暗号文Ｃ７２１は、暗号文受信装置３０２に対応する部分を含まないので、暗号文受信装置３０２は、通知データ７２０を傍受したとしても、秘密鍵６０２で復号することはできず、セッション鍵Ｋを取得できない。したがって、暗号文受信装置３０２は、平文データ７１０を取得できない。【００４２】
図２は、この実施の形態における暗号パラメータ生成装置１００及び暗号文生成装置２００及び暗号文受信装置３０１〜３０３の外観の一例を示す図である。
暗号パラメータ生成装置１００及び暗号文生成装置２００及び暗号文受信装置３０１〜３０３は、システムユニット９１０、ＣＲＴ（Ｃａｔｈｏｄｅ・Ｒａｙ・Ｔｕｂｅ）やＬＣＤ（液晶）の表示画面を有する表示装置９０１、キーボード９０２（Ｋｅｙ・Ｂｏａｒｄ：Ｋ／Ｂ）、マウス９０３、ＦＤＤ９０４（Ｆｌｅｘｉｂｌｅ・Ｄｉｓｋ・Ｄｒｉｖｅ）、コンパクトディスク装置９０５（ＣＤＤ）、プリンタ装置９０６、スキャナ装置９０７などのハードウェア資源を備え、これらはケーブルや信号線で接続されている。
システムユニット９１０は、コンピュータであり、ファクシミリ機９３２、電話器９３１とケーブルで接続され、また、ローカルエリアネットワーク９４２（ＬＡＮ）、ゲートウェイ９４１を介してインターネット９４０に接続されている。【００４３】
図３は、この実施の形態における暗号パラメータ生成装置１００及び暗号文生成装置２００及び暗号文受信装置３０１〜３０３のハードウェア資源の一例を示す図である。
暗号パラメータ生成装置１００及び暗号文生成装置２００及び暗号文受信装置３０１〜３０３は、プログラムを実行するＣＰＵ９１１（Ｃｅｎｔｒａｌ・Ｐｒｏｃｅｓｓｉｎｇ・Ｕｎｉｔ、中央処理装置、処理装置、演算装置、マイクロプロセッサ、マイクロコンピュータ、プロセッサともいう）を備えている。ＣＰＵ９１１は、バス９１２を介してＲＯＭ９１３、ＲＡＭ９１４、通信装置９１５、表示装置９０１、キーボード９０２、マウス９０３、ＦＤＤ９０４、ＣＤＤ９０５、プリンタ装置９０６、スキャナ装置９０７、磁気ディスク装置９２０と接続され、これらのハードウェアデバイスを制御する。磁気ディスク装置９２０の代わりに、光ディスク装置、メモリカード読み書き装置などの記憶装置でもよい。
ＲＡＭ９１４は、揮発性メモリの一例である。ＲＯＭ９１３、ＦＤＤ９０４、ＣＤＤ９０５、磁気ディスク装置９２０の記憶媒体は、不揮発性メモリの一例である。これらは、記憶装置あるいは記憶部の一例である。
通信装置９１５、キーボード９０２、スキャナ装置９０７、ＦＤＤ９０４などは、入力部、入力装置の一例である。
また、通信装置９１５、表示装置９０１、プリンタ装置９０６などは、出力部、出力装置の一例である。【００４４】
通信装置９１５は、ファクシミリ機９３２、電話器９３１、ＬＡＮ９４２等に接続されている。通信装置９１５は、ＬＡＮ９４２に限らず、インターネット９４０、ＩＳＤＮ等のＷＡＮ（ワイドエリアネットワーク）などに接続されていても構わない。インターネット９４０或いはＩＳＤＮ等のＷＡＮに接続されている場合、ゲートウェイ９４１は不用となる。
磁気ディスク装置９２０には、オペレーティングシステム９２１（ＯＳ）、ウィンドウシステム９２２、プログラム群９２３、ファイル群９２４が記憶されている。プログラム群９２３のプログラムは、ＣＰＵ９１１、オペレーティングシステム９２１、ウィンドウシステム９２２により実行される。【００４５】
上記プログラム群９２３には、以下に述べる実施の形態の説明において「〜部」として説明する機能を実行するプログラムが記憶されている。プログラムは、ＣＰＵ９１１により読み出され実行される。
ファイル群９２４には、以下に述べる実施の形態の説明において、「〜の判定結果」、「〜の計算結果」、「〜の処理結果」として説明する情報やデータや信号値や変数値やパラメータが、「〜ファイル」や「〜データベース」の各項目として記憶されている。「〜ファイル」や「〜データベース」は、ディスクやメモリなどの記録媒体に記憶される。ディスクやメモリになどの記憶媒体に記憶された情報やデータや信号値や変数値やパラメータは、読み書き回路を介してＣＰＵ９１１によりメインメモリやキャッシュメモリに読み出され、抽出・検索・参照・比較・演算・計算・処理・出力・印刷・表示などのＣＰＵの動作に用いられる。抽出・検索・参照・比較・演算・計算・処理・出力・印刷・表示のＣＰＵの動作の間、情報やデータや信号値や変数値やパラメータは、メインメモリやキャッシュメモリやバッファメモリに一時的に記憶される。
また、以下に述べる実施の形態の説明において説明するフローチャートの矢印の部分は主としてデータや信号の入出力を示し、データや信号値は、ＲＡＭ９１４のメモリ、ＦＤＤ９０４のフレキシブルディスク、ＣＤＤ９０５のコンパクトディスク、磁気ディスク装置９２０の磁気ディスク、その他光ディスク、ミニディスク、ＤＶＤ（Ｄｉｇｉｔａｌ・Ｖｅｒｓａｔｉｌｅ・Ｄｉｓｃ）等の記録媒体に記録される。また、データや信号は、バス９１２や信号線やケーブルその他の伝送媒体によりオンライン伝送される。【００４６】
また、以下に述べる実施の形態の説明において「〜部」として説明するものは、「〜回路」、「〜装置」、「〜機器」であってもよく、また、「〜ステップ」、「〜手順」、「〜処理」であってもよい。すなわち、「〜部」として説明するものは、ＲＯＭ９１３に記憶されたファームウェアで実現されていても構わない。或いは、ソフトウェアのみ、或いは、素子・デバイス・基板・配線などのハードウェアのみ、或いは、ソフトウェアとハードウェアとの組み合わせ、さらには、ファームウェアとの組み合わせで実施されても構わない。ファームウェアとソフトウェアは、プログラムとして、磁気ディスク、フレキシブルディスク、光ディスク、コンパクトディスク、ミニディスク、ＤＶＤ等の記録媒体に記憶される。プログラムはＣＰＵ９１１により読み出され、ＣＰＵ９１１により実行される。すなわち、プログラムは、以下に述べる「〜部」としてコンピュータを機能させるものである。あるいは、以下に述べる「〜部」の手順や方法をコンピュータに実行させるものである。【００４７】
図４は、この実施の形態における暗号パラメータ生成装置１００の機能ブロックの構成の一例を示すブロック構成図である。
暗号パラメータ生成装置１００は、パラメータ設定部１１０と秘密鍵設定部１３０とを有する。
なお、暗号パラメータ生成装置１００は、パラメータ設定部１１０を有するパラメータ設定装置と、秘密鍵設定部１３０を有する秘密鍵設定装置とに分かれていてもよい。その場合、１つのパラメータ設定装置に対して、複数の秘密鍵設定装置があってもよい。【００４８】
パラメータ設定部１１０は、ＩＤベース暗号通信システム８００におけるＩＤベース暗号方式の暗号処理・復号処理の基礎となる公開暗号パラメータを生成し、公開する。
パラメータ設定部１１０は、群パラメータ記憶部１１１と、秘密情報生成部１１２と、公開パラメータ生成部１１３と、公開パラメータ公開部１１４と、秘密情報記憶部１２１と、パラメータ記憶部１２２とを有する。【００４９】
群パラメータ記憶部１１１は、磁気ディスク装置９２０などの記憶装置を用いて、群パラメータを記憶する。
群パラメータとは、ＩＤベース暗号方式における群演算を行う群を定義するパラメータを表わす情報である。
例えば、ＩＤベース暗号方式における群演算を行う群として、楕円曲線上の点がなす群を用いる場合、群パラメータ記憶部１１１は、群パラメータとして、楕円曲線Ｙ２＝Ｘ３＋ａＸ＋ｂを定義する係数ａ、係数ｂなどを記憶する。【００５０】
なお、楕円曲線上の点がなす群における演算として、通常、楕円曲線上の点の加算が定義されている。群パラメータ記憶部１１１が記憶する群パラメータが表わす群は、楕円曲線上の点がなす群とは限らず、他の群であってもよい。ここでは、群パラメータ記憶部１１１が記憶する群パラメータが表わす群は、乗法群であるものとする。すなわち、群パラメータ記憶部１１１が記憶する群パラメータが表わす群の要素の間の演算として、乗法が定義されており、乗法について群をなしているものとする。したがって、以下の説明において、「乗法群」として言及する群には、楕円曲線上の点がなす群を含むものとし、「乗法・乗算」として言及する演算には、通常、楕円曲線上の点の加算と呼ばれているものを含むものとする。また、数式のなかで「乗法・乗算」を記述する場合には、「・」を用いる。
なお、群パラメータ記憶部１１１が記憶する群パラメータが表わす乗法群における乗算は、実用的な時間内に所定のアルゴリズムにより計算可能であるものとする。したがって、ＣＰＵ９１１などの処理装置を用いて、乗算結果を算出することができる。【００５１】
秘密情報生成部１１２は、ＣＰＵ９１１などの処理装置を用いて、群パラメータ記憶部１１１が記憶した群パラメータを入力する。
秘密情報生成部１１２は、ＣＰＵ９１１などの処理装置を用いて、秘密情報をランダムに生成する。
秘密情報生成部１１２は、ＣＰＵ９１１などの処理装置を用いて、生成した秘密情報を出力する。【００５２】
秘密情報とは、ＩＤベース暗号方式において公開される公開暗号パラメータを生成するための基礎となる情報である。また、秘密情報は、秘密鍵を生成するための基礎ともなるものであり、絶対に第三者に知られてはならない。
秘密情報が表わす内容は、ＩＤベース暗号方式として、どのような暗号方式を採用するかによって異なる。秘密情報は、例えば、群パラメータが表わす乗法群の位数ｒより小さく、１以上の整数を表わす情報である。【００５３】
公開パラメータ生成部１１３は、ＣＰＵ９１１などの処理装置を用いて、群パラメータ記憶部１１１が記憶した群パラメータと、秘密情報生成部１１２が出力した秘密情報とを入力する。
公開パラメータ生成部１１３は、ＣＰＵ９１１などの処理装置を用いて、入力した群パラメータと、秘密情報とに基づいて、公開暗号パラメータを生成する。
公開パラメータ生成部１１３は、ＣＰＵ９１１などの処理装置を用いて、生成した公開暗号パラメータを出力する。【００５４】
公開暗号パラメータが表わす内容は、ＩＤベース暗号方式として、どのような暗号方式を採用するかによって異なる。公開暗号パラメータは、例えば、群パラメータが表わす乗法群の要素を表わす情報である。
公開暗号パラメータには、秘密情報が巧みに織り込まれており、暗号文生成装置２００や暗号文受信装置３０１〜３０３は、公開暗号パラメータを利用することで、秘密情報を間接的に利用できるが、公開暗号パラメータから秘密情報を逆算することはできないようにする。
例えば、秘密情報は整数αを表わし、公開暗号パラメータは、群パラメータが表わす乗法群Ｇの要素ｇと、乗法群Ｇの要素ｇ＾αとを表わす情報を含む。なお、「＾」は冪乗演算を示し、「ｇ＾α」はｇのα乗、すなわちα個のｇを互いに乗算することを意味する。乗法群ＧがＤＨ問題（Ｄｉｆｆｉｅ−Ｈｅｌｌｍａｎｎ  Ｐｒｏｂｌｅｍ）を解くことが困難な群であれば、ｇとｇ＾αからαを求めることはできない。
このため、公開暗号パラメータを公開しても、秘密情報の秘密は守られる。【００５５】
公開パラメータ公開部１１４は、ＣＰＵ９１１などの処理装置を用いて、公開パラメータ生成部１１３が出力した公開暗号パラメータを入力する。
公開パラメータ公開部１１４は、ＣＰＵ９１１などの処理装置を用いて、入力した公開パラメータを公開する。ここで、「公開」とは、暗号文生成装置２００や暗号文受信装置３０１〜３０３に通知することを含むが、暗号文生成装置２００や暗号文受信装置３０１〜３０３が、正しい公開暗号パラメータを取得でき、万が一改竄された公開暗号パラメータを取得した場合、それが改竄されたものであるか否かを容易に判別できるようにすることである。例えば、公開パラメータ公開部１１４は、公開暗号パラメータをホームページに掲載することにより、公開する。第三者の攻撃により、ホームページを改竄される可能性がないわけではないが、公開暗号パラメータ生成装置１００がホームページをチェックすることにより、改竄を発見できる。また、複数のサーバ装置を用いて、同一の公開暗号パラメータを公開し、両者が一致するか否かを判断することにより、改竄を発見できるようにしてもよい。【００５６】
秘密情報記憶部１２１は、ＣＰＵ９１１などの処理装置を用いて、秘密情報生成部１１２が出力した秘密情報を入力する。
秘密情報記憶部１２１は、磁気ディスク装置９２０などの記憶装置を用いて、入力した秘密情報を記憶する。【００５７】
パラメータ記憶部１２２は、ＣＰＵ９１１などの処理装置を用いて、公開パラメータ生成部１１３が出力した公開暗号パラメータを入力する。
パラメータ記憶部１２２は、磁気ディスク装置９２０などの記憶装置を用いて、入力した公開暗号パラメータを記憶する。【００５８】
秘密鍵設定部１３０は、ＩＤベース暗号通信システム８００におけるＩＤベース暗号方式の復号処理に必要な秘密鍵を生成し、それぞれの暗号文受信装置３０１〜３０３に秘密裏に通知する。
秘密鍵設定部１３０は、識別情報入力部１３１と、秘密鍵生成部１３２と、秘密鍵通知部１３３とを有する。【００５９】
識別情報入力部１３１は、ＣＰＵ９１１などの処理装置を用いて、受信者識別情報を入力する。識別情報入力部１３１が入力する受信者識別情報は、暗号文受信装置３０１〜３０３のいずれかに対応する受信者を識別する情報であり、公開された情報５００の一部である。例えば、識別情報入力部１３１は、公開された情報５００から、暗号文受信装置３０１に対応する受信者を識別する受信者識別情報５３１を入力する。
識別情報入力部１３１は、ＣＰＵ９１１などの処理装置を用いて、入力した受信者識別情報が、正しく暗号文受信装置に対応する受信者を識別するものであるかを、公開された情報５００に基づいて検証する。
検証の結果、問題がなければ、識別情報入力部１３１は、ＣＰＵ９１１などの処理装置を用いて、入力した受信者識別情報を出力する。【００６０】
秘密鍵生成部１３２は、ＣＰＵ９１１などの処理装置を用いて、識別情報入力部１３１が出力した受信者識別情報と、秘密情報記憶部１２１が記憶した秘密情報と、パラメータ記憶部１２２が記憶した公開暗号パラメータとを入力する。
秘密鍵生成部１３２は、ＣＰＵ９１１などの処理装置を用いて、入力した受信者識別情報と秘密情報と公開暗号パラメータとに基づいて、秘密鍵を生成する。
秘密鍵生成部１３２は、ＣＰＵ９１１などの処理装置を用いて、生成した秘密鍵を出力する。【００６１】
秘密鍵通知部１３３は、ＣＰＵ９１１などの処理装置を用いて、秘密鍵生成部１３２が出力した秘密鍵を入力する。
秘密鍵通知部１３３は、ＣＰＵ９１１などの処理装置を用いて、入力した秘密鍵を、対応する受信者の暗号文受信装置に対して、秘密裏に通知する。例えば、秘密鍵通知部１３３は、受信者識別情報５３１に基づいて秘密鍵生成部１３２が生成した秘密鍵６０１を、受信者識別情報５３１によって識別される受信者に対応する暗号文受信装置３０１に対して通知する。【００６２】
このように、パラメータ設定部１１０が生成した公開暗号パラメータが公開され、秘密鍵設定部１３０が生成した秘密鍵６０１〜６０３がそれぞれの暗号文受信装置３０１〜３０３に通知されることにより、ＩＤベース暗号方式による暗号通信の準備が整う。【００６３】
図５は、この実施の形態における暗号文生成装置２００の機能ブロックの構成の一例を示すブロック構成図である。
暗号文生成装置２００は、鍵暗号化部２９０と、データ入力部２５１と、データ暗号化部２５２と、暗号文通知部２６１とを有する。【００６４】
鍵暗号化部２９０は、ＣＰＵ９１１などの処理装置を用いて、セッション鍵Ｋを生成するとともに、鍵暗号文Ｃを生成する。
鍵暗号文Ｃは、鍵暗号化部２９０が生成したセッション鍵Ｋを暗号化したものである。鍵暗号文Ｃは、暗号文Ｃの一例である。
鍵暗号化部２９０は、暗号パラメータ記憶部２１０と、セッション鍵生成部２２１と、乱数生成部２２２と、平文入力部２３１と、受信者識別入力部２３２と、暗号文主文生成部２４０と、ハッシュ値算出部２４４と、暗号文検証文生成部２４５と、暗号文結合部２４６とを有する。【００６５】
暗号パラメータ記憶部２１０は、磁気ディスク装置９２０などの記憶装置を用いて、暗号パラメータ生成装置１００が公開した公開暗号パラメータを記憶する。【００６６】
セッション鍵生成部２２１は、ＣＰＵ９１１などの処理装置を用いて、セッション鍵Ｋをランダムに生成する。セッション鍵Ｋは、平文データ７１０を暗号化するための鍵であり、例えば、所定の長さのビット列である。平文データ７１０を暗号化する暗号方式は、例えば、ＡＥＳ（Ａｄｖａｎｃｅｄ  Ｅｎｃｒｙｐｔｉｏｎ  Ｓｔａｎｄａｒｄ）やＭＩＳＴＹ（登録商標）などの共通鍵暗号方式である。
セッション鍵生成部２２１は、ＣＰＵ９１１などの処理装置を用いて、生成したセッション鍵Ｋを出力する。【００６７】
平文入力部２３１は、ＣＰＵ９１１などの処理装置を用いて、セッション鍵生成部２２１が出力したセッション鍵Ｋを、平文Ｍとして入力する。
平文入力部２３１は、ＣＰＵ９１１などの処理装置を用いて、入力した平文Ｍを出力する。【００６８】
受信者識別入力部２３２は、ＣＰＵ９１１などの処理装置を用いて、平文データ７１０を送信すべき暗号文受信装置に対応する受信者の受信者識別情報を入力する。例えば、暗号文受信装置３０１と暗号文受信装置３０３とに平文データ７１０を送信したい場合であれば、受信者識別入力部２３２は、暗号文受信装置３０１に対応する受信者の受信者識別情報５３１と、暗号文受信装置３０３に対応する受信者の受信者識別情報５３３とを入力する。
以下、平文データ７１０を送信したい相手の数をｎと記述する。また、複数の受信者識別情報を区別するため、添え字を用いて、受信者識別情報ＩＤ１、受信者識別情報ＩＤ２、…、受信者識別情報ＩＤｎのように記述する。ｎ個の受信者識別情報ＩＤ１、ＩＤ２、…、ＩＤｎをまとめて、「受信者識別情報ＩＤｉ（ｉは、１以上ｎ以下の整数。）」のように記述する場合もある。以下の説明において、添え字「ｉ」は、原則として、ｎ人の受信者それぞれに対応するものを示す。
受信者識別入力部２３２は、ｎ人の受信者にそれぞれ対応するｎ個の受信者識別情報ＩＤｉ（ｉは、１以上ｎ以下の整数。）を入力する。
受信者識別入力部２３２は、ＣＰＵ９１１などの処理装置を用いて、入力したｎ個の受信者識別情報ＩＤｉを出力する。【００６９】
なお、受信者の数ｎは、あらかじめ（例えば、公開暗号パラメータ生成時に）定まっているものではなく、実際にデータを送信するときに定まるものである。
ＩＤベース暗号通信システム８００は、任意の数の受信者に対してデータを送信できる暗号通信システムである。そのときの必要に応じて、ｎ＝１かもしれないし、ｎ＝１００かもしれない。
暗号文生成装置２００は、例えば、受信者識別入力部２３２が受信者識別情報を入力したときに受信者の数ｎを知る。暗号文生成装置２００は、ｎが１以上のいずれの数であっても、１つの鍵暗号文Ｃ（と暗号化データ）を生成する。【００７０】
また、受信者識別入力部２３２が入力する複数の受信者識別情報は、すべて互いに異なるものとする。あるいは、受信者識別入力部２３２が、入力した複数の受信者識別情報のなかに重複するものがあるかを判別し、重複する受信者識別情報を１つにまとめて、重複を排除することとしてもよい。【００７１】
乱数生成部２２２は、ＣＰＵ９１１などの処理装置を用いて、暗号パラメータ記憶部２１０が記憶した公開暗号パラメータを入力する。
乱数生成部２２２は、ＣＰＵ９１１などの処理装置を用いて、ｎ個の乱数をランダムに生成する。乱数生成部２２２が生成する乱数は、例えば、入力した公開暗号パラメータが表わす乗法群の位数ｒより小さく１以上の整数ｓである。
また、乱数生成部２２２が生成するｎ個の乱数は、ｎ人の受信者それぞれに対応づけられる。すなわち、乱数生成部２２２は、ｎ人の受信者にそれぞれ対応するｎ個の乱数を生成する。
乱数生成部２２２は、生成したｎ個の乱数を表わす情報を出力する。【００７２】
暗号文主文生成部２４０は、ＣＰＵ９１１などの処理装置を用いて、暗号パラメータ記憶部２１０が記憶した公開暗号パラメータと、平文入力部２３１が出力した平文Ｍと、受信者識別入力部２３２が出力したｎ個の受信者識別情報と、乱数生成部２２２が出力したｎ個の乱数を表わす情報とを入力する。
暗号文主文生成部２４０は、ＣＰＵ９１１などの処理装置を用いて、入力した情報に基づいて、ｎ人の受信者にそれぞれ対応するｎ個の暗号文主文ＣＢｉ（ｉは、１以上ｎ以下の整数。）を生成する。
暗号文主文生成部２４０は、ＣＰＵ９１１などの処理装置を用いて、生成したｎ個の暗号文主文ＣＢｉを出力する。【００７３】
暗号文主文とは、平文Ｍ（セッション鍵Ｋ）を、ＩＤベース暗号方式により、各受信者の受信者識別情報ＩＤｉを用いて各受信者向けに暗号化したものである。ｎ個の暗号文主文ＣＢｉは、それぞれが１人の受信者に対応する。
なお、暗号文主文は、いくつかの部分に分節できるものであってもよい。暗号文主文を分節した部分のなかには、すべての受信者に共通する部分があってもよい。暗号文主文を分節した部分のうちすべての受信者に共通する部分は、１つにまとめることにより、ｎ個の暗号文主文ＣＢｉの全体を短くしてもよい。【００７４】
暗号文主文生成部２４０は、第一暗号文生成部２４１と、第二暗号文生成部２４２と、第三暗号文生成部２４３とを有する。
暗号文主文生成部２４０が出力する暗号文主文ＣＢｉは、第一暗号文生成部２４１が出力する第一暗号文Ｃ１ｉと、第二暗号文生成部２４２が出力する第二暗号文Ｃ２ｉと、第三暗号文生成部２４３が出力する第三暗号文Ｃ３ｉとから構成される。
暗号文主文ＣＢｉは、第一暗号文Ｃ１ｉと第二暗号文Ｃ２ｉと第三暗号文Ｃ３ｉとを結合したものであってもよいし、第一暗号文Ｃ１ｉと第二暗号文Ｃ２ｉと第三暗号文Ｃ３ｉとを組としたものであってもよい。
なお、この例では、暗号文主文ＣＢｉが３つの暗号文から構成されるが、これは一例であって、他の構成であってもよい。【００７５】
例えば、暗号文主文ＣＢｉは、３つの暗号文のほかに、受信者識別情報ＩＤｉを含んでいてもよい。
ここで、「含む」とは、例えば、暗号文主文ＣＢｉが、受信者識別情報ＩＤｉと第一暗号文Ｃ１ｉと第二暗号文Ｃ２ｉと第三暗号文Ｃ３ｉとを結合したものである場合など、その暗号文主文ＣＢｉが対応する受信者の受信者識別情報ＩＤｉを容易に判別でき、必要なら検証できる形式で含むことをいう。【００７６】
第一暗号文生成部２４１は、ＣＰＵ９１１などの処理装置を用いて、平文入力部２３１が出力した平文Ｍと、暗号パラメータ記憶部２１０が記憶した公開暗号パラメータと、乱数生成部２２２が出力したｎ個の乱数を表わす情報とを入力する。
第一暗号文生成部２４１は、ＣＰＵ９１１などの処理装置を用いて、入力した情報に基づいて、ｎ人の受信者にそれぞれ対応するｎ個の第一暗号文Ｃ１ｉ（ｉは、１以上ｎ以下の整数。）を生成する。
第一暗号文生成部２４１は、ＣＰＵ９１１などの処理装置を用いて、生成したｎ個の第一暗号文Ｃ１ｉを出力する。【００７７】
第二暗号文生成部２４２は、ＣＰＵ９１１などの処理装置を用いて、受信者識別入力部２３２が出力したｎ個の受信者識別情報ＩＤｉと、暗号パラメータ記憶部２１０が記憶した公開暗号パラメータと、乱数生成部２２２が出力したｎ個の乱数を表わす情報とを入力する。
第二暗号文生成部２４２は、ＣＰＵ９１１などの処理装置を用いて、入力した情報に基づいて、ｎ人の受信者にそれぞれ対応するｎ個の第二暗号文Ｃ２ｉ（ｉは、１以上ｎ以下の整数。）を生成する。
第二暗号文生成部２４２は、ＣＰＵ９１１などの処理装置を用いて、生成したｎ個の第二暗号文Ｃ２ｉを出力する。【００７８】
第三暗号文生成部２４３は、ＣＰＵ９１１などの処理装置を用いて、暗号パラメータ記憶部２１０が記憶した公開暗号パラメータと、乱数生成部２２２が出力したｎ個の乱数を表わす情報とを入力する。
第三暗号文生成部２４３は、ＣＰＵ９１１などの処理装置を用いて、入力した情報に基づいて、ｎ人の受信者にそれぞれ対応するｎ個の第三暗号文Ｃ３ｉ（ｉは、１以上ｎ以下の整数。）を生成する。
第三暗号文生成部２４３は、ＣＰＵ９１１などの処理装置を用いて、生成したｎ個の第三暗号文Ｃ３ｉを出力する。【００７９】
ハッシュ値算出部２４４は、ＣＰＵ９１１などの処理装置を用いて、暗号パラメータ記憶部２１０が記憶した公開暗号パラメータと、暗号文主文生成部２４０が生成したｎ個の暗号文主文ＣＢｉ（すなわち、第一暗号文生成部２４１が生成したｎ個の第一暗号文Ｃ１ｉと、第二暗号文生成部２４２が生成したｎ個の第二暗号文Ｃ２ｉと、第三暗号文生成部２４３が生成したｎ個の第三暗号文Ｃ３ｉ）とを入力する。
ハッシュ値算出部２４４は、ＣＰＵ９１１などの処理装置を用いて、入力したｎ個の暗号文主文ＣＢｉに基づいて、１つのハッシュ値Ｈを算出する。
ハッシュ値算出部２４４は、ＣＰＵ９１１などの処理装置を用いて、算出した１つのハッシュ値Ｈを出力する。【００８０】
ハッシュ値算出部２４４が算出するハッシュ値Ｈは、使用するＩＤベース暗号方式により異なる。例えば、ハッシュ値Ｈは、公開暗号パラメータによって定められた所定の長さのビット列である。あるいは、ハッシュ値Ｈは、公開暗号パラメータが表わす乗法群の位数ｒ未満、１以上の整数を表わす情報である。
また、公開暗号パラメータにおいて、ハッシュ値Ｈを算出するためのハッシュ関数ＨＦを定義しておいてもよい。その場合、ハッシュ値算出部２４４は、公開暗号パラメータが表わすハッシュ関数ＨＦにより、ハッシュ値Ｈを算出する。【００８１】
ハッシュ値算出部２４４は、ｎ個の暗号文主文ＣＢｉすべてに基づいて１つのハッシュ値Ｈを算出する。例えば、ハッシュ値算出部２４４は、ｎ個の暗号文主文ＣＢｉをすべて結合して１つの結合暗号文を生成し、生成した１つの結合暗号文のハッシュ値Ｈを算出する。【００８２】
暗号文検証文生成部２４５は、ＣＰＵ９１１などの処理装置を用いて、ハッシュ値算出部２４４が出力したハッシュ値Ｈと、暗号パラメータ記憶部２１０が記憶した公開暗号パラメータと、乱数生成部２２２が出力したｎ個の乱数を表わす情報とを入力する。
暗号文検証文生成部２４５は、ＣＰＵ９１１などの処理装置を用いて、入力した情報に基づいて、ｎ人の受信者にそれぞれ対応するｎ個の暗号文検証文ＣＣｉ（ｉは、１以上ｎ以下の整数。）を生成する。
暗号文検証文生成部２４５は、ＣＰＵ９１１などの処理装置を用いて、生成した暗号文検証文ＣＣｉを出力する。【００８３】
なお、この例では、暗号文検証文生成部２４５が生成する暗号文検証文の数を、ｎ個としているが、受信者に関わらず共通の１つの暗号文検証文を生成する構成としてもよい。【００８４】
暗号文結合部２４６は、ＣＰＵ９１１などの処理装置を用いて、暗号文主文生成部２４０が出力したｎ個の暗号文主文ＣＢｉ（すなわち、第一暗号文生成部２４１が出力したｎ個の第一暗号文Ｃ１ｉと、第二暗号文生成部２４２が出力したｎ個の第二暗号文Ｃ２ｉと、第三暗号文生成部２４３が出力したｎ個の第三暗号文Ｃ３ｉ）と、暗号文検証文生成部２４５が出力した暗号文検証文ＣＣとを入力する。
暗号文結合部２４６は、ＣＰＵ９１１などの処理装置を用いて、入力したｎ個の第一暗号文Ｃ１ｉと、ｎ個の第二暗号文Ｃ２ｉと、ｎ個の第三暗号文Ｃ３ｉと、暗号文検証文ＣＣとに基づいて、１つの鍵暗号文Ｃを生成する。例えば、暗号文結合部２４６は、ＣＰＵ９１１などの処理装置を用いて、入力したｎ個の第一暗号文Ｃ１ｉと、ｎ個の第二暗号文Ｃ２ｉと、ｎ個の第三暗号文Ｃ３ｉと、暗号文検証文ＣＣとを結合して、１つの鍵暗号文Ｃとする。【００８５】
暗号文結合部２４６が結合した１つの鍵暗号文Ｃは、ｎ人の受信者に対応する暗号文受信装置すべてに対して等しく送信されるものである。
なお、結合した１つの鍵暗号文Ｃのうち、どの部分がどの受信者に対応する部分であるかは、あらかじめ定められた結合の順序などによって表わされ、暗号文受信装置３０１〜３０３は、鍵暗号文Ｃから、自分に対応する部分を容易に抽出できるものとする。
暗号文結合部２４６は、ＣＰＵ９１１などの処理装置を用いて、生成した１つの鍵暗号文Ｃを出力する。【００８６】
データ入力部２５１は、ＣＰＵ９１１などの処理装置を用いて、平文データ７１０を入力する。
データ入力部２５１は、ＣＰＵ９１１などの処理装置を用いて、入力した平文データ７１０を出力する。【００８７】
データ暗号化部２５２は、ＣＰＵ９１１などの処理装置を用いて、データ入力部２５１が出力した平文データ７１０と、セッション鍵生成部２２１が出力したセッション鍵Ｋとを入力する。
データ暗号化部２５２は、ＣＰＵ９１１などの処理装置を用いて、入力した平文データ７１０を、入力したセッション鍵Ｋにより暗号化し、暗号化データとする。
データ暗号化部２５２は、ＣＰＵ９１１などの処理装置を用いて、生成した暗号化データを出力する。【００８８】
暗号文通知部２６１は、ＣＰＵ９１１などの処理装置を用いて、暗号文結合部２４６が出力した１つの鍵暗号文Ｃと、データ暗号化部２５２が出力した暗号化データとを入力する。
暗号文通知部２６１は、ＣＰＵ９１１などの処理装置を用いて、入力した鍵暗号文Ｃと、暗号化データ７２２とを含む通知データ７２０を生成する。
暗号文通知部２６１は、ＣＰＵ９１１などの処理装置を用いて、生成した通知データ７２０を、通知相手である複数の暗号文受信装置に通知する。
通知データ７２０は、例えば、メール通信において、受信者を複数指定して送信することにより、複数の暗号文受信装置に通知される。通知データ７２０は、受信者ごとに異なるものではなく、すべての受信者に共通である。【００８９】
図６は、この実施の形態における暗号文受信装置３０１の機能ブロックの構成の一例を示すブロック構成図である。
暗号文受信装置３０１は、暗号文受信部３５１と、鍵復号部３９０と、データ復号部３５２とを有する。
なお、暗号文受信装置３０２、暗号文受信装置３０３のブロック構成も暗号文受信装置３０１と同様である。【００９０】
暗号文受信部３５１は、ＣＰＵ９１１などの処理装置を用いて、暗号文生成装置２００が通知した通知データ７２０を受信する。
暗号文受信部３５１は、ＣＰＵ９１１などの処理装置を用いて、受信した通知データ７２０に含まれる１つの鍵暗号文Ｃと、暗号化データとを取得する。
暗号文受信部３５１は、ＣＰＵ９１１などの処理装置を用いて、取得した１つの鍵暗号文Ｃと、暗号化データとを出力する。【００９１】
鍵復号部３９０は、暗号文受信部３５１が出力した鍵暗号文Ｃを復号し、暗号化データを復号するためのセッション鍵を取得する。
鍵復号部３９０は、公開パラメータ記憶部３１０と、秘密鍵記憶部３２３と、暗号文受信部３５１と、暗号文分解部３４６と、検証ハッシュ値算出部３４４と、暗号文検証部３４５と、暗号文復号部３４１と、データ復号部３５２とを有する。【００９２】
公開パラメータ記憶部３１０は、磁気ディスク装置９２０などの記憶装置を用いて、暗号パラメータ生成装置１００が公開した公開暗号パラメータを記憶する。【００９３】
秘密鍵記憶部３２３は、磁気ディスク装置９２０などの記憶装置を用いて、暗号パラメータ生成装置１００が通知した秘密鍵を記憶する。【００９４】
暗号文分解部３４６は、ＣＰＵ９１１などの処理装置を用いて、暗号文受信部３５１が出力した１つの鍵暗号文Ｃを入力する。
暗号文分解部３４６は、ＣＰＵ９１１などの処理装置を用いて、入力した１つの鍵暗号文Ｃを分解し、ｎ個の暗号文主文ＣＢｉ（すなわち、ｎ個の第一暗号文Ｃ１ｉと、ｎ個の第二暗号文Ｃ２ｉと、ｎ個の第三暗号文Ｃ３ｉ）と、暗号文検証文ＣＣとを取得する。【００９５】
以下、ｎ人の受信者に対応するｎ個の暗号文主文ＣＢｉのうち、暗号文受信装置３０１が対応する受信者に対応する第二暗号文を、対応暗号文主文ＣＢＩＤと呼ぶ。第一暗号文、第二暗号文、第三暗号文、暗号文検証文についても同様である。【００９６】
暗号文分解部３４６は、ＣＰＵ９１１などの処理装置を用いて、ｎ個の暗号文主文ＣＢｉのなかから、対応暗号文主文ＣＢＩＤ（すなわち、対応第一暗号文Ｃ１ＩＤと、対応第二暗号文Ｃ２ＩＤと、対応第三暗号文Ｃ３ＩＤ）を取得する。
同様に、暗号文分解部３４６は、ＣＰＵ９１１などの処理装置を用いて、対応暗号文検証文ＣＣＩＤを取得する。
なお、暗号文検証文が受信者に関わらず共通の１つの暗号文検証文である場合には、暗号文分解部３４６が取得する対応暗号文検証文ＣＣＩＤは、暗号文検証文そのものである。【００９７】
暗号文分解部３４６は、ＣＰＵ９１１などの処理装置を用いて、取得したｎ個の暗号文主文ＣＢｉと、対応暗号文主文ＣＢＩＤと、対応暗号文検証文ＣＣＩＤとを出力する。
なお、ｎ個の暗号文主文ＣＢｉのなかに、どの暗号文主文がどのＩＤに対応する対応暗号文主文ＣＢＩＤであるかを示す情報が含まれている場合には、暗号文分解部３４６が、対応暗号文主文ＣＢＩＤを取得しなくてもよい。【００９８】
検証ハッシュ値算出部３４４は、ＣＰＵ９１１などの処理装置を用いて、暗号文分解部３４６が出力したｎ個の暗号文主文ＣＢｉと、公開パラメータ記憶部３１０が記憶した公開暗号パラメータとを入力する。
検証ハッシュ値算出部３４４は、ＣＰＵ９１１などの処理装置を用いて、暗号文生成装置２００のハッシュ値算出部２４４がハッシュ値Ｈを算出したのと同様の方式により、検証ハッシュ値Ｈ’を算出する。
検証ハッシュ値算出部３４４は、ＣＰＵ９１１などの処理装置を用いて、算出した検証ハッシュ値Ｈ’を出力する。【００９９】
検証ハッシュ値算出部３４４は、入力したｎ個の暗号文主文ＣＢｉに基づいて、ハッシュ値算出部２４４と同様の方式により、１つの検証ハッシュ値Ｈ’を算出する。
例えば、検証ハッシュ値算出部３４４は、入力したｎ個の暗号文主文ＣＢｉをすべて結合した検証結合暗号文に基づいて、検証ハッシュ値Ｈ’を算出する。【０１００】
暗号文検証部３４５は、ＣＰＵ９１１などの処理装置を用いて、暗号文分解部３４６が出力した対応暗号文主文ＣＢＩＤと、対応暗号文検証文ＣＣＩＤと、検証ハッシュ値算出部３４４が出力した検証ハッシュ値Ｈ’と、公開パラメータ記憶部３１０が記憶した公開暗号パラメータと、秘密鍵記憶部３２３が記憶した秘密鍵とを入力する。
暗号文検証部３４５は、ＣＰＵ９１１などの処理装置を用いて、入力した情報に基づいて、検証情報を生成する。【０１０１】
暗号文検証部３４５は、ＣＰＵ９１１などの処理装置を用いて、生成した検証情報と、入力した対応暗号文検証文ＣＣＩＤとに基づいて、暗号文受信部３５１が受信した１つの鍵暗号文Ｃに整合性があるか否かを判定する。
例えば、暗号文分解部３４６は、生成した検証情報と、入力した対応暗号文検証文ＣＣＩＤとが一致する場合に、暗号文受信部３５１が受信した１つの鍵暗号文Ｃに整合性があると判定する。
あるいは、暗号文検証部３４５は、入力した対応暗号文検証文ＣＣＩＤ（及び公開暗号パラメータや秘密鍵）に基づいて、もう一つの検証情報を生成し、生成した２つの検証情報が一致する場合に、暗号文受信部３５１が受信した１つの鍵暗号文Ｃに整合性があると判定してもよい。【０１０２】
暗号文検証部３４５は、ＣＰＵ９１１などの処理装置を用いて、判定した判定結果を表わす情報を出力する。【０１０３】
暗号文復号部３４１は、ＣＰＵ９１１などの処理装置を用いて、暗号文分解部３４６が出力した判定結果を表わす情報と、暗号文分解部３４６が出力した対応暗号文主文ＣＢＩＤと、公開パラメータ記憶部３１０が記憶した公開暗号パラメータと、秘密鍵記憶部３２３が記憶した秘密鍵とを入力する。
暗号文復号部３４１は、ＣＰＵ９１１などの処理装置を用いて、入力した情報に基づいて、暗号文受信部３５１が受信した１つの鍵暗号文Ｃに整合性があると暗号文検証部３４５が判定した場合に、平文Ｍを復元する。
暗号文復号部３４１は、ＣＰＵ９１１などの処理装置を用いて、復元した平文Ｍを出力する。【０１０４】
データ復号部３５２は、ＣＰＵ９１１などの処理装置を用いて、暗号文復号部３４１が出力した平文Ｍと、暗号文受信部３５１が出力した暗号化データとを入力し、入力した平文Ｍを、セッション鍵Ｋ’とする。
データ復号部３５２は、ＣＰＵ９１１などの処理装置を用いて、入力した暗号化データを、入力したセッション鍵Ｋ’により復号して、復号データとする。
データ復号部３５２は、ＣＰＵ９１１などの処理装置を用いて、復号した復号データを出力する。【０１０５】
次に、動作について説明する。【０１０６】
図７は、この実施の形態における暗号パラメータ生成装置１００が公開暗号パラメータを設定するパラメータ設定処理の流れの一例を示すフローチャート図である。【０１０７】
秘密情報生成工程Ｓ１１において、秘密情報生成部１１２は、ＣＰＵ９１１などの処理装置を用いて、群パラメータ記憶部１１１が記憶した群パラメータを入力する。
秘密情報生成部１１２は、ＣＰＵ９１１などの処理装置を用いて、入力した群パラメータに基づいて、秘密情報をランダムに生成する。
秘密情報生成部１１２は、ＣＰＵ９１１などの処理装置を用いて、生成した秘密情報を出力する。
秘密情報記憶部１２１は、ＣＰＵ９１１などの処理装置を用いて、秘密情報生成部１１２が出力した秘密情報を入力する。
秘密情報記憶部１２１は、磁気ディスク装置９２０などの記憶装置を用いて、入力した秘密情報を記憶する。【０１０８】
暗号パラメータ生成工程Ｓ１２において、公開パラメータ生成部１１３は、ＣＰＵ９１１などの処理装置を用いて、群パラメータ記憶部１１１が記憶した群パラメータを入力する。
公開パラメータ生成部１１３は、ＣＰＵ９１１などの処理装置を用いて、秘密情報生成工程Ｓ１１で秘密情報生成部１１２が出力した秘密情報を入力する。
公開パラメータ生成部１１３は、ＣＰＵ９１１などの処理装置を用いて、入力した群パラメータと、入力した秘密情報とに基づいて、公開暗号パラメータを生成する。
公開パラメータ生成部１１３は、ＣＰＵ９１１などの処理装置を用いて、生成した公開暗号パラメータを出力する。
パラメータ記憶部１２２は、ＣＰＵ９１１などの処理装置を用いて、公開パラメータ生成部１１３が出力した公開暗号パラメータを入力する。
パラメータ記憶部１２２は、磁気ディスク装置９２０などの記憶装置を用いて、入力した公開暗号パラメータを記憶する。【０１０９】
暗号パラメータ公開工程Ｓ１３において、公開パラメータ公開部１１４は、ＣＰＵ９１１などの処理装置を用いて、暗号パラメータ生成工程Ｓ１２で公開パラメータ生成部１１３が出力した公開暗号パラメータを入力する。
公開パラメータ公開部１１４は、ＣＰＵ９１１などの処理装置を用いて、入力した公開暗号パラメータを公開する。
公開パラメータ公開部１１４が公開した公開暗号パラメータは、暗号文生成装置２００及び暗号文受信装置３０１〜３０３が取得し、暗号パラメータ記憶部２１０及び公開パラメータ記憶部３１０が磁気ディスク装置９２０などの記憶装置を用いて記憶する。【０１１０】
パラメータ設定処理は、ＩＤベース暗号通信システム８００の運用開始前に１回だけ実行すればよい処理である。しかし、暗号通信の安全を保つため、定期的にパラメータ設定処理を実行して、公開暗号パラメータを変えてもよいし、暗号強度を高めるため、使用する乗法群を変更して、パラメータ設定処理を実行してもよい。【０１１１】
図８は、この実施の形態における暗号パラメータ生成装置１００が秘密鍵を設定する秘密鍵設定処理の流れの一例を示すフローチャート図である。【０１１２】
識別入力工程Ｓ２１において、識別情報入力部１３１は、ＣＰＵ９１１などの処理装置を用いて、受信者識別情報ＩＤを入力する。
識別情報入力部１３１は、ＣＰＵ９１１などの処理装置を用いて、入力した受信者識別情報ＩＤを出力する。【０１１３】
秘密鍵生成工程Ｓ２２において、秘密鍵生成部１３２は、ＣＰＵ９１１などの処理装置を用いて、Ｓ２１で識別情報入力部１３１が出力した受信者識別情報ＩＤを入力する。
秘密鍵生成部１３２は、ＣＰＵ９１１などの処理装置を用いて、秘密情報記憶部１２１が記憶した秘密情報を入力する。
秘密鍵生成部１３２は、ＣＰＵ９１１などの処理装置を用いて、パラメータ記憶部１２２が記憶した公開暗号パラメータを入力する。
秘密鍵生成部１３２は、ＣＰＵ９１１などの処理装置を用いて、入力した秘密情報と、入力した公開暗号パラメータと、入力した受信者識別情報ＩＤとに基づいて、秘密鍵ｄＩＤを生成する。
秘密鍵生成部１３２は、ＣＰＵ９１１などの処理装置を用いて、生成した秘密鍵ｄＩＤを出力する。【０１１４】
秘密鍵通知工程Ｓ２３において、秘密鍵通知部１３３は、ＣＰＵ９１１などの処理装置を用いて、Ｓ２１で識別情報入力部１３１が出力した受信者識別情報ＩＤを入力する。
秘密鍵通知部１３３は、ＣＰＵ９１１などの処理装置を用いて、Ｓ２２で秘密鍵生成部１３２が出力した秘密鍵ｄＩＤを入力する。
秘密鍵通知部１３３は、ＣＰＵ９１１などの処理装置を用いて、入力した受信者識別情報ＩＤによって識別される受信者に対応する暗号文受信装置に対して、入力した秘密鍵ｄＩＤを秘密裏に通知する。
秘密鍵通知部１３３が通知した秘密鍵ｄＩＤは、通知された暗号文受信装置が取得し、秘密鍵記憶部３２３が磁気ディスク装置９２０などの記憶装置を用いて記憶する。【０１１５】
秘密鍵設定処理は、ＩＤベース暗号通信システム８００内の暗号文受信装置それぞれに対応する秘密鍵を設定する処理である。暗号パラメータ生成装置１００は、あらかじめ秘密鍵を生成し、ＩＤベース暗号通信システム８００内のすべての暗号文受信装置３０１〜３０３に対して秘密鍵を通知しておいてよいし、暗号文受信装置３０１〜３０３からの要求に応じて、実行してもよい。秘密鍵設定処理の実行は、暗号文生成装置２００が通知データ７２０を通知した後であってもよい。【０１１６】
図９は、この実施の形態における暗号文生成装置２００が暗号文を生成する暗号文生成処理の流れの一例を示すフローチャート図である。【０１１７】
平文データ入力工程Ｓ３１において、データ入力部２５１は、ＣＰＵ９１１などの処理装置を用いて、ｎ個の暗号文受信装置に対して通知すべき平文データを入力する。
データ入力部２５１は、ＣＰＵ９１１などの処理装置を用いて、入力した平文データを出力する。【０１１８】
受信者識別入力工程Ｓ３２において、受信者識別入力部２３２は、ＣＰＵ９１１などの処理装置を用いて、平文データ入力工程Ｓ３１でデータ入力部２５１が入力した平文データを通知すべきｎ個の暗号文受信装置に対応するｎ人の受信者をそれぞれ識別するｎ個の受信者識別情報ＩＤｉ（ｉは、１以上ｎ以下の整数）を入力する。
受信者識別入力部２３２は、ＣＰＵ９１１などの処理装置を用いて、入力したｎ個の受信者識別情報ＩＤｉを出力する。【０１１９】
セッション鍵生成工程Ｓ３３において、セッション鍵生成部２２１は、ＣＰＵ９１１などの処理装置を用いて、セッション鍵Ｋをランダムに生成する。
セッション鍵生成部２２１は、ＣＰＵ９１１などの処理装置を用いて、生成したセッション鍵Ｋを出力する。
平文入力部２３１は、ＣＰＵ９１１などの処理装置を用いて、セッション鍵生成部２２１が出力したセッション鍵Ｋを入力する。
平文入力部２３１は、ＣＰＵ９１１などの処理装置を用いて、入力したセッション鍵Ｋを、平文Ｍとして出力する。【０１２０】
乱数生成工程Ｓ３４において、乱数生成部２２２は、ＣＰＵ９１１などの処理装置を用いて、ｎ人の受信者にそれぞれ対応するｎ個の乱数をランダムに生成する。
乱数生成部２２２は、ＣＰＵ９１１などの処理装置を用いて、生成したｎ個の乱数を表わす情報を出力する。【０１２１】
第一暗号文生成工程Ｓ３５において、第一暗号文生成部２４１は、ＣＰＵ９１１などの処理装置を用いて、暗号パラメータ記憶部２１０が記憶した公開暗号パラメータを入力する。
第一暗号文生成部２４１は、ＣＰＵ９１１などの処理装置を用いて、セッション鍵生成工程Ｓ３３で平文入力部２３１が出力した平文Ｍを入力する。
第一暗号文生成部２４１は、ＣＰＵ９１１などの処理装置を用いて、乱数生成工程Ｓ３４で乱数生成部２２２が出力したｎ個の乱数を表わす情報を入力する。
第一暗号文生成部２４１は、ＣＰＵ９１１などの処理装置を用いて、入力した情報に基づいて、ｎ人の受信者に対応するｎ個の第一暗号文Ｃ１ｉ（ｉは、１以上ｎ以下の整数）を生成する。
第一暗号文生成部２４１は、ＣＰＵ９１１などの処理装置を用いて、生成したｎ個の第一暗号文Ｃ１ｉを出力する。【０１２２】
第二暗号文生成工程Ｓ３６において、第二暗号文生成部２４２は、ＣＰＵ９１１などの処理装置を用いて、暗号パラメータ記憶部２１０が記憶した公開暗号パラメータを入力する。
第二暗号文生成部２４２は、ＣＰＵ９１１などの処理装置を用いて、受信者識別入力工程Ｓ３２で受信者識別入力部２３２が出力したｎ個の受信者識別情報ＩＤｉを入力する。
第二暗号文生成部２４２は、ＣＰＵ９１１などの処理装置を用いて、乱数生成工程Ｓ３４で乱数生成部２２２が出力したｎ個の乱数を表わす情報を入力する。
第二暗号文生成部２４２は、ＣＰＵ９１１などの処理装置を用いて、入力した情報に基づいて、ｎ人の受信者にそれぞれ対応するｎ個の第二暗号文Ｃ２ｉ（ｉは、１以上ｎ以下の整数）を生成する。
第二暗号文生成部２４２は、ＣＰＵ９１１などの処理装置を用いて、生成したｎ個の第二暗号文Ｃ２ｉを出力する。【０１２３】
第三暗号文生成工程Ｓ３７において、第三暗号文生成部２４３は、ＣＰＵ９１１などの処理装置を用いて、暗号パラメータ記憶部２１０が記憶した公開暗号パラメータを入力する。
第三暗号文生成部２４３は、ＣＰＵ９１１などの処理装置を用いて、乱数生成工程Ｓ３４で乱数生成部２２２が出力したｎ個の乱数を表わす情報を入力する。
第三暗号文生成部２４３は、ＣＰＵ９１１などの処理装置を用いて、入力した情報に基づいて、ｎ人の受信者にそれぞれ対応するｎ個の第三暗号文Ｃ３ｉ（ｉは、１以上ｎ以下の整数）を生成する。
第三暗号文生成部２４３は、ＣＰＵ９１１などの処理装置を用いて、生成したｎ個の第三暗号文Ｃ３ｉを出力する。【０１２４】
ハッシュ値算出工程Ｓ３８において、ハッシュ値算出部２４４は、ＣＰＵ９１１などの処理装置を用いて、暗号パラメータ記憶部２１０が記憶した公開暗号パラメータを入力する。
ハッシュ値算出部２４４は、ＣＰＵ９１１などの処理装置を用いて、第一暗号文生成工程Ｓ３５で第一暗号文生成部２４１が出力したｎ個の第一暗号文Ｃ１ｉを入力する。
ハッシュ値算出部２４４は、ＣＰＵ９１１などの処理装置を用いて、第二暗号文生成工程Ｓ３６で第二暗号文生成部２４２が出力したｎ個の第二暗号文Ｃ２ｉを入力する。
ハッシュ値算出部２４４は、ＣＰＵ９１１などの処理装置を用いて、第三暗号文生成工程Ｓ３７で第三暗号文生成部２４３が出力したｎ個の第三暗号文Ｃ３ｉを入力する。
ハッシュ値算出部２４４は、ＣＰＵ９１１などの処理装置を用いて、入力した情報に基づいて、ハッシュ値Ｈを算出する。
ハッシュ値算出部２４４は、ＣＰＵ９１１などの処理装置を用いて、算出したハッシュ値Ｈを出力する。【０１２５】
暗号文検証文生成工程Ｓ３９において、暗号文検証文生成部２４５は、ＣＰＵ９１１などの処理装置を用いて、暗号パラメータ記憶部２１０が記憶した公開暗号パラメータを入力する。
暗号文検証文生成部２４５は、ＣＰＵ９１１などの処理装置を用いて、乱数生成工程Ｓ３４で乱数生成部２２２が出力したｎ個の乱数を表わす情報を入力する。
暗号文検証文生成部２４５は、ＣＰＵ９１１などの処理装置を用いて、ハッシュ値算出工程Ｓ３８でハッシュ値算出部２４４が出力したハッシュ値Ｈを入力する。
暗号文検証文生成部２４５は、ＣＰＵ９１１などの処理装置を用いて、入力した情報に基づいて、ｎ人の受信者に対応するｎ個の暗号文検証文ＣＣｉ（ｉは、１以上ｎ以下の整数）を生成する。
暗号文検証文生成部２４５は、ＣＰＵ９１１などの処理装置を用いて、生成したｎ個の暗号文検証文ＣＣｉを出力する。【０１２６】
暗号文結合工程Ｓ４０において、暗号文結合部２４６は、ＣＰＵ９１１などの処理装置を用いて、第一暗号文生成工程Ｓ３５で第一暗号文生成部２４１が出力したｎ個の第一暗号文Ｃ１ｉを入力する。
暗号文結合部２４６は、ＣＰＵ９１１などの処理装置を用いて、第二暗号文生成工程Ｓ３６で第二暗号文生成部２４２が出力したｎ個の第二暗号文Ｃ２ｉを入力する。
暗号文結合部２４６は、ＣＰＵ９１１などの処理装置を用いて、第三暗号文生成工程Ｓ３７で第三暗号文生成部２４３が出力したｎ個の第三暗号文Ｃ３ｉを入力する。
暗号文結合部２４６は、ＣＰＵ９１１などの処理装置を用いて、暗号文検証文生成工程Ｓ３９で暗号文検証文生成部２４５が出力したｎ個の暗号文検証文ＣＣｉを入力する。
暗号文結合部２４６は、ＣＰＵ９１１などの処理装置を用いて、入力したｎ個の第一暗号文Ｃ１ｉと、入力したｎ個の第二暗号文Ｃ２ｉと、入力したｎ個の第三暗号文Ｃ３ｉと、入力したｎ個の暗号文検証文ＣＣｉとを結合して、１つの鍵暗号文Ｃとする。
暗号文結合部２４６は、ＣＰＵ９１１などの処理装置を用いて、結合した１つの鍵暗号文Ｃを出力する。【０１２７】
データ暗号化工程Ｓ４１において、データ暗号化部２５２は、ＣＰＵ９１１などの処理装置を用いて、平文データ入力工程Ｓ３１でデータ入力部２５１が出力した平文データを入力する。
データ暗号化部２５２は、ＣＰＵ９１１などの処理装置を用いて、セッション鍵生成工程Ｓ３３でセッション鍵生成部２２１が出力したセッション鍵Ｋを入力する。
データ暗号化部２５２は、ＣＰＵ９１１などの処理装置を用いて、入力したセッション鍵Ｋにより、入力した平文データを暗号化して、暗号化データとする。
データ暗号化部２５２は、ＣＰＵ９１１などの処理装置を用いて、暗号化した暗号化データを出力する。【０１２８】
暗号文通知工程Ｓ４２において、暗号文通知部２６１は、ＣＰＵ９１１などの処理装置を用いて、受信者識別入力工程Ｓ３２で受信者識別入力部２３２が出力したｎ個の受信者識別情報ＩＤｉを入力する。
暗号文通知部２６１は、ＣＰＵ９１１などの処理装置を用いて、暗号文結合工程Ｓ４０で暗号文結合部２４６が出力した１つの鍵暗号文Ｃを入力する。
暗号文通知部２６１は、ＣＰＵ９１１などの処理装置を用いて、データ暗号化工程Ｓ４１でデータ暗号化部２５２が出力した暗号化データを入力する。
暗号文通知部２６１は、ＣＰＵ９１１などの処理装置を用いて、入力した１つの鍵暗号文Ｃと、入力した暗号化データとを含むデータを生成して、通知データとする。
暗号文通知部２６１は、ＣＰＵ９１１などの処理装置を用いて、入力したｎ個の受信者識別情報ＩＤｉによって識別される受信者に対応する暗号文受信装置に対して、生成した通知データを通知する。【０１２９】
図１０は、この実施の形態における暗号文受信装置３０１〜３０３が暗号文を受信する暗号文受信処理の流れの一例を示すフローチャート図である。【０１３０】
通知データ受信工程Ｓ５１において、暗号文受信部３５１は、ＣＰＵ９１１などの処理装置を用いて、暗号文生成装置２００が通知した通知データを受信する。
暗号文受信部３５１は、ＣＰＵ９１１などの処理装置を用いて、受信した通知データに含まれる１つの鍵暗号文Ｃと、暗号化データとを取得する。
暗号文受信部３５１は、ＣＰＵ９１１などの処理装置を用いて、取得した１つの鍵暗号文Ｃと、暗号化データとを出力する。【０１３１】
暗号文分解工程Ｓ５２において、暗号文分解部３４６は、ＣＰＵ９１１などの処理装置を用いて、通知データ受信工程Ｓ５１で暗号文受信部３５１が出力した１つの鍵暗号文Ｃを入力する。
暗号文分解部３４６は、ＣＰＵ９１１などの処理装置を用いて、入力した１つの鍵暗号文Ｃに基づいて、ｎ個の第一暗号文Ｃ１ｉと、ｎ個の第二暗号文Ｃ２ｉと、ｎ個の第三暗号文Ｃ３ｉと、ｎ個の暗号文検証文ＣＣｉとを取得する。
暗号文分解部３４６は、ＣＰＵ９１１などの処理装置を用いて、取得したｎ個の第一暗号文Ｃ１ｉと、ｎ個の第二暗号文Ｃ２ｉと、ｎ個の第三暗号文Ｃ３ｉと、ｎ個の暗号文検証文ＣＣｉとを出力する。【０１３２】
また、暗号文分解部３４６は、ＣＰＵ９１１などの処理装置を用いて、対応第一暗号文Ｃ１ＩＤと、対応第二暗号文Ｃ２ＩＤと、対応第三暗号文Ｃ３ＩＤと、対応暗号文検証文ＣＣＩＤとを取得する。
暗号文分解部３４６は、ＣＰＵ９１１などの処理装置を用いて、取得した対応第一暗号文Ｃ１ＩＤと、対応第二暗号文Ｃ２ＩＤと、対応第三暗号文Ｃ３ＩＤと、対応暗号文検証文ＣＣＩＤとを出力する。【０１３３】
検証ハッシュ値算出工程Ｓ５３において、検証ハッシュ値算出部３４４は、ＣＰＵ９１１などの処理装置を用いて、公開パラメータ記憶部３１０が記憶した公開暗号パラメータを入力する。
検証ハッシュ値算出部３４４は、ＣＰＵ９１１などの処理装置を用いて、暗号文分解工程Ｓ５２で暗号文分解部３４６が出力したｎ個の第一暗号文Ｃ１ｉと、ｎ個の第二暗号文Ｃ２ｉと、ｎ個の第三暗号文Ｃ３ｉとを入力する。
検証ハッシュ値算出部３４４は、ＣＰＵ９１１などの処理装置を用いて、入力した情報に基づいて、検証ハッシュ値Ｈ’を算出する。
検証ハッシュ値算出部３４４は、ＣＰＵ９１１などの処理装置を用いて、算出した検証ハッシュ値Ｈ’を出力する。【０１３４】
暗号文検証工程Ｓ５４において、暗号文検証部３４５は、ＣＰＵ９１１などの処理装置を用いて、公開パラメータ記憶部３１０が記憶した公開暗号パラメータを入力する。
暗号文検証部３４５は、ＣＰＵ９１１などの処理装置を用いて、秘密鍵記憶部３２３が記憶した秘密鍵を入力する。
暗号文検証部３４５は、ＣＰＵ９１１などの処理装置を用いて、暗号文分解工程Ｓ５２で暗号文分解部３４６が出力した対応第二暗号文Ｃ２ＩＤと、対応第三暗号文Ｃ３ＩＤと、対応暗号文検証文ＣＣＩＤとを入力する。
暗号文検証部３４５は、ＣＰＵ９１１などの処理装置を用いて、検証ハッシュ値算出工程Ｓ５３で検証ハッシュ値算出部３４４が出力した検証ハッシュ値Ｈ’を入力する。
暗号文検証部３４５は、ＣＰＵ９１１などの処理装置を用いて、入力した情報に基づいて、検証情報を生成する。
暗号文検証部３４５は、ＣＰＵ９１１などの処理装置を用いて、生成した検証情報と、入力した対応暗号文検証文ＣＣＩＤとに基づいて、暗号文受信部３５１が受信した１つの鍵暗号文Ｃに整合性があるか否かを判定する。
整合性があると判定した場合、暗号文復号工程Ｓ５５へ進む。
整合性がないと判定した場合、暗号文受信処理を終了する。【０１３５】
暗号文復号工程Ｓ５５において、暗号文復号部３４１は、ＣＰＵ９１１などの処理装置を用いて、公開パラメータ記憶部３１０が記憶した公開暗号パラメータを入力する。
暗号文復号部３４１は、ＣＰＵ９１１などの処理装置を用いて、秘密鍵記憶部３２３が記憶した秘密鍵を入力する。
暗号文復号部３４１は、ＣＰＵ９１１などの処理装置を用いて、暗号文分解工程Ｓ５２で暗号文分解部３４６が出力した対応第一暗号文Ｃ１ＩＤと、対応第二暗号文Ｃ２ＩＤと、対応第三暗号文Ｃ３ＩＤとを入力する。
暗号文復号部３４１は、ＣＰＵ９１１などの処理装置を用いて、入力した情報に基づいて、平文Ｍを復元する。
暗号文復号部３４１は、ＣＰＵ９１１などの処理装置を用いて、復元した平文Ｍを出力する。【０１３６】
データ復号工程Ｓ５６において、データ復号部３５２は、ＣＰＵ９１１などの処理装置を用いて、通知データ受信工程Ｓ５１で暗号文受信部３５１が出力した暗号化データを入力する。
データ復号部３５２は、ＣＰＵ９１１などの処理装置を用いて、暗号文復号工程Ｓ５５で暗号文復号部３４１が出力した平文Ｍを、セッション鍵Ｋ’として入力する。
データ復号部３５２は、ＣＰＵ９１１などの処理装置を用いて、入力したセッション鍵Ｋ’により、入力した暗号化データを復号して、復号データとする。
データ復号部３５２は、ＣＰＵ９１１などの処理装置を用いて、復号した復号データを出力する。【０１３７】
以上のようにして、平文データを通知したい受信者だけが、セッション鍵Ｋを復元できるので、暗号化データを復号できる。【０１３８】
以下、この実施の形態におけるＩＤベース暗号通信システム８００の安全性について議論する。【０１３９】
まず、ＩＤベース暗号方式の複数ユーザにおける安全性として、ＭＵ−ＩＮＤ−ＩＤ−ＣＣＡ２安全性を以下のように定義する。
ここで、「ＭＵ−ＩＮＤ−ＩＤ−ＣＣＡ２安全性」とは、複数ユーザ（Ｍｕｌｔｉ−Ｕｓｅｒ）において、ターゲットＩＤを適応的に選択可能な攻撃者に対する安全性を意味する。【０１４０】
暗号システムΠは、ＰＫＧ（Ｐｒｉｖａｔｅ  Ｋｅｙ  Ｇｅｎｅｒａｔｏｒ）用鍵生成機能Ｓと、秘密鍵導出機能Ｘと、暗号化機能Ｃと、復号機能Ｄとを有するＩＤベース暗号通信システムである。【０１４１】
ＰＫＧ用鍵生成機能Ｓは、初期情報Γを入力とし、ＰＫＧ用マスタ鍵ｍｓｋと、共通パラメータｐａｒａｍｓとを生成する。
ＰＫＧ用鍵生成機能Ｓは、ＩＤベース暗号通信システム８００における公開暗号パラメータ生成装置１００のパラメータ設定部１１０の機能に相当する。初期情報Γは、群パラメータに相当する。ＰＫＧ用マスタ鍵ｍｓｋは、秘密情報に相当する。共通パラメータｐａｒａｍｓは、公開暗号パラメータに相当する。【０１４２】
秘密鍵導出機能Ｘは、ユーザの識別情報ＩＤと、ＰＫＧ用マスタ鍵ｍｓｋとを入力とし、秘密鍵ｄＩＤを出力する。
秘密鍵導出機能Ｘは、ＩＤベース暗号通信システム８００における暗号パラメータ生成装置１００の秘密鍵設定部１３０の機能に相当する。ユーザの識別情報ＩＤは、受信者識別情報に相当する。【０１４３】
暗号化機能Ｅは、ユーザの識別情報ＩＤと、共通パラメータｐａｒａｍｓと、メッセージＭとから、暗号文Ｃを生成する。暗号文Ｃは、鍵暗号文Ｃに相当する。
暗号化機能Ｅは、ＩＤベース暗号通信システム８００における暗号文生成装置２００の機能に相当する。メッセージＭは、平文Ｍ（＝セッション鍵Ｋ）に相当する。【０１４４】
復号機能Ｄは、秘密鍵ｄＩＤと、共通パラメータｐａｒａｍｓと、暗号文Ｃとを入力として、メッセージを復号する。復号機能Ｄは、復号したメッセージを返す。なお、復号に失敗した場合には、メッセージではなく「拒絶」を返す。
復号機能Ｄは、ＩＤベース暗号通信システム８００における暗号文受信装置３０１〜３０３の機能に相当する。【０１４５】
以上のように構成された暗号システムΠに対する攻撃者をＡとする。
また、ｎ＝ｎ（ｋ）をｋの多項式とする。【０１４６】
攻撃者Ａは、暗号化オラクルＯＥを利用できる。
暗号化オラクルＯＥは、あらかじめ０か１かのいずれかをランダムに選択してｂとしておく。
暗号化オラクルＯＥは、ユーザの識別情報ＩＤ＊と、２つのメッセージＭ０＊及びＭ１＊とを入力する。
暗号化オラクルＯＥは、あらかじめ選択してあるｂに基づいて、メッセージＭ０＊及びメッセージＭ１＊のうちから一方を選択し、暗号化機能Ｅにより、入力したユーザの識別情報ＩＤ＊と、共通パラメータｐａｒａｍｓと、選択したメッセージとに基づいて、暗号文Ｃ＊を生成し、回答する。
攻撃者Ａは、異なるユーザの識別情報ＩＤ＊について、暗号化オラクルＯＥを呼び出すことができる。ただし、攻撃者Ａが、暗号化オラクルＯＥを呼び出す際に、暗号オラクルＯＥに入力できるユーザの識別情報ＩＤ＊の個数は、ｎ以下とする。
また、攻撃者Ａは、同じユーザの識別情報ＩＤ＊について、異なるメッセージＭ０＊及びＭ１＊を入力して暗号化オラクルＯＥを呼び出すこともできる。
このように、攻撃者Ａは、暗号化オラクルＯＥを複数回呼び出す。暗号化オラクルＯＥは、入力した２つのメッセージのうち、常に同じ方（前者なら常に前者、後者なら常に後者）を選択する。【０１４７】
また、攻撃者Ａは、鍵導出オラクルＯＸを利用できる。
鍵導出オラクルＯＸは、ユーザの識別情報ＩＤを入力する。
鍵導出オラクルＯＸは、鍵導出機能Ｘにより、攻撃者Ａには知らされていないＰＫＧ用マスタ鍵ｍｓｋと、入力したユーザの識別情報ＩＤとに基づいて、秘密鍵ｄＩＤを生成し、回答する。【０１４８】
また、攻撃者Ａは、復号オラクルＯＤを利用できる。
復号オラクルＯＤは、ユーザの識別情報ＩＤと、暗号文Ｃとを入力する。
復号オラクルＯＤは、鍵導出機能Ｘにより、攻撃者Ａには知らされていないＰＫＧ用マスタ鍵ｍｓｋと、入力したユーザの識別情報ＩＤとに基づいて、秘密鍵ｄＩＤを生成する。
復号オラクルＯＤは、復号機能Ｅにより、生成した秘密鍵ｄＩＤと、共通パラメータｐａｒａｍｓと、入力した暗号文Ｃとに基づいて、メッセージを復号する。
復号オラクルＯＤは、復号したメッセージ（または「拒絶」）を回答する。【０１４９】
攻撃者Ａは、これらのオラクルを利用して、ｂが０か１かを当てるゲームに挑戦する。
攻撃者Ａは、鍵導出オラクルＯＸに入力したことのあるユーザの識別情報ＩＤを、暗号化オラクルＯＥに入力することはできない。攻撃者Ａが秘密鍵ｄＩＤを知っていれば、暗号化オラクルが出力した暗号文Ｃ＊を復号できるので、どちらのメッセージを暗号化したものか当てることは容易であり、なんら暗号を解読したとは言えないからである。
攻撃者Ａは、逆に、暗号化オラクルＯＥに入力したことのあるユーザの識別情報ＩＤ＊を、鍵導出オラクルＯＸに入力することもできない。
また、攻撃者Ａは、暗号化オラクルＯＥに入力したことのあるユーザの識別情報ＩＤ＊と、それに対して暗号化オラクルＯＥが出力した暗号文Ｃとの組み合わせを、復号オラクルＯＤに入力することもできない。暗号化オラクルが出力した暗号文Ｃ＊を復号オラクルＯＤにより復号した場合も、どちらのメッセージを暗号化したものか当てることは容易であり、なんら暗号を解読したとは言えないからである。【０１５０】
上記の制限を除き、攻撃者Ａは、自由にオラクルを呼び出し、ｂが０か１かを推測する。攻撃者Ａは、推測結果ｂ’を出力する。
ここで、攻撃者Ａが、ユーザの識別情報ＩＤ１個につき暗号化オラクルＯＥを呼び出した回数をｑｅとする。すなわち、暗号化オラクルＯＥは、最大ｎ・ｑｅ回呼び出される可能性がある。
また、攻撃者Ａが、復号オラクルＯＤを呼び出した回数をｑｄ、鍵導出オラクルＯＸを呼び出した回数をｑｘとする。【０１５１】
攻撃者Ａが暗号を全く解読できない場合、ｂ＝ｂ’となる確率は１／２である。攻撃者Ａが暗号を常に解読できる場合、ｂ＝ｂ’となる確率は１である。攻撃者Ａが暗号を解読できる場合がある場合、ｂ＝ｂ’となる確率は１／２と１との間になる。また、ｂ＝ｂ’となる確率が１／２未満になる可能性もあるが、その場合、逆の意味で攻撃者Ａは暗号を解読したと言える。
そこで、攻撃者ＡのアドバンテージＡｄｖを、Ａｄｖｍｕｎ，Π，Γ（Ａ）＝｜Ｐｒ［Ｇａｍｅｍｕｎ，Π，Γ（Ａ，０）＝０］−Ｐｒ［Ｇａｍｅｍｕｎ，Π，Γ（Ａ，１）＝０］｜と定義する。
ここで、Ｐｒ［…］は、その事象が発生する確率を表わす。
Ｇａｍｅｍｕｎ，Π，Γ（Ａ，０）は、ｂ＝０の場合に攻撃者Ａが推測した推測結果ｂ’の値を表わす。したがって、Ｇａｍｅｍｕｎ，Π，Γ（Ａ，０）＝０は、ｂ＝０の場合に攻撃者Ａの推測が当たる事象を示す。
また、Ｇａｍｅｍｕｎ，Π，Γ（Ａ，１）は、ｂ＝１の場合に攻撃者Ａが推測した推測結果ｂ’の値を表わす。したがって、Ｇａｍｅｍｕｎ，Π，Γ（Ａ，１）＝０は、ｂ＝１の場合に攻撃者Ａの推測が外れる事象を示す。
すなわち、Ａｄｖｍｕｎ，Π，Γ（Ａ）は、攻撃者Ａが推測結果ｂ’＝０を出力した場合において、その推測が当たっている確率と外れている確率との差の絶対値を表わす。
攻撃者Ａが暗号を全く解読できない場合、Ａｄｖｍｕｎ，Π，Γ（Ａ）は０となる。攻撃者Ａが暗号を常に解読できる場合、Ａｄｖｍｕｎ，Π，Γ（Ａ）は１となる。攻撃者Ａが暗号を解読できる場合がある場合、Ａｄｖｍｕｎ，Π，Γ（Ａ）は０と１との間の値となる。【０１５２】
暗号システムΠのｎ人ユーザ安全性を、Ａｄｖｍｕｎ，Π，Γ（ｔ，ｑｅ，ｑｄ，ｑｘ）＝ｍａｘ｛Ａｄｖｍｕｎ，Π，Γ（Ａ）｝と定義する。これは、暗号化オラクルＯＥをＩＤ１個当たりｑｅ回、復号オラクルＯＤをｑｄ回、鍵導出オラクルＯＸをｑｘ回呼び出して、時間ｔの間に答えを出す攻撃者Ａのうち、最も高いアドバンテージを有する攻撃者のアドバンテージを意味する。
Ａｄｖｍｕｎ，Π，Γ（ｔ，ｑｅ，ｑｄ，ｑｘ）が、全てのｋの多項式ｎ（ｋ）に対して無視できる（ｎｅｇｌｉｇｉｂｌｅ）とき、暗号システムΠは（ｔ，ｑｅ，ｑｄ，ｑｘ）−ＭＵ安全であるという。
従来、ＩＤベース暗号方式の安全性として定義されていたものは、ここで定義した安全性の特殊な場合であり、ｑｅ＝１かつｎ＝１の場合のＭＵ安全性である。【０１５３】
次に、ＩＤベース暗号方式の複数受信者における安全性として、ＳＭＭＲ−ＩＮＤ−ＩＤ−ＣＣＡ２安全性を以下のように定義する。
ここで、「ＳＭＭＲ−ＩＮＤ−ＩＤ−ＣＣＡ２安全性」とは、複数受信者（Ｍｕｌｔｉ−Ｒｅｃｉｐｉｅｎｔ）に単一のメッセージ（Ｓｉｎｇｌｅ  Ｍｅｓｓａｇｅ）を送信する場合において、ターゲットＩＤを適応的に選択可能な攻撃者に対する安全性を意味する。【０１５４】
暗号システムΠ’は、単一のメッセージをマルチキャストする複数受信者ＩＤベース暗号システムである。暗号システムΠ’は、ＰＫＧ用鍵生成機能Ｓ’と、秘密鍵導出機能Ｘ’と、暗号化機能Ｅ’と、暗号文分節機能Ｔ’と、復号機能Ｄ’とを有する。【０１５５】
ＰＫＧ用鍵生成機能Ｓ’及び秘密鍵導出機能Ｘ’は、ＭＵ−ＩＮＤ−ＩＤ−ＣＣＡ２安全の定義におけるＰＫＧ用鍵生成機能Ｓ及び秘密鍵導出機能Ｘ’と同様なので、説明を省略する。【０１５６】
暗号化機能Ｅ’は、複数のユーザの識別情報ＩＤ＝（ＩＤ１，ＩＤ２，…，ＩＤｎ）と、共通パラメータｐａｒａｍｓと、メッセージＭとを入力し、暗号文Ｃを生成する。【０１５７】
暗号文分節機能Ｔ’は、暗号文Ｃを入力し、各ＩＤ向けに分節して、暗号文ＣＩＤを生成する。
暗号文分節機能Ｔ’は、ＩＤベース暗号通信システム８００の暗号文受信装置の暗号文分解部３４６の機能に相当する。【０１５８】
復号機能Ｄ’は、秘密鍵ｄＩＤと、共通パラメータｐａｒａｍｓと、そのＩＤに対する（分節された）暗号文ＣＩＤとを入力し、復号したメッセージ（または「拒絶」）を返す。【０１５９】
以上のように構成された暗号システムΠ’に対する攻撃者をＡとする。【０１６０】
攻撃者Ａは、暗号化オラクルＯＥ’を利用できる。
暗号化オラクルＯＥ’は、ｎ人のユーザそれぞれの識別情報ＩＤ＊＝（ＩＤ１＊，ＩＤ２＊，…，ＩＤｎ＊）と、２つのメッセージＭ０＊及びＭ１＊とを入力する。
暗号化オラクルＯＥ’は、０か１かのいずれかをランダムに選択してｂとする。
暗号化オラクルＯＥ’は、選択したｂに基づいて、入力した２つのメッセージＭ０＊及びＭ１＊のうちから一方を選択し、暗号化機能Ｅにより、入力したｎ人のユーザそれぞれの識別情報ＩＤ＊と、共通パラメータｐａｒａｍｓと、選択したメッセージとに基づいて、暗号文Ｃ＊を生成し、回答する。【０１６１】
また、攻撃者Ａは、鍵導出オラクルＯＸ’を利用できる。
鍵導出オラクルＯＸ’は、（１人の）ユーザの識別情報ＩＤを入力する。
鍵導出オラクルＯＸ’は、鍵導出機能Ｘ’により、攻撃者Ａには知らされていないＰＫＧ用マスタ鍵ｍｓｋと、入力したユーザの識別情報ＩＤとに基づいて、秘密鍵ｄＩＤを生成し、回答する。【０１６２】
また、攻撃者Ａは、復号オラクルＯＤ’を利用できる。
復号オラクルＯＤ’は、ユーザの識別情報ＩＤと、そのＩＤに対する（分節された）暗号文ＣＩＤとを入力する。
復号オラクルＯＤ’は、鍵導出機能Ｘ’により、攻撃者Ａには知らされていないＰＫＧ用マスタ鍵ｍｓｋと、入力したユーザの識別情報ＩＤとに基づいて、秘密鍵ｄＩＤを生成する。
復号オラクルＯＤ’は、復号機能Ｄ’により、生成した秘密鍵ｄＩＤと、共通パラメータｐａｒａｍｓと、入力した暗号文ＣＩＤとに基づいて、メッセージを復号する。
復号オラクルＯＤ’は、復号したメッセージ（または「拒絶」）を回答する。【０１６３】
攻撃者Ａは、暗号化オラクルＯＥ’を１回呼び出し、ｂが０か１かを当てるゲームに挑戦する。
攻撃者Ａは、暗号化オラクルＯＥ’を呼び出す前及び後のいずれにおいても、鍵導出オラクルＯＸ’及び復号オラクルＯＤ’を複数回呼び出すことができる。
ただし、暗号化オラクルＯＥ’に入力した（入力する）ｎ人のユーザそれぞれの識別情報ＩＤ＊に含まれるユーザの識別情報を、鍵導出オラクルＯＸ’に入力することはできない。
また、攻撃者Ａは、暗号化オラクルＯＥ’に入力したｎ人のユーザそれぞれの識別情報ＩＤ＊に含まれるユーザの識別情報と、それに対して暗号化オラクルＯＥ’が出力した暗号文Ｃのうち、その識別情報に対する暗号文ＣＩＤとの組み合わせを、復号オラクルＯＤ’に入力することもできない。
上記の制限を除き、攻撃者Ａは、自由に鍵導出オラクルＯＸ’及び復号オラクルＯＤ’を呼び出し、ｂが０か１かを推測する。攻撃者Ａは、推測結果ｂ’を出力する。【０１６４】
上記ゲームに基づいて、ＭＵ−ＩＮＤ−ＩＤ−ＣＣＡ２安全性の場合と同様に、攻撃者ＡのアドバンテージＡｄｖを、Ａｄｖｓｍｍｒｎ，Π’，Γ（Ａ）＝｜Ｐｒ［Ｇａｍｅｓｍｍｒｎ，Π’，Γ（Ａ，０）＝０］−Ｐｒ［Ｇａｍｅｓｍｍｒｎ，Π’，Γ（Ａ，１）＝０］｜と定義する。
また、暗号システムΠ’のｎ人受信者安全性も同様に、Ａｄｖｓｍｍｒｎ，Π’，Γ（ｔ，ｑｄ，ｑｘ）＝ｍａｘ｛Ａｄｖｓｍｍｒｎ，Π’，Γ（Ａ）｝と定義する。これは、復号オラクルＯＤ’をｑｄ回、鍵導出オラクルＯＸ’をｑｘ回呼び出して、時間ｔの間に答えを出す攻撃者Ａのうち、最も高いアドバンテージを有する攻撃者のアドバンテージを意味する。【０１６５】
そして、Ａｄｖｓｍｍｒｎ，Π’，Γ（ｔ，ｑｄ，ｑｘ）が、全てのｋの多項式ｎ（ｋ）に対して無視できるとき、暗号システムΠ’は（ｔ，ｑｄ，ｑｘ）−ＳＭＭＲ安全であるという。【０１６６】
以上の定義に基づいて、この実施の形態におけるＩＤベース暗号通信システム８００のＳＭＭＲ−ＩＮＤ−ＩＤ−ＣＣＡ２安全性を説明する。【０１６７】
この実施の形態におけるＩＤベース暗号通信システム８００は、ハッシュ値算出部２４４が、ｎ人の受信者に対応するｎ個の暗号文主文ＣＢｉに基づいて、１つのハッシュ値Ｈを算出する。この方式を「ハッシュ値共通化方式」と呼ぶ。
これに対して、ハッシュ値算出部２４４がｎ人の受信者に対応するｎ個の暗号文主文ＣＢｉそれぞれに基づいてハッシュ値を算出し、ｎ人の受信者に対応するｎ個のハッシュ値を算出する方式もあり得る。このような方式のことを、以下では「連接方式」と呼ぶ。
ここでは、まず連接方式の安全性について説明する。【０１６８】
ＳＭＭＲ−ＩＮＤ−ＩＤ−ＣＣＡ２安全性の定義における暗号化オラクルＯＥ’は、ｎ人のユーザそれぞれの識別情報ＩＤ＊＝（ＩＤ１＊，ＩＤ２＊，…，ＩＤｎ＊）を入力して、暗号化処理をする。
これに対して、ＭＵ−ＩＮＤ−ＩＤ−ＣＣＡ２安全性の定義における暗号化オラクルＯＥは、（１人の）ユーザの識別情報ＩＤ＊を入力して、暗号化処理をする。
したがって、ＭＵ−ＩＮＤ−ＩＤ−ＣＣＡ２安全性の定義における暗号化オラクルＯＥをｎ回呼び出して、それぞれのユーザの識別情報についての暗号化処理をすれば、ＳＭＭＲ−ＩＮＤ−ＩＤ−ＣＣＡ２安全性の定義における暗号化オラクルＯＥ’と同等である。【０１６９】
また、ＭＵ−ＩＮＤ−ＩＤ−ＣＣＡ２安全性の定義における鍵導出オラクルＯＸ及び復号オラクルＯＤは、ＳＭＭＲ−ＩＮＤ−ＩＤ−ＣＣＡ２安全性の定義における鍵導出オラクルＯＸ’及び復号オラクルＯＤ’と同等である。【０１７０】
以上より、連接方式による暗号システムΠ’のｎ人受信者ＳＭＭＲ安全性は、元となる暗号システムΠにおいて、ｑｅ＝１の場合におけるｎ人ユーザＭＵ安全性と同等となる。すなわち、Ａｄｖｓｍｍｒｎ，Π’，Γ（ｔ，ｑｄ，ｑｘ）＝Ａｄｖｍｕｎ，Π，Γ（ｔ，１，ｑｄ，ｑｘ）である。【０１７１】
また、一般的な公開鍵暗号方式Πに対するＭＵ安全性は、Ａｄｖｍｕｎ，Π，Γ（ｔ，ｑｅ，ｑｄ，ｑｘ）≦ｑｅ・ｎ・Ａｄｖｍｕ１，Π，Γ（ｔ’，１，ｑｄ，ｑｘ）であることが証明できる。これは、ＩＤベース暗号方式の場合も同様である。【０１７２】
ここで、Ａｄｖｍｕ１，Π，Γ（ｔ’，１，ｑｄ，ｑｘ）は、ｎ人ユーザＭＵ安全性のｎ＝１かつｑｅ＝１の場合における安全性であるから、従来、ＩＤベース暗号方式の安全性として定義されていたものである。【０１７３】
したがって、従来の意味で安全性が証明されたＩＤベース暗号方式を連接方式により拡張した複数受信者ＩＤベース暗号方式のＳＭＭＲ安全性はＡｄｖｓｍｍｒｎ，Π’，Γ（ｔ，ｑｄ，ｑｘ）≦ｎ・Ａｄｖｍｕ１，Π，Γ（ｔ’，１，ｑｄ，ｑｘ）となり、安全性を証明することができる。【０１７４】
このように、連接方式のＳＭＭＲ安全性は、もととなる（単独受信者）ＩＤベース暗号方式のＭＵ安全性から直接導くことができるが、ハッシュ値共通化方式のＳＭＭＲ安全性は、それぞれ具体的な証明が必要である。【０１７５】
ハッシュ値共通化方式において、ハッシュ値算出部２４４は、１つのハッシュ値Ｈを算出すればよいので、ｎ人の受信者に対応するｎ個のハッシュ値を算出する連接方式と比較して、ハッシュ値算出部２４４がハッシュ値を算出する処理の処理量が削減できる。
また、暗号文検証文生成部２４５が暗号文検証文ＣＣを生成する処理についても、連接方式では、ほとんどの演算をｎ回繰り返す必要があるのに対して、ハッシュ値共通化方式では、途中までの演算を共通化して１回で済ますことができるので、暗号文検証文生成部２４５が暗号文検証文ＣＣを生成する処理の処理量も削減できる。
これにより、暗号文生成装置２００における暗号文生成処理の処理速度が速くなり、暗号文生成装置２００のＣＰＵ９１１などの処理装置の処理能力が低くても、実用的な時間内に暗号文生成処理をすることができる。【０１７６】
この実施の形態における暗号文生成装置２００は、
平文Ｍをｎ人の受信者（ｎは、１以上の整数。）に対して通知する暗号文Ｃ（鍵暗号文Ｃ）を生成する暗号文生成装置２００において、
情報を記憶する磁気ディスク装置９２０などの記憶装置と、情報を処理するＣＰＵ９１１などの処理装置と、暗号パラメータ記憶部２１０と、受信者識別入力部２３２と、平文入力部２３１と、暗号文主文生成部２４０と、ハッシュ値算出部２４４と、暗号文検証文生成部２４５と、暗号文結合部２４６とを有することを特徴とする。
暗号パラメータ記憶部２１０は、磁気ディスク装置９２０などの記憶装置を用いて、公開暗号パラメータを記憶することを特徴とする。
受信者識別入力部２３２は、ＣＰＵ９１１などの処理装置を用いて、ｎ人の受信者をそれぞれ識別するｎ個の受信者識別情報ＩＤｉ（ｉは、１以上ｎ以下の整数。）を入力することを特徴とする。
平文入力部２３１は、ＣＰＵ９１１などの処理装置を用いて、平文Ｍを入力することを特徴とする。
暗号文主文生成部２４０は、ＣＰＵ９１１などの処理装置を用いて、暗号パラメータ記憶部２１０が記憶した公開暗号パラメータと、受信者識別入力部２３２が入力したｎ個の受信者識別情報ＩＤｉと、平文入力部２３１が入力した平文Ｍとに基づいて、ｎ人の受信者に対応するｎ個の暗号文主文ＣＢｉ（ｉは、１以上ｎ以下の整数。）を生成することを特徴とする。
ハッシュ値算出部２４４は、ＣＰＵ９１１などの処理装置を用いて、暗号文主文生成部２４０が生成したｎ個の暗号文主文ＣＢｉを結合して、結合暗号文を生成し、ＣＰＵ９１１などの処理装置を用いて、生成した結合暗号文に基づいて、ハッシュ値Ｈを算出することを特徴とする。
暗号文検証文生成部２４５は、ＣＰＵ９１１などの処理装置を用いて、暗号パラメータ記憶部２１０が記憶した公開暗号パラメータと、ハッシュ値算出部２４４が算出したハッシュ値Ｈとに基づいて、暗号文検証文ＣＣを生成することを特徴とする。
暗号文結合部２４６は、ＣＰＵ９１１などの処理装置を用いて、暗号文主文生成部２４０が生成したｎ個の暗号文主文ＣＢｉと、暗号文検証文生成部２４５が生成した暗号文検証文ＣＣとを結合して、１つの暗号文Ｃとすることを特徴とする。【０１７７】
この実施の形態における暗号文生成装置２００によれば、ＩＤベース暗号通信方式において、同一の平文Ｍを複数の受信者に対して通知する１つの暗号文Ｃを生成する処理の一部であるハッシュ値を算出する処理と、算出したハッシュ値に基づく処理とをそれぞれ１回で済ますことができるので、処理が効率化し、高速な暗号処理が可能になるという効果を奏する。【０１７８】
この実施の形態における暗号文生成装置２００は、更に、乱数生成部２２２を有することを特徴とする。
乱数生成部２２２は、ＣＰＵ９１１などの処理装置を用いて、ｎ人の受信者に対応するｎ個の整数ｓｉ（ｉは、１以上ｎ以下の整数。）をランダムに生成することを特徴とする。
暗号文主文生成部２４０は、第一暗号文生成部２４１と、第二暗号文生成部２４２と、第三暗号文生成部２４３とを有することを特徴とする。
第一暗号文生成部２４１は、ＣＰＵ９１１などの処理装置を用いて、暗号パラメータ記憶部２１０が記憶した公開暗号パラメータと、平文入力部２３１が入力した平文Ｍと、乱数生成部２２２が生成したｎ個の整数ｓｉとに基づいて、ｎ人の受信者に対応するｎ個の第一暗号文Ｃ１ｉ（ｉは、１以上ｎ以下の整数。）を生成することを特徴とする。
第二暗号文生成部２４２は、ＣＰＵ９１１などの処理装置を用いて、暗号パラメータ記憶部２１０が記憶した公開暗号パラメータと、受信者識別入力部２３２が入力したｎ個の受信者識別情報ＩＤｉと、乱数生成部２２２が生成したｎ個の整数ｓｉとに基づいて、ｎ人の受信者に対応するｎ個の第二暗号文Ｃ２ｉ（ｉは、１以上ｎ以下の整数。）を生成することを特徴とする。
第三暗号文生成部２４３は、ＣＰＵ９１１などの処理装置を用いて、暗号パラメータ記憶部２１０が記憶した公開暗号パラメータと、乱数生成部２２２が生成したｎ個の整数ｓｉとに基づいて、ｎ人の受信者に対応するｎ個の第三暗号文Ｃ３ｉ（ｉは、１以上ｎ以下の整数。）を生成することを特徴とする。
ハッシュ値算出部２４４は、ＣＰＵ９１１などの処理装置を用いて、第一暗号文生成部２４１が生成したｎ個の第一暗号文Ｃ１ｉと、第二暗号文生成部２４２が生成したｎ個の第二暗号文Ｃ２ｉと、第三暗号文生成部２４３が生成したｎ個の第三暗号文Ｃ３ｉとを結合して、１つの結合暗号文とし、ＣＰＵ９１１などの処理装置を用いて、結合した１つの結合暗号文に基づいて、１つのハッシュ値Ｈ０を算出することを特徴とする。
暗号文検証文生成部２４５は、ＣＰＵ９１１などの処理装置を用いて、暗号パラメータ記憶部２１０が記憶した公開暗号パラメータと、乱数生成部２２２が生成したｎ個の整数ｓｉと、ハッシュ値算出部２４４が算出した１つのハッシュ値Ｈ０とに基づいて、ｎ人の受信者に対応するｎ個の暗号文検証文ＣＣｉ（ｉは、１以上ｎ以下の整数。）を生成することを特徴とする。
暗号文結合部２４６は、ＣＰＵ９１１などの処理装置を用いて、第一暗号文生成部２４１が生成したｎ個の第一暗号文Ｃ１ｉと、第二暗号文生成部２４２が生成したｎ個の第二暗号文Ｃ２ｉと、第三暗号文生成部２４３が生成したｎ個の第三暗号文Ｃ３ｉと、暗号文検証文生成部２４５が生成したｎ個の暗号文検証文ＣＣｉとを結合して、１つの暗号文Ｃ（鍵暗号文Ｃ）とすることを特徴とする。【０１７９】
この実施の形態における暗号文生成装置２００によれば、ハッシュ値算出部２４４が受信者にかかわらず共通の１つのハッシュ値Ｈ０を算出するので、暗号文生成装置２００における暗号文生成処理の処理量を削減することができるという効果を奏する。
また、単独受信者の場合について安全性が証明されたＩＤベース暗号通信方式を複数受信者に拡張したＩＤベース暗号通信方式において、単独受信者の場合と同様の安全性を証明できるという効果を奏する。【０１８０】
この実施の形態における暗号文生成装置２００は、また、以下の点を特徴とする。
暗号文主文生成部２４０は、ＣＰＵ９１１などの処理装置を用いて、受信者識別入力部２３２が入力したｎ個の受信者識別情報ＩＤｉを含むｎ個の暗号文主文ＣＢｉを生成することを特徴とする。【０１８１】
この実施の形態における暗号文生成装置２００によれば、ハッシュ値算出部２４４が算出するハッシュ値のもととなるｎ個の暗号文主文ＣＢｉが、ｎ個の受信者識別情報を含むので、ＩＤベース暗号通信方式の安全性が高くなるという効果を奏する。【０１８２】
この実施の形態における暗号文生成装置２００は、更に、暗号文通知部２６１を有することを特徴とする。
暗号文通知部２６１は、ＣＰＵ９１１などの処理装置を用いて、受信者識別入力部２３２が入力したｎ個の受信者識別情報ＩＤｉによって識別されるｎ人の受信者に対して、上記暗号文結合部２４６が結合した１つの暗号文Ｃ（鍵暗号文Ｃ）を通知することを特徴とする。【０１８３】
この実施の形態における暗号文生成装置２００によれば、暗号文通知部２６１がｎ人の受信者に対して同一の暗号文Ｃを通知するので、暗号文を通知する通信経路のトラフィックにかける負荷が小さいという効果を奏する。【０１８４】
この実施の形態における暗号文生成装置２００は、更に、セッション鍵生成部２２１を有することを特徴とする。
セッション鍵生成部２２１は、ＣＰＵ９１１などの処理装置を用いて、所定の長さのビット列をランダムに生成して、セッション鍵Ｋとすることを特徴とする。
平文入力部２３１は、ＣＰＵ９１１などの処理装置を用いて、平文Ｍとして、上記セッション鍵生成部が生成したセッション鍵Ｋを入力することを特徴とする。【０１８５】
この実施の形態における暗号文生成装置２００は、セッション鍵生成部２２１がセッション鍵Ｋを生成し、生成したセッション鍵を通知相手に通知する暗号文Ｃを生成するので、セッション鍵Ｋを外部から入力する場合と比較して、安全性が高いという効果を奏する。【０１８６】
この実施の形態における暗号文生成装置２００は、更に、データ入力部２５１と、データ暗号化部２５２と、暗号文通知部２６１とを有することを特徴とする。
データ入力部２５１は、ＣＰＵ９１１などの処理装置を用いて、ｎ人の受信者に対して送信すべき１つの平文データを入力することを特徴とする。
データ暗号化部２５２は、ＣＰＵ９１１などの処理装置を用いて、セッション鍵生成部２２１が生成したセッション鍵Ｋにより、データ入力部２５１が入力した１つの平文データを暗号化して、１つの暗号化データとすることを特徴とする。
暗号文通知部２６１は、ＣＰＵ９１１などの処理装置を用いて、受信者識別入力部２３２が入力したｎ個の受信者識別情報ＩＤｉによって識別されるｎ人の受信者に対して、暗号文結合部２４６が結合した１つの暗号文Ｃ（鍵暗号文Ｃ）と、データ暗号化部２５２が暗号化した１つの暗号化データとを通知することを特徴とする。【０１８７】
この実施の形態における暗号文生成装置２００によれば、データ暗号化部２５２が受信者にかかわらず共通の１つのセッション鍵Ｋにより平文データを暗号化し、暗号文通知部２６１が受信者にかかわらず共通の１つの暗号文Ｃ及び１つの暗号化データを、受信者に通知するので、通信経路のトラフィックにかける負荷が小さいという効果を奏する。【０１８８】
この実施の形態におけるＩＤベース暗号通信システム８００（暗号通信システム）は、
それぞれが対応する暗号文受信装置を有するｎ人の受信者（ｎは、１以上の整数。）に対して、平文Ｍ（セッション鍵Ｋ）を１つの暗号文Ｃ（鍵暗号文Ｃ）により通知する暗号通信システムにおいて、
暗号パラメータ生成装置１００と、暗号文生成装置２００と、複数の暗号文受信装置３０１〜３０３とを有することを特徴とする。
暗号パラメータ生成装置１００は、
情報を記憶する磁気ディスク装置９２０などの記憶装置と、情報を処理するＣＰＵ９１１などの処理装置と、秘密情報生成部１１２と、秘密情報記憶部１２１と、公開パラメータ生成部１１３と、公開パラメータ公開部１１４と、識別情報入力部１３１と、秘密鍵生成部１３２と、秘密鍵通知部１３３とを有することを特徴とする。
秘密情報生成部１１２は、ＣＰＵ９１１などの処理装置を用いて、秘密情報をランダムに生成することを特徴とする。
秘密情報記憶部１２１は、磁気ディスク装置９２０などの記憶装置を用いて、秘密情報生成部１１２が生成した秘密情報を記憶することを特徴とする。
公開パラメータ生成部１１３は、ＣＰＵ９１１などの処理装置を用いて、秘密情報生成部１１２が生成した秘密情報に基づいて、公開暗号パラメータを生成することを特徴とする。
公開パラメータ公開部１１４は、ＣＰＵ９１１などの処理装置を用いて、公開パラメータ生成部１１３が生成した公開暗号パラメータを公開することを特徴とする。
識別情報入力部１３１は、ＣＰＵ９１１などの処理装置を用いて、複数の暗号文受信装置３０１〜３０３のうち１つの暗号文受信装置に対応する１人の受信者を識別する受信者識別情報ＩＤを入力することを特徴とする。
秘密鍵生成部１３２は、ＣＰＵ９１１などの処理装置を用いて、秘密情報記憶部１２１が記憶した秘密情報と、公開パラメータ生成部１１３が生成した公開暗号パラメータと、識別情報入力部１３１が入力した受信者識別情報ＩＤとに基づいて、上記１人の受信者に対応する秘密鍵ｄＩＤを生成することを特徴とする。
秘密鍵通知部１３３は、ＣＰＵ９１１などの処理装置を用いて、上記１人の受信者に対応する１つの暗号文受信装置に対して、秘密鍵生成部１３２が生成した秘密鍵ｄＩＤを秘密裏に通知することを特徴とする。
暗号文生成装置２００は、
情報を記憶する磁気ディスク装置９２０などの記憶装置と、情報を処理するＣＰＵ９１１などの処理装置と、暗号パラメータ記憶部２１０と、受信者識別入力部２３２と、平文入力部２３１と、乱数生成部２２２と、暗号文主文生成部２４０と、ハッシュ値算出部２４４と、暗号文検証文生成部２４５と、暗号文結合部２４６と、暗号文通知部２６１とを有することを特徴とする。
暗号パラメータ記憶部２１０は、磁気ディスク装置９２０などの記憶装置を用いて、暗号パラメータ生成装置１００が公開した公開暗号パラメータを記憶することを特徴とする。
受信者識別入力部２３２は、ＣＰＵ９１１などの処理装置を用いて、ｎ人の受信者をそれぞれ識別するｎ個の受信者識別情報ＩＤｉ（ｉは、１以上ｎ以下の整数。）を入力することを特徴とする。
平文入力部２３１は、ＣＰＵ９１１などの処理装置を用いて、平文Ｍを入力することを特徴とする。
第二暗号文生成部２４２は、ＣＰＵ９１１などの処理装置を用いて、暗号パラメータ記憶部２１０が記憶した公開暗号パラメータと、受信者識別入力部２３２が入力したｎ個の受信者識別情報ＩＤｉと、平文入力部２３１が入力した平文Ｍとに基づいて、ｎ人の受信者に対応するｎ個の暗号文主文ＣＢｉ（ｉは、１以上ｎ以下の整数。）を生成することを特徴とする。
ハッシュ値算出部２４４は、ＣＰＵ９１１などの処理装置を用いて、暗号文主文生成部２４０が生成したｎ個の暗号文主文ＣＢｉを結合して、結合暗号文を生成し、ＣＰＵ９１１などの処理装置を用いて、生成した結合暗号文に基づいて、ハッシュ値Ｈを算出することを特徴とする。
暗号文検証文生成部２４５は、ＣＰＵ９１１などの処理装置を用いて、暗号パラメータ記憶部２１０が記憶した公開暗号パラメータと、ハッシュ値算出部２４４が算出したハッシュ値Ｈとに基づいて、暗号文検証文ＣＣを生成することを特徴とする。
暗号文結合部２４６は、ＣＰＵ９１１などの処理装置を用いて、暗号文主文生成部２４０が生成したｎ個の暗号文主文ＣＢｉと、暗号文検証文生成部２４５が生成した暗号文検証文ＣＣとを結合して、１つの暗号文Ｃ（鍵暗号文Ｃ）とすることを特徴とする。
暗号文通知部２６１は、ＣＰＵ９１１などの処理装置を用いて、上記ｎ人の受信者に対応するｎ個の暗号文受信装置に対して、暗号文結合部２４６が結合した１つの暗号文Ｃを通知することを特徴とする。
複数の暗号文受信装置３０１〜３０３は、それぞれ、
情報を記憶する磁気ディスク装置９２０などの記憶装置と、情報を処理するＣＰＵ９１１などの処理装置と、公開パラメータ記憶部３１０と、秘密鍵記憶部３２３と、暗号文受信部３５１と、暗号文分解部３４６と、検証ハッシュ値算出部３４４と、暗号文検証部３４５と、暗号文復号部３４１とを有することを特徴とする。
公開パラメータ記憶部３１０は、磁気ディスク装置９２０などの記憶装置を用いて、暗号パラメータ生成装置１００が公開した公開暗号パラメータを記憶することを特徴とする。
秘密鍵記憶部３２３は、磁気ディスク装置９２０などの記憶装置を用いて、暗号パラメータ生成装置１００が通知した秘密鍵ｄＩＤを記憶することを特徴とする。
暗号文受信部３５１は、ＣＰＵ９１１などの処理装置を用いて、暗号文生成装置２００が通知した１つの暗号文Ｃ（鍵暗号文Ｃ）を受信することを特徴とする。
暗号文分解部３４６は、ＣＰＵ９１１などの処理装置を用いて、暗号文受信部３５１が受信した１つの暗号文Ｃに基づいて、ｎ個の暗号文主文Ｃ２ｉと、暗号文検証文ＣＣとを取得し、ＣＰＵ９１１などの処理装置を用いて、取得したｎ個の暗号文主文ＣＢｉのうち、暗号文受信装置が対応する受信者に対応する１つの対応暗号文主文ＣＢＩＤを取得することを特徴とする。
検証ハッシュ値算出部３４４は、ＣＰＵ９１１などの処理装置を用いて、暗号文分解部３４６が取得したｎ個の暗号文主文ＣＢｉを結合した検証結合暗号文に基づいて、検証ハッシュ値Ｈ’を算出することを特徴とする。
暗号文検証部３４５は、ＣＰＵ９１１などの処理装置を用いて、公開パラメータ記憶部３１０が記憶した公開暗号パラメータと、暗号文分解部３４６が取得した１つの対応暗号文主文ＣＢＩＤと暗号文検証文ＣＣと、検証ハッシュ値算出部３４４が算出した検証ハッシュ値Ｈ’とに基づいて、暗号文受信部３５１が受信した１つの暗号文Ｃに整合性があるか否かを判定することを特徴とする。
暗号文復号部３４１は、暗号文受信部３５１が受信した１つの暗号文Ｃに整合性があると、暗号文検証部３４５が判定した場合に、ＣＰＵ９１１などの処理装置を用いて、公開パラメータ記憶部３１０が記憶した公開暗号パラメータと、秘密鍵記憶部３２３が記憶した秘密鍵ｄＩＤと、暗号文分解部３４６が取得した１つの対応暗号文主文ＣＢＩＤとに基づいて、平文Ｍを復元することを特徴とする。【０１８９】
この実施の形態におけるＩＤベース暗号通信システム８００によれば、ＩＤベース暗号通信方式において、同一の平文Ｍを、複数の受信者に対して１つの暗号文Ｃにより通知し、他の受信者は暗号文Ｃを解読できないという効果を奏する。【０１９０】
この実施の形態におけるＩＤベース暗号通信システム８００（暗号通信システム）は、また、以下の点を特徴とする。
暗号文生成装置２００は、更に、乱数生成部２２２を有することを特徴とする。
乱数生成部２２２は、ＣＰＵ９１１などの処理装置を用いて、ｎ人の受信者に対応するｎ個の整数ｓｉ（ｉは、１以上ｎ以下の整数。）をランダムに生成することを特徴とする。
暗号文主文生成部２４０は、第一暗号文生成部２４１と、第二暗号文生成部２４２と、第三暗号文生成部２４３とを有することを特徴とする。
第一暗号文生成部２４１は、ＣＰＵ９１１などの処理装置を用いて、暗号パラメータ記憶部２１０が記憶した公開暗号パラメータと、平文入力部２３１が入力した平文Ｍと、乱数生成部２２２が生成したｎ個の整数ｓｉとに基づいて、ｎ人の受信者に対応するｎ個の第一暗号文Ｃ１ｉ（ｉは、１以上ｎ以下の整数。）を生成することを特徴とする。
第二暗号文生成部２４２は、ＣＰＵ９１１などの処理装置を用いて、暗号パラメータ記憶部２１０が記憶した公開暗号パラメータと、受信者識別入力部２３２が入力したｎ個の受信者識別情報ＩＤｉと、乱数生成部２２２が生成したｎ個の整数ｓｉとに基づいて、ｎ人の受信者に対応するｎ個の第二暗号文Ｃ２ｉ（ｉは、１以上ｎ以下の整数。）を生成することを特徴とする。
第三暗号文生成部２４３は、ＣＰＵ９１１などの処理装置を用いて、暗号パラメータ記憶部２１０が記憶した公開暗号パラメータと、乱数生成部２２２が生成したｎ個の整数ｓｉとに基づいて、ｎ人の受信者に対応するｎ個の第三暗号文Ｃ３ｉ（ｉは、１以上ｎ以下の整数。）を生成することを特徴とする。
ハッシュ値算出部２４４は、ＣＰＵ９１１などの処理装置を用いて、第一暗号文生成部２４１が生成したｎ個の第一暗号文Ｃ１ｉと、第二暗号文生成部２４２が生成したｎ個の第二暗号文Ｃ２ｉと、第三暗号文生成部２４３が生成したｎ個の第三暗号文Ｃ３ｉとを結合して、１つの結合暗号文とし、ＣＰＵ９１１などの処理装置を用いて、結合した１つの結合暗号文に基づいて、１つのハッシュ値Ｈ０を算出することを特徴とする。
暗号文検証文生成部２４５は、ＣＰＵ９１１などの処理装置を用いて、暗号パラメータ記憶部２１０が記憶した公開暗号パラメータと、乱数生成部２２２が生成したｎ個の整数ｓｉと、ハッシュ値算出部２４４が算出した１つのハッシュ値Ｈ０とに基づいて、ｎ人の受信者に対応するｎ個の暗号文検証文ＣＣｉ（ｉは、１以上ｎ以下の整数。）を生成することを特徴とする。
暗号文結合部２４６は、ＣＰＵ９１１などの処理装置を用いて、第一暗号文生成部２４１が生成したｎ個の第一暗号文Ｃ１ｉと、第二暗号文生成部２４２が生成したｎ個の第二暗号文Ｃ２ｉと、第三暗号文生成部２４３が生成したｎ個の第三暗号文Ｃ３ｉと、暗号文検証文生成部２４５が生成したｎ個の暗号文検証文ＣＣｉとを結合して、１つの暗号文Ｃ（鍵暗号文Ｃ）とすることを特徴とする。
暗号文分解部３４６は、ＣＰＵ９１１などの処理装置を用いて、暗号文受信部３５１が受信した１つの暗号文Ｃに基づいて、ｎ個の第一暗号文Ｃ１ｉと、ｎ個の第二暗号文Ｃ２ｉと、ｎ個の第三暗号文Ｃ３ｉと、ｎ個の暗号文検証文ＣＣｉとを取得し、ＣＰＵ９１１などの処理装置を用いて、取得したｎ個の第一暗号文Ｃ１ｉとｎ個の第二暗号文Ｃ２ｉとｎ個の第三暗号文Ｃ３ｉとｎ個の暗号文検証文ＣＣｉとのうち、暗号文受信装置が対応する受信者に対応する１つの対応第一暗号文Ｃ１ＩＤと１つの対応第二暗号文Ｃ２ＩＤと１つの対応第三暗号文Ｃ３ＩＤと１つの対応暗号文検証文ＣＣＩＤとを取得することを特徴とする。
検証ハッシュ値算出部３４４は、ＣＰＵ９１１などの処理装置を用いて、暗号文分解部３４６が取得したｎ個の第一暗号文Ｃ１ｉとｎ個の第二暗号文Ｃ２ｉとｎ個の第三暗号文Ｃ３ｉとを結合した検証結合暗号文に基づいて、検証ハッシュ値Ｈ’を算出することを特徴とする。
暗号文検証部３４５は、ＣＰＵ９１１などの処理装置を用いて、公開パラメータ記憶部３１０が記憶した公開暗号パラメータと、暗号文分解部３４６が取得した１つの対応第二暗号文Ｃ２ＩＤと１つの対応第三暗号文Ｃ３ＩＤとの少なくともいずれかと１つの対応暗号文検証文と、検証ハッシュ値算出部３４４が算出した検証ハッシュ値Ｈ’とに基づいて、暗号文受信部３５１が受信した１つの暗号文Ｃに整合性があるか否かを判定することを特徴とする。
暗号文復号部３４１は、暗号文受信部３５１が受信した１つの暗号文Ｃに整合性があると、暗号文検証部３４５が判定した場合に、ＣＰＵ９１１などの処理装置を用いて、公開パラメータ記憶部３１０が記憶した公開暗号パラメータと、秘密鍵記憶部３２３が記憶した秘密鍵ｄＩＤと、暗号文分解部３４６が取得した１つの対応第一暗号文Ｃ１ＩＤと１つの対応第二暗号文Ｃ２ＩＤと１つの対応第三暗号文Ｃ３ＩＤとに基づいて、平文Ｍを復元することを特徴とする。【０１９１】
この実施の形態におけるＩＤベース暗号通信システム８００によれば、ハッシュ値算出部２４４が受信者にかかわらず共通の１つのハッシュ値Ｈ０を算出するので、暗号文生成装置２００における暗号文生成処理の処理量を削減することができるという効果を奏する。
また、単独受信者の場合について安全性が証明されたＩＤベース暗号通信方式を複数受信者に拡張したＩＤベース暗号通信方式において、単独受信者の場合と同様の安全性を証明できるという効果を奏する。【０１９２】
この実施の形態におけるＩＤベース暗号通信システム８００（暗号通信システム）は、また、以下の点を特徴とする。
暗号文主文生成部２４０は、ＣＰＵ９１１などの処理装置を用いて、受信者識別入力部２３２が入力したｎ個の受信者識別情報ＩＤｉを含むｎ個の暗号文主文ＣＢｉを生成することを特徴とする。【０１９３】
この実施の形態におけるＩＤベース暗号通信システム８００によれば、ハッシュ値算出部２４４が算出するハッシュ値のもととなるｎ個の暗号文主文ＣＢｉが、ｎ個の受信者識別情報を含むので、ＩＤベース暗号通信方式の安全性が高くなるという効果を奏する。【０１９４】
この実施の形態におけるＩＤベース暗号通信システム８００（暗号通信システム）は、また、以下の点を特徴とする。
暗号文生成装置２００は、更に、セッション鍵生成部２２１と、データ入力部２５１と、データ暗号化部２５２と、暗号文通知部２６１とを有することを特徴とする。
セッション鍵生成部２２１は、ＣＰＵ９１１などの処理装置を用いて、所定の長さのビット列をランダムに生成して、セッション鍵Ｋとすることを特徴とする。
平文入力部２３１は、ＣＰＵ９１１などの処理装置を用いて、平文Ｍとして、セッション鍵生成部２２１が生成したセッション鍵Ｋを入力することを特徴とする。
データ入力部２５１は、ＣＰＵ９１１などの処理装置を用いて、ｎ人の受信者に対して送信すべき１つの平文データを入力することを特徴とする。
データ暗号化部２５２は、ＣＰＵ９１１などの処理装置を用いて、セッション鍵生成部２２１が生成したセッション鍵Ｋにより、データ入力部２５１が入力した１つの平文データを暗号化して、１つの暗号化データとすることを特徴とする。
暗号文通知部２６１は、ＣＰＵ９１１などの処理装置を用いて、受信者識別入力部２３２が入力したｎ個の受信者識別情報によって識別されるｎ人の受信者に対して、暗号文結合部２４６が結合した１つの暗号文Ｃ（鍵暗号文Ｃ）と、データ暗号化部２５２が暗号化した１つの暗号化データとを通知することを特徴とする。
複数の暗号文受信装置３０１〜３０３は、更に、それぞれ、データ復号部３５２を有することを特徴とする。
暗号文受信部３５１は、ＣＰＵ９１１などの処理装置を用いて、暗号文生成装置２００が通知した１つの暗号文Ｃと１つの暗号化データとを受信することを特徴とする。
データ復号部３５２は、暗号文復号部３４１が復元した平文Ｍをセッション鍵Ｋ’とし、ＣＰＵ９１１などの処理装置を用いて、上記セッション鍵Ｋ’により、暗号文受信部３５１が受信した１つの暗号化データを復号することを特徴とする。【０１９５】
この実施の形態におけるＩＤベース暗号通信システム８００によれば、データ暗号化部２５２が受信者にかかわらず共通の１つのセッション鍵Ｋにより平文データを暗号化し、暗号文通知部２６１が受信者にかかわらず共通の１つの暗号文Ｃ及び１つの暗号化データを、受信者に通知するので、通信経路のトラフィックにかける負荷が小さいという効果を奏する。【０１９６】
なお、この実施の形態では、受信者の数ｎは、あらかじめ（例えば、公開暗号パラメータ生成時に）定まっているものではなく、実際にデータを送信するときに定まるものである場合について説明したが、受信者の数ｎをあらかじめ固定としてもよい。
例えば、受信者が一人で確定している場合であればｎ＝１で固定してもよい。あるいは、ｎ＝１０で固定でもよい。
また、受信者の数ｎの範囲をあらかじめ定め、データを送信する際に、その範囲内でｎを指定する構成であってもよい。例えば、１≦ｎ＜１００の範囲でｎが可変であってもよい。
つまり、ＩＤベース暗号通信システム８００は、受信者の数があらかじめ固定である暗号通信システムでもよいし、データを送信する際に受信者の数を可変にするようにした暗号通信システムでもよい。【０１９７】
実施の形態２．
実施の形態２について、図１１〜図１８を用いて説明する。【０１９８】
この実施の形態におけるＩＤベース暗号通信システム８００を説明する前に、まず、対比例であるＩＤベース暗号通信システムについて説明する。【０１９９】
この実施の形態における対比例であるＩＤベース暗号通信システムの全体構成は、実施の形態１で説明したものと同様なので、ここでは説明を省略する。【０２００】
最初に、暗号パラメータ生成装置１００について説明する。
暗号パラメータ生成装置１００のブロック構成は、実施の形態１で説明したものと同様なので、図４を用いて、実施の形態１と異なる部分について説明する。【０２０１】
群パラメータ記憶部１１１は、磁気ディスク装置９２０などの記憶装置を用いて、群パラメータとして、自然数ｒと、乗法群Ｇ１と、乗法群Ｇ２と、乗法群ＧＴと、ペアリングｅを表わす情報を記憶する。
自然数ｒは、ＤＨ問題を解くことが困難な大素数である。
乗法群Ｇ１及び乗法群Ｇ２及び乗法群ＧＴは、位数が自然数ｒである乗法群である。
なお、乗法群Ｇ１と乗法群Ｇ２とは、同じ乗法群でもよいし、異なる乗法群でもよい。乗法群Ｇ１と乗法群Ｇ２とが同じ乗法群である場合には、群パラメータ記憶部１１１は、乗法群Ｇ２を表わす情報を記憶しなくてもよい。【０２０２】
ペアリングｅは、乗法群Ｇ１の要素と乗法群Ｇ２の要素とから、乗法群ＧＴの要素を算出する写像である。以下、乗法群Ｇ１の要素ｐと乗法群Ｇ２の要素ｑとから算出した乗法群ＧＴの要素を、ペアリング値ｅ（ｐ，ｑ）と記述する。
また、ペアリングｅは、双線形ペアリング（Ｂｉｌｉｎｅａｒ  Ｐａｉｒｉｎｇ）であるものとする。すなわち、ペアリングｅは、乗法群Ｇ１の要素ｐのａ乗（ａは、０以上自然数ｒ未満の整数。）と乗法群Ｇ２の要素ｑのｂ乗（ｂは、０以上自然数ｒ未満の整数。）とのペアリング値ｅ（ｐ＾ａ，ｑ＾ｂ）は、乗法群Ｇ１の要素ｐと乗法群Ｇ２の要素ｑとのペアリング値ｅ（ｐ，ｑ）のｃ乗（ｃは、整数ａと整数ｂとの積を自然数ｒで割った余り。）と等しい（数式で表現すると、「ｅ（ｐ＾ａ，ｑ＾ｂ）＝ｅ（ｐ，ｑ）＾（ａ・ｂ）」）という性質を有するものとする。
なお、コンピュータのＣＰＵ９１１などの処理装置を用いて実用的な時間内に計算可能な双線形ペアリングとして、テイトペアリング（Ｔａｔｅ  Ｐａｉｒｉｎｇ）やヴェイユペアリング（Ｗｅｉｌ  Ｐａｉｒｉｎｇ）などが知られている。
ペアリングｅは、特定のペアリングに限らず、双線形ペアリングであればどのようなペアリングであってもよいが、コンピュータのＣＰＵ９１１などの処理装置を用いて実用的な時間内に計算可能なペアリングであるものとする。【０２０３】
秘密情報生成部１１２は、ＣＰＵ９１１などの処理装置を用いて、群パラメータ記憶部１１１が記憶した群パラメータを入力する。
秘密情報生成部１１２は、ＣＰＵ９１１などの処理装置を用いて、入力した群パラメータが表わす自然数ｒに基づいて、１以上自然数ｒ未満の整数αをランダムに生成する。
秘密情報生成部１１２は、ＣＰＵ９１１などの処理装置を用いて、生成した整数αを表わす情報（秘密情報）を出力する。【０２０４】
公開パラメータ生成部１１３は、ＣＰＵ９１１などの処理装置を用いて、群パラメータ記憶部１１１が記憶した群パラメータと、秘密情報生成部１１２が出力した整数αを表わす情報とを入力する。【０２０５】
公開パラメータ生成部１１３は、ＣＰＵ９１１などの処理装置を用いて、入力した群パラメータが表わす乗法群ＧＴに基づいて、鍵生成関数ＫＤＦを決定する。
鍵生成関数ＫＤＦは、乗法群ＧＴの要素から、所定の長さのビット列を算出する関数である。
公開パラメータ生成部１１３は、ＣＰＵ９１１などの処理装置を用いて、入力した群パラメータが表わす自然数ｒに基づいて、ハッシュ関数ＨＦを決定する。
ハッシュ関数ＨＦは、任意の長さのビット列から、自然数ｒ未満の自然数を算出する関数である。なお、ハッシュ関数ＨＦは、異なるビット列から同じ自然数を算出する確率が極めて低いものとする。【０２０６】
公開パラメータ生成部１１３は、ＣＰＵ９１１などの処理装置を用いて、入力した群パラメータが表わす乗法群Ｇ１に基づいて、乗法群Ｇ１の要素ｇをランダムに選択する。
公開パラメータ生成部１１３は、ＣＰＵ９１１などの処理装置を用いて、入力した群パラメータが表わす乗法群Ｇ２に基づいて、４つの乗法群Ｇ２の要素ｇ２、ｈ１、ｈ２、ｈ３をランダムに選択する。
ただし、乗法群Ｇ２の要素ｇ２、ｈ１、ｈ２、ｈ３は、互いに異なる要素を選択する。
また、乗法群Ｇ１の要素ｇと乗法群Ｇ２の要素ｇ２とのペアリング値である乗法群ＧＴの要素ｅ（ｇ，ｇ２）が乗法群ＧＴの単位元とならないように、乗法群Ｇ１の要素ｇと乗法群Ｇ２の要素ｇ２とを選択する。
なお、乗法群Ｇ１と乗法群Ｇ２とが同じ乗法群である場合には、乗法群Ｇ１の要素ｇと乗法群Ｇ２の要素ｇ２とが、同一の要素であってもよい。【０２０７】
公開パラメータ生成部１１３は、ＣＰＵ９１１などの処理装置を用いて、入力した群パラメータが表わす乗法群Ｇ１と、選択した乗法群Ｇ１の要素ｇと、入力した情報が表わす整数αとに基づいて、乗法群Ｇ１の要素ｇ１＝ｇ＾αを算出する。【０２０８】
公開パラメータ生成部１１３は、ＣＰＵ９１１などの処理装置を用いて、入力した群パラメータと、決定した鍵生成関数ＫＤＦと、決定したハッシュ関数ＨＦと、選択した乗法群Ｇ１の要素ｇと、算出した乗法群Ｇ１の要素ｇ１と、選択した４つの乗法群Ｇ２の要素ｇ２、ｈ１、ｈ２、ｈ３とを表わす情報を、公開暗号パラメータとして出力する。【０２０９】
識別情報入力部１３１は、ＣＰＵ９１１などの処理装置を用いて、受信者識別情報ＩＤを入力する。
以下の説明において、暗号パラメータ生成装置１００は、受信者識別情報ＩＤを整数として取り扱う。
例えば、暗号パラメータ生成装置１００は、メールアドレスなどの任意の長さのビット列を、整数値を表わすビット列として取り扱うことにより、受信者識別情報を整数として取り扱う。
あるいは、暗号パラメータ生成装置１００は、メールアドレスなどの任意の長さのビット列を、ハッシュ関数（公開パラメータ生成部１１３が決定したハッシュ関数ＨＦと同じハッシュ関数であってもよいし、異なるハッシュ関数であってもよい。）の入力とし、ハッシュ関数により算出した整数を取得して、受信者識別情報としてもよい。【０２１０】
すなわち、識別情報入力部１３１は、ＣＰＵ９１１などの処理装置を用いて、整数ＩＤを受信者識別情報として入力する。
識別情報入力部１３１は、ＣＰＵ９１１などの処理装置を用いて、入力した整数ＩＤを出力する。【０２１１】
秘密鍵生成部１３２は、ＣＰＵ９１１などの処理装置を用いて、秘密情報記憶部１２１が記憶した整数αを表わす情報と、パラメータ記憶部１２２が記憶した公開暗号パラメータと、識別情報入力部１３１が出力した整数ＩＤとを入力する。【０２１２】
秘密鍵生成部１３２は、ＣＰＵ９１１などの処理装置を用いて、入力した公開暗号パラメータが表わす自然数ｒに基づいて、３つの整数ｒＩＤ，１、ｒＩＤ，２、ｒＩＤ，３をランダムに生成する。３つの整数ｒＩＤ，１、ｒＩＤ，２、ｒＩＤ，３は、いずれも１以上自然数ｒ未満の整数であり、互いに異なる整数を生成する。【０２１３】
秘密鍵生成部１３２は、ＣＰＵ９１１などの処理装置を用いて、入力した情報が表わす整数αと、入力した整数ＩＤとに基づいて、αとＩＤとの差（α−ＩＤ）の逆数１／（α−ＩＤ）を算出する。なお、ここでいう逆数とは、有限体Ｚ／ｒＺ上における逆数のことである。すなわち、（α−ＩＤ）と逆数（仮に、ｘとする。）との積（α−ＩＤ）・ｘを自然数ｒで割った余りが１となる１以上ｒ未満の整数ｘのことを、（α−ＩＤ）の逆数と呼び、１／（α−ＩＤ）と記述する。
なお、自然数ｒは素数であるから、α−ＩＤが０（または自然数ｒの倍数）でない限り、（α−ＩＤ）の逆数が１つ存在し、コンピュータのＣＰＵ９１１などの処理装置を用いて、実用的な時間内に算出可能である。
ここで、自然数ｒは非常に大きな自然数なので、α−ＩＤが０（または自然数ｒの倍数）となる確率は極めて低く、無視してもよい。【０２１４】
秘密鍵生成部１３２は、ＣＰＵ９１１などの処理装置を用いて、入力した公開暗号パラメータが表わす乗法群Ｇ２と、乗法群Ｇ２の要素ｇ２と、生成した整数ｒＩＤ，１とに基づいて、乗法群Ｇ２の要素ｇ２の（−ｒＩＤ，１）乗である乗法群Ｇ２の要素ｇ２＾（−ｒＩＤ，１）を算出する。【０２１５】
秘密鍵生成部１３２は、ＣＰＵ９１１などの処理装置を用いて、入力した公開暗号パラメータが表わす乗法群Ｇ２と、乗法群Ｇ２の要素ｈ１と、算出した乗法群Ｇ２の要素ｇ２＾（−ｒＩＤ，１）とに基づいて、乗法群Ｇ２の要素ｈ１と乗法群Ｇ２の要素ｇ２＾（−ｒＩＤ，１）との積である乗法群Ｇ２の要素ｈ１・ｇ２＾（−ｒＩＤ，１）を算出する。【０２１６】
秘密鍵生成部１３２は、ＣＰＵ９１１などの処理装置を用いて、算出した乗法群Ｇ２の要素ｈ１・ｇ２＾（−ｒＩＤ，１）と、算出した整数１／（α−ＩＤ）とに基づいて、乗法群Ｇ２の要素ｈ１・ｇ２＾（−ｒＩＤ，１）の１／（α−ＩＤ）乗である乗法群Ｇ２の要素ｈＩＤ，１＝（ｈ１・ｇ２＾（−ｒＩＤ，１））＾（１／（α−ＩＤ））を算出する。【０２１７】
秘密鍵生成部１３２は、ＣＰＵ９１１などの処理装置を用いて、同様に、乗法群Ｇ２の要素ｈＩＤ，２＝（ｈ２・ｇ２＾（−ｒＩＤ，２））＾（１／（α−ＩＤ））と、乗法群Ｇ２の要素ｈＩＤ，３＝（ｈ３・ｇ２＾（−ｒＩＤ，３））＾（１／（α−ＩＤ））とを算出する。【０２１８】
秘密鍵生成部１３２は、ＣＰＵ９１１などの処理装置を用いて、算出した３つの整数ｒＩＤ，１、ｒＩＤ，２、ｒＩＤ，３と、算出した３つの乗法群Ｇ２の要素ｈＩＤ，１、ｈＩＤ，２、ｈＩＤ，３とを表わす情報を、秘密鍵ｄＩＤとして出力する。【０２１９】
次に、暗号文生成装置２００について説明する。
暗号文生成装置２００の機能ブロックの構成も、実施の形態１で説明したものと同様なので、図５を用いて、実施の形態１と異なる部分について説明する。【０２２０】
暗号文生成装置２００は、暗号パラメータ生成装置１００と同様、受信者識別情報ＩＤを整数として取り扱う。【０２２１】
受信者識別入力部２３２は、ＣＰＵ９１１などの処理装置を用いて、ｎ人の受信者（ｎは、１以上の整数。）をそれぞれ識別するｎ個の受信者識別情報として、ｎ個の整数ＩＤｉ（ｉは、１以上ｎ以下の整数。）を入力する。
受信者識別入力部２３２は、ＣＰＵ９１１などの処理装置を用いて、入力したｎ個の整数ＩＤｉを出力する。【０２２２】
乱数生成部２２２は、ＣＰＵ９１１などの処理装置を用いて、暗号パラメータ記憶部２１０が記憶した公開暗号パラメータを入力する。
乱数生成部２２２は、ＣＰＵ９１１などの処理装置を用いて、入力した公開暗号パラメータが表わす自然数ｒに基づいて、ｎ人の受信者にそれぞれ対応するｎ個の１以上自然数ｒ未満の整数ｓｉ（ｉは、１以上ｎ以下の整数。）をランダムに生成する。
乱数生成部２２２は、ＣＰＵ９１１などの処理装置を用いて、生成したｎ個の整数ｓｉを表わす情報を出力する。【０２２３】
第一暗号文生成部２４１は、ＣＰＵ９１１などの処理装置を用いて、暗号パラメータ記憶部２１０が記憶した公開暗号パラメータと、乱数生成部２２２が出力したｎ個の整数ｓｉを表わす情報と、平文入力部２３１が出力した平文Ｍとを入力する。【０２２４】
第一暗号文生成部２４１は、ＣＰＵ９１１などの処理装置を用いて、入力した公開暗号パラメータが表わすペアリングｅと、乗法群Ｇ１の要素ｇと、乗法群Ｇ２の要素ｈ１とに基づいて、乗法群Ｇ１の要素ｇと乗法群Ｇ２の要素ｈ１とのペアリング値である乗法群ＧＴの要素ｅ（ｇ，ｈ１）を算出する。
なお、乗法群ＧＴの要素ｅ（ｇ，ｈ１）は、整数ｓｉや平文Ｍにかかわらず一定なので、前もって算出し、磁気ディスク装置９２０などの記憶装置を用いて記憶しておいてもよい。【０２２５】
第一暗号文生成部２４１は、ＣＰＵ９１１などの処理装置を用いて、入力した公開暗号パラメータが表わす乗法群ＧＴと、算出した乗法群ＧＴの要素ｅ（ｇ，ｈ１）と、入力した情報が表わすｎ個の整数ｓｉとに基づいて、乗法群ＧＴの要素ｅ（ｇ，ｈ１）のｓｉ乗であるｎ個の乗法群ＧＴの要素ｅ（ｇ，ｈ１）＾ｓｉ（ｉは、１以上ｎ以下の整数。）を算出する。【０２２６】
第一暗号文生成部２４１は、ＣＰＵ９１１などの処理装置を用いて、入力した公開暗号パラメータが表わす鍵生成関数ＫＤＦと、算出したｎ個の乗法群ＧＴの要素ｅ（ｇ，ｈ１）＾ｓｉとに基づいて、乗法群ＧＴの要素ｅ（ｇ，ｈ１）＾ｓｉを鍵生成関数ＫＤＦにより変換した所定の長さのビット列であるｎ個の鍵ビット列ｋｉ＝ＫＤＦ（ｅ（ｇ，ｈ１）＾ｓｉ）（ｉは、１以上ｎ以下の整数。）を算出する。【０２２７】
第一暗号文生成部２４１は、ＣＰＵ９１１などの処理装置を用いて、入力した平文Ｍと、算出したｎ個の鍵ビット列ｋｉとに基づいて、平文Ｍをｎ個の鍵ビット列ｋｉによりそれぞれ暗号化したｎ個のビット列を生成して、ｎ個の第一暗号文Ｃ１ｉ（ｉは、１以上ｎ以下の整数。）とする。
平文Ｍのビット長と鍵ビット列ｋｉのビット長とが等しい場合、例えば、第一暗号文生成部２４１は、平文Ｍと鍵ビット列ｋｉとの間のビットごとの排他的論理和を算出し、第一暗号文Ｃ１ｉとする。
なお、平文Ｍを暗号化する方式は、排他的論理和演算を用いる方式に限らず、鍵ビット列ｋｉと同一のビット列があれば第一暗号文Ｃ１ｉから平文Ｍを復元できる暗号方式なら、他の暗号方式であってもよい。【０２２８】
第一暗号文生成部２４１は、ＣＰＵ９１１などの処理装置を用いて、生成したｎ個の第一暗号文Ｃ１ｉを出力する。【０２２９】
第二暗号文生成部２４２は、ＣＰＵ９１１などの処理装置を用いて、暗号パラメータ記憶部２１０が記憶した公開暗号パラメータと、乱数生成部２２２が出力したｎ個の整数ｓｉを表わす情報と、受信者識別入力部２３２が出力したｎ個の整数ＩＤｉとを入力する。【０２３０】
第二暗号文生成部２４２は、ＣＰＵ９１１などの処理装置を用いて、入力した公開暗号パラメータが表わす乗法群Ｇ１と、乗法群Ｇ１の要素ｇと、入力したｎ個の整数ＩＤｉとに基づいて、乗法群Ｇ１の要素ｇの（−ＩＤｉ）乗であるｎ個の乗法群Ｇ１の要素ｇ＾（−ＩＤｉ）（ｉは、１以上ｎ以下の整数。）を算出する。
第二暗号文生成部２４２は、ＣＰＵ９１１などの処理装置を用いて、入力した公開暗号パラメータが表わす乗法群Ｇ１と、乗法群Ｇ１の要素ｇ１と、算出したｎ個乗法群Ｇ１の要素ｇ＾（−ＩＤｉ）とに基づいて、乗法群Ｇ１の要素ｇ１と乗法群Ｇ１の要素ｇ＾（−ＩＤｉ）との積である乗法群Ｇ１の要素ｇ１・ｇ＾（−ＩＤｉ）（ｉは、１以上ｎ以下の整数。）を算出する。【０２３１】
第二暗号文生成部２４２は、ＣＰＵ９１１などの処理装置を用いて、入力した公開暗号パラメータが表わす乗法群Ｇ１と、入力した情報が表わすｎ個の整数ｓｉと、算出したｎ個の乗法群Ｇ１の要素ｇ１・ｇ＾（−ＩＤｉ）とに基づいて、乗法群Ｇ１の要素ｇ１・ｇ＾（−ＩＤｉ）のｓｉ乗であるｎ個の乗法群Ｇ１の要素ｕｉ＝（ｇ１・ｇ＾（−ＩＤｉ））＾ｓｉ（ｉは、１以上ｎ以下の整数。）を算出する。
第二暗号文生成部２４２は、ＣＰＵ９１１などの処理装置を用いて、算出したｎ個の乗法群Ｇ１の要素ｕｉをそれぞれ表わすビット列を、ｎ個の第二暗号文Ｃ２ｉ（ｉは、１以上ｎ以下の整数。）として出力する。【０２３２】
第三暗号文生成部２４３は、ＣＰＵ９１１などの処理装置を用いて、暗号パラメータ記憶部２１０が記憶した公開暗号パラメータと、乱数生成部２２２が出力したｎ個の整数ｓｉを表わす情報とを入力する。【０２３３】
第三暗号文生成部２４３は、ＣＰＵ９１１などの処理装置を用いて、入力した公開暗号パラメータが表わすペアリングｅと、乗法群Ｇ１の要素ｇと、乗法群Ｇ２の要素ｇ２とに基づいて、乗法群Ｇ１の要素ｇと乗法群Ｇ２の要素ｇ２とのペアリング値である乗法群ＧＴの要素ｅ（ｇ，ｇ２）を算出する。
なお、乗法群ＧＴの要素ｅ（ｇ，ｇ２）は、整数ｓｉにかかわらず一定なので、前もって算出し、磁気ディスク装置９２０などの記憶装置を用いて記憶しておいてもよい。【０２３４】
第三暗号文生成部２４３は、ＣＰＵ９１１などの処理装置を用いて、入力した公開暗号パラメータが表わす乗法群ＧＴと、入力した情報が表わすｎ個の整数ｓｉと、算出した乗法群ＧＴの要素ｅ（ｇ，ｇ２）とに基づいて、乗法群ＧＴの要素ｅ（ｇ，ｇ２）のｓｉ乗であるｎ個の乗法群ＧＴの要素ｅ（ｇ，ｇ２）＾ｓｉ（ｉは、１以上ｎ以下の整数。）を算出する。
第三暗号文生成部２４３は、ＣＰＵ９１１などの処理装置を用いて、算出したｎ個の乗法群ＧＴの要素ｅ（ｇ，ｇ２）＾ｓｉをそれぞれ表わすビット列を、ｎ個の第三暗号文Ｃ３ｉ（ｉは、１以上ｎ以下の整数。）を出力する。【０２３５】
ハッシュ値算出部２４４は、ＣＰＵ９１１などの処理装置を用いて、暗号パラメータ記憶部２１０が記憶した公開暗号パラメータと、第一暗号文生成部２４１が出力したｎ個の第一暗号文Ｃ１ｉと、第二暗号文生成部２４２が出力したｎ個の第二暗号文Ｃ２ｉと、第三暗号文生成部２４３が出力したｎ個の第三暗号文Ｃ３ｉとを入力する。
ハッシュ値算出部２４４は、ＣＰＵ９１１などの処理装置を用いて、入力したｎ個の第一暗号文Ｃ１ｉと、ｎ個の第二暗号文Ｃ２ｉと、ｎ個の第三暗号文Ｃ３ｉとをそれぞれ結合して、ｎ個の結合暗号文を生成する。【０２３６】
ハッシュ値算出部２４４は、ＣＰＵ９１１などの処理装置を用いて、入力した公開暗号パラメータが表わすハッシュ関数ＨＦと、生成したｎ個の結合暗号文とに基づいて、ｎ個の結合暗号文をハッシュ関数ＨＦによりそれぞれ変換したｎ個の自然数βｉを算出し、ｎ個のハッシュ値Ｈｉとする。
ハッシュ値算出部２４４は、ＣＰＵ９１１などの処理装置を用いて、算出したｎ個の自然数βｉを表わす情報と、生成したｎ個の結合暗号文とを出力する。【０２３７】
暗号文検証文生成部２４５は、ＣＰＵ９１１などの処理装置を用いて、暗号パラメータ記憶部２１０が記憶した公開暗号パラメータと、乱数生成部２２２が出力したｎ個の整数ｓｉを表わす情報と、ハッシュ値算出部２４４が出力したｎ個の自然数βｉを表わす情報とを入力する。【０２３８】
暗号文検証文生成部２４５は、ＣＰＵ９１１などの処理装置を用いて、入力した公開暗号パラメータが表わすペアリングｅと、乗法群Ｇ１の要素ｇと、乗法群Ｇ２の要素ｈ２とに基づいて、乗法群Ｇ１の要素ｇと乗法群Ｇ２の要素ｈ２とのペアリング値である乗法群ＧＴの要素ｅ（ｇ，ｈ２）を算出する。
暗号文検証文生成部２４５は、ＣＰＵ９１１などの処理装置を用いて、入力した公開暗号パラメータが表わすペアリングｅと、乗法群Ｇ１の要素ｇと、乗法群Ｇ２の要素ｈ３とに基づいて、乗法群Ｇ１の要素ｇと乗法群Ｇ２の要素ｈ３とのペアリング値である乗法群ＧＴの要素ｅ（ｇ，ｈ３）を算出する。
なお、乗法群ＧＴの要素ｅ（ｇ，ｈ２）及び乗法群ＧＴの要素ｅ（ｇ，ｈ３）は、整数ｓｉにかかわらず一定なので、前もって算出し、磁気ディスク装置９２０などの記憶装置を用いて記憶しておいてもよい。【０２３９】
暗号文検証文生成部２４５は、ＣＰＵ９１１などの処理装置を用いて、入力した公開暗号パラメータが表わす乗法群ＧＴと、入力した情報が表わすｎ個の整数ｓｉと、算出した乗法群ＧＴの要素ｅ（ｇ，ｈ２）とに基づいて、乗法群ＧＴの要素ｅ（ｇ，ｈ２）のｓｉ乗であるｎ個の乗法群ＧＴの要素ｅ（ｇ，ｈ２）＾ｓｉ（ｉは、１以上ｎ以下の整数。）を算出する。【０２４０】
暗号文検証文生成部２４５は、ＣＰＵ９１１などの処理装置を用いて、入力した情報が表わすｎ個の整数ｓｉと、入力した情報が表わすｎ個の自然数βｉとに基づいて、整数ｓｉと自然数βｉとの積であるｎ個の整数（ｓｉ・βｉ）（ｉは、１以上ｎ以下の整数。）をそれぞれ算出する。【０２４１】
暗号文検証文生成部２４５は、ＣＰＵ９１１などの処理装置を用いて、入力した公開暗号パラメータが表わす乗法群ＧＴと、算出した乗法群ＧＴの要素ｅ（ｇ，ｈ３）と、算出したｎ個の整数（ｓｉ・βｉ）とに基づいて、乗法群ＧＴの要素ｅ（ｇ，ｈ３）の（ｓｉ・βｉ）乗であるｎ個の乗法群ＧＴの要素ｅ（ｇ，ｈ３）＾（ｓｉ・βｉ）（ｉは、１以上ｎ以下の整数。）を算出する。【０２４２】
暗号文検証文生成部２４５は、ＣＰＵ９１１などの処理装置を用いて、入力した公開暗号パラメータが表わす乗法群ＧＴと、算出したｎ個の乗法群ＧＴの要素ｅ（ｇ，ｈ２）＾ｓｉと、算出したｎ個の乗法群ＧＴの要素ｅ（ｇ，ｈ３）＾（ｓｉ・βｉ）とに基づいて、乗法群ＧＴの要素ｅ（ｇ，ｈ２）＾ｓｉと乗法群ＧＴの要素ｅ（ｇ，ｈ３）＾（ｓｉ・βｉ）との積であるｎ個の乗法群ＧＴの要素ｙｉ＝ｅ（ｇ，ｈ２）＾ｓｉ・ｅ（ｇ，ｈ３）＾（ｓｉ・βｉ）（ｉは、１以上ｎ以下の整数。）を算出する。【０２４３】
暗号文検証文生成部２４５は、ＣＰＵ９１１などの処理装置を用いて、算出したｎ個の乗法群ＧＴの要素ｙｉをそれぞれ表わすビット列を、ｎ個の暗号文検証文ＣＣｉ（ｉは、１以上ｎ以下の整数。）として出力する。【０２４４】
暗号文結合部２４６は、ＣＰＵ９１１などの処理装置を用いて、ハッシュ値算出部２４４が出力したｎ個の結合暗号文と、暗号文検証文生成部２４５が出力したｎ個の暗号文検証文ＣＣｉとを入力する。
暗号文結合部２４６は、ＣＰＵ９１１などの処理装置を用いて、入力したｎ個の結合暗号文と、入力したｎ個の暗号文検証文とをすべて結合して、１つの鍵暗号文Ｃを生成する。
暗号文結合部２４６は、ＣＰＵ９１１などの処理装置を用いて、生成した１つの鍵暗号文Ｃを出力する。【０２４５】
なお、この例において、暗号文結合部２４６は、ハッシュ値算出部２４４が出力したｎ個の結合暗号文を入力するが、結合暗号文は第一暗号文Ｃ１ｉと第二暗号文Ｃ２ｉと第三暗号文Ｃ３ｉとを結合したものなので、暗号文結合部２４６は、ｎ個の第一暗号文Ｃ１ｉとｎ個の第二暗号文Ｃ２ｉとｎ個の第三暗号文Ｃ３ｉとを入力したことになる。【０２４６】
図１１は、この実施の形態における対比例である暗号文生成装置２００のなかでやり取りされる情報の流れの一例を示す図である。【０２４７】
受信者識別入力部２３２は、ｎ個の受信者識別情報ＩＤ１、ＩＤ２、…、ＩＤｎを入力する。
乱数生成部２２２は、受信者識別入力部２３２が入力した受信者識別情報ＩＤ１、ＩＤ２、…、ＩＤｎの数と同じ数であるｎ個の整数ｓ１、ｓ２、…、ｓｎを生成する。
第一暗号文生成部２４１は、平文Ｍと整数ｓ１とに基づいて第一暗号文Ｃ１１を生成し、平文Ｍと整数ｓ２とに基づいて第一暗号文Ｃ１２を生成し、…、平文Ｍと整数ｓｎとに基づいて第一暗号文Ｃ１ｎを生成する。
第二暗号文生成部２４２は、受信者識別情報ＩＤ１と整数ｓ１とに基づいて第二暗号文Ｃ２１を生成し、受信者識別情報ＩＤ２と整数ｓ２とに基づいて第二暗号文Ｃ２２を生成し、…、受信者識別情報ＩＤｎと整数ｓｎとに基づいて第二暗号文Ｃ２ｎを生成する。
第三暗号文生成部２４３は、整数ｓ１に基づいて第三暗号文Ｃ３１を生成し、整数ｓ２に基づいて第三暗号文Ｃ３２を生成し、…、整数ｓｎに基づいて第三暗号文Ｃ３ｎを生成する。【０２４８】
ハッシュ値算出部２４４は、第一暗号文Ｃ１１と第二暗号文Ｃ２１と第三暗号文Ｃ３１とを結合して結合暗号文（Ｃ１１｜Ｃ２１｜Ｃ３１）を生成し、第一暗号文Ｃ１２と第二暗号文Ｃ２２と第三暗号文Ｃ３２とを結合して結合暗号文（Ｃ１２｜Ｃ２２｜Ｃ３２）を生成し、…、第一暗号文Ｃ１ｎと第二暗号文Ｃ２ｎと第三暗号文Ｃ３ｎとを結合して結合暗号文（Ｃ１ｎ｜Ｃ２ｎ｜Ｃ３ｎ）を生成する。ここで、「｜」は結合を表わす。例えば、（Ｃ１１｜Ｃ２１｜Ｃ３１）は、ビット列Ｃ１１の後ろにビット列Ｃ２１を結合し、更にその後にビット列Ｃ３１を結合したビット列を表わす。なお、結合の順序は、これと異なる順序であってもよい。
ハッシュ値算出部２４４は、生成した結合暗号文（Ｃ１１｜Ｃ２１｜Ｃ３１）に基づいてハッシュ値Ｈ１を算出し、生成した結合暗号文（Ｃ１２｜Ｃ２２｜Ｃ３２）に基づいてハッシュ値Ｈ２を算出し、…、生成した結合暗号文（Ｃ１ｎ｜Ｃ２ｎ｜Ｃ３ｎ）に基づいてハッシュ値Ｈｎを算出する。
暗号文検証文生成部２４５は、整数ｓ１とハッシュ値Ｈ１とに基づいて暗号文検証文ＣＣ１を生成し、整数ｓ２とハッシュ値Ｈ２とに基づいて暗号文検証文ＣＣ２を生成し、…、整数ｓｎとハッシュ値Ｈｎとに基づいて暗号文検証文ＣＣｎを生成する。【０２４９】
暗号文結合部２４６は、ｎ個の結合暗号文（Ｃ１１｜Ｃ２１｜Ｃ３１）、（Ｃ１２｜Ｃ２２｜Ｃ３２）、…、（Ｃ１ｎ｜Ｃ２ｎ｜Ｃ３ｎ）と、ｎ個の暗号文検証文ＣＣ１、ＣＣ２、…、ＣＣｎとをすべて結合して、１つの鍵暗号文Ｃ＝（Ｃ１１｜Ｃ２１｜Ｃ３１｜ＣＣ１｜Ｃ１２｜Ｃ２２｜Ｃ３２｜ＣＣ２｜…｜Ｃ１ｎ｜Ｃ２ｎ｜Ｃ３ｎ｜ＣＣｎ）を生成する。
なお、この例では、１人の受信者に対応する第一暗号文〜暗号文検証文を一箇所にまとめる順序で暗号文を結合して鍵暗号文Ｃを生成するが、結合の順序はこれと異なる順序であってもよい。例えば、（Ｃ１１｜Ｃ１２｜…｜Ｃ１ｎ｜Ｃ２１｜Ｃ２２｜…｜Ｃ２ｎ｜Ｃ３１｜Ｃ３２｜…｜Ｃ３ｎ｜ＣＣ１｜ＣＣ２｜…｜ＣＣｎ）のように、第一暗号文は第一暗号文同士、第二暗号文は第二暗号文同士を１箇所にまとめる順序で結合してもよい。
この例のように、１人の受信者に対応する第一暗号文〜暗号文検証文を一箇所にまとめる順序で結合するほうが、ハッシュ値算出部２４４が結合した結合暗号文をそのまま結合して鍵暗号文Ｃを生成できるので、好ましい。また、暗号文受信装置が対応する受信者に対応する暗号文を容易に見つけることができる利点もある。【０２５０】
次に、暗号文受信装置３０１〜３０３について説明する。
暗号文受信装置３０１〜３０３の機能ブロックの構成も、実施の形態１で説明したものと同様なので、図６を用いて、実施の形態１と異なる部分について説明する。【０２５１】
暗号文分解部３４６は、ＣＰＵ９１１などの処理装置を用いて、暗号文受信部３５１が出力した１つの鍵暗号文Ｃを入力する。
暗号文分解部３４６は、ＣＰＵ９１１などの処理装置を用いて、入力した１つの鍵暗号文Ｃから、自身が対応する受信者に対応する対応第一暗号文Ｃ１ＩＤと、対応第二暗号文Ｃ２ＩＤと、対応第三暗号文Ｃ３ＩＤと、対応暗号文検証文ＣＣＩＤとを取得する。
暗号文分解部３４６は、ＣＰＵ９１１などの処理装置を用いて、取得した対応第一暗号文Ｃ１ＩＤと、対応第二暗号文Ｃ２ＩＤと、対応第三暗号文Ｃ３ＩＤと、対応暗号文検証文ＣＣＩＤとを出力する。【０２５２】
例えば、１つの鍵暗号文Ｃが、図１１に示したように、（Ｃ１１｜Ｃ２１｜Ｃ３１｜ＣＣ１｜Ｃ１２｜Ｃ２２｜Ｃ３２｜ＣＣ２｜…｜Ｃ１ｎ｜Ｃ２ｎ｜Ｃ３ｎ｜ＣＣｎ）という順序で暗号文を結合したものであるとする。
暗号文分解部３４６は、例えば、１つの鍵暗号文Ｃを、第一暗号文〜暗号文検証文のビット長の和ごとに分割して、（Ｃ１１｜Ｃ２１｜Ｃ３１｜ＣＣ１）、（Ｃ１２｜Ｃ２２｜Ｃ３２｜ＣＣ２）、…、（Ｃ１ｎ｜Ｃ２ｎ｜Ｃ３ｎ｜ＣＣｎ）とし、そのなかから、自分に対応する対応暗号文（Ｃ１ＩＤ｜Ｃ２ＩＤ｜Ｃ３ＩＤ｜ＣＣＩＤ）を取得する。
暗号文分解部３４６は、例えば、暗号文受信部３５１が受信した通知データ７２０の他の部分から、自分に対応する対応暗号文が何番目を判断し、判断結果に基づいて、対応暗号文を取得する。
次に、暗号文分解部３４６は、取得した対応暗号文（Ｃ１ＩＤ｜Ｃ２ＩＤ｜Ｃ３ＩＤ｜ＣＣＩＤ）を分割して、検証結合暗号文（Ｃ１ＩＤ｜Ｃ２ＩＤ｜Ｃ３ＩＤ）と、対応暗号文検証文ＣＣＩＤとを取得する。
更に、暗号文分解部３４６は、取得した検証結合暗号文（Ｃ１ＩＤ｜Ｃ２ＩＤ｜Ｃ３ＩＤ）を分割して、対応第一暗号文Ｃ１ＩＤと、対応第二暗号文Ｃ２ＩＤと、対応第三暗号文Ｃ３ＩＤとを取得する。
暗号文分解部３４６は、取得した対応第一暗号文Ｃ１ＩＤと、対応第二暗号文Ｃ２ＩＤと、対応第三暗号文Ｃ３ＩＤと、対応暗号文検証文ＣＣＩＤとを出力する。
また、この例では、検証ハッシュ値算出部３４４が検証結合暗号文（Ｃ１ＩＤ｜Ｃ２ＩＤ｜Ｃ３ＩＤ）を生成する手間を省くため、暗号文分解部３４６は、ＣＰＵ９１１などの処理装置を用いて、取得した検証結合暗号文（Ｃ１ＩＤ｜Ｃ２ＩＤ｜Ｃ３ＩＤ）も、あわせて出力する。【０２５３】
検証ハッシュ値算出部３４４は、ＣＰＵ９１１などの処理装置を用いて、暗号文分解部３４６が出力した対応第一暗号文Ｃ１ＩＤと、対応第二暗号文Ｃ２ＩＤと、対応第三暗号文Ｃ３ＩＤとを入力する。
検証ハッシュ値算出部３４４は、ＣＰＵ９１１などの処理装置を用いて、入力した対応第一暗号文Ｃ１ＩＤと、対応第二暗号文Ｃ２ＩＤと、対応第三暗号文Ｃ３ＩＤとを結合して、検証結合暗号文（Ｃ１ＩＤ｜Ｃ２ＩＤ｜Ｃ３ＩＤ）を生成する。なお、結合の順序は、暗号文生成装置２００のハッシュ値算出部２４４が結合暗号文を生成する際の順序と同一であれば、これと異なる順序であってもよい。
また、上述した例のように、暗号文分解部３４６が検証結合暗号文（Ｃ１ＩＤ｜Ｃ２ＩＤ｜Ｃ３ＩＤ）を出力する場合には、検証ハッシュ値算出部３４４は、検証結合暗号文（Ｃ１ＩＤ｜Ｃ２ＩＤ｜Ｃ３ＩＤ）を生成する代わりに、暗号文分解部３４６が出力した検証結合暗号文（Ｃ１ＩＤ｜Ｃ２ＩＤ｜Ｃ３ＩＤ）を入力してもよい。【０２５４】
検証ハッシュ値算出部３４４は、ＣＰＵ９１１などの処理装置を用いて、公開パラメータ記憶部３１０が記憶した公開暗号パラメータを入力する。
検証ハッシュ値算出部３４４は、ＣＰＵ９１１などの処理装置を用いて、入力した公開暗号パラメータが表わすハッシュ関数ＨＦと、生成あるいは入力した検証結合暗号文（Ｃ１ＩＤ｜Ｃ２ＩＤ｜Ｃ３ＩＤ）とに基づいて、検証結合暗号文（Ｃ１ＩＤ｜Ｃ２ＩＤ｜Ｃ３ＩＤ）をハッシュ関数ＨＦにより変換した自然数β’を算出し、ハッシュ値Ｈ’とする。
検証ハッシュ値算出部３４４は、ＣＰＵ９１１などの処理装置を用いて、算出した自然数β’を表わす情報を出力する。【０２５５】
暗号文検証部３４５は、ＣＰＵ９１１などの処理装置を用いて、公開パラメータ記憶部３１０が記憶した公開暗号パラメータと、秘密鍵記憶部３２３が記憶した秘密鍵ｄＩＤと、暗号文分解部３４６が出力した対応第二暗号文Ｃ２ＩＤと対応第三暗号文Ｃ３ＩＤと対応暗号文検証文ＣＣＩＤと、検証ハッシュ値算出部３４４が出力した自然数β’を表わす情報とを入力する。【０２５６】
暗号文検証部３４５は、ＣＰＵ９１１などの処理装置を用いて、入力した公開暗号パラメータが表わす乗法群Ｇ２と、入力した秘密鍵ｄＩＤが表わす乗法群Ｇ２の要素ｈＩＤ，３と、入力した情報が表わす自然数β’とに基づいて、乗法群Ｇ２の要素ｈＩＤ，３のβ’乗である乗法群Ｇ２の要素ｈＩＤ，３＾β’を算出する。
暗号文検証部３４５は、ＣＰＵ９１１などの処理装置を用いて、入力した公開暗号パラメータが表わす乗法群Ｇ２と、入力した秘密鍵ｄＩＤが表わす乗法群Ｇ２の要素ｈＩＤ，２と、算出した乗法群Ｇ２の要素ｈＩＤ，３＾β’とに基づいて、乗法群Ｇ２の要素ｈＩＤ，２と乗法群Ｇ２の要素ｈＩＤ，３＾β’との積である乗法群Ｇ２の要素ｈＩＤ，２・ｈＩＤ，３＾β’を算出する。
暗号文検証部３４５は、ＣＰＵ９１１などの処理装置を用いて、入力した公開暗号パラメータが表わすペアリングｅと、入力した対応第二暗号文Ｃ２ＩＤが表わす乗法群Ｇ１の要素ｕＩＤと、算出した乗法群Ｇ２の要素ｈＩＤ，２・ｈＩＤ，３＾β’とに基づいて、乗法群Ｇ１の要素ｕＩＤと乗法群Ｇ２の要素ｈＩＤ，２・ｈＩＤ，３＾β’とのペアリング値である乗法群ＧＴの要素ｅ（ｕＩＤ，ｈＩＤ，２・ｈＩＤ，３＾β’）を算出する。【０２５７】
暗号文検証部３４５は、ＣＰＵ９１１などの処理装置を用いて、入力した秘密鍵ｄＩＤが表わす整数ｒＩＤ，２と整数ｒＩＤ，３と、入力した情報が表わす自然数β’とに基づいて、整数ｒＩＤ，３と自然数β’との積と、整数ｒＩＤ，２との和である整数ｒＩＤ，２＋ｒＩＤ，３・β’を算出する。
暗号文検証部３４５は、ＣＰＵ９１１などの処理装置を用いて、入力した公開暗号パラメータが表わす乗法群ＧＴと、入力した対応第三暗号文Ｃ３ＩＤが表わす乗法群ＧＴの要素ｖＩＤと、算出した整数ｒＩＤ，２＋ｒＩＤ，３・β’とに基づいて、乗法群ＧＴの要素ｖＩＤのｒＩＤ，２＋ｒＩＤ，３・β’乗である乗法群ＧＴの要素ｖＩＤ＾（ｒＩＤ，２＋ｒＩＤ，３・β’）を算出する。【０２５８】
暗号文検証部３４５は、ＣＰＵ９１１などの処理装置を用いて、入力した公開暗号パラメータが表わす乗法群ＧＴと、算出した乗法群ＧＴの要素ｅ（ｕＩＤ，ｈＩＤ，２・ｈＩＤ，３＾β’）と、算出した乗法群ＧＴの要素ｖＩＤ＾（ｒＩＤ，２＋ｒＩＤ，３・β）とに基づいて、乗法群ＧＴの要素ｅ（ｕＩＤ，ｈＩＤ，２・ｈＩＤ，３＾β’）と乗法群ＧＴの要素ｖＩＤ＾（ｒＩＤ，２＋ｒＩＤ，３・β’）との積である乗法群ＧＴの要素ｙ’＝ｅ（ｕＩＤ，ｈＩＤ，２・ｈＩＤ，３＾β’）・ｖＩＤ＾（ｒＩＤ，２＋ｒＩＤ，３・β’）を算出する。【０２５９】
暗号文検証部３４５は、ＣＰＵ９１１などの処理装置を用いて、入力した対応暗号文検証文ＣＣＩＤが表わす乗法群ＧＴの要素ｙＩＤと、算出した乗法群ＧＴの要素ｙ’とを比較し、乗法群ＧＴの要素ｙＩＤと算出した乗法群ＧＴの要素ｙ’とが一致する場合に、暗号文受信部３５１が入力した１つの鍵暗号文Ｃに整合性があると判定し、一致しない場合に、暗号文受信部３５１が入力した１つの鍵暗号文Ｃに整合性がないと判定する。【０２６０】
ここで、暗号文生成装置２００の暗号文検証文生成部２４５が算出する乗法群ＧＴの要素ｙｉは、ｙｉ＝ｅ（ｇ，ｈ２）＾ｓｉ・ｅ（ｇ，ｈ３）＾（ｓｉ・βｉ）である。
また、暗号文生成装置２００の第二暗号文生成部２４２が算出した乗法群Ｇ１の要素ｕｉは、ｕｉ＝（ｇ１・ｇ＾（−ＩＤｉ））＾ｓｉであり、暗号パラメータ生成装置１００の公開パラメータ生成部１１３が算出した乗法群Ｇ１の要素ｇ１は、ｇ１＝ｇ＾αであるから、ｕｉ＝ｇ＾（ｓｉ・（α−ＩＤｉ））である。
また、暗号文生成装置２００の第三暗号文生成部２４３が算出した乗法群ＧＴの要素ｖｉは、ｖｉ＝ｅ（ｇ，ｇ２）＾ｓｉである。【０２６１】
一方、暗号文検証文生成部２４５が算出する乗法群ＧＴの要素ｙ’は、ｙ’＝ｅ（ｕＩＤ，ｈＩＤ，２・ｈＩＤ，３＾β’）・ｖＩＤ＾（ｒＩＤ，２＋ｒＩＤ，３・β’）である。ペアリングｅの双線形より、ｙ’＝ｅ（ｕＩＤ，ｈＩＤ，２）・ｅ（ｕＩＤ，ｈＩＤ，３）＾β’・ｖＩＤ＾（ｒＩＤ，２＋ｒＩＤ，３・β’）である。
また、暗号パラメータ生成装置１００の秘密鍵生成部１３２が算出した乗法群Ｇ２の要素ｈＩＤ，２、ｈＩＤ，３は、ｈＩＤ，２＝（ｈ２・ｇ２＾（−ｒＩＤ，２））＾（１／（α−ＩＤ））、ｈＩＤ，３＝（ｈ３・ｇ２＾（−ｒＩＤ，３））＾（１／（α−ＩＤ））であるから、ｅ（ｕＩＤ，ｈＩＤ，２）＝ｅ（ｇ，ｈ２・ｇ２＾（−ｒＩＤ，２））＾ｓＩＤ、ｅ（ｕＩＤ，ｈＩＤ，３）＝ｅ（ｇ，ｈ３・ｇ２＾（−ｒＩＤ，３））＾ｓＩＤである。
したがって、ｙ’＝ｅ（ｇ，ｈ２）＾ｓＩＤ・ｅ（ｇ，ｈ３）＾（ｓＩＤ・β’）である。１つの鍵暗号文Ｃに整合性があれば、β’＝βＩＤなので、ｙ’＝ｙＩＤとなる。【０２６２】
暗号文受信部３５１が入力した１つの鍵暗号文Ｃに整合性があると、暗号文検証部３４５が判定した場合、暗号文復号部３４１は、平文Ｍを復元するため、以下の処理をする。【０２６３】
暗号文復号部３４１は、ＣＰＵ９１１などの処理装置を用いて、公開パラメータ記憶部３１０が記憶した公開暗号パラメータと、秘密鍵記憶部３２３が記憶した秘密鍵ｄＩＤと、暗号文分解部３４６が出力した対応第一暗号文Ｃ１ＩＤと対応第二暗号文Ｃ２ＩＤと対応第三暗号文Ｃ３ＩＤとを入力する。
暗号文復号部３４１は、ＣＰＵ９１１などの処理装置を用いて、入力した公開暗号パラメータが表わすペアリングｅと、入力した秘密鍵ｄＩＤが表わす乗法群Ｇ２の要素ｈＩＤ，１と、入力した対応第二暗号文Ｃ２ＩＤが表わす乗法群Ｇ１の要素ｕＩＤとに基づいて、乗法群Ｇ１の要素ｕＩＤと乗法群Ｇ２の要素ｈＩＤ，１とのペアリング値である乗法群ＧＴの要素ｅ（ｕＩＤ，ｈＩＤ，１）を算出する。【０２６４】
暗号文復号部３４１は、ＣＰＵ９１１などの処理装置を用いて、入力した公開暗号パラメータが表わす乗法群ＧＴと、入力した秘密鍵ｄＩＤが表わす整数ｒＩＤ，１と、入力した対応第三暗号文Ｃ３ＩＤが表わす乗法群ＧＴの要素ｖＩＤとに基づいて、乗法群ＧＴの要素ｖＩＤのｒＩＤ，１乗である乗法群ＧＴの要素ｖＩＤ＾ｒＩＤ，１を算出する。
暗号文復号部３４１は、ＣＰＵ９１１などの処理装置を用いて、入力した公開暗号パラメータが表わす乗法群ＧＴと、算出した乗法群ＧＴの要素ｅ（ｕＩＤ，ｈＩＤ，１）と、算出した乗法群ＧＴの要素ｖＩＤ＾ｒＩＤ，１とに基づいて、乗法群ＧＴの要素ｅ（ｕＩＤ，ｈＩＤ，１）と乗法群ＧＴの要素ｖＩＤ＾ｒＩＤ，１との積である乗法群ＧＴの要素ｅ（ｕＩＤ，ｈＩＤ，１）・ｖＩＤ＾ｒＩＤ，１を算出する。【０２６５】
暗号文復号部３４１は、ＣＰＵ９１１などの処理装置を用いて、入力した公開暗号パラメータが表わす鍵生成関数ＫＤＦと、算出した乗法群ＧＴの要素ｅ（ｕＩＤ，ｈＩＤ，１）・ｖＩＤ＾ｒＩＤ，１とに基づいて、乗法群ＧＴの要素ｅ（ｕＩＤ，ｈＩＤ，１）・ｖＩＤ＾ｒＩＤ，１を鍵生成関数ＫＤＦにより変換した所定の長さのビット列である鍵ビット列ｋ’＝ＫＤＦ（ｅ（ｕＩＤ，ｈＩＤ，１）・ｖＩＤ＾ｒＩＤ，１）を算出する。
暗号文復号部３４１は、ＣＰＵ９１１などの処理装置を用いて、入力した対応第一暗号文Ｃ１ＩＤと、算出した鍵ビット列ｋ’とに基づいて、対応第一暗号文Ｃ１ＩＤを鍵ビット列ｋ’により復号したビット列を生成する。【０２６６】
ここで、暗号文生成装置２００の第一暗号文生成部２４１が算出する鍵ビット列ｋｉは、ｋｉ＝ＫＤＦ（ｅ（ｇ，ｈ１）＾ｓｉ）である。
一方、暗号文復号部３４１が算出する鍵ビット列ｋ’は、ｋ’＝ＫＤＦ（ｅ（ｕＩＤ，ｈＩＤ，１）・ｖＩＤ＾ｒＩＤ，１）である。
また、暗号パラメータ生成装置１００の秘密鍵生成部１３２が算出した乗法群Ｇ２の要素ｈＩＤ，１は、ｈＩＤ，１＝（ｈ１・ｇ２＾（−ｒＩＤ，１））＾（１／（α−ＩＤ））である。
したがって、ｋ’＝ＫＤＦ（ｅ（ｇ，ｈ１）＾ｓＩＤ）なので、ｋ’＝ｋＩＤとなる。【０２６７】
暗号文復号部３４１は、暗号文生成装置２００の第一暗号文生成部２４１が平文Ｍを暗号化した鍵ビット列と同一の鍵ビット列ｋ’により、対応第一暗号文Ｃ１ＩＤを復号するので、平文Ｍが復元できる。【０２６８】
次に、動作について説明する。【０２６９】
図１２は、この実施の形態における対比例である暗号パラメータ生成装置１００が公開暗号パラメータを設定するパラメータ設定処理の流れの一例を示すフローチャート図である。
なお、実施の形態１で説明したパラメータ設定処理の工程と共通する工程については、同一の符号を付す。【０２７０】
秘密情報生成工程Ｓ１１において、秘密情報生成部１１２は、ＣＰＵ９１１などの処理装置を用いて、群パラメータ記憶部１１１が記憶した群パラメータが表わす自然数ｒに基づいて、１以上自然数ｒ未満の整数αをランダムに生成する。
秘密情報記憶部１２１は、磁気ディスク装置９２０などの記憶装置を用いて、秘密情報生成部１１２が生成した整数αを表わす情報を記憶する。【０２７１】
暗号パラメータ生成工程Ｓ１２において、公開パラメータ生成部１１３は、ＣＰＵ９１１などの処理装置を用いて、群パラメータ記憶部１１１が記憶した群パラメータが表わす乗法群ＧＴと自然数ｒとに基づいて、鍵生成関数ＫＤＦとハッシュ関数ＨＦとを決定する。
公開パラメータ生成部１１３は、ＣＰＵ９１１などの処理装置を用いて、群パラメータ記憶部１１１が記憶した群パラメータが表わす乗法群Ｇ１と乗法群Ｇ２とに基づいて、合法群Ｇ１の要素ｇと、４つの乗法群Ｇ２の要素ｇ２、ｈ１、ｈ２、ｈ３とをランダムに選択する。
公開パラメータ生成部１１３は、ＣＰＵ９１１などの処理装置を用いて、群パラメータ記憶部１１１が記憶した群パラメータが表わす乗法群Ｇ１と、秘密情報生成工程Ｓ１１で秘密情報生成部１１２が生成した整数αと、選択した乗法群Ｇ１の要素ｇとに基づいて、乗法群Ｇ１の要素ｇ１＝ｇ＾αを算出する。
パラメータ記憶部１２２は、磁気ディスク装置９２０などの記憶装置を用いて、群パラメータ記憶部１１１が記憶した群パラメータと、決定した鍵生成関数ＫＤＦと、決定したハッシュ関数ＨＦと、選択した乗法群Ｇ１の要素ｇと、算出した乗法群Ｇ１の要素ｇ１と、選択した４つの乗法群Ｇ２の要素ｇ２、ｈ１、ｈ２、ｈ３とを表わす情報を、公開暗号パラメータとして記憶する。【０２７２】
暗号パラメータ公開工程Ｓ１３において、公開パラメータ公開部１１４は、ＣＰＵ９１１などの処理装置を用いて、群パラメータ記憶部１１１が記憶した群パラメータと、公開パラメータ生成部１１３が決定した鍵生成関数ＫＤＦとハッシュ関数ＨＦと、公開パラメータ生成部１１３が選択した乗法群Ｇ１の要素ｇと４つの乗法群Ｇ２の要素ｇ２、ｈ１、ｈ２、ｈ３と、公開パラメータ生成部１１３が算出した乗法群Ｇ１の要素ｇ１とを表わす情報を、公開暗号パラメータとして公開する。
公開パラメータ公開部１１４が公開した公開暗号パラメータは、暗号文生成装置２００及び暗号文受信装置３０１〜３０３が取得し、暗号パラメータ記憶部２１０及び公開パラメータ記憶部３１０が磁気ディスク装置９２０などの記憶装置を用いて記憶する。【０２７３】
図１３は、この実施の形態における対比例である暗号パラメータ生成装置１００が秘密鍵を設定する秘密鍵設定処理の流れの一例を示すフローチャート図である。
なお、実施の形態１で説明した秘密鍵設定処理の工程と共通する工程については、同一の符号を付す。【０２７４】
識別入力工程Ｓ２１において、識別情報入力部１３１は、ＣＰＵ９１１などの処理装置を用いて、受信者識別情報として整数ＩＤを入力する。【０２７５】
秘密鍵生成工程Ｓ２２において、秘密鍵生成部１３２は、ＣＰＵ９１１などの処理装置を用いて、暗号パラメータ記憶部２１０が記憶した公開暗号パラメータが表わす自然数ｒに基づいて、１以上自然数ｒ未満の３つの整数ｒＩＤ，１、ｒＩＤ，２、ｒＩＤ，３をランダムに生成する。
秘密鍵生成部１３２は、ＣＰＵ９１１などの処理装置を用いて、パラメータ記憶部１２２が記憶した公開暗号パラメータが表わす乗法群Ｇ２と、３つの乗法群Ｇ２の要素ｈ１、ｈ２、ｈ３と、生成した３つの整数ｒＩＤ，１、ｒＩＤ，２、ｒＩＤ，３とに基づいて、３つの乗法群Ｇ２の要素ｈＩＤ，１＝（ｈ１・ｇ２＾（−ｒＩＤ，１））＾（１／（α−ＩＤ））、ｈＩＤ，２＝（ｈ２・ｇ２＾（−ｒＩＤ，２））＾（１／（α−ＩＤ））、ｈＩＤ，３＝（ｈ３・ｇ２＾（−ｒＩＤ，３））＾（１／（α−ＩＤ））を算出する。【０２７６】
秘密鍵通知工程Ｓ２３において、秘密鍵通知部１３３は、ＣＰＵ９１１などの処理装置を用いて、秘密鍵生成工程Ｓ２２で秘密鍵生成部１３２が生成した３つの整数ｒＩＤ，１、ｒＩＤ，２、ｒＩＤ，３と、秘密鍵生成工程Ｓ２２で秘密鍵生成部１３２が算出した３つの乗法群Ｇ２の要素ｈＩＤ，１、ｈＩＤ，２、ｈＩＤ，３とを表わす情報を秘密鍵ｄＩＤとして、対応する暗号文受信装置に対して秘密裏に通知する。
秘密鍵通知部１３３が通知した秘密鍵ｄＩＤは、対応する暗号文受信装置が取得し、秘密鍵記憶部３２３が磁気ディスク装置９２０などの記憶装置を用いて記憶する。【０２７７】
図１４は、この実施の形態における対比例である暗号文生成装置２００が暗号文を生成する暗号文生成処理の流れの一例を示すフローチャート図である。
なお、実施の形態１で説明した暗号文生成処理の工程と共通する工程については、同一の符号を付す。【０２７８】
受信者識別入力工程Ｓ３２において、受信者識別入力部２３２は、ＣＰＵ９１１などの処理装置を用いて、ｎ人の受信者をそれぞれ識別するｎ個の受信者識別情報として、ｎ人の受信者にそれぞれ対応するｎ個の整数ＩＤｉを入力する。【０２７９】
乱数生成工程Ｓ３４において、乱数生成部２２２は、ＣＰＵ９１１などの処理装置を用いて、暗号パラメータ記憶部２１０が記憶した公開暗号パラメータが表わす自然数ｒに基づいて、ｎ人の受信者にそれぞれ対応するｎ個の１以上自然数ｒ未満の整数ｓｉをランダムに生成する。【０２８０】
第一暗号文生成工程Ｓ３５において、第一暗号文生成部２４１は、ＣＰＵ９１１などの処理装置を用いて、暗号パラメータ記憶部２１０が記憶した公開暗号パラメータが表わす乗法群ＧＴとペアリングｅと乗法群Ｇ１の要素ｇと乗法群Ｇ２の要素ｈ１と鍵生成関数ＫＤＦと、乱数生成工程Ｓ３４で乱数生成部２２２が生成したｎ人の受信者にそれぞれ対応するｎ個の整数ｓｉとに基づいて、ｎ人の受信者にそれぞれ対応するｎ個の鍵ビット列ｋｉ＝ＫＤＦ（ｅ（ｇ，ｈ１）＾ｓｉ）を算出する。
第一暗号文生成部２４１は、ＣＰＵ９１１などの処理装置を用いて、セッション鍵生成工程Ｓ３３でセッション鍵生成部２２１が生成したセッション鍵Ｋ（＝平文Ｍ）と、算出したｎ人の受信者にそれぞれ対応するｎ個の鍵ビット列ｋｉとに基づいて、１つのセッション鍵Ｋをｎ人の受信者にそれぞれ対応するｎ個の鍵ビット列ｋｉによりそれぞれ暗号化して、ｎ人の受信者にそれぞれ対応するｎ個の第一暗号文Ｃ１ｉを生成する。【０２８１】
第二暗号文生成工程Ｓ３６において、第二暗号文生成部２４２は、ＣＰＵ９１１などの処理装置を用いて、暗号パラメータ記憶部２１０が記憶した公開暗号パラメータが表わす乗法群Ｇ１と乗法群Ｇ１の要素ｇと乗法群Ｇ１の要素ｇ１と、受信者識別入力工程Ｓ３２で受信者識別入力部２３２が入力したｎ人の受信者にそれぞれ対応するｎ個の整数ＩＤｉと、乱数生成工程Ｓ３４で乱数生成部２２２が生成したｎ人の受信者にそれぞれ対応するｎ個の整数ｓｉとに基づいて、ｎ人の受信者にそれぞれ対応するｎ個の乗法群Ｇ１の要素ｕｉ＝（ｇ１・ｇ＾（−ＩＤｉ））＾ｓｉを算出する。
第二暗号文生成部２４２は、ＣＰＵ９１１などの処理装置を用いて、算出したｎ人の受信者にそれぞれ対応するｎ個の乗法群Ｇ１の要素ｕｉをそれぞれ表わすビット列を、ｎ人の受信者にそれぞれ対応するｎ個の第二暗号文Ｃ２ｉとする。【０２８２】
第三暗号文生成工程Ｓ３７において、第三暗号文生成部２４３は、ＣＰＵ９１１などの処理装置を用いて、暗号パラメータ記憶部２１０が記憶した公開暗号パラメータが表わす乗法群ＧＴとペアリングｅと乗法群Ｇ１の要素ｇと乗法群Ｇ２の要素ｇ２と、乱数生成工程Ｓ３４で乱数生成部２２２が生成したｎ人の受信者にそれぞれ対応するｎ個の整数ｓｉとに基づいて、ｎ人の受信者にそれぞれ対応するｎ個の乗法群ＧＴの要素ｖｉ＝ｅ（ｇ，ｇ２）＾ｓｉを算出する。
第三暗号文生成部２４３は、ＣＰＵ９１１などの処理装置を用いて、算出したｎ人の受信者にそれぞれ対応するｎ個の乗法群ＧＴの要素ｖｉをそれぞれ表わすビット列を、ｎ人の受信者にそれぞれ対応するｎ個の第三暗号文Ｃ３ｉとする。【０２８３】
ハッシュ値算出工程Ｓ３８において、ハッシュ値算出部２４４は、ＣＰＵ９１１などの処理装置を用いて、第一暗号文生成工程Ｓ３５で第一暗号文生成部２４１が生成したｎ人の受信者にそれぞれ対応するｎ個の第一暗号文Ｃ１ｉと、第二暗号文生成工程Ｓ３６で第二暗号文生成部２４２が生成したｎ人の受信者にそれぞれ対応するｎ個の第二暗号文Ｃ２ｉと、第三暗号文生成工程Ｓ３７で第三暗号文生成部２４３が生成したｎ人の受信者にそれぞれ対応するｎ個の第三暗号文Ｃ３ｉとに基づいて、ｎ人の受信者にそれぞれ対応するｎ個の第一暗号文Ｃ１ｉと、ｎ人の受信者にそれぞれ対応するｎ個の第一暗号文Ｃ２ｉと、ｎ人の受信者にそれぞれ対応するｎ個の第三暗号文Ｃ３ｉとをそれぞれ結合したｎ人の受信者にそれぞれ対応するｎ個の結合暗号文（Ｃ１ｉ｜Ｃ２ｉ｜Ｃ３ｉ）を生成する。
ハッシュ値算出部２４４は、ＣＰＵ９１１などの処理装置を用いて、暗号パラメータ記憶部２１０が記憶した公開暗号パラメータが表わすハッシュ関数ＨＦと、生成したｎ人の受信者にそれぞれ対応するｎ個の結合暗号文（Ｃ１ｉ｜Ｃ２ｉ｜Ｃ３ｉ）とに基づいて、ｎ人の受信者にそれぞれ対応するｎ個の結合暗号文（Ｃ１ｉ｜Ｃ２ｉ｜Ｃ３ｉ）をそれぞれハッシュ関数ＨＦにより変換したｎ人の受信者にそれぞれ対応するｎ個の整数βｉ＝ＨＦ（Ｃ１ｉ｜Ｃ２ｉ｜Ｃ３ｉ）を算出する。【０２８４】
暗号文検証文生成工程Ｓ３９において、暗号文検証文生成部２４５は、ＣＰＵ９１１などの処理装置を用いて、暗号パラメータ記憶部２１０が記憶した公開暗号パラメータが表わす乗法群ＧＴとペアリングｅと乗法群Ｇ１の要素ｇと２つの乗法群Ｇ２の要素ｈ２、ｈ３と、乱数生成工程Ｓ３４で乱数生成部２２２が生成したｎ人の受信者にそれぞれ対応するｎ個の整数ｓｉと、ハッシュ値算出工程Ｓ３８でハッシュ値算出部２４４が算出したｎ人の受信者にそれぞれ対応するｎ個の整数βｉとに基づいて、ｎ人の受信者にそれぞれ対応するｎ個の乗法群ＧＴの要素ｙｉ＝ｅ（ｇ，ｈ２）＾ｓｉ・ｅ（ｇ，ｈ３）＾（ｓｉ・βｉ）を算出する。
暗号文検証文生成部２４５は、ＣＰＵ９１１などの処理装置を用いて、算出したｎ人の受信者にそれぞれ対応するｎ個の乗法群ＧＴの要素ｙｉをそれぞれ表わすビット列を、ｎ人の受信者にそれぞれ対応するｎ個の暗号文検証文ＣＣｉとする。【０２８５】
図１５は、この実施の形態における対比例である暗号文受信装置３０１〜３０３が暗号文を受信する暗号文受信処理の流れの一例を示すフローチャート図である。
なお、実施の形態１で説明した暗号文受信処理の工程と共通する工程については、同一の符号を付す。【０２８６】
暗号文分解工程Ｓ５２において、暗号文分解部３４６は、ＣＰＵ９１１などの処理装置を用いて、通知データ受信工程で暗号文受信部３５１が出力した１つの鍵暗号文Ｃに基づいて、暗号文受信装置が対応する受信者に対応する１つの対応第一暗号文Ｃ１ＩＤと、１つの対応第二暗号文Ｃ２ＩＤと、１つの対応第三暗号文Ｃ３ＩＤと、１つの対応暗号文検証文ＣＣＩＤとを取得する。【０２８７】
検証ハッシュ値算出工程Ｓ５３において、検証ハッシュ値算出部３４４は、ＣＰＵ９１１などの処理装置を用いて、公開パラメータ記憶部３１０が記憶した公開暗号パラメータが表わすハッシュ関数ＨＦと、暗号文分解工程Ｓ５２で暗号文分解部３４６が取得した１つの対応第一暗号文Ｃ１ＩＤと１つの対応第二暗号文Ｃ２ＩＤと１つの対応第三暗号文Ｃ３ＩＤとを結合した１つの対応結合暗号文（Ｃ１ＩＤ｜Ｃ２ＩＤ｜Ｃ３ＩＤ）とに基づいて、１つの対応結合暗号文（Ｃ１ＩＤ｜Ｃ２ＩＤ｜Ｃ３ＩＤ）をハッシュ関数ＨＦにより変換した１つの整数β’を、検証ハッシュ値Ｈ’として算出する。【０２８８】
暗号文検証工程Ｓ５４において、暗号文検証部３４５は、ＣＰＵ９１１などの処理装置を用いて、公開パラメータ記憶部３１０が記憶した公開暗号パラメータが表わす乗法群ＧＴとペアリングｅと、秘密鍵記憶部３２３が記憶した秘密鍵ｄＩＤが表わす２つの整数ｒＩＤ，２とｒＩＤ，３と２つの乗法群Ｇ２の要素ｈＩＤ，２とｈＩＤ，３と、暗号文分解工程Ｓ５２で暗号文分解部３４６が取得した１つの検証第二暗号文Ｃ２ＩＤが表わす１つの乗法群Ｇ１の要素ｕＩＤと１つの検証第三暗号文Ｃ３ＩＤが表わす１つの乗法群ＧＴの要素ｖＩＤと、検証ハッシュ値算出工程Ｓ５３で検証ハッシュ値算出部３４４が算出した１つの整数β’とに基づいて、１つの乗法群ＧＴの要素ｙ’＝ｅ（ｕＩＤ，ｈＩＤ，２・ｈＩＤ，３＾β’）・ｖＩＤ＾（ｒＩＤ，２＋ｒＩＤ，３・β’）を算出する。
暗号文検証部３４５は、ＣＰＵ９１１などの処理装置を用いて、暗号文分解工程Ｓ５２で暗号文分解部３４６が取得した１つの対応暗号文検証文ＣＣＩＤが表わす１つの乗法群ＧＴの要素ｙＩＤと、算出した１つの乗法群ＧＴの要素ｙ’とを比較する。
乗法群ＧＴの要素ｙＩＤと乗法群ＧＴの要素ｙ’とが等しい場合、暗号文検証部３４５は、暗号文受信部３５１が受信した１つの鍵暗号文Ｃに整合性があると判定し、暗号文復号工程Ｓ５５へ進む。
乗法群ＧＴの要素ｙＩＤと乗法群ＧＴの要素ｙ’とが等しくない場合、暗号文検証部３４５は、暗号文受信部３５１が受信した１つの鍵暗号文Ｃに整合性がないと判定し、暗号文受信処理を終了する。【０２８９】
暗号文復号工程Ｓ５５において、暗号文復号部３４１は、ＣＰＵ９１１などの処理装置を用いて、公開パラメータ記憶部３１０が記憶した乗法群ＧＴとペアリングｅと鍵生成関数ＫＤＦと、秘密鍵記憶部３２３が記憶した秘密鍵ｄＩＤが表わす整数ｒＩＤ，１と乗法群Ｇ２の要素ｈＩＤ，１と、暗号文分解工程Ｓ５２で暗号文分解部３４６が取得した１つの対応第二暗号文Ｃ２ＩＤが表わす１つの乗法群Ｇ１の要素ｕＩＤと１つの対応第三暗号文Ｃ３ＩＤが表わす１つの乗法群ＧＴの要素ｖＩＤとに基づいて、１つの鍵ビット列ｋ’＝ＫＤＦ（ｅ（ｕＩＤ，ｈＩＤ，１）・ｖＩＤ＾ｒＩＤ，１）を算出する。
暗号文復号部３４１は、ＣＰＵ９１１などの処理装置を用いて、暗号文分解工程Ｓ５２で暗号文分解部３４６が取得した１つの対応第一暗号文Ｃ１ＩＤと、算出した１つの鍵ビット列ｋ’とに基づいて、鍵ビット列ｋ’により対応第一暗号文Ｃ１ＩＤを復号して、所定の長さのビット列を生成し、セッション鍵Ｋ’（＝平文Ｍ）とする。
上述したように、暗号文復号部３４１が生成するセッション鍵Ｋ’は、暗号文生成装置２００のセッション鍵生成部２２１が生成したセッション鍵Ｋと同一のビット列となる。【０２９０】
次に、この実施の形態における対比例であるＩＤベース暗号通信システムが使用するＩＤベース暗号方式の安全性について議論する。
なお、以下の証明においては、簡単のため、乗法群Ｇ１と乗法群Ｇ２とは同一の乗法群Ｇであるものとする。【０２９１】
まず、この実施の形態における対比例であるＩＤベース暗号方式が帰着する数学的な問題として、ｑ−Ｄ−ｔＡＢＤＨＥ問題（ｑ  Ｄｅｃｉｓｉｏｎａｌ  Ｔｒａｎｃａｔｅｄ  Ａｕｇｍｅｎｔｅｄ  Ｂｉｌｉｎｅａｒ  Ｄｉｆｆｉｅ−Ｈｅｌｌｍａｎ  Ｅｘｐｏｎｅｎｔ  Ｐｒｏｂｌｅｍ）を定義する。【０２９２】
ｑ−Ｄ−ｔＡＢＤＨＥ問題において、解答者Ｂには、ｑ＋３個の乗法群Ｇの要素ｇ’、ｇ’ｑ＋２、ｇ、ｇ１、…、ｇｑと、１つの乗法群ＧＴの要素Ｚとが与えられる。また、解答者Ｂには秘密の情報として、１以上乗法群Ｇの位数未満の整数αがある。
乗法群Ｇの要素ｇ及びｇ’は、ランダムに選択された乗法群Ｇの要素である。
乗法群Ｇの要素ｇｉ（ｉは、１以上ｑ以下の整数。）は、整数αのｉ乗を整数α＾ｉとし、乗法群Ｇの要素ｇのα＾ｉ乗である乗法群Ｇの要素ｇ＾（α＾ｉ）である。
乗法群Ｇの要素ｇ’ｑ＋２も同様である。すなわち、乗法群Ｇの要素ｇ’ｑ＋２＝ｇ’＾（α＾（ｑ＋２））である。
解答者Ｂは、乗法群Ｇの要素ｇｑ＋１＝ｇ＾（α＾（ｑ＋１））と、乗法群Ｇの要素ｇ’とのペアリング値である乗法群ＧＴの要素ｅ（ｇｑ＋１，ｇ’）が、与えられた乗法群ＧＴの要素Ｚと等しいか否かを判別する問題に答える。【０２９３】
実際にＺ＝ｅ（ｇｑ＋１，ｇ’）である分布をＰ、Ｚがランダムに選択した乗法群ＧＴの要素である分布をＲとする。
解答者Ｂのアドバンテージを、Ａｄｖｑ−ｄ−ｔａｂｄｈｅｋ、Ｇ，ＧＴ（Ｂ）＝｜Ｐｒ［Ｂ（１ｋ，Ｉ）＝１：Ｉ←Ｐ］−Ｐｒ［Ｂ（１ｋ，Ｉ）＝１：Ｉ←Ｒ］｜と定義する。ここで、Ｂ（１ｋ，Ｉ）は、解答者Ｂの判断結果を表わし、「Ｂ（１ｋ，Ｉ）＝１」は、Ｚ＝ｅ（ｇｑ＋１，ｇ’）であると判断したことを示す。また、「Ｉ←Ｐ」は実際にＺ＝ｅ（ｇｑ＋１，ｇ’）である事象、「Ｉ←Ｒ」はＺがランダムに選択した乗法群ＧＴの要素である事象を示す。すなわち、Ａｄｖｑ−ｄ−ｔａｂｄｈｅｋ、Ｇ，ＧＴ（Ｂ）は、実際にＺ＝ｅ（ｇｑ＋１，ｇ’）である場合において、解答者ＢがＺ＝ｅ（ｇｑ＋１，ｇ’）であると判断する（すなわち、解答者Ｂの判断が正しい）確率と、Ｚがランダムに選択した乗法群ＧＴの要素である場合において、解答者ＢがＺ＝ｅ（ｇｑ＋１，ｇ’）であると判断する（すなわち、解答者Ｂの判断が間違っている）確率との差の絶対値である。【０２９４】
また、Ａｄｖｑ−ｄ−ｔａｂｄｈｅｋ、Ｇ，ＧＴ（ｔ）＝ｍａｘ（Ａｄｖｑ−ｄ−ｔａｂｄｈｅｋ、Ｇ，ＧＴ（Ｂ））とする。これは、時間ｔの間に解答する解答者Ｂのうち、最も高いアドバンテージを有する解答者のアドバンテージを意味する。
Ａｄｖｑ−ｄ−ｔａｂｄｈｅｋ、Ｇ，ＧＴ（ｔ）≦εであるとき、（Ｇ，ＧＴ）で（ｔ，ε，ｑ）−Ｄ−ｔＡＢＤＨＥ仮定（あるいは、単に、「ｑ−Ｄ−ｔＡＢＤＨＥ仮定」）が成り立つという。【０２９５】
まず、この実施の形態における対比例である複数受信者のＩＤベース暗号方式Π’のもととなっている単独受信者のＩＤベース暗号方式ΠのＭＵ−ＩＮＤ−ＩＤ−ＣＣＡ２安全性を証明する。【０２９６】
攻撃者Ａは、暗号方式Πに対するアドバンテージＡｄｖｍｕｎ，Π，Γ（Ａ）＝｜Ｐｒ［Ｔ０］−１／２｜を有するものとする。ここで、Ｔ０は、ＭＵ−ＩＮＤ−ＩＤ−ＣＣＡ２安全性の定義において攻撃者Ａが挑戦するゲーム（以下、「Ｇ０」と呼ぶ。）で、ｂ＝ｂ’となる（すなわち、攻撃者Ａが正解する）事象を示す。Ｐｒ［Ｔ０］は、事象Ｔ０が発生する確率を示す。
また、ｑ＝ｑｘ＋ｎ＋１であるとする。
以下、同様に、ゲームＧλ（λは、１以上６以下の整数。）において、ｂ＝ｂ’となる事象を、Ｔλと呼ぶ。【０２９７】
ゲームＧ１は、攻撃者Ａが攻撃する対象が暗号システムΠではなく、解答者Ｂによってシミュレートされた暗号化オラクルＯＥ、鍵導出オラクルＯＸ、復号オラクルＯＤである点が、ゲームＧ０と異なる。【０２９８】
まず、解答者Ｂは、以下のようにして、ＰＫＧ用鍵生成機能Ｓをシミュレートする。
解答者Ｂは、１以上乗法群Ｇの位数ｒ未満の整数αをランダムに生成する。
解答者Ｂは、０以上ｒ未満のランダムな整数係数を有する３つのｑ次多項式ｆｊ（ｘ）（ｊは、１以上３以下の整数。）を生成する。
解答者Ｂは、鍵生成関数ＫＤＦと、衝突困難なハッシュ関数ＨＦとをランダムに生成する。【０２９９】
解答者Ｂは、乗法群Ｇの要素ｇをランダムに選択する。
解答者Ｂは、乗法群Ｇの要素ｇ１＝ｇ＾αを算出する。
解答者Ｂは、３つの乗法群Ｇの要素ｈ１＝ｇ＾ｆ１（α）、ｈ２＝ｇ＾ｆ２（α）、ｈ３＝ｇ＾ｆ３（α）を算出する。
解答者Ｂは、１以上ｒ未満の整数ｓ０をランダムに生成する。
解答者Ｂは、乗法群Ｇの要素ｇ’＝ｇ＾ｓ０を算出する。【０３００】
解答者Ｂは、共通パラメータｐａｒａｍｓ＝（ｇ，ｇ１，ｈ１，ｈ２，ｈ３，ＫＤＦ，ＨＦ）を出力する。
ここで、ｇ、α、ｆｊ（ｘ）、ｓ０はランダムであるから、共通パラメータｐａｒａｍｓの分布は、実際のＰＫＧ用鍵生成機能Ｓと同じ分布となる。【０３０１】
また、解答者Ｂは、以下のようにして、鍵導出オラクルＯＸをシミュレートする。
解答者Ｂは、入力したユーザの識別情報ＩＤ（整数として取り扱う）が整数αと等しい場合、拒絶する。これは、実際の暗号システムΠにおいても同様である。【０３０２】
ＩＤ≠αである場合、解答者Ｂは、３つの整数ｒＩＤ，ｊ＝ｆｊ（ＩＤ）（ｊは、１以上３以下の整数。）を算出する。
解答者Ｂは、（ｑ−１）次多項式ＦＩＤ，ｊ（ｘ）＝（ｆｊ（ｘ）−ｆｊ（ＩＤ））／（ｘ−ＩＤ）を算出する。
解答者Ｂは、３つの乗法群Ｇの要素ｈＩＤ，ｊ＝ｇ＾ＦＩＤ，ｊ（α）（ｊは、１以上３以下の整数。）を算出する。
解答者Ｂは、秘密鍵ｄＩＤとして、ｄＩＤ＝（ｒＩＤ，１，ｒＩＤ，２，ｒＩＤ，３，ｈＩＤ，１，ｈＩＤ，２，ｈＩＤ，３）を出力する。【０３０３】
ここで、ｈ１＝ｇ＾ｆ１（α）なので、ｈＩＤ，１＝ｇ＾（（ｆ１（α）−ｆ１（ＩＤ））／（α−ＩＤ））＝（ｈ１・ｇ＾（−ｆ１（ＩＤ）））＾（１／（α−ＩＤ））である。ｈＩＤ，２、ｈＩＤ，３も同様である。ｒＩＤ，ｊ＝ｆｊ（ＩＤ）なので、ｒＩＤ，ｊとｈＩＤ，ｊとの関係は、実際の暗号システムΠと同じ関係になっている。【０３０４】
また、解答者Ｂは、以下のようにして、復号オラクルＯＤをシミュレートする。
解答者Ｂは、上述した手順で鍵導出オラクルＯＸをシミュレートして、秘密鍵ｄＩＤを生成する。
解答者Ｂは、生成した秘密鍵ｄＩＤに基づいて、実際の暗号システムΠと同様の手順により、暗号文Ｃを復号する。【０３０５】
更に、解答者Ｂは、以下のようにして、暗号化オラクルＯＥをシミュレートする。
解答者Ｂは、入力したユーザの識別情報ＩＤ＊が整数αと等しい場合、実際の暗号システムΠと同様の手順により、暗号文Ｃを生成する。【０３０６】
ＩＤ＊≠αである場合、解答者Ｂは、上述した手順で鍵導出オラクルＯＸをシミュレートして、秘密鍵ｄＩＤ＊＝（ｒＩＤ＊，１，ｒＩＤ＊，２，ｒＩＤ＊，３，ｈＩＤ＊，１，ｈＩＤ＊，２，ｈＩＤ＊，３）を生成する。
解答者Ｂは、乗法群ＧＴの要素Ｚ＝ｅ（ｇ，ｇ’）＾（α＾（ｑ＋１））を算出する。
解答者Ｂは、（ｑ＋２）次多項式φ（ｘ）＝ｘ＾（ｑ＋２）に基づいて、（ｑ＋１）次多項式ΦＩＤ＊（ｘ）＝（φ（ｘ）−φ（ＩＤ＊））／（ｘ−ＩＤ＊）を算出する。算出した（ｑ＋１）次多項式ΦＩＤ＊（ｘ）のτ次係数（τは、０以上ｑ以下の整数。）を、ΦＩＤ＊，τとする。
解答者Ｂは、１以上ｒ未満の整数ｓ’＊をランダムに生成する。
解答者Ｂは、乗法群Ｇの要素ｕ＊＝（ｇ’＾（φ（α）−φ（ＩＤ＊））＾ｓ’＊を算出する。
解答者Ｂは、乗法群ＧＴの要素ｖ＊＝（Ｚ・ｅ（ｇ’，Π（ｇ＾（ΦＩＤ＊，τ・α＾τ）））＾ｓ’＊を算出する。
解答者Ｂは、鍵ビット列ｋ＊＝ＫＤＦ（ｅ（ｕ＊，ｈＩＤ＊，１）・ｖ＊＾ｒＩＤ＊，１）を算出する。
解答者Ｂは、鍵ビット列ｋ＊により、選択したメッセージを暗号化する。
解答者Ｂは、暗号化したメッセージを表わすビット列（第一暗号文Ｃ１）と、乗法群Ｇの要素ｕ＊を表わすビット列（第二暗号文Ｃ２）と、乗法群Ｇの要素ｖ＊を表わすビット列（第三暗号文Ｃ３）とを結合し、ハッシュ関数ＨＦによりハッシュ値β＊を算出する。
解答者Ｂは、乗法群ＧＴの要素ｙ＊＝ｅ（ｕ＊，ｈＩＤ＊，２・ｈＩＤ＊，３＾β＊）・ｖ＊＾（ｒＩＤ＊，２＋ｒＩＤ＊，３・β＊）を算出する。
解答者Ｂは、暗号文Ｃを生成し、出力する。【０３０７】
ここで、ｓ＊＝ｓ’＊・ｓ０・ΦＩＤ＊（α）とおく。
ｇ’＝ｇ＾ｓ０、φ（α）−φ（ＩＤ＊）＝ΦＩＤ＊（α）・（α−ＩＤ＊）、ｇ１＝ｇ＾αであるから、ｕ＊＝ｇ＾（ｓ＊・（α−ＩＤ＊））＝（ｇ１・ｇ＾（−ＩＤ＊））＾ｓ＊である。
また、Π（ｇ＾（ΦＩＤ，τ・α＾τ））＝ｇ＾Σ（ΦＩＤ，τ・α＾τ）＝ｇ＾（ΦＩＤ（α）−α＾（ｑ＋１））であるから、ペアリングｅの双線形より、ｖ＊＝ｅ（ｇ，ｇ）＾ｓ＊である。【０３０８】
更に、ｒＩＤ，ｊ＝ｆｊ（ＩＤ）、ｈＩＤ，１＝ｇ＾（（ｆ１（α）−ｆ１（ＩＤ））／（α−ＩＤ））なので、ｋ＊＝ＫＤＦ（ｅ（ｇ＾（ｓ＊・（α−ＩＤ＊）），ｇ＾（（ｆ１（α）−ｆ１（ＩＤ））／（α−ＩＤ）））・ｅ（ｇ，ｇ）＾（ｓ＊・ｆ１（ＩＤ））＝ＫＤＦ（ｅ（ｇ，ｇ）＾（ｓ＊・ｆ１（ＩＤ）））＝ＫＤＦ（ｅ（ｇ，ｈ１）＾ｓ＊）である。同様に、ｙ＊＝ｅ（ｇ，ｈ２）＾ｓ＊・ｅ（ｇ，ｈ３）＾（ｓ＊・β）である。【０３０９】
したがって、各暗号文の間の関係も、実際の暗号システムΠと同じ関係になっている。
また、ｓ＊は、暗号化オラクルＯＥの呼び出しごとに独立ランダムなので、暗号文の分布も、実際の暗号システムΠと同一の分布を有する。【０３１０】
更に、ｑ＝ｑｘ＋ｎ＋１であるから、鍵導出オラクルＯＸ、暗号化オラクルＯＥ、復号オラクルＯＤで用いられる｛ｆｊ（ＩＤ）｝及び｛ｆｊ（α）｝は全て独立ランダムであり、解答者Ｂによるシミュレーションは完全である。
よって、ゲームＧ１における攻撃者Ａのアドバンテージは、ゲームＧ０におけるアドバンテージと同じであり、Ｐｒ［Ｔ１］＝Ｐｒ［Ｔ０］である。【０３１１】
ゲームＧ２は、ゲームＧ１を以下のように変更したゲームである。【０３１２】
暗号化オラクルＯＥのシミュレートにおいて、解答者Ｂは、乗法群ＧＴの要素Ｚ＝ｅ（ｇ，ｇ’）＾（α＾ｑ＋１））を算出する代わりに、以下の手順により、あらかじめ（例えば、ＰＫＧ用鍵生成機能Ｓのシミュレート時に）Ｚを算出しておく。【０３１３】
解答者Ｂは、１以上乗法群Ｇの位数ｒ未満の整数ｚをランダムに生成する。ただし、ｚ≠α＾（ｑ＋１）であるものとする。
解答者Ｂは、乗法群ＧＴの要素Ｚ＝ｅ（ｇ，ｇ’）＾ｚを算出する。【０３１４】
もし、ゲームＧ１における攻撃者Ａの挙動と、ゲームＧ２における攻撃者Ａの挙動との間に何か違いがあるのであれば、解答者Ｂは、その違いを判別することにより、Ｚ＝ｅ（ｇ，ｇ’）＾（α＾（ｑ＋１））であるか否かを判断できる。【０３１５】
そこで、解答者Ｂは、与えられたｑ−Ｄ−ｔＡＢＨＥ問題において与えられたパラメータを利用して、オラクルのシミュレートをする場合を考える。【０３１６】
解答者Ｂは、与えられたｑ−Ｄ−ｔＡＢＤＨＥ問題において、解答者Ｂに知らされていない秘密の整数αを知らない代わりに、ｑ＋３個の乗法群Ｇの要素ｇ’、ｇ’ｑ＋２、ｇ、ｇ１、…、ｇｑを知っているので、これを利用してシミュレーションを行うことができる。
すなわち、解答者Ｂは、ｑ−Ｄ−ｔＡＢＤＨＥ問題において与えられた乗法群Ｇの要素ｇを、ＰＫＧ用鍵生成機能Ｓのシミュレートにおいて選択する乗法群Ｇの要素ｇとする。
また、解答者Ｂは、整数ｓ０をランダムに生成する代わりに、ｑ−Ｄ−ｔＡＢＤＨＥ問題において与えられた乗法群Ｇの要素ｇ’を、ＰＫＧ用鍵生成機能Ｓのシミュレートにおいて算出する乗法群Ｇの要素ｇ’（＝ｇ＾ｓ０）とする。【０３１７】
ｑ次多項式ｆｊ（ｘ）のτ次係数をｆｊ，τ（τは、０以上ｑ以下の整数。）とすると、乗法群Ｇの要素ｈ１は、ｈ１＝ｇ＾ｆｊ（α）＝Π（ｇ＾（ｆｊ，τ・α＾τ））＝Π（ｇτ＾ｆｊ，τ）なので、解答者Ｂは、αを知らなくても、乗法群Ｇの要素ｈ１を算出できる。ｈ２、ｈ３も同様である。
したがって、解答者Ｂは、αを知らなくても、ＰＫＧ用鍵生成機能Ｓをシミュレートできる。
同様に、解答者Ｂは、αを知らなくても、鍵導出オラクルＯＸ及び復号オラクルＯＤをシミュレートできる。また、解答者Ｂは、乗法群ＧＴの要素Ｚの算出を除いて、暗号化オラクルＯＥもシミュレートできる。【０３１８】
解答者Ｂは、乗法群ＧＴの要素Ｚとして、ｑ−Ｄ−ｔＡＢＤＨＥ問題において与えられた乗法群ＧＴの要素Ｚを使って、暗号化オラクルＯＥをシミュレートする。
Ｚ＝（ｇ，ｇ’）＾（α＾（ｑ＋１））であれば、解答者Ｂは、ゲームＧ１を行っていることになる。
Ｚ≠（ｇ，ｇ’）＾（α＾（ｑ＋１））であれば、解答者Ｂは、ゲームＧ２を行っていることになる。
解答者Ｂは、ゲーム内における攻撃者Ａの挙動の違いからこれを判別し、Ｚ＝（ｇ，ｇ’）＾（α＾（ｑ＋１））であるか否かを判断して、与えられたｑ−Ｄ−ｔＡＢＤＨＥ問題に答える。【０３１９】
したがって、｜Ｐｒ［Ｔ２］−Ｐｒ［Ｔ１］｜≦Ａｄｖｑ−ｄ−ｔａｂｄｈｅｋ，Ｇ，ＧＴ（ｔ１）＋３／ｐ（ただし、ｔ１＝ｔ＋Ｏ（ｑ２・ｔＧ）。ｔＧは、乗法群Ｇにおける冪乗算にかかる時間。）が成り立つ。【０３２０】
ゲームＧ３は、ゲームＧ２を以下のように変更したゲームである。【０３２１】
解答者Ｂは、ＰＫＧ用鍵生成機能Ｓのシミュレートにおいて、ランダムに生成したｑ次多項式ｆｊ（ｘ）を用いて乗法群Ｇの要素ｈ１、ｈ２、ｈ３を算出するのではなく、乗法群Ｇの要素ｈ１、ｈ２、ｈ３をランダムに選択する。
また、鍵導出オラクルＯＸのシミュレートにおいて、解答者Ｂは、ＩＤに対して、整数ｒＩＤ，ｊをランダムに生成し、乗法群Ｇの要素ｈＩＤ，１＝（ｈ１・ｇ＾（−ｒＩＤ，ｊ））＾（１／（α−ＩＤ）を算出する。ｈＩＤ，２、ｈＩＤ，３も同様に算出する。【０３２２】
解答者Ｂは、以下の手順により、暗号化オラクルＯＥをシミュレートする。【０３２３】
解答者Ｂは、整数ｚ’＊＝（ｚ−α＾（ｑ＋１））／ΦＩＤ＊（α）を算出する。
解答者Ｂは、１以上乗法群Ｇの位数ｒ未満の整数ｓ＊をランダムに生成する。
解答者Ｂは、乗法群Ｇの要素ｕ＊＝ｇ＾（ｓ＊・（α−ＩＤ＊））を算出する。
解答者Ｂは、乗法群ＧＴの要素ｖ＊＝ｅ（ｇ，ｇ）＾（ｓ＊・（１＋ｚ’＊））を算出する。
解答者Ｂは、鍵ビット列ｋ＝ＫＤＦ（ｅ（ｇ，ｈ１・ｇ＾（ｚ’＊・ｒＩＤ，１）＾ｓ＊）を算出する。
解答者Ｂは、乗法群ＧＴの要素ｙ＊＝ｅ（ｇ，ｈ２・ｈ３＾β＊）＾ｓ＊・ｅ（ｇ，ｇ）＾（ｓ＊・ｚ’＊・（ｒＩＤ＊，２＋ｒＩＤ＊，３・β＊））を算出する。【０３２４】
上記以外の部分は、ゲームＧ２と同じである。【０３２５】
攻撃者Ａから見ると、ゲームＧ２とゲームＧ３とは同じに見えるので、Ｐｒ［Ｔ３］＝Ｐｒ［Ｔ２］である。【０３２６】
ゲームＧ４は、ゲームＧ３を以下のように変更したゲームである。【０３２７】
復号オラクルＯＤのシミュレートにおいて、解答者Ｂは、ｖ＝ｅ（ｕ，ｇ）＾（１／（α−ＩＤ）及びｙ＝ｅ（ｕ，ｈ２・ｈ３＾β）が成立するか否かを判定し、成立しなければ「拒絶」を返す。
成立した場合、解答者Ｂは、鍵ビット列ｋ’＝ＫＤＦ（ｅ（ｕ，ｈ１）＾（１／（α−ＩＤ）））を算出し、メッセージを復号する。【０３２８】
このように、解答者Ｂは、暗号文の整合性判定及び鍵ビット列ｋ’の生成に、秘密鍵ｄＩＤを用いるのではなく、整数αを用いる。【０３２９】
暗号文の整合性判定において、実際の暗号システムΠでは、ｙ＝ｅ（ｕ，ｈＩＤ，２・ｈＩＤ，３＾β）・ｖ＾（ｒＩＤ，２＋ｒＩＤ，３・β）であるか否かを判定する。
判定方法が異なるので、実際の暗号システムΠでは拒絶されない暗号文を拒絶する場合がある。その事象をＲ４とすると、｜Ｐｒ［Ｔ４］−Ｐｒ［Ｔ３］｜≦Ｐｒ［Ｒ４］である。【０３３０】
ゲームＧ５は、ゲームＧ４を以下のように変更したゲームである。【０３３１】
暗号化オラクルＯＥにおいて、解答者Ｂは、１以上乗法群Ｇの位数ｒ未満の整数ｒ＊をランダムに生成する。
解答者Ｂは、鍵ビット列ｋ＊＝ＫＤＦ（ｅ（ｇ，ｇ）＾ｒ＊）を算出する。
解答者Ｂは、暗号化オラクルＯＥが入力したメッセージＭ０＊、Ｍ１＊に関わりなく、算出した鍵ビット列ｋ＊を、そのまま暗号化したメッセージとする。【０３３２】
暗号化オラクルＯＥの出力がｂ、Ｍ０＊、Ｍ１＊とは独立なので、攻撃者Ａにはアドバンテージがない。したがって、Ｐｒ［Ｔ５]＝１／２である。【０３３３】
ゲームＧ４の説明で述べたように、復号オラクルＯＤのシミュレートにおいて、解答者Ｂは整数ｒＩＤ，１を用いない。ｒＩＤ＊，１が初めて（かつ唯一）用いられるのは、ＩＤ＊が暗号化オラクルＯＥに入力されたときである。
したがって、まずｒＩＤ＊，１をランダムに生成し、それと整合するようにｒ＊を算出するのと、まずｒ＊をランダムに生成し、それと整合するようにｒＩＤ＊，１を算出するのとでは、（ｇ，ｈ１，ｚ’＊，ｓ＊，Ｍ＊）が固定されたときに（ｒ＊，ｒＩＤ＊，１）に対して同じ分布を与える。
したがって、攻撃者Ａから見ると、ゲームＧ４とゲームＧ５とは同じに見える。【０３３４】
また、ｒＩＤ＊，１は、この暗号化オラクルＯＥのシミュレート内以外で参照されることはないので、ｒ＊に基づいて算出する必要はない。【０３３５】
以上より、Ｐｒ［Ｔ４］＝Ｐｒ「Ｔ５］＝１／２、Ｐｒ［Ｒ４］＝Ｐｒ［Ｒ５］が成り立つ。なお、Ｒ５は、ゲームＧ５において、実際の暗号システムΠで拒絶されない暗号文を拒絶する事象を示す。【０３３６】
ゲームＧ６は、ゲームＧ５を以下のように変更したゲームである。【０３３７】
ｉ番目の暗号化オラクルＯＥのシミュレートにおいて、解答者Ｂは、入力したＩＤ＊と、生成した暗号文Ｃ＊と、算出したハッシュ値β＊との組ｈｉｓ＊ｉ＝（ＩＤ＊ｉ，Ｃ＊ｉ，β＊ｉ）を、リストＣｌｉｓｔに保持する。【０３３８】
復号オラクルＯＤのシミュレートにおいて、解答者Ｂは、暗号文の整合性判定の前に、以下の判定をする。【０３３９】
解答者Ｂは、保持したリストＣｌｉｓｔのなかに、ＩＤ＊ｉと、入力したＩＤとが等しく、かつ、β＊ｉと、入力した暗号文Ｃから算出したβとが等しいｈｉｓ＊ｉがあるか否かを判定する。
等しいｈｉｓ＊ｉがある場合、解答者Ｂは、そのｈｉｓ＊ｉに含まれる暗号文Ｃ＊ｉのうち（暗号文検証文ＣＣ＊ｉを除いた）暗号文主文ＣＢ＊ｉにあたる部分と、入力した暗号文Ｃのうち（暗号文検証文ＣＣを除いた）暗号文主文ＣＢにあたる部分とを比較し、等しくなけば「拒絶」を返す。【０３４０】
この判定により暗号文が拒絶される事象をＣ６とする。また、実際の暗号システムΠでも、この判定でも拒絶されない暗号文が、ゲームＧ４で変更した判定方法で拒絶される事象をＲ６とすると、｜Ｐｒ［Ｒ６］−Ｐｒ［Ｒ５］｜≦Ｐｒ［Ｃ６］である。【０３４１】
ここで、事象Ｃ６は、ハッシュ値算出のもととなるビット列が異なるのにハッシュ値βが等しい場合であるから、Ｐｒ［Ｃ６］≦ＡｄｖｃｒＨ（ｔ２）である。なお、ＡｄｖｃｒＨ（ｔ２）は、ハッシュ関数ＨＦの衝突困難性アドバンテージを表わす。【０３４２】
また、事象Ｒ６が成立するためには、０でないｚ’に対して、ｙ＝ｅ（ｇ，ｈ２・ｈ３＾β）＾ｓ・ｅ（ｇ，ｇ）＾（ｓ・ｚ’・（ｒＩＤ，２＋ｒＩＤ，３・β））となるｙを復号オラクルＯＤに入力する必要がある。
（ｒＩＤ，２，ｒＩＤ，３）は、各ＩＤに対してランダムなので、ＩＤが暗号化オラクルＯＥに入力される前に、そのようなｙを選択する確率は、１／ｒ以下（ｒは、乗法群ＧＴの位数）である。
また、ＩＤ＝ＩＤ＊ｉを暗号化オラクルに入力したあとにおいて、β＝β＊ｉであれば、追加した判定により拒絶される。したがって、β≠β＊ｉであり、上記条件を満たすｙを選択する確率は、やはり１／ｒ以下である。
したがって、Ｐｒ［Ｒ６］≦ｑｄ／ｒが成立する。【０３４３】
以上より、Ａｄｖｍｕｎ，Π，Γ（ｔ，ｑｅ，ｑｄ，ｑｘ）≦ｑｅ・Ａｄｖｑ−ｄ−ｔａｂｄｈｅｋ，Ｇ，ＧＴ（ｔ１）＋ｑｅ・ＡｄｖｃｒＨ（ｔ２）＋ｑｅ・（ｑｄ＋３）／ｒとなる。【０３４４】
この実施の形態における対比例であるＩＤベース暗号方式Π’は、以上説明した単独受信者の暗号方式Πを、連接方式により複数受信者に拡張したものである。
実施の形態１で述べたように、連接方式により複数受信者に拡張した暗号方式のＳＭＭＲ安全性はＡｄｖｓｍｍｒｎ，Π’，Γ（ｔ，ｑｄ，ｑｘ）≦Ａｄｖｍｕｎ，Π，Γ（ｔ，１，ｑｄ，ｑｘ）なので、この実施の形態における対比例であるＩＤベース暗号方式のＳＭＭＲ安全性は、Ａｄｖｓｍｍｒｎ，Π’，Γ（ｔ，ｑｄ，ｑｘ）≦Ａｄｖｑ−ｄ−ｔａｂｄｈｅｋ，Ｇ，ＧＴ（ｔ１）＋ＡｄｖｃｒＨ（ｔ２）＋（ｑｄ＋３）／ｒである。【０３４５】
これに対して、一般の単独受信者暗号方式を連接方式により複数受信者に拡張した場合のＳＭＭＲ安全性は、Ａｄｖｓｍｍｒｎ，Π’，Γ（ｔ，ｑｄ，ｑｘ）≦ｎ・Ａｄｖｍｕ１，Π，Γ（ｔ’，１，ｑｄ，ｑｘ）であるから、数学的な問題のアドバンテージとの間の関係を示す不等式に受信者数ｎが現れる。
すなわち、この実施の形態における対比例であるＩＤベース暗号方式は、一般の場合と比較して、ＳＭＭＲ安全性が、数学的な問題にタイトに帰着する（帰着効率がよい）。
このように、この実施の形態における対比例であるＩＤベース暗号方式は、よりよい安全性証明をすることできる。【０３４６】
次に、この実施の形態におけるＩＤベース暗号通信システム８００について、説明する。
この実施の形態におけるＩＤベース暗号通信システム８００の全体構成及び暗号パラメータ生成装置１００のブロック構成は、対比例で説明したものと同様なので、ここでは説明を省略する。
この実施の形態におけるＩＤベース暗号通信システム８００は、対比例で説明した複数受信者ＩＤベース暗号方式を、ハッシュ値共通化により効率化したものである。【０３４７】
まず、暗号文生成装置２００について説明する。
暗号文生成装置２００のブロック構成は、対比例で説明したものと同様なので、図４を用いて、対比例と異なる部分について説明する。【０３４８】
ハッシュ値算出部２４４は、ＣＰＵ９１１などの処理装置を用いて、暗号パラメータ記憶部２１０が記憶した公開暗号パラメータを入力する。
ハッシュ値算出部２４４は、ＣＰＵ９１１などの処理装置を用いて、暗号文主文生成部２４０が出力したｎ個の暗号文主文ＣＢｉとして、第一暗号文生成部２４１が出力したｎ個の第一暗号文Ｃ１ｉと、第二暗号文生成部２４２出力したｎ個の第二暗号文Ｃ２ｉと、第三暗号文生成部２４３が出力したｎ個の第三暗号文Ｃ３ｉとを入力する。
ハッシュ値算出部２４４は、ＣＰＵ９１１などの処理装置を用いて、入力したｎ個の第一暗号文Ｃ１ｉと、ｎ個の第二暗号文Ｃ２ｉと、ｎ個の第三暗号文Ｃ３ｉとをすべて結合して、１つの結合暗号文を生成する。【０３４９】
なお、ハッシュ値算出部２４４は、ｎ個の暗号文主文ＣＢｉ（の一部）として、更に、受信者識別入力部２３２が出力したｎ個の受信者識別情報ＩＤｉを入力し、入力したｎ個の受信者識別情報ＩＤｉと、ｎ個の第一暗号文Ｃ１ｉと、ｎ個の第二暗号文Ｃ２ｉと、ｎ個の第三暗号文Ｃ３ｉとをすべて結合して、１つの結合暗号文を生成してもよい。【０３５０】
ハッシュ値算出部２４４は、ＣＰＵ９１１などの処理装置を用いて、入力した公開暗号パラメータが表わすハッシュ関数ＨＦと、生成した１つの結合暗号文とに基づいて、１つの結合暗号文をハッシュ関数ＨＦにより変換した１つの自然数β０を算出し、１つのハッシュ値Ｈ０とする。
ハッシュ値算出部２４４は、ＣＰＵ９１１などの処理装置を用いて、算出した１つの自然数β０を表わす情報と、生成した１つの結合暗号文とを出力する。【０３５１】
暗号文検証文生成部２４５は、ＣＰＵ９１１などの処理装置を用いて、暗号パラメータ記憶部２１０が記憶した公開暗号パラメータと、乱数生成部２２２が出力したｎ個の整数ｓｉを表わす情報と、ハッシュ値算出部２４４が出力した１つの自然数β０を表わす情報とを入力する。【０３５２】
暗号文検証文生成部２４５は、ＣＰＵ９１１などの処理装置を用いて、入力した公開暗号パラメータが表わすペアリングｅと、乗法群Ｇ１の要素ｇと、乗法群Ｇ２の要素ｈ２とに基づいて、乗法群Ｇ１の要素ｇと乗法群Ｇ２の要素ｈ２とのペアリング値である乗法群ＧＴの要素ｅ（ｇ，ｈ２）を算出する。
暗号文検証文生成部２４５は、ＣＰＵ９１１などの処理装置を用いて、入力した公開暗号パラメータが表わすペアリングｅと、乗法群Ｇ１の要素ｇと、乗法群Ｇ２の要素ｈ３とに基づいて、乗法群Ｇ１の要素ｇと乗法群Ｇ２の要素ｈ３とのペアリング値である乗法群ＧＴの要素ｅ（ｇ，ｈ３）を算出する。
なお、乗法群ＧＴの要素ｅ（ｇ，ｈ２）及び乗法群ＧＴの要素ｅ（ｇ，ｈ３）は、整数ｓｉにかかわらず一定なので、前もって算出し、磁気ディスク装置９２０などの記憶装置を用いて記憶しておいてもよい。【０３５３】
暗号文検証文生成部２４５は、ＣＰＵ９１１などの処理装置を用いて、入力した公開暗号パラメータが表わす乗法群ＧＴと、入力した情報が表わす１つの自然数β０と、算出した乗法群ＧＴの要素ｅ（ｇ，ｈ３）とに基づいて、乗法群ＧＴの要素ｅ（ｇ，ｈ３）のβ０乗である１つの乗法群ＧＴの要素ｅ（ｇ，ｈ３）＾β０を算出する。
暗号文検証文生成部２４５は、ＣＰＵ９１１などの処理装置を用いて、入力した公開暗号パラメータが表わす乗法群ＧＴと、算出した乗法群ＧＴの要素ｅ（ｇ，ｈ２）と、算出した１つの乗法群ＧＴの要素ｅ（ｇ，ｈ３）＾β０とに基づいて、乗法群ＧＴの要素ｅ（ｇ，ｈ２）と乗法群ＧＴの要素ｅ（ｇ，ｈ３）＾β０との積である１つの乗法群ＧＴの要素ｅ（ｇ，ｈ２）・ｅ（ｇ，ｈ３）＾β０を算出する。【０３５４】
暗号文検証文生成部２４５は、ＣＰＵ９１１などの処理装置を用いて、入力した公開暗号パラメータが表わす乗法群ＧＴと、入力した情報が表わすｎ個の整数ｓｉと、算出した１つの乗法群ＧＴの要素ｅ（ｇ，ｈ２）・ｅ（ｇ，ｈ３）＾β０とに基づいて、乗法群ＧＴの要素ｅ（ｇ，ｈ２）・ｅ（ｇ，ｈ３）＾β０のｓｉ乗であるｎ個の乗法群ＧＴの要素ｙｉ＝（ｅ（ｇ，ｈ２）・ｅ（ｇ，ｈ３）＾β０）＾ｓｉ（ｉは、１以上ｎ以下の整数。）を算出する。
暗号文検証文生成部２４５は、ＣＰＵ９１１などの処理装置を用いて、算出したｎ個の乗法群ＧＴの要素ｙｉをそれぞれ表わすｎ個のビット列を、ｎ個の暗号文検証文ＣＣｉ（ｉは、１以上ｎ以下の整数。）として出力する。【０３５５】
暗号文結合部２４６は、ＣＰＵ９１１などの処理装置を用いて、ハッシュ値算出部２４４が出力した１つの結合暗号文と、暗号文検証文生成部２４５が出力したｎ個の暗号文検証文ＣＣｉとを入力する。
暗号文結合部２４６は、ＣＰＵ９１１などの処理装置を用いて、入力した１つの結合暗号文と、入力したｎ個の暗号文検証文とをすべて結合して、１つの鍵暗号文Ｃを生成する。
暗号文結合部２４６は、ＣＰＵ９１１などの処理装置を用いて、生成した１つの鍵暗号文Ｃを出力する。【０３５６】
図１６は、この実施の形態における暗号文生成装置２００のなかでやり取りされる情報の流れの一例を示す図である。【０３５７】
受信者識別入力部２３２は、ｎ個の受信者識別情報ＩＤ１、ＩＤ２、…、ＩＤｎを入力する。
乱数生成部２２２は、受信者識別入力部２３２が入力した受信者識別情報ＩＤ１、ＩＤ２、…、ＩＤｎの数と同じ数であるｎ個の整数ｓ１、ｓ２、…、ｓｎを生成する。
第一暗号文生成部２４１は、平文Ｍと整数ｓ１とに基づいて第一暗号文Ｃ１１を生成し、平文Ｍと整数ｓ２とに基づいて第一暗号文Ｃ１２を生成し、…、平文Ｍと整数ｓｎとに基づいて第一暗号文Ｃ１ｎを生成する。
第二暗号文生成部２４２は、受信者識別情報ＩＤ１と整数ｓ１とに基づいて第二暗号文Ｃ２１を生成し、受信者識別情報ＩＤ２と整数ｓ２とに基づいて第二暗号文Ｃ２２を生成し、…、受信者識別情報ＩＤｎと整数ｓｎとに基づいて第二暗号文Ｃ２ｎを生成する。
第三暗号文生成部２４３は、整数ｓ１に基づいて第三暗号文Ｃ３１を生成し、整数ｓ２に基づいて第三暗号文Ｃ３２を生成し、…、整数ｓｎに基づいて第三暗号文Ｃ３ｎを生成する。
ここまでの流れは、対比例と同様である。【０３５８】
ハッシュ値算出部２４４は、第一暗号文Ｃ１１と第二暗号文Ｃ２１と第三暗号文Ｃ３１と第一暗号文Ｃ１２と第二暗号文Ｃ２２と第三暗号文Ｃ３２と…第一暗号文Ｃ１ｎと第二暗号文Ｃ２ｎと第三暗号文Ｃ３ｎとをすべて結合して１つの結合暗号文（Ｃ１１｜Ｃ２１｜Ｃ３１｜Ｃ１２｜Ｃ２２｜Ｃ３２｜…｜Ｃ１ｎ｜Ｃ２ｎ｜Ｃ３ｎ）を生成する。なお、結合の順序は、これと異なる順序であってもよい。
ハッシュ値算出部２４４は、生成した１つの結合暗号文（Ｃ１１｜Ｃ２１｜Ｃ３１｜Ｃ１２｜Ｃ２２｜Ｃ３２｜…｜Ｃ１ｎ｜Ｃ２ｎ｜Ｃ３ｎ）に基づいて、１つのハッシュ値Ｈ０を算出する。
暗号文検証文生成部２４５は、整数ｓ１とハッシュ値Ｈ０とに基づいて暗号文検証文ＣＣ１を生成し、整数ｓ２とハッシュ値Ｈ０とに基づいて暗号文検証文ＣＣ２を生成し、…、整数ｓｎとハッシュ値Ｈ０とに基づいて暗号文検証文ＣＣｎを生成する。【０３５９】
暗号文結合部２４６は、１つの結合暗号文（Ｃ１１｜Ｃ２１｜Ｃ３１｜Ｃ１２｜Ｃ２２｜Ｃ３２｜…｜Ｃ１ｎ｜Ｃ２ｎ｜Ｃ３ｎ）と、暗号文検証文ＣＣ１と暗号文検証文ＣＣ２と…暗号文検証文ＣＣｎとをすべて結合して、１つの鍵暗号文Ｃ＝（Ｃ１１｜Ｃ２１｜Ｃ３１｜Ｃ１２｜Ｃ２２｜Ｃ３２｜…｜Ｃ１ｎ｜Ｃ２ｎ｜Ｃ３ｎ｜ＣＣ１｜ＣＣ２｜…｜ＣＣｎ）を生成する。
なお、この例では、ハッシュ値算出部２４４が生成した結合暗号文をそのまま利用するため、暗号文の結合順序が対比例と異なっているが、暗号文の結合順序はこの順序に限らない。対比例で説明したのと同じ順序であってもよいし、他の順序であってもよい。【０３６０】
次に、暗号文受信装置３０１〜３０３について説明する。
暗号文受信装置３０１〜３０３のブロック構成も、対比例で説明したものと同様なので、図６を用いて、対比例と異なる部分について説明する。【０３６１】
暗号文分解部３４６は、ＣＰＵ９１１などの処理装置を用いて、暗号文受信部３５１が出力した１つの鍵暗号文Ｃを入力する。
暗号文分解部３４６は、ＣＰＵ９１１などの処理装置を用いて、入力した１つの鍵暗号文Ｃから、自身が対応する受信者に対応する対応第一暗号文Ｃ１ＩＤと、対応第二暗号文Ｃ２ＩＤと、対応第三暗号文Ｃ３ＩＤと、対応暗号文検証文ＣＣＩＤとを取得する。
暗号文分解部３４６は、ＣＰＵ９１１などの処理装置を用いて、取得した対応第一暗号文Ｃ１ＩＤと、対応第二暗号文Ｃ２ＩＤと、対応第三暗号文Ｃ３ＩＤと、対応暗号文検証文ＣＣＩＤとを出力する。【０３６２】
例えば、１つの鍵暗号文Ｃが、図１６に示したように、（Ｃ１１｜Ｃ２１｜Ｃ３１｜Ｃ１２｜Ｃ２２｜Ｃ３２｜…｜Ｃ１ｎ｜Ｃ２ｎ｜Ｃ３ｎ｜ＣＣ１｜ＣＣ２｜…｜ＣＣｎ）という順序で暗号文を結合したものであるとする。
暗号文分解部３４６は、例えば、１つの鍵暗号文Ｃを、第一暗号文〜第三暗号文のビット長の和のｎ倍と、暗号文検証文のビット長のｎ倍とに分割して、検証結合暗号文（Ｃ１１｜Ｃ２１｜Ｃ３１｜Ｃ１２｜Ｃ２２｜Ｃ３２｜…｜Ｃ１ｎ｜Ｃ２ｎ｜Ｃ３ｎ）と、結合暗号文検証文（ＣＣ１｜ＣＣ２｜…｜ＣＣｎ）とを取得する。
暗号文分解部３４６は、検証結合暗号文（Ｃ１１｜Ｃ２１｜Ｃ３１｜Ｃ１２｜Ｃ２２｜Ｃ３２｜…｜Ｃ１ｎ｜Ｃ２ｎ｜Ｃ３ｎ）を更に分割して、（Ｃ１１｜Ｃ２１｜Ｃ３１）、（Ｃ１２｜Ｃ２２｜Ｃ３２）、…、（Ｃ１ｎ｜Ｃ２ｎ｜Ｃ３ｎ）とし、そのなかから、自分に対応する対応暗号文（Ｃ１ＩＤ｜Ｃ２ＩＤ｜Ｃ３ＩＤ）を取得する。
暗号文分解部３４６は、取得した対応暗号文（Ｃ１ＩＤ｜Ｃ２ＩＤ｜Ｃ３ＩＤ）を分割して、対応第一暗号文Ｃ１ＩＤと、対応第二暗号文Ｃ２ＩＤと、対応第三暗号文Ｃ３ＩＤとを取得する。
また、暗号文分解部３４６は、取得した結合暗号文検証文（ＣＣ１｜ＣＣ２｜…｜ＣＣｎ）を分割して、ＣＣ１、ＣＣ２、…、ＣＣｎとし、そのなかから、自分に対応する対応暗号文検証文ＣＣＩＤを取得する。
暗号文分解部３４６は、取得した対応第一暗号文Ｃ１ＩＤと、対応第二暗号文Ｃ２ＩＤと、対応第三暗号文Ｃ３ＩＤと、対応暗号文検証文ＣＣＩＤとを出力する。
また、この例では、検証ハッシュ値算出部３４４が検証結合暗号文（Ｃ１１｜Ｃ２１｜Ｃ３１｜Ｃ１２｜Ｃ２２｜Ｃ３２｜…｜Ｃ１ｎ｜Ｃ２ｎ｜Ｃ３ｎ）を生成する手間を省くため、暗号文分解部３４６は、ＣＰＵ９１１などの処理装置を用いて、取得した検証結合暗号文（Ｃ１１｜Ｃ２１｜Ｃ３１｜Ｃ１２｜Ｃ２２｜Ｃ３２｜…｜Ｃ１ｎ｜Ｃ２ｎ｜Ｃ３ｎ）も、あわせて出力する。【０３６３】
検証ハッシュ値算出部３４４は、ＣＰＵ９１１などの処理装置を用いて、暗号文分解部３４６が出力した検証結合暗号文（Ｃ１１｜Ｃ２１｜Ｃ３１｜Ｃ１２｜Ｃ２２｜Ｃ３２｜…｜Ｃ１ｎ｜Ｃ２ｎ｜Ｃ３ｎ）を入力する。あるいは、検証ハッシュ値算出部３４４は、ＣＰＵ９１１などの処理装置を用いて、暗号文を結合し、検証結合暗号文（Ｃ１１｜Ｃ２１｜Ｃ３１｜Ｃ１２｜Ｃ２２｜Ｃ３２｜…｜Ｃ１ｎ｜Ｃ２ｎ｜Ｃ３ｎ）を生成してもよい。【０３６４】
検証ハッシュ値算出部３４４は、ＣＰＵ９１１などの処理装置を用いて、公開パラメータ記憶部３１０が記憶した公開暗号パラメータを入力する。
検証ハッシュ値算出部３４４は、ＣＰＵ９１１などの処理装置を用いて、入力した公開暗号パラメータが表わすハッシュ関数ＨＦと、入力あるいは生成した検証結合暗号文（Ｃ１１｜Ｃ２１｜Ｃ３１｜Ｃ１２｜Ｃ２２｜Ｃ３２｜…｜Ｃ１ｎ｜Ｃ２ｎ｜Ｃ３ｎ）とに基づいて、検証結合暗号文（Ｃ１１｜Ｃ２１｜Ｃ３１｜Ｃ１２｜Ｃ２２｜Ｃ３２｜…｜Ｃ１ｎ｜Ｃ２ｎ｜Ｃ３ｎ）をハッシュ関数ＨＦにより変換した自然数β’を算出し、ハッシュ値Ｈ’とする。
検証ハッシュ値算出部３４４は、ＣＰＵ９１１などの処理装置を用いて、算出した自然数β’を表わす情報を出力する。【０３６５】
次に、動作について説明する。【０３６６】
図１７は、この実施の形態における暗号文生成装置２００が暗号文を生成する暗号文生成処理の流れの一例を示すフローチャート図である。
なお、対比例で説明した暗号文生成処理の工程と共通する工程については、同一の符号を付す。【０３６７】
ハッシュ値算出工程Ｓ３８において、ハッシュ値算出部２４４は、ＣＰＵ９１１などの処理装置を用いて、第一暗号文生成工程Ｓ３５で第一暗号文生成部２４１が生成したｎ人の受信者にそれぞれ対応するｎ個の第一暗号文Ｃ１ｉと、第二暗号文生成工程Ｓ３６で第二暗号文生成部２４２が生成したｎ人の受信者にそれぞれ対応するｎ個の第二暗号文Ｃ２ｉと、第三暗号文生成工程Ｓ３７で第三暗号文生成部２４３が生成したｎ人の受信者にそれぞれ対応するｎ個の第三暗号文Ｃ３ｉとに基づいて、ｎ人の受信者にそれぞれ対応するｎ個の第一暗号文Ｃ１ｉと、ｎ人の受信者にそれぞれ対応するｎ個の第一暗号文Ｃ２ｉと、ｎ人の受信者にそれぞれ対応するｎ個の第三暗号文Ｃ３ｉとをすべて結合した１つの結合暗号文（Ｃ１１｜Ｃ２１｜Ｃ３１｜Ｃ１２｜Ｃ２２｜Ｃ３２｜…｜Ｃ１ｎ｜Ｃ２ｎ｜Ｃ３ｎ）を生成する。
ハッシュ値算出部２４４は、ＣＰＵ９１１などの処理装置を用いて、暗号パラメータ記憶部２１０が記憶した公開暗号パラメータが表わすハッシュ関数ＨＦと、生成した１つの結合暗号文（Ｃ１１｜Ｃ２１｜Ｃ３１｜Ｃ１２｜Ｃ２２｜Ｃ３２｜…｜Ｃ１ｎ｜Ｃ２ｎ｜Ｃ３ｎ）とに基づいて、１つの結合暗号文（Ｃ１１｜Ｃ２１｜Ｃ３１｜Ｃ１２｜Ｃ２２｜Ｃ３２｜…｜Ｃ１ｎ｜Ｃ２ｎ｜Ｃ３ｎ）をハッシュ関数ＨＦにより変換した１つの整数β０＝ＨＦ（Ｃ１１｜Ｃ２１｜Ｃ３１｜Ｃ１２｜Ｃ２２｜Ｃ３２｜…｜Ｃ１ｎ｜Ｃ２ｎ｜Ｃ３ｎ）を算出する。【０３６８】
暗号文検証文生成工程Ｓ３９において、暗号文検証文生成部２４５は、ＣＰＵ９１１などの処理装置を用いて、暗号パラメータ記憶部２１０が記憶した公開暗号パラメータが表わす乗法群ＧＴとペアリングｅと乗法群Ｇ１の要素ｇと２つの乗法群Ｇ２の要素ｈ２、ｈ３と、乱数生成工程Ｓ３４で乱数生成部２２２が生成したｎ人の受信者にそれぞれ対応するｎ個の自然数ｓｉと、ハッシュ値算出工程Ｓ３８でハッシュ値算出部２４４が算出した１つの整数β０とに基づいて、ｎ人の受信者にそれぞれ対応するｎ個の乗法群ＧＴの要素ｙｉ＝ｅ（ｇ，ｈ２）＾ｓｉ・ｅ（ｇ，ｈ３）＾（ｓｉ・β０）を算出する。
暗号文検証文生成部２４５は、ＣＰＵ９１１などの処理装置を用いて、算出したｎ人の受信者にそれぞれ対応するｎ個の乗法群ＧＴの要素ｙｉをそれぞれ表わすビット列を、ｎ人の受信者にそれぞれ対応するｎ個の暗号文検証文ＣＣｉとする。【０３６９】
図１８は、この実施の形態における暗号文受信装置３０１〜３０３が暗号文を受信する暗号文受信処理の流れの一例を示すフローチャート図である。
なお、対比例で説明した暗号文受信処理の工程と共通する工程については、同一の符号を付す。【０３７０】
検証ハッシュ値算出工程Ｓ５３において、検証ハッシュ値算出部３４４は、ＣＰＵ９１１などの処理装置を用いて、公開パラメータ記憶部３１０が記憶した公開暗号パラメータが表わすハッシュ関数ＨＦと、検証結合暗号文（Ｃ１１｜Ｃ２１｜Ｃ３１｜Ｃ１２｜Ｃ２２｜Ｃ３２｜…｜Ｃ１ｎ｜Ｃ２ｎ｜Ｃ３ｎ）とに基づいて、検証結合暗号文（Ｃ１１｜Ｃ２１｜Ｃ３１｜Ｃ１２｜Ｃ２２｜Ｃ３２｜…｜Ｃ１ｎ｜Ｃ２ｎ｜Ｃ３ｎ）をハッシュ関数ＨＦにより変換した整数β’＝ＨＦ（Ｃ１１｜Ｃ２１｜Ｃ３１｜Ｃ１２｜Ｃ２２｜Ｃ３２｜…｜Ｃ１ｎ｜Ｃ２ｎ｜Ｃ３ｎ）を算出する。【０３７１】
上記説明した以外の工程は、対比例で説明した工程と同様なので、ここでは説明を省略する。【０３７２】
以上のように、この実施の形態におけるＩＤベース暗号通信システム８００は、対比例で説明したＩＤベース暗号通信システム８００と比較して、１つの鍵暗号文Ｃの長さは変わらないが、暗号文生成処理に必要な計算量が減るので、暗号通信のコストを削減できる。
特に、ハッシュ値算出工程Ｓ３８において、対比例で説明した方式の場合、ｎ回のハッシュ値計算が必要だが、この方式の場合、１回のハッシュ値計算で済む。
また、暗号文検証文生成工程Ｓ３９において、対比例で説明した方式の場合、２ｎ回の乗法群ＧＴにおける冪乗算と、ｎ回の乗法群ＧＴにおける乗算とが必要だが、この方式の場合、（ｎ＋１）回の乗法群ＧＴにおける冪乗算と、１回の乗法群ＧＴにおける乗算とをすればよく、受信者の人数が多い場合に、計算量を大幅に削減できる。【０３７３】
次に、この実施の形態におけるＩＤベース暗号通信システム８００が使用するＩＤベース暗号方式のＳＭＭＲ安全性について説明する。
なお、以下の説明では、暗号文主文ＣＢｉに、それに対応する受信者を識別する受信者識別情報ＩＤｉが含まれているものとする。【０３７４】
この実施の形態におけるＩＤベース暗号方式のＳＭＭＲ安全性の証明は、対比例で説明したＩＤ暗号方式のもととなっている単独受信者のＩＤベース暗号方式のＭＵ安全性の証明と並行した議論によって証明することができる。
ここでは、証明のうち共通する部分についての説明は省略し、異なる部分を説明する。【０３７５】
復号オラクルＯＤ’は、ユーザの識別情報ＩＤと、そのＩＤに対する（分節された）暗号文ＣＩＤとを入力する。
ここで、（分節された）暗号文ＣＩＤは、ｎ個の暗号文主文ＣＢｉと、ｎ個の暗号文主文ＣＢｉのうちそのＩＤに対応する対応暗号文主文ＣＢＩＤがどれであるかを示す情報と、対応暗号文検証文ＣＣＩＤとからなる。【０３７６】
復号オラクルＯＤ’は、入力したｎ個の暗号文主文ＣＢｉを結合して、検証結合暗号文を生成し、ハッシュ値β’を算出する。
復号オラクルＯＤ’は、入力した情報が示す対応暗号文主文ＣＢＩＤと、入力した対応暗号文検証文ＣＣＩＤと、算出したハッシュ値β’と、鍵導出機能Ｘ’により生成した秘密鍵ｄＩＤとに基づいて、暗号文を検証する。
検証に失敗した場合、復号オラクルＯＤ’は、「拒絶」を返す。
検証に成功した場合、復号オラクルＯＤ’は、復号処理をして、復号したメッセージを返す。【０３７７】
ゲームＧ６は、ゲームＧ５を以下のように変更したゲームである。【０３７８】
暗号化オラクルＯＥ’のシミュレートにおいて、解答者Ｂは、入力したＩＤ＊＝（ＩＤ＊１，ＩＤ＊２，…，ＩＤ＊ｎ）と、生成したｎ個の暗号文主文ＣＢ＊＝（ＣＢ＊１，ＣＢ＊２，…，ＣＢ＊ｎ）と、算出したハッシュ値β＊０とを保持する。【０３７９】
復号オラクルＯＤ’のシミュレートにおいて、解答者Ｂは、保持したβ＊０と、入力したｎ個の暗号文主文ＣＢｉに基づいて算出したハッシュ値β’とが等しいか否かを判定する。
等しい場合、解答者Ｂは、保持したＩＤ＊のなかに、入力したＩＤと等しいＩＤ＊ｉがあるか判定し、入力したＩＤと等しいＩＤ＊ｉがある場合、保持したｎ個の暗号文主文ＣＢ＊のうち、そのＩＤ＊ｉに対応する暗号文主文ＣＢ＊ｉと、入力した情報が示す対応暗号文主文ＣＢＩＤとを比較し、等しくなければ「拒絶」を返す。【０３８０】
以上の相違点を除いて、証明の主要な部分の構成は変わらないので、この実施の形態におけるＩＤベース暗号方式のＳＭＭＲ安全性は、Ａｄｖｓｍｍｒｎ，Π’，Γ（ｔ，ｑｄ，ｑｘ）≦Ａｄｖｑ−ｄ−ｔａｂｄｈｅｋ，Ｇ，ＧＴ（ｔ１）＋ＡｄｖｃｒＨ（ｔ２）＋（ｑｄ＋３）／ｒである。【０３８１】
この実施の形態におけるＩＤベース暗号通信システム８００によれば、ＳＭＭＲ−ＩＮＤ−ＩＤ−ＣＣＡ２安全性を、数学的な問題にタイトに帰着する証明により証明することができるので、ＩＤベース暗号通信システム８００を使用して、安全な暗号通信を実現できるという効果を奏する。【０３８２】
この実施の形態における暗号文生成装置２００は、以下の点を特徴とする。
暗号パラメータ記憶部２１０は、磁気ディスク装置９２０などの記憶装置を用いて、公開暗号パラメータとして、自然数ｒと、位数が上記自然数ｒである乗法群Ｇ１と、位数が上記自然数ｒである乗法群Ｇ２と、位数が上記自然数ｒである乗法群ＧＴと、乗法群Ｇ１の要素と乗法群Ｇ２の要素とから乗法群ＧＴの要素を算出するペアリングｅと、乗法群ＧＴの要素から所定の長さのビット列を算出する鍵生成関数ＫＤＦと、任意の長さのビット列から上記自然数ｒ未満の自然数を算出するハッシュ関数ＨＦと、乗法群Ｇ１の要素ｇと、乗法群Ｇ１の要素ｇ１と、乗法群Ｇ２の要素ｇ２と、乗法群Ｇ２の要素ｈ１と、乗法群Ｇ２の要素ｈ２と、乗法群Ｇ２の要素ｈ３とを表わす情報を記憶することを特徴とする。
受信者識別入力部２３２は、ＣＰＵ９１１などの処理装置を用いて、ｎ個の整数ＩＤｉをｎ個の受信者識別情報として入力することを特徴とする。
乱数生成部２２２は、ＣＰＵ９１１などの処理装置を用いて、暗号パラメータ記憶部２１０が記憶した公開暗号パラメータが表わす自然数ｒに基づいて、ｎ人の受信者に対応するｎ個の１以上自然数ｒ未満の整数ｓｉ（ｉは、１以上ｎ以下の整数。）をランダムに生成することを特徴とする。
第一暗号文生成部２４１は、ＣＰＵ９１１などの処理装置を用いて、暗号パラメータ記憶部２１０が記憶した公開暗号パラメータが表わす乗法群Ｇ１の要素ｇと乗法群Ｇ２の要素ｈ１とペアリングｅと、鍵生成関数ＫＤＦと、乱数生成部２２２が生成したｎ個の整数ｓｉとに基づいて、ｎ人の受信者に対応するｎ個の鍵ビット列ｋｉ＝ＫＤＦ（ｅ（ｇ，ｈ１）＾ｓｉ）（ｉは、１以上ｎ以下の整数。）を算出し、ＣＰＵ９１１などの処理装置を用いて、算出したｎ個の鍵ビット列ｋｉにより、平文入力部２３１が入力した平文Ｍをそれぞれ暗号化して、ｎ人の受信者に対応するｎ個の第一暗号文Ｃ１ｉ（ｉは、１以上ｎ以下の整数。）とすることを特徴とする。
第二暗号文生成部２４２は、ＣＰＵ９１１などの処理装置を用いて、暗号パラメータ記憶部２１０が記憶した公開暗号パラメータが表わす乗法群Ｇ１の要素ｇと、乗法群Ｇ１の要素ｇ１と、受信者識別入力部２３２が入力したｎ個の整数ＩＤｉと、乱数生成部２２２が生成したｎ個の整数ｓｉとに基づいて、ｎ人の受信者に対応するｎ個の乗法群Ｇ１の要素ｕｉ＝（ｇ１・ｇ＾−ＩＤｉ）＾ｓｉ（ｉは、１以上ｎ以下の整数。）を算出し、算出したｎ個の乗法群Ｇ１の要素ｕｉをそれぞれ表わすビット列を、ｎ人の受信者に対応するｎ個の第二暗号文Ｃ２ｉ（ｉは、１以上ｎ以下の整数。）とすることを特徴とする。
第三暗号文生成部２４３は、ＣＰＵ９１１などの処理装置を用いて、暗号パラメータ記憶部２１０が記憶した公開暗号パラメータが表わす乗法群Ｇ１の要素ｇと乗法群Ｇ２の要素ｇ２とペアリングｅと、乱数生成部２２２が生成したｎ個の整数ｓｉとに基づいて、ｎ人の受信者に対応するｎ個の乗法群ＧＴの要素ｖｉ＝ｅ（ｇ，ｇ２）＾ｓｉ（ｉは、１以上ｎ以下の整数。）を算出し、算出した乗法群ＧＴの要素ｖｉをそれぞれ表わすビット列を、ｎ人の受信者に対応するｎ個の第三暗号文Ｃ３ｉ（ｉは、１以上ｎ以下の整数。）とすることを特徴とする。
ハッシュ値算出部２４４は、ＣＰＵ９１１などの処理装置を用いて、暗号パラメータ記憶部２１０が記憶した公開暗号パラメータが表わすハッシュ関数ＨＦに基づいて、１つの自然数β０を算出して、ハッシュ値Ｈ０とすることを特徴とする。
暗号文検証文生成部２４５は、ＣＰＵ９１１などの処理装置を用いて、暗号パラメータ記憶部２１０が記憶した公開暗号パラメータが表わす乗法群Ｇ１の要素ｇと乗法群Ｇ２の要素ｈ２と乗法群Ｇ２の要素ｈ３とペアリングｅと、乱数生成部２２２が生成したｎ個の整数ｓｉと、ハッシュ値算出部２４４が算出した１つの自然数β０とに基づいて、ｎ人の受信者に対応するｎ個の乗法群ＧＴの要素ｙｉ＝ｅ（ｇ，ｈ２）＾ｓｉ・ｅ（ｇ，ｈ３）＾（ｓｉ・β０）（ｉは、１以上ｎ以下の整数。）を算出し、算出したｎ個の乗法群ＧＴの要素ｙｉをそれぞれ表わすビット列を、ｎ人の受信者に対応するｎ個の暗号文検証文ＣＣｉ（ｉは、１以上ｎ以下の整数。）とすることを特徴とする。【０３８３】
この実施の形態における暗号文生成装置２００によれば、暗号処理に必要な資源が少なくて済み、ＳＭＭＲ−ＩＮＤ−ＩＤ−ＣＣＡ２安全性を数学的に証明できるＩＤベース暗号方式を利用した暗号通信を実現できるという効果を奏する。【０３８４】
この実施の形態におけるＩＤベース暗号通信システム８００（暗号通信システム）は、以下の点を特徴とする。
暗号パラメータ生成装置１００は、更に、群パラメータ記憶部１１１を有することを特徴とする。
群パラメータ記憶部１１１は、磁気ディスク装置９２０などの記憶装置を用いて、群パラメータとして、自然数ｒと、位数が上記自然数ｒである乗法群Ｇ１と、位数が上記自然数ｒである乗法群Ｇ２と、位数が上記自然数ｒである乗法群ＧＴと、乗法群Ｇ１の要素と乗法群Ｇ２の要素とから乗法群ＧＴの要素を算出するペアリングｅとを表わす情報を記憶することを特徴とする。
秘密情報生成部１１２は、ＣＰＵ９１１などの処理装置を用いて、群パラメータ記憶部が記憶した群パラメータが表わす自然数ｒに基づいて、１以上自然数ｒ未満の整数αをランダムに生成することを特徴とする。
秘密情報記憶部１２１は、磁気ディスク装置９２０などの記憶装置を用いて、秘密情報生成部１１２が生成した整数αを表わす情報を秘密情報として記憶することを特徴とする。
公開パラメータ生成部１１３は、ＣＰＵ９１１などの処理装置を用いて、乗法群ＧＴの要素から所定の長さのビット列を算出する鍵生成関数ＫＤＦと、任意の長さのビット列から上記自然数ｒ未満の自然数を算出するハッシュ関数ＨＦとを決定し、ＣＰＵ９１１などの処理装置を用いて、群パラメータ記憶部１１１が記憶した群パラメータが表わす乗法群Ｇ１と乗法群Ｇ２とに基づいて、乗法群Ｇ１の要素ｇと乗法群Ｇ２の要素ｇ２と乗法群Ｇ２の要素ｈ１と乗法群Ｇ２の要素ｈ２と乗法群Ｇ２の要素ｈ３とをランダムに選択し、ＣＰＵ９１１などの処理装置を用いて、秘密情報生成部１１２が生成した秘密情報が表わす整数αと、選択した乗法群Ｇ１の要素ｇとに基づいて、乗法群Ｇ１の要素ｇ１＝ｇ＾αを算出し、群パラメータ記憶部１１１が記憶した群パラメータと、決定した鍵生成関数ＫＤＦとハッシュ関数ＨＦと、選択した乗法群Ｇ１の要素ｇと乗法群Ｇ２の要素ｇ２と乗法群Ｇ２の要素ｈ１と乗法群Ｇ２の要素ｈ２と乗法群Ｇ２の要素ｈ３と、算出した乗法群Ｇ１の要素ｇ１とを表わす情報を公開暗号パラメータとすることを特徴とする。
識別情報入力部１３１は、ＣＰＵ９１１などの処理装置を用いて、整数ＩＤを受信者識別情報として入力することを特徴とする。
秘密鍵生成部１３２は、ＣＰＵ９１１などの処理装置を用いて、公開パラメータ生成部１１３が生成した公開暗号パラメータが表わす自然数ｒに基づいて、１以上自然数ｒ未満の整数ｒＩＤ，１と、１以上自然数ｒ未満の整数ｒＩＤ，２と、１以上自然数ｒ未満の整数ｒＩＤ，３とをランダムに生成し、ＣＰＵ９１１などの処理装置を用いて、公開パラメータ生成部１１３が生成した公開暗号パラメータが表わす乗法群Ｇ２の要素ｇ２と乗法群Ｇ２の要素ｈ１と乗法群Ｇ２の要素ｈ２と乗法群Ｇ２の要素ｈ３と、秘密情報記憶部１２１が記憶した整数αと、識別情報入力部１３１が入力した整数ＩＤと、生成した整数ｒＩＤ，１と整数ｒＩＤ，２と整数ｒＩＤ，３とに基づいて、乗法群Ｇ２の要素ｈＩＤ，１＝（ｈ１・ｇ２＾（−ｒＩＤ，１））＾（１／（α−ＩＤ））と、乗法群Ｇ２の要素ｈＩＤ，２＝（ｈ２・ｇ２＾（−ｒＩＤ，２））＾（１／（α−ＩＤ））と、乗法群Ｇ２の要素ｈＩＤ，３＝（ｈ３・ｇ２＾（−ｒＩＤ，３））＾（１／（α−ＩＤ））とを算出し、生成した整数ｒＩＤ，１と整数ｒＩＤ，２と整数ｒＩＤ，３と、算出した乗法群Ｇ２の要素ｈＩＤ，１と乗法群Ｇ２の要素ｈＩＤ，２と乗法群Ｇ２の要素ｈＩＤ，３とを表わす情報を秘密鍵ｄＩＤとすることを特徴とする。
受信者識別入力部２３２は、ＣＰＵ９１１などの処理装置を用いて、ｎ個の整数ＩＤｉをｎ個の受信者識別情報として入力することを特徴とする。
乱数生成部２２２は、ＣＰＵ９１１などの処理装置を用いて、暗号パラメータ記憶部２１０が記憶した公開暗号パラメータが表わす自然数ｒに基づいて、ｎ人の受信者に対応するｎ個の１以上自然数ｒ未満の整数ｓｉ（ｉは、１以上ｎ以下の整数。）をランダムに生成することを特徴とする。
第一暗号文生成部２４１は、ＣＰＵ９１１などの処理装置を用いて、暗号パラメータ記憶部２１０が記憶した公開暗号パラメータが表わす乗法群Ｇ１の要素ｇと乗法群Ｇ２の要素ｈ１とペアリングｅと、鍵生成関数ＫＤＦと、乱数生成部２２２が生成したｎ個の整数ｓｉとに基づいて、ｎ人の受信者に対応するｎ個の鍵ビット列ｋｉ＝ＫＤＦ（ｅ（ｇ，ｈ１）＾ｓｉ）（ｉは、１以上ｎ以下の整数。）を算出し、ＣＰＵ９１１などの処理装置を用いて、算出したｎ個の鍵ビット列ｋｉにより、平文入力部２３１が入力した平文Ｍをそれぞれ暗号化して、ｎ人の受信者に対応するｎ個の第一暗号文Ｃ１ｉ（ｉは、１以上ｎ以下の整数。）とすることを特徴とする。
第二暗号文生成部２４２は、ＣＰＵ９１１などの処理装置を用いて、暗号パラメータ記憶部２１０が記憶した公開暗号パラメータが表わす乗法群Ｇ１の要素ｇと、乗法群Ｇ１の要素ｇ１と、受信者識別入力部２３２が入力したｎ個の整数ＩＤｉと、乱数生成部２２２が生成したｎ個の整数ｓｉとに基づいて、ｎ人の受信者に対応するｎ個の乗法群Ｇ１の要素ｕｉ＝（ｇ１・ｇ＾−ＩＤｉ）＾ｓｉ（ｉは、１以上ｎ以下の整数。）を算出し、算出したｎ個の乗法群Ｇ１の要素ｕｉをそれぞれ表わすビット列を、ｎ人の受信者に対応するｎ個の第二暗号文Ｃ２ｉ（ｉは、１以上ｎ以下の整数。）とすることを特徴とする。
第三暗号文生成部２４３は、ＣＰＵ９１１などの処理装置を用いて、暗号パラメータ記憶部２１０が記憶した公開暗号パラメータが表わす乗法群Ｇ１の要素ｇと乗法群Ｇ２の要素ｇ２とペアリングｅと、乱数生成部２２２が生成したｎ個の整数ｓｉとに基づいて、ｎ人の受信者に対応するｎ個の乗法群ＧＴの要素ｖｉ＝ｅ（ｇ，ｇ２）＾ｓｉ（ｉは、１以上ｎ以下の整数。）を算出し、算出した乗法群ＧＴの要素ｖｉをそれぞれ表わすビット列を、ｎ人の受信者に対応するｎ個の第三暗号文Ｃ３ｉ（ｉは、１以上ｎ以下の整数。）とすることを特徴とする。
ハッシュ値算出部２４４は、ＣＰＵ９１１などの処理装置を用いて、暗号パラメータ記憶部２１０が記憶した公開暗号パラメータが表わすハッシュ関数ＨＦに基づいて、１つの自然数β０を算出して、ハッシュ値Ｈ０とすることを特徴とする。
暗号文検証文生成部２４５は、ＣＰＵ９１１などの処理装置を用いて、暗号パラメータ記憶部２１０が記憶した公開暗号パラメータが表わす乗法群Ｇ１の要素ｇと乗法群Ｇ２の要素ｈ２と乗法群Ｇ２の要素ｈ３とペアリングｅと、乱数生成部２２２が生成したｎ個の整数ｓｉと、ハッシュ値算出部２４４が算出した１つの自然数β０とに基づいて、ｎ人の受信者に対応するｎ個の乗法群ＧＴの要素ｙｉ＝ｅ（ｇ，ｈ２）＾ｓｉ・ｅ（ｇ，ｈ３）＾（ｓｉ・β０）（ｉは、１以上ｎ以下の整数。）を算出し、算出したｎ個の乗法群ＧＴの要素ｙｉをそれぞれ表わすビット列を、ｎ人の受信者に対応するｎ個の暗号文検証文ＣＣｉ（ｉは、１以上ｎ以下の整数。）とすることを特徴とする。
検証ハッシュ値算出部３４４は、ＣＰＵ９１１などの処理装置を用いて、公開パラメータ記憶部３１０が記憶した公開暗号パラメータが表わすハッシュ関数ＨＦに基づいて、自然数β’を算出して、検証ハッシュ値Ｈ’とすることを特徴とする。
暗号文検証部３４５は、ＣＰＵ９１１などの処理装置を用いて、公開パラメータ記憶部３１０が記憶した公開暗号パラメータが表わすペアリングｅと、秘密鍵記憶部３２３が記憶した秘密鍵ｄＩＤが表わす整数ｒＩＤ，２と整数ｒＩＤ，３と乗法群Ｇ２の要素ｈＩＤ，２と乗法群Ｇ２の要素ｈＩＤ，３と、暗号文分解部３４６が取得した１つの対応第二暗号文Ｃ２ＩＤが表わす乗法群Ｇ１の要素ｕＩＤと１つの対応第三暗号文Ｃ３ＩＤが表わす乗法群ＧＴの要素ｖＩＤと、検証ハッシュ値算出部３４４が算出した自然数β’とに基づいて、乗法群ＧＴの要素ｙ’＝ｅ（ｕＩＤ，ｈＩＤ，２・ｈＩＤ，３＾β’）・ｖＩＤ＾（ｒＩＤ，２＋ｒＩＤ，３・β’）を算出し、ＣＰＵ９１１などの処理装置を用いて、算出した乗法群ＧＴの要素ｙ’と、暗号文分解部３４６が取得した対応暗号文検証文ＣＣＩＤが表わす乗法群ＧＴの要素ｙＩＤとを比較し、乗法群ＧＴの要素ｙ’と乗法群ＧＴの要素ｙＩＤとが一致する場合に、暗号文受信部３５１が受信した１つの暗号文Ｃ（鍵暗号文Ｃ）に整合性があると判定することを特徴とする。
暗号文復号部３４１は、暗号文受信部３５１が受信した１つの暗号文Ｃに整合性があると、暗号文検証部３４５が判定した場合に、ＣＰＵ９１１などの処理装置を用いて、公開パラメータ記憶部３１０が記憶した公開暗号パラメータが表わすペアリングｅと鍵生成関数ＫＤＦと、秘密鍵記憶部３２３が記憶した秘密鍵ｄＩＤが表わす整数ｒＩＤ，１と乗法群Ｇ２の要素ｈＩＤ，１と、上記暗号文分解部が取得した１つの対応第二暗号文Ｃ２ＩＤが表わす乗法群Ｇ１の要素ｕＩＤと、対応第三暗号文Ｃ３ＩＤが表わす乗法群Ｇ２の要素ｖＩＤとに基づいて、鍵ビット列ｋ’＝ＫＤＦ（ｅ（ｕＩＤ，ｈＩＤ，１）・ｖＩＤ＾ｒＩＤ，１）を算出し、ＣＰＵ９１１などの処理装置を用いて、算出した鍵ビット列ｋ’により、暗号文分解部３４６が取得した対応第一暗号文Ｃ１ＩＤを復号して、平文Ｍを復元することを特徴とする。【０３８５】
この実施の形態におけるＩＤベース暗号通信システム８００によれば、暗号処理に必要な資源が少なくて済み、ＳＭＭＲ−ＩＮＤ−ＩＤ−ＣＣＡ２安全性を数学的に証明できるＩＤベース暗号方式を利用した暗号通信を実現できるという効果を奏する。【０３８６】
実施の形態３．
実施の形態３について、図１８〜図２４を用いて説明する。【０３８７】
この実施の形態におけるＩＤベース暗号通信システム８００を説明する前に、まず、対比例であるＩＤベース暗号通信システムについて説明する。【０３８８】
この実施の形態における対比例であるＩＤベース暗号通信システムの全体構成は、実施の形態１で説明したものと同様なので、ここでは説明を省略する。【０３８９】
最初に、暗号パラメータ生成装置１００について説明する。
暗号パラメータ生成装置１００のブロック構成は、実施の形態１で説明したものと同様なので、図４を用いて、実施の形態１と異なる部分について説明する。【０３９０】
群パラメータ記憶部１１１は、磁気ディスク装置９２０などの記憶装置を用いて、群パラメータとして、自然数ｒと、乗法群Ｇ１と、乗法群Ｇ２と、乗法群ＧＴと、ペアリングｅを表わす情報を記憶する。
自然数ｒは、ＤＨ問題を解くことが困難な大素数である。
乗法群Ｇ１及び乗法群Ｇ２及び乗法群ＧＴは、位数が自然数ｒである乗法群である。
なお、乗法群Ｇ１と乗法群Ｇ２とは、同じ乗法群でもよいし、異なる乗法群でもよい。乗法群Ｇ１と乗法群Ｇ２とが同じ乗法群である場合には、群パラメータ記憶部１１１は、乗法群Ｇ２を表わす情報を記憶しなくてもよい。【０３９１】
ペアリングｅは、乗法群Ｇ１の要素と乗法群Ｇ２の要素とから、乗法群ＧＴの要素を算出する写像である。ペアリングｅは、双線形ペアリングであって、コンピュータのＣＰＵ９１１などの処理装置を用いて実用的な時間内に計算可能なペアリングであるものとする。【０３９２】
秘密情報生成部１１２は、ＣＰＵ９１１などの処理装置を用いて、群パラメータ記憶部１１１が記憶した群パラメータを入力する。
秘密情報生成部１１２は、ＣＰＵ９１１などの処理装置を用いて、入力した群パラメータが表わす自然数ｒに基づいて、１以上自然数ｒ未満の整数αをランダムに生成する。
秘密情報生成部１１２は、ＣＰＵ９１１などの処理装置を用いて、生成した整数αを表わす情報を出力する。【０３９３】
公開パラメータ生成部１１３は、ＣＰＵ９１１などの処理装置を用いて、群パラメータ記憶部１１１が記憶した群パラメータと、秘密情報生成部１１２が出力した整数αとを入力する。
公開パラメータ生成部１１３は、ＣＰＵ９１１などの処理装置を用いて、入力した群パラメータが表わす乗法群ＧＴに基づいて、鍵生成関数ＫＤＦを決定する。
鍵生成関数ＫＤＦは、乗法群ＧＴの要素から、所定の長さのビット列を算出する関数である。
公開パラメータ生成部１１３は、ＣＰＵ９１１などの処理装置を用いて、ハッシュ関数ＨＦを決定する。
ハッシュ関数ＨＦは、任意の長さのビット列から、所定の長さのビット列を算出する関数である。なお、ハッシュ関数ＨＦは、異なるビット列から同じビット列を算出する確率が極めて低いものとする。
以下、ハッシュ関数ＨＦが出力するビット列の長さは、ｍビットであるものとする。【０３９４】
公開パラメータ生成部１１３は、ＣＰＵ９１１などの処理装置を用いて、入力した群パラメータが表わす乗法群Ｇ２に基づいて、２つの関数Ｖ１及びＶ２を決定する。
関数Ｖ１及びＶ２は、所定の長さのビット列から、乗法群Ｇ２の要素を算出する関数である。
関数Ｖ１及びＶ２が入力するビット列の長さは、ハッシュ関数ＨＦが出力するビット列の長さと等しく、ｍビットである。【０３９５】
この対比例において、関数Ｖ１及びＶ２が入力するｍビットのビット列は、ｍ１個のｍ２ビットのビット列に分解できるものとする。すなわち、ｍ＝ｍ１・ｍ２であるとする。
公開パラメータ生成部１１３は、ＣＰＵ９１１などの処理装置を用いて、入力した群パラメータが表わす乗法群Ｇ２に基づいて、（ｍ１＋２）個の乗法群Ｇ２の要素ｈ１、ｈ２、…、ｈｍ１、ｈ１’、ｈ２’をランダムに選択する。
関数Ｖ１及びＶ２の入力となるｍビットのビット列をＩＤ＝（ν１｜ν２｜…｜νｍ１）（νξ（ξは、１以上ｍ１以下の整数。）は、ｍ２ビットのビット列。）とする。
関数Ｖ１は、νξを０以上２ｍ２未満の整数と解釈して、公開パラメータ生成部１１３が選択した（ｍ１＋１）個の乗法群Ｇ２の要素ｈ１、ｈ２、…、ｈｍ１、ｈ１’に基づいて、乗法群Ｇ２の要素ｈ１のν１乗と、乗法群Ｇ２の要素ｈ２のν２乗と、…、乗法群Ｇ２の要素ｈｍ１のνｍ１乗と、乗法群Ｇ２の要素ｈ１’との総積である乗法群Ｇ２の要素ｈ１’・Π（ｈξ＾νξ）（ξは、１以上ｍ１以下の整数。）を、関数Ｖ１が出力する乗法群Ｇ２の要素Ｖ１（ＩＤ）とするものと定義する。
関数Ｖ２も同様に、公開パラメータ生成部１１３が選択した（ｍ１＋１）個の乗法群Ｇ２の要素ｈ１、ｈ２、…、ｈｍ１、ｈ２’に基づいて、乗法群Ｇ２の要素ｈ１のν１乗と、乗法群Ｇ２の要素ｈ２のν２乗と、…、乗法群Ｇ２の要素ｈｍ１のνｍ１乗と、乗法群Ｇ２の要素ｈ２’との総積である乗法群Ｇ２の要素ｈ２’・Π（ｈξ＾νξ）（ξは、１以上ｍ１以下の整数。）を、関数Ｖ２が出力する乗法群Ｇ２の要素Ｖ２（ＩＤ）とするものと定義する。
公開パラメータ生成部１１３は、関数Ｖ１及びＶ２を計算するために必要な（ｍ１＋２）個の乗法群Ｇ２の要素ｈ１、ｈ２、…、ｈｍ１、ｈ１’、ｈ２’を選択することにより、関数Ｖ１及びＶ２を決定する。【０３９６】
なお、関数Ｖ１及びＶ２は、上記説明した定義によるものでなくてもよい。また、関数Ｖ１と関数Ｖ２とが、同じ関数であってもよい。【０３９７】
公開パラメータ生成部１１３は、ＣＰＵ９１１などの処理装置を用いて、入力した群パラメータが表わす乗法群Ｇ１に基づいて、乗法群Ｇ１の要素ｇをランダムに選択する。
公開パラメータ生成部１１３は、ＣＰＵ９１１などの処理装置を用いて、入力した群パラメータが表わす乗法群Ｇ２に基づいて、乗法群Ｇ２の要素ｇ２をランダムに選択する。
ただし、乗法群Ｇ１の要素ｇと乗法群Ｇ２の要素ｇ２とのペアリング値である乗法群ＧＴの要素ｅ（ｇ，ｇ２）が乗法群ＧＴの単位元とならないように、乗法群Ｇ１の要素ｇと乗法群Ｇ２の要素ｇ２とを選択する。
なお、乗法群Ｇ１と乗法群Ｇ２とが同じ乗法群である場合には、乗法群Ｇ１の要素ｇと乗法群Ｇ２の要素ｇ２とは、異なる要素を選択する。【０３９８】
公開パラメータ生成部１１３は、ＣＰＵ９１１などの処理装置を用いて、入力した群パラメータが表わす乗法群Ｇ１と、選択した乗法群Ｇ１の要素ｇと、入力した情報が表わす整数αとに基づいて、乗法群Ｇ１の要素ｇのα乗である乗法群Ｇ１の要素ｇ１＝ｇ＾αを算出する。【０３９９】
公開パラメータ生成部１１３は、ＣＰＵ９１１などの処理装置を用いて、入力した群パラメータと、決定した鍵生成関数ＫＤＦと、決定したハッシュ関数ＨＦと、決定した２つの関数Ｖ１、Ｖ２と、選択した乗法群Ｇ１の要素ｇと、算出した乗法群Ｇ１の要素ｇ１と、選択した乗法群Ｇ２の要素ｇ２とを表わす情報を、公開暗号パラメータとして出力する。
なお、公開暗号パラメータは、関数Ｖ１及びＶ２を表わす情報として、（ｍ１＋２）個の乗法群Ｇ２の要素ｈ１、ｈ２、…、ｈｍ１、ｈ１’、ｈ２’を表わす情報を含む。【０４００】
秘密情報生成部１１２は、ＣＰＵ９１１などの処理装置を用いて、公開パラメータ生成部１１３が出力した公開暗号パラメータを入力する。
秘密情報生成部１１２は、ＣＰＵ９１１などの処理装置を用いて、入力した公開暗号パラメータが表わす乗法群Ｇ２と乗法群Ｇ２の要素ｇ２と、生成した整数αとに基づいて、乗法群Ｇ２の要素ｇ２のα乗である乗法群Ｇ２の要素ｇ２＾αを算出する。
秘密情報生成部１１２は、ＣＰＵ９１１などの処理装置を用いて、算出した乗法群Ｇ２の要素ｇ２＾αを表わす情報を出力する。【０４０１】
秘密情報記憶部１２１は、ＣＰＵ９１１などの処理装置を用いて、秘密情報生成部１１２が出力した乗法群Ｇ２の要素ｇ２＾αを表わす情報を、秘密情報として入力する。
秘密情報記憶部１２１は、磁気ディスク装置９２０などの記憶装置を用いて、入力した乗法群Ｇ２の要素ｍｓｋ＝ｇ２＾αを表わす情報を記憶する。【０４０２】
なお、秘密情報記憶部１２１は、秘密情報生成部１１２が算出した乗法群Ｇ２の要素ｍｓｋを表わす情報の代わりに、秘密情報生成部１１２が生成した整数αを表わす情報を記憶してもよい。【０４０３】
識別情報入力部１３１は、ＣＰＵ９１１などの処理装置を用いて、受信者識別情報ＩＤを入力する。
以下の説明において、暗号パラメータ生成装置１００は、受信者識別情報ＩＤをｍビットのビット列として取り扱う。
例えば、暗号パラメータ生成装置１００は、メールアドレスなどの任意の長さのビット列にパディングビット列を付加することにより、ｍビットのビット列とし、受信者識別情報とする。
あるいは、暗号パラメータ生成装置１００は、メールアドレスなどの任意の長さのビット列を、ハッシュ関数（公開パラメータ生成部１１３が決定したハッシュ関数ＨＦと同じハッシュ関数であってもよいし、異なるハッシュ関数であってもよい。）の入力とし、ハッシュ関数により算出したｍビットのビット列を取得して、受信者識別情報としてもよい。【０４０４】
すなわち、識別情報入力部１３１は、ＣＰＵ９１１などの処理装置を用いて、ｍビットのビット列ＩＤを受信者識別情報として入力する。
識別情報入力部１３１は、ＣＰＵ９１１などの処理装置を用いて、入力したｍビットのビット列ＩＤを出力する。【０４０５】
秘密鍵生成部１３２は、ＣＰＵ９１１などの処理装置を用いて、秘密情報記憶部１２１が記憶した乗法群Ｇ２の要素ｍｓｋを表わす情報と、パラメータ記憶部１２２が記憶した公開暗号パラメータと、識別情報入力部１３１が出力したｍビットのビット列ＩＤとを入力する。
秘密鍵生成部１３２は、ＣＰＵ９１１などの処理装置を用いて、入力した公開暗号パラメータが表わす自然数ｒに基づいて、整数ｒＩＤをランダムに生成する。整数ｒＩＤは、１以上ｒ未満の整数である。【０４０６】
秘密鍵生成部１３２は、ＣＰＵ９１１などの処理装置を用いて、入力した公開暗号パラメータが表わす関数Ｖ１と、入力した長さｍのビット列ＩＤとに基づいて、ｍビットのビット列ＩＤを、関数Ｖ１により変換した乗法群Ｇ２の要素Ｖ１（ＩＤ）を算出する。
秘密鍵生成部１３２は、ＣＰＵ９１１などの処理装置を用いて、入力した公開暗号パラメータが表わす乗法群Ｇ２と、算出した乗法群Ｇ２の要素Ｖ１（ＩＤ）と、生成した整数ｒＩＤとに基づいて、乗法群Ｇ２の要素Ｖ１（ＩＤ）のｒＩＤ乗である乗法群Ｇ２の要素Ｖ１（ＩＤ）＾ｒＩＤを算出する。
秘密鍵生成部１３２は、ＣＰＵ９１１などの処理装置を用いて、入力した公開暗号パラメータが表わす乗法群Ｇ２と、入力した情報が表わす乗法群Ｇ２の要素ｍｓｋと、算出した乗法群Ｇ２の要素Ｖ１（ＩＤ）＾ｒＩＤとに基づいて、乗法群Ｇ２の要素ｍｓｋと乗法群Ｇ２の要素Ｖ１（ＩＤ）＾ｒＩＤとの積である乗法群Ｇ２の要素ｄ０ＩＤ＝ｍｓｋ・Ｖ１（ＩＤ）＾ｒＩＤを算出する。【０４０７】
秘密鍵生成部１３２は、ＣＰＵ９１１などの処理装置を用いて、入力した公開暗号パラメータが表わす乗法群Ｇ１と乗法群Ｇ１の要素ｇと、生成した整数ｒＩＤとに基づいて、乗法群Ｇ１の要素ｇのｒＩＤ乗である乗法群Ｇ１の要素ｄ１ＩＤ＝ｇ＾ｒＩＤを算出する。
秘密鍵生成部１３２は、ＣＰＵ９１１などの処理装置を用いて、算出した乗法群Ｇ２の要素ｄ０ＩＤと、算出した乗法群Ｇ１の要素ｄ１ＩＤとを表わす情報を、秘密鍵ｄＩＤとして出力する。【０４０８】
次に、、暗号文生成装置２００について説明する。
暗号文生成装置２００の機能ブロックの構成も、実施の形態１で説明したものと同様なので、図５を用いて、実施の形態１と異なる部分について説明する。【０４０９】
暗号文生成装置２００は、暗号パラメータ生成装置１００と同様、受信者識別情報ＩＤをｍビットのビット列として取り扱う。【０４１０】
受信者識別入力部２３２は、ＣＰＵ９１１などの処理装置を用いて、ｎ人の受信者（ｎは、１以上の整数。）をそれぞれ識別するｎ個の受信者識別情報として、ｎ個のｍビットのビット列ＩＤｉ（ｉは、１以上ｎ以下の整数。）を入力する。
受信者識別入力部２３２は、ＣＰＵ９１１などの処理装置を用いて、入力したｎ個のｍビットのビット列ＩＤｉを出力する。【０４１１】
乱数生成部２２２は、ＣＰＵ９１１などの処理装置を用いて、暗号パラメータ記憶部２１０が記憶した公開暗号パラメータを入力する。
乱数生成部２２２は、ＣＰＵ９１１などの処理装置を用いて、入力した公開暗号パラメータが表わす自然数ｒに基づいて、ｎ人の受信者にそれぞれ対応するｎ個の１以上自然数ｒ未満の整数ｓｉ（ｉは、１以上ｎ以下の整数。）をランダムに生成する。
乱数生成部２２２は、ＣＰＵ９１１などの処理装置を用いて、生成したｎ個の整数ｓｉを表わす情報を出力する。【０４１２】
第一暗号文生成部２４１は、ＣＰＵ９１１などの処理装置を用いて、暗号パラメータ記憶部２１０が記憶した公開暗号パラメータと、乱数生成部２２２が出力したｎ個の整数ｓｉを表わす情報と、平文入力部２３１が出力した平文Ｍとを入力する。【０４１３】
第一暗号文生成部２４１は、ＣＰＵ９１１などの処理装置を用いて、入力した公開暗号パラメータが表わすペアリングｅと乗法群Ｇ１の要素ｇ１と乗法群Ｇ２の要素ｇ２とに基づいて、乗法群Ｇ１の要素ｇ１と乗法群Ｇ２の要素ｇ２とのペアリング値である乗法群ＧＴの要素ｅ（ｇ１，ｇ２）を算出する。
なお、乗法群ＧＴの要素ｅ（ｇ１，ｇ２）は、整数ｓｉや平文Ｍにかかわらず一定なので、前もって算出し、磁気ディスク装置９２０などの記憶装置を用いて記憶しておいてもよい。【０４１４】
第一暗号文生成部２４１は、ＣＰＵ９１１などの処理装置を用いて、入力した公開暗号パラメータが表わす乗法群ＧＴと、算出した乗法群ＧＴの要素ｅ（ｇ１，ｇ２）と、入力した情報が表わすｎ個の整数ｓｉとに基づいて、乗法群ＧＴの要素ｅ（ｇ１，ｇ２）のｓｉ乗であるｎ個の乗法群ＧＴの要素ｅ（ｇ１，ｇ２）＾ｓｉ（ｉは、１以上ｎ以下の整数。）を算出する。【０４１５】
第一暗号文生成部２４１は、ＣＰＵ９１１などの処理装置を用いて、入力した公開暗号パラメータが表わす鍵生成関数ＫＤＦと、算出したｎ個の乗法群ＧＴの要素ｅ（ｇ１，ｇ２）＾ｓｉとに基づいて、乗法群ＧＴの要素ｅ（ｇ１，ｇ２）＾ｓｉを鍵生成関数ＫＤＦにより変換した所定の長さのビット列であるｎ個の鍵ビット列ｋｉ＝ＫＤＦ（ｅ（ｇ１，ｇ２）＾ｓｉ）（ｉは、１以上ｎ以下の整数。）を算出する。【０４１６】
第一暗号文生成部２４１は、ＣＰＵ９１１などの処理装置を用いて、入力した平文Ｍと、算出したｎ個の鍵ビット列ｋｉとに基づいて、平文Ｍをｎ個の鍵ビット列ｋｉによりそれぞれ暗号化したｎ個のビット列を生成して、ｎ個の第一暗号文Ｃ１ｉ（ｉは、１以上ｎ以下の整数。）とする。
第一暗号文生成部２４１は、ＣＰＵ９１１などの処理装置を用いて、生成したｎ個の第一暗号文Ｃ１ｉを出力する。【０４１７】
第二暗号文生成部２４２は、ＣＰＵ９１１などの処理装置を用いて、暗号パラメータ記憶部２１０が記憶した公開暗号パラメータと、乱数生成部２２２が出力したｎ個の整数ｓｉを表わす情報と、受信者識別入力部２３２が出力したｎ個のｍビットのビット列ＩＤｉとを入力する。
第二暗号文生成部２４２は、ＣＰＵ９１１などの処理装置を用いて、入力した公開暗号パラメータが表わす関数Ｖ１と、入力したｎ個のｍビットのビット列ＩＤｉとに基づいて、ｍビットのビット列ＩＤｉを関数Ｖ１により変換したｎ個の乗法群Ｇ２の要素Ｖ１（ＩＤｉ）（ｉは、１以上ｎ以下の整数。）を算出する。【０４１８】
なお、関数Ｖ１の計算は、例えば、以下の手順による。
第二暗号文生成部２４２は、ＣＰＵ９１１などの処理装置を用いて、入力したｎ個のｍビットのビット列ＩＤｉそれぞれを、ｍ１個のｍ２ビットのビット列νｉξ（ｉは、１以上ｎ以下の整数。ξは、１以上ｍ１以下の整数。ｍ＝ｍ１・ｍ２。）に分解する。結果として、分解したｍ２ビットのビット列νｉξの数は、全部でｎ・ｍ１個になる。以下の説明では、煩雑さを避けるため、１つのｍビットのビット列ＩＤｉについて、関数Ｖ１の値Ｖ１（ＩＤｉ）を計算する手順を述べる。【０４１９】
第二暗号文生成部２４２は、分解したｍ２ビットのビット列νｉξを、０以上２のｍ２乗未満の整数として取り扱う。例えば、すべてのビットが「０」のビット列νｉξを整数０として取り扱い、すべてのビットが「１」のビット列νｉξを整数２ｍ２−１として取り扱う。どのビット列をどの整数として取り扱ってもよいが、ＣＰＵ９１１などの処理装置内部における整数の表現形式により定まる対応関係に基づいた取り扱いをするほうが、変換の手間が省けるので好ましい。以下の記述において、「整数νｉξ」とは、ｍ２ビットのビット列νｉξを整数として取り扱った場合の整数を意味する。【０４２０】
第二暗号文生成部２４２は、ＣＰＵ９１１などの処理装置を用いて、入力した公開暗号パラメータが表わす乗法群Ｇ２とｍ１個の乗法群Ｇ２の要素ｈξ（ξは、１以上ｍ１以下の整数。）と、ｍ１個の整数νｉξとに基づいて、乗法群Ｇ２の要素ｈξのνｉξ乗であるｍ１個の乗法群Ｇ２の要素ｈξ＾νｉξを算出する。
第二暗号文生成部２４２は、ＣＰＵ９１１などの処理装置を用いて、入力した公開暗号パラメータが表わす乗法群Ｇ２と乗法群Ｇ２の要素ｈ１’と、算出したｍ１個の乗法群Ｇ２の要素ｈξ＾νｉξとに基づいて、乗法群Ｇ２の要素ｈ１’とｍ１個の乗法群Ｇ２の要素ｈξ＾νｉξとをすべて乗じた結果である１つの乗法群Ｇ２の要素ｈ１’・Π（ｈξ＾νｉξ）（ξは、１以上ｍ１以下の整数。）を算出する。
第二暗号文生成部２４２は、算出した１つの乗法群Ｇ２の要素ｈ１’・Π（ｈξ＾νｉξ）を、関数Ｖ１の値Ｖ１（ＩＤｉ）とする。【０４２１】
ｎ個の乗法群Ｇ２の要素Ｖ１（ＩＤｉ）を算出するには、以上の手順をｎ回行う。【０４２２】
第二暗号文生成部２４２は、ＣＰＵ９１１などの処理装置を用いて、入力した公開暗号パラメータが表わす乗法群Ｇ２と、算出したｎ個の乗法群Ｇ２の要素Ｖ１（ＩＤｉ）と、入力した情報が表わすｎ個の整数ｓｉとに基づいて、乗法群Ｇ２の要素Ｖ１（ＩＤｉ）のｓｉ乗であるｎ個の乗法群Ｇ２の要素ｕｉ＝Ｖ１（ＩＤｉ）＾ｓｉ（ｉは、１以上ｎ以下の整数。）を算出する。
第二暗号文生成部２４２は、ＣＰＵ９１１などの処理装置を用いて、算出したｎ個の乗法群Ｇ２の要素ｕｉをそれぞれ表わすｎ個のビット列を、ｎ個の第二暗号文Ｃ２ｉ（ｉは、１以上ｎ以下の整数。）として出力する。【０４２３】
第三暗号文生成部２４３は、ＣＰＵ９１１などの処理装置を用いて、暗号パラメータ記憶部２１０が記憶した公開暗号パラメータと、乱数生成部２２２が出力したｎ個の整数ｓｉを表わす情報とを入力する。
第三暗号文生成部２４３は、ＣＰＵ９１１などの処理装置を用いて、入力した公開暗号パラメータが表わす乗法群Ｇ１と乗法群Ｇ１の要素ｇと、入力した情報が表わすｎ個の整数ｓｉとに基づいて、乗法群Ｇ１の要素ｇのｓｉ乗であるｎ個の乗法群Ｇ１の要素ｖｉ＝ｇ＾ｓｉ（ｉは、１以上ｎ以下の整数。）を算出する。
第三暗号文生成部２４３は、ＣＰＵ９１１などの処理装置を用いて、算出したｎ個の乗法群Ｇ１の要素ｖｉをそれぞれ表わすｎ個のビット列を、ｎ個の第三暗号文Ｃ３ｉ（ｉは、１以上ｎ以下の整数。）として出力する。【０４２４】
ハッシュ値算出部２４４は、ＣＰＵ９１１などの処理装置を用いて、暗号パラメータ記憶部２１０が記憶した公開暗号パラメータを入力する。
ハッシュ値算出部２４４は、ＣＰＵ９１１などの処理装置を用いて、暗号文主文生成部２４０が出力したｎ個の暗号文主文ＣＢｉとして、第一暗号文生成部２４１が出力したｎ個の第一暗号文Ｃ１ｉと、第二暗号文生成部２４２が出力したｎ個の第二暗号文Ｃ２ｉと、第三暗号文生成部２４３が出力したｎ個の第三暗号文Ｃ３ｉとを入力する。
ハッシュ値算出部２４４は、ＣＰＵ９１１などの処理装置を用いて、入力したｎ個の第一暗号文Ｃ１ｉと、ｎ個の第二暗号文Ｃ２ｉと、ｎ個の第三暗号文Ｃ３ｉとをそれぞれ結合して、ｎ個の結合暗号文を生成する。【０４２５】
なお、ハッシュ値算出部２４４は、ｎ個の暗号文主文ＣＢｉ（の一部）として、更に、受信者識別入力部２３２が出力したｎ個の受信者識別情報ＩＤｉを入力し、入力したｎ個の受信者識別情報ＩＤｉと、ｎ個の第一暗号文Ｃ１ｉと、ｎ個の第二暗号文Ｃ２ｉと、ｎ個の第三暗号文Ｃ３ｉとをすべて結合して、１つの結合暗号文を生成してもよい。【０４２６】
ハッシュ値算出部２４４は、ＣＰＵ９１１などの処理装置を用いて、入力した公開暗号パラメータが表わすハッシュ関数ＨＦと、生成したｎ個の結合暗号文とに基づいて、ｎ個の結合暗号文をハッシュ関数ＨＦによりそれぞれ変換したｎ個のｍビットのビット列ｗｉを算出し、ｎ個のハッシュ値Ｈｉとする。
ハッシュ値算出部２４４は、ＣＰＵ９１１などの処理装置を用いて、算出したｎ個のｍビットのビット列ｗｉを表わす情報と、生成したｎ個の結合暗号文とを出力する。【０４２７】
暗号文検証文生成部２４５は、ＣＰＵ９１１などの処理装置を用いて、暗号パラメータ記憶部２１０が記憶した公開暗号パラメータと、乱数生成部２２２が出力したｎ個の整数ｓｉを表わす情報と、ハッシュ値算出部２４４が出力したｎ個のｍビットのビット列ｗｉを表わす情報とを入力する。
暗号文検証文生成部２４５は、ＣＰＵ９１１などの処理装置を用いて、入力した公開暗号パラメータが表わす関数Ｖ２と、入力したｎ個のｍビットのビット列ｗｉとに基づいて、ｍビットのビット列ｗｉを関数Ｖ２によりそれぞれ変換したｎ個の乗法群Ｇ２の要素Ｖ２（ｗｉ）（ｉは、１以上ｎ以下の整数。）を算出する。【０４２８】
なお、関数Ｖ２の計算は、例えば、以下の手順による。
暗号文検証文生成部２４５は、ＣＰＵ９１１などの処理装置を用いて、入力したｎ個のｍビットのビット列ｗｉそれぞれを、ｍ１個のｍ２ビットのビット列νｉξ（ｉは、１以上ｎ以下の整数。ξは、１以上ｍ１以下の整数。ｍ＝ｍ１・ｍ２。）に分解する。結果として、分解したｍ２ビットのビット列νｉξの数は、全部でｎ・ｍ１個になる。以下の説明では、１つのｍビットのビット列ｗｉについて、関数Ｖ２の値Ｖ２（ｗｉ）を計算する手順を述べる。【０４２９】
暗号文検証文生成部２４５は、分解したｍ２ビットのビット列νｉξを、０以上２のｍ２乗未満の整数として取り扱う。
暗号文検証文生成部２４５は、ＣＰＵ９１１などの処理装置を用いて、入力した公開暗号パラメータが表わす乗法群Ｇ２とｍ１個の乗法群Ｇ２の要素ｈξ（ξは、１以上ｍ１以下の整数。）と、ｍ１個の整数νｉξとに基づいて、乗法群Ｇ２の要素ｈξのνｉξ乗であるｍ１個の乗法群Ｇ２の要素ｈξ＾νｉξを算出する。
暗号文検証文生成部２４５は、ＣＰＵ９１１などの処理装置を用いて、入力した公開暗号パラメータが表わす乗法群Ｇ２と乗法群Ｇ２の要素ｈ２’と、算出したｍ１個の乗法群Ｇ２の要素ｈξ＾νｉξとに基づいて、乗法群Ｇ２の要素ｈ２’とｍ１個の乗法群Ｇ２の要素ｈξ＾νｉξとをすべて乗じた結果である１つの乗法群Ｇ２の要素ｈ２’・Π（ｈξ＾νｉξ）（ξは、１以上ｍ１以下の整数。）を算出する。
暗号文検証文生成部２４５は、算出した１つの乗法群Ｇ２の要素ｈ２’・Π（ｈξ＾νｉξ）を、関数Ｖ２の値Ｖ２（ＩＤｉ）とする。【０４３０】
ｎ個の乗法群Ｇ２の要素Ｖ２（ＩＤｉ）を算出するには、以上の手順をｎ回行う。【０４３１】
暗号文検証文生成部２４５は、ＣＰＵ９１１などの処理装置を用いて、入力した情報が表わすｎ個の整数ｓｉと、算出したｎ個の乗法群Ｇ２の要素Ｖ２（ｗｉ）とに基づいて、乗法群Ｇ２の要素Ｖ２（ｗｉ）のｓｉ乗であるｎ個の乗法群Ｇ２の要素ｙｉ＝Ｖ２（ｗｉ）＾ｓｉ（ｉは、１以上ｎ以下の整数。）を算出する。
暗号文検証文生成部２４５は、ＣＰＵ９１１などの処理装置を用いて、算出したｎ個の乗法群Ｇ２の要素ｙｉをそれぞれ表わすｎ個のビット列を、ｎ個の暗号文検証文ＣＣｉ（ｉは、１以上ｎ以下の整数。）として出力する。【０４３２】
暗号文結合部２４６は、ＣＰＵ９１１などの処理装置を用いて、ハッシュ値算出部２４４が出力したｎ個の結合暗号文と、暗号文検証文生成部２４５が出力したｎ個の暗号文検証文ＣＣｉとを入力する。
暗号文結合部２４６は、ＣＰＵ９１１などの処理装置を用いて、入力したｎ個の結合暗号文と、入力したｎ個の暗号文検証文とをすべて結合して、１つの鍵暗号文Ｃを生成する。
暗号文結合部２４６は、ＣＰＵ９１１などの処理装置を用いて、生成した１つの鍵暗号文Ｃを出力する。【０４３３】
なお、この例において、暗号文結合部２４６は、ハッシュ値算出部２４４が出力したｎ個の結合暗号文を入力するが、結合暗号文は第一暗号文Ｃ１ｉと第二暗号文Ｃ２ｉと第三暗号文Ｃ３ｉとを結合したものなので、暗号文結合部２４６は、ｎ個の第一暗号文Ｃ１ｉとｎ個の第二暗号文Ｃ２ｉとｎ個の第三暗号文Ｃ３ｉとを入力したことになる。【０４３４】
この実施の形態における対比例である暗号文生成装置２００のなかでやり取りされる情報の流れは、実施の形態２で図１１を用いて説明したものと同様である。【０４３５】
次に、暗号文受信装置３０１〜３０３について説明する。
暗号文受信装置３０１〜３０３の機能ブロックの構成も、実施の形態１で説明したものと同様なので、図６を用いて、実施の形態１と異なる部分について説明する。【０４３６】
暗号文分解部３４６は、ＣＰＵ９１１などの処理装置を用いて、暗号文受信部３５１が出力した１つの鍵暗号文Ｃを入力する。
暗号文分解部３４６は、ＣＰＵ９１１などの処理装置を用いて、入力した１つの鍵暗号文Ｃから、自身が対応する受信者に対応する対応第一暗号文Ｃ１ＩＤと、対応第二暗号文Ｃ２ＩＤと、対応第三暗号文Ｃ３ＩＤと、対応暗号文検証文ＣＣＩＤとを取得する。
暗号文分解部３４６は、ＣＰＵ９１１などの処理装置を用いて、取得した対応第一暗号文Ｃ１ＩＤと、対応第二暗号文Ｃ２ＩＤと、対応第三暗号文Ｃ３ＩＤと、対応暗号文検証文ＣＣＩＤとを出力する。
また、暗号文分解部３４６は、ＣＰＵ９１１などの処理装置を用いて、検証結合暗号文（Ｃ１ＩＤ｜Ｃ２ＩＤ｜Ｃ３ＩＤ）を取得し、出力してもよい。【０４３７】
検証ハッシュ値算出部３４４は、ＣＰＵ９１１などの処理装置を用いて、暗号文分解部３４６が出力した対応第一暗号文Ｃ１ＩＤと、対応第二暗号文Ｃ２ＩＤと、対応第三暗号文Ｃ３ＩＤとを入力する。
検証ハッシュ値算出部３４４は、ＣＰＵ９１１などの処理装置を用いて、入力した対応第一暗号文Ｃ１ＩＤと、対応第二暗号文Ｃ２ＩＤと、対応第三暗号文Ｃ３ＩＤとを結合して、検証結合暗号文（Ｃ１ＩＤ｜Ｃ２ＩＤ｜Ｃ３ＩＤ）を生成する。
あるいは、検証ハッシュ値算出部３４４は、検証結合暗号文（Ｃ１ＩＤ｜Ｃ２ＩＤ｜Ｃ３ＩＤ）を生成する代わりに、暗号文分解部３４６が出力した検証結合暗号文（Ｃ１ＩＤ｜Ｃ２ＩＤ｜Ｃ３ＩＤ）を入力してもよい。【０４３８】
検証ハッシュ値算出部３４４は、ＣＰＵ９１１などの処理装置を用いて、公開パラメータ記憶部３１０が記憶した公開暗号パラメータを入力する。
検証ハッシュ値算出部３４４は、ＣＰＵ９１１などの処理装置を用いて、入力した公開暗号パラメータが表わすハッシュ関数ＨＦと、生成あるいは入力した検証結合暗号文（Ｃ１ＩＤ｜Ｃ２ＩＤ｜Ｃ３ＩＤ）とに基づいて、検証結合暗号文（Ｃ１ＩＤ｜Ｃ２ＩＤ｜Ｃ３ＩＤ）をハッシュ関数ＨＦにより変換したｍビットのビット列ｗ’を算出し、ハッシュ値Ｈ’とする。
検証ハッシュ値算出部３４４は、ＣＰＵ９１１などの処理装置を用いて、算出したｍビットのビット列ｗ’を表わす情報を出力する。【０４３９】
暗号文検証部３４５は、ＣＰＵ９１１などの処理装置を用いて、公開パラメータ記憶部３１０が記憶した公開暗号パラメータと、暗号文分解部３４６が出力した対応第二暗号文Ｃ２ＩＤと対応第三暗号文Ｃ３ＩＤと、自身が対応する受信者を識別するｍビットのビット列ＩＤと、検証ハッシュ値算出部３４４が出力したｍビットのビット列ｗ’とを入力する。【０４４０】
暗号文検証部３４５は、ＣＰＵ９１１などの処理装置を用いて、入力した公開暗号パラメータが表わす関数Ｖ１と、入力したｍビットのビット列ＩＤとに基づいて、ｍビットのビット列ＩＤを関数Ｖ１により変換した乗法群Ｇ２の要素Ｖ１（ＩＤ）を算出する。
なお、暗号文検証部３４５が関数Ｖ１を計算する手順は、例えば、上記説明した暗号文生成装置２００の第二暗号文生成部２４２が関数Ｖ１を計算する手順と同様なので、ここでは説明を省略する。【０４４１】
暗号文検証部３４５は、ＣＰＵ９１１などの処理装置を用いて、入力した公開暗号パラメータが表わすペアリングｅと、入力した対応第三暗号文Ｃ３ＩＤが表わす乗法群Ｇ１の要素ｖＩＤと、算出した乗法群Ｇ２の要素Ｖ１（ＩＤ）とに基づいて、乗法群Ｇ１の要素ｖＩＤと乗法群Ｇ２の要素Ｖ１（ＩＤ）とのペアリング値である乗法群ＧＴの要素ｅ（ｖＩＤ，Ｖ１（ＩＤ））を算出する。【０４４２】
暗号文検証部３４５は、ＣＰＵ９１１などの処理装置を用いて、入力した公開暗号パラメータが表わすペアリングｅと乗法群Ｇ１の要素ｇと、入力した対応第二暗号文Ｃ２ＩＤが表わす乗法群Ｇ２の要素ｕＩＤとに基づいて、乗法群Ｇ１の要素ｇと乗法群Ｇ２の要素ｕＩＤとのペアリング値である乗法群ＧＴの要素ｅ（ｇ，ｕＩＤ）を算出する。
暗号文検証部３４５は、ＣＰＵ９１１などの処理装置を用いて、算出した乗法群ＧＴの要素ｅ（ｖＩＤ，Ｖ１（ＩＤ））と、算出した乗法群ＧＴの要素ｅ（ｇ，ｕＩＤ）とを比較し、一致しない場合に、暗号文受信部３５１が入力した１つの鍵暗号文Ｃに整合性がないと判定する。【０４４３】
算出した乗法群ＧＴの要素ｅ（ｖＩＤ，Ｖ１（ＩＤ））と、算出した乗法群ＧＴの要素ｅ（ｇ，ｕＩＤ）とが一致する場合、暗号文検証部３４５は、ＣＰＵ９１１などの処理装置を用いて、入力した公開暗号パラメータが表わす関数Ｖ２と、入力したｍビットのビット列ｗ’とに基づいて、ｍビットのビット列ｗ’を関数Ｖ２により変換した乗法群Ｇ２の要素Ｖ２（ｗ’）を算出する。
なお、暗号文検証部３４５が関数Ｖ２を計算する手順は、例えば、上記説明した暗号文生成装置２００の暗号文検証文生成部２４５が関数Ｖ２を計算する手順と同様なので、ここでは説明を省略する。【０４４４】
暗号文検証部３４５は、ＣＰＵ９１１などの処理装置を用いて、入力した公開暗号パラメータが表わすペアリングｅと、入力した対応第三暗号文Ｃ３ＩＤが表わす乗法群Ｇ１の要素ｖＩＤと、算出した乗法群Ｇ２の要素Ｖ２（ｗ’）とに基づいて、乗法群Ｇ１の要素ｖＩＤと乗法群Ｇ２の要素Ｖ２（ｗ’）とのペアリング値である乗法群ＧＴの要素ｅ（ｖＩＤ，Ｖ２（ｗ’））を算出する。【０４４５】
暗号文検証部３４５は、ＣＰＵ９１１などの処理装置を用いて、暗号文分解部３４６が出力した対応暗号文検証文ＣＣＩＤを入力する。
暗号文検証部３４５は、ＣＰＵ９１１などの処理装置を用いて、入力した公開暗号パラメータが表わすペアリングｅと乗法群Ｇ１の要素ｇと、入力した対応暗号文検証文ＣＣＩＤが表わす乗法群Ｇ２の要素ｙＩＤとに基づいて、乗法群Ｇ１の要素ｇと乗法群Ｇ２の要素ｙＩＤとのペアリング値である乗法群ＧＴの要素ｅ（ｇ，ｙＩＤ）を算出する。【０４４６】
暗号文検証部３４５は、ＣＰＵ９１１などの処理装置を用いて、算出した乗法群ＧＴの要素ｅ（ｖＩＤ，Ｖ２（ｗ’））と、算出した乗法群ＧＴの要素ｅ（ｇ，ｙＩＤ）とを比較する。一致する場合に、暗号文検証部３４５は、ＣＰＵ９１１などの処理装置を用いて、暗号文受信部３５１が入力した１つの鍵暗号文Ｃに整合性があると判定し、一致しない場合に、暗号文受信部３５１が入力した１つの鍵暗号文Ｃに整合性がないと判定する。【０４４７】
ここで、暗号文受信部３５１が入力した１つの鍵暗号文Ｃに整合性があれば、ｕＩＤ＝Ｖ１（ＩＤ）＾ｓＩＤ、ｖＩＤ＝ｇ＾ｓＩＤなので、ペアリングｅの双線形より、ｅ（ｖＩＤ，Ｖ１（ＩＤ））＝ｅ（ｇ，ｕＩＤ）＝ｅ（ｇ，Ｖ１（ＩＤ））＾ｓＩＤとなる。
また、ｙＩＤ＝Ｖ２（ｗＩＤ）＾ｓＩＤなので、ｗ’＝ｗＩＤなら、ｅ（ｖＩＤ，Ｖ２（ｗ’）＝ｅ（ｇ，ｙＩＤ）＝ｅ（ｇ，Ｖ２（ｗＩＤ））＾ｓＩＤとなる。【０４４８】
暗号文受信部３５１が入力した１つの鍵暗号文Ｃに整合性があると、暗号文検証部３４５が判定した場合、暗号文復号部３４１は、平文Ｍを復元するため、以下の処理をする。【０４４９】
暗号文復号部３４１は、ＣＰＵ９１１などの処理装置を用いて、公開パラメータ記憶部３１０が記憶した公開暗号パラメータと、秘密鍵記憶部３２３が記憶した秘密鍵ｄＩＤと、暗号文分解部３４６が出力した対応第一暗号文Ｃ１ＩＤと対応第二暗号文Ｃ２ＩＤと対応第三暗号文Ｃ３ＩＤとを入力する。
暗号文復号部３４１は、ＣＰＵ９１１などの処理装置を用いて、入力した公開暗号パラメータが表わすペアリングｅと、入力した秘密鍵ｄＩＤが表わす乗法群Ｇ２の要素ｄ０ＩＤと、入力した対応第三暗号文Ｃ３ＩＤが表わす乗法群Ｇ１の要素ｖＩＤとに基づいて、乗法群Ｇ１の要素ｖＩＤと乗法群Ｇ２の要素ｄ０ＩＤとのペアリング値である乗法群ＧＴの要素ｅ（ｖＩＤ，ｄ０ＩＤ）を算出する。【０４５０】
暗号文復号部３４１は、ＣＰＵ９１１などの処理装置を用いて、入力した公開暗号パラメータが表わすペアリングｅと、入力した秘密鍵ｄＩＤが表わす乗法群Ｇ１の要素ｄ１ＩＤと、入力した対応第二暗号文Ｃ２ＩＤが表わす乗法群Ｇ２の要素ｕＩＤとに基づいて、乗法群Ｇ１の要素ｄ１ＩＤと乗法群Ｇ２の要素ｕＩＤとのペアリング値である乗法群ＧＴの要素ｅ（ｄ１ＩＤ，ｕＩＤ）を算出する。【０４５１】
暗号文復号部３４１は、ＣＰＵ９１１などの処理装置を用いて、入力した公開暗号パラメータが表わす乗法群ＧＴと、算出した乗法群ＧＴの要素ｅ（ｖＩＤ，ｄ０ＩＤ）と、算出した乗法群ＧＴの要素ｅ（ｄ１ＩＤ，ｕＩＤ）とに基づいて、乗法群ＧＴの要素ｅ（ｖＩＤ，ｄ０ＩＤ）と乗法群ＧＴの要素ｅ（ｄ１ＩＤ，ｕＩＤ）の逆数との積である乗法群ＧＴの要素ｅ（ｖＩＤ，ｄ０ＩＤ）／ｅ（ｄ１ＩＤ，ｕＩＤ）を算出する。
ここで、乗法群ＧＴの要素ｅ（ｄ１ＩＤ，ｕＩＤ）の逆数とは、乗法群ＧＴにおける逆数を意味する。すなわち、乗法群ＧＴの要素ｅ（ｄＩＤ，２，ｕＩＤ）の逆数とは、乗法群ＧＴの要素ｅ（ｄ１ＩＤ，ｕＩＤ）との積が乗法群ＧＴの単位元となる乗法群ＧＴの要素のことである。【０４５２】
暗号文復号部３４１は、ＣＰＵ９１１などの処理装置を用いて、入力した公開暗号パラメータが表わす鍵生成関数ＫＤＦと、算出した乗法群ＧＴの要素ｅ（ｖＩＤ，ｄ０ＩＤ）／ｅ（ｄ１ＩＤ，ｕＩＤ）とに基づいて、乗法群ＧＴの要素ｅ（ｖＩＤ，ｄ０ＩＤ）／ｅ（ｄ１ＩＤ，ｕＩＤ）を鍵生成関数ＫＤＦにより変換した鍵ビット列ｋ’＝ＫＤＦ（ｅ（ｖＩＤ，ｄ０ＩＤ）／ｅ（ｄ１ＩＤ，ｕＩＤ））を算出する。
暗号文復号部３４１は、ＣＰＵ９１１などの処理装置を用いて、入力した対応第一暗号文Ｃ１ＩＤと、算出した鍵ビット列ｋ’とに基づいて、対応第一暗号文Ｃ１ＩＤを鍵ビット列ｋ’により復号したビット列を生成する。【０４５３】
ここで、暗号文生成装置２００の第一暗号文生成部２４１が算出する鍵ビット列ｋｉは、ｋｉ＝ＫＤＦ（ｅ（ｇ１，ｇ２）＾ｓｉ）である。ｇ１＝ｇ＾αなので、ペアリングｅの双線形より、ｅ（ｇ１，ｇ２）＾ｓｉ＝ｅ（ｇ，ｇ２）＾（α・ｓｉ）である。
一方、暗号文復号部３４１が算出する鍵ビット列ｋ’は、ｋ’＝ＫＤＦ（ｅ（ｖＩＤ，ｄ０ＩＤ）／ｅ（ｄ１ＩＤ，ｕＩＤ））である。ｄ０ＩＤ＝ｇ２＾α・Ｖ１（ＩＤ）＾ｒＩＤ、ｄ１ＩＤ＝ｇ＾ｒＩＤ、ｕＩＤ＝Ｖ１（ＩＤ）＾ｓＩＤ、ｖＩＤ＝ｇ＾ｓＩＤなので、ペアリングｅの双線形より、ｅ（ｖＩＤ，ｄ０ＩＤ）＝ｅ（ｇ，ｇ２）＾（α・ｓＩＤ）・ｅ（ｇ，Ｖ１（ＩＤ））＾（ｒＩＤ・ｓＩＤ）、ｅ（ｄ１ＩＤ，ｕＩＤ）＝ｅ（ｇ，Ｖ１（ＩＤ））＾（ｒＩＤ・ｓＩＤ）である。
したがって、ｋ’＝ＫＤＦ（ｅ（ｇ，ｇ２）＾（α・ｓＩＤ））なので、ｋ’＝ｋＩＤとなる。【０４５４】
暗号文復号部３４１は、暗号文生成装置２００の第一暗号文生成部２４１が平文Ｍを暗号化した鍵ビット列と同一の鍵ビット列ｋ’により、対応第一暗号文Ｃ１ＩＤを復号するので、平文Ｍが復元できる。【０４５５】
次に、動作について説明する。【０４５６】
図１９は、この実施の形態における対比例である暗号パラメータ生成装置１００が公開暗号パラメータを設定するパラメータ設定処理の流れの一例を示すフローチャート図である。
なお、実施の形態１で説明したパラメータ設定処理の工程と共通する工程については、同一の符号を付す。【０４５７】
秘密情報生成工程Ｓ１１において、秘密情報生成部１１２は、ＣＰＵ９１１などの処理装置を用いて、群パラメータ記憶部１１１が記憶した群パラメータが表わす自然数ｒに基づいて、１以上自然数ｒ未満の整数αをランダムに生成する。【０４５８】
暗号パラメータ生成工程Ｓ１２において、公開パラメータ生成部１１３は、ＣＰＵ９１１などの処理装置を用いて、群パラメータ記憶部１１１が記憶した群パラメータが表わす乗法群ＧＴと自然数ｒとに基づいて、鍵生成関数ＫＤＦとハッシュ関数ＨＦとを決定する。
公開パラメータ生成部１１３は、ＣＰＵ９１１などの処理装置を用いて、群パラメータ記憶部１１１が記憶した群パラメータが表わす乗法群Ｇ２に基づいて、関数Ｖ１と関数Ｖ２とを決定する。
公開パラメータ生成部１１３は、ＣＰＵ９１１などの処理装置を用いて、群パラメータ記憶部１１１が記憶した群パラメータが表わす乗法群Ｇ１と乗法群Ｇ２とに基づいて、合法群Ｇ１の要素ｇと、乗法群Ｇ２の要素ｇ２とをランダムに選択する。
公開パラメータ生成部１１３は、ＣＰＵ９１１などの処理装置を用いて、群パラメータ記憶部１１１が記憶した群パラメータが表わす乗法群Ｇ１と、秘密情報生成工程Ｓ１１で秘密情報生成部１１２が生成した整数αと、選択した乗法群Ｇ１の要素ｇとに基づいて、乗法群Ｇ１の要素ｇ１＝ｇ＾αを算出する。
パラメータ記憶部１２２は、磁気ディスク装置９２０などの記憶装置を用いて、群パラメータ記憶部１１１が記憶した群パラメータと、決定した鍵生成関数ＫＤＦと、決定したハッシュ関数ＨＦと、決定した関数Ｖ１と、決定した関数Ｖ２と、選択した乗法群Ｇ１の要素ｇと、算出した乗法群Ｇ１の要素ｇ１と、選択した乗法群Ｇ２の要素ｇ２とを表わす情報を、公開暗号パラメータとして記憶する。【０４５９】
第二秘密情報生成工程Ｓ１６において、秘密情報生成部１１２は、ＣＰＵ９１１などの処理装置を用いて、群パラメータ記憶部１１１が記憶した群パラメータが表わす乗法群Ｇ２と、秘密情報生成工程Ｓ１１で生成した整数αと、暗号パラメータ生成工程Ｓ１２で公開パラメータ生成部１１３が選択した乗法群Ｇ２の要素ｇ２とに基づいて、乗法群Ｇ２の要素ｍｓｋ＝ｇ２＾αを算出する。
秘密情報記憶部１２１は、磁気ディスク装置９２０などの記憶装置を用いて、秘密情報生成部１１２が算出した乗法群Ｇ２の要素ｍｓｋを表わす情報を記憶する。【０４６０】
暗号パラメータ公開工程Ｓ１３において、公開パラメータ公開部１１４は、ＣＰＵ９１１などの処理装置を用いて、群パラメータ記憶部１１１が記憶した群パラメータと、公開パラメータ生成部１１３が決定した鍵生成関数ＫＤＦとハッシュ関数ＨＦと関数Ｖ１と関数Ｖ２と、公開パラメータ生成部１１３が選択した乗法群Ｇ１の要素ｇと乗法群Ｇ２の要素ｇ２と、公開パラメータ生成部１１３が算出した乗法群Ｇ１の要素ｇ１とを表わす情報を、公開暗号パラメータとして公開する。
公開パラメータ公開部１１４が公開した公開暗号パラメータは、暗号文生成装置２００及び暗号文受信装置３０１〜３０３が取得し、暗号パラメータ記憶部２１０及び公開パラメータ記憶部３１０が磁気ディスク装置９２０などの記憶装置を用いて記憶する。【０４６１】
図２０は、この実施の形態における対比例である暗号パラメータ生成装置１００が秘密鍵を設定する秘密鍵設定処理の流れの一例を示すフローチャート図である。
なお、実施の形態１で説明した秘密鍵設定処理の工程と共通する工程については、同一の符号を付す。【０４６２】
識別入力工程Ｓ２１において、識別情報入力部１３１は、ＣＰＵ９１１などの処理装置を用いて、受信者識別情報としてｍビットのビット列ＩＤを入力する。【０４６３】
秘密鍵生成工程Ｓ２２において、秘密鍵生成部１３２は、ＣＰＵ９１１などの処理装置を用いて、暗号パラメータ記憶部２１０が記憶した公開暗号パラメータが表わす自然数ｒに基づいて、１以上自然数ｒ未満の整数ｒＩＤをランダムに生成する。
秘密鍵生成部１３２は、ＣＰＵ９１１などの処理装置を用いて、パラメータ記憶部１２２が記憶した公開暗号パラメータが表わす乗法群Ｇ２と関数Ｖ１と、秘密情報記憶部１２１が記憶した乗法群Ｇ２の要素ｍｓｋと、識別入力工程Ｓ２１で入力したｍビットのビット列ＩＤと、生成した整数ｒＩＤとに基づいて、乗法群Ｇ２の要素ｄ０ＩＤ＝ｍｓｋ・Ｖ１（ＩＤ）＾ｒＩＤを算出する。
秘密鍵生成部１３２は、ＣＰＵ９１１などの処理装置を用いて、パラメータ記憶部１２２が記憶した公開暗号パラメータが表わす乗法群Ｇ１と乗法群Ｇ１の要素ｇと、生成した整数ｒＩＤとに基づいて、乗法群Ｇ１の要素ｄ１ＩＤ＝ｇ＾ｒＩＤを算出する。【０４６４】
秘密鍵通知部１３３は、ＣＰＵ９１１などの処理装置を用いて、秘密鍵生成工程Ｓ２２で秘密鍵生成部１３２が算出した乗法群Ｇ２の要素ｄ０ＩＤと乗法群Ｇ１の要素ｄ１ＩＤとを表わす情報を秘密鍵ｄＩＤとして、対応する暗号文受信装置に対して秘密裏に通知する。
秘密鍵通知部１３３が通知した秘密鍵ｄＩＤは、対応する暗号文受信装置が取得し、秘密鍵記憶部３２３が磁気ディスク装置９２０などの記憶装置を用いて記憶する。【０４６５】
図２１は、この実施の形態における対比例である暗号文生成装置２００が暗号文を生成する暗号文生成処理の流れの一例を示すフローチャート図である。
なお、実施の形態１で説明した暗号文生成処理の工程と共通する工程については、同一の符号を付す。【０４６６】
受信者識別入力工程Ｓ３２において、受信者識別入力部２３２は、ＣＰＵ９１１などの処理装置を用いて、ｎ人の受信者をそれぞれ識別するｎ個の受信者識別情報として、ｎ人の受信者にそれぞれ対応するｎ個のｍビットのビット列ＩＤｉを入力する。【０４６７】
乱数生成工程Ｓ３４において、乱数生成部２２２は、ＣＰＵ９１１などの処理装置を用いて、暗号パラメータ記憶部２１０が記憶した公開暗号パラメータが表わす自然数ｒに基づいて、ｎ人の受信者にそれぞれ対応するｎ個の１以上自然数ｒ未満の整数ｓｉをランダムに生成する。【０４６８】
第一暗号文生成工程Ｓ３５において、第一暗号文生成部２４１は、ＣＰＵ９１１などの処理装置を用いて、暗号パラメータ記憶部２１０が記憶した公開暗号パラメータが表わす乗法群ＧＴとペアリングｅと乗法群Ｇ１の要素ｇ１と乗法群Ｇ２の要素ｇ２と鍵生成関数ＫＤＦと、乱数生成工程Ｓ３４で乱数生成部２２２が生成したｎ人の受信者にそれぞれ対応するｎ個の整数ｓｉとに基づいて、ｎ人の受信者にそれぞれ対応するｎ個の鍵ビット列ｋｉ＝ＫＤＦ（ｅ（ｇ１，ｇ２）＾ｓｉ）を算出する。
第一暗号文生成部２４１は、ＣＰＵ９１１などの処理装置を用いて、セッション鍵生成工程Ｓ３３でセッション鍵生成部２２１が生成したセッション鍵Ｋ（＝平文Ｍ）と、算出したｎ人の受信者にそれぞれ対応するｎ個の鍵ビット列ｋｉとに基づいて、１つのセッション鍵Ｋをｎ人の受信者にそれぞれ対応するｎ個の鍵ビット列ｋｉによりそれぞれ暗号化して、ｎ人の受信者にそれぞれ対応するｎ個の第一暗号文Ｃ１ｉを生成する。【０４６９】
第二暗号文生成工程Ｓ３６において、第二暗号文生成部２４２は、ＣＰＵ９１１などの処理装置を用いて、暗号パラメータ記憶部２１０が記憶した公開暗号パラメータが表わす関数Ｖ１と、受信者識別入力工程Ｓ３２で受信者識別入力部２３２が入力したｎ人の受信者にそれぞれ対応するｎ個のｍビットのビット列ＩＤｉと、乱数生成工程Ｓ３４で乱数生成部２２２が生成したｎ人の受信者にそれぞれ対応するｎ個の整数ｓｉとに基づいて、ｎ人の受信者にそれぞれ対応するｎ個の乗法群Ｇ２の要素ｕｉ＝Ｖ１（ＩＤｉ）＾ｓｉを算出する。
第二暗号文生成部２４２は、ＣＰＵ９１１などの処理装置を用いて、算出したｎ人の受信者にそれぞれ対応するｎ個の乗法群Ｇ２の要素ｕｉをそれぞれ表わすビット列を、ｎ人の受信者にそれぞれ対応するｎ個の第二暗号文Ｃ２ｉとする。【０４７０】
第三暗号文生成工程Ｓ３７において、第三暗号文生成部２４３は、ＣＰＵ９１１などの処理装置を用いて、暗号パラメータ記憶部２１０が記憶した公開暗号パラメータが表わす乗法群Ｇ１と乗法群Ｇ１の要素ｇと、乱数正視工程Ｓ３４で乱数生成部２２２が生成したｎ人の受信者にそれぞれ対応するｎ個の整数ｓｉとに基づいて、ｎ人の受信者にそれぞれ対応するｎ個の乗法群Ｇ１の要素ｖｉ＝ｇ＾ｓｉを算出する。
第三暗号文生成部２４３は、ＣＰＵ９１１などの処理装置を用いて、算出したｎ人の受信者にそれぞれ対応するｎ個の乗法群Ｇ１の要素ｖｉをそれぞれ表わすビット列を、ｎ人の受信者にそれぞれ対応するｎ個の第三暗号文Ｃ３ｉとする。【０４７１】
ハッシュ値算出工程Ｓ３８において、ハッシュ値算出部２４４は、ＣＰＵ９１１などの処理装置を用いて、第一暗号文生成工程Ｓ３５で第一暗号文生成部２４１が生成したｎ人の受信者にそれぞれ対応するｎ個の第一暗号文Ｃ１ｉと、第二暗号文生成工程Ｓ３６で第二暗号文生成部２４２が生成したｎ人の受信者にそれぞれ対応するｎ個の第二暗号文Ｃ２ｉと、第三暗号文生成工程Ｓ３７で第三暗号文生成部２４３が生成したｎ人の受信者にそれぞれ対応するｎ個の第三暗号文Ｃ３ｉとに基づいて、ｎ人の受信者にそれぞれ対応するｎ個の第一暗号文Ｃ１ｉと、ｎ人の受信者にそれぞれ対応するｎ個の第一暗号文Ｃ２ｉと、ｎ人の受信者にそれぞれ対応するｎ個の第三暗号文Ｃ３ｉとをそれぞれ結合したｎ人の受信者にそれぞれ対応するｎ個の結合暗号文（Ｃ１ｉ｜Ｃ２ｉ｜Ｃ３ｉ）を生成する。
ハッシュ値算出部２４４は、ＣＰＵ９１１などの処理装置を用いて、暗号パラメータ記憶部２１０が記憶した公開暗号パラメータが表わすハッシュ関数ＨＦと、生成したｎ人の受信者にそれぞれ対応するｎ個の結合暗号文（Ｃ１ｉ｜Ｃ２ｉ｜Ｃ３ｉ）とに基づいて、ｎ人の受信者にそれぞれ対応するｎ個の結合暗号文（Ｃ１ｉ｜Ｃ２ｉ｜Ｃ３ｉ）をそれぞれハッシュ関数ＨＦにより変換したｎ人の受信者にそれぞれ対応するｎ個のｍビットのビット列ｗｉ＝ＨＦ（Ｃ１ｉ｜Ｃ２ｉ｜Ｃ３ｉ）を算出する。【０４７２】
暗号文検証文生成工程Ｓ３９において、暗号文検証文生成部２４５は、ＣＰＵ９１１などの処理装置を用いて、暗号パラメータ記憶部２１０が記憶した公開暗号パラメータが表わす乗法群Ｇ２と関数Ｖ２と、乱数生成工程Ｓ３４で乱数生成部２２２が生成したｎ人の受信者にそれぞれ対応するｎ個の整数ｓｉと、ハッシュ値算出工程Ｓ３８でハッシュ値算出部２４４が算出したｎ人の受信者にそれぞれ対応するｎ個のｍビットのビット列ｗｉとに基づいて、ｎ人の受信者にそれぞれ対応するｎ個の乗法群Ｇ２の要素ｙｉ＝Ｖ２（ｗｉ）＾ｓｉを算出する。
暗号文検証文生成部２４５は、ＣＰＵ９１１などの処理装置を用いて、算出したｎ人の受信者にそれぞれ対応するｎ個の乗法群Ｇ２の要素ｙｉをそれぞれ表わすビット列を、ｎ人の受信者にそれぞれ対応するｎ個の暗号文検証文ＣＣｉとする。【０４７３】
図２２は、この実施の形態における対比例である暗号文受信装置３０１〜３０３が暗号文を受信する暗号文受信処理の流れの一例を示すフローチャート図である。
なお、実施の形態１で説明した暗号文受信処理の工程と共通する工程については、同一の符号を付す。【０４７４】
暗号文分解工程Ｓ５２において、暗号文分解部３４６は、ＣＰＵ９１１などの処理装置を用いて、通知データ受信工程で暗号文受信部３５１が出力した１つの鍵暗号文Ｃに基づいて、暗号文受信装置が対応する受信者に対応する１つの対応第一暗号文Ｃ１ＩＤと、１つの対応第二暗号文Ｃ２ＩＤと、１つの対応第三暗号文Ｃ３ＩＤと、１つの対応暗号文検証文ＣＣＩＤとを取得する。【０４７５】
検証ハッシュ値算出工程Ｓ５３において、検証ハッシュ値算出部３４４は、ＣＰＵ９１１などの処理装置を用いて、公開パラメータ記憶部３１０が記憶した公開暗号パラメータが表わすハッシュ関数ＨＦと、暗号文分解工程Ｓ５２で暗号文分解部３４６が取得した１つの対応第一暗号文Ｃ１ＩＤと１つの対応第二暗号文Ｃ２ＩＤと１つの対応第三暗号文Ｃ３ＩＤとを結合した１つの対応結合暗号文（Ｃ１ＩＤ｜Ｃ２ＩＤ｜Ｃ３ＩＤ）とに基づいて、１つの対応結合暗号文（Ｃ１ＩＤ｜Ｃ２ＩＤ｜Ｃ３ＩＤ）をハッシュ関数ＨＦにより変換した１つのｍビットのビット列ｗ’を、検証ハッシュ値Ｈ’として算出する。【０４７６】
暗号文検証工程Ｓ５４において、暗号文検証部３４５は、ＣＰＵ９１１などの処理装置を用いて、公開パラメータ記憶部３１０が記憶した公開暗号パラメータが表わすペアリングｅと関数Ｖ１と、暗号文分解工程Ｓ５２で暗号文分解部３４６が取得した１つの対応第三暗号文Ｃ３ＩＤが表わす１つの乗法群Ｇ１の要素ｖＩＤと、自身が対応する受信者を識別するｍビットのビット列ＩＤとに基づいて、１つの乗法群ＧＴの要素ｅ（ｖＩＤ，Ｖ１（ＩＤ））を算出する。
暗号文検証部３４５は、ＣＰＵ９１１などの処理装置を用いて、公開パラメータ記憶部３１０が記憶した公開暗号パラメータが表わすペアリングｅと乗法群Ｇ１の要素ｇと、暗号文分解工程Ｓ５２で暗号文分解部３４６が取得した１つの対応第二暗号文Ｃ２ＩＤが表わす１つの乗法群Ｇ２の要素ｕＩＤとに基づいて、１つの乗法群ＧＴの要素ｅ（ｇ，ｕＩＤ）を算出する。【０４７７】
暗号文検証部３４５は、ＣＰＵ９１１などの処理装置を用いて、公開パラメータ記憶部３１０が記憶した公開暗号パラメータが表わすペアリングｅと関数Ｖ２と、暗号文分解工程Ｓ５２で暗号文分解部３４６が取得した１つの対応第三暗号文Ｃ３ＩＤが表わす１つの乗法群Ｇ１の要素ｖＩＤと、検証ハッシュ値算出工程Ｓ５３で検証ハッシュ値算出部３４４が算出したｍビットのビット列ｗ’とに基づいて、１つの乗法群ＧＴの要素ｅ（ｖＩＤ，Ｖ２（ｗ’））を算出する。
暗号文検証部３４５は、ＣＰＵ９１１などの処理装置を用いて、公開パラメータ記憶部３１０が記憶した公開暗号パラメータが表わすペアリングｅと乗法群Ｇ１の要素ｇと、暗号文分解工程Ｓ５２で暗号文分解部３４６が取得した１つの対応暗号文検証文ＣＣＩＤが表わす１つの乗法群Ｇ２の要素ｙＩＤとに基づいて、１つの乗法群ＧＴの要素ｅ（ｇ，ｙＩＤ）を算出する。【０４７８】
暗号文検証部３４５は、ＣＰＵ９１１などの処理装置を用いて、算出した１つの乗法群ＧＴの要素ｅ（ｖＩＤ，Ｖ１（ＩＤ））と、算出した１つの乗法群ＧＴの要素ｅ（ｇ，ｕＩＤ）と、算出した１つの乗法群ＧＴの要素ｅ（ｖＩＤ，Ｖ２（ｗ’））と、算出した１つの乗法群ＧＴの要素ｅ（ｇ，ｙＩＤ）とに基づいて、ｅ（ｖＩＤ，Ｖ１（ＩＤ））＝ｅ（ｇ，ｕＩＤ）、かつ、ｅ（ｖＩＤ，Ｖ２（ｗ’））＝ｅ（ｇ，ｙＩＤ）であるか否かを判定する。
２つの等式が成立する場合、暗号文検証部３４５は、暗号文受信部３５１が受信した１つの鍵暗号文Ｃに整合性があると判定し、暗号文復号工程Ｓ５５へ進む。
いずれかまたは両方の等式が成立しない場合、暗号文検証部３４５は、暗号文受信部３５１が受信した１つの鍵暗号文Ｃに整合性がないと判定し、暗号文受信処理を終了する。【０４７９】
暗号文復号工程Ｓ５５において、暗号文復号部３４１は、ＣＰＵ９１１などの処理装置を用いて、公開パラメータ記憶部３１０が記憶した乗法群ＧＴとペアリングｅと鍵生成関数ＫＤＦと、秘密鍵記憶部３２３が記憶した秘密鍵ｄＩＤが表わす乗法群Ｇ２の要素ｄ０ＩＤと乗法群Ｇ１の要素ｄ１ＩＤと、暗号文分解工程Ｓ５２で暗号文分解部３４６が取得した１つの対応第二暗号文Ｃ２ＩＤが表わす１つの乗法群Ｇ２の要素ｕＩＤと１つの対応第三暗号文Ｃ３ＩＤが表わす１つの乗法群Ｇ１の要素ｖＩＤとに基づいて、１つの鍵ビット列ｋ’＝ＫＤＦ（ｅ（ｖＩＤ，ｄ０ＩＤ）／ｅ（ｄ１ＩＤ，ｕＩＤ））を算出する。
暗号文復号部３４１は、ＣＰＵ９１１などの処理装置を用いて、暗号文分解工程Ｓ５２で暗号文分解部３４６が取得した１つの対応第一暗号文Ｃ１ＩＤと、算出した１つの鍵ビット列ｋ’とに基づいて、鍵ビット列ｋ’により対応第一暗号文Ｃ１ＩＤを復号して、所定の長さのビット列を生成し、セッション鍵Ｋ’（＝平文Ｍ）とする。
上述したように、暗号文復号部３４１が生成するセッション鍵Ｋ’は、暗号文生成装置２００のセッション鍵生成部２２１が生成したセッション鍵Ｋと同一のビット列となる。【０４８０】
次に、この実施の形態における対比例であるＩＤベース暗号通信システムが使用するＩＤベース暗号方式の安全性について議論する。【０４８１】
この実施の形態における対比例である複数受信者のＩＤベース暗号方式は、単独受信者のＩＤベース暗号方式を連接方式により拡張したものであるから、ＳＭＭＲ安全性は、Ａｄｖｓｍｍｒｎ，Π’，Γ（ｔ，ｑｄ，ｑｘ）≦ｎ・Ａｄｖｍｕ１，Π，Γ（ｔ’，１，ｑｄ，ｑｘ）である。
ここで、Ａｄｖｍｕ１，Π，Γ（ｔ’，１，ｑｄ，ｑｘ）は、この実施の形態における対比例である複数受信者のＩＤベース暗号方式のもととなっている単独受信者のＩＤベース暗号方式の従来の意味における安全性を表わす。【０４８２】
この実施の形態における対比例である複数受信者のＩＤベース暗号方式のもととなっている単独受信者のＩＤベース暗号方式の従来の意味における安全性Ａｄｖｍｕ１，Π，Γ（ｔ’，１，ｑｄ，ｑｘ）は、Ｄ−ＢＤＨ問題（Ｄｅｃｉｓｉｏｎａｌ  Ｂｉｌｉｎｅａｒ  Ｄｉｆｆｉｅ−Ｈｅｌｌｍａｎ  Ｐｒｏｂｌｅｍ）に帰着することが証明できる。
ここで、Ｄ−ＢＤＨ問題とは、以下に定義する数学的な問題である。【０４８３】
Ｄ−ＢＤＨ問題において、解答者Ｂには、４つの乗法群Ｇの要素ｇ、ｇ１、ｇ２、ｇ３と、１つの乗法群ＧＴの要素Ｚとが与えられる。また、解答者Ｂには秘密の情報として、１以上乗法群Ｇの位数未満の３つの整数ａ、ｂ、ｃがある。
乗法群Ｇの要素ｇは、ランダムに選択された乗法群Ｇの要素である。
乗法群Ｇの要素ｇ１は、乗法群Ｇの要素ｇのａ乗である乗法群Ｇの要素ｇ＾ａである。
乗法群Ｇの要素ｇ２は、乗法群Ｇの要素ｇのｂ乗である乗法群Ｇの要素ｇ＾ｂである。
乗法群Ｇの要素ｇ３は、乗法群Ｇの要素ｇのｃ乗である乗法群Ｇの要素ｇ＾ｃである。
解答者Ｂは、乗法群Ｇの要素ｇ同士のペアリング値である乗法群ＧＴの要素ｅ（ｇ，ｇ）の、整数ａと整数ｂと整数ｃとの積（ａ・ｂ・ｃ）乗である乗法群ＧＴの要素ｅ（ｇ，ｇ）＾（ａ・ｂ・ｃ）が、与えられた乗法群ＧＴの要素Ｚと等しいか否かを判別する問題に答える。【０４８４】
ｑ−Ｄ−ＡＢＤＨＥ問題と同様に、Ａｄｖｄ−ｂｈｄｋ，Ｇ，ＧＴ（ｔ）を定義し、Ａｄｖｄ−ｂｈｄｋ，Ｇ，ＧＴ（ｔ）≦εでるとき、Ｄ−ＢＤＨ仮定が成り立つという。【０４８５】
以上より、この実施の形態における対比例であるＩＤベース暗号方式のＳＭＭＲ安全性は、Ｄ−ＢＤＨ問題に帰着することが証明できる。【０４８６】
次に、この実施の形態におけるＩＤベース暗号通信システム８００について、説明する。
この実施の形態におけるＩＤベース暗号通信システム８００の全体構成及び暗号パラメータ生成装置１００のブロック構成は、対比例で説明したものと同様なので、ここでは説明を省略する。【０４８７】
まず、暗号文生成装置２００について説明する。
暗号文生成装置２００のブロック構成は、対比例で説明したものと同様なので、図４を用いて、対比例と異なる部分について説明する。【０４８８】
ハッシュ値算出部２４４は、ＣＰＵ９１１などの処理装置を用いて、暗号パラメータ記憶部２１０が記憶した公開暗号パラメータと、第一暗号文生成部２４１が出力したｎ個の第一暗号文Ｃ１ｉと、第二暗号文生成部２４２出力したｎ個の第二暗号文Ｃ２ｉと、第三暗号文生成部２４３が出力したｎ個の第三暗号文Ｃ３ｉとを入力する。
ハッシュ値算出部２４４は、ＣＰＵ９１１などの処理装置を用いて、入力したｎ個の第一暗号文Ｃ１ｉと、ｎ個の第二暗号文Ｃ２ｉと、ｎ個の第三暗号文Ｃ３ｉとをすべて結合して、１つの結合暗号文を生成する。【０４８９】
ハッシュ値算出部２４４は、ＣＰＵ９１１などの処理装置を用いて、入力した公開暗号パラメータが表わすハッシュ関数ＨＦと、生成した１つの結合暗号文とに基づいて、１つの結合暗号文をハッシュ関数ＨＦにより変換した１つのｍビットのビット列ｗ０を算出し、１つのハッシュ値Ｈ０とする。
ハッシュ値算出部２４４は、ＣＰＵ９１１などの処理装置を用いて、算出した１つのｍビットのビット列ｗ０を表わす情報と、生成した１つの結合暗号文とを出力する。【０４９０】
暗号文検証文生成部２４５は、ＣＰＵ９１１などの処理装置を用いて、暗号パラメータ記憶部２１０が記憶した公開暗号パラメータと、乱数生成部２２２が出力したｎ個の整数ｓｉを表わす情報と、ハッシュ値算出部２４４が出力した１つのｍビットのビット列ｗ０を表わす情報とを入力する。
暗号文検証文生成部２４５は、ＣＰＵ９１１などの処理装置を用いて、入力した公開暗号パラメータが表わす関数Ｖ２と、入力した情報が表わす１つのｍビットのビット列ｗ０とに基づいて、ｍビットのビット列ｗ０を関数Ｖ２により変換した１つの乗法群Ｇ２の要素Ｖ２（ｗ０）を算出する。【０４９１】
暗号文検証文生成部２４５は、ＣＰＵ９１１などの処理装置を用いて、入力した公開暗号パラメータが表わす乗法群Ｇ２と、入力した情報が表わすｎ個の整数ｓｉと、算出した乗法群Ｇ２の要素Ｖ２（ｗ０）とに基づいて、乗法群Ｇ２の要素Ｖ２（ｗ０）のｓｉ乗であるｎ個の乗法群Ｇ２の要素ｙｉ＝Ｖ２（ｗ０）＾ｓｉ（ｉは、１以上ｎ以下の整数。）を算出する。
暗号文検証文生成部２４５は、ＣＰＵ９１１などの処理装置を用いて、算出したｎ個の乗法群Ｇ２の要素ｙｉをそれぞれ表わすｎ個のビット列を、ｎ個の暗号文検証文ＣＣｉ（ｉは、１以上ｎ以下の整数。）として出力する。【０４９２】
暗号文結合部２４６は、ＣＰＵ９１１などの処理装置を用いて、ハッシュ値算出部２４４が出力した１つの結合暗号文と、暗号文検証文生成部２４５が出力したｎ個の暗号文検証文ＣＣｉとを入力する。
暗号文結合部２４６は、ＣＰＵ９１１などの処理装置を用いて、入力した１つの結合暗号文と、入力したｎ個の暗号文検証文とをすべて結合して、１つの鍵暗号文Ｃを生成する。
暗号文結合部２４６は、ＣＰＵ９１１などの処理装置を用いて、生成した１つの鍵暗号文Ｃを出力する。【０４９３】
この実施の形態における暗号文生成装置２００のなかでやり取りされる情報の流れは、実施の形態２で図１６を用いて説明したものと同様なので、ここでは説明を省略する。【０４９４】
次に、暗号文受信装置３０１〜３０３について説明する。
暗号文受信装置３０１〜３０３のブロック構成も、対比例で説明したものと同様なので、図６を用いて、対比例と異なる部分について説明する。【０４９５】
暗号文分解部３４６は、ＣＰＵ９１１などの処理装置を用いて、暗号文受信部３５１が出力した１つの鍵暗号文Ｃを入力する。
暗号文分解部３４６は、ＣＰＵ９１１などの処理装置を用いて、入力した１つの鍵暗号文Ｃから、自身が対応する受信者に対応する対応第一暗号文Ｃ１ＩＤと、対応第二暗号文Ｃ２ＩＤと、対応第三暗号文Ｃ３ＩＤと、対応暗号文検証文ＣＣＩＤとを取得する。
暗号文分解部３４６は、ＣＰＵ９１１などの処理装置を用いて、取得した対応第一暗号文Ｃ１ＩＤと、対応第二暗号文Ｃ２ＩＤと、対応第三暗号文Ｃ３ＩＤと、対応暗号文検証文ＣＣＩＤとを出力する。
暗号文分解部３４６は、また、ＣＰＵ９１１などの処理装置を用いて、１つの鍵暗号文Ｃから、検証結合暗号文（Ｃ１１｜Ｃ２１｜Ｃ３１｜Ｃ１２｜Ｃ２２｜Ｃ３２｜…｜Ｃ１ｎ｜Ｃ２ｎ｜Ｃ３ｎ）を取得し、出力する。【０４９６】
検証ハッシュ値算出部３４４は、ＣＰＵ９１１などの処理装置を用いて、暗号文分解部３４６が出力した検証結合暗号文（Ｃ１１｜Ｃ２１｜Ｃ３１｜Ｃ１２｜Ｃ２２｜Ｃ３２｜…｜Ｃ１ｎ｜Ｃ２ｎ｜Ｃ３ｎ）を入力する。あるいは、検証ハッシュ値算出部３４４は、ＣＰＵ９１１などの処理装置を用いて、暗号文を結合し、検証結合暗号文（Ｃ１１｜Ｃ２１｜Ｃ３１｜Ｃ１２｜Ｃ２２｜Ｃ３２｜…｜Ｃ１ｎ｜Ｃ２ｎ｜Ｃ３ｎ）を生成してもよい。【０４９７】
検証ハッシュ値算出部３４４は、ＣＰＵ９１１などの処理装置を用いて、公開パラメータ記憶部３１０が記憶した公開暗号パラメータを入力する。
検証ハッシュ値算出部３４４は、ＣＰＵ９１１などの処理装置を用いて、入力した公開暗号パラメータが表わすハッシュ関数ＨＦと、入力あるいは生成した検証結合暗号文（Ｃ１１｜Ｃ２１｜Ｃ３１｜Ｃ１２｜Ｃ２２｜Ｃ３２｜…｜Ｃ１ｎ｜Ｃ２ｎ｜Ｃ３ｎ）とに基づいて、検証結合暗号文（Ｃ１１｜Ｃ２１｜Ｃ３１｜Ｃ１２｜Ｃ２２｜Ｃ３２｜…｜Ｃ１ｎ｜Ｃ２ｎ｜Ｃ３ｎ）をハッシュ関数ＨＦにより変換したｍビットのビット列ｗ’を算出し、ハッシュ値Ｈ’とする。
検証ハッシュ値算出部３４４は、ＣＰＵ９１１などの処理装置を用いて、算出したｍビットのビット列ｗ’を表わす情報を出力する。【０４９８】
次に、動作について説明する。【０４９９】
図２３は、この実施の形態における暗号文生成装置２００が暗号文を生成する暗号文生成処理の流れの一例を示すフローチャート図である。
なお、対比例で説明した暗号文生成処理の工程と共通する工程については、同一の符号を付す。【０５００】
ハッシュ値算出工程Ｓ３８において、ハッシュ値算出部２４４は、ＣＰＵ９１１などの処理装置を用いて、第一暗号文生成工程Ｓ３５で第一暗号文生成部２４１が生成したｎ人の受信者にそれぞれ対応するｎ個の第一暗号文Ｃ１ｉと、第二暗号文生成工程Ｓ３６で第二暗号文生成部２４２が生成したｎ人の受信者にそれぞれ対応するｎ個の第二暗号文Ｃ２ｉと、第三暗号文生成工程Ｓ３７で第三暗号文生成部２４３が生成したｎ人の受信者にそれぞれ対応するｎ個の第三暗号文Ｃ３ｉとに基づいて、ｎ人の受信者にそれぞれ対応するｎ個の第一暗号文Ｃ１ｉと、ｎ人の受信者にそれぞれ対応するｎ個の第一暗号文Ｃ２ｉと、ｎ人の受信者にそれぞれ対応するｎ個の第三暗号文Ｃ３ｉとをすべて結合した１つの結合暗号文（Ｃ１１｜Ｃ２１｜Ｃ３１｜Ｃ１２｜Ｃ２２｜Ｃ３２｜…｜Ｃ１ｎ｜Ｃ２ｎ｜Ｃ３ｎ）を生成する。
ハッシュ値算出部２４４は、ＣＰＵ９１１などの処理装置を用いて、暗号パラメータ記憶部２１０が記憶した公開暗号パラメータが表わすハッシュ関数ＨＦと、生成した１つの結合暗号文（Ｃ１１｜Ｃ２１｜Ｃ３１｜Ｃ１２｜Ｃ２２｜Ｃ３２｜…｜Ｃ１ｎ｜Ｃ２ｎ｜Ｃ３ｎ）とに基づいて、１つの結合暗号文（Ｃ１１｜Ｃ２１｜Ｃ３１｜Ｃ１２｜Ｃ２２｜Ｃ３２｜…｜Ｃ１ｎ｜Ｃ２ｎ｜Ｃ３ｎ）をハッシュ関数ＨＦにより変換した１つのｍビットのビット列ｗ０＝ＨＦ（Ｃ１１｜Ｃ２１｜Ｃ３１｜Ｃ１２｜Ｃ２２｜Ｃ３２｜…｜Ｃ１ｎ｜Ｃ２ｎ｜Ｃ３ｎ）を算出する。【０５０１】
暗号文検証文生成工程Ｓ３９において、暗号文検証文生成部２４５は、ＣＰＵ９１１などの処理装置を用いて、暗号パラメータ記憶部２１０が記憶した公開暗号パラメータが表わす乗法群Ｇ２と関数Ｖ２と、乱数生成工程Ｓ３４で乱数生成部２２２が生成したｎ人の受信者にそれぞれ対応するｎ個の自然数ｓｉと、ハッシュ値算出工程Ｓ３８でハッシュ値算出部２４４が算出した１つのｍビットのビット列ｗ０とに基づいて、ｎ人の受信者にそれぞれ対応するｎ個の乗法群ＧＴの要素ｙｉ＝Ｖ２（ｗ０）＾ｓｉを算出する。
暗号文検証文生成部２４５は、ＣＰＵ９１１などの処理装置を用いて、算出したｎ人の受信者にそれぞれ対応するｎ個の乗法群Ｇ２の要素ｙｉをそれぞれ表わすビット列を、ｎ人の受信者にそれぞれ対応するｎ個の暗号文検証文ＣＣｉとする。【０５０２】
図２４は、この実施の形態における暗号文受信装置３０１〜３０３が暗号文を受信する暗号文受信処理の流れの一例を示すフローチャート図である。
なお、対比例で説明した暗号文受信処理の工程と共通する工程については、同一の符号を付す。【０５０３】
検証ハッシュ値算出工程Ｓ５３において、検証ハッシュ値算出部３４４は、ＣＰＵ９１１などの処理装置を用いて、公開パラメータ記憶部３１０が記憶した公開暗号パラメータが表わすハッシュ関数ＨＦと、検証結合暗号文（Ｃ１１｜Ｃ２１｜Ｃ３１｜Ｃ１２｜Ｃ２２｜Ｃ３２｜…｜Ｃ１ｎ｜Ｃ２ｎ｜Ｃ３ｎ）とに基づいて、検証結合暗号文（Ｃ１１｜Ｃ２１｜Ｃ３１｜Ｃ１２｜Ｃ２２｜Ｃ３２｜…｜Ｃ１ｎ｜Ｃ２ｎ｜Ｃ３ｎ）をハッシュ関数ＨＦにより変換したｍビットのビット列ｗ’＝ＨＦ（Ｃ１１｜Ｃ２１｜Ｃ３１｜Ｃ１２｜Ｃ２２｜Ｃ３２｜…｜Ｃ１ｎ｜Ｃ２ｎ｜Ｃ３ｎ）を算出する。【０５０４】
上記説明した以外の工程は、対比例で説明した工程と同様なので、ここでは説明を省略する。【０５０５】
以上のように、この実施の形態におけるＩＤベース暗号通信システム８００は、対比例で説明したＩＤベース暗号通信システム８００と比較して、１つの鍵暗号文Ｃの長さは変わらないが、暗号文生成処理に必要な計算量が減るので、暗号通信のコストを削減できる。
特に、ハッシュ値算出工程Ｓ３８において、対比例で説明した方式の場合、ｎ回のハッシュ値計算が必要だが、この方式の場合、１回のハッシュ値計算で済む。
また、暗号文検証文生成工程Ｓ３９において、関数Ｖ２の計算が必要になる。関数Ｖ２を対比例で説明した手順で計算するものとすると、関数Ｖ２を１回計算するために、ｍ１回の乗法群Ｇ２における冪乗算と、ｍ１回の乗法群Ｇ２における乗算とが必要になる。対比例で説明した方式の場合、関数Ｖ２をｎ回計算する必要があるのに対し、この方式の場合、関数Ｖ２を１回計算すればよく、受信者の人数が多い場合に、計算量を大幅に削減できる。【０５０６】
次に、この実施の形態におけるＩＤベース暗号通信システム８００が使用するＩＤベース暗号方式のＳＭＭＲ安全性について説明する。
なお、以下の説明では、暗号文主文ＣＢｉに、それに対応する受信者を識別する受信者識別情報ＩＤｉが含まれているものとする。【０５０７】
この実施の形態におけるＩＤベース暗号通信システム８００が使用するＩＤベース暗号方式のＳＭＭＲ安全性は、非特許文献１８に記載の証明と、非特許文献６に記載の証明とを組み合わせることにより、証明できる。【０５０８】
暗号化オラクルのシミュレートにおいて、解答者Ｂは、１以上ｍ２以下の整数ｊをランダムに生成し、ＩＤ＊ｊが、シミュレート可能なＩＤであるか否かを判定する。
ＩＤ＊ｊが、シミュレート可能なＩＤである場合、解答者Ｂは、１≦ｉ＜ｊであるｉについて、Ｍ＊０を選択して暗号文主文ＣＢｉを生成し、ｊ＜ｉ≦ｎであるｉについて、Ｍ＊１を選択して暗号文主文ＣＢｉを生成し、ｉ＝ｊであるｉについて、与えられたＤ−ＢＤＨ問題のパラメータを使ったシミュレートにより、暗号文主文ＣＢｉを生成する。
解答者Ｂは、生成したｎ個の暗号文主文ＣＢｉ（ｉは、１以上ｎ以下の整数。）を結合して、ハッシュ値ｗ＊０を算出する。
解答者Ｂは、ｉ≠ｊであるｉについて、暗号文主文の生成に使用した乱数ｓｉを使って、暗号文検証文ＣＣｉを生成し、ｉ＝ｊであるｉについて、与えられたＤ−ＢＤＨ問題のパラメータを使ったシミュレートにより、暗号文検証文ＣＣｉを生成する。【０５０９】
これにより、ＩＤ＊ｊがシミュレート可能なＩＤである場合、解答者Ｂは、Ｄ−ＢＤＨ問題に正しく解答できる。また、ＩＤ＊ｊがシミュレート可能なＩＤでない場合、解答者Ｂがシミュレートした暗号化オラクルの出力分布はｂと独立である。
したがって、この実施の形態におけるＩＤベース暗号方式のＳＭＭＲ安全性が証明できる。【０５１０】
この実施の形態におけるＩＤベース暗号通信システム８００によれば、ＭＲ−ＩＮＤ−ＩＤ−ＣＣＡ安全性を数学的に証明できるので、ＩＤベース暗号通信システム８００を使用して、安全な暗号通信を実現できるという効果を奏する。【０５１１】
この実施の形態における暗号文生成装置２００は、以下の点を特徴とする。
暗号パラメータ記憶部２１０は、磁気ディスク装置９２０などの記憶装置を用いて、公開暗号パラメータとして、自然数ｒと、位数が上記自然数ｒである乗法群Ｇ１と、位数が上記自然数ｒである乗法群Ｇ２と、位数が上記自然数ｒである乗法群ＧＴと、乗法群Ｇ１の要素と乗法群Ｇ２の要素とから乗法群ＧＴの要素を算出するペアリングｅと、乗法群ＧＴの要素から所定の長さのビット列を算出する鍵生成関数ＫＤＦと、所定の長さのビット列から乗法群ＧＴの要素を算出する２つの関数Ｖ１及びＶ２と、任意の長さのビット列から所定の長さのビット列を算出するハッシュ関数ＨＦと、乗法群Ｇ１の要素ｇと、乗法群Ｇ１の要素ｇ１と、乗法群Ｇ２の要素ｇ２とを表わす情報を記憶することを特徴とする。
受信者識別入力部２３２は、ＣＰＵ９１１などの処理装置を用いて、ｎ個の所定の長さのビット列ＩＤｉをｎ個の受信者識別情報として入力することを特徴とする。
乱数生成部２２２は、ＣＰＵ９１１などの処理装置を用いて、暗号パラメータ記憶部２１０が記憶した公開暗号パラメータが表わす自然数ｒに基づいて、ｎ人の受信者に対応するｎ個の１以上自然数ｒ未満の整数ｓｉ（ｉは、１以上ｎ以下の整数。）をランダムに生成することを特徴とする。
第一暗号文生成部２４１は、ＣＰＵ９１１などの処理装置を用いて、暗号パラメータ記憶部２１０が記憶した公開暗号パラメータが表わす乗法群Ｇ１の要素ｇ１と乗法群Ｇ２の要素ｇ２とペアリングｅと鍵生成関数ＫＤＦと、乱数生成部２２２が生成したｎ個の整数ｓｉとに基づいて、ｎ人の受信者に対応するｎ個の鍵ビット列ｋｉ＝ＫＤＦ（ｅ（ｇ１，ｇ２）＾ｓｉ）（ｉは、１以上ｎ以下の整数。）を算出し、ＣＰＵ９１１などの処理装置を用いて、算出したｎ個の鍵ビット列ｋｉにより、平文入力部２３１が入力した平文Ｍをそれぞれ暗号化して、ｎ人の受信者に対応するｎ個の第一暗号文Ｃ１ｉ（ｉは、１以上ｎ以下の整数。）とすることを特徴とする。
第二暗号文生成部２４２は、ＣＰＵ９１１などの処理装置を用いて、暗号パラメータ記憶部２１０が記憶した公開暗号パラメータが表わす関数Ｖ１と、乱数生成部２２２が生成したｎ個の整数ｓｉと、受信者識別入力部２３２が入力したｎ個の所定の長さのビット列ＩＤｉとに基づいて、ｎ人の受信者に対応するｎ個の乗法群Ｇ２の要素ｕｉ＝Ｖ１（ＩＤｉ）＾ｓｉ（ｉは、１以上ｎ以下の整数。）を算出し、算出したｎ個の乗法群Ｇ２の要素ｕｉをそれぞれ表わすビット列を、ｎ人の受信者に対応するｎ個の第二暗号文Ｃ２ｉ（ｉは、１以上ｎ以下の整数。）とすることを特徴とする。
第三暗号文生成部２４３は、ＣＰＵ９１１などの処理装置を用いて、暗号パラメータ記憶部２１０が記憶した公開暗号パラメータが表わす乗法群Ｇ１の要素ｇと、乱数生成部２２２が生成したｎ個の整数ｓｉとに基づいて、ｎ人の受信者に対応するｎ個の乗法群Ｇ１の要素ｖｉ＝ｇ＾ｓｉ（ｉは、１以上ｎ以下の整数。）を算出し、算出したｎ個の乗法群Ｇ１の要素ｖｉをそれぞれ表わすビット列を、ｎ人の受信者に対応するｎ個の第三暗号文Ｃ３ｉ（ｉは、１以上ｎ以下の整数。）とすることを特徴とする。
ハッシュ値算出部２４４は、ＣＰＵ９１１などの処理装置を用いて、暗号パラメータ記憶部２１０が記憶した公開暗号パラメータが表わすハッシュ関数ＨＦに基づいて、１つの所定の長さのビット列ｗ０を算出して、ハッシュ値Ｈとすることを特徴とする。
暗号文検証文生成部２４５は、ＣＰＵ９１１などの処理装置を用いて、暗号パラメータ記憶部２１０が記憶した公開暗号パラメータが表わす関数Ｖ２と、乱数生成部２２２が生成したｎ個の整数ｓｉと、ハッシュ値算出部２４４が算出した１つの所定の長さのビット列ｗ０とに基づいて、ｎ人の受信者に対応するｎ個の乗法群Ｇ２の要素ｙｉ＝Ｖ２（ｗ０）＾ｓｉ（ｉは、１以上ｎ以下の整数。）を算出し、算出したｎ個の乗法群Ｇ２の要素ｙｉをそれぞれ表わすビット列を、ｎ人の受信者に対応するｎ個の暗号文検証文ＣＣｉ（ｉは、１以上ｎ以下の整数。）とすることを特徴とする。【０５１２】
この実施の形態における暗号文生成装置２００によれば、暗号処理に必要な資源が少なくて済み、ＳＭＭＲ−ＩＮＤ−ＩＤ−ＣＣＡ２安全性を数学的に証明できるＩＤベース暗号方式を利用した暗号通信を実現できるという効果を奏する。【０５１３】
この実施の形態における暗号文生成装置２００は、また、以下の点を特徴とする。
暗号パラメータ記憶部２１０は、磁気ディスク装置９２０などの記憶装置を用いて、２つの関数Ｖ１及びＶ２を表わす情報として、ｍ１個の乗法群Ｇ２の要素ｈξ（ξは、１以上ｍ１以下の整数。）と、２つの乗法群Ｇ２の要素ｈ１’及びｈ２’とを表わす情報を記憶することを特徴とする。
第二暗号文生成部２４２は、ＣＰＵ９１１などの処理装置を用いて、受信者識別入力部２３２が入力したｎ個の所定の長さのビット列ＩＤｉそれぞれを、ｍ１個の所定の長さのビット列νｉξ（ξは、１以上ｍ１以下の整数。）に分割し、分割したｍ１個の所定の長さのビット列νｉξをｍ１個の整数として取り扱い、ＣＰＵ９１１などの処理装置を用いて、暗号パラメータ記憶部２１０が記憶した公開暗号パラメータが表わすｍ１個の乗法群Ｇ２の要素ｈξ（ξは、１以上ｍ１以下の整数。）と乗法群Ｇ２の要素ｈ１’と、分割したｍ１個の整数νｉξとに基づいて、関数Ｖ１の値である乗法群Ｇ２の要素Ｖ１（ＩＤｉ）＝ｈ１’・Π（ｈξ＾νｉξ）（ξは、１以上ｍ１以下の整数。）を算出することを特徴とする。
暗号文検証文生成部２４５は、ＣＰＵ９１１などの処理装置を用いて、ハッシュ値算出部２４４が算出した所定の長さのビット列ｗを、ｍ１個の所定の長さのビット列νξ（ξは、１以上ｍ１以下の整数。）に分割し、分割したｍ１個の所定の長さのビット列νξをｍ１個の整数として取り扱い、ＣＰＵ９１１などの処理装置を用いて、暗号パラメータ記憶部２１０が記憶した公開暗号パラメータが表わすｍ１個の乗法群Ｇ２の要素ｈξ（ξは、１以上ｍ１以下の整数。）と乗法群Ｇ２の要素ｈ２’と、分割したｍ１個の整数νξとに基づいて、関数Ｖ２の値である乗法群Ｇ２の要素Ｖ２（ｗ）＝ｈ２’・Π（ｈξ＾νξ）（ξは、１以上ｍ１以下の整数。）を算出することを特徴とする。【０５１４】
この実施の形態における暗号文生成装置２００によれば、暗号処理に必要な資源が少なくて済み、ＳＭＭＲ−ＩＮＤ−ＩＤ−ＣＣＡ２安全性を数学的に証明できるＩＤベース暗号方式を利用した暗号通信を実現できるという効果を奏する。【０５１５】
この実施の形態におけるＩＤベース暗号通信システム８００は、以下の点を特徴とする。
暗号パラメータ生成装置１００は、更に、群パラメータ記憶部１１１を有することを特徴とする。
群パラメータ記憶部１１１は、磁気ディスク装置９２０などの記憶装置を用いて、群パラメータとして、自然数ｒと、位数が上記自然数ｒである乗法群Ｇ１と、位数が上記自然数ｒである乗法群Ｇ２と、位数が上記自然数ｒである乗法群ＧＴと、乗法群Ｇ１の要素と乗法群Ｇ２の要素とから乗法群ＧＴの要素を算出するペアリングｅとを表わす情報を記憶することを特徴とする。
秘密情報生成部１１２は、ＣＰＵ９１１などの処理装置を用いて、群パラメータ記憶部１１１が記憶した群パラメータが表わす自然数ｒに基づいて、１以上自然数ｒ未満の整数αをランダムに生成することを特徴とする。
公開パラメータ生成部１１３は、ＣＰＵ９１１などの処理装置を用いて、乗法群ＧＴの要素から所定の長さのビット列を算出する鍵生成関数ＫＤＦと、所定の長さのビット列から乗法群ＧＴの要素を算出する２つの関数Ｖ１及びＶ２と、任意の長さのビット列から所定の長さのビット列を算出するハッシュ関数ＨＦとを決定し、ＣＰＵ９１１などの処理装置を用いて、群パラメータ記憶部１１１が記憶した群パラメータが表わす乗法群Ｇ１と乗法群Ｇ２とに基づいて、乗法群Ｇ１の要素ｇと乗法群Ｇ２の要素ｇ２とをランダムに選択し、秘密情報生成部１１２が生成した整数αと、選択した乗法群Ｇ１の要素ｇとに基づいて、乗法群Ｇ１の要素ｇ１＝ｇ＾αを算出し、ＣＰＵ９１１などの処理装置を用いて、群パラメータ記憶部１１１が記憶した群パラメータと、決定した鍵生成関数ＫＤＦと２つの関数Ｖ１及びＶ２とハッシュ関数ＨＦと、選択した乗法群Ｇ１の要素ｇと乗法群Ｇ２の要素ｇ２と、算出した乗法群Ｇ１の要素ｇ１とを表わす情報を公開暗号パラメータとすることを特徴とする。
秘密情報生成部１１２は、更に、ＣＰＵ９１１などの処理装置を用いて、生成した整数αと、公開パラメータ生成部１１３が選択した乗法群Ｇ２の要素ｇ２とに基づいて、乗法群Ｇ２の要素ｍｓｋ＝ｇ２＾αを算出することを特徴とする。
秘密情報記憶部１２１は、磁気ディスク装置９２０などの記憶装置を用いて、秘密情報生成部１１２が算出した乗法群Ｇ２の要素ｍｓｋを表わす情報を秘密情報として記憶することを特徴とする。
識別情報入力部１３１は、ＣＰＵ９１１などの処理装置を用いて、所定の長さのビット列ＩＤを受信者識別情報として入力することを特徴とする。
秘密鍵生成部１３２は、ＣＰＵ９１１などの処理装置を用いて、公開パラメータ生成部１１３が生成した公開暗号パラメータが表わす自然数ｒに基づいて、１以上自然数ｒ未満の整数ｒＩＤをランダムに生成し、ＣＰＵ９１１などの処理装置を用いて、公開パラメータ生成部１１３が生成した公開暗号パラメータが表わす乗法群Ｇ１の要素ｇと関数Ｖ１と、秘密情報記憶部１２１が記憶した秘密情報が表わす乗法群Ｇ２の要素ｍｓｋと、生成した整数ｒＩＤとに基づいて、乗法群Ｇ２の要素ｄ０ＩＤ＝ｍｓｋ・Ｖ１（ＩＤ）＾ｒＩＤと、乗法群Ｇ１の要素ｄ１ＩＤ＝ｇ＾ｒＩＤとを算出し、算出した乗法群Ｇ２の要素ｄ０ＩＤと乗法群Ｇ１の要素ｄ１ＩＤとを表わす情報を、秘密鍵ｄＩＤとすることを特徴とする。
受信者識別入力部２３２は、ＣＰＵ９１１などの処理装置を用いて、ｎ個の所定の長さのビット列ＩＤｉをｎ個の受信者識別情報として入力することを特徴とする。
乱数生成部２２２は、ＣＰＵ９１１などの処理装置を用いて、暗号パラメータ記憶部２１０が記憶した公開暗号パラメータが表わす自然数ｒに基づいて、ｎ人の受信者に対応するｎ個の１以上自然数ｒ未満の整数ｓｉ（ｉは、１以上ｎ以下の整数。）をランダムに生成することを特徴とする。
第一暗号文生成部２４１は、ＣＰＵ９１１などの処理装置を用いて、暗号パラメータ記憶部２１０が記憶した公開暗号パラメータが表わす乗法群Ｇ１の要素ｇ１と乗法群Ｇ２の要素ｇ２とペアリングｅと鍵生成関数ＫＤＦと、乱数生成部２２２が生成したｎ個の整数ｓｉとに基づいて、ｎ人の受信者に対応するｎ個の鍵ビット列ｋｉ＝ＫＤＦ（ｅ（ｇ１，ｇ２）＾ｓｉ）（ｉは、１以上ｎ以下の整数。）を算出し、ＣＰＵ９１１などの処理装置を用いて、算出したｎ個の鍵ビット列ｋｉにより、平文入力部２３１が入力した平文Ｍをそれぞれ暗号化して、ｎ人の受信者に対応するｎ個の第一暗号文Ｃ１ｉ（ｉは、１以上ｎ以下の整数。）とすることを特徴とする。
第二暗号文生成部２４２は、ＣＰＵ９１１などの処理装置を用いて、暗号パラメータ記憶部２１０が記憶した公開暗号パラメータが表わす関数Ｖ１と、受信者識別入力部２３２が入力したｎ個の所定の長さのビット列ＩＤｉと、乱数生成部２２２が生成したｎ個の整数ｓｉ（ｉは、１以上ｎ以下の整数。）とに基づいて、ｎ人の受信者に対応するｎ個の乗法群Ｇ２の要素ｕｉ＝Ｖ１（ＩＤｉ）＾ｓｉ（ｉは、１以上ｎ以下の整数。）を算出し、算出したｎ個の乗法群Ｇ２の要素ｕｉをそれぞれ表わすビット列を、ｎ人の受信者に対応するｎ個の第二暗号文Ｃ２ｉ（ｉは、１以上ｎ以下の整数。）とすることを特徴とする。
第三暗号文生成部２４３は、ＣＰＵ９１１などの処理装置を用いて、暗号パラメータ記憶部２１０が記憶した公開暗号パラメータが表わす乗法群Ｇ１の要素ｇと、乱数生成部２２２が生成したｎ個の整数ｓｉとに基づいて、ｎ人の受信者に対応するｎ個の乗法群Ｇ１の要素ｖｉ＝ｇ＾ｓｉ（ｉは、１以上ｎ以下の整数。）を算出し、算出したｎ個の乗法群Ｇ１の要素ｖｉをそれぞれ表わすビット列を、ｎ人の受信者に対応するｎ個の第三暗号文Ｃ３ｉ（ｉは、１以上ｎ以下の整数。）とすることを特徴とする。
ハッシュ値算出部２４４は、ＣＰＵ９１１などの処理装置を用いて、暗号パラメータ記憶部２１０が記憶した公開暗号パラメータが表わすハッシュ関数ＨＦに基づいて、１つの所定の長さのビット列ｗ０を算出して、ハッシュ値Ｈとすることを特徴とする。
暗号文検証文生成部２４５は、ＣＰＵ９１１などの処理装置を用いて、暗号パラメータ記憶部２１０が記憶した公開暗号パラメータが表わす関数Ｖ２と、乱数生成部２２２が生成したｎ個の整数ｓｉと、ハッシュ値算出部２４４が算出した１つの所定の長さのビット列ｗ０とに基づいて、ｎ人の受信者に対応するｎ個の乗法群Ｇ２の要素ｙｉ＝Ｖ２（ｗ０）＾ｓｉ（ｉは、１以上ｎ以下の整数。）を算出し、算出したｎ個の乗法群Ｇ２の要素ｙｉをそれぞれ表わすビット列を、ｎ人の受信者に対応するｎ個の暗号文検証文ＣＣｉとすることを特徴とする。
検証ハッシュ値算出部３４４は、ＣＰＵ９１１などの処理装置を用いて、公開パラメータ記憶部３１０が記憶した公開暗号パラメータが表わすハッシュ関数ＨＦに基づいて、所定の長さのビット列ｗ’を算出して、検証ハッシュ値Ｈ’とすることを特徴とする。
暗号文検証部３４５は、ＣＰＵ９１１などの処理装置を用いて、公開パラメータ記憶部３１０が記憶した公開暗号パラメータが表わすペアリングｅと関数Ｖ２と、暗号文分解部３４６が取得した対応第三暗号文Ｃ３ＩＤが表わす乗法群Ｇ１の要素ｖＩＤと検証ハッシュ値算出部３４４が算出した所定の長さのビット列ｗ’とに基づいて、乗法群ＧＴの要素ｅ（ｖＩＤ，Ｖ２（ｗ’））を算出し、ＣＰＵ９１１などの処理装置を用いて、公開パラメータ記憶部３１０が記憶した公開暗号パラメータが表わす乗法群Ｇ１の要素ｇとペアリングｅと、暗号文分解部３４６が取得した対応暗号文検証文ＣＣＩＤが表わす乗法群Ｇ２の要素ｙＩＤとに基づいて、乗法群ＧＴの要素ｅ（ｇ，ｙＩＤ）を算出し、ＣＰＵ９１１などの処理装置を用いて、算出した乗法群ＧＴの要素ｅ（ｖＩＤ，Ｖ２（ｗ’））と、算出した乗法群ＧＴの要素ｅ（ｇ，ｙＩＤ）とを比較し、乗法群ＧＴの要素ｅ（ｖＩＤ，Ｖ２（ｗ’））と乗法群ＧＴの要素ｅ（ｇ，ｙＩＤ）とが一致する場合に、暗号文受信部３５１が受信した１つの暗号文Ｃ（鍵暗号文Ｃ）に整合性があると判定することを特徴とする。
暗号文復号部３４１は、暗号文受信部３５１が受信した１つの暗号文Ｃに整合性があると、暗号文検証部３４５が判定した場合に、ＣＰＵ９１１などの処理装置を用いて、公開パラメータ記憶部３１０が記憶した公開暗号パラメータが表わすペアリングｅと鍵生成関数ＫＤＦと、秘密鍵記憶部３２３が記憶した秘密鍵ｄＩＤが表わす乗法群Ｇ２の要素ｄ０ＩＤと乗法群Ｇ１の要素ｄ１ＩＤと、暗号文分解部３４６が取得した１つの対応第二暗号文Ｃ２ＩＤが表わす乗法群Ｇ２の要素ｕＩＤと対応第三暗号文Ｃ３ＩＤが表わす乗法群Ｇ１の要素ｖＩＤとに基づいて、鍵ビット列ｋ’＝ＫＤＦ（ｅ（ｖＩＤ，ｄ０ＩＤ）／ｅ（ｄ１ＩＤ，ｕＩＤ））を算出し、ＣＰＵ９１１などの処理装置を用いて、算出した鍵ビット列ｋ’により、暗号文分解部３４６が取得した対応第一暗号文Ｃ１ＩＤを復号して、平文Ｍを復元することを特徴とする。【０５１６】
この実施の形態におけるＩＤベース暗号通信システム８００によれば、暗号処理に必要な資源が少なくて済み、ＳＭＭＲ−ＩＮＤ−ＩＤ−ＣＣＡ２安全性を数学的に証明できるＩＤベース暗号方式を利用した暗号通信を実現できるという効果を奏する。【０５１７】
実施の形態４．
実施の形態４について、図２５〜図２８を用いて説明する。【０５１８】
図２５は、この実施の形態におけるＩＤベース暗号通信システム８００の全体構成の一例を示すシステム構成図である。
ＩＤベース暗号通信システム８００は、暗号パラメータ生成装置１００と、暗号文生成装置２００と、暗号文受信装置３０１〜暗号文受信装置３０３と、群パラメータ生成装置４００とを有する。【０５１９】
このうち、暗号パラメータ生成装置１００及び暗号文生成装置２００及び暗号文受信装置３０１〜暗号文受信装置３０３は、実施の形態２で説明したものと同様なので、ここでは説明を省略する。【０５２０】
群パラメータ生成装置４００は、群パラメータを生成する。群パラメータ生成装置４００が生成した群パラメータは、暗号パラメータ生成装置１００が入力し、群パラメータ記憶部１１１が記憶する。
なお、群パラメータ生成装置４００は、暗号パラメータ生成装置１００の内部にあってもよい。【０５２１】
図２６は、この実施の形態における群パラメータ生成装置４００の機能ブロックの構成の一例を示すブロック構成図である。
群パラメータ生成装置４００は、パラメータ生成条件記憶部４１０と、群位数候補生成部４２０と、群位数安全性判定部４３０と、パラメータ生成部４４０とを有する。【０５２２】
パラメータ生成条件記憶部４１０は、磁気ディスク装置９２０などの記憶装置を用いて、パラメータ生成条件情報を記憶する。
パラメータ生成条件情報とは、群パラメータ生成装置４００が生成する群パラメータについての条件を表わす情報である。群パラメータ生成装置４００が生成する群パラメータについての条件は、その群パラメータを使用したＩＤベース暗号通信システム８００の安全性などの観点から、あらかじめ定められたものである。【０５２３】
パラメータ生成条件記憶部４１０は、パラメータ生成条件情報として、整数ｋと、整数Ｄと、整数Ｂ１と、整数Ｂ２とを表わす情報を記憶する。
ここで、整数ｋは、埋め込み次数（ｅｍｂｅｄｉｎｇ  ｄｅｇｒｅｅ）を示す。整数Ｄは、判別式を示す。整数Ｂ１は、第一閾値を示す。整数Ｂ２は、第二閾値を示す。【０５２４】
群位数候補生成部４２０は、群パラメータのうち、自然数ｒ（乗法群Ｇ１及び乗法群Ｇ２及び乗法群ＧＴの位数）の候補となる自然数を生成する。
群位数候補生成部４２０は、ＣＰＵ９１１などの処理装置を用いて、パラメータ生成条件記憶部４１０が記憶したパラメータ生成条件情報を入力する。
群位数候補生成部４２０は、ＣＰＵ９１１などの処理装置を用いて、入力したパラメータ生成条件情報が表わす整数ｋと整数Ｄとに基づいて、以下の３つの条件を満たす自然数ｒを生成する。【０５２５】
第一の条件は、自然数ｒは十分に大きな素数であるという条件である。ここで、「十分に大きい」とは、自然数ｒを位数とする乗法群においてＤＨ問題を解くことが困難であることを意味する。
第二の条件は、自然数ｒが、整数ｋの倍数＋１であるという条件である。
第三の条件は、自然数ｒを法としたとき、整数Ｄが平方剰余であるという条件である。【０５２６】
群位数候補生成部４２０は、以上の３つの条件を満たす自然数ｒを生成し、ＣＰＵ９１１などの処理装置を用いて、生成した自然数ｒを表わす情報を出力する。【０５２７】
群位数安全性判定部４３０は、ＩＤベース暗号通信システム８００の安全性の観点から、群位数候補生成部４２０が生成した自然数ｒが適切であるか否かを判定する。【０５２８】
この実施の形態では、（ｒ−１）及び（ｒ＋１）が素因数分解できないとき、最も安全性が高いと考える。
これは、ｑ−Ｄ−ｔＡＢＤＨＥ問題について、（ｒ−１）または（ｒ＋１）の因数を利用してαを求めるアルゴリズムが存在するため、ｑ−Ｄ−ＡＢＤＨＥ問題に帰着する暗号方式を採用する場合には、そのようなｒを避けたほうがよいからである。【０５２９】
しかし、現実には、そのような条件を満たすｒは存在しない。なぜなら、ｒは大きな素数なので、奇数であり、（ｒ−１）及び（ｒ＋１）は、それぞれ２で割り切れる。
また、上述したｒの選択条件より、（ｒ−１）は、ｋで割り切れる。
更に、（ｒ−１）及び（ｒ＋１）のいずれか一方は、４で割り切れる。なぜなら、（ｒ＋１）が４で割り切れないと仮定すると、（ｒ＋１）は２で割り切れるから（ｒ＋１）を４で割った余りは２であり、したがって（ｒ−１）が４で割り切れるからである。
そこで、（ｒ−１）及び（ｒ＋１）が上記以外の素因数を持たないことを目指して、自然数ｒを選択する。【０５３０】
群位数安全性判定部４３０は、剰余算出部４３１と、判定値算出部４３２と、素因数判定部４３３とを有する。【０５３１】
剰余算出部４３１は、ＣＰＵ９１１などの処理装置を用いて、群位数候補生成部４２０が出力した自然数ｒを表わす情報を入力する。
剰余算出部４３１は、ＣＰＵ９１１などの処理装置を用いて、入力した情報が表わす自然数ｒを４で割った余りを算出する。
剰余算出部４３１は、ＣＰＵ９１１などの処理装置を用いて、算出した余りを表わす情報を出力する。【０５３２】
自然数ｒが満たすべき条件は、自然数ｒを４で割った余りが１であるか３であるかによって異なる。【０５３３】
判定値算出部４３２は、ＣＰＵ９１１などの処理装置を用いて、パラメータ生成条件記憶部４１０が記憶したパラメータ生成条件情報と、群位数候補生成部４２０が出力した自然数ｒを表わす情報と、剰余算出部４３１が出力した余りを表わす情報とを入力する。
判定値算出部４３２は、ＣＰＵ９１１などの処理装置を用いて、入力した情報が表わす余りに基づいて、自然数ｒを４で割った余りが１であるか３であるかを判定する。【０５３４】
自然数ｒを４で割った余りが１の場合、（ｒ−１）は４で割り切れる。そこで、（ｒ−１）を整数ｋと４との最小公倍数で割った商が、整数Ｂ１より小さい素因数を持たず、かつ、（ｒ＋１）を２で割った商が、整数Ｂ２より小さい素因数を持たないことを条件として、自然数ｒを選択する。【０５３５】
そのため、自然数ｒを４で割った余りが１であると判定した場合、判定値算出部４３２は、ＣＰＵ９１１などの処理装置を用いて、入力したパラメータ生成条件情報が表わす整数ｋと、入力した情報が表わす自然数ｒとに基づいて、自然数ｒと１との差（ｒ−１）を、整数ｋと４との最小公倍数ＬＣＭ（ｋ，４）で割った商（ｒ−１）／ＣＭ（ｋ，４）を算出し、整数ｒ１とする。
また、判定値算出部４３２は、ＣＰＵ９１１などの処理装置を用いて、入力した情報が表わす自然数ｒに基づいて、自然数ｒと１との和（ｒ＋１）を２で割った商（ｒ＋１）／２を算出し、整数ｒ２とする。【０５３６】
自然数ｒを４で割った余りが３の場合、（ｒ＋１）は４で割り切れる。そこで、（ｒ−１）を整数ｋと２との最小公倍数で割った商が、整数Ｂ１より小さい素因数を持たず、かつ、（ｒ＋１）を４で割った商が、整数Ｂ２より小さい素因数を持たないことを条件として、自然数ｒを選択する。【０５３７】
そのため、自然数ｒを４で割った余りが３であると判定した場合、判定値算出部４３２は、ＣＰＵ９１１などの処理装置を用いて、入力したパラメータ生成条件情報が表わす整数ｋと、入力した情報が表わす自然数ｒとに基づいて、自然数ｒと１との差（ｒ−１）を、整数ｋと２との最小公倍数ＬＣＭ（ｋ，２）で割った商（ｒ−１）／ＬＣＭ（ｋ，２）を算出し、整数ｒ１とする。
また、判定値算出部４３２は、ＣＰＵ９１１などの処理装置を用いて、入力した情報が表わす自然数ｒに基づいて、自然数ｒと１との和（ｒ＋１）を４で割った商（ｒ＋１）／４を算出し、整数ｒ２とする。【０５３８】
判定値算出部４３２は、ＣＰＵ９１１などの処理装置を用いて、算出した整数ｒ１と整数ｒ２とを表わす情報を出力する。【０５３９】
素因数判定部４３３は、ＣＰＵ９１１などの処理装置を用いて、パラメータ生成条件記憶部４１０が記憶したパラメータ生成条件情報と、判定値算出部４３２が出力した整数ｒ１と整数ｒ２とを表わす情報とを入力する。
素因数判定部４３３は、ＣＰＵ９１１などの処理装置を用いて、入力したパラメータ生成条件情報が表わす整数Ｂ１と、入力した情報が表わす整数ｒ１とに基づいて、整数ｒ１が整数Ｂ１より小さい素因数を持つか否かを判定する。
整数ｒ１が整数Ｂ１より小さい素因数を持つと判定した場合、素因数判定部４３３は、ＣＰＵ９１１などの処理装置を用いて、自然数ｒが適切でないと判定する。【０５４０】
素因数判定部４３３は、ＣＰＵ９１１などの処理装置を用いて、入力したパラメータ生成条件情報が表わす整数Ｂ２と、入力した情報が表わす整数ｒ２とに基づいて、整数ｒ２が整数Ｂ２より小さい素因数を持つか否かを判定する。
整数ｒ２が整数Ｂ２より小さい素因数を持つと判定した場合、素因数判定部４３３は、ＣＰＵ９１１などの処理装置を用いて、自然数ｒが適切でないと判定する。【０５４１】
整数ｒ１が整数Ｂ１より小さい素因数を持たず、かつ、整数ｒ２が整数Ｂ２より小さい素因数を持たないと判定した場合のみ、素因数判定部４３３は、ＣＰＵ９１１などの処理装置を用いて、自然数ｒが適切であると判定する。【０５４２】
自然数ｒが適切であると群位数安全性判定部４３０が判定した場合、パラメータ生成部４４０は、自然数ｒに基づいて、群パラメータを生成する。
パラメータ生成部４４０は、ＣＰＵ９１１などの処理装置を用いて、パラメータ生成条件記憶部４１０が記憶したパラメータ生成条件情報と、群位数候補生成部４２０が出力した自然数ｒを表わす情報とを入力する。
パラメータ生成部４４０は、ＣＰＵ９１１などの処理装置を用いて、入力したパラメータ生成条件情報が表わす整数ｋと整数Ｄと、入力した情報が表わす自然数ｒとに基づいて、乗法群Ｇ１及び乗法群Ｇ２を決定する。
パラメータ生成部４４０は、ＣＰＵ９１１などの処理装置を用いて、決定した乗法群Ｇ１及び乗法群Ｇ２に基づいて、乗法群Ｇ１の要素と乗法群Ｇ２の要素とのペアリングｅと、ペアリングｅの値を要素とする乗法群ＧＴとを決定する。
パラメータ生成部４４０は、ＣＰＵ９１１などの処理装置を用いて、決定した乗法群Ｇ１と乗法群Ｇ２と乗法群ＧＴとペアリングｅとを表わす情報を、群パラメータとして出力する。【０５４３】
ここで、乗法群Ｇ１及び乗法群Ｇ２は、例えば、楕円曲線Ｅ：Ｙ２＝Ｘ３＋ａＸ＋ｂ（Ｘ、Ｙ、ａ、ｂは、位数ｐ（ｐは素数。）の有限体ＧＦ（ｐ）の要素。）上の点がなす群である。
ペアリングｅは、例えば、ベイユペアリングやテイトペアリングである。
乗法群ＧＴは、例えば、位数ｑｋ（ｑは素数。ｋは２以上の整数。）の有限体ＧＦ（ｑｋ）の乗法群の部分群である。
自然数ｒを楕円曲線Ｅ上の点がなす群の位数とし、整数Ｄを判別式とし、整数ｋを有限体ＧＦ（ｑｋ）の埋め込み次数とする楕円曲線Ｅのパラメータを求めるアルゴリズムとしては、例えば、コックスピンチ（Ｃｏｃｋｓ−Ｐｉｎｃｈ）法がある。【０５４４】
パラメータ生成部４４０は、ＣＰＵ９１１などの処理装置を用いて、例えば、コックスピンチ法により、有限体ＧＦ（ｐ）の位数ｐと、ｐ＋１−ｔまたはｐ＋１＋ｔが素数となる整数ｔとを算出する。
パラメータ生成部４４０は、ＣＰＵ９１１などの処理装置を用いて、判別式Ｄに対するヒルベルト類多項式ＨＤ（ｘ）を算出する。
パラメータ生成部４４０は、ＣＰＵ９１１などの処理装置を用いて、算出したヒルベルト類多項式ＨＤ（ｘ）の法ｐ還元多項式の根である有限体ＧＦ（ｐ）の要素ｊを算出する。パラメータ生成部４４０は、例えば、バールカンプのアルゴリズムにより、有限体ＧＦ（ｐ）の要素ｊを算出する。
パラメータ生成部４４０は、ＣＰＵ９１１などの処理装置を用いて、求めた有限体ＧＦ（ｐ）の要素ｊに基づいて、ｊ＝１７２８ａ３／（ａ３＋２７ｂ２）を満たす有限体ＧＦ（ｐ）の要素ａ及びｂを算出し、楕円曲線Ｅ：Ｙ２＝Ｘ３＋ａＸ＋ｂの係数とする。【０５４５】
パラメータ生成部４４０は、例えば、上記のようにして、乗法群Ｇ１及び乗法群Ｇ２及び乗法群ＧＴ及びペアリングｅを決定する。【０５４６】
パラメータ生成部４４０が出力した群パラメータは、暗号パラメータ生成装置１００の群パラメータ記憶部１１１が、ＣＰＵ９１１などの処理装置を用いて入力し、磁気ディスク装置９２０などの記憶装置を用いて記憶する。【０５４７】
図２７は、この実施の形態における群パラメータ生成装置４００が群パラメータを生成する群パラメータ生成処理の流れの一例を示すフローチャート図である。【０５４８】
自然数生成工程Ｓ６１において、群位数候補生成部４２０は、ＣＰＵ９１１などの処理装置を用いて、自然数ｒを生成する。【０５４９】
素数判定工程Ｓ６２において、群位数候補生成部４２０は、ＣＰＵ９１１などの処理装置を用いて、自然数生成工程Ｓ６１で生成した自然数ｒに基づいて、自然数ｒが素数か否かを判定する。
自然数ｒが素数であると判定した場合、倍数判定工程Ｓ６３へ進む。
自然数ｒが素数でないと判定した場合、自然数生成工程Ｓ６１に戻り、異なる自然数ｒを生成する。【０５５０】
倍数判定工程Ｓ６３において、群位数候補生成部４２０は、ＣＰＵ９１１などの処理装置を用いて、パラメータ生成条件記憶部４１０が記憶したパラメータ生成条件情報が表わす整数ｋと、自然数生成工程Ｓ６１で生成した自然数ｒとに基づいて、自然数ｒが整数ｋの倍数＋１であるか否かを判定する。
自然数ｒが整数ｋの倍数＋１であると判定した場合、平方剰余判定工程Ｓ６４へ進む。
自然数ｒが整数ｋの倍数＋１でないと判定した場合、自然数生成工程Ｓ６１に戻り、異なる自然数ｒを生成する。【０５５１】
平方剰余判定工程Ｓ６４において、群位数候補生成部４２０は、ＣＰＵ９１１などの処理装置を用いて、パラメータ生成条件記憶部４１０が記憶したパラメータ生成条件情報が表わす整数Ｄと、自然数生成工程Ｓ６１で生成した自然数ｒとに基づいて、整数Ｄが法ｒにおける平方剰余であるか否かを判定する。
整数Ｄが法ｒにおける平方剰余であると判定した場合、第一剰余算出工程Ｓ６５へ進む。
整数Ｄが法ｒにおける平方剰余でないと判定した場合、自然数生成工程Ｓ６１に戻り、異なる自然数ｒを生成する。【０５５２】
第一剰余算出工程Ｓ６５において、剰余算出部４３１は、ＣＰＵ９１１などの処理装置を用いて、自然数生成工程Ｓ６１で生成した自然数ｒに基づいて、自然数ｒを４で割った余りを算出する。
自然数ｒを４で割った余りが３である場合、第一判定値算出工程Ｓ６６へ進む。
自然数ｒを４で割った余りが１である場合、第三判定値算出工程Ｓ６８へ進む。【０５５３】
第一判定値算出工程Ｓ６６において、判定値算出部４３２は、ＣＰＵ９１１などの処理装置を用いて、自然数生成工程Ｓ６１で生成した自然数ｒに基づいて、自然数ｒと１との和（ｒ＋１）を４で割った商（ｒ＋１）／４を算出し、整数ｒ２とする。【０５５４】
第二判定値算出工程Ｓ６７において、判定値算出部４３２は、ＣＰＵ９１１などの処理装置を用いて、パラメータ生成条件記憶部４１０が記憶したパラメータ生成条件情報が表わす整数ｋに基づいて、整数ｋと２との最小公倍数ＬＣＭ（ｋ，２）を算出する。
判定値算出部４３２は、ＣＰＵ９１１などの処理装置を用いて、自然数生成工程Ｓ６１で生成した自然数ｒと、算出した最小公倍数ＬＣＭ（ｋ，２）とに基づいて、自然数ｒと１との差（ｒ−１）を最小公倍数ＬＣＭ（ｋ，２）で割った商（ｒ−１）／ＬＣＭ（ｋ，２）を算出し、整数ｒ１とする。
その後、第一素因数判定工程Ｓ７０へ進む。【０５５５】
第三判定値算出工程Ｓ６８において、判定値算出部４３２は、ＣＰＵ９１１などの処理装置を用いて、自然数生成工程Ｓ６１で生成した自然数ｒに基づいて、自然数ｒと１との和（ｒ＋１）を２で割った商（ｒ＋１）／２を算出し、整数ｒ２とする。【０５５６】
第四判定値算出工程Ｓ６９において、判定値算出部４３２は、ＣＰＵ９１１などの処理装置を用いて、パラメータ生成条件記憶部４１０が記憶したパラメータ生成条件情報が表わす整数ｋに基づいて、整数ｋと４との最小公倍数ＬＣＭ（ｋ，４）を算出する。
判定値算出部４３２は、ＣＰＵ９１１などの処理装置を用いて、自然数生成工程Ｓ６１で生成した自然数ｒと、算出した最小公倍数ＬＣＭ（ｋ，４）とに基づいて、自然数ｒと１との差（ｒ−１）を最小公倍数ＬＣＭ（ｋ，４）で割った商（ｒ−１）／ＬＣＭ（ｋ，４）を算出し、整数ｒ１とする。【０５５７】
第一素因数判定工程Ｓ７０において、群位数安全性判定部４３０は、ＣＰＵ９１１などの処理装置を用いて、パラメータ生成条件記憶部４１０が記憶したパラメータ生成条件情報が表わす整数Ｂ１と、第二判定値算出工程Ｓ６７または第四判定値算出工程Ｓ６９で算出した整数ｒ１とに基づいて、整数ｒ１が整数Ｂ１未満の素因数を有するか否かを判定する。
整数ｒ１が整数Ｂ１未満の素因数を有すると判定した場合、自然数生成工程Ｓ６１に戻り、異なる自然数ｒを生成する。
整数ｒ１が整数Ｂ１未満の素因数を有しないと判定した場合、第二素因数判定工程Ｓ７１へ進む。【０５５８】
第二素因数判定工程Ｓ７１において、群位数安全性判定部４３０は、ＣＰＵ９１１などの処理装置を用いて、パラメータ生成条件記憶部４１０が記憶したパラメータ生成条件情報が表わす整数Ｂ２と、第一判定値算出工程Ｓ６６または第三判定値算出工程Ｓ６８で算出した整数ｒ２とに基づいて、整数ｒ２が整数Ｂ２未満の素因数を有するか否かを判定する。
整数ｒ２が整数Ｂ２未満の素因数を有すると判定した場合、自然数生成工程Ｓ６１に戻り、異なる自然数ｒを生成する。
整数ｒ２が整数Ｂ２未満の素因数を有しないと判定した場合、群パラメータ生成工程Ｓ８５へ進む。【０５５９】
こうして、群位数安全性判定部４３０は、乗法群の位数として安全な自然数ｒを選択する。【０５６０】
群パラメータ生成工程Ｓ７２において、パラメータ生成部４４０は、ＣＰＵ９１１などの処理装置を用いて、パラメータ生成条件記憶部４１０が記憶したパラメータ生成条件情報と、自然数生成工程Ｓ６１で生成した自然数ｒとに基づいて、自然数ｒを群位数とする乗法群を算出する。
パラメータ生成部４４０は、ＣＰＵ９１１などの処理装置を用いて、算出した乗法群を表わす情報を含む群パラメータを生成する。【０５６１】
以上のようにして、安全な群位数を使用したＩＤベース暗号通信システム８００を実現する。【０５６２】
図２８は、この実施の形態における群パラメータ生成装置４００が群パラメータを生成する群パラメータ生成処理の流れの別の例を示すフローチャート図である。
なお、図２７で説明した群パラメータ生成処理の工程と共通する工程については、同一の符号を付し、説明を省略する。【０５６３】
自然数生成工程Ｓ８１において、群位数候補生成部４２０は、ＣＰＵ９１１などの処理装置を用いて、自然数ｎを生成する。【０５６４】
埋め込み次数判定工程Ｓ８２において、群位数候補生成部４２０は、ＣＰＵ９１１などの処理装置を用いて、パラメータ生成条件記憶部４１０が記憶したパラメータ生成条件情報が表わす整数ｋに基づいて、整数ｋが偶数か奇数かを判定する。
整数ｋが偶数であると判定した場合、第一自然数算出工程Ｓ８３へ進む。
整数ｋが奇数であると判定した場合、第二自然数算出工程Ｓ８４へ進む。【０５６５】
第一自然数算出工程Ｓ８３において、群位数候補生成部４２０は、ＣＰＵ９１１などの処理装置を用いて、パラメータ生成条件記憶部４１０が記憶したパラメータ生成条件情報が表わす整数ｋと、自然数生成工程Ｓ８１で生成した自然数ｎとに基づいて、整数ｋと自然数ｎとの積に１を加えた自然数ｒ＝ｎ・ｋ＋１を算出する。
その後、素数判定工程Ｓ６２へ進む。【０５６６】
第二自然数算出工程Ｓ８４において、群位数候補生成部４２０は、ＣＰＵ９１１などの処理装置を用いて、パラメータ生成条件記憶部４１０が記憶したパラメータ生成条件情報が表わす整数ｋと、自然数生成工程Ｓ８１で生成した自然数ｎとに基づいて、整数ｋと自然数ｎの２倍との積に１を加えた自然数ｒ＝２ｎ・ｋ＋１を算出する。【０５６７】
これにより、上述した条件のうち、自然数ｒが整数ｋの倍数＋１であるという条件が満たされる。また、自然数ｒは常に奇数なので、素数である可能性がある。【０５６８】
第一判定値算出工程Ｓ８５において、群位数安全性判定部４３０は、ＣＰＵ９１１などの処理装置を用いて、第一自然数算出工程Ｓ８３または第二自然数算出工程Ｓ８４で算出した自然数ｒに基づいて、自然数ｒと１との和（ｒ＋１）を４で割った商（ｒ＋１）／４を算出し、整数ｒ２とする。【０５６９】
第二判定値算出工程Ｓ８６において、群位数安全性判定部４３０は、ＣＰＵ９１１などの処理装置を用いて、自然数生成工程Ｓ８１で生成した自然数ｎに基づいて、自然数ｎを、整数ｒ１とする。
整数ｋが奇数の場合、ｒ＝２ｎ・ｋ＋１なので、ｎ＝（ｒ−１）／２ｋである。したがって、整数ｒ１は、（ｒ−１）をｋと２との最小公倍数（整数ｋが奇数なので、２ｋと等しい）で割った商である。
整数ｋが偶数の場合、ｒ＝ｎ・ｋ＋１なので、ｎ＝（ｒ−１）／ｋである。したがって、整数ｒ１は、（ｒ−１）をｋと２との最小公倍数（整数ｋが偶数なので、ｋと等しい）で割った商である。
また、ｋが４の倍数の場合には、整数ｒ１は、（ｒ−１）をｋと４との最小公倍数で合った商でもある。
その後、第一素因数判定工程Ｓ７０へ進む。【０５７０】
第三判定値算出工程Ｓ８７において、群位数安全性判定部４３０は、ＣＰＵ９１１などの処理装置を用いて、第一自然数算出工程Ｓ８３または第二自然数算出工程Ｓ８４で算出した自然数ｒに基づいて、自然数ｒと１との和（ｒ＋１）を２で割った商（ｒ＋１）／２を算出し、整数ｒ２とする。【０５７１】
第二剰余算出工程Ｓ８８において、群位数安全性判定部４３０は、ＣＰＵ９１１などの処理装置を用いて、パラメータ生成条件記憶部４１０が記憶したパラメータ生成条件情報が表わす整数ｋに基づいて、整数ｋを４で割った余りを算出する。
算出した余りが０の場合は、第二判定値算出工程Ｓ８６へ進む。
算出した余りが０以外の場合は、第四判定値算出肯定Ｓ８９へ進む。【０５７２】
第四判定値算出工程Ｓ８９において、群位数安全性判定部４３０は、ＣＰＵ９１１などの処理装置を用いて、自然数生成工程Ｓ８１で生成した自然数ｎに基づいて、自然数ｎを２で割った商ｎ／２を算出し、整数ｒ１とする。
整数ｋが奇数の場合、ｒ１＝（ｒ−１）／４ｋとなる。したがって、自然数ｒ１は、（ｒ−１）をｋと４との最小公倍数で割った商である。
整数ｋが偶数の場合、整数ｋを４で割った余りは２であり、ｒ１＝（ｒ−１）／２ｋとなる。したがって、整数ｒ１は、（ｒ−１）をｋと４との最小公倍数で割った商である。【０５７３】
このようにして、自然数ｒが、乗法群の位数として満たすべき条件をすべて満たす自然数ｒを選択する。【０５７４】
なお、上述した２つの処理の流れに限らず、他の手順で自然数ｒを選択してもよい。上述した自然数ｒが満たすべき条件を満足する自然数ｒが選択できればよく、判定の順序や細かい手順は、異なっていてもよい。【０５７５】
この実施の形態におけるＩＤベース暗号通信システム８００（暗号通信システム）は、更に、群パラメータ生成装置４００を有することを特徴とする。
群パラメータ生成装置４００は、情報を処理するＣＰＵ９１１などの処理装置と、群位数候補生成部４２０と、群位数安全性判定部４３０と、パラメータ生成部４４０とを有することを特徴とする。
群位数候補生成部４２０は、ＣＰＵ９１１などの処理装置を用いて、素数ｒ（自然数ｒ）を群位数の候補として生成することを特徴とする。
群位数安全性判定部４３０は、ＣＰＵ９１１などの処理装置を用いて、群位数候補生成部４２０が生成した素数ｒに基づいて、素数ｒと１との差（ｒ−１）の因数と、素数ｒと１との和（ｒ＋１）の因数とを算出し、ＣＰＵ９１１などの処理装置を用いて、算出した（ｒ−１）の因数と（ｒ＋１）の因数とに基づいて、群位数候補生成部４２０が生成した素数ｒが安全な群位数であるか否かを判定することを特徴とする。
パラメータ生成部４４０は、群位数候補生成部４２０が生成した素数ｒが安全な群位数であると群位数安全性判定部４３０が判定した場合に、ＣＰＵ９１１などの処理装置を用いて、群位数候補生成部４２０が生成した素数ｒに基づいて、素数ｒを群位数とする乗法群を算出し、ＣＰＵ９１１などの処理装置を用いて、算出した乗法群を表わす情報を含む群パラメータを生成することを特徴とする。
群パラメータ記憶部１１１は、磁気ディスク装置９２０などの記憶装置を用いて、群パラメータ生成装置４００が生成した群パラメータを記憶することを特徴とする。【０５７６】
この実施の形態におけるＩＤベース暗号通信システム８００によれば、安全な群位数を有する乗法群に基づいて、ＩＤベース暗号通信をすることができるという効果を奏する。【０５７７】
この実施の形態におけるＩＤベース暗号通信システム８００（暗号通信システム）は、また、以下の点を特徴とする。
群位数候補生成部４２０は、ＣＰＵ９１１などの処理装置を用いて、所定の整数ｋの倍数に１を加えた素数ｒ（自然数ｒ）を群位数の候補として生成することを特徴とする。
群位数安全性判定部４３０は、剰余算出部４３１と、判定値算出部４３２と、素因数判定部４３３とを有することを特徴とする。
剰余算出部４３１は、ＣＰＵ９１１などの処理装置を用いて、群位数候補生成部４２０が生成した素数ｒに基づいて、素数ｒを４で割った余りを算出することを特徴とする。
判定値算出部４３２は、上記剰余算出部が算出した余りが１である場合に、ＣＰＵ９１１などの処理装置を用いて、上記所定の整数ｋと、群位数候補生成部４２０が生成した素数ｒに基づいて、素数ｒと１との差（ｒ−１）を、整数ｋと４との最小公倍数ＬＣＭ（ｋ，４）で割った商である整数ｒ１＝（ｒ−１）／ＬＣＭ（ｋ，４）を算出し、ＣＰＵ９１１などの処理装置を用いて、群位数候補生成部４２０が生成した素数ｒに基づいて、素数ｒと１との和（ｒ＋１）を２で割った商である整数ｒ２＝（ｒ＋１）／２を算出し、剰余算出部４３１が算出した余りが３である場合に、ＣＰＵ９１１などの処理装置を用いて、上記所定の整数ｋと、群位数候補生成部４２０が生成した素数ｒに基づいて、素数ｒと１との差（ｒ−１）を、整数ｋと２との最小公倍数ＬＣＭ（ｋ，２）で割った商である整数ｒ１＝（ｒ−１）／ＬＣＭ（ｋ，２）を算出し、ＣＰＵ９１１などの処理装置を用いて、群位数候補生成部４２０が生成した素数ｒに基づいて、素数ｒと１との和（ｒ＋１）を４で割った商である整数ｒ２＝（ｒ＋１）／４を算出することを特徴とする。
素因数判定部４３３は、ＣＰＵ９１１などの処理装置を用いて、判定値算出部４３２が算出した整数ｒ１に基づいて、整数ｒ１が所定の整数Ｂ１より小さい素因数を有するか否かを判定し、ＣＰＵ９１１などの処理装置を用いて、判定値算出部４３２が算出した整数ｒ２に基づいて、整数ｒ２が所定の整数Ｂ２より小さい素因数を有するか否かを判定し、整数ｒ１が所定の整数Ｂ１より小さい素因数を有すると判定した場合、及び、整数ｒ２が所定の整数Ｂ２より小さい素因数を有すると判定した場合に、群位数候補生成部４２０が生成した素数ｒが安全な群位数でないと判定することを特徴とする。【０５７８】
この実施の形態におけるＩＤベース暗号通信システム８００によれば、攻撃法が判明している群位数を避けることができるので、安全な群位数を有する乗法群に基づいて、ＩＤベース暗号通信をすることができるという効果を奏する。【０５７９】
この実施の形態における群パラメータ生成装置４００は、以下の点を特徴とする。
それぞれが対応する暗号文受信装置３０１〜３０３を有するｎ人の受信者（ｎは、１以上の整数。）に対して、平文Ｍ（セッション鍵Ｋ）を１つの暗号文Ｃ（鍵暗号文Ｃ）により通知する暗号通信システム（ＩＤベース暗号通信システム８００）における暗号処理に使用する乗法群のパラメータを生成する群パラメータ生成装置４００において、
情報を処理するＣＰＵ９１１などの処理装置と、群位数候補生成部４２０と、群位数安全性判定部４３０と、パラメータ生成部４４０とを有することを特徴とする。
群位数候補生成部４２０は、ＣＰＵ９１１などの処理装置を用いて、素数ｒを群位数の候補として生成することを特徴とする。
群位数安全性判定部４３０は、ＣＰＵ９１１などの処理装置を用いて、群位数候補生成部４２０が生成した素数ｒに基づいて、素数ｒと１との差（ｒ−１）の因数と、素数ｒと１との和（ｒ＋１）の因数とを算出し、ＣＰＵ９１１などの処理装置を用いて、算出した（ｒ−１）の因数と（ｒ＋１）の因数とに基づいて、群位数候補生成部４２０が生成した素数ｒが安全な群位数であるか否かを判定することを特徴とする。
パラメータ生成部４４０は、群位数候補生成部４２０が生成した素数ｒが安全な群位数であると群位数安全性判定部４３０が判定した場合に、ＣＰＵ９１１などの処理装置を用いて、群位数候補生成部４２０が生成した素数ｒに基づいて、素数ｒを群位数とする乗法群を算出し、ＣＰＵ９１１などの処理装置を用いて、算出した乗法群を表わす情報を含む群パラメータを生成することを特徴とする。【０５８０】
この実施の形態における群パラメータ生成装置４００によれば、安全な群位数を有する乗法群に基づいて、ＩＤベース暗号通信システム８００における暗号処理に使用する群パラメータを生成できるので、ＩＤベース暗号通信システム８００における暗号通信の安全を確保できるという効果を奏する。【０５８１】
この実施の形態における群パラメータ生成装置４００は、また、以下の点を特徴とする。
群位数候補生成部４２０は、ＣＰＵ９１１などの処理装置を用いて、所定の整数ｋの倍数に１を加えた素数ｒを群位数の候補として生成することを特徴とする。
群位数安全性判定部４３０は、剰余算出部４３１と、判定値算出部４３２と、素因数判定部４３３とを有することを特徴とする。
剰余算出部４３１は、ＣＰＵ９１１などの処理装置を用いて、群位数候補生成部４２０が生成した素数ｒに基づいて、素数ｒを４で割った余りを算出することを特徴とする。
判定値算出部４３２は、剰余算出部４３１が算出した余りが１である場合に、ＣＰＵ９１１などの処理装置を用いて、上記所定の整数ｋと、群位数候補生成部４２０が生成した素数ｒに基づいて、素数ｒと１との差（ｒ−１）を、整数ｋと４との最小公倍数ＬＣＭ（ｋ，４）で割った商である整数ｒ１＝（ｒ−１）／ＬＣＭ（ｋ，４）を算出し、ＣＰＵ９１１などの処理装置を用いて、群位数候補生成部４２０が生成した素数ｒに基づいて、素数ｒと１との和（ｒ＋１）を２で割った商である整数ｒ２＝（ｒ＋１）／２を算出し、剰余算出部４３１が算出した余りが３である場合に、ＣＰＵ９１１などの処理装置を用いて、上記所定の整数ｋと、群位数候補生成部４２０が生成した素数ｒに基づいて、素数ｒと１との差（ｒ−１）を、整数ｋと２との最小公倍数ＬＣＭ（ｋ，２）で割った商である整数ｒ１＝（ｒ−１）／ＬＣＭ（ｋ，２）を算出し、ＣＰＵ９１１などの処理装置を用いて、群位数候補生成部４２０が生成した素数ｒに基づいて、素数ｒと１との和（ｒ＋１）を４で割った商である整数ｒ２＝（ｒ＋１）／４を算出することを特徴とする。
素因数判定部４３３は、ＣＰＵ９１１などの処理装置を用いて、判定値算出部４３２が算出した整数ｒ１に基づいて、整数ｒ１が所定の整数Ｂ１より小さい素因数を有するか否かを判定し、ＣＰＵ９１１などの処理装置を用いて、判定値算出部４３２が算出した整数ｒ２に基づいて、整数ｒ２が所定の整数Ｂ２より小さい素因数を有するか否かを判定し、整数ｒ１が所定の整数Ｂ１より小さい素因数を有すると判定した場合、及び、整数ｒ２が所定の整数Ｂ２より小さい素因数を有すると判定した場合に、群位数候補生成部４２０が生成した素数ｒが安全な群位数でないと判定することを特徴とする。【０５８２】
この実施の形態における群パラメータ生成装置４００によれば、攻撃法の判明している群位数を避けることができるので、安全な群位数を有する乗法群に基づいて、ＩＤベース暗号通信システム８００における暗号処理に使用する群パラメータを生成でき、ＩＤベース暗号通信システム８００における暗号通信の安全を確保できるという効果を奏する。【０５８３】
実施の形態５．
実施の形態５について、図２９を用いて説明する。
この実施の形態におけるＩＤベース暗号通信システム８００の全体構成、暗号パラメータ生成装置１００及び暗号文生成装置２００及び暗号文受信装置３０１〜３０３のブロック構成は、実施の形態４で説明したものと同様なので、ここでは説明を省略する。【０５８４】
群パラメータ生成装置４００について説明する。
この実施の形態における群パラメータ生成装置４００のブロック構成は、実施の形態４で説明したものと同様なので、図２６を用いて、異なる部分を説明する。【０５８５】
パラメータ生成条件記憶部４１０は、パラメータ生成条件情報として、整数ｋと、整数Ｄとを表わす情報を記憶する。【０５８６】
素因数判定部４３３は、ＣＰＵ９１１などの処理装置を用いて、判定値算出部４３２が出力した整数ｒ１と整数ｒ２とを表わす情報を入力する。
素因数判定部４３３は、ＣＰＵ９１１などの処理装置を用いて、入力した情報が表わす整数ｒ１に基づいて、整数ｒ１が素数であるか否かを判定する。
整数ｒ１が素数でないと判定した場合、素因数判定部４３３は、ＣＰＵ９１１などの処理装置を用いて、群位数候補生成部４２０が生成した自然数ｒが安全な群位数でなく、群位数として適切でないと判定する。【０５８７】
素因数判定部４３３は、ＣＰＵ９１１などの処理装置を用いて、入力した情報が表わす整数ｒ２に基づいて、整数ｒ２が素数であるか否かを判定する。
整数ｒ２が素数でないと判定した場合、素因数判定部４３３は、ＣＰＵ９１１などの処理装置を用いて、群位数候補生成部４２０が生成した自然数ｒが安全な群位数でなく、群位数として適切でないと判定する。【０５８８】
素因数判定部４３３は、整数ｒ１と整数ｒ２とがともに素数であると判定した場合のみ、群位数候補生成部４２０が生成した自然数ｒが安全な群位数であり、群位数として適切であると判定する。【０５８９】
次に、動作について説明する。【０５９０】
図２９は、この実施の形態における群パラメータ生成装置４００が群パラメータを生成する群パラメータ生成処理の流れの一例を示すフローチャート図である。
なお、実施の形態４で説明した群パラメータ生成処理の工程と共通する工程については、同一の符号を付す。【０５９１】
第一素因数判定工程Ｓ７０において、群位数安全性判定部４３０は、ＣＰＵ９１１などの処理装置を用いて、第二判定値算出工程Ｓ６７または第四判定値算出工程Ｓ６９で算出した整数ｒ１に基づいて、整数ｒ１が素数であるか否かを判定する。
整数ｒ１が素数でないと判定した場合、自然数生成工程Ｓ６１に戻り、異なる自然数ｒを生成する。
整数ｒ１が素数であると判定した場合、第二素因数判定工程Ｓ７１へ進む。【０５９２】
第二素因数判定工程Ｓ７１において、群位数安全性判定部４３０は、ＣＰＵ９１１などの処理装置を用いて、第一判定値算出工程Ｓ６６または第二判定値算出工程Ｓ６８で算出した整数ｒ２に基づいて、整数ｒ２が素数であるか否かを判定する。
整数ｒ２が素数でないと判定した場合、自然数生成工程Ｓ６１に戻り、異なる自然数ｒを生成する。
整数ｒ２が素数であると判定した場合、群パラメータ生成工程Ｓ８５へ進む。【０５９３】
実施の形態４では、整数ｒ１及びｒ２が、ある程度の大きさまでの素因数を持たなければ安全であるとみなしたが、この実施の形態では、整数ｒ１及びｒ２が素数であるか否かを判定することにより、自然数ｒが安全な群位数であるか否かを判定するので、より安全性が高くなる。【０５９４】
この実施の形態におけるＩＤベース暗号通信システム８００（暗号通信システム）は、以下の点を特徴とする。
群位数候補生成部４２０は、ＣＰＵ９１１などの処理装置を用いて、所定の整数ｋの倍数に１を加えた素数ｒを群位数の候補として生成することを特徴とする。
群位数安全性判定部４３０は、剰余算出部４３１と、判定値算出部４３２と、素因数判定部４３３とを有することを特徴とする。
剰余算出部４３１は、ＣＰＵ９１１などの処理装置を用いて、群位数候補生成部４２０が生成した素数ｒに基づいて、素数ｒを４で割った余りを算出することを特徴とする。
判定値算出部４３２は、剰余算出部４３１が算出した余りが１である場合に、ＣＰＵ９１１などの処理装置を用いて、上記所定の整数ｋと、群位数候補生成部４２０が生成した素数ｒに基づいて、素数ｒと１との差（ｒ−１）を、整数ｋと４との最小公倍数ＬＣＭ（ｋ，４）で割った商である整数ｒ１＝（ｒ−１）／ＬＣＭ（ｋ，４）を算出し、ＣＰＵ９１１などの処理装置を用いて、群位数候補生成部４２０が生成した素数ｒに基づいて、素数ｒと１との和（ｒ＋１）を２で割った商である整数ｒ２＝（ｒ＋１）／２を算出し、剰余算出部４３１が算出した余りが３である場合に、ＣＰＵ９１１などの処理装置を用いて、上記所定の整数ｋと、群位数候補生成部４２０が生成した素数ｒに基づいて、素数ｒと１との差（ｒ−１）を、整数ｋと２との最小公倍数ＬＣＭ（ｋ，２）で割った商である整数ｒ１＝（ｒ−１）／ＬＣＭ（ｋ，２）を算出し、ＣＰＵ９１１などの処理装置を用いて、群位数候補生成部４２０が生成した素数ｒに基づいて、素数ｒと１との和（ｒ＋１）を４で割った商である整数ｒ２＝（ｒ＋１）／４を算出することを特徴とする。
素因数判定部４３３は、ＣＰＵ９１１などの処理装置を用いて、判定値算出部４３２が算出した整数ｒ１に基づいて、整数ｒ１が素数であるか否かを判定し、ＣＰＵ９１１などの処理装置を用いて、判定値算出部４３２が算出した整数ｒ２に基づいて、整数ｒ２が素数であるか否かを判定し、整数ｒ１が素数でないと判定した場合、及び、整数ｒ２が素数でないと判定した場合に、群位数候補生成部４２０が生成した素数ｒが安全な群位数でないと判定することを特徴とする。【０５９５】
この実施の形態におけるＩＤベース暗号通信システム８００によれば、攻撃法の判明している群位数を確実に避けることができるので、安全な群位数を有する乗法群に基づいて、ＩＤベース暗号通信システム８００における暗号処理に使用する群パラメータを生成でき、ＩＤベース暗号通信システム８００における暗号通信の安全を確保できるという効果を奏する。【０５９６】
この実施の形態における群パラメータ生成装置４００は、以下の点を特徴とする。
群位数候補生成部４２０は、ＣＰＵ９１１などの処理装置を用いて、所定の整数ｋの倍数に１を加えた素数ｒを群位数の候補として生成することを特徴とする。
群位数安全性判定部４３０は、剰余算出部４３１と、判定値算出部４３２と、素因数判定部４３３とを有することを特徴とする。
剰余算出部４３１は、ＣＰＵ９１１などの処理装置を用いて、群位数候補生成部４２０が生成した素数ｒに基づいて、素数ｒを４で割った余りを算出することを特徴とする。
判定値算出部４３２は、剰余算出部４３１が算出した余りが１である場合に、ＣＰＵ９１１などの処理装置を用いて、上記所定の整数ｋと、群位数候補生成部４２０が生成した素数ｒに基づいて、素数ｒと１との差（ｒ−１）を、整数ｋと４との最小公倍数ＬＣＭ（ｋ，４）で割った商である整数ｒ１＝（ｒ−１）／ＬＣＭ（ｋ，４）を算出し、ＣＰＵ９１１などの処理装置を用いて、群位数候補生成部４２０が生成した素数ｒに基づいて、素数ｒと１との和（ｒ＋１）を２で割った商である整数ｒ２＝（ｒ＋１）／２を算出し、剰余算出部４３１が算出した余りが３である場合に、ＣＰＵ９１１などの処理装置を用いて、上記所定の整数ｋと、群位数候補生成部４２０が生成した素数ｒに基づいて、素数ｒと１との差（ｒ−１）を、整数ｋと２との最小公倍数ＬＣＭ（ｋ，２）で割った商である整数ｒ１＝（ｒ−１）／ＬＣＭ（ｋ，２）を算出し、ＣＰＵ９１１などの処理装置を用いて、群位数候補生成部４２０が生成した素数ｒに基づいて、素数ｒと１との和（ｒ＋１）を４で割った商である整数ｒ２＝（ｒ＋１）／４を算出することを特徴とする。
素因数判定部４３３は、ＣＰＵ９１１などの処理装置を用いて、判定値算出部４３２が算出した整数ｒ１に基づいて、整数ｒ１が素数であるか否かを判定し、ＣＰＵ９１１などの処理装置を用いて、判定値算出部４３２が算出した整数ｒ２に基づいて、整数ｒ２が素数であるか否かを判定し、整数ｒ１が素数でないと判定した場合、及び、整数ｒ２が素数でないと判定した場合に、群位数候補生成部４２０が生成した素数ｒが安全な群位数でないと判定することを特徴とする。【０５９７】
この実施の形態における群パラメータ生成装置４００によれば、攻撃法の判明している群位数を確実に避けることができるので、安全な群位数を有する乗法群に基づいて、ＩＤベース暗号通信システム８００における暗号処理に使用する群パラメータを生成でき、ＩＤベース暗号通信システム８００における暗号通信の安全を確保できるという効果を奏する。
【図面の簡単な説明】
【０５９８】
【図１】実施の形態１におけるＩＤベース暗号通信システム８００の全体構成の一例を示すシステム構成図。
【図２】実施の形態１における暗号パラメータ生成装置１００及び暗号文生成装置２００及び暗号文受信装置３０１〜３０３の外観の一例を示す図。
【図３】実施の形態１における暗号パラメータ生成装置１００及び暗号文生成装置２００及び暗号文受信装置３０１〜３０３のハードウェア資源の一例を示す図。
【図４】実施の形態１における暗号パラメータ生成装置１００の機能ブロックの構成の一例を示すブロック構成図。
【図５】実施の形態１における暗号文生成装置２００の機能ブロックの構成の一例を示すブロック構成図。
【図６】実施の形態１における暗号文受信装置３０１の機能ブロックの構成の一例を示すブロック構成図。
【図７】実施の形態１における暗号パラメータ生成装置１００が公開暗号パラメータを設定するパラメータ設定処理の流れの一例を示すフローチャート図。
【図８】実施の形態１における暗号パラメータ生成装置１００が秘密鍵を設定する秘密鍵設定処理の流れの一例を示すフローチャート図。
【図９】実施の形態１における暗号文生成装置２００が暗号文を生成する暗号文生成処理の流れの一例を示すフローチャート図。
【図１０】実施の形態１における暗号文受信装置３０１〜３０３が暗号文を受信する暗号文受信処理の流れの一例を示すフローチャート図。
【図１１】実施の形態２における対比例である暗号文生成装置２００のなかでやり取りされる情報の流れの一例を示す図。
【図１２】実施の形態２における対比例である暗号パラメータ生成装置１００が公開暗号パラメータを設定するパラメータ設定処理の流れの一例を示すフローチャート図。
【図１３】実施の形態２における対比例である暗号パラメータ生成装置１００が秘密鍵を設定する秘密鍵設定処理の流れの一例を示すフローチャート図。
【図１４】実施の形態２における対比例である暗号文生成装置２００が暗号文を生成する暗号文生成処理の流れの一例を示すフローチャート図。
【図１５】実施の形態２における対比例である暗号文受信装置３０１〜３０３が暗号文を受信する暗号文受信処理の流れの一例を示すフローチャート図。
【図１６】実施の形態２における暗号文生成装置２００のなかでやり取りされる情報の流れの一例を示す図。
【図１７】実施の形態２における暗号文生成装置２００が暗号文を生成する暗号文生成処理の流れの一例を示すフローチャート図。
【図１８】実施の形態２における暗号文受信装置３０１〜３０３が暗号文を受信する暗号文受信処理の流れの一例を示すフローチャート図。
【図１９】実施の形態３における対比例である暗号パラメータ生成装置１００が公開暗号パラメータを設定するパラメータ設定処理の流れの一例を示すフローチャート図。
【図２０】実施の形態３における対比例である暗号パラメータ生成装置１００が秘密鍵を設定する秘密鍵設定処理の流れの一例を示すフローチャート図。
【図２１】実施の形態３における対比例である暗号文生成装置２００が暗号文を生成する暗号文生成処理の流れの一例を示すフローチャート図。
【図２２】実施の形態３における対比例である暗号文受信装置３０１〜３０３が暗号文を受信する暗号文受信処理の流れの一例を示すフローチャート図。
【図２３】実施の形態３における暗号文生成装置２００が暗号文を生成する暗号文生成処理の流れの一例を示すフローチャート図。
【図２４】実施の形態３における暗号文受信装置３０１〜３０３が暗号文を受信する暗号文受信処理の流れの一例を示すフローチャート図。
【図２５】実施の形態４におけるＩＤベース暗号通信システム８００の全体構成の一例を示すシステム構成図。
【図２６】実施の形態４における群パラメータ生成装置４００の機能ブロックの構成の一例を示すブロック構成図。
【図２７】実施の形態４における群パラメータ生成装置４００が群パラメータを生成する群パラメータ生成処理の流れの一例を示すフローチャート図。
【図２８】実施の形態５における群パラメータ生成装置４００が群パラメータを生成する群パラメータ生成処理の流れの一例を示すフローチャート図。
【図２９】実施の形態５における群パラメータ生成装置４００が群パラメータを生成する群パラメータ生成処理の流れの一例を示すフローチャート図。
【符号の説明】
【０５９９】
１００  暗号パラメータ生成装置、１１０  パラメータ設定部、１１１  群パラメータ記憶部、１１２  秘密情報生成部、１１３  公開パラメータ生成部、１１４  公開パラメータ公開部、１２１  秘密情報記憶部、１２２  パラメータ記憶部、１３０  秘密鍵設定部、１３１  識別情報入力部、１３２  秘密鍵生成部、１３３  秘密鍵通知部、２００  暗号文生成装置、２１０  暗号パラメータ記憶部、２２１  セッション鍵生成部、２２２  乱数生成部、２３１  平文入力部、２３２  受信者識別入力部、２４０  暗号文主文生成部、２４１  第一暗号文生成部、２４２  第二暗号文生成部、２４３  第三暗号文生成部、２４４  ハッシュ値算出部、２４５  暗号文検証文生成部、２４６  暗号文結合部、２５１  データ入力部、２５２  データ暗号化部、２６１  暗号文通知部、２９０  鍵暗号化部、３０１〜３０３  暗号文受信装置、３１０  公開パラメータ記憶部、３２３  秘密鍵記憶部、３４１  暗号文復号部、３４４  検証ハッシュ値算出部、３４５  暗号文検証部、３４６  暗号文分解部、３５１  暗号文受信部、３５２  データ復号部、３９０  鍵復号部、４００  群パラメータ生成装置、４１０  パラメータ生成条件記憶部、４２０  群位数候補生成部、４３０  群位数安全性判定部、４３１  剰余算出部、４３２  判定値算出部、４３３  素因数判定部、４４０  パラメータ生成部、５００  公開された情報、５１０  公開暗号パラメータ、５３１〜５３３  受信者識別情報、６００  秘密裏に通知される情報、６０１〜６０３  秘密鍵、７１０  平文データ、７２０  通知データ、７２１  鍵暗号文Ｃ、７２２  暗号化データ、８００  ＩＤベース暗号通信システム、９０１  表示装置、９０２  キーボード、９０３  マウス、９０４  ＦＤＤ、９０５  ＣＤＤ、９０６  プリンタ装置、９０７  スキャナ装置、９１０  システムユニット、９１１  ＣＰＵ、９１２  バス、９１３  ＲＯＭ、９１４  ＲＡＭ、９１５  通信装置、９２０  磁気ディスク装置、９２１  ＯＳ、９２２  ウィンドウシステム、９２３  プログラム群、９２４  ファイル群、９３１  電話器、９３２  ファクシミリ機、９４０  インターネット、９４１  ゲートウェイ、９４２  ＬＡＮ。
【図１】
2008087734.tif 000003
【図２】
2008087734.tif 000004
【図３】
2008087734.tif 000005
【図４】
2008087734.tif 000006
【図５】
2008087734.tif 000007
【図６】
2008087734.tif 000008
【図７】
2008087734.tif 000009
【図８】
2008087734.tif 000010
【図９】
2008087734.tif 000011
【図１０】
2008087734.tif 000012
【図１１】
2008087734.tif 000013
【図１２】
2008087734.tif 000014
【図１３】
2008087734.tif 000015
【図１４】
2008087734.tif 000016
【図１５】
2008087734.tif 000017
【図１６】
2008087734.tif 000018
【図１７】
2008087734.tif 000019
【図１８】
2008087734.tif 000020
【図１９】
2008087734.tif 000021
【図２０】
2008087734.tif 000022
【図２１】
2008087734.tif 000023
【図２２】
2008087734.tif 000024
【図２３】
2008087734.tif 000025
【図２４】
2008087734.tif 000026
【図２５】
2008087734.tif 000027
【図２６】
2008087734.tif 000028
【図２７】
2008087734.tif 000029
【図２８】
2008087734.tif 000030
【図２９】
2008087734.tif 000031
【国際調査報告】
2008087734.tif 000032
2008087734.tif 000033
2008087734.tif 000034
2008087734.tif 000035