(57)【特許請求の範囲】
【請求項１】
認証または鍵交換のプロトコルの安全性を検証する検証装置であって、
前記プロトコルにおいて使用されている暗号プリミティブの役割に対して設定される所定のフレームワークに適合する、前記安全性のそれぞれの要件を満たすための検証項目の少なくとも一部を記憶する記憶部と、
前記暗号プリミティブの種類を設定する種類設定部と、
前記種類設定部により種類が設定された前記暗号プリミティブの役割を設定する役割設定部と、
前記プロトコルにおけるデータの種類と状態、または前記暗号プリミティブの値の種類と状態とを示す要素を設定する要素設定部と、
要求に応じて検証対象の前記安全性を選択する安全性選択部と、
前記安全性選択部により選択された前記安全性それぞれに関する前記検証項目を前記記憶部から抽出し、前記暗号プリミティブの種類および役割ならびに前記要素設定部により設定された要素に基づいて、当該検証項目を満足するか否かを判定する検証項目判定部と、
前記安全性選択部により選択された全ての安全性に関する検証項目を満足していると前記検証項目判定部により判定された場合に、前記プロトコルが安全であると判定する安全性判定部と、を備え、
前記記憶部は、検証対象である前記安全性のそれぞれに対応して、前記プロトコルのフローに応じて前記暗号プリミティブの役割、または前記データもしくは前記暗号プリミティブの値の種類と状態とを規定する設定規則をさらに記憶し、
前記役割設定部は、前記設定規則に基づいて前記暗号プリミティブの役割を決定し、
前記要素設定部は、前記設定規則に基づいて前記データまたは前記暗号プリミティブの値の種類と状態とを決定する検証装置。
【請求項２】
前記設定規則は、前記鍵交換のプロトコルにおける受動的攻撃に対する安全性、能動的攻撃に対する安全性、既知鍵攻撃に対する安全性、未知鍵共有攻撃に対する安全性、弱前方秘匿性（ｗｅａｋ  ｆｏｒｗａｒｄ  ｓｅｃｒｅｃｙ）、強前方秘匿性（ｓｔｒｏｎｇ  ｆｏｒｗａｒｄ  ｓｅｃｒｅｃｙ）、鍵プライバシおよび弱後方秘匿性（ｗｅａｋ  ｂａｃｋｗａｒｄ  ｓｅｃｒｅｃｙ）の少なくともいずれかの検証に要する、前記暗号プリミティブの役割、または前記データもしくは前記暗号プリミティブの値の種類と状態とを規定する規則を含む請求項１に記載の検証装置。
【請求項３】
前記フレームワークは、ｇ（ｆ（Ａ，Ｂ），Ｃ）と表現され、
関数ｇの役割は、前記認証のプロトコルにおける認証の対象となる第１の暗号プリミティブ、前記鍵交換のプロトコルにおける鍵生成対象となる第２の暗号プリミティブ、フロー上に現れるパスワードを含む第３の暗号プリミティブ、または前記第１から第３の暗号プリミティブおよび前記第１から第３の暗号プリミティブの引数に含まれる第４の暗号プリミティブのいずれでもない第５の暗号プリミティブのいずれかであり、
関数ｆの役割は、関数ｇの役割が前記第１から第３の暗号プリミティブのいずれかである場合には、前記第４の暗号プリミティブであり、関数ｇの役割が前記第５の暗号プリミティブである場合には、前記第１から第３の暗号プリミティブのいずれかであり、
引数Ａ、ＢおよびＣは、前記暗号プリミティブの値または前記データであることを特徴とする請求項１または請求項２に記載の検証装置。
【請求項４】
前記フレームワークの関数に設定される前記第１から第４の暗号プリミティブの種類は、共通鍵暗号、パスワードを用いた暗号化、公開鍵暗号、公開鍵復号、Ｄｉｆｆｉｅ−Ｈｅｌｌｍａｎ族、ディジタル署名、ハッシュ関数またはメッセージ認証コードのいずれかであり、
当該関数の引数は、前記データとしての、一般データ、ＩＤデータ、テンポラリデータ、固定データ、長期鍵、テンポラリ鍵、パスワード、テンポラリパスワード、カウンタもしくは時刻情報、または前記暗号プリミティブの値としての、固定値、テンポラリ値もしくはテンポラリ鍵値と、公開状態または秘密状態と、の組合せを示す要素値である請求項３に記載の検証装置。
【請求項５】
前記認証または鍵交換のプロトコルにおける検証項目は、関数ｇおよび関数ｆの種類と、引数Ａ、引数Ｂおよび引数Ｃのそれぞれに設定される要素値と、の組合せであることを特徴とする請求項４に記載の検証装置。
【請求項６】
コンピュータが認証または鍵交換のプロトコルの安全性を検証する検証方法であって、
前記コンピュータは、前記プロトコルにおいて使用されている暗号プリミティブの役割に対して設定される所定のフレームワークに適合する、前記安全性のそれぞれの要件を満たすための検証項目の少なくとも一部を記憶する記憶部を備え、
前記コンピュータを、前記暗号プリミティブの種類を設定する種類設定部として機能させる種類設定ステップと、
前記コンピュータを、前記種類設定ステップにより種類が設定された暗号プリミティブの役割を設定する役割設定部として機能させる役割設定ステップと、
前記コンピュータを、前記プロトコルにおけるデータの種類と状態、または前記暗号プリミティブの値の種類と状態とを示す要素を設定する要素設定部として機能させる要素設定ステップと、
前記コンピュータを、要求に応じて検証対象の安全性を選択する安全性選択部として機能させる安全性選択ステップと、
前記コンピュータを、前記安全性選択ステップにより選択された安全性それぞれに関する検証項目を前記記憶部から抽出し、前記暗号プリミティブの種類および役割ならびに前記要素設定ステップにより設定された要素に基づいて、当該検証項目を満足するか否かを判定する検証項目判定部として機能させる検証項目判定ステップと、
前記コンピュータを、前記安全性選択ステップにおいて選択された全ての安全性に関する検証項目を満足していると前記検証項目判定ステップにおいて判定された場合に、前記プロトコルが安全であると判定する安全性判定部として機能させる安全性判定ステップと、を含み、
前記記憶部は、検証対象である前記安全性のそれぞれに対応して、前記プロトコルのフローに応じて前記暗号プリミティブの役割、または前記データもしくは前記暗号プリミティブの値の種類と状態とを規定する設定規則をさらに記憶し、
前記役割設定ステップにおいては、前記設定規則に基づいて前記暗号プリミティブの役割を決定し、
前記要素設定ステップにおいては、前記設定規則に基づいて前記データまたは前記暗号プリミティブの値の種類と状態とを決定する検証方法。
【請求項７】
コンピュータを請求項１に記載の検証装置として機能させるための検証プログラム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、認証や鍵共有等のセキュリティ機能を有する認証または鍵交換のプロトコルの安全性を検証する検証装置、検証方法および検証プログラムに関する。
【背景技術】
【０００２】
従来、プロトコル設計者の有するセキュリティや暗号技術の見識に基づき、経験的に安全な認証または鍵交換のプロトコルが提案されてきた。しかしながら、提案された認証または鍵交換のプロトコルの仕様が公開された後に、セキュリティ上の脆弱性が指摘される場合があった。標準化された認証または鍵交換のプロトコルが製品等を通じて広く普及した後に脆弱性が発見されると、製品等の改修に関わるコストが大きな問題となる。
【０００３】
特に、致命的な脆弱性が発見された場合には、経済的な損害を回避するため、ソフトウェアのパッチの充当やハードウェアのチップや部品の交換等、早急に対処する必要が生じる。したがって、提案された認証または鍵交換のプロトコルや関連製品が普及するほど、社会的な影響は非常に大きくなり、場合によってはシステム全体が破綻してしまう可能性もある。
【０００４】
そこで、「汎用結合可能安全性」と呼ばれる概念を利用した、認証または鍵交換のプロトコルの安全性を検証するための装置、方法およびプログラムが提案されている（例えば、特許文献１、特許文献２参照）。ここで、「汎用結合可能安全性」とは、ある認証または鍵交換のプロトコルがそのセキュリティ機能に関する理想機能を安全に実現するならば、この認証または鍵交換のプロトコルは安全であることを意味している。例えば、ある鍵交換プロトコルが鍵交換理想機能を安全に実現するならば、この鍵交換プロトコルは安全であることが示されたことになる。
【先行技術文献】
【特許文献】
【０００５】
【特許文献１】特開２００７−２８４４７号公報
【特許文献２】特開２００８−３５１１７号公報
【発明の概要】
【発明が解決しようとする課題】
【０００６】
上記の「汎用結合可能安全性」は、現在最も強力な安全性であると言われており、理想機能はセキュリティ機能に要求される全ての安全性を網羅する。そのため、ある認証または鍵交換のプロトコルがその理想機能を安全に実現するとき、この認証または鍵交換のプロトコルはセキュリティ機能に要求される全ての安全性を満足することになる。
【０００７】
ところが、プロトコルの安全性と効率性とはトレードオフの関係にあるため、認証または鍵交換のプロトコルの安全性を高くするほど効率性は低くなる。そのため、認証または鍵交換のプロトコルの効率性を重要視するときには、許容される限度まで安全性を低くしてよい。しかしながら、上記の先行技術では、認証または鍵交換のプロトコルの厳密な安全性を検証することはできても、安全性のレベルに応じた検証を行うことができない。
【０００８】
そこで、本発明は、認証または鍵交換のプロトコルを安全性のレベルに応じて検証することができる検証装置、検証方法および検証プログラムを提供することを目的とする。
【課題を解決するための手段】
【０００９】
本発明では、以下のような解決手段を提供する。
【００１０】
（１）認証または鍵交換のプロトコルの安全性を検証する検証装置であって、前記プロトコルにおいて使用されている暗号プリミティブの役割に対して設定される所定のフレームワークに適合する、前記安全性のそれぞれの要件を満たすための検証項目の少なくとも一部を記憶する記憶部と、前記暗号プリミティブの種類を設定する種類設定部と、前記種類設定部により種類が設定された前記暗号プリミティブの役割を設定する役割設定部と、前記プロトコルにおけるデータの種類と状態、または前記暗号プリミティブの値の種類と状態とを示す要素を設定する要素設定部と、要求に応じて検証対象の前記安全性を選択する安全性選択部と、前記安全性選択部により選択された前記安全性それぞれに関する前記検証項目を前記記憶部から抽出し、前記暗号プリミティブの種類および役割ならびに前記要素設定部により設定された要素に基づいて、当該検証項目を満足するか否かを判定する検証項目判定部と、前記安全性選択部により選択された全ての安全性に関する検証項目を満足していると前記検証項目判定部により判定された場合に、前記プロトコルが安全であると判定する安全性判定部と、を備え、前記記憶部は、検証対象である前記安全性のそれぞれに対応して、前記プロトコルのフローに応じて前記暗号プリミティブの役割、または前記データもしくは前記暗号プリミティブの値の種類と状態とを規定する設定規則をさらに記憶し、前記役割設定部は、前記設定規則に基づいて前記暗号プリミティブの役割を決定し、前記要素設定部は、前記設定規則に基づいて前記データまたは前記暗号プリミティブの値の種類と状態とを決定する検証装置。
【００１１】
（２）前記設定規則は、前記鍵交換のプロトコルにおける受動的攻撃に対する安全性、能動的攻撃に対する安全性、既知鍵攻撃に対する安全性、未知鍵共有攻撃に対する安全性、弱前方秘匿性（ｗｅａｋ  ｆｏｒｗａｒｄ  ｓｅｃｒｅｃｙ）、強前方秘匿性（ｓｔｒｏｎｇ  ｆｏｒｗａｒｄ  ｓｅｃｒｅｃｙ）、鍵プライバシおよび弱後方秘匿性（ｗｅａｋ  ｂａｃｋｗａｒｄ  ｓｅｃｒｅｃｙ）の少なくともいずれかの検証に要する、前記暗号プリミティブの役割、または前記データもしくは前記暗号プリミティブの値の種類と状態とを規定する規則を含む（１）に記載の検証装置。
【００１２】
（３）前記フレームワークは、ｇ（ｆ（Ａ，Ｂ），Ｃ）と表現され、関数ｇの役割は、前記認証のプロトコルにおける認証の対象となる第１の暗号プリミティブ、前記鍵交換のプロトコルにおける鍵生成対象となる第２の暗号プリミティブ、フロー上に現れるパスワードを含む第３の暗号プリミティブ、または前記第１から第３の暗号プリミティブおよび前記第１から第３の暗号プリミティブの引数に含まれる第４の暗号プリミティブのいずれでもない第５の暗号プリミティブのいずれかであり、関数ｆの役割は、関数ｇの役割が前記第１から第３の暗号プリミティブのいずれかである場合には、前記第４の暗号プリミティブであり、関数ｇの役割が前記第５の暗号プリミティブである場合には、前記第１から第３の暗号プリミティブのいずれかであり、引数Ａ、ＢおよびＣは、前記暗号プリミティブの値または前記データであることを特徴とする（１）または（２）に記載の検証装置。
【００１３】
（４）前記フレームワークの関数に設定される前記第１から第４の暗号プリミティブの種類は、共通鍵暗号、パスワードを用いた暗号化、公開鍵暗号、公開鍵復号、Ｄｉｆｆｉｅ−Ｈｅｌｌｍａｎ族、ディジタル署名、ハッシュ関数またはメッセージ認証コードのいずれかであり、当該関数の引数は、前記データとしての、一般データ、ＩＤデータ、テンポラリデータ、固定データ、長期鍵、テンポラリ鍵、パスワード、テンポラリパスワード、カウンタもしくは時刻情報、または前記暗号プリミティブの値としての、固定値、テンポラリ値もしくはテンポラリ鍵値と、公開状態または秘密状態と、の組合せを示す要素値である（３）に記載の検証装置。
【００１４】
（５）前記認証または鍵交換のプロトコルにおける検証項目は、関数ｇおよび関数ｆの種類と、引数Ａ、引数Ｂおよび引数Ｃのそれぞれに設定される要素値と、の組合せであることを特徴とする（４）に記載の検証装置。
【００１５】
（６）コンピュータが認証または鍵交換のプロトコルの安全性を検証する検証方法であって、当該コンピュータは、前記プロトコルにおいて使用されている暗号プリミティブの役割に対して設定される所定のフレームワークに適合する、前記安全性のそれぞれの要件を満たすための検証項目の少なくとも一部を記憶する記憶部を備え、前記暗号プリミティブの種類を設定する種類設定ステップと、前記種類設定ステップにより種類が設定された暗号プリミティブの役割を設定する役割設定ステップと、前記プロトコルにおけるデータの種類と状態、または前記暗号プリミティブの値の種類と状態とを示す要素を設定する要素設定ステップと、要求に応じて検証対象の安全性を選択する安全性選択ステップと、前記安全性選択ステップにより選択された安全性それぞれに関する検証項目を前記記憶部から抽出し、前記暗号プリミティブの種類および役割ならびに前記要素設定ステップにより設定された要素に基づいて、当該検証項目を満足するか否かを判定する検証項目判定ステップと、前記安全性選択ステップにおいて選択された全ての安全性に関する検証項目を満足していると前記検証項目判定ステップにおいて判定された場合に、前記プロトコルが安全であると判定する安全性判定ステップと、を含み、前記記憶部は、検証対象である前記安全性のそれぞれに対応して、前記プロトコルのフローに応じて前記暗号プリミティブの役割、または前記データもしくは前記暗号プリミティブの値の種類と状態とを規定する設定規則をさらに記憶し、前記役割設定ステップにおいては、前記設定規則に基づいて前記暗号プリミティブの役割を決定し、前記要素設定ステップにおいては、前記設定規則に基づいて前記データまたは前記暗号プリミティブの値の種類と状態とを決定する検証方法。
【００１６】
（７）コンピュータに認証または鍵交換のプロトコルの安全性を検証させる検証プログラムであって、当該コンピュータは、前記プロトコルにおいて使用されている暗号プリミティブの役割に対して設定される所定のフレームワークに適合する、前記安全性のそれぞれの要件を満たすための検証項目の少なくとも一部を記憶する記憶部を備え、前記暗号プリミティブの種類を設定する種類設定ステップと、前記種類設定ステップにより種類が設定された暗号プリミティブの役割を設定する役割設定ステップと、前記プロトコルにおけるデータの種類と状態、または前記暗号プリミティブの値の種類と状態とを示す要素を設定する要素設定ステップと、要求に応じて検証対象の安全性を選択する安全性選択ステップと、前記安全性選択ステップにより選択された安全性それぞれに関する検証項目を前記記憶部から抽出し、前記暗号プリミティブの種類および役割ならびに前記要素設定ステップにより設定された要素に基づいて、当該検証項目を満足するか否かを判定する検証項目判定ステップと、前記安全性選択ステップにおいて選択された全ての安全性に関する検証項目を満足していると前記検証項目判定ステップにおいて判定された場合に、前記プロトコルが安全であると判定する安全性判定ステップと、を実行させ、前記記憶部は、検証対象である前記安全性のそれぞれに対応して、前記プロトコルのフローに応じて前記暗号プリミティブの役割、または前記データもしくは前記暗号プリミティブの値の種類と状態とを規定する設定規則をさらに記憶し、前記役割設定ステップにおいては、前記設定規則に基づいて前記暗号プリミティブの役割を決定させ、前記要素設定ステップにおいては、前記設定規則に基づいて前記データまたは前記暗号プリミティブの値の種類と状態とを決定させる検証プログラム。
【発明の効果】
【００１７】
本発明によれば、認証または鍵交換のプロトコルを安全性のレベルに応じて検証することができる。
【図面の簡単な説明】
【００１８】
【図１】本発明の実施形態に係る２者間プロトコルに対する安全性モデルを示す図である。
【図２】本発明の実施形態に係る３者間および４者間プロトコルに対する安全性モデルを示す図である。
【図３】本発明の実施形態に係るグループ間プロトコルに対する安全性モデルを示す図である。
【図４】本発明の実施形態に係る各攻撃に関係するデータと、フレームワーク内の関数の組合せと、を示した図である。
【図５】本発明の実施形態に係るＭＣ−ＳＩＡの検証項目を示す図である。
【図６】本発明の実施形態に係るＭＣ−ＲＫＣＩの検証項目を示す図である。
【図７】本発明の実施形態に係るＳＳ−ＳＰＡの検証項目を示す図である。
【図８】本発明の実施形態に係るＳＳ−ＳＡＡの検証項目を示す図である。
【図９】本発明の実施形態に係るＳＳ−ＫＫＳの検証項目を示す図である。
【図１０】本発明の実施形態に係るＳＳ−ＲＵＫＳの検証項目を示す図である。
【図１１】本発明の実施形態に係るＳＳ−ＷＦＳの検証項目を示す図である。
【図１２】本発明の実施形態に係るＳＳ−ＳＦＳの検証項目を示す図である。
【図１３】本発明の実施形態に係るＳＳ−ＫＰの検証項目を示す図である。
【図１４】本発明の実施形態に係るＳＳ−ＷＢＳの検証項目を示す図である。
【図１５】本発明の実施形態に係るＲＯＤＡの検証項目を示す図である。
【図１６】本発明の実施形態に係るＲＵＯＤＡの検証項目を示す図である。
【図１７】本発明の実施形態に係る検証装置の構成を示す図である。
【図１８】本発明の実施形態に係る検証方法の流れを示すフローチャートである。
【発明を実施するための形態】
【００１９】
以下、本発明の実施形態の一例について説明する。
【００２０】
＜セキュリティモデル＞
まず、認証または鍵交換のプロトコルの安全性レベルに関するセキュリティモデルを示す。本実施形態では、計算量理論に基づいて認証または鍵交換のプロトコルの安全性を証明する「証明可能安全性」と呼ばれる概念を用いる。「認証または鍵交換のプロトコルが証明可能安全性を有する」とは、認証または鍵交換のプロトコルの安全性が、ある暗号プリミティブの安全性に帰着することを計算量理論的に証明可能であることを示している。すなわち、ある認証または鍵交換のプロトコルを破ることができる攻撃者は、ある暗号プリミティブを多項式時間で破るマシンを構成可能であることを証明することにより、この暗号プリミティブが破られなければ、認証または鍵交換のプロトコルも破られないことを証明する。
【００２１】
上記の証明可能安全性において、認証プロトコルではｍａｔｃｈｉｎｇ  ｃｏｎｖｅｒｓａｔｉｏｎ、鍵交換プロトコルではｓｅｍａｎｔｉｃ  ｓｅｃｕｒｉｔｙという安全性の概念がある。それぞれの概念に対し、認証または鍵交換のプロトコルに要求される以下のような安全性要件が存在する。なお、括弧内は各安全性を示す略記号である。
【００２２】
（１）ｍａｔｃｈｉｎｇ  ｃｏｎｖｅｒｓａｔｉｏｎ（ＭＣ）
この安全性は、認証プロトコルにおいて、攻撃者が一方のパーティから受信したメッセージをそのままもう一方のパーティへ送ること以外に何もできないことを示す。すなわち、この安全性は、攻撃者がメッセージの改ざんや新規メッセージの送付、メッセージの遮断、メッセージの順番の入れ替え等の不正を行うことができないことを示す。
【００２３】
（１−Ａ）なりすまし攻撃に対する安全性（ＭＣ−ＳＩＡ）
攻撃者がパーティ間の通信を支配しても、認証プロトコルを破ることはできないことを示す。
【００２４】
（１−Ｂ）鍵漏洩なりすまし攻撃に対する安全性（ＭＣ−ＲＫＣＩ）
攻撃者が共通鍵暗号の共通鍵やパスワード、公開鍵暗号の秘密鍵等のあるパーティの長期鍵を得ることができたとしても、そのパーティ以外のパーティになりすますことはできないことを示す。
【００２５】
（２）ｓｅｍａｎｔｉｃ  ｓｅｃｕｒｉｔｙ（ＳＳ）
この安全性は、鍵交換プロトコルにおいて、攻撃者はセッション鍵に関するどんな情報も得ることができないことを示す。すなわち、この安全性は、攻撃者がセッション鍵と乱数を多項式時間で区別することができないことを示す。
【００２６】
（２−Ａ）受動的攻撃に対する安全性（ＳＳ−ＳＰＡ）
攻撃者がパーティ間の通信を盗聴しても、鍵交換プロトコルを破ることはできないことを示す。
【００２７】
（２−Ｂ）能動的攻撃に対する安全性（ＳＳ−ＳＡＡ）
攻撃者がパーティ間の通信を支配しても、鍵交換プロトコルを破ることはできないことを示す。
【００２８】
（２−Ｃ）既知鍵攻撃に対する安全性（ＳＳ−ＫＫＳ）
攻撃者があるセッション鍵を得ることができたとしても、それとは別のセッション鍵を得ることはできないことを示す。
【００２９】
（２−Ｄ）未知鍵共有攻撃に対する安全性（ＳＳ−ＲＵＫＳ）
あるパーティが正しいと思っているパーティとは別のパーティとセッション鍵を共有することはできないことを示す。
【００３０】
（２−Ｅ）ｗｅａｋ  ｆｏｒｗａｒｄ  ｓｅｃｒｅｃｙ（ＳＳ−ＷＦＳ）
攻撃者が共通鍵暗号の共通鍵やパスワード、公開鍵暗号の秘密鍵等のパーティの長期鍵を得ることができたとしても、それ以前に共有されたセッション鍵を得ることはできないことを示す。
【００３１】
（２−Ｆ）ｓｔｒｏｎｇ  ｆｏｒｗａｒｄ  ｓｅｃｒｅｃｙ（ＳＳ−ＳＦＳ）
攻撃者が共通鍵暗号の共通鍵やパスワード、公開鍵暗号の秘密鍵等のパーティの長期鍵と内部状態を得ることができたとしても、それ以前に共有されたセッション鍵を得ることはできないことを示す。
【００３２】
（２−Ｇ）鍵プライバシ（ＳＳ−ＫＰ）
鍵交換プロトコルを正しく実行するがセッション鍵を知りたがっている攻撃者もセッション鍵を得ることはできないことを示す。
【００３３】
（２−Ｈ）ｗｅａｋ  ｂａｃｋｗａｒｄ  ｓｅｃｒｅｃｙ（ＳＳ−ＷＢＳ）
攻撃者がパーティの内部状態を得ることができたとしても、そのセッション以降に共有されたセッション鍵を得ることはできないことを示す。
【００３４】
（３）共通の安全性要件
この安全性は、認証および鍵交換のプロトコルに共通の安全性要件である。
【００３５】
（３−Ａ）オフライン辞書攻撃に対する安全性（ＲＯＤＡ）
攻撃者がパスワード推測用の辞書からオフラインで過去の履歴に一致するパーティのパスワードを探索することはできないことを示す。
【００３６】
（３−Ｂ）検出不可能なオンライン辞書攻撃に対する安全性（ＲＵＯＤＡ）
パスワードが登録されているパーティは、攻撃者がパスワードを問い合わせていることを検出できることを示す。
【００３７】
ただし、長期鍵を使用しない認証または鍵交換のプロトコルの場合、（１−Ｂ）ＭＣ−ＲＫＣＩ、（２−Ｅ）ＳＳ−ＷＦＳおよび（２−Ｆ）ＳＳ−ＳＦＳの安全性は要求されない。特に、パスワードを使用しない認証または鍵交換のプロトコルの場合、（３−Ａ）ＲＯＤＡおよび（３−Ｂ）ＲＵＯＤＡの安全性は要求されない。
【００３８】
以上の各種攻撃に対する安全性については、２者間プロトコルでは外部攻撃者のみが想定される。ところが、３者間プロトコル、４者間プロトコル、グループ間プロトコル等のようにユーザ数が増加すると、外部攻撃者のみでなく、正規ユーザの資格を有する内部攻撃者であるユーザ（クライアント）または管理者（サーバ）による不正も想定される。また、グループ間プロトコルの場合、管理者の有無等により安全性モデルが異なる。
【００３９】
そこで、攻撃者の種類を以下のように分類し、安全性モデルの有無を示す。
（ａ）外部攻撃者
・攻撃者：個々のユーザ
・非攻撃者：他のユーザ、管理者（いない場合も含む）
（ｂ）内部攻撃者（ｉ）
・攻撃者：個々のユーザ
・非攻撃者：他のユーザ、管理者（いない場合も含む）
（ｃ）内部攻撃者（ｉｉ）
・攻撃者：個々のユーザ、管理者
・非攻撃者：他のユーザ
【００４０】
図１は、２者間プロトコルに対する安全性モデルを示す図である。
２者間プロトコルでは、外部攻撃者のみが想定され、サーバの不正を対象とするＳＳ−ＫＰおよびグループ間プロトコルを対象とするＳＳ−ＷＢＳは考慮されない。
【００４１】
図２は、３者間および４者間プロトコルに対する安全性モデルを示す図である。
３者間および４者間プロトコルでは、外部攻撃者に加えて内部攻撃者が想定される。ただし、サーバの不正を対象とするＳＳ−ＫＰは、内部攻撃者（ｉｉ）のみであり、また、グループ間プロトコルを対象とするＳＳ−ＷＢＳは考慮されない。
【００４２】
図３は、グループ間プロトコルに対する安全性モデルを示す図である。
グループ間プロトコルでは、ＳＳ−ＷＢＳが考慮され、また、サーバの不正を対象とするＳＳ−ＫＰは、内部攻撃者（ｉｉ）のみが想定される。
【００４３】
ここで、認証または鍵交換のプロトコルにおいて使用されている暗号プリミティブの種類は以下の目的を有する関数である。なお、括弧内は各暗号プリミティブの種類を示す略記号である。
・共通鍵暗号（ＳＫＥ）：共有鍵を用いた暗号化目的の関数
・パスワードを用いた暗号化（ＥＰＷ）：共有パスワードを用いた暗号化目的の関数
・公開鍵暗号（ＰＫＥ）：公開鍵を用いた暗号化目的の関数
・公開鍵復号（ＰＫＤ）：公開鍵暗号方式における秘密鍵を用いた復号目的の関数
・Ｄｉｆｆｉｅ−Ｈｅｌｌｍａｎ族（ＤＨ）：Ｄｉｆｆｉｅ−Ｈｅｌｌｍａｎ法を用いた鍵交換目的の関数
・ディジタル署名（ＳＩＧ）：署名鍵を用いて署名を生成する目的の関数
・ハッシュ関数（ＨＦ）：共有鍵を用いずにダイジェストを生成する目的の関数
・メッセージ認証コード（ＭＡＣ）：共有鍵を用いてダイジェストを生成する目的の関数
【００４４】
これらの種類は、暗号プリミティブの関数が担っている目的により分類される。例えば、共有鍵を用いてダイジェストを生成しているハッシュ関数は、メッセージ認証コードの目的を担っているため、ＭＡＣに分類される。
【００４５】
また、上記の暗号プリミティブの種類に設定される役割は以下の通りである。なお、括弧内は各役割を示す略記号である。
・認証プロトコルにおける認証対象となる暗号プリミティブ（ＰＡＧ）
・鍵交換プロトコルにおける鍵生成対象となる暗号プリミティブ（ＰＫＧ）
・フロー上に現れるパスワードを含む暗号プリミティブ（ＰＡＦ）
・ＰＡＧ、ＰＫＧまたはＰＡＦの引数に含まれる暗号プリミティブ（ＰＡＯ）
・ＰＡＧ、ＰＫＧ、ＰＡＦ、ＰＡＯのいずれでもない暗号プリミティブ（ＰＮＡ）
【００４６】
これらの役割に対して使用されるフレームワークは、ｇ（ｆ（Ａ，Ｂ），Ｃ）である。ここで、関数ｆとｇは、上述の役割（ＰＡＧ、ＰＫＧ、ＰＡＦ、ＰＡＯ、ＰＮＡ）のいずれかを表し、引数ＡとＢとＣは、暗号プリミティブの値またはデータを表す。なお、関数ｆまたはｇにおいて、検証に無関係の引数は無視することとする。
【００４７】
このフレームワークにおいて、関数ｆとｇの組合せは、ｇがＰＮＡであり、かつｆがＰＡＧ、ＰＫＧ、ＰＡＦのいずれかであるか、または、ｇがＰＡＧ、ＰＫＧ、ＰＡＦのいずれかであり、かつｆがＰＡＯであるか、のどちらかである。なお、ｇがＰＮＡであるとは、関数ｇおよび引数Ｃが存在しないことと同義である。すなわち、フレームワークは、ｆ（Ａ，Ｂ）であってもよい。
【００４８】
図４は、本実施形態に係る各攻撃に関係するデータと、検証に用いられるフレームワーク内の関数の組合せと、を示した図である。
【００４９】
例えば、ｍａｔｃｈｉｎｇ  ｃｏｎｖｅｒｓａｔｉｏｎ（ＭＣ）の安全性の場合には、フレームワークの関数ｇとｆはＰＮＡとＰＡＧ、またはＰＡＧとＰＡＯの組合せである。また、ｓｅｍａｎｔｉｃ  ｓｅｃｕｒｉｔｙ（ＳＳ）の安全性の場合には、フレームワークの関数ｇとｆはＰＮＡとＰＫＧ、またはＰＫＧとＰＡＯの組合せである。また、共通の安全性の場合には、フレームワークの関数ｇとｆはＰＮＡとＰＡＦ、またはＰＡＦとＰＡＯの組合せである。
【００５０】
なお、各攻撃に関係するデータとして、全フローの他、ＭＣ−ＲＫＣＩでは一方の長期鍵、ＳＳ−ＫＫＳでは他のセッション鍵、ＳＳ−ＷＦＳでは長期鍵、ＳＳ−ＳＦＳでは長期鍵と内部状態、ＳＳ−ＷＢＳでは内部状態を対象とする。
【００５１】
ここで、フレームワークの引数Ａ、ＢまたはＣとなる暗号プリミティブの値またはデータに設定される要素、すなわち種類と状態は以下の通りである。なお、括弧内は種類または状態を示す略記号である。
［データの種類］
・一般データ（ＧＤ）
・ＩＤデータ（ＩＤ）
・テンポラリデータ（ＴＤ）
・固定データ（ＦＤ）
・長期鍵（ＬＬＫ）
・テンポラリ鍵（ＴＫ）
・パスワード（ＰＷ）
・テンポラリパスワード（ＴＰＷ）
・カウンタ（ＣＴ）
・時刻情報（ＴＭ）
［値の種類］
・固定値（ＦＶ）
・テンポラリ値（ＴＶ）
・テンポラリ鍵値（ＴＫＶ）
［データまたは値の状態］
・公開状態（ＰＳ）
・秘密状態（ＳＳ）
【００５２】
次に、認証または鍵交換プロトコルの各安全性を検証する上で、プロトコルのフローを上記のフレームワークに適合させるための設定規則を説明する。この設定規則は、安全性それぞれに対応して、プロトコルのフローに使用されている暗号プリミティブの役割、または暗号プリミティブの値もしくはデータの種類と状態とを既定する。
【００５３】
［各安全性の共通規則］
・暗号プリミティブの引数に、少なくとも１つのテンポラリデータ、テンポラリ鍵、テンポラリパスワードが含まれるならば、この暗号プリミティブの値をＴＶと設定する。一方、これらのデータが含まれないならば、この暗号プリミティブの値をＦＶと設定する。
・ＰＫＧまたはＰＡＦの引数に暗号プリミティブの値が含まれるならば、この暗号プリミティブをＰＡＯと設定する。ただし、以下の各安全性における特有の規則が適用される場合、本規則は適用されない。
・ＳＫＥ、ＥＰＷ、ＰＫＥの引数に使用されるＬＬＫ、ＴＫ、ＰＷ、ＴＰＷの状態がＰＳであるならば、他の引数の状態もＰＳと設定する。
・１フローのプロトコルにおいて、ＰＫＧに対応する２つのＰＡＯ（送り手および受け手）に同じ情報を設定する。
【００５４】
［ＳＳ−ＳＰＡの規則］
・セッション鍵があるパーティの生成したテンポラリデータであり、このテンポラリデータが同じパーティの生成した暗号プリミティブ（暗号化関数）に含まれているならば、この暗号プリミティブをＰＫＧと設定する。
【００５５】
［ＳＳ−ＳＡＡの規則］
・あるパーティのＰＫＧの引数に含まれる別のパーティが生成したテンポラリデータまたはこのＰＫＧ自体が、後者のパーティが生成した暗号プリミティブに含まれているならば、この暗号プリミティブをＰＡＯと設定する。
・あるパーティのＰＫＧの引数に含まれる別のパーティが生成したＤＨのテンポラリ値が、後者のパーティが生成した暗号プリミティブに含まれているならば、この暗号プリミティブをＰＡＯと設定する。
・セッション鍵があるパーティの生成したテンポラリデータであり、このテンポラリデータが同じパーティの生成した暗号プリミティブ（暗号化関数）に含まれているならば、この暗号プリミティブをＰＫＧと設定する。さらに、このＰＫＧの引数に含まれるテンポラリデータまたはＰＫＧ自体が同じパーティの生成した他の暗号プリミティブに含まれているならば、この暗号プリミティブをＰＡＯと設定する。
【００５６】
［ＳＳ−ＫＫＳの規則］
・あるパーティのＰＫＧの引数に含まれる別のパーティが生成したテンポラリデータまたはこのＰＫＧ自体が、後者のパーティが生成した暗号プリミティブに含まれているならば、この暗号プリミティブをＰＡＯと設定する。
・あるパーティのＰＫＧの引数に含まれる別のパーティが生成したＤＨのテンポラリ値が、後者のパーティが生成した暗号プリミティブに含まれているならば、この暗号プリミティブをＰＡＯと設定する。
・セッション鍵があるパーティの生成したテンポラリデータであり、このテンポラリデータが同じパーティの生成した暗号プリミティブ（暗号化関数）に含まれているならば、この暗号プリミティブをＰＫＧと設定する。さらに、このＰＫＧの引数に含まれるテンポラリデータまたはＰＫＧ自体が同じパーティの生成した他の暗号プリミティブに含まれているならば、この暗号プリミティブをＰＡＯと設定する。
・１フローの鍵交換プロトコルにおいて、ＰＫＧの暗号プリミティブの値をＦＶと設定し、暗号プリミティブの引数をＦＤと設定する。
【００５７】
［ＳＳ−ＲＵＫＳの規則］
・あるパーティのＰＫＧの引数に含まれる別のパーティが生成したＤＨのテンポラリ値が、後者のパーティが生成した暗号プリミティブに含まれているならば、この暗号プリミティブをＰＡＯと設定する。
・セッション鍵があるパーティの生成したテンポラリデータであり、このテンポラリデータが同じパーティの生成した暗号プリミティブ（暗号化関数）に含まれているならば、この暗号プリミティブをＰＫＧと設定する。さらに、このＰＫＧの引数に含まれるテンポラリデータまたはＰＫＧ自体が同じパーティの生成した他の暗号プリミティブに含まれているならば、この暗号プリミティブをＰＡＯと設定する。
【００５８】
［ＳＳ−ＷＦＳの規則］
・あるパーティのＰＫＧの引数に含まれる別のパーティが生成したテンポラリデータまたはこのＰＫＧ自体が、後者のパーティが生成した暗号プリミティブに含まれているならば、この暗号プリミティブをＰＡＯと設定する。
・あるパーティのＰＫＧの引数に含まれる別のパーティが生成したＤＨのテンポラリ値が、後者のパーティが生成した暗号プリミティブに含まれているならば、この暗号プリミティブをＰＡＯと設定する。
・セッション鍵があるパーティの生成したテンポラリデータであり、このテンポラリデータが同じパーティの生成した暗号プリミティブ（暗号化関数）に含まれているならば、この暗号プリミティブをＰＫＧと設定する。さらに、このＰＫＧの引数に含まれるテンポラリデータまたはＰＫＧ自体が同じパーティの生成した他の暗号プリミティブに含まれているならば、この暗号プリミティブをＰＡＯと設定する。
【００５９】
［ＳＳ−ＳＦＳの規則］
・あるパーティのＰＫＧの引数に含まれる別のパーティが生成したテンポラリデータまたはこのＰＫＧ自体が、後者のパーティが生成した暗号プリミティブに含まれているならば、この暗号プリミティブをＰＡＯと設定する。
・あるパーティのＰＫＧの引数に含まれる別のパーティが生成したＤＨのテンポラリ値が、後者のパーティが生成した暗号プリミティブに含まれているならば、この暗号プリミティブをＰＡＯと設定する。
・セッション鍵があるパーティの生成したテンポラリデータであり、このテンポラリデータが同じパーティの生成した暗号プリミティブ（暗号化関数）に含まれているならば、この暗号プリミティブをＰＫＧと設定する。さらに、このＰＫＧの引数に含まれるテンポラリデータまたはＰＫＧ自体が同じパーティの生成した他の暗号プリミティブに含まれているならば、この暗号プリミティブをＰＡＯと設定する。
【００６０】
［ＳＳ−ＫＰの規則］
・セッション鍵があるパーティの生成したテンポラリデータであり、このテンポラリデータが同じパーティの生成した暗号プリミティブ（暗号化関数）に含まれているならば、この暗号プリミティブをＰＫＧと設定する。
【００６１】
［ＳＳ−ＷＢＳの規則］
・あるパーティのＰＫＧの引数に含まれる別のパーティが生成したテンポラリデータまたはこのＰＫＧ自体が、後者のパーティが生成した暗号プリミティブに含まれているならば、この暗号プリミティブをＰＡＯと設定する。
・あるパーティのＰＫＧの引数に含まれる別のパーティが生成したＤＨのテンポラリ値が、後者のパーティが生成した暗号プリミティブに含まれているならば、この暗号プリミティブをＰＡＯと設定する。
・セッション鍵があるパーティの生成したテンポラリデータであり、このテンポラリデータが同じパーティの生成した暗号プリミティブ（暗号化関数）に含まれているならば、この暗号プリミティブをＰＫＧと設定する。さらに、このＰＫＧの引数に含まれるテンポラリデータまたはＰＫＧ自体が同じパーティの生成した他の暗号プリミティブに含まれているならば、この暗号プリミティブをＰＡＯと設定する。
【００６２】
＜検証項目＞
次に、認証または鍵交換のプロトコルの安全性に対する検証項目について説明する。本実施形態では、２者間の認証または鍵交換のプロトコル、３者間の認証または鍵交換プロトコル、４者間の認証または鍵交換プロトコル、グループ間の認証または鍵交換プロトコルを対象とする。ここで、認証または鍵交換プロトコルの安全性を検証する上で、以下の３点を前提とする。
【００６３】
・認証または鍵交換のプロトコルにおいて、秘密鍵やパスワード等の長期鍵を使用している場合、共有すべきパーティは予め同じ長期鍵を何らかの安全な手順で共有しておくこととし、その手順に脆弱性はないとする。
・認証または鍵交換のプロトコルにおいて、公開鍵を使用している場合、各パーティは認証局等の第三者機関との間で公開鍵証明書の正当性を確認することができることとし、その手順に脆弱性はないとする。
・暗号プリミティブは危殆化していないとする。なお、認証または鍵交換のプロトコルにおいて、危殆化した暗号プリミティブが使用されている場合、このプロトコルは安全でないと判定される。
【００６４】
図５〜図１６の表において、認証または鍵交換のプロトコルの安全性を、レベルすなわち安全性の種類に応じて検証する検証項目を示す。
【００６５】
なお、表の枠内に複数の記号が表記されている場合は、これらのいずれか１つであってよいことを示している。また、図中の「−−−」は、検証に関係する関数または引数が存在しないことを示している。また、引数ＡおよびＢは入れ替わっていてもよい。
【００６６】
ＭＣ−ＳＩＡの検証項目は、上述のフレームワークにおける関数ｆおよびｇ、ならびに引数Ａ、ＢおよびＣの組合せが、図５に示す組合せのいずれかと一致することである。
【００６７】
ＭＣ−ＲＫＣＩの検証項目は、上述のフレームワークにおける関数ｆおよびｇ、ならびに引数Ａ、ＢおよびＣの組合せが、図６に示す組合せのいずれかと一致することである。
【００６８】
ＳＳ−ＳＰＡの検証項目は、上述のフレームワークにおける関数ｆおよびｇ、ならびに引数Ａ、ＢおよびＣの組合せが、図７に示す組合せのいずれかと一致することである。
【００６９】
ＳＳ−ＳＡＡの検証項目は、上述のフレームワークにおける関数ｆおよびｇ、ならびに引数Ａ、ＢおよびＣの組合せが、図８に示す組合せのいずれかと一致することである。
【００７０】
ＳＳ−ＫＫＳの検証項目は、上述のフレームワークにおける関数ｆおよびｇ、ならびに引数Ａ、ＢおよびＣの組合せが、図９に示す組合せのいずれかと一致することである。
【００７１】
ＳＳ−ＲＵＫＳの検証項目は、上述のフレームワークにおける関数ｆおよびｇ、ならびに引数Ａ、ＢおよびＣの組合せが、図１０に示す組合せのいずれかと一致することである。
【００７２】
ＳＳ−ＷＦＳの検証項目は、上述のフレームワークにおける関数ｆおよびｇ、ならびに引数Ａ、ＢおよびＣの組合せが、図１１に示す組合せのいずれかと一致することである。
【００７３】
ＳＳ−ＳＦＳの検証項目は、上述のフレームワークにおける関数ｆおよびｇ、ならびに引数Ａ、ＢおよびＣの組合せが、図１２に示す組合せのいずれかと一致することである。
【００７４】
ＳＳ−ＫＰの検証項目は、上述のフレームワークにおける関数ｆおよびｇ、ならびに引数Ａ、ＢおよびＣの組合せが、図１３に示す組合せのいずれかと一致することである。
【００７５】
ＳＳ−ＷＢＳの検証項目は、上述のフレームワークにおける関数ｆおよびｇ、ならびに引数Ａ、ＢおよびＣの組合せが、図１４に示す組合せのいずれかと一致することである。
【００７６】
ＲＯＤＡの検証項目は、上述のフレームワークにおける関数ｆおよびｇ、ならびに引数Ａ、ＢおよびＣの組合せが、図１５に示す組合せのいずれかと一致することである。
【００７７】
ＲＵＯＤＡの検証項目は、上述のフレームワークにおける関数ｆおよびｇ、ならびに引数Ａ、ＢおよびＣの組合せが、図１６に示す組合せのいずれかと一致することである。
【００７８】
なお、図中で、「ＦＶ  ｗｉｔｈ  ＬＬＫ−ＳＳ」と表記された箇所は、ＬＬＫ−ＳＳを引数に含むＦＶ、つまり秘密状態の長期鍵を引数に含む暗号プリミティブの固定値を意味している。
【００７９】
＜検証装置の構成＞
図１７は、本実施形態に係る認証または鍵交換のプロトコルの安全性を検証する検証装置１の構成を示す図である。
検証装置１は、制御部１０と、記憶部２０と、入力部３０と、表示部４０と、を備える。
【００８０】
制御部１０は、検証装置１の全体を制御する部分であり、記憶部２０に記憶された各種プログラムを適宜読み出して実行することにより、上述のハードウェアと協働し、本発明に係る各種機能を実現している。制御部１０は、ＣＰＵ（Ｃｅｎｔｒａｌ  Ｐｒｏｃｅｓｓｉｎｇ  Ｕｎｉｔ）であってよい。
【００８１】
記憶部２０は、ハードウェア群を検証装置１として機能させるための各種プログラムや、本発明の機能を制御部１０に実行させるプログラム、データベース等を記憶する。具体的には、記憶部２０は、上述の暗号プリミティブの種類および役割、ならびに暗号プリミティブの値またはデータの種類と状態、さらには、上述の各安全性とその検証項目とを記憶している。また、記憶部２０は、検証対象である安全性のそれぞれに対応して、プロトコルのフローに応じて暗号プリミティブの役割と、データまたは暗号プリミティブの値の種類と状態とを規定する設定規則をさらに記憶している。なお、記憶部２０に記憶される検証項目は、上述の安全性の全部または一部であってよい。また、記憶部２０は、ハードディスク、光ディスクドライブ、あるいは半導体メモリ等、様々な記憶装置のいずれかにより構成されてよい。
【００８２】
入力部３０は、検証装置１に対するユーザ（検証装置１の管理者）からの指示入力を受け付けるインタフェース装置である。入力部３０は、例えばキーボードやマウス等により構成される。
【００８３】
表示部４０は、ユーザ（検証装置１の管理者）にデータの入力を受け付ける画面を表示したり、検証装置１による処理結果の画面を表示したりするものである。表示部４０は、ブラウン管表示装置（ＣＲＴ）、液晶表示装置（ＬＣＤ）等のディスプレイ装置であってよい。
【００８４】
また、制御部１０は、プロトコル受付部１０１と、暗号プリミティブおよびデータ列挙部１０２と、種類設定部１０３と、役割設定部１０４と、要素設定部１０５と、安全性選択部１０６と、検証項目判定部１０７と、安全性判定部１０８とを備える。
【００８５】
プロトコル受付部１０１は、入力部３０からの指示入力に基づいて、安全性の検証対象である認証または鍵交換のプロトコルの仕様データの入力を受け付ける。
【００８６】
暗号プリミティブおよびデータ列挙部１０２は、プロトコル受付部１０１により受け付けたプロトコルの仕様データから、このプロトコルにおいて使用されている暗号プリミティブとデータを全て列挙する。
【００８７】
種類設定部１０３は、暗号プリミティブおよびデータ列挙部１０２により列挙された暗号プリミティブの目的としての種類を、上述のＳＫＥ、ＥＰＷ、ＰＫＥ、ＰＫＤ、ＤＨ、ＳＩＧ、ＨＦ、ＭＡＣの中から選択して設定する。
【００８８】
役割設定部１０４は、種類設定部１０３により種類が選択された暗号プリミティブの役割を、上述のＰＡＧ、ＰＫＧ、ＰＡＦ、ＰＡＯ、ＰＮＡの中から選択して設定する。具体的には、役割設定部１０４は、手動で設定される役割（例えば、ＰＡＧ、ＰＫＧ）、または各役割の定義により自動的に設定される役割（例えば、ＰＡＦ）の他、上述の設定規則に基づいて暗号プリミティブの役割（ＰＡＯ）を決定する。
【００８９】
要素設定部１０５は、暗号プリミティブおよびデータ列挙部１０２により列挙された暗号プリミティブの値とデータについて、プロトコルの仕様に従い、種類を上述のＧＤ、ＩＤ、ＴＤ、ＦＤ、ＬＬＫ、ＴＫ、ＰＷ、ＴＰＷ、ＣＴ、ＴＭ、ＦＶ、ＴＶ、ＴＫＶの中から選択し、また状態を上述のＰＳ、ＳＳの中から選択して設定する。具体的には、要素設定部１０５は、手動で設定される要素、または各定義により自動的に設定される要素の他、上述の設定規則に基づいてデータまたは暗号プリミティブの値の種類と状態とを決定する。
【００９０】
ここで、これら暗号プリミティブの値およびデータの種類と状態とは、プロトコルのフローの順に設定される。なお、状態はセッション中での以前のフローに応じて更新されていく。また、公開状態（ＰＳ）と秘密状態（ＳＳ）では、公開状態（ＰＳ）が優先されることとする。
【００９１】
安全性選択部１０６は、プロトコル受付部１０１により受け付けた検証対象のプロトコルに対して要求されている安全性を選択する。具体的には、入力部３０を介して、上述の（１−Ａ）ＭＣ−ＳＩＡ、（１−Ｂ）ＭＣ−ＲＫＣＩ、（２−Ａ）ＳＳ−ＳＰＡ、（２−Ｂ）ＳＳ−ＳＡＡ、（２−Ｃ）ＳＳ−ＫＫＳ、（２−Ｄ）ＳＳ−ＲＵＫＳ、（２−Ｅ）ＳＳ−ＷＦＳ、（２−Ｆ）ＳＳ−ＳＦＳ、（２−Ｇ）ＳＳ−ＫＰ、（２−Ｈ）ＳＳ−ＷＢＳ、（３−Ａ）ＲＯＤＡ、（３−Ｂ）ＲＵＯＤＡの中から選択入力を受け付ける。なお、選択される安全性は複数であってよく、プロトコルを運用する上で必要とされる最低限の安全性が選択されることが好ましい。
【００９２】
例えば、認証プロトコルにおいて、ＭＣ−ＲＫＣＩの場合は全フローに加えて一方の長期鍵が得られなければ攻撃を受けないのに比べて、ＭＣ−ＳＩＡ、ＲＯＤＡおよびＲＵＯＤＡの場合は全フローさえ得られれば攻撃を受ける可能性があるので、ＭＣ−ＳＩＡ、ＲＯＤＡおよびＲＵＯＤＡを優先して安全性を選択すべきである。また、鍵交換プロトコルにおいて、全フローさえ得られれば攻撃を受ける可能性があるＳＳ−ＳＰＡやＳＳ−ＳＡＡ等に比べて、ＳＳ−ＷＢＳやＳＳ−ＳＦＳ等は、より多くのデータが得られなければ攻撃を受けない。したがって、例えば、ＳＳ−ＳＦＳよりＳＳ−ＷＢＳ、さらにＳＳ−ＷＢＳよりＳＳ−ＳＰＡを優先して安全性を選択すべきである。
【００９３】
検証項目判定部１０７は、種類設定部１０３、役割設定部１０４および要素設定部１０５により設定された情報を用いて、安全性選択部１０６により選択された各安全性に対する上述の検証項目を記憶部２０から読み出し検証する。
【００９４】
このとき、検証項目判定部１０７は、ｆ（Ａ，Ｂ）型のフレームワークの検証項目を、ｇ（ｆ（Ａ，Ｂ），Ｃ）型のフレームワークの検証項目より優先することが好ましい。より単純な型のフレームワークで検証することにより、検証処理の高速化および検証結果の正確化が期待できる。また、検証項目判定部１０７は、ｇ（ｆ（Ａ，Ｂ），Ｃ）型のフレームワークでは、手動で設定されたｆを優先して、効率的に処理を行うこととしてよい。
【００９５】
また、検証項目判定部１０７は、プロトコルにおいて要求されているセキュリティパラメータ（例えば、鍵のサイズ等）を設定する。対応する暗号プリミティブの値やデータのサイズが設定されたセキュリティパラメータを満足しているか否かを確認した結果、満足していないサイズが１つでもある場合、安全性判定部１０８によりプロトコルは安全ではないと判定される。
【００９６】
安全性判定部１０８は、安全性選択部１０６により選択された全ての安全性に関して、検証項目判定部１０７により検証項目を満足していると判定された場合に、プロトコルが安全であると判定する。一方、安全性判定部１０８は、検証項目を満足していない安全性が１つでもある場合には、プロトコルは安全ではないと判定する。
【００９７】
＜処理フロー＞
図１８は、本実施形態に係る検証装置１の制御部１０にて実行される検証方法の流れを示すフローチャートである。
【００９８】
ステップＳ１では、制御部１０は、受け付けた認証または鍵交換のプロトコルにおいて使用されている暗号プリミティブとデータを全て列挙する。
【００９９】
ステップＳ２（種類設定ステップ）では、制御部１０は、ステップＳ１で列挙された暗号プリミティブの目的としての種類を、記憶部２０に記憶されている情報と比較することにより判断して設定する。
【０１００】
ステップＳ３（役割設定ステップ）では、制御部１０は、ステップＳ２で種類が設定された暗号プリミティブの役割を、記憶部２０に記憶されている情報と比較することにより、さらに、記憶部２０に記憶されている上述の設定規則に従って判断して設定する。
【０１０１】
ステップＳ４（要素設定ステップ）では、制御部１０は、ステップＳ１で列挙された暗号プリミティブの値とデータについて、プロトコルの仕様に従い、記憶部２０に記憶されている情報と比較することにより、さらに、記憶部２０に記憶されている上述の設定規則に従って種類と状態とを判断して設定する。
【０１０２】
ステップＳ５（安全性選択ステップ）では、制御部１０は、受け付けた認証または鍵交換のプロトコルに対して要求されている安全性を、記憶部２０に記憶されている所定の種類の中から選択する。
【０１０３】
ステップＳ６では、制御部１０は、選択された安全性に対応する暗号プリミティブの値やデータのサイズが設定されたセキュリティパラメータを満足しているか否かを判定する。制御部１０は、この判定がＹＥＳの場合、処理をステップＳ７に移し、判定がＮＯの場合、処理をステップＳ９に移す。
【０１０４】
ステップＳ７（検証項目判定ステップ）では、制御部１０は、ステップＳ２、ステップＳ３およびステップＳ４で設定された各情報を用いて、ステップＳ５で選択された各安全性に対する検証項目を記憶部２０から読み出し検証する。そして、制御部１０は、ステップＳ５で選択された全ての安全性に関して検証項目を満足しているか否かを判定する。制御部１０は、この判定がＹＥＳの場合、処理をステップＳ８に移し、判定がＮＯの場合、処理をステップＳ９に移す。
【０１０５】
ステップＳ８（安全性判定ステップ）では、制御部１０は、検証対象である認証または鍵交換のプロトコルが要求されている安全性を全て満たしているため、このプロトコルは安全であると判定する。
【０１０６】
ステップＳ９（安全性判定ステップ）では、制御部１０は、検証対象のプロトコルが要求されている安全性のいずれかを満たしていないため、このプロトコルは安全ではないと判定する。
【０１０７】
なお、本処理は、ソフトウェアにより行うこともできる。一連の処理をソフトウェアによって行う場合には、そのソフトウェアを構成するプログラムがコンピュータにインストールされる。また、当該プログラムは、ＣＤ−ＲＯＭのようなリムーバブルメディアに記録されてユーザに配布されてもよいし、ネットワークを介してユーザのコンピュータにダウンロードされることにより配布されてもよい。
【０１０８】
なお、本実施形態でいうコンピュータとは、制御装置や記憶装置等を備えた情報処理装置である。検証装置１は、制御部１０や記憶部２０等を備えた情報処理装置であり、この情報処理装置は、本実施形態のコンピュータの概念に含まれる。
【０１０９】
以上のように、本実施形態によれば、検証装置１は、認証または鍵交換のプロトコルについて、要求されている安全性を選択して、それぞれの安全性を検証することができる。すなわち、本実施形態によれば、検証装置１は、認証または鍵交換のプロトコルを安全性のレベルに応じて検証することができる。
【０１１０】
さらに、検証装置１は、上述の設定規則に基づいて、暗号プリミティブの役割や、暗号プリミティブの値またはデータの種類と状態とを自動で決定できる。すなわち、本実施形態によれば、検証装置１は、安全性の検証をより正確に行うことができる。
【０１１１】
以上、本発明の実施形態について説明したが、本発明は上述した実施形態に限るものではない。また、本発明の実施形態に記載された効果は、本発明から生じる最も好適な効果を列挙したに過ぎず、本発明による効果は、本発明の実施形態に記載されたものに限定されるものではない。
【符号の説明】
【０１１２】
１  検証装置
１０  制御部
２０  記憶部
３０  入力部
４０  表示部
１０１  プロトコル受付部
１０２  暗号プリミティブおよびデータ列挙部
１０３  種類設定部
１０４  役割設定部
１０５  要素設定部
１０６  安全性選択部
１０７  検証項目判定部
１０８  安全性判定部
【図１】
0005524763.tif 000002
【図２】
0005524763.tif 000003
【図３】
0005524763.tif 000004
【図４】
0005524763.tif 000005
【図５】
0005524763.tif 000006
【図６】
0005524763.tif 000007
【図７】
0005524763.tif 000008
【図８】
0005524763.tif 000009
【図９】
0005524763.tif 000010
【図１０】
0005524763.tif 000011
【図１１】
0005524763.tif 000012
【図１２】
0005524763.tif 000013
【図１３】
0005524763.tif 000014
【図１４】
0005524763.tif 000015
【図１５】
0005524763.tif 000016
【図１６】
0005524763.tif 000017
【図１７】
0005524763.tif 000018
【図１８】
0005524763.tif 000019