(57)【特許請求の範囲】
【請求項１】
認証システムであって、
保持情報が格納された証明装置と、
上記証明装置に通信可能に接続され、上記保持情報が対比情報と同一であることを検証する検証装置と、を含み、
上記検証装置は、
上記対比情報の内容に依存する内容を有し、上記対比情報の情報量に依存しない情報量を有する検証情報と、任意の情報である第１任意情報と、を記憶する第１記憶部と、
上記証明装置に認証情報を生成させるための認証情報生成因子を、上記第１記憶部に記憶された上記第１任意情報を用いて生成する認証情報生成因子生成部と、
上記認証情報生成因子生成部が生成した上記認証情報生成因子を上記証明装置に送信する第１送信部と、
上記証明装置が送信した上記認証情報を受信する第１受信部と、
上記第１受信部が受信した上記認証情報と、上記第１記憶部に記憶された上記検証情報及び上記第１任意情報との間に、所定の関係が成立するか否かを判定する判定部と、を含み、
上記証明装置は、
上記保持情報を記憶する第２記憶部と、
上記第１送信部が送信した上記認証情報生成因子を受信する第２受信部と、
上記第２受信部が受信した上記認証情報生成因子と、上記第２記憶部に記憶された上記保持情報とを用い、上記認証情報生成因子と上記保持情報との内容に依存する内容を有し、上記保持情報の情報量に依存しない情報量を有する上記認証情報を生成する認証情報生成部と、
上記認証情報生成部によって生成された上記認証情報を上記検証装置に送信する第２送信部と、を含む。
【請求項２】
請求項１に記載の認証システムであって、
上記検証情報は、
可換な半群をなす演算が定義された有限集合の元を底とし、上記対比情報を冪数として、当該半群で定義された冪乗を行った演算結果であり、
上記認証情報生成因子は、
上記有限集合の元を底とし、上記第１任意情報を冪数として、上記半群で定義された冪乗を行った演算結果であり、
上記認証情報は、
上記認証情報生成因子を底とし、上記保持情報を冪数として、上記半群で定義された冪乗を行った演算結果であり、
上記判定部は、
上記検証情報を底とし、上記第１任意情報を冪数として、上記半群で定義された冪乗を行った演算結果と、上記認証情報と、が等しいか否かを判定する。
【請求項３】
請求項２に記載の認証システムであって、
上記半群は、
上記有限集合の位数の算出が困難なものである。
【請求項４】
請求項２に記載の認証システムであって、
上記検証情報は、
定数Ｎを法とし、Ｎ未満の値ｇを底とし、上記対比情報ｓ’を冪数とした冪乗剰余演算結果Ｃ（ｓ’）であり、
上記認証情報生成因子は、
上記Ｎを法とし、上記値ｇを底とし、上記第１任意情報ｒを冪数とした冪乗剰余演算結果Ｒであり、
上記認証情報は、
上記Ｎを法とし、上記認証情報生成因子Ｒを底とし、上記保持情報ｓを冪数とした冪乗剰余演算結果Ｒ（ｓ）であり、
上記判定部は、
上記Ｎを法とし、上記検証情報Ｃ（ｓ’）を底とし、上記第１任意情報ｒを冪数とした冪乗剰余演算結果と、上記認証情報Ｒ（ｓ）と、が等しいか否かを判定する。
【請求項５】
請求項４に記載の認証システムであって、
上記定数Ｎは、
素数であることが判定可能な数を除く自然数であって、素因数分解困難な数である。
【請求項６】
請求項４に記載の認証システムであって、
上記定数Ｎは、
３つ以上の素数の積からなる合成数である。
【請求項７】
請求項５に記載の認証システムであって、
上記第１任意情報ｒは、
νを所定の自然数とした場合における、０≦ｒ≦Ｎ・2ν−１の範囲から任意に選択される値である。
【請求項８】
請求項１に記載の認証システムであって、
上記検証情報は、
上記対比情報を複数に分割した第1分割情報ごとに、それぞれの当該第1分割情報を用いて生成される情報であり、
上記認証情報生成部は、
上記第２受信部が受信した上記認証情報生成因子と、上記第２記憶部に記憶された上記保持情報を複数に分割した第２分割情報の全てと、を用いて、上記認証情報を生成する。
【請求項９】
請求項８に記載の認証システムであって、
上記検証情報は、
可換な半群をなす演算が定義された有限集合の元を底とし、上記第1分割情報を冪数として、当該半群で定義された冪乗を行った演算結果であり、
上記認証情報生成因子は、
上記有限集合の元を底とし、上記第１任意情報を冪数として、上記半群で定義された冪乗を行った演算結果であり、
上記認証情報は、
上記認証情報生成因子を底とし、上記第２分割情報の全てを用いて算出した値であって上記保持情報よりも情報量が少ないものを冪数として、上記半群で定義された冪乗を行った演算結果であり、
上記判定部は、
上記検証情報の全てを用いて算出した値を底とし、上記第１任意情報を冪数として、上記半群で定義された冪乗を行った演算結果と、上記認証情報と、が等しいか否かを判定する。
【請求項１０】
請求項９に記載の認証システムであって、
上記認証情報は、
各上記第２分割情報の上記保持情報内のビット位置に対応する事前準備困難な情報と、上記第２分割情報の全てとを用いて算出した値であって上記保持情報よりも情報量が少ないものを冪数とし、上記認証情報生成因子を底として、上記半群で定義された冪乗を行った演算結果である。
【請求項１１】
請求項９に記載の認証システムであって、
上記半群は、
上記有限集合の位数の算出が困難な半群である。
【請求項１２】
請求項９に記載の認証システムであって、
上記検証情報は、
定数Ｎを法とし、Ｎ未満の値ｇを底とし、上記第1分割情報ｓｉ’を冪数とした冪乗剰余演算結果Ｃｉ（ｓ’）であり、
上記認証情報生成因子は、
上記Ｎを法とし、上記値ｇを底とし、上記第１任意情報ｒを冪数とした冪乗剰余演算結果Ｒであり、
上記認証情報は、
上記第２分割情報ｓｉに対応するｉ及び上記検証装置から送信される何らかの情報に値が依存する情報Ｈと、上記第２分割情報ｓｉと、の積を全てのｉについて合計した値を冪数とし、上記認証情報生成因子Ｒを底とし、上記Ｎを法とした冪乗剰余演算結果Ｒ（ｓ）であり、
上記判定部は、
全てのｉに対応する各上記検証情報Ｃｉ（ｓ’）をそれらにそれぞれ対応する上記情報Ｈによって冪乗した各値の積を底とし、上記第１任意情報ｒを冪数とし、上記Ｎを法とした冪乗剰余演算結果と、上記認証情報Ｒ（ｓ）と、が等しいか否かを判定する。
【請求項１３】
請求項１２に記載の認証システムであって、
上記定数Ｎは、素数であることが判定可能な数を除く自然数であって、素因数分解困難な数である。
【請求項１４】
請求項１２に記載の認証システムであって、
上記情報Ｈは、
上記第２分割情報ｓｉに対応するｉと上記検証装置から送信される何らかの情報とに値が依存する一方向性関数値である。
【請求項１５】
請求項１に記載の認証システムであって、
上記検証装置は、
上記証明装置の上記第２受信部が受信した上記認証情報生成因子が、上記第1記憶部に記憶された上記第１任意情報を用いて生成されたことを、上記証明装置との対話証明によって、上記証明装置に証明する対話証明部を含み、
上記証明装置は、
上記第２受信部が受信した上記認証情報生成因子が、上記検証装置の上記第1記憶部に記憶された上記第１任意情報を用いて生成されたことを、上記検証装置との対話証明によって検証する対話検証部を含み、
上記証明装置の第２送信部は、
上記第２受信部が受信した上記認証情報生成因子が、上記検証装置の上記第1記憶部に記憶された上記第１任意情報を用いて生成されたことを、上記対話検証部が確認できた場合に、上記認証情報生成部によって生成された上記認証情報を、その検証装置に送信する。
【請求項１６】
請求項１に記載の認証システムであって、
上記証明装置は、
可換な半群をなす演算が定義された有限集合の元ｇを底とし、任意の情報である第２任意情報ａを冪数として、上記半群で定義された冪乗を行った演算値Ａを生成するＡ生成部を含み、
上記証明装置の第２送信部は、
上記演算値Ａを上記検証装置に送信し、
上記検証装置の第１受信部は、
上記証明装置が送信した上記演算値Ａを受信し、
上記検証装置の上記認証情報生成因子生成部は、
上記有限集合の元ｇを底とし、上記第１任意情報ｒを冪数として、上記半群で定義された冪乗を行って上記認証情報生成因子Ｒを生成し、
上記検証装置は、
上記演算値Ａを底とし、上記第１任意情報ｒを冪数として、上記半群で定義された冪乗を行って演算値Ｂを生成するＢ生成部を含み、
上記検証装置の第1送信部は、
上記認証情報生成因子Ｒと上記演算値Ｂとを上記証明装置に送信し、
上記証明装置の上記第２受信部は、
上記検証装置から送信された上記認証情報生成因子Ｒと上記演算値Ｂとを受信し、
上記証明装置は、
上記第２受信部が受信した上記認証情報生成因子Ｒを底とし、上記第２任意情報ａを冪数として、上記半群で定義された冪乗を行った演算結果と、上記演算値Ｂと、が等しいか否かを判定する第１判定部を含み、
上記証明装置の第２送信部は、
上記第２受信部が受信した上記認証情報生成因子Ｒを底とし、上記第２任意情報ａを冪数として、上記半群で定義された冪乗を行った演算結果と、上記演算値Ｂと、が等しいことを、上記第１判定部が確認できた場合に、上記認証情報生成部によって生成された上記認証情報を、上記検証装置に送信する。
【請求項１７】
請求項１６に記載の認証システムであって、
上記証明装置の第２送信部は、
上記第２受信部が受信した上記認証情報生成因子Ｒを底とし、上記第２任意情報ａを冪数として、上記半群で定義された冪乗を行った演算結果と、上記演算値Ｂと、が等しいことを、上記第１判定部が確認できた場合に、さらに、上記第２任意情報ａを、上記検証装置に送信し、
上記検証装置の第１受信部は、
上記証明装置から送信された上記第２任意情報ａを受信し、
上記検証装置は、
上記有限集合の元ｇを底とし、上記第２任意情報ａを冪数として、上記半群で定義された冪乗を行った演算結果と、上記演算値Ａと、が等しいか否かを判定する第２判定部を含む。
【請求項１８】
請求項１６に記載の認証システムであって、
上記半群は、
上記有限集合の位数の算出が困難な半群である。
【請求項１９】
請求項１６に記載の認証システムであって、
上記演算値Ａは、
定数Ｎを法とし、Ｎ未満の値ｇを底とし、任意の情報である第２任意情報ａを冪数とした冪乗剰余演算結果であり、
上記認証情報生成因子Ｒは、
上記Ｎを法とし、上記値ｇを底とし、上記第１任意情報ｒを冪数とした冪乗剰余演算結果であり、
上記演算値Ｂは、
上記Ｎを法とし、上記演算値Ａを底とし、上記第１任意情報ｒを冪数とした冪乗剰余演算結果であり、
上記第２受信部が受信した上記認証情報生成因子Ｒを底とし、上記第２任意情報ａを冪数として、上記半群で定義された冪乗を行った演算結果は、
上記Ｎを法とし、上記認証情報生成因子Ｒを底とし、上記第２任意情報ａを冪数とした冪乗剰余演算結果である。
【請求項２０】
請求項１９に記載の認証システムであって、
上記有限集合の元ｇを底とし、上記第２任意情報ａを冪数として、上記半群で定義された冪乗を行った演算結果は、
上記Ｎを法とし、上記有限集合の元ｇを底とし、上記第２任意情報ａを冪数とした冪乗剰余演算結果である。
【請求項２１】
請求項１９に記載の認証システムであって、
上記定数Ｎは、
素数であることが判定可能な数を除く自然数であって、素因数分解困難な数である。
【請求項２２】
請求項１９に記載の認証システムであって、
上記第２任意情報ａは、
νを所定の自然数とした場合における、０≦ａ≦Ｎ・2ν−１の範囲から任意に選択される値である。
【請求項２３】
格納している保持情報が対比情報と同一であることを検証装置に証明する証明装置であって、
上記保持情報を記憶する記憶部と、
上記検証装置が送信した認証情報生成因子を受信する受信部と、
上記受信部が受信した上記認証情報生成因子と、上記記憶部に記憶された上記保持情報と、を用い、上記認証情報生成因子及び上記保持情報の内容に依存する内容を有し、上記保持情報の情報量に依存しない情報量を有する上記認証情報を生成する認証情報生成部と、
上記認証情報生成部によって生成された上記認証情報を上記検証装置に送信する送信部と、を含む。
【請求項２４】
証明装置に格納された保持情報が対比情報と同一であることを検証する検証装置であって、
上記対比情報の内容に依存する内容を有し、上記対比情報の情報量に依存しない情報量を有する検証情報と、任意の情報である任意情報と、を記憶する記憶部と、
上記証明装置に認証情報を生成させるための認証情報生成因子を、上記記憶部に記憶された上記任意情報を用いて生成する認証情報生成因子生成部と、
上記認証情報生成因子生成部が生成した上記認証情報生成因子を上記証明装置に送信する送信部と、
上記証明装置が送信した上記認証情報を受信する受信部と、
上記受信部が受信した上記認証情報と、上記記憶部に記憶された上記検証情報及び上記任意情報との間に、所定の関係が成立するか否かを判定する判定部と、を含む。
【請求項２５】
証明装置の記憶部に格納された保持情報が対比情報と同一であることを検証装置が検証する認証方法であって、
上記対比情報の内容に依存する内容を有し、上記対比情報の情報量に依存しない情報量を有する検証情報を、上記検証装置の記憶部に記憶する過程と、
任意の情報である任意情報を、上記検証装置の記憶部に記憶する過程と、
上記検証装置の認証情報生成因子生成部が、上記証明装置に認証情報を生成させるための認証情報生成因子を、上記検証装置の記憶部に記憶された上記任意情報を用いて生成する過程と、
上記検証装置の送信部が、上記認証情報生成因子を上記証明装置に送信する過程と、
上記証明装置の受信部が、上記認証情報生成因子を受信する過程と、
上記証明装置の認証情報生成部が、上記認証情報生成因子と、上記証明装置の記憶部に記憶された上記保持情報とを用い、上記認証情報生成因子と上記保持情報との内容に依存する内容を有し、上記保持情報の情報量に依存しない情報量を有する上記認証情報を生成する過程と、
上記証明装置の送信部が、上記認証情報を上記検証装置に送信する過程と、
上記検証装置の受信部が、上記認証情報を受信する過程と、
上記検証装置の判定部が、上記認証情報と、上記検証装置の記憶部に記憶された上記検証情報及び上記任意情報との間に、所定の関係が成立するか否かを判定する過程と、を含む。
【請求項２６】
請求項２５に記載の認証方法であって、
上記検証情報は、
上記対比情報を複数に分割した第1分割情報ごとに、それぞれの当該第1分割情報を用いて生成される情報であり、
上記認証情報は、
上記証明装置の受信部が受信した上記認証情報生成因子と、上記証明装置の記憶部に記憶された上記保持情報を複数に分割した第２分割情報の全てと、を用いて生成される。
【請求項２７】
請求項２５に記載の認証方法であって、
上記任意情報を上記検証装置の記憶部に記憶する過程から、上記認証情報を上記検証装置に送信する過程までの間に行われる、
(a)上記証明装置の受信部が受信した上記認証情報生成因子が上記検証装置の記憶部に記憶された上記任意情報を用いて生成されたことを、上記検証装置の対話証明部が、上記証明装置との対話証明によって上記証明装置に証明する過程と、
(b)上記証明装置の受信部が受信した上記認証情報生成因子が、上記検証装置の記憶部に記憶された上記任意情報を用いて生成されたことを、上記証明装置の対話検証部が、上記検証装置との対話証明によって検証する過程と、を含み、
上記証明装置の受信部が受信した上記認証情報生成因子が、上記検証装置の記憶部に記憶された上記任意情報を用いて生成されたことを、上記証明装置の対話検証部が確認できた場合に行われる、
(c)上記証明装置の送信部が、上記認証情報生成部によって生成された上記認証情報を、上記検証装置に送信する過程、を含む。
【請求項２８】
少なくとも、
保持情報を記憶部に記憶させる過程と、
検証装置の送信部から送信された認証情報生成因子を受信部に受信させる過程と、
上記認証情報生成因子及び上記保持情報の内容に依存する内容を有し、上記保持情報の情報量に依存しない情報量を有する上記認証情報を生成する過程と、
送信部によって、上記認証情報を上記検証装置に送信させる過程と、
をプロセッサに実行させるための証明装置用プログラム。
【請求項２９】
請求項２８記載の証明装置用プログラムであって、
上記保持情報が複数に分割された分割情報の全てを上記記憶部に記憶させる過程を、さらに、プロセッサに実行させるためのものであり、
上記認証情報を生成する過程は、
上記受信部が受信した上記認証情報生成因子と、上記記憶部に記憶された上記分割情報の全てと、を用いて、上記認証情報を生成する過程である。
【請求項３０】
請求項２８記載の証明装置用プログラムであって、
上記受信部が受信した上記認証情報生成因子が、検証装置の記憶部に記憶された任意情報を用いて生成されたことを、上記検証装置との対話証明によって検証する過程と、
上記受信部が受信した上記認証情報生成因子が上記検証装置の上記記憶部に記憶された上記任意情報を用いて生成されたことが確認された場合に、上記認証情報を、上記送信部によって、上記検証装置に送信させる過程とを、
さらに、プロセッサに実行させるためのものである。
【請求項３１】
少なくとも、
対比情報の内容に依存する内容を有し、当該対比情報の情報量に依存しない情報量を有する検証情報と、任意の情報である任意情報と、を記憶部に記憶させる過程と、
証明装置に認証情報を生成させるための認証情報生成因子を、上記記憶部に記憶された上記任意情報を用いて生成する過程と、
送信部によって、上記認証情報生成因子を上記証明装置に送信させる過程と、
上記証明装置が送信した上記認証情報を受信部に受信させる過程と、
上記受信部が受信した上記認証情報と、上記記憶部に記憶された上記検証情報及び上記任意情報との間に、所定の関係が成立するか否かを判定する過程と、
をプロセッサに実行させるための検証装置用プログラム。
【請求項３２】
請求項３１記載の検証装置用プログラムであって、
上記検証情報は、
上記対比情報を複数に分割した分割情報ごとに、それぞれの当該分割情報を用いて生成される情報である。
【請求項３３】
請求項３１記載の検証装置用プログラムであって、
上記証明装置の受信部が受信した上記認証情報生成因子が、上記記憶部に記憶された上記任意情報を用いて生成されたことを、上記証明装置との対話証明によって、上記証明装置に証明する過程を、
さらに、プロセッサに実行させるためのものである。
【請求項３４】
請求項２８記載の証明装置用プログラムを格納したコンピュータ読み取り可能な記録媒体。
【請求項３５】
請求項３１記載の検証装置用プログラムを格納したコンピュータ読み取り可能な記録媒体。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、メッセージ認証技術に関し、詳しくは、特定または不特定の装置が、所定の情報を内部に保持していることを証明・検証することを可能とする技術に関する。
【背景技術】
【０００２】
特定または不特定の装置が、所定の情報を内部（例えばハードディスクなどの記憶部）に保持していることを認証する技術は、メッセージ認証技術と呼ばれる。この技術には、認証の過程で必要とされる通信量が、保持していることを証明したい情報の量（情報量）に依存しないという特徴がある。
従来におけるメッセージ認証技術の概要を説明する。証明装置と検証装置は予め秘密鍵ｋを共有しておく。次に証明装置はその保持する情報ｓに対して一定の長さを有するメッセージ認証子Ｍ（ｓ，ｋ）を計算し、検証装置に送付する。検証装置は情報ｓのコピーを保持していて、証明装置から送付されたメッセージ認証子Ｍ（ｓ，ｋ）の正当性を検証する。【０００３】
メッセージ認証子は、おもに共通鍵暗号やハッシュ関数に関する技術を用いて設計されている。メッセージ認証子の構成方法についての一例を記述した文献を非特許文献１に示す。
【非特許文献１】Tetsu Iwata, Kaoru Kurosawa, "OMAC: One-Key CBC MAC", LNCS 2887(2003),pp129-153,Springer-Verlag．
【発明の開示】
【発明が解決しようとする課題】
【０００４】
メッセージ認証子を用いる方式においては、認証子の正当性を検証するために、検証装置は検証対象の情報ｓのコピーを保持しておく必要がある。このため、この方式においては検証装置の記憶容量の効率に課題があった。また、この方式では、メッセージ認証に先立って、証明装置と検証装置との間で、予め秘密鍵ｋを共有しておく必要がある。そして、秘密鍵ｋが外部に漏洩した場合、この方式の安全性は保てない。よって、このような秘密鍵ｋの証明装置と検証装置への配布や、証明装置と検証装置での管理には、秘密鍵ｋが第三者へ漏洩することを防止するための煩雑な手法や構成が必要となる。つまり、メッセージ認証子を用いる方式には、利便性と安全性にも課題があった。【０００５】
本発明は、このような点に鑑みてなされたものであり、証明装置に所定の情報が保持されていることを検証装置が検証する技術において、検証装置の記憶容量を有効活用し、なおかつ、利便性と安全性を向上させることを目的とする。
【課題を解決するための手段】
【０００６】
本発明では、保持情報が格納された証明装置に通信可能に接続された検証装置が、当該保持情報と、任意の対比情報と、の同一性を検証する（なお、「対比情報」及び「保持情報」は、ビット情報である。）。
そのために、まず、検証装置は、対比情報の内容に依存する内容を有し、対比情報の情報量に依存しない情報量を有する検証情報と、任意の情報である第１任意情報と、を第１記憶部に記憶させる。また、検証装置は、証明装置に認証情報を生成させるための認証情報生成因子を、第１記憶部に記憶された第１任意情報を用いて生成し、生成した認証情報生成因子を証明装置に送信する。【０００７】
証明装置は、上記の認証情報生成因子を受信し、当該認証情報生成因子と、第２記憶部に記憶された保持情報とを用い、認証情報生成因子と保持情報との内容に依存する内容を有し、保持情報の情報量に依存しない情報量を有する認証情報を生成する。次に、証明装置は、この認証情報を検証装置に送信する。
検証装置は、証明装置が送信した認証情報を受信し、検証装置の判定部が、その認証情報と、第１記憶部に記憶された検証情報及び第１任意情報との間に、所定の関係が成立するか否かを判定する。これにより、検証装置は、証明装置に格納された保持情報が、対比情報と同一であることを検証する。【０００８】
ここで、本発明の検証装置が、検証処理を行うために自ら保持しておかなければならないのは、対比情報の情報量に依存しない情報量を有する検証情報であり、対比情報自体ではない。よって、検証対象となる証明装置に格納された保持情報の情報量が大きく、対比情報の情報量も大きくなる場合であっても、検証装置に必要な記録容量は、さほど増大しない。また、本発明では、証明装置と検証装置との間で秘密鍵を共有する必要がないため、利便性と安全性が高い。
また、本発明において好ましくは、検証情報は、可換な半群をなす演算が定義された有限集合の元を底とし、対比情報を冪数として、当該半群で定義された冪乗を行った演算結果であり、認証情報生成因子は、当該有限集合の元を底とし、第１任意情報を冪数として、半群で定義された冪乗を行った演算結果であり、認証情報は、認証情報生成因子を底とし、保持情報を冪数として、半群で定義された冪乗を行った演算結果である。そして、判定部は、検証情報を底とし、第１任意情報を冪数として、半群で定義された冪乗を行った演算結果と、認証情報と、が等しいか否かを判定する。【０００９】
この構成での検証情報は、可換な半群をなす演算が定義された有限集合の元を底とし、対比情報を冪数として、当該半群で定義された冪乗を行った演算結果である。この検証情報は、必ず、当該半群上定義された有限集合の元となる。よって、検証情報の情報量は、対応する対比情報の情報量に拘らず、当該有限集合の何れか元の情報量と同一になる。そのため、検証情報を格納するために検証装置に要求される記憶容量も抑制できる。また、この構成では、証明装置と検証装置との間で秘密鍵を共有する必要がないため、利便性と安全性が高い。【００１０】
なお、当該本発明の好ましい構成の場合でも、上記の半群を特定するための情報と有限集合の元とを、検証情報と証明装置とで共有する必要はある。しかし、これらの情報は、必ずしも秘密情報である必要はなく、これらの情報が攻撃者に漏洩しても、認証方式の安全性は確保できる。よって、これらの情報を証明装置と検証装置との間で共有することに起因する利便性や安全性の問題は発生しない。
また、より好ましくは、上記の半群として、当該半群で定義された有限集合の位数の算出が困難なものを用いる。攻撃者が上記の半群で定義された有限集合の位数を算出できた場合、この攻撃者は、算出した位数を、検証に合格する認証情報を不正に作成するための情報として利用することができるからである。すなわち、認証情報生成因子を底とし、保持情報を冪数として、半群で定義された冪乗を行った演算結果と、認証情報生成因子を底とし、当該保持情報＋任意の整数×位数を冪数として、当該半群で定義された冪乗を行った演算結果とは等しい（衝突：collision）。これは、位数を知った攻撃者は、保持情報自体を見つけなくても、保持情報＋任意の整数×位数の何れかを見つけることにより、検証装置での検証に合格する認証情報を生成できること、を知ることを意味する。この情報は、攻撃者が検証に合格する認証情報を効率的に探索するための情報となる。よって、上記位数が攻撃者に知られることにより、本発明の安全性は低下する。そのため、上記の半群は、位数の算出が困難なものであることが望ましい。【００１１】
また、本発明において、好ましくは、検証情報は、定数Ｎを法とし、Ｎ未満の値ｇ（好ましくは、２以上Ｎ未満の値ｇ）を底とし、対比情報ｓ’を冪数とした冪乗剰余演算結果Ｃ（ｓ’）であり、認証情報生成因子は、Ｎを法とし、値ｇを底とし、第１任意情報ｒを冪数とした冪乗剰余演算結果Ｒであり、認証情報は、Ｎを法とし、認証情報生成因子Ｒを底とし、保持情報ｓを冪数とした冪乗剰余演算結果Ｒ（ｓ）である。そして、判定部は、Ｎを法とし、検証情報Ｃ（ｓ’）を底とし、第１任意情報ｒを冪数とした冪乗剰余演算結果と、認証情報Ｒ（ｓ）と、が等しいか否かを判定する。【００１２】
この構成での検証情報は、定数Ｎを法とし、Ｎ未満の値ｇを底とし、対比情報ｓ’を冪数とした冪乗剰余演算結果Ｃ（ｓ’）である。その場合、検証情報は、対比情報ｓ’の情報量に拘らず、必ず、０以上Ｎ−１以下の整数となる。これは、検証情報を格納するために検証装置に要求される記憶容量を抑制できることを意味する。また、この構成でも、証明装置と検証装置との間で秘密鍵を共有する必要がないため、利便性と安全性は高い。なお、この構成の場合でも、定数Ｎと値ｇとの情報を、検証情報と証明装置とで共有する必要はある。しかし、これらの情報が攻撃者に漏洩しても認証方式の安全性は確保できる。よって、これらの情報を証明装置と検証装置との間で共有することに起因する利便性や安全性の問題は発生しない。【００１３】
ここで、より好ましくは、定数Ｎは、素数であることが判定可能な数を除く自然数であって、素因数分解困難な数である。定数Ｎが素数である場合、定数Ｎを法とした剰余環(Z/NZ)*の乗法についての位数は、Ｎ−１の計算によって容易に求めることができる。よって、素数であることが判定可能な数を定数Ｎとしないことが望ましい。また、定数Ｎが合成数（但し、Ｎ＝ｐ・ｑであり、ｐ，ｑは十分大きな素数）である場合、定数Ｎを法とした剰余環は、乗法に関して位数p・q-p-q+1の巡回群となる。よって、この定数Ｎの素因数分解が容易なのであれば、N=p・qを満たすｐ，ｑから、定数Ｎを法とした剰余環の乗法に関しての位数を求めることができる。逆に、当該位数が分かり、冪乗剰余演算結果を衝突させることができるのであれば、それらの情報を用いて当該定数Ｎの素因数分解ができることも知られている（例えば、G. Miller. Riemanann's hypothesis and tests for primality. Journal of Computer Systems Science, Vol. 13, pages 300-317,1976.など参照）。すなわち、定数Ｎが合成数である場合、上記位数を求めることは、当該定数Ｎの素因数分解を行う以上に困難である（Ｎが２つの素数の積からなる合成数である場合、これらの困難性は同等）。【００１４】
よって、素数であることが判定可能な数を除く自然数であって、素因数分解困難な数をＮとすることは望ましい。なお、「素数であることが判定可能な数」とは、本願出願時に公然知られた素数判定法を用いることによって「素数であること」が判定可能な数、及び、本願出願時に「素数であること」が公然知られた数を意味する。
また、本発明において定数Ｎが、３つ以上の素数の積からなる合成数であってもよい。この場合、たとえ攻撃者が定数Ｎを素因数分解できたとしても、この攻撃者は、当該定数Ｎを法とした剰余環の乗法に関しての位数を容易に算出できないからである。なお、演算効率の面からは、素数であることが判定可能な数を除く自然数であって、素因数分解困難な数をＮ（但し、Ｎが合成数の場合、Ｎ＝ｐ・ｑであり、ｐ，ｑは十分大きな素数）とすることが望ましい。【００１５】
また、本発明において好ましくは、上記の第１任意情報ｒは、νを所定の自然数とした場合における、０≦ｒ≦Ｎ・2ν−１の範囲から任意に選択される値である。このような範囲から第１任意情報ｒが任意に選択される場合、Ｎを法とし、値ｇを底とし、第１任意情報ｒを冪数とした冪乗剰余演算結果が、Ｎを法とした剰余環の乗法についての巡回群の元から任意に選択した値〔∈(Z/NZ)*〕と識別不能な分布を持つことが証明できる。これは、Ｎを法とし、値ｇを底とし、第１任意情報ｒを冪数とした冪乗剰余演算結果から第１任意情報ｒを求める困難性と、Ｎを法とした剰余環の乗法についての巡回群の元から任意に選択した値の離散対数問題を解く困難性と、が同等であることを示している。すなわち、第１任意情報ｒが０≦ｒ≦Ｎ・2ν−１の範囲から任意に選択される値である限り、上記冪乗剰余演算結果から第１任意情報ｒを特定することは十分困難である。そして、これよりも上限を広げた範囲から第１任意情報ｒを選択する構成としても、安全性は向上せず、冪乗演算の演算コストが上昇するだけである。【００１６】
また、本発明において、好ましくは、検証情報は、対比情報を複数に分割した第1分割情報ごとに、それぞれの当該第1分割情報を用いて生成された情報であり、認証情報は、認証情報生成因子と、証明装置に記憶された保持情報を複数に分割した第２分割情報の全てと、を用いて生成された情報である。
この場合、認証情報は、証明装置に記憶された保持情報を複数に分割した第２分割情報を全て用いて生成される。よって、保持情報そのものを用いて認証情報を生成する場合に比べ、多様な演算方法を採ることが可能となる。そのため、採用する演算方法によっては、認証情報の生成を高速で行うことができる。【００１７】
ここで好ましくは、検証情報は、可換な半群をなす演算が定義された有限集合の元を底とし、第1分割情報を冪数として、当該半群で定義された冪乗を行った演算結果であり、認証情報生成因子は、有限集合の元を底とし、第１任意情報を冪数として、半群で定義された冪乗を行った演算結果であり、認証情報は、認証情報生成因子を底とし、第２分割情報の全てを用いて算出した値であって保持情報よりも情報量が少ないものを冪数として、半群で定義された冪乗を行った演算結果である。そして、判定部は、検証情報の全てを用いて算出した値を底とし、第１任意情報を冪数として、半群で定義された冪乗を行った演算結果と、認証情報と、が等しいか否かを判定する。【００１８】
この認証情報は、認証情報生成因子を底とし、第２分割情報の全てを用いて算出した値であって保持情報よりも情報量が少ないものを冪数として、半群で定義された冪乗を行った演算結果である。冪乗演算の演算コストは、冪数の値に大きくなるにつれて急激に大きくなるため、冪数の値を小さくすることは演算コストの低減に大きく貢献する。第２分割情報の全てを用いて算出した値であって保持情報よりも情報量が少ないものを冪数とすることにより、認証情報を算出するための冪乗演算のコストを大幅に低減できる。
また、本発明において好ましくは、認証情報は、各上記第２分割情報の保持情報内のビット位置に対応する事前準備困難な情報と、第２分割情報の全てとを用いて算出した値であって保持情報よりも情報量が少ないものを冪数とし、認証情報生成因子を底として、半群で定義された冪乗を行った演算結果である。【００１９】
各上記第２分割情報の保持情報内のビット位置に対応する事前準備困難な情報と、第２分割情報の全てとを用いて算出した値を冪数として認証情報を生成することにより、保持情報を保持しておらず、各第２分割情報が保持情報内のどのビット位置の情報であるかを知らないが各分割情報のみを知っている攻撃者が、検証装置での検証に合格する認証情報を偽造する不正を防止できる。
また、本発明において、好ましくは、検証情報は、定数Ｎを法とし、Ｎ未満の値ｇを底とし、第1分割情報ｓｉ’を冪数とした冪乗剰余演算結果Ｃｉ（ｓ’）であり、認証情報生成因子は、Ｎを法とし、値ｇを底とし、第１任意情報ｒを冪数とした冪乗剰余演算結果Ｒであり、認証情報は、第２分割情報ｓｉに対応するｉ及び検証装置から送信される何らかの情報に値が依存する情報Ｈと、第２分割情報ｓｉと、の積を全てのｉについて合計した値を冪数とし、認証情報生成因子Ｒを底とし、Ｎを法とした冪乗剰余演算結果Ｒ（ｓ）である。そして、判定部は、全てのｉに対応する各検証情報Ｃｉ（ｓ’）をそれらにそれぞれ対応する情報Ｈによって冪乗した各値の積を底とし、第１任意情報ｒを冪数とし、Ｎを法とした冪乗剰余演算結果と、認証情報Ｒ（ｓ）と、が等しいか否かを判定する。なお、ｉは、第1分割情報ｓｉ’の対比情報内におけるビット位置、及び、第２分割情報ｓｉの保持情報内におけるビット位置を示すインデックスである。【００２０】
この認証情報は、第２分割情報ｓｉに対応するｉ及び検証装置から送信される何らかの情報に値が依存する情報Ｈと、第２分割情報ｓｉと、の積を全てのｉについて合計した値を冪数とし、認証情報生成因子Ｒを底とし、Ｎを法とした冪乗剰余演算結果Ｒ（ｓ）である。この場合、保持情報を保持しておらず、各第２分割情報が保持情報内のどの位置の情報であるかを知らないが各分割情報のみを知っている攻撃者が、検証装置での検証に合格する認証情報を偽造する不正を防止できる。
ここで、より好ましくは、情報Ｈは、第２分割情報ｓｉに対応するｉと検証装置から送信される何らかの情報とに値が依存する一方向性関数値である。【００２１】
この場合、複数種類の「検証装置から送信される何らかの情報」及び「ｉ」の組に対応する各情報Ｈが同一の値となってしまうこと（衝突：collision）を防止できる。その結果、誤った「検証装置から送信される何らかの情報」及び「ｉ」の組から、検証装置での検証に合格する認証情報が生成されることを防止でき、検証の信頼性と安全性が向上する。
さらに、本発明では、認証情報生成因子が、検証装置に記憶された第１任意情報を用いて正当に生成されたことを、検証装置が証明装置に、対話証明によって証明してもよい。この場合、検証装置は、証明装置が受信した認証情報生成因子が検証装置に記憶された第１任意情報を用いて生成されたことを、証明装置との対話証明によって証明装置に証明し、証明装置は、認証情報生成因子が、検証装置に記憶された第１任意情報を用いて生成されたことを、検証装置との対話証明によって検証する。そして、証明装置は、認証情報生成因子が、検証装置に記憶された第１任意情報を用いて生成されたことを確認できた場合に、認証情報を検証装置に送信する。【００２２】
このような構成により、攻撃者の装置が当該対話証明に介在しない限り、正規の証明装置と検証装置との間に介在した攻撃者の装置が、正規の検証装置に対して証明装置に成り済まし、正規の証明装置に対して検証装置に成り済まし、保持情報を保持していると検証装置を誤認させる不正を抑制できる。すなわち、このような構成を採らない場合、正規の証明装置と検証装置との間に介在した攻撃者の装置が、証明装置に成り済まして正規の検証装置から認証情報生成因子を受け取り、さらに、検証装置に成り済まして正規の証明装置に当該認証情報生成因子を送信し、正規の証明装置から送信された認証情報を受け取ることができる。そして、この攻撃者の装置は、認証情報を正規の検証装置に送信することにより、この攻撃者の装置が保持情報を保持した装置であると、検証装置を誤認させることができる。これに対し、証明装置が、認証情報生成因子が検証装置に記憶された第１任意情報を用いて生成されたことを確認できた場合にのみ、認証情報を検証装置に送信する構成を採った場合、攻撃者の装置が当該対話証明に介在しない限り、攻撃者の装置が、検証装置に成り済まして正規の認証装置から認証情報を受け取ることが困難となる。その結果、正規の証明装置と検証装置との間に介在した攻撃者の装置が、保持情報を保持していると検証装置を誤認させる不正を防止できる。【００２３】
また、このような構成では、正規の検証装置が不正な第１任意情報を生成し、何らかの不正行為（例えば、偽りの検証処理のログを生成することなど）をも防止できる。
さらにまた、この構成では、対比情報ではなく、第１任意情報を対話証明の対象としているので、検証対象の保持情報のデータ量が大きく、対比情報のデータ量が大きな場合であっても、対話証明に必要な演算コストや通信データ量を低く抑えることができる。
また、この対話証明を含む処理は、好ましくは、以下のように行う。
まず、証明装置が、可換な半群をなす演算が定義された有限集合の元ｇを底とし、任意の情報である第２任意情報ａを冪数として、半群で定義された冪乗を行った演算値Ａを生成し、演算値Ａを検証装置に送信する。検証装置は、この演算値Ａを受信し、有限集合の元ｇを底とし、第１任意情報ｒを冪数として、半群で定義された冪乗を行って認証情報生成因子Ｒを生成する。さらに、検証装置は、演算値Ａを底とし、第１任意情報ｒを冪数として、半群で定義された冪乗を行って演算値Ｂを生成し、認証情報生成因子Ｒと演算値Ｂとを証明装置に送信する。証明装置は、認証情報生成因子Ｒと演算値Ｂとを受信し、第２受信部が受信した認証情報生成因子Ｒを底とし、第２任意情報ａを冪数として、半群で定義された冪乗を行った演算結果と、演算値Ｂと、が等しいか否かを判定し、これらが等しかった場合に、認証情報を、検証装置に送信する。【００２４】
このような構成により、攻撃者の装置が当該対話証明に介在しない限り、正規の証明装置と検証装置との間に介在した攻撃者の装置が、保持情報を保持していると検証装置を誤認させる不正を抑制できる。また、この構成では、第１任意情報ｒを対話証明の対象としているので、対話証明に必要な演算コストや通信データ量を低く抑えることができる。
また、このような構成では、正規の検証装置が不正な第１任意情報を生成し、偽りの検証処理のログを生成することをも防止できる。
さらにまた、この構成では、対比情報ではなく、第１任意情報を対話証明の対象としているので、検証対象の保持情報のデータ量が大きく、対比情報のデータ量が大きな場合であっても、対話証明に必要な演算コストや通信データ量を低く抑えることができる。【００２５】
このような構成において、さらに好ましくは、証明装置は、認証情報生成因子Ｒを底とし、第２任意情報ａを冪数として半群で定義された冪乗を行った演算結果と、演算値Ｂと、が等しいことを確認できた場合に、さらに、第２任意情報ａを、検証装置に送信する。検証装置は、この第２任意情報ａを受信し、有限集合の元ｇを底とし、第２任意情報ａを冪数として、半群で定義された冪乗を行った演算結果と、演算値Ａと、が等しいか否かを判定する。
このような処理を追加することにより、保持情報ｓは知らないが、Ａを決定でき、上記半群においてＣ（ｓ）＝ｇＬＡｍとなるＬ，ｍを知っている攻撃者による不正を防止できる。すなわち、このような処理が実行されない場合、保持情報ｓも対比情報ｓ’も知らないが、Ａを決定でき、Ｃ（ｓ’）＝ｇＬＡｍ（上記半群で定義された演算）となるＬ，ｍを知っている攻撃者の装置は、検証装置から認証情報生成因子Ｒと演算値Ｂとを受け取り、ＲＬＢｍ（上記半群で定義された演算）を計算し、これを認証情報であると偽って検証装置に送信することが可能である。ここで、ＲＬＢｍ＝ｇｒＬＡｒｍ＝（ｇＬＡｍ）ｒ＝Ｃ（ｓ’）を満たすため、このような攻撃者の装置は、自らが保持情報ｓを保持していると検証装置を誤認させることができる。一方、このような攻撃者は、Ａ＝ｇａ（上記半群で定義された演算）となる第２任意情報ａを知らない。もし、このような攻撃者が当該第２任意情報ａを知っているならば、その攻撃者は、Ｃ（ｓ）＝ｇＬＡｍ＝ｇＬ＋ａ・ｍ＝ｇｓ’を算出できることになり、その攻撃者が保持情報ｓも対比情報ｓ’も知らないことと矛盾するからである。よって、上述のように、検証装置が受け取った第２任意情報ａを用い、Ａ＝ｇａ（上記半群で定義された演算）を満たすか否かを判定する処理を追加することによって、このような攻撃者の不正を防止できる。【００２６】
なお、このような処理の各冪乗演算は、有限集合の位数の算出が困難な半群で定義された剰余演算によって行われることが望ましい。攻撃者が上記の半群で定義された有限集合の位数を算出できた場合、この攻撃者は、算出した位数を、A=gaを満たす第２任意情報ａを探知するための情報として、利用することができるからである。
また、本発明において好ましくは、上記演算値Ａは、定数Ｎを法とし、Ｎ未満の値ｇを底とし、任意の情報である第２任意情報ａを冪数とした冪乗剰余演算結果であり、認証情報生成因子Ｒは、Ｎを法とし、値ｇを底とし、第１任意情報ｒを冪数とした冪乗剰余演算結果であり、演算値Ｂは、Ｎを法とし、演算値Ａを底とし、第１任意情報ｒを冪数とした冪乗剰余演算結果である。また、上述した、第２受信部が受信した認証情報生成因子Ｒを底とし、第２任意情報ａを冪数として、半群で定義された冪乗を行った演算結果は、Ｎを法とし、認証情報生成因子Ｒを底とし、第２任意情報ａを冪数とした冪乗剰余演算結果である。なお、定数Ｎは、素数であることが判定可能な数を除く自然数であって、素因数分解困難な数であることが望ましい。また、定数Ｎは、３つ以上の素数の積からなる合成数であってもよい。【００２７】
また、さらに好ましくは、上述した、有限集合の元ｇを底とし、第２任意情報ａを冪数として、半群で定義された冪乗を行った演算結果は、Ｎを法とし、有限集合の元ｇを底とし、第２任意情報ａを冪数とした冪乗剰余演算結果である。
また、さらに好ましくは、第２任意情報ａは、νを所定の自然数とした場合における、０≦ａ≦Ｎ・2ν−１の範囲から任意に選択される値である。このように第２任意情報ａが選択される場合、Ｎを法とし、値ｇを底とし、第２任意情報ａを冪数とした冪乗剰余演算結果が、Ｎを法とした剰余環の乗法についての巡回群から任意に選択した値〔∈(Z/NZ)*〕と識別不能な分布を持つことが証明できる。これは、Ｎを法とし、値ｇを底とし、第２任意情報ａを冪数とした冪乗剰余演算結果から、第２任意情報ａを求める困難性と、Ｎを法とした剰余環の乗法についての巡回群から任意に選択した値の離散対数問題を解く困難性と、が同等であることを示している。すなわち、第２任意情報ａが０≦ａ≦Ｎ・２ν−１の範囲から任意に選択される値である限り、上記冪乗剰余演算結果から第２任意情報ａを特定することは十分困難である。そして、これよりも上限を広げた範囲から第２任意情報ａを選択する構成としても、安全性は向上せず、冪乗演算の演算コストが上昇するだけである。
【発明の効果】
【００２８】
本発明によれば、証明装置に所定の情報が保持されていることを検証装置が検証する技術において、検証装置の記憶容量を有効活用し、なおかつ、利便性と安全性を向上させることができる。
【図面の簡単な説明】
【００２９】
【図１】図１は、第１実施形態に係る証明装置（１）のハードウェア構成を例示した構成ブロック図である。
【図２】図２は、第１実施形態に係る検証装置（２）のハードウェア構成を例示した構成ブロック図である。
【図３】図３は、第１実施形態におけるネットワーク構成例である。
【図４】図４は、第１実施形態に係る検証装置（２）の機能ブロック図（その１）である。
【図５】図５は、第１実施形態に係る証明装置（１）の機能ブロック図である。
【図６】図６は、第１実施形態に係る検証装置（２）の機能ブロック図（その２）である。
【図７】図７は、第１実施形態における処理フローを示す図である。
【図８】図８は、第２実施形態に係る第三者装置（３）のハードウェア構成を例示した構成ブロック図である。
【図９】図９は、第２実施形態におけるネットワーク構成例である。
【図１０】図１０は、第２実施形態に係る第三者装置（３）の機能ブロック図である。
【図１１】図１１は、第２実施形態に係る検証装置（２）の機能ブロック図である。
【図１２】図１２は、第２実施形態に係る証明装置（１）の機能ブロック図である。
【図１３】図１３は、第２実施形態における処理フローを示す図（その１）である。
【図１４】図１４は、第２実施形態における処理フローを示す図（その２）である。
【図１５】図１５は、第３実施形態に係る第三者装置（３）の機能ブロック図である。
【図１６】図１６は、第３実施形態に係る検証装置（２）の機能ブロック図（その１）である。
【図１７】図１７は、第３実施形態に係る証明装置（１）の機能ブロック図である。
【図１８】図１８は、第３実施形態に係る検証装置（２）の機能ブロック図（その２）である。
【図１９】図１９は、第３実施形態における処理フローを示す図（その１）である。
【図２０】図２０は、第３実施形態における処理フローを示す図（その２）である。
【図２１】図２１は、第４実施形態に係る証明装置（１）の機能ブロック図（その１）である。
【図２２】図２２は、第４実施形態に係る検証装置（２）の機能ブロック図（その１）である。
【図２３】図２３は、第４実施形態に係る証明装置（１）の機能ブロック図（その２）である。
【図２４】図２４は、第４実施形態に係る検証装置（２）の機能ブロック図（その２）である。
【図２５】図２５は、第４実施形態に係る証明装置（１）の機能ブロック図（その３）である。
【図２６】図２６は、第４実施形態における処理フローを示す図（その１）である。
【図２７】図２７は、第４実施形態における処理フローを示す図（その２）である。
【図２８】図２８は、第４実施形態における処理フローを示す図（その３）である。
【図２９】図２９は、第４実施形態における処理フローを示す図（その４）である。
【図３０】図３０は、第５実施形態に係る検証装置（２）の機能ブロック図（その１）である。
【図３１】図３１は、第５実施形態に係る証明装置（１）の機能ブロック図（その１）である。
【図３２】図３２は、第５実施形態に係る検証装置（２）の機能ブロック図（その２）である。
【図３３】図３３は、第５実施形態に係る証明装置（１）の機能ブロック図（その２）である。
【図３４】図３４は、第５実施形態に係る検証装置（２）の機能ブロック図（その３）である。
【図３５】図３５は、第５実施形態における処理フローを示す図（その１）である。
【図３６】図３６は、第５実施形態における処理フローを示す図（その２）である。
【図３７】図３７は、第５実施形態における処理フローを示す図（その３）である。
【図３８】図３８は、第６実施形態に係る検証装置（２）の機能ブロック図（その１）である。
【図３９】図３９は、第６実施形態に係る証明装置（１）の機能ブロック図（その１）である。
【図４０】図４０は、第６実施形態に係る証明装置（１）の機能ブロック図（その２）である。
【図４１】図４１は、第６実施形態に係る検証装置（２）の機能ブロック図（その２）である。
【図４２】図４２は、第６実施形態における処理フローを示す図（その１）である。
【図４３】図４３は、第６実施形態における処理フローを示す図（その２）である。
【図４４】図４４は、第６実施形態における処理フローを示す図（その３）である。
【符号の説明】
【００３０】
１      証明装置
２      検証装置
３      第三者装置
１４１  認証情報生成部
１４２  ｃ＾生成部
１４３  乱数生成部
１４５  認証判定部
１４８  Ａ生成部
１６０  第１判定部
２４１  検証情報生成部
２４２  乱数生成部
２４３  認証情報生成因子生成部
２４４  判定部
２４７  Ｗ生成部
２４８  ｚ生成部
２４９  Ｂ生成部
２５０  対話判定部
２６０  第２判定部
３４０  Ｎ生成部
３４１  ｇ生成部
３４２  検証情報生成部
【発明を実施するための最良の形態】
【００３１】
＜第１実施形態＞
発明を実施するための最良の形態を、図面を参照しつつ説明する。
［証明装置］
第１実施形態における証明装置について説明する。
図１は、第１実施形態に係わる証明装置（１）のハードウェア構成を例示した構成ブロック図である。
図１に例示するように、証明装置（１）は、キーボードやマウスなどの入力装置が接続可能な入力部（１１）、液晶ディスプレイなどの出力装置が接続可能な出力部（１２）、証明装置（１）外部に通信可能な通信装置（例えば、通信ケーブル、ＬＡＮカード、ハブ、ルータ、モデムなど）が接続可能な通信部（１３）、ＣＰＵ（Central Processing Unit）（１４）〔キャッシュメモリなどを備えていてもよい。〕、メモリであるＲＡＭ（１５）、ＲＯＭ（１６）、ハードディスクや光ディスクや半導体メモリなどである外部記憶装置（１７）並びにこれらの入力部（１１）、出力部（１２）、通信部（１３）、ＣＰＵ（１４）、ＲＡＭ（１５）、ＲＯＭ（１６）、外部記憶装置（１７）間のデータのやり取りが可能なように接続するバス（１８）を有している。また必要に応じて、証明装置（１）に、ＣＤ−ＲＯＭ（Compact Disc Read Only Memory）、ＤＶＤ（Digital Versatile Disc）などの記憶媒体を読み書きできる装置（ドライブ）などを設けるとしてもよい。【００３２】
証明装置（１）の外部記憶装置（１７）には、証明対象である所定の情報ｓ〔保持情報〕を保持していることを証明するのに必要となるプログラム〔証明装置用プログラム〕およびこのプログラムの処理において必要となるデータなどが保存されている。また、これらのプログラムの処理によって得られるデータなどは、ＲＡＭや外部記憶装置などに保存される。
より具体的には、証明装置（１）の外部記憶装置（１７）〔あるいはＲＯＭなど〕には、認証情報を生成するためのプログラムおよびこれらのプログラムの処理において必要となるデータ（情報ｓなど）などが保存されている。その他、これらのプログラムに基づく処理を制御するための制御プログラムも外部記憶装置（１７）等に保存しておく。【００３３】
本明細書において証明対象となる情報ｓは、説明の便宜上、ビット列からなるものとする。特に、証明装置（１）、後述する検証装置・第三者装置をコンピュータによって実現する場合には、いかなる情報（例えば人間が意味理解可能なテキスト形式の情報などがある。）であっても、２進数表記されるビット列として外部記憶装置に保存されることはいうまでもない。
証明装置（１）では、外部記憶装置（１７）〔あるいはＲＯＭなど〕に記憶された各プログラムとこの各プログラムの処理に必要なデータがＲＡＭ（１５）に読み込まれる。ＣＰＵ（１４）は、これらの各プログラムを実行して、各データを処理する。その結果、ＣＰＵ（１４）が所定の機能（認証情報生成部、制御部）を実現する。【００３４】
［検証装置］
第１実施形態における検証装置について説明する。
図２は、第１実施形態に係わる検証装置（２）のハードウェア構成を例示した構成ブロック図である。
図２に例示するように、検証装置（２）は、キーボードやマウスなどの入力装置が接続可能な入力部（２１）、液晶ディスプレイなどの出力装置が接続可能な出力部（２２）、検証装置（２）外部に通信可能な通信装置（例えば通信ケーブル、ＬＡＮカード、ハブ、ルータ、モデムなど）が接続可能な通信部（２３）、ＣＰＵ（Central Processing Unit）（２４）〔キャッシュメモリなどを備えていてもよい。〕、メモリであるＲＡＭ（２５）、ＲＯＭ（２６）、ハードディスクや光ディスクや半導体メモリなどである外部記憶装置（２７）並びにこれらの入力部（２１）、出力部（２２）、通信部（２３）、ＣＰＵ（２４）、ＲＡＭ（２５）、ＲＯＭ（２６）、外部記憶装置（２７）間のデータのやり取りが可能なように接続するバス（２８）を有している。また必要に応じて、検証装置（２）に、ＣＤ−ＲＯＭ、ＤＶＤなどの記憶媒体を読み書きできる装置（ドライブ）などを設けるとしてもよい。【００３５】
検証装置（２）の外部記憶装置（２７）には、証明装置（１）に情報ｓ〔保持情報〕が保持されていることを検証するのに必要となるプログラム〔検証装置用プログラム〕およびこのプログラムの処理において必要となるデータなどが保存されている。また、これらのプログラムの処理によって得られるデータなどは、ＲＡＭや外部記憶装置などに保存される。
より具体的には、検証装置（２）の外部記憶装置（２７）〔あるいはＲＯＭなど〕には、検証情報を生成するためのプログラム、認証情報生成因子を生成するためのプログラム、乱数を生成するためのプログラム、証明装置から受信した情報と検証装置に保持される情報との一致を判定するためのプログラム、およびこれらのプログラムの処理において必要となるデータなどが保存されている。その他、これらのプログラムに基づく処理を制御するための制御プログラムも外部記憶装置（２７）等に保存しておく。【００３６】
検証装置（２）では、外部記憶装置（２７）〔あるいはＲＯＭなど〕に記憶された各プログラムとこの各プログラムの処理に必要なデータが、必要に応じてＲＡＭ（２５）に読み込まれる。ＣＰＵ（２４）は、これらの各プログラムを実行して、各データを処理する。その結果、ＣＰＵ（２４）が所定の機能（検証情報生成部、認証情報生成因子生成部、乱数生成部、判定部、制御部）を実現する。【００３７】
［ネットワーク構成］
第１実施形態の認証システムのネットワーク構成について説明する。
図３は、第１実施形態の認証システムのネットワーク構成を示す図である。
図３に示すように、第１実施形態では、１つの証明装置（１）と、１つの検証装置（２）とが、ネットワーク（５）を介して相互に通信可能に接続されている。もちろん、ネットワーク（５）を介して相互に通信可能に接続される証明装置（１）および検証装置（２）はそれぞれ１つずつに限定されるものではない。複数の証明装置（１）と複数の検証装置（２）とが、ネットワーク（５）を介して相互に通信可能に接続されるとしてもよい。ただ、検証装置（２）は１つであるのが一般的である（つまり、検証装置（２）は１つで十分な場合が多い。）。なお、ネットワーク（５）の構成には特に制限はなく、インターネット、ＬＡＮ（Local Area Network）、Peer-to-Peer ネットワーク等どのようなものであってもよい。【００３８】
なお、第１実施形態に係わるネットワーク構成においては、証明装置（１）と検証装置（２）との間の通信は、通信傍受の可能性などが否定できないなど、必ずしも通信の秘密の安全性が保証されたものでなくてもよい（以下に記載の各実施形態においても同様である。）。
[認証]
本発明の認証システム・方法の第１実施形態は、基本的な実施形態を示しており、本発明の趣旨を逸脱するものでないならば、種々の実施の形態に拡張可能である。以下、図４〜図７を参照しながら説明する。なお、各装置の機能ブロック図を示す図では、同じ符号が与えられた機能部が示されているが、各別のものを示すものではなく、説明の便宜から各別に示しているに過ぎない。このことは各実施形態における図でも同様である。【００３９】
証明装置（１）の外部記憶装置（１７）には、保持していることの証明対象である情報ｓ〔保持情報〕が保存されているとする。また、予め、検証装置（２）の外部記憶装置（２７）にも、情報ｓ〔対比情報ｓ’〕が保存されているとする。なお、説明の便宜上、各実施形態では、対比情報ｓ’を「ｓ」と表現する。しかし、これは、対比情報と保持情報とが、必ず同一であることを意味するものではない。
さらに、第１実施形態における認証システムにおいて共通のパラメータとして、十分大きい数Ｎと、Ｎ未満の数ｇ（好ましくは、２以上Ｎ未満の数ｇ）が、予め、証明装置（１）の外部記憶装置（１７）および検証装置（２）の外部記憶装置（２７）に保存されているとする。なお、前述の通り、Ｎを法とした剰余環の乗法についての位数が第三者に知られた場合、当該認証システムの安全性は低下する。そして、前述のように、Ｎが素数であることが明らかである場合、Ｎを法とした剰余環の乗法についての位数を求めることは容易である。また、Ｎが合成数である場合、Ｎを法とした剰余環の乗法についての位数を求めることは、当該Ｎを素因数分解することよりも困難である（Ｎが２つの素数の積からなる合成数である場合、これらの困難性は同等）。よって、安全性の見地から、Ｎは、素数であることが判定可能な数を除く自然数であって、素因数分解が困難な数であることが望ましい。このようなＮとしては、例えば、素因数分解困難な合成数であるＲＳＡモジュラス〔N=p・q（p,qは素数）であって、(p-1)/2,(q-1)/2もまた素数となっているＮ〕や、素数であるか否かが判定できない自然数などを例示できる。また、２のべき乗に近い数、例えば２ｍ−１の形で表せる数（メルセンヌ数）をＮとしてもよい。このようなＮによる剰余計算は、例えば２ｍを１に置換することで計算ができ、このような演算は通常のＣＰＵにおいてシフト演算またはビットの並び替えで実現することができる。従って高速な剰余演算を実現することができる。そのようなＮを確率的アルゴリズムによって効率的に生成することもできるし、素因数分解が困難な数の表は公知であるから、そのような表から２のべき乗に近いＮを選択するようにしてもよい。【００４０】
また、ｇは、Ｎと互いに素であることが望ましい。ｇがＮと互いに素でなく、その旨の情報が攻撃者に知られた場合、この攻撃者は、ｇの情報を、Ｎを素因数分解するための情報として利用できる場合があるからである（例えば、ｇの約数がＮの約数となるか否かを試していく処理等）。
また、予め定められた自然数ν（セキュリティパラメータ）が、検証装置（２）の外部記憶装置（２７）に保存されているとする。
まず、検証装置（２）の制御部（２９０）は、外部記憶装置（２７）からＮ、ｇ、ν、情報ｓを読み込み、それぞれをＲＡＭ（２５）の所定の格納領域に格納しておく〔図４参照〕。以後、「ＲＡＭから○○を読み込む」旨の説明をした場合は、「ＲＡＭにおいて○○が格納されている所定の格納領域から○○を読み込む」ことを意味するとする。【００４１】
検証装置（２）の検証情報生成部（２４１）は、ＲＡＭ（２５）からｇ、Ｎ、情報ｓを読み込み、式（１）に従った演算を行い、この演算結果Ｃ（ｓ）〔検証情報〕をＲＡＭ（２５）の所定の格納領域に格納する（ステップＳ１）〔図４参照〕。ここでは、ビット列の情報ｓを自然数の２進数表記と同一視した。
【数１】
0004555859.tif 000002
【００４２】
次に、検証装置（２）の制御部（２９０）は、外部記憶装置（２７）に保存される情報ｓを消除する（ステップＳ２）〔図４参照〕。ここで消除とは、対象となる情報が格納される格納領域を開放することであり、例えば格納領域を上書き（つまり、新たな情報を格納する。）可能な状態にしたり、あるいはＮｕｌｌ値で格納領域を上書きしたりすることである。
次に、検証装置（２）の乱数生成部（２４２）は、ＲＡＭ（２５）からνを読み込み、高々２２ν程度の大きさの乱数ｒ〔第１任意情報〕を生成し、乱数ｒをＲＡＭ（２５）の所定の格納領域に格納する（ステップＳ３）〔図４参照〕。なお、乱数生成部（２４２）が、０≦ｒ≦Ｎ・2ν−１の範囲から乱数ｒを生成してもよい。前述のように、このような範囲から乱数ｒが選択される構成が、安全性と演算コストの両立という観点から望ましいからである。また、必ずしもｒは乱数である必要はなく、値が任意に選択されるものであればよい。また、第１実施形態では乱数生成部（２４２）が、第１任意情報である乱数ｒを生成するとしたが、予め所定の値を第１任意情報として外部記憶装置（２７）に保存しておき、この値を外部記憶装置（２７）から読み込むとしてもよい。この場合には、安全性の見地から、当該所定の値を、検証装置（２）の外部に対して秘匿しておかなければならない。【００４３】
次に、検証装置（２）の認証情報生成因子生成部（２４３）は、ＲＡＭ（２５）からｇ、Ｎ、ｒを読み込み、式（２）に従った演算を行い、この演算結果Ｒ〔認証情報生成因子〕をＲＡＭ（２５）の所定の格納領域に格納する（ステップＳ４）〔図４参照〕。【００４４】
【数２】
0004555859.tif 000003
【００４５】
次に、検証装置（２）の制御部（２９０）の制御に従い、通信部（２３）が、ＲＡＭ（２５）から読み込んだステップＳ４で得られた認証情報生成因子Ｒを、証明装置（１）に対して送信する（ステップＳ５）〔図４参照〕。
なお、ステップＳ１、Ｓ３、Ｓ４で得られた検証情報Ｃ（ｓ）、乱数ｒ、認証情報生成因子Ｒは、検証装置（２）の制御部（２９０）の制御によって、外部記憶装置（２７）に保存される。
次に、証明装置（１）の制御部（１９０）の制御に従い、通信部（１３）が、ステップＳ５において送信された認証情報生成因子Ｒを受信し、制御部（１９０）が、この認証情報生成因子Ｒを外部記憶装置（１７）に保存する（ステップＳ６）〔図５参照〕。【００４６】
次に、証明装置（１）の制御部（１９０）は、外部記憶装置（１７）からＮ、情報ｓ、認証情報生成因子Ｒを読み込み、それぞれをＲＡＭ（１５）の所定の格納領域に格納する〔図５参照〕。
次に、証明装置（１）の認証情報生成部（１４１）は、ＲＡＭ（１５）からＮ、情報ｓ、認証情報生成因子Ｒを読み込み、式（３）に従った演算を行い、この演算結果Ｒ（ｓ）〔認証情報〕をＲＡＭ（１５）の所定の格納領域に格納する（ステップＳ７）〔図５参照〕。
【数３】
0004555859.tif 000004
【００４７】
次に、証明装置（１）の制御部（１９０）の制御に従い、通信部（１３）が、ＲＡＭ（１５）から読み込んだ（ステップＳ７で得られた）認証情報Ｒ（ｓ）を検証装置（２）に対して送信する（ステップＳ８）〔図５参照〕。
次に、検証装置（２）の制御部（２９０）の制御に従い、通信部（２３）が、ステップＳ８において送信された認証情報Ｒ（ｓ）を受信し、制御部（２９０）が、この認証情報Ｒ（ｓ）を外部記憶装置（２７）に保存する（ステップＳ９）〔図６参照〕。
次に、検証装置（２）の制御部（２９０）は、外部記憶装置（２７）からＮ、乱数ｒ、認証情報Ｒ（ｓ）、検証情報Ｃ（ｓ）を読み込み、それぞれをＲＡＭ（２５）の所定の格納領域に格納する〔図６参照〕。【００４８】
次に、検証装置（２）の判定部（２４４）は、ＲＡＭ（２５）からＮ、乱数ｒ、認証情報Ｒ（ｓ）、検証情報Ｃ（ｓ）を読み込み、式（４）に示す関係が成立するか否かの判定を行う（ステップＳ１０）〔図６参照〕。この判定結果が関係成立の場合には、関係成立を示す予め定めた情報α（例えば値α＝１）をＲＡＭ（２５）の所定の格納領域に格納する（ステップＳ１１）。また、この判定結果が関係不成立の場合には、関係不成立を示す予め定めた情報α（例えば値α＝０）をＲＡＭ（２５）の所定の格納領域に格納する（ステップＳ１２）。
【数４】
0004555859.tif 000005
【００４９】
ここで、式（４）に示す関係が成立する場合は、証明装置（１）が情報ｓを保持していることを表し、式（４）に示す関係が成立しない場合は、証明装置（１）が情報ｓを保持しているとは限らないことを表す。
以上のとおり、検証装置（２）は、情報ｓを保持していなくても、証明装置（１）が情報ｓを保持していることの認証を行うことができる。【００５０】
＜第２実施形態＞
次に、本発明の第２実施形態について、図８から図１４を参照しながら説明する。
第１実施形態では、素数であることが判定可能な数を除く自然数であって、素因数分解が困難な大きな数Ｎが、予め証明装置（１）の外部記憶装置（１７）および検証装置（２）の外部記憶装置（２７）に保存されているとした。
第２実施形態では、この明細書に記載する実施形態に示す認証システム・方法において頑強な安全性が保証されるＮを生成する。なお、Ｎは一義的な方法で生成されるものではなく、種々の方法で生成可能である。第２実施形態では、第三者装置（３）によってＮを生成するものとする。この第三者装置（３）は必ずしも物理的に独立している必要はなく、証明装置（１）や検証装置（２）の内部に存在するモジュールとして実現してもよい。
なお、第２実施形態では、第１実施形態と同一の機能・処理については同一の符号を与えるなどして説明を省略する。【００５１】
［証明装置］
第２実施形態における証明装置（１）は、第１実施形態で説明した証明装置と同様であるから説明を略する。【００５２】
［検証装置］
第２実施形態における検証装置（２）の外部記憶装置（２７）〔あるいはＲＯＭなど〕には、第１実施形態と異なり、検証情報を生成するためのプログラムが不要である。
検証装置（２）では、外部記憶装置（２７）〔あるいはＲＯＭなど〕に記憶された各プログラムとこの各プログラムの処理に必要なデータが、必要に応じてＲＡＭ（２５）に読み込まれる。ＣＰＵ（２４）は、これらの各プログラムを実行して、各データを処理する。その結果、ＣＰＵ（２４）が所定の機能（認証情報生成因子生成部、乱数生成部、判定部、制御部）を実現する。【００５３】
［第三者装置］
第２実施形態における第三者装置について説明する。
図８は、第２実施形態の第三者装置（３）のハードウェア構成を例示した構成ブロック図である。
図８に例示するように、第三者装置（３）は、キーボードやマウスなどの入力装置が接続可能な入力部（３１）、液晶ディスプレイなどの出力装置が接続可能な出力部（３２）、第三者装置（３）外部に通信可能な通信装置（例えば通信ケーブル、ＬＡＮカード、ハブ、ルータ、モデムなど）が接続可能な通信部（３３）、ＣＰＵ（Central Processing Unit）（３４）〔キャッシュメモリなどを備えていてもよい。〕、メモリであるＲＡＭ（３５）、ＲＯＭ（３６）、ハードディスクや光ディスクや半導体メモリなどである外部記憶装置（３７）並びにこれらの入力部（３１）、出力部（３２）、通信部（３３）、ＣＰＵ（３４）、ＲＡＭ（３５）、ＲＯＭ（３６）、外部記憶装置（３７）間のデータのやり取りが可能なように接続するバス（３８）を有している。また必要に応じて、第三者装置（３）に、ＣＤ−ＲＯＭやＤＶＤなどの記憶媒体を読み書きできる装置（ドライブ）などを設けるとしてもよい。【００５４】
第三者装置（３）の外部記憶装置（３７）には、Ｎを生成するためのプログラム、ｇを生成するためのプログラム、検証情報を生成するためのプログラムおよびこのプログラムの処理において必要となるデータ（情報ｓ）などが保存されている。その他、これらのプログラムに基づく処理を制御するための制御プログラムも外部記憶装置（３７）等に保存しておく。また、これらのプログラムの処理によって得られるデータなどは、ＲＡＭや外部記憶装置などに保存される。
第三者装置（３）では、外部記憶装置（３７）〔あるいはＲＯＭなど〕に記憶された各プログラムとこの各プログラムの処理に必要なデータが、必要に応じてＲＡＭ（３５）に読み込まれる。ＣＰＵ（３４）は、これらの各プログラムを実行して、各データを処理する。その結果、ＣＰＵ（３４）が所定の機能（Ｎ生成部、ｇ生成部、検証情報生成部、制御部）を実現する。【００５５】
［ネットワーク構成］
第２実施形態の認証システムのネットワーク構成について説明する。
図９は、第２実施形態の認証システムのネットワーク構成を示す図である。
図９に示すように、第２実施形態では、１つの証明装置（１）と、１つの検証装置（２）と、１つの第三者装置（３）とが、ネットワーク（５）を介して相互に通信可能に接続されている。第三者装置（３）は１つに限定されるものではない。しかし、複数の証明装置がある場合に、各証明装置が保持する情報（保持情報）と同一の情報（対比情報）を第三者装置に保存しておけば、各証明装置に対応する検証情報を生成可能であるから、一般的には、１つの第三者装置で十分である。【００５６】
[認証]
第三者装置（３）の外部記憶装置（３７）には、情報ｓ〔対比情報〕が保存されているとする。また、予め定められた自然数νが、検証装置（２）の外部記憶装置（２７）に保存されているとする。
まず、第三者装置（３）の制御部（３９０）は、外部記憶装置（３７）から情報ｓを読み込み、これをＲＡＭ（３５）の所定の格納領域に格納しておく〔図１０参照〕。
第三者装置（３）のＮ生成部（３４０）は、素数であることが判定可能な数を除く自然数であって、素因数分解が困難な数Ｎを生成し、このＮをＲＡＭ（３５）の所定の格納領域に格納する（ステップＳ０ｔ）〔図１０参照〕。なお、前述のＲＳＡモジュラスをＮとする場合、Ｎは例えば以下のように生成される。即ち、素数の組ｐ、ｑで、（ｐ−１）／２，（ｑ−１）／２もまた素数になるものを求め、Ｎ＝ｐ・ｑを演算する。このようなｐ、ｑは無限に存在して、Ｎは確率的アルゴリズムによって効率的に計算可能である。【００５７】
第三者装置を用いてＮを定めるのではなく、例えば、証明装置あるいは検証装置のプロセッサで実行されるプログラムモジュールによってＮを定めることでもよい。このような方法の一例として、マルチパーティープロトコルがある（参考文献１参照）。この方法によれば、Ｎを定める計算に参加する装置のいずれもがＮの素因数分解をできることはなく、上記の要件を充たす任意のＮを生成することが可能である。
（参考文献１）
J.Algesheimer, J.Camenish and V.Shoup, "Efficient Computation Modulo a Shared Secret with Application to the Generation of Shared Safe-Prime Products", CRYPTO 2002, LNCS 2442, pp.417-432, 2002, Springer-Verlag.
また、素因数分解が困難なＮとして、前述の２のべき乗に近い数、例えば２ｍ−１の形で表せるＮ（メルセンヌ数）を生成するようにしてもよい。そのようなＮは確率的アルゴリズムによって効率的に生成することもできるし、素因数分解が困難な数の表は公知であるから、そのような表から２のべき乗に近いＮを選択するようにしてもよい。【００５８】
次に、第三者装置（３）のｇ生成部（３４１）は、ＲＡＭ（３５）からＮを読み込み、Ｎ未満の正整数ｇを生成し、このｇをＲＡＭ（３５）の所定の格納領域に格納する（ステップＳ１ｔ）〔図１０参照〕。
次に、第三者装置（３）の検証情報生成部（３４２）は、ＲＡＭ（３５）からｇ、Ｎ、情報ｓを読み込み、上記の式（１）に従った演算を行い、この演算結果Ｃ（ｓ）〔検証情報〕をＲＡＭ（３５）の所定の格納領域に格納する（ステップＳ２ｔ）〔図１０参照〕。
次に、第三者装置（３）の制御部（３９０）の制御に従い、通信部（３３）が、ＲＡＭ（３５）から読み込んだ（ステップＳ０ｔ、Ｓ１ｔ、Ｓ２ｔで得られた）Ｎ、ｇ、検証情報Ｃ（ｓ）を検証装置（２）に対して送信する（ステップＳ３ｔ）〔図１０参照〕。【００５９】
次に、必要に応じて、第三者装置（３）の制御部（３９０）は、外部記憶装置（３７）に保存される情報ｓを消除する（ステップＳ４ｔ）。
検証装置（２）の制御部（２９０）の制御に従い、通信部（２３）が、ステップＳ３ｔにおいて送信されたＮ、ｇ、検証情報Ｃ（ｓ）を受信し、これらＮ、ｇ、検証情報Ｃ（ｓ）を外部記憶装置（２７）に保存する（ステップＳ３ｖ）。
ステップＳ３ｖに続くステップＳ３およびＳ４は、第１実施形態における処理と同じであるから説明を略する。【００６０】
第１実施形態におけるステップＳ５の処理では、検証装置（２）は、認証情報生成因子Ｒを証明装置（１）に送信したが、第２実施形態では、認証情報生成因子Ｒに加え、Ｎ、ｇも証明装置（１）に送信する（ステップＳ５’）〔図１１参照〕。
第１実施形態におけるステップＳ６の処理では、証明装置（１）は、認証情報生成因子Ｒを検証装置（２）から受信したが、第２実施形態では、認証情報生成因子Ｒに加え、Ｎ、ｇも検証装置（２）から受信する（ステップＳ６’）〔図１２参照〕。
ステップＳ６’に続くステップＳ７〜Ｓ１２は、第１実施形態における処理と同じであるから説明を略する。【００６１】
＜第３実施形態＞
次に、本発明の第３実施形態について、図１５〜図２０を参照しながら説明する。
第３実施形態では、第１実施形態ないし第２実施形態における計算効率の向上を図るための技術を説明する。この計算効率向上のための技術は、第１実施形態及び第２実施形態の何れにも適用可能である。しかし、第３実施形態では、説明の便宜から、一例として、第２実施形態にこの計算効率向上のための技術を適用する場合を説明する。
計算効率の向上のために、情報ｓを複数の情報に分割する。第３実施形態ではその一例を示すことにする。ビット列で表される情報ｓを、ｋ個の分割情報ｓ０、ｓ１、…、ｓｋ−１に分割し、情報ｓは、ｋ個の分割情報ｓ０、ｓ１、…、ｓｋ−１のビット列の結合として表されるとする。即ち、ｓ＝ｓ０‖ｓ１‖…‖ｓｋ−１とする。第３実施形態では、分割数ｋの値とｉ＝０，１，２，…，ｋ−１についてｓｉのビット長は、予め、証明装置（１）、検証装置（２）、第三者装置（３）の外部記憶装置それぞれに保存されているものとする。勿論、例えば第三者装置（３）において任意にこれらを決定し、検証装置（２）、証明装置（１）へ送信するようにしてもよく、適宜に設計変更可能である。
また、効率のために、分割数ｋを予め定めた固定値としたり、ｓｉのビット長がｓのビット長を均等割したものとする旨のプロトコルを定めておいたりしてもよい。
第３実施形態では、第２実施形態と同一の機能・処理については同一の符号を与えるなどして説明を省略する。また、以下では、単に情報ｓと云えば、ｋ個の分割情報ｓ０、ｓ１、…、ｓｋ−１の総称を意味するものとする。【００６２】
［証明装置］
第３実施形態における証明装置（１）は、第１実施形態で説明した証明装置と同様であるから説明を略する。
［検証装置］
第３実施形態における検証装置（２）は、第２実施形態で説明した検証装置と同様であるから説明を略する。
［第三者装置］
第３実施形態における第三者装置（３）は、第２実施形態で説明した第三者装置と同様であるから説明を略する。
［準備］
νを予め定められた自然数とする。νは、検証装置（２）の外部記憶装置（２７）に保存されているとする。また、Ｈ（ｉ，ｕ，Ｒ）を予め定められた関数とする。例として、Ｈ（ｉ，ｕ，Ｒ）＝ｕｉとおくこともできるし、Ｈ（ｉ，ｕ，Ｒ）＝ｕｉｍｏｄ Ｅ（Ｅは、２νよりも大きな素数が好ましい）とおくこともできるし、その他にＳＨＡ−１などのハッシュ関数を用いることができる。また、ｕ，Ｒの少なくとも一方を変数としたｉ毎に相違する関数をＨ（ｉ，ｕ，Ｒ）としてもよい（例えば、ｉ＝１のときにはＨ（ｉ，ｕ，Ｒ）＝ｕとし、ｉ＝２のときにはＨ（ｉ，ｕ，Ｒ）＝ｕｉ＋Ｒとするなど）。その他、ｕ，Ｒの少なくとも一方とｉとに依存して関数値が定まる関数であれば、どのような関数をＨ（ｉ，ｕ，Ｒ）としてもよい。【００６３】
ただし、安全性の観点からは、関数Ｈ（ｉ，ｕ，Ｒ）は、以下のような条件を満たす関数Ｈ（ｉ，Ｘ）（Ｘは、ｕ，Ｒの少なくとも一方）であることが望ましい。このような関数Ｈ（ｉ，Ｘ）を用いる場合、ｋ個の分割情報ｓ０、ｓ１、…、ｓｋ−１全てに対応するＨ（ｉ，ｕ，Ｒ）を正しく求められる者しか当プロトコルの検証に合格できないことが証明できるからである。
(1)ｊ＝０とする。
(2)ランダムにＸを選んで、ｉ＝０，１，...，ｋ−１について、ａｉ＋１，ｊ＋１＝Ｈ（ｉ，Ｘ）とする。
(3)ｊ＝ｊ＋１として、ｊ＞ｋ−１でなければ(2)に戻る。
(4)ｊ＞ｋ−１となったとき、行列（ａｉ＋１，ｊ＋１）（ｉ＝０，１，...，ｋ−１、ｊ＝０，１，...，ｋ−１）が、高い確率で非退化（nondegenerate）である。
ハッシュ関数や上述のＨ（ｉ，ｕ，Ｒ）＝ｕｉ ｍｏｄ Ｅは、この条件を満たす関数である（例えば、「H. Anton and C. Rorres. Elementary Linear Algebra with Applications. 9th ed., John Wiley & Sons, 2005」など参照）。よって、安全性の観点からは、ハッシュ関数や上述のＨ（ｉ，ｕ，Ｒ）＝ｕｉｍｏｄ Ｅを用いることが望ましい。
また、前述のように、Ｈ（ｉ，ｕ，Ｒ）を一方向性関数とした場合には、関数値の衝突（collision）を防止できるため、検証の信頼性と安全性が向上する。【００６４】
[認証]
第三者装置（３）の外部記憶装置（３７）には、情報ｓ〔対比情報〕が保存されているとする。
ステップＳ０ｔおよびＳ１ｔは、第２実施形態における処理と同じであるから説明を略する。【００６５】
ステップＳ１ｔに続いて、第三者装置（３）の検証情報生成部（３４２）は、ＲＡＭ（３５）からｇ、Ｎ、ｋ個の分割情報ｓ０、ｓ１、…、ｓｋ−１〔対比情報を複数に分割した第1分割情報〕を読み込み〔予め外部記憶装置（３７）から読み込まれているとする。〕、分割情報ｓｉ毎に、式（５）に従った演算を行い、これらの演算結果Ｃｉ（ｓ）＝｛Ｃｉ（ｓ）｝ｉ＝０，１，２，…，ｋ−１〔検証情報〕をＲＡＭ（３５）の所定の格納領域に格納する（ステップＳ２ａ）〔図１５参照〕。ただし、ビット列ｓｉを自然数の２進数表記と同一視した。
【数５】
0004555859.tif 000006
【００６６】
次に、第三者装置（３）の制御部（３９０）の制御に従い、通信部（３３）が、ＲＡＭ（３５）から読み込んだ（ステップＳ０ｔ、Ｓ１ｔ、Ｓ２ａで得られた）Ｎ、ｇ、検証情報Ｃｉ（ｓ）＝｛Ｃｉ（ｓ）｝ｉ＝０，１，２，…，ｋ−１を検証装置（２）に対して送信する（ステップＳ３ａ）〔図１５参照〕。
ステップＳ４ｔは、第２実施形態における処理と同じであるから説明を略する。
検証装置（２）の制御部（２９０）の制御に従い、通信部（２３）が、ステップＳ３ａにおいて送信されたＮ、ｇ、検証情報Ｃｉ（ｓ）＝｛Ｃｉ（ｓ）｝ｉ＝０，１，２，…，ｋ−１を受信し、これらＮ、ｇ、検証情報Ｃｉ（ｓ）を外部記憶装置（２７）に保存する（ステップＳ３ｖａ）〔図１６参照〕。【００６７】
ステップＳ３ｖａに続くステップＳ３およびＳ４は、第１実施形態における処理と同じであるから説明を略する。
ステップＳ４に続き、検証装置（２）の乱数生成部（２４２）は、ＲＡＭ（２５）からνを読み込み（予め外部記憶装置（２７）から読み込まれているとする。）、高々νビット程度の大きさの乱数ｕを生成し、乱数ｕをＲＡＭ（２５）の所定の格納領域に格納する（ステップＳ４ａ）〔図１６参照〕。なお、所定の値を乱数ｕに相当する値として外部記憶装置（２７）に保存しておき、この値を外部記憶装置（２７）から読み込むとしてもよい。この場合には、安全性の見地から、乱数ｕに相当する所定の値を検証装置（２）の外部に対して秘匿しておかなければならない。【００６８】
第２実施形態におけるステップＳ５’の処理では、認証情報生成因子Ｒ、Ｎ、ｇを証明装置（１）に送信したが、第３実施形態では、認証情報生成因子Ｒ、Ｎ、ｇに加え、乱数ｕも証明装置（１）に送信する（ステップＳ５ａ）〔図１６参照〕。
第２実施形態におけるステップＳ６’の処理では、証明装置（１）は、認証情報生成因子Ｒ、Ｎ、ｇを検証装置（２）から受信したが、第３実施形態では、認証情報生成因子Ｒ、Ｎ、ｇに加え、乱数ｕも検証装置（２）から受信する（ステップＳ６ａ）〔図１７参照〕。【００６９】
第１実施形態（第２実施形態）におけるステップＳ７の処理では、式（３）に従って認証情報Ｒ（ｓ）を生成したが、第３実施形態では、次の処理を行う。即ち、証明装置（１）の認証情報生成部（１４１）は、ＲＡＭ（１５）からＮ、ｋ個の分割情報ｓ０、ｓ１、…、ｓｋ−１〔保持情報を複数に分割した第２分割情報〕、認証情報生成因子Ｒ、乱数ｕを読み込み（予め外部記憶装置（１７）から読み込まれているとする。）、式（６）に従った演算を行い、この演算結果Ｒ（ｓ）〔認証情報〕をＲＡＭ（１５）の所定の格納領域に格納する（ステップＳ７ａ）〔図１７参照〕。
【数６】
0004555859.tif 000007
【００７０】
なお、式（６）によって算出されるＲ（ｓ）は、「第２分割情報ｓｉに対応するｉ及び検証装置（２）から送信される何らかの情報に値が依存する情報Ｈと、第２分割情報ｓｉと、の積を全てのｉについて合計した値を冪数とし、認証情報生成因子Ｒを底とし、Ｎを法とした冪乗剰余演算結果」の一例である。ここで、式（６）では、「検証装置（２）から送信される何らかの情報」としてｕ，Ｒの少なくとも一方を用い、「情報Ｈ」として、ｕ，Ｒの少なくとも一方とｉとに依存して定まる関数値Ｈ（ｉ，ｕ，Ｒ）を用いている。しかし、「検証装置（２）から送信される何らかの情報」として、検証装置（２）から送信されたｕ，Ｒ以外の情報を含んでもよい。また、「検証装置（２）から送信される何らかの情報」及びｉと、「情報Ｈ」とを対応付けたテーブルを、証明装置（１）と検証装置（２）とで共有しておき、認証情報生成部（１４１）が、このテーブルを用いて「情報Ｈ」を決定してもよい。【００７１】
ここで、式（６）の冪数のビット長は、保持情報ｓ全体のビット長に比べて格段に短く、式（６）の演算コストは、第１実施形態の式（３）の演算コストに比べ、１／ｋ程度である。さらに、ｋなどのパラメータを適切に選べば、システム全体の演算コストは、ＳＨＡ−１等のハッシュ関数を用いた公知のメッセージ認証子による認証方法の演算コストよりも少なくなる。
ステップＳ７ａに続くステップＳ８、Ｓ９は、第１実施形態（第２実施形態）における処理と同じであるから説明を略する。【００７２】
第１実施形態（第２実施形態）におけるステップＳ１０の処理では、式（４）に従って判定を行ったが、第３実施形態では、次の判定処理を行う。即ち、検証装置（２）の判定部（２４４）は、ＲＡＭ（２５）からＮ、乱数ｒ、乱数ｕ、認証情報生成子Ｒ、認証情報Ｒ（ｓ）、検証情報Ｃ（ｓ）を読み込み（予め外部記憶装置（２７）から読み込まれているとする。）、式（７）に示す関係が成立するか否かの判定を行う（ステップＳ１０ａ）〔図１８参照〕。
【数７】
0004555859.tif 000008
ステップＳ１０ａに続くステップＳ１１およびＳ１２の処理は、第１実施形態（第２実施形態）における処理と同じであるから説明を略する。【００７３】
＜第４実施形態＞
次に、本発明の第４実施形態について、図２１から図２９を参照しながら説明する。
第４実施形態は、第１実施形態、第２実施形態、第３実施形態における安全性の向上を図るための技術を説明する。この安全性向上のための技術は、第１実施形態、第２実施形態及び第３実施形態の何れにも適用可能である。しかし、第４実施形態では、説明の便宜から、一例として、第３実施形態にこの安全性向上のための技術を適用する場合を説明する。【００７４】
第１実施形態、第２実施形態、第３実施形態では、認証情報生成因子Ｒを送信した検証装置を、信頼のおける検証装置と看做していた。しかし、前述のように、検証装置が不正な方法で認証情報生成因子Ｒを生成する場合や、検証装置に成り済ました攻撃者の装置が本発明のシステムに介在する場合があることを否定できない。このような場合に対処するために、証明装置は、その直接の通信相手である検証装置が確かに所定の処理に基づいて認証情報生成因子Ｒを生成したものであることを、対話証明によって認証する。第４実施形態では、その一例として乱数ｒに関するゼロ知識対話証明を利用した検証装置の認証について説明する。なお、知識のゼロ知識証明の構成方法はさまざまなものが公知であり、第４実施形態に示す構成はその一例である。例えば、第４実施形態で説明するゼロ知識証明の構成に代え、楕円曲線上のスカラー倍演算を用いたものによって構成することも可能である。【００７５】
なお、安全性の観点からは、ゼロ知識性の数学的証明がなされている対話証明を用いることが望ましい。これにより、乱数ｒの内容を傍受したいと考える攻撃者に対し、乱数ｒが知られないという安全性が保証できるからである。ここで「証明装置がｒを保持していることを検証装置に証明する対話証明のゼロ知識性の数学的証明がなされている」とは、ある証明装置が、対話証明の規格通りに検証装置に受け答えし、これに対して検証装置が合格であると判定した場合に、その被検証装置を改造してｒを出力する装置を構成できることが証明されていることである（例えば、「O. Goldreich Foundations of Cryptography, volume I. Cambridge University Press,2001」等参照）。このような証明がなされた対話証明の場合、ｒを知っているもののみが規格通りに受け答えできるといえる。このような対話証明の性質を知識健全性という。【００７６】
このように、安全性の観点からは知識の証明はゼロ知職証明であることが望ましいが、効率のために、現時点ではゼロ知識性の数学的証明が完全になされていない手段、たとえば後述するｃ＾を、ハッシュ関数を用いたビットコミットメントで代替することもできる。
第４実施形態では、第３実施形態と同一の機能・処理については同一の符号を与えるなどして説明を省略する。
［証明装置］
第４実施形態における証明装置（１）の外部記憶装置（１７）〔あるいはＲＯＭなど〕には、認証情報を生成するためのプログラム、後述するｃ＾を生成するためのプログラム、認証情報生成因子が検証装置において正当に生成されたことを対話証明によって認証するためのプログラムおよびこれらのプログラムの処理において必要となるデータ（情報ｓなど）などが保存されている。その他、これらのプログラムに基づく処理を制御するための制御プログラムも外部記憶装置（１７）等に保存しておく。【００７７】
第４実施形態における証明装置（１）では、外部記憶装置（１７）〔あるいはＲＯＭなど〕に記憶された各プログラムとこの各プログラムの処理に必要なデータが、必要に応じてＲＡＭ（１５）に読み込まれる。ＣＰＵ（１４）は、これらの各プログラムを実行して、各データを処理する。その結果、ＣＰＵ（１４）が所定の機能（ｃ＾生成部、認証判定部、認証情報生成部、制御部）を実現する。
［検証装置］
第４実施形態における検証装置（２）の外部記憶装置（２７）〔あるいはＲＯＭなど〕には、認証情報生成因子を生成するためのプログラム、乱数を生成するためのプログラム、後述するＷ、ｚを生成するためのプログラム、認証情報生成因子が検証装置において正当に生成されたことを対話証明によって証明するためのプログラム、証明装置から受信した情報と検証装置に保持される情報との一致を判定するためのプログラム、およびこれらのプログラムの処理において必要となるデータなどが保存されている。その他、これらのプログラムに基づく処理を制御するための制御プログラムも外部記憶装置（２７）等に保存しておく。
検証装置（２）では、外部記憶装置（２７）〔あるいはＲＯＭなど〕に記憶された各プログラムとこの各プログラムの処理に必要なデータが、必要に応じてＲＡＭ（２５）に読み込まれる。ＣＰＵ（２４）は、これらの各プログラムを実行して、各データを処理する。その結果、ＣＰＵ（２４）が所定の機能（認証情報生成因子生成部、乱数生成部、Ｗ生成部、ｚ生成部、対話判定部、判定部、制御部）を実現する。【００７８】
［第三者装置］
第４実施形態における第三者装置（３）は、第２実施形態で説明した第三者装置と同様であるから説明を略する。
［準備］
ｔを予め定められた自然数（但し、Ｎよりも小さいとする。）とする。ｔは、証明装置（１）の外部記憶装置（１７）および検証装置（２）の外部記憶装置（２７）に保存されているとする。また、第３実施形態と同様な関数Ｈ（ｉ，ｕ，Ｒ）を予め定めておく。例として、Ｈ（ｉ，ｕ，Ｒ）＝ｕｉとおくこともできるし、その他にＳＨＡ−１などのハッシュ関数を用いることができる。【００７９】
[認証]
第４実施形態における対話証明の処理は、第３実施形態で説明したステップＳ６ａの処理とステップＳ７ａの処理との間に行われる。
そこで、ステップＳ０ｔ〜ステップＳ６ａ、ステップＳ７ａ〜ステップＳ１２の説明を略し、この対話証明の処理について説明を加えることにする。
まず、ステップＳ６ａの処理の後、証明装置（１）の制御部（１９０）は、外部記憶装置（１７）からｇ、ｔ、Ｎを読み込み、これをＲＡＭ（１５）の所定の格納領域に格納しておく。【００８０】
証明装置（１）の乱数生成部（１４３）は、ＲＡＭ（１５）からｔを読み込み、０以上ｔ未満の乱数ｃおよび０以上Ｎ未満のＮと互いに素な乱数でξを生成し、この乱数ｃおよび乱数ξをＲＡＭ（１５）の所定の格納領域に格納する（ステップＳ６１１）〔図２１参照〕。なお、０以上２ｔ−１以下の乱数ｃを生成する構成であってもよい。
次に、証明装置（１）のｃ＾生成部（１４２）は、ＲＡＭ（１５）からＮ、ｇ、ｔ、乱数ｃ、乱数ξを読み込み、式（８）に従った演算を行い、この演算結果ｃ＾をＲＡＭ（１５）の所定の格納領域に格納する（ステップＳ６１２）〔図２１参照〕。
【数８】
0004555859.tif 000009
【００８１】
次に、証明装置（１）の制御部（１９０）の制御に従い、通信部（１３）が、ＲＡＭ（１５）から読み込んだ（ステップＳ６１２で得られた）ｃ＾を検証装置（２）に対して送信する（ステップＳ６１３）〔図２１参照〕。
なお、ステップＳ６１１で得られた乱数ｃ、乱数ξは、証明装置（１）の制御部（１９０）の制御によって、外部記憶装置（１７）に保存される。
次に、検証装置（２）の制御部（２９０）の制御に従い、通信部（２３）が、ステップＳ６１３において送信されたｃ＾を受信し、このｃ＾を外部記憶装置（２７）に記憶する（ステップＳ６１４）〔図２２参照〕。【００８２】
次に、検証装置（２）の制御部（２９０）は、外部記憶装置（２７）からＮ、ｇを読み込み、それぞれをＲＡＭ（２５）の所定の格納領域に格納する〔図２２参照〕。
次に、検証装置（２）の乱数生成部（２４２）は、ＲＡＭ（２５）からＮを読み込み、０以上Ｎ未満の乱数ｗを生成し、この乱数ｗをＲＡＭ（２５）の所定の格納領域に格納する（ステップＳ６１５）〔図２２参照〕。なお、０以上Ｎ・２３ｔ−１以下の乱数ｗが生成される構成であってもよい。後述のように、検証装置（２）は、証明装置（１）にｚ＝ｃ・ｒ＋ｗを送信する（ステップＳ６２３）。０以上Ｎ・２３ｔ−１以下の乱数ｗが選択される場合、どのような方法でｃ，ｒが与えられても、ｚ＝ｃ・ｒ＋ｗの分布と、このような範囲で生成される乱数ｗ’の分布とが識別不能となることが証明できる。つまり、このような範囲でｗが選択される場合、攻撃者がｚ＝ｃ・ｒ＋ｗからｒを推測することが十分困難であることがいえ、プロトコルの安全性が確保できる。【００８３】
次に、検証装置（２）のＷ生成部（２４７）は、ＲＡＭ（２５）からＮ、ｇ、乱数ｗを読み込み、式（９）に従った演算を行い、この演算結果ＷをＲＡＭ（２５）の所定の格納領域に格納する（ステップＳ６１６）〔図２２参照〕。
【数９】
0004555859.tif 000010
【００８４】
次に、検証装置（２）の制御部（２９０）の制御に従い、通信部（２３）が、ＲＡＭ（２５）から読み込んだステップＳ６１６で得られたＷを証明装置（１）に対して送信する（ステップＳ６１７）〔図２２参照〕。
なお、ステップＳ６１５で得られた乱数ｗは、検証装置（２）の制御部（２９０）の制御によって、外部記憶装置（２７）に保存される。
次に、証明装置（１）の制御部（１９０）の制御に従い、通信部（１３）が、ステップＳ６１７において送信されたＷを受信し、このＷを外部記憶装置（１７）に保存する（ステップＳ６１８）〔図２３参照〕。【００８５】
次に、証明装置（１）の制御部（１９０）は、外部記憶装置（１７）から乱数ｃおよび乱数ξを読み込み、それぞれをＲＡＭ（１５）の所定の格納領域に格納する。そして、証明装置（１）の制御部（１９０）の制御に従い、通信部（１３）が、ＲＡＭ（１５）から読み込んだ乱数ｃおよび乱数ξを検証装置（２）に対して送信する（ステップＳ６１９）〔図２３参照〕。
次に、検証装置（２）の制御部（２９０）の制御に従い、通信部（２３）が、ステップＳ６１９において送信された乱数ｃおよび乱数ξを受信し、この乱数ｃおよび乱数ξを外部記憶装置（２７）に保存する（ステップＳ６２０）〔図２４参照〕。【００８６】
次に、検証装置（２）の制御部（２９０）は、外部記憶装置（２７）から乱数ｃ、乱数ξ、ｇ、ｔ、Ｎ、乱数ｒ、乱数ｗ、ｃ＾を読み込み、それぞれをＲＡＭ（２５）の所定の格納領域に格納する〔図２４参照〕。
次に、検証装置（２）の対話判定部（２５０）は、ＲＡＭ（２５）からｇ、ｃ、ｔ、Ｎ、乱数ξ、ｃ＾を読み込み、式（８）に示す関係が成立するか否かの判定を行う（ステップＳ６２１）〔図２４参照〕。この判定結果が関係不成立の場合には、検証装置（２）の制御部（２９０）の制御の下、以下の処理を実行せずに終了する（ステップＳ６２２）。この判定結果が関係成立の場合には、検証装置（２）の制御部（２９０）の制御の下、続くステップＳ６２３が実行される。【００８７】
検証装置（２）のｚ生成部（２４８）は、ＲＡＭ（２５）から乱数ｃ、乱数ｒ、乱数ｗを読み込み、式（１０）に従った演算を行い、この演算結果ｚをＲＡＭ（２５）の所定の格納領域に格納する（ステップＳ６２３）〔図２４参照〕。
【数１０】
0004555859.tif 000011
【００８８】
次に、検証装置（２）の制御部（２９０）の制御に従い、通信部（２３）が、ＲＡＭ（２５）から読み込んだステップＳ６２３で得られたｚを証明装置（１）に対して送信する（ステップＳ６２４）〔図２４参照〕。
次に、証明装置（１）の制御部（１９０）の制御に従い、通信部（１３）が、ステップＳ６２４において送信されたｚを受信し、このｚを外部記憶装置（１７）に保存する（ステップＳ６２５）〔図２５参照〕。
次に、証明装置（１）の制御部（１９０）は、外部記憶装置（１７）から、ｇ、Ｎ、認証情報生成因子Ｒ、ｚ、乱数ｃ、乱数ｕ、情報ｓ、Ｗを読み込み、それぞれをＲＡＭ（１５）の所定の格納領域に格納する〔図２５参照〕。【００８９】
次に、証明装置（１）の認証判定部（１４５）は、ＲＡＭ（１５）からｇ、ｚ、Ｎ、乱数ｃ、Ｗ、認証情報生成因子Ｒを読み込み、式（１１）に示す関係が成立するか否かの判定を行う（ステップＳ６２６）〔図２５参照〕。この判定結果が関係不成立の場合には、証明装置（１）の制御部（１９０）の制御の下、以下の処理を実行せずに終了する（ステップＳ６２７）。この判定結果が関係成立の場合には、証明装置（１）の制御部（１９０）の制御の下、続くステップＳ７ａが実行される。ステップＳ７ａ以降の処理は第２実施形態におけるのと同じ処理である。
【数１１】
0004555859.tif 000012
なお、ステップＳ６１１からＳ６１２，Ｓ６１８，Ｓ６１９，Ｓ６２５，Ｓ６２６の各処理を実行する部分が「対話証明部」に相当する。また、ステップＳ６１４からＳ６１７，Ｓ６２０からＳ６２４までの各処理を実行する部分が「対話検証部」に相当する。【００９０】
＜第５実施形態＞
次に、本発明の第５実施形態について、図３０〜図３７を参照しながら説明する。
第５実施形態は、第１実施形態ないし第２実施形態の安全性向上のために、本発明独自の対話証明手法を適用したものである。ここでは説明の便宜から、第２実施形態に本発明独自の対話証明手法を適用した形態を説明する。
第５実施形態では、第２実施形態および第４実施形態と同一の機能・処理については同一の符号を与えるなどして説明を省略する。【００９１】
［証明装置］
第５実施形態における証明装置（１）の外部記憶装置（１７）〔あるいはＲＯＭなど〕には、認証情報を生成するためのプログラム、後述するＡを生成するためのプログラム、乱数を生成するためのプログラム、検証装置が第１任意情報を正しく用いて認証情報生成因子を生成したかを判定するためのプログラムおよびこれらのプログラムの処理において必要となるデータ（情報ｓなど）などが保存されている。その他、これらのプログラムに基づく処理を制御するための制御プログラムも外部記憶装置（１７）等に保存しておく。
証明装置（１）では、外部記憶装置（１７）〔あるいはＲＯＭなど〕に記憶された各プログラムとこの各プログラムの処理に必要なデータが、必要に応じてＲＡＭ（１５）に読み込まれる。ＣＰＵ（１４）は、これらの各プログラムを実行して、各データを処理する。その結果、ＣＰＵ（１４）が所定の機能（Ａ生成部、乱数生成部、第１判定部、認証情報生成部、制御部）を実現する。【００９２】
［検証装置］
第５実施形態における検証装置（２）の外部記憶装置（２７）〔あるいはＲＯＭなど〕には、認証情報生成因子を生成するためのプログラム、乱数を生成するためのプログラム、後述するＢを生成するためのプログラム、証明装置が正しく前記のＡを生成したかを判定するためのプログラム、証明装置から受信した情報と検証装置に保持される情報との一致を判定するためのプログラムおよびこれらのプログラムの処理において必要となるデータなどが保存されている。その他、これらのプログラムに基づく処理を制御するための制御プログラムも外部記憶装置（２７）等に保存しておく。【００９３】
検証装置（２）では、外部記憶装置（２７）〔あるいはＲＯＭなど〕に記憶された各プログラムとこの各プログラムの処理に必要なデータが、必要に応じてＲＡＭ（２５）に読み込まれる。ＣＰＵ（２４）は、これらの各プログラムを実行して、各データを処理する。その結果、ＣＰＵ（２４）が所定の機能（認証情報生成因子生成部、Ｂ生成部、乱数生成部、第２判定部、判定部、制御部）を実現する。【００９４】
［第三者装置］
第５実施形態における第三者装置（３）は、第２実施形態で説明した第三者装置と同様であるから説明を略する。
[準備］
νを予め定められた自然数とする。νは、証明装置（１）の外部記憶装置（１７）および検証装置（２）の外部記憶装置（２７）に保存されているとする。
[認証]
ステップＳ０ｔからステップＳ３ｖまでの処理は、第２実施形態における処理と同じであるから説明を略する。
ステップＳ３ｖに続いて、次のような処理が順次行われる。【００９５】
まず、検証装置（２）の制御部（２９０）は、外部記憶装置（２７）からＮおよびｇを読み込み、それぞれをＲＡＭ（２５）の所定の格納領域に格納する。そして、検証装置（２）の制御部（２９０）の制御に従い、通信部（２３）が、ＲＡＭ（２５）から読み込んだＮおよびｇを証明装置（１）に対して送信する（ステップＳ７００）〔図３０参照〕。
次に、証明装置（１）の制御部（１９０）の制御に従い、通信部（１３）が、ステップＳ７００において送信されたＮおよびｇを受信し、このＮおよびｇを外部記憶装置（１７）に保存する（ステップＳ７０１）〔図３１参照〕。【００９６】
次に、証明装置（１）の制御部（１９０）は、外部記憶装置（１７）からＮ、ｇ、νを読み込み、それぞれをＲＡＭ（１５）の所定の格納領域に格納する〔図３１参照〕。
次に、証明装置（１）の乱数生成部（１４３）は、ＲＡＭ（１５）からνを読み込み、高々２２ν程度の大きさの乱数ａを生成し、この乱数ａをＲＡＭ（１５）の所定の格納領域に格納する（ステップＳ７０２）〔図３１参照〕。なお、乱数生成部（１４３）が、０≦ａ≦Ｎ・２ν−１の範囲から乱数ａを生成してもよい。前述のように、このような範囲から乱数ａが選択される構成が、安全性と演算コストの両立という観点から望ましいからである。また、必ずしもａは乱数である必要はなく、値が任意に選択されるものであればよい。【００９７】
次に、証明装置（１）のＡ生成部（１４８）は、ＲＡＭ（１５）からＮ、ｇ、乱数ａを読み込み、式（１２）に従った演算を行い、この演算結果ＡをＲＡＭ（１５）の所定の格納領域に格納する（ステップＳ７０３）〔図３１参照〕。
【数１２】
0004555859.tif 000013
【００９８】
次に、証明装置（１）の制御部（１９０）の制御に従い、通信部（１３）が、ＲＡＭ（１５）から読み込んだステップＳ７０３で得られたＡを検証装置（２）に対して送信する（ステップＳ７０４）〔図３１参照〕。
なお、ステップＳ７０３、Ｓ７０４で得られた乱数ａ、Ａは、証明装置（１）の制御部（１９０）の制御によって、外部記憶装置（１７）に保存される。
次に、検証装置（２）の制御部（２９０）の制御に従い、通信部（２３）が、ステップＳ７０４において送信されたＡを受信し、このＡを外部記憶装置（２７）に保存する（ステップＳ７０５）〔図３２参照〕。【００９９】
次に、検証装置（２）の制御部（２９０）は、外部記憶装置（２７）からＮ、ｇ、ν、Ａを読み込み、それぞれをＲＡＭ（２５）の所定の格納領域に格納する〔図３２参照〕。
次に、検証装置（２）の乱数生成部（２４２）は、ＲＡＭ（２５）からνを読み込み、高々２２ν程度の大きさの乱数ｒを生成し、この乱数ｒをＲＡＭ（２５）の所定の格納領域に格納する（ステップＳ７０６）〔図３２参照〕。なお、乱数生成部（２４２）が、０≦ｒ≦Ｎ・2ν−１の範囲から乱数ｒを生成してもよい。前述のように、このような範囲から乱数ｒが選択される構成が、安全性と演算コストの両立という観点から望ましいからである。また、必ずしもｒは乱数である必要はなく、値が任意に選択されるものであればよい。【０１００】
次に、検証装置（２）の認証情報生成因子生成部（２４３）は、ＲＡＭ（２５）からＮ、ｇ、乱数ｒを読み込み、上記の式（２）に従った演算を行い、この演算結果Ｒ〔認証情報生成因子〕をＲＡＭ（２５）の所定の格納領域に格納する（ステップＳ７０７）〔図３２参照〕。
次に、検証装置（２）のＢ生成部（２４９）は、ＲＡＭ（２５）からＮ、乱数ｒ、Ａを読み込み、式（１３）に従った演算を行い、この演算結果ＢをＲＡＭ（２５）の所定の格納領域に格納する（ステップＳ７０８）〔図３２参照〕。
【数１３】
0004555859.tif 000014
【０１０１】
次に、検証装置（２）の制御部（２９０）の制御に従い、通信部（２３）が、ＲＡＭ（２５）から読み込んだステップＳ７０７、Ｓ７０８で得られた、認証情報生成因子Ｒ、Ｂを証明装置（１）に対して送信する（ステップＳ７０９）〔図３２参照〕。
なお、ステップＳ７０６、Ｓ７０７、Ｓ７０８で得られた乱数ｒ、認証情報生成因子Ｒ、Ｂは、検証装置（２）の制御部（２９０）の制御によって、外部記憶装置（２７）に保存される。
次に、証明装置（１）の制御部（１９０）の制御に従い、通信部（１３）が、ステップＳ７０９において送信された認証情報生成因子Ｒ、Ｂを受信し、この認証情報生成因子Ｒ、Ｂを外部記憶装置（１７）に保存する（ステップＳ７１０）〔図３３参照〕。【０１０２】
次に、証明装置（１）の制御部（１９０）は、外部記憶装置（１７）からＢ、認証情報生成因子Ｒ、乱数ａ、情報ｓ、Ｎを読み込み、それぞれをＲＡＭ（１５）の所定の格納領域に格納する。
次に、証明装置（１）の第１判定部（１６０）は、ＲＡＭ（１５）からＢ、認証情報生成因子Ｒ、乱数ａ、Ｎを読み込み、式（１４）に示す関係が成立するか否かの判定を行う（ステップＳ７１１）〔図３３参照〕。この判定結果が関係不成立の場合には、証明装置（１）の制御部（１９０）の制御の下、以下の処理を実行せずに終了する（ステップＳ７１２）。この判定結果が関係成立の場合には、証明装置（１）の制御部（１９０）の制御の下、続くステップＳ７１３が実行される。
【数１４】
0004555859.tif 000015
【０１０３】
次に、証明装置（１）の認証情報生成部（１４１）は、ＲＡＭ（１５）からＮ、情報ｓ、認証情報生成因子Ｒを読み込み、上記の式（３）に従った演算を行い、この演算結果Ｒ（ｓ）〔認証情報〕をＲＡＭ（１５）の所定の格納領域に格納する（ステップＳ７１３）〔図３３参照〕。
次に、証明装置（１）の制御部（１９０）の制御に従い、通信部（１３）が、ＲＡＭ（１５）から読み込んだステップＳ７１３で得られた認証情報Ｒ（ｓ）およびステップＳ７０２で得られた乱数ａを検証装置（２）に対して送信する（ステップＳ７１４）〔図３３参照〕。【０１０４】
次に、検証装置（２）の制御部（２９０）の制御に従い、通信部（２３）が、ステップＳ７１４において送信された認証情報Ｒ（ｓ）および乱数ａを受信し、この認証情報Ｒ（ｓ）および乱数ａを外部記憶装置（２７）に保存する（ステップＳ７１５）〔図３４参照〕。
次に、検証装置（２）の制御部（２９０）は、外部記憶装置（２７）からＮ、乱数ｒ、認証情報Ｒ（ｓ）、検証情報Ｃ（ｓ）、Ａ、乱数ａ、ｇを読み込み、それぞれをＲＡＭ（２５）の所定の格納領域に格納する〔図３４参照〕。【０１０５】
次に、検証装置（２）の第２判定部（２６０）は、ＲＡＭ（２５）からＡ、ｇ、乱数ａ、Ｎを読み込み、式（１５）に示す関係が成立するか否かの判定を行う（ステップＳ７１６）〔図３４参照〕。この判定結果が関係不成立の場合には、検証装置（２）の制御部（２９０）の制御の下、以下の処理を実行せずに終了する（ステップＳ７１７）。この判定結果が関係成立の場合には、検証装置（２）の制御部（２９０）の制御の下、続くステップＳ１０以降の処理が実行される。ステップＳ１０以降の処理は既に説明したので略する。なお、判定結果が関係不成立の場合に、検証装置（２）が、ステップＳ７１６とステップＳ１０の何れの処理で関係不成立となったのかを、証明装置に送信しない構成が望ましい。この情報が送信されるプロトコルでは安全性が保てないからである。
【数１５】
0004555859.tif 000016
なお、本形態のステップＳ７０２からＳ７０４，Ｓ７１０，Ｓ７１１の各処理を実行する部分が「対話証明部」に相当する。また、本形態のステップＳ７０５からＳ７０９，Ｓ７１５，Ｓ７１６の各処理を実行する部分が「対話検証部」に相当する。【０１０６】
＜第６実施形態＞
次に、本発明の第６実施形態について、図３８から図４４を参照しながら説明する。
第６実施形態は、第５実施形態における計算効率の向上を図る形態である。計算効率の向上を図るための手法は、第３実施形態と同様である。ここでは説明の便宜から、第２実施形態に第５実施形態で説明した本発明独自の対話証明手法を適用し、さらに、第３実施形態で説明した計算効率の向上を図るための手法を適用する構成を説明する。
第６実施形態では、第３実施形態および第５実施形態と同一の機能・処理については同一の符号を与えるなどして説明を省略する。また、以下では、単に情報ｓと云えば、ｋ個の分割情報ｓ０、ｓ１、…、ｓｋ−１の総称を意味するものとする。【０１０７】
［証明装置］
第６実施形態における証明装置（１）は、第５実施形態で説明した証明装置と同様であるから説明を略する。
［検証装置］
第６実施形態における検証装置（２）は、第５実施形態で説明した検証装置と同様であるから説明を略する。
［第三者装置］
第６実施形態における第三者装置（３）は、第２実施形態で説明した第三者装置と同様であるから説明を略する。【０１０８】
[準備］
νを予め定められた自然数とする。νは、証明装置（１）の外部記憶装置（１７）および検証装置（２）の外部記憶装置（２７）に保存されているとする。
[認証]
ステップＳ０ｔからステップＳ３ｖａまでの処理は、第３実施形態における処理と同じであるから説明を略する。
ステップＳ３ｖａに続いて、次のような処理が順次行われる。【０１０９】
まず、検証装置（２）の制御部（２９０）は、外部記憶装置（２７）からν、Ｎ、ｇを読み込み、それぞれをＲＡＭ（２５）の所定の格納領域に格納する〔図３８参照〕。
次に、検証装置（２）の乱数生成部（２４２）は、ＲＡＭ（２５）からνを読み込み、高々νビット程度の大きさの乱数ｕを生成し、この乱数ｕをＲＡＭ（２５）の所定の格納領域に格納する（ステップＳ８００）〔図３８参照〕。
次に、検証装置（２）の制御部（２９０）の制御に従い、通信部（２３）が、ＲＡＭ（２５）から読み込んだ乱数ｕ、Ｎ、ｇを証明装置（１）に対して送信する（ステップＳ８０１）〔図３８参照〕。【０１１０】
なお、ステップＳ８００で得られた乱数ｕは、検証装置（２）の制御部（２９０）の制御によって、外部記憶装置（２７）に保存される。
次に、証明装置（１）の制御部（１９０）の制御に従い、通信部（１３）が、ステップＳ８０１において送信された乱数ｕ、Ｎ、ｇを受信し、この乱数ｕ、Ｎ、ｇを外部記憶装置（１７）に保存する（ステップＳ８０２）〔図３９参照〕。
ステップＳ８０２に続いてステップＳ７０２からＳ７１２が処理されるが、第５実施形態において説明したとおりであるから、説明を略する。【０１１１】
ステップＳ７１１に続いて（つまり、ステップＳ７１２の終了処理をしない場合である。）、次のステップＳ８０３が処理される。即ち、証明装置（１）の認証情報生成部（１４１）は、ＲＡＭ（１５）からＮ、情報ｓ、認証情報生成因子Ｒ、乱数ｕ、Ａ、Ｂを読み込み（予め外部記憶装置（１７）から読み込まれているとする。）、式（１６）に従った演算を行い、この演算結果Ｒ（ｓ）〔認証情報〕をＲＡＭ（１５）の所定の格納領域に格納する（ステップＳ８０３）〔図４０参照〕。
【数１６】
0004555859.tif 000017
【０１１２】
ステップＳ８０３に続き、ステップＳ８、Ｓ９、Ｓ７１６が順次処理されるが、第５実施形態において説明したとおりであるから、説明を略する。
ステップＳ７１６に続いて（つまり、ステップＳ７１７の終了処理をしない場合である。）、次のステップＳ８０４が処理される。即ち、検証装置（２）の判定部（２４４）は、ＲＡＭ（２５）からＮ、乱数ｒ、乱数ｕ、認証情報生成因子Ｒ、認証情報Ｒ（ｓ）、検証情報Ｃ（ｓ）、Ａ、Ｂを読み込み（予め外部記憶装置（２７）から読み込まれているとする。）、式（１７）に示す関係が成立するか否かの判定を行う（ステップＳ８０４）〔図４１参照〕。
【数１７】
0004555859.tif 000018
【０１１３】
ステップＳ８０４に続くステップＳ１１およびＳ１２の処理は、第３実施形態における処理と同じであるから説明を略する。
本発明である認証システム・方法は上述の実施形態に限定されるものではなく、本発明の趣旨を逸脱しない範囲で適宜変更が可能である。
例えば、各実施形態では、「可換な半群」として、定数Ｎを法とした剰余環の乗法についての巡回群を用いた。しかし、本発明で用いることが可能な「可換な半群」はこれに限定されない。例えば、多項式を法とした剰余環の乗法についての巡回群を「可換な半群」として用いてもよい。【０１１４】
また、各実施形態では、可換な半群で定義された冪乗演算の底（例えばｇ）を、自然数などの数値とした。しかし、この冪乗演算の底を多項式としてもよい。
また、各実施形態では、Ｎは、素数であることが判定可能な数を除く自然数であって、素因数分解が困難な数であることが望ましいと説明した。しかし、これ以外のＮを用いてもよい。例えば、３つ以上の素数の積からなる合成数をＮとしてもよい。また、例えば、攻撃者の存在を無視できる用途に本発明を適用するのであれば、安全性の観点からは、Ｎはどのような値であってもかまわない。すなわち、このような用途に本発明を適用するのであれば、「可換な半群」は、必ずしも、その半群で定義された有限集合の位数の算出が困難なものである必要はない。【０１１５】
また、第２実施形態、第３実施形態及び第６実施形態において関数Ｈ（ｉ，ｕ，Ｒ）を用いない構成としてもよい。この場合の各処理は、例えば、Ｈ（ｉ，ｕ，Ｒ）＝１とおいたものとなる。
各実施形態で用いた乱数の代わりにその他の任意の数を用いてもよい。また、各実施形態で、外部記憶装置に格納されると説明したデータが、ＲＡＭに格納されてもよいし、ＲＡＭに格納されると説明したデータが、外部記憶装置に格納されてもよい。
その他、認証情報の生成方法や判定の方法は適宜に変更可能である。また、上記認証システム・方法において説明した処理は、記載の順に従って時系列に実行されるのみならず、処理を実行する装置の処理能力あるいは必要に応じて並列的にあるいは個別に実行されるとしてもよい。【０１１６】
また、上記証明装置、検証装置、第三者装置における処理機能を、プロセッサを中心に構成されるコンピュータによって実現する場合、証明装置、検証装置、第三者装置が有すべき機能の処理内容はプログラムによって記述される。そして、このプログラムをコンピュータで実行することにより、上記証明装置、検証装置、第三者装置における処理機能がコンピュータ上で実現される。
この処理内容を記述したプログラムは、コンピュータで読み取り可能な記録媒体に記録しておくことができる。コンピュータで読み取り可能な記録媒体としては、例えば、磁気記録装置、光ディスク、光磁気記録媒体、半導体メモリ等どのようなものでもよい。具体的には、例えば、磁気記録装置として、ハードディスク装置、フレキシブルディスク、磁気テープ等を、光ディスクとして、ＤＶＤ（Digital Versatile Disc）、ＤＶＤ−ＲＡＭ（Random Access Memory）、ＣＤ−ＲＯＭ（Compact Disc Read Only Memory）、ＣＤ−Ｒ（Recordable）／ＲＷ（ReWritable）等を、光磁気記録媒体として、ＭＯ（Magneto-Optical disc）等を、半導体メモリとしてＥＥＰ−ＲＯＭ（Electronically Erasable and Programmable-Read Only Memory）等を用いることができる。【０１１７】
また、このプログラムの流通は、例えば、そのプログラムを記録したＤＶＤ、ＣＤ−ＲＯＭ等の可搬型記録媒体を販売、譲渡、貸与等することによって行う。さらに、このプログラムをサーバコンピュータの記憶装置に格納しておき、ネットワークを介して、サーバコンピュータから他のコンピュータにそのプログラムを転送することにより、このプログラムを流通させる構成としてもよい。
このようなプログラムを実行するコンピュータは、例えば、まず、可搬型記録媒体に記録されたプログラムもしくはサーバコンピュータから転送されたプログラムを、一旦、自己の記憶装置に格納する。そして、処理の実行時、このコンピュータは、自己の記録媒体に格納されたプログラムを読み取り、読み取ったプログラムに従った処理を実行する。また、このプログラムの別の実行形態として、コンピュータが可搬型記録媒体から直接プログラムを読み取り、そのプログラムに従った処理を実行することとしてもよく、さらに、このコンピュータにサーバコンピュータからプログラムが転送されるたびに、逐次、プロセッサが、受け取ったプログラムに従った処理を実行することとしてもよい。また、サーバコンピュータから、このコンピュータへのプログラムの転送は行わず、その実行指示と結果取得のみによって処理機能を実現する、いわゆるＡＳＰ（Application Service Provider）型のサービスによって、上述の処理を実行する構成としてもよい。なお、本形態におけるプログラムには、電子計算機による処理の用に供する情報であってプログラムに準ずるもの（コンピュータに対する直接の指令ではないがコンピュータの処理を規定する性質を有するデータ等）を含むものとする。【０１１８】
また、この形態では、コンピュータ上で所定のプログラムを実行させることにより、証明装置、検証装置、第三者装置を構成することとしたが、これらの処理内容の少なくとも一部をハードウェア的に実現することとしてもよい。
【産業上の利用可能性】
【０１１９】
本発明は、特定ないし不特定の証明装置が所定の情報を保持していることの認証に有用である。本発明は、各分野に汎用性のある基盤的技術に関するものであるが、本発明の具体的な利用分野としては、例えば、ファイル流通又はネットワークストレージサービスでの監視や相手認証、高品質デジタルメディア配信やデータベースの整合性確認などを例示できる。
【図１】
0004555859.tif 000019
【図２】
0004555859.tif 000020
【図３】
0004555859.tif 000021
【図４】
0004555859.tif 000022
【図５】
0004555859.tif 000023
【図６】
0004555859.tif 000024
【図７】
0004555859.tif 000025
【図８】
0004555859.tif 000026
【図９】
0004555859.tif 000027
【図１０】
0004555859.tif 000028
【図１１】
0004555859.tif 000029
【図１２】
0004555859.tif 000030
【図１３】
0004555859.tif 000031
【図１４】
0004555859.tif 000032
【図１５】
0004555859.tif 000033
【図１６】
0004555859.tif 000034
【図１７】
0004555859.tif 000035
【図１８】
0004555859.tif 000036
【図１９】
0004555859.tif 000037
【図２０】
0004555859.tif 000038
【図２１】
0004555859.tif 000039
【図２２】
0004555859.tif 000040
【図２３】
0004555859.tif 000041
【図２４】
0004555859.tif 000042
【図２５】
0004555859.tif 000043
【図２６】
0004555859.tif 000044
【図２７】
0004555859.tif 000045
【図２８】
0004555859.tif 000046
【図２９】
0004555859.tif 000047
【図３０】
0004555859.tif 000048
【図３１】
0004555859.tif 000049
【図３２】
0004555859.tif 000050
【図３３】
0004555859.tif 000051
【図３４】
0004555859.tif 000052
【図３５】
0004555859.tif 000053
【図３６】
0004555859.tif 000054
【図３７】
0004555859.tif 000055
【図３８】
0004555859.tif 000056
【図３９】
0004555859.tif 000057
【図４０】
0004555859.tif 000058
【図４１】
0004555859.tif 000059
【図４２】
0004555859.tif 000060
【図４３】
0004555859.tif 000061
【図４４】
0004555859.tif 000062