説明

プロトコルの安全性を検証する検証装置、検証方法および検証プログラム

【課題】認証または鍵交換のプロトコルを安全性のレベルに応じて検証することができる検証装置、検証方法および検証プログラムを提供すること。
【解決手段】検証装置1は、認証または鍵交換のプロトコルにおいて使用されている暗号プリミティブの種類を設定する種類設定部103と、暗号プリミティブの役割を設定する役割設定部104と、プロトコルにおけるデータ値の種類と状態、または暗号プリミティブの関数値の種類と状態とを示す要素を設定する要素設定部105と、要求に応じて検証対象の安全性を選択する安全性選択部106と、暗号プリミティブの役割に対して設定される所定のフレームワークに適合する安全性それぞれに関する検証項目を満足するか否かを判定する検証項目判定部107と、選択された全ての安全性に関する検証項目を満足していると判定された場合にプロトコルが安全であると判定する安全性判定部108と、を備える。

【発明の詳細な説明】
【技術分野】
【0001】
本発明は、認証や鍵共有等のセキュリティ機能を有する認証または鍵交換のプロトコルの安全性を検証する検証装置、検証方法および検証プログラムに関する。
【背景技術】
【0002】
従来、プロトコル設計者の有するセキュリティや暗号技術の見識に基づき、経験的に安全な認証または鍵交換のプロトコルが提案されてきた。しかしながら、提案された認証または鍵交換のプロトコルの仕様が公開された後に、セキュリティ上の脆弱性が指摘される場合があった。標準化された認証または鍵交換のプロトコルが製品等を通じて広く普及した後に脆弱性が発見されると、製品等の改修に関わるコストが大きな問題となる。
【0003】
特に、致命的な脆弱性が発見された場合には、経済的な損害を回避するため、ソフトウェアのパッチの充当やハードウェアのチップや部品の交換等、早急に対処する必要が生じる。したがって、提案された認証または鍵交換のプロトコルや関連製品が普及するほど、社会的な影響は非常に大きくなり、場合によってはシステム全体が破綻してしまう可能性もある。
【0004】
そこで、「汎用結合可能安全性」と呼ばれる概念を利用した、認証または鍵交換のプロトコルの安全性を検証するための装置、方法およびプログラムが提案されている(例えば、特許文献1、特許文献2参照)。ここで、「汎用結合可能安全性」とは、ある認証または鍵交換のプロトコルがそのセキュリティ機能に関する理想機能を安全に実現するならば、この認証または鍵交換のプロトコルは安全であることを意味している。例えば、ある鍵交換プロトコルが鍵交換理想機能を安全に実現するならば、この鍵交換プロトコルは安全であることが示されたことになる。
【先行技術文献】
【特許文献】
【0005】
【特許文献1】特開2007−28447号公報
【特許文献2】特開2008−35117号公報
【発明の概要】
【発明が解決しようとする課題】
【0006】
上記の「汎用結合可能安全性」は、現在最も強力な安全性であると言われており、理想機能はセキュリティ機能に要求される全ての安全性を網羅する。そのため、ある認証または鍵交換のプロトコルがその理想機能を安全に実現するとき、この認証または鍵交換のプロトコルはセキュリティ機能に要求される全ての安全性を満足することになる。
【0007】
ところが、プロトコルの安全性と効率性とはトレードオフの関係にあるため、認証または鍵交換のプロトコルの安全性を高くするほど効率性は低くなる。そのため、認証または鍵交換のプロトコルの効率性を重要視するときには、許容される限度まで安全性を低くしてよい。しかしながら、上記の先行技術では、認証または鍵交換のプロトコルの厳密な安全性を検証することはできても、安全性のレベルに応じた検証を行うことができない。
【0008】
そこで、本発明は、認証または鍵交換のプロトコルを安全性のレベルに応じて検証することができる検証装置、検証方法および検証プログラムを提供することを目的とする。
【課題を解決するための手段】
【0009】
本発明では、以下のような解決手段を提供する。
【0010】
(1) 認証または鍵交換のプロトコルの安全性を検証する検証装置であって、
前記プロトコルにおいて使用されている暗号プリミティブの役割に対して設定される所定のフレームワークに適合する、前記認証のプロトコルにおけるなりすまし攻撃に対する安全性およびオフライン辞書攻撃に対する安全性のそれぞれの要件を満たすための検証項目と、前記鍵交換のプロトコルにおける受動的攻撃に対する安全性、能動的攻撃に対する安全性、既知鍵攻撃に対する安全性、弱前方秘匿性(weak forward secrecy)およびオフライン辞書攻撃に対する安全性のそれぞれの要件を満たすための検証項目と、を記憶する記憶部と、
前記プロトコルにおいて使用されている暗号プリミティブの種類を設定する種類設定部と、
前記種類設定部により種類が設定された暗号プリミティブの役割を設定する役割設定部と、
前記プロトコルにおけるデータ値の種類と状態、または暗号プリミティブの関数値の種類と状態とを示す要素を設定する要素設定部と、
要求に応じて検証対象の安全性を選択する安全性選択部と、
前記安全性選択部により選択された安全性それぞれに関する検証項目を前記記憶部から抽出し、前記暗号プリミティブの種類および役割ならびに前記要素設定部により設定された要素に基づいて、当該検証項目を満足するか否かを判定する検証項目判定部と、
前記検証項目判定部により前記選択された全ての安全性に関する検証項目を満足していると判定された場合に、前記プロトコルが安全であると判定する安全性判定部と、を備える検証装置。
【0011】
(2) 前記フレームワークは、g(f(A,B),C)と表現され、
関数gの役割は、前記認証のプロトコルにおける認証の対象となる第1の暗号プリミティブ、前記鍵交換のプロトコルにおける鍵生成対象となる第2の暗号プリミティブ、フロー上に現れる第3の暗号プリミティブ、または前記第1から第3の暗号プリミティブおよび前記第1から第3の暗号プリミティブの引数に含まれる第4の暗号プリミティブのいずれでもない第5の暗号プリミティブのいずれかであり、
関数fの役割は、関数gの役割が前記第1から第3の暗号プリミティブのいずれかである場合には、前記第4の暗号プリミティブであり、関数gの役割が前記第5の暗号プリミティブである場合には、前記第1から第3の暗号プリミティブのいずれかであり、
引数A、BおよびCは、暗号プリミティブの関数値またはデータ値であることを特徴とする(1)に記載の検証装置。
【0012】
(3) 前記フレームワークの関数に設定される前記第1から第4の暗号プリミティブの種類は、共通鍵暗号、パスワードを用いた暗号化、公開鍵暗号、Diffie−Hellman族、ディジタル署名、ハッシュ関数またはメッセージ認証コードのいずれかであり、
当該関数の引数は、一般データ、IDデータ、テンポラリデータ、長期鍵、パスワード、関数固定値または関数テンポラリ値と、公開状態または秘密状態と、の組合せを示す要素値であることを特徴とする(2)に記載の検証装置。
【0013】
(4) 前記認証または鍵交換のプロトコルにおける検証項目は、関数gおよび関数fの種類と、引数A、引数Bおよび引数Cのそれぞれに設定される要素値と、の組合せであることを特徴とする(3)に記載の検証装置。
【0014】
(5) コンピュータが認証または鍵交換のプロトコルの安全性を検証する検証方法であって、
当該コンピュータは、前記プロトコルにおいて使用されている暗号プリミティブの役割に対して設定される所定のフレームワークに適合する、前記認証のプロトコルにおけるなりすまし攻撃に対する安全性およびオフライン辞書攻撃に対する安全性のそれぞれの要件を満たすための検証項目と、前記鍵交換のプロトコルにおける受動的攻撃に対する安全性、能動的攻撃に対する安全性、既知鍵攻撃に対する安全性、弱前方秘匿性(weak forward secrecy)およびオフライン辞書攻撃に対する安全性のそれぞれの要件を満たすための検証項目と、を記憶する記憶部を備え、
前記プロトコルにおいて使用されている暗号プリミティブの種類を設定する種類設定ステップと、
前記種類設定ステップにより種類が設定された暗号プリミティブの役割を設定する役割設定ステップと、
前記プロトコルにおけるデータ値の種類と状態、または暗号プリミティブの関数値の種類と状態とを示す要素を設定する要素設定ステップと、
要求に応じて検証対象の安全性を選択する安全性選択ステップと、
前記安全性選択ステップにより選択された安全性それぞれに関する検証項目を前記記憶部から抽出し、前記暗号プリミティブの種類および役割ならびに前記要素設定ステップにより設定された要素に基づいて、当該検証項目を満足するか否かを判定する検証項目判定ステップと、
前記検証項目判定ステップにより前記選択された全ての安全性に関する検証項目を満足していると判定された場合に、前記プロトコルが安全であると判定する安全性判定ステップと、を含む検証方法。
【0015】
(6) コンピュータに認証または鍵交換のプロトコルの安全性を検証させる検証プログラムであって、
当該コンピュータは、前記プロトコルにおいて使用されている暗号プリミティブの役割に対して設定される所定のフレームワークに適合する、前記認証のプロトコルにおけるなりすまし攻撃に対する安全性およびオフライン辞書攻撃に対する安全性のそれぞれの要件を満たすための検証項目と、前記鍵交換のプロトコルにおける受動的攻撃に対する安全性、能動的攻撃に対する安全性、既知鍵攻撃に対する安全性、弱前方秘匿性(weak forward secrecy)およびオフライン辞書攻撃に対する安全性のそれぞれの要件を満たすための検証項目と、を記憶する記憶部を備え、
前記プロトコルにおいて使用されている暗号プリミティブの種類を設定する種類設定ステップと、
前記種類設定ステップにより種類が設定された暗号プリミティブの役割を設定する役割設定ステップと、
前記プロトコルにおけるデータ値の種類と状態、または暗号プリミティブの関数値の種類と状態とを示す要素を設定する要素設定ステップと、
要求に応じて検証対象の安全性を選択する安全性選択ステップと、
前記安全性選択ステップにより選択された安全性それぞれに関する検証項目を前記記憶部から抽出し、前記暗号プリミティブの種類および役割ならびに前記要素設定ステップにより設定された要素に基づいて、当該検証項目を満足するか否かを判定する検証項目判定ステップと、
前記検証項目判定ステップにより前記選択された全ての安全性に関する検証項目を満足していると判定された場合に、前記プロトコルが安全であると判定する安全性判定ステップと、を実行させる検証プログラム。
【発明の効果】
【0016】
本発明によれば、認証または鍵交換のプロトコルを安全性のレベルに応じて検証することができる。
【図面の簡単な説明】
【0017】
【図1】本発明の実施形態に係る各攻撃に関係するデータと、フレームワーク内の関数の組合せと、を示した図である。
【図2】本発明の実施形態に係るMC−SIAの検証項目を示す図である。
【図3】本発明の実施形態に係るSS−SPA、SS−SAAおよびSS−KKSに共通の検証項目を示す図である。
【図4】本発明の実施形態に係るSS−SPAの図3以外の検証項目を示す図である。
【図5】本発明の実施形態に係るSS−SAAの図3以外の検証項目を示す図である。
【図6】本発明の実施形態に係るSS−WFSの検証項目を示す図である。
【図7】本発明の実施形態に係るRODAの検証項目を示す図である。
【図8】本発明の実施形態に係る検証装置の構成を示す図である。
【図9】本発明の実施形態に係る検証方法の流れを示すフローチャートである。
【発明を実施するための形態】
【0018】
以下、本発明の実施形態の一例について説明する。
【0019】
<セキュリティモデル>
まず、認証または鍵交換のプロトコルの安全性レベルに関するセキュリティモデルを示す。本実施形態では、計算量理論に基づいて認証または鍵交換のプロトコルの安全性を証明する「証明可能安全性」と呼ばれる概念を用いる。「認証または鍵交換のプロトコルが証明可能安全性を有する」とは、認証または鍵交換のプロトコルの安全性が、ある暗号プリミティブの安全性に帰着することを計算量理論的に証明可能であることを示している。すなわち、ある認証または鍵交換のプロトコルを破ることができる攻撃者は、ある暗号プリミティブを多項式時間で破るマシンを構成可能であることを証明することにより、この暗号プリミティブが破られなければ、認証または鍵交換のプロトコルも破られないことを証明する。
【0020】
上記の証明可能安全性において、認証プロトコルではmatching conversation、鍵交換プロトコルではsemantic securityという安全性の概念がある。それぞれの概念に対し、認証または鍵交換のプロトコルに要求される以下のような安全性要件が存在する。なお、括弧内は各安全性を示す略記号である。
【0021】
・matching conversation(MC)
この安全性は、認証プロトコルにおいて、攻撃者が一方のパーティから受信したメッセージをそのままもう一方のパーティへ送ること以外に何もできないことを示す。すなわち、攻撃者はメッセージの改ざんや新規メッセージの送付、メッセージの遮断、メッセージの順番の入れ替え等の不正を行うことができないことを示す。
【0022】
(a)なりすまし攻撃に対する安全性(MC−SIA)
攻撃者がパーティ間の通信を支配しても、認証プロトコルを破ることはできないことを示す。
【0023】
・semantic security(SS)
この安全性は、鍵交換プロトコルにおいて、攻撃者はセッション鍵に関するどんな情報も得ることができないことを示す。すなわち、攻撃者はセッション鍵と乱数を多項式時間で区別することができないことを示す。
【0024】
(b)受動的攻撃に対する安全性(SS−SPA)
攻撃者がパーティ間の通信を盗聴しても、鍵交換プロトコルを破ることはできないことを示す。
【0025】
(c)能動的攻撃に対する安全性(SS−SAA)
攻撃者がパーティ間の通信を支配しても、鍵交換プロトコルを破ることはできないことを示す。
【0026】
(d)既知鍵攻撃に対する安全性(SS−KKS)
攻撃者があるセッション鍵を得ることができたとしても、それとは別のセッション鍵を得ることはできないことを示す。
【0027】
(e)weak forward secrecy(SS−WFS)
攻撃者が共通鍵暗号の共通鍵やパスワード、公開鍵暗号の秘密鍵等のパーティの長期鍵を得ることができたとしても、それ以前に共有されたセッション鍵を得ることはできないことを示す。
【0028】
・共通の安全性要件
この安全性は、認証および鍵交換のプロトコルに共通の安全性要件である。
【0029】
(f)オフライン辞書攻撃に対する安全性(RODA)
攻撃者がパスワード推測用の辞書からオフラインで過去の履歴に一致するパーティのパスワードを探索することはできないことを示す。
【0030】
ただし、長期鍵を使用しない鍵交換のプロトコルの場合、(e)SS−WFSの安全性は要求されない。特に、パスワードを使用しない認証または鍵交換のプロトコルの場合、(f)RODAの安全性は要求されない。
【0031】
ここで、認証または鍵交換のプロトコルにおいて使用されている暗号プリミティブの種類は以下の目的を有する関数である。なお、括弧内は各暗号プリミティブの種類を示す略記号である。
・共通鍵暗号(SKE):事前共有鍵を用いた暗号化目的の関数
・パスワードを用いた暗号化(EPW):事前共有パスワードを用いた暗号化目的の関数
・公開鍵暗号(PKE):公開鍵を用いた暗号化目的の関数
・Diffie−Hellman族(DH):Diffie−Hellman法を用いた鍵交換目的の関数
・ディジタル署名(SIG):署名鍵を用いて署名を生成する目的の関数
・ハッシュ関数(HF):事前共有鍵を用いずにダイジェストを生成する目的の関数
・メッセージ認証コード(MAC):事前共有鍵を用いてダイジェストを生成する目的の関数
【0032】
これらの種類は、暗号プリミティブの関数が担っている目的により分類される。例えば、事前共有鍵を用いてダイジェストを生成しているハッシュ関数は、メッセージ認証コードの目的を担っているため、MACに分類される。
【0033】
また、上記の暗号プリミティブの種類に設定される役割は以下の通りである。なお、括弧内は各役割を示す略記号である。
・認証プロトコルにおける認証対象となる暗号プリミティブ(PAG)
・鍵交換プロトコルにおける鍵生成対象となる暗号プリミティブ(PKG)
・フロー上に現れる暗号プリミティブ(PAF)
・PAG、PKGまたはPAFの引数に含まれる暗号プリミティブ(PAO)
・PAG、PKG、PAF、PAOのいずれでもない暗号プリミティブ(PNA)
【0034】
これらの役割に対して使用されるフレームワークは、g(f(A,B),C)である。ここで、関数fとgは、上述の役割(PAG、PKG、PAF、PAO、PNA)のいずれかを表し、引数AとBとCは、暗号プリミティブの関数値またはデータ値を表す。なお、検証に無関係の引数(A、BまたはC)は無視することとする。
【0035】
このフレームワークにおいて、関数fとgの組合せは、gがPNAであり、かつfがPAG、PKG、PAFのいずれかであるか、または、gがPAG、PKG、PAFのいずれかであり、かつfがPAOであるか、のどちらかである。なお、gがPNAであるとは、関数gおよび引数Cが存在しないことと同義である。すなわち、フレームワークは、f(A,B)であってもよい。
【0036】
図1は、本実施形態に係る各攻撃に関係するデータと、フレームワーク内の関数の組合せと、を示した図である。
例えば、MC−SIAの場合には、全フローを対象とし、フレームワークの関数gとfはPNAとPAG、またはPAGとPAOの組合せである。また、semantic security(SS)の安全性の場合には、フレームワークの関数gとfはPNAとPKG、またはPKGとPAOの組合せである。なお、本実施形態に係る各攻撃に関係するデータとして、SS−KKSでは他のセッション鍵も対象とし、SS−WFSでは長期鍵も対象とする。また、RODAの場合には、フレームワークの関数gとfはPNAとPAF、またはPAFとPAOの組合せである。
【0037】
ここで、フレームワークの引数A、BまたはCとなる暗号プリミティブの関数値またはデータ値に設定される要素、すなわち種類と状態は以下の通りである。なお、括弧内は種類または状態を示す略記号である。
[データ値の種類]
・一般データ(GD)
・IDデータ(ID)
・テンポラリデータ(TD)
・長期鍵(LLK)
・パスワード(PW)
[関数値の種類]
・固定値(FV)
・テンポラリ値(TV)
[データ値または関数値の状態]
・公開状態(PS)
・秘密状態(SS)
【0038】
<検証項目>
次に、認証または鍵交換のプロトコルの安全性に対する検証項目について説明する。本実施形態では、2パーティ(2ユーザ間、サーバおよびクライアント間等)での認証または鍵交換のプロトコルを対象とし、以下の3点を前提とする。
【0039】
・認証または鍵交換のプロトコルにおいて、秘密鍵やパスワード等の長期鍵を使用している場合、共有すべきパーティは予め同じ長期鍵を何らかの安全な手順で共有しておくこととし、その手順に脆弱性はないとする。
・認証または鍵交換のプロトコルにおいて、公開鍵を使用している場合、各パーティは認証局等の第三者機関との間で公開鍵証明書の正当性を確認することができることとし、その手順に脆弱性はないとする。
・暗号プリミティブは危殆化していないとする。なお、認証または鍵交換のプロトコルにおいて、危殆化した暗号プリミティブが使用されている場合、検証装置1はこのプロトコルを安全でないと判定する。
【0040】
図2〜図7の表において、認証または鍵交換のプロトコルの安全性を、レベルすなわち安全性の種類に応じて検証する検証項目を示す。
【0041】
なお、表の枠内に複数の記号が表記されている場合は、これらのいずれか1つであってよいことを示している。また、図中の「−−−」は、検証に関係する関数または引数が存在しないことを示している。また、引数AおよびBは入れ替わっていてもよい。
【0042】
MC−SIAの検証項目は、上述のフレームワークにおける関数fおよびg、ならびに引数A、BおよびCの組合せが、図2に示す組合せのいずれかと一致することである。
【0043】
SS−SPAの検証項目は、上述のフレームワークにおける関数fおよびg、ならびに引数A、BおよびCの組合せが、図3または図4に示す組合せのいずれかと一致することである。
【0044】
SS−SAAの検証項目は、上述のフレームワークにおける関数fおよびg、ならびに引数A、BおよびCの組合せが、図3または図5に示す組合せのいずれかと一致することである。
【0045】
SS−KKSの検証項目は、上述のフレームワークにおける関数fおよびg、ならびに引数A、BおよびCの組合せが、図3に示す組合せのいずれかと一致することである。
【0046】
SS−WFSの検証項目は、上述のフレームワークにおける関数fおよびg、ならびに引数A、BおよびCの組合せが、図6に示す組合せのいずれかと一致することである。
【0047】
RODAの検証項目は、上述のフレームワークにおける関数fおよびg、ならびに引数A、BおよびCの組合せが、図7に示す組合せのいずれかと一致することである。
【0048】
なお、図7の中で、「FV with LLK−SS」と表記された箇所は、LLK−SSを引数に含むFV、つまり秘密状態の長期鍵を引数に含む暗号プリミティブの固定値を意味している。また、「Except for PW−PS PW−SS」と表記された箇所は、PW−PSとPW−SS、つまり公開状態または秘密状態のパスワードを含んではいけないことを意味している。
【0049】
<検証装置の構成>
図8は、本実施形態に係る認証または鍵交換のプロトコルの安全性を検証する検証装置1の構成を示す図である。
検証装置1は、制御部10と、記憶部20と、入力部30と、表示部40と、を備える。
【0050】
制御部10は、検証装置1の全体を制御する部分であり、記憶部20に記憶された各種プログラムを適宜読み出して実行することにより、上述のハードウェアと協働し、本発明に係る各種機能を実現している。制御部10は、CPU(Central Processing Unit)であってよい。
【0051】
記憶部20は、ハードウェア群を検証装置1として機能させるための各種プログラムや、本発明の機能を制御部10に実行させるプログラム、データベース等を記憶する。具体的には、記憶部20は、上述の暗号プリミティブの種類および役割、ならびに暗号プリミティブの関数値またはデータ値の種類と状態、さらには、上述の各安全性とその検証項目とを記憶している。なお、記憶部20は、ハードディスク、光ディスクドライブ、あるいは半導体メモリ等、様々な記憶装置のいずれかにより構成されてよい。
【0052】
入力部30は、検証装置1に対するユーザ(検証装置1の管理者)からの指示入力を受け付けるインタフェース装置である。入力部30は、例えばキーボードやマウス等により構成される。
【0053】
表示部40は、ユーザ(検証装置1の管理者)にデータの入力を受け付ける画面を表示したり、検証装置1による処理結果の画面を表示したりするものである。表示部40は、ブラウン管表示装置(CRT)、液晶表示装置(LCD)等のディスプレイ装置であってよい。
【0054】
なお、本発明でいうコンピュータとは、制御装置や記憶装置等を備えた情報処理装置である。検証装置1は、制御部10や記憶部20等を備えた情報処理装置であり、この情報処理装置は、本発明のコンピュータの概念に含まれる。
【0055】
また、制御部10は、プロトコル受付部101と、暗号プリミティブおよびデータ列挙部102と、種類設定部103と、役割設定部104と、要素設定部105と、安全性選択部106と、検証項目判定部107と、安全性判定部108と、を備える。
【0056】
プロトコル受付部101は、入力部30からの指示入力に基づいて、安全性の検証対象である認証または鍵交換のプロトコルの仕様データの入力を受け付ける。
【0057】
暗号プリミティブおよびデータ列挙部102は、プロトコル受付部101により受け付けたプロトコルの仕様データから、このプロトコルにおいて使用されている暗号プリミティブとデータを全て列挙する。
【0058】
種類設定部103は、暗号プリミティブおよびデータ列挙部102により列挙された暗号プリミティブの目的としての種類を、上述のSKE、EPW、PKE、DH、SIG、HF、MACの中から選択して設定する。
【0059】
役割設定部104は、種類設定部103により種類が選択された暗号プリミティブの役割を、上述のPAG、PKG、PAF、PAO、PNAの中から選択して設定する。
【0060】
要素設定部105は、暗号プリミティブおよびデータ列挙部102により列挙された暗号プリミティブとデータの値について、プロトコルの仕様に従い、種類を上述のGD、ID、TD、LLK、PW、FV、TVの中から選択し、また状態を上述のPS、SSの中から選択して設定する。
【0061】
ここで、これら暗号プリミティブの関数値およびデータ値の種類と状態とは、プロトコルのフローの順に設定される。なお、状態はセッション中での以前のフローに応じて更新されていく。また、公開状態(PS)と秘密状態(SS)では、公開状態(PS)が優先されることとする。
【0062】
安全性選択部106は、プロトコル受付部101により受け付けた検証対象のプロトコルに対して要求されている安全性を選択する。具体的には、入力部30を介して、上述の(a)MC−SIA、(b)SS−SPA、(c)SS−SAA、(d)SS−KKS、(e)SS−WFS、(f)RODAの中から選択入力を受け付ける。なお、選択される安全性は複数であってよく、プロトコルを運用する上で必要とされる最低限の安全性が選択されることが好ましい。
【0063】
検証項目判定部107は、種類設定部103、役割設定部104および要素設定部105により設定された情報を用いて、安全性選択部106により選択された各安全性に対する上述の検証項目を記憶部20から読み出し検証する。
【0064】
また、検証項目判定部107は、プロトコルにおいて要求されているセキュリティパラメータ(例えば、鍵のサイズ等)を設定する。対応する暗号プリミティブの関数値やデータ値のサイズが設定されたセキュリティパラメータを満足しているか否かを確認し、満足していないサイズが1つでもある場合、安全性判定部108によりプロトコルは安全ではないと判定される。
【0065】
安全性判定部108は、安全性選択部106により選択された全ての安全性に関して、検証項目判定部107により検証項目を満足していると判定された場合に、プロトコルが安全であると判定する。一方、安全性判定部108は、検証項目を満足していない安全性が1つでもある場合には、プロトコルは安全ではないと判定する。
【0066】
<処理フロー>
図9は、本実施形態に係る検証装置1の制御部10にて実行される検証方法の流れを示すフローチャートである。
【0067】
ステップS1では、制御部10は、受け付けた認証または鍵交換のプロトコルにおいて使用されている暗号プリミティブとデータを全て列挙する。
【0068】
ステップS2(種類設定ステップ)では、制御部10は、ステップS1で列挙された暗号プリミティブの目的としての種類を、記憶部20に記憶されている情報と比較することにより判断して設定する。
【0069】
ステップS3(役割設定ステップ)では、制御部10は、ステップS2で種類が設定された暗号プリミティブの役割を、記憶部20に記憶されている情報と比較することにより判断して設定する。
【0070】
ステップS4(要素設定ステップ)では、制御部10は、ステップS1で列挙された暗号プリミティブとデータの値について、プロトコルの仕様に従い、記憶部20に記憶されている情報と比較することにより種類と状態とを判断して設定する。
【0071】
ステップS5(安全性選択ステップ)では、制御部10は、受け付けた認証または鍵交換のプロトコルに対して要求されている安全性を、記憶部20に記憶されている所定の種類の中から選択する。
【0072】
ステップS6(検証項目判定ステップ)では、制御部10は、ステップS2、ステップS3およびステップS4で設定された各情報を用いて、ステップS5で選択された各安全性に対する検証項目を記憶部20から読み出し検証する。そして、制御部10は、ステップS5で選択された全ての安全性に関して検証項目を満足しているか否かを判定する。この判定がYESの場合はステップS7に移り、判定がNOの場合はステップS8に移る。
【0073】
ステップS7(安全性判定ステップ)では、制御部10は、検証対象である認証または鍵交換のプロトコルが要求されている安全性を全て満たしているため、このプロトコルは安全であると判定する。
【0074】
ステップS8(安全性判定ステップ)では、制御部10は、検証対象のプロトコルが要求されている安全性のいずれかを満たしていないため、このプロトコルは安全ではないと判定する。
【0075】
なお、本処理は、ソフトウェアにより行うこともできる。一連の処理をソフトウェアによって行う場合には、そのソフトウェアを構成するプログラムがコンピュータにインストールされる。また、当該プログラムは、CD−ROMのようなリムーバブルメディアに記録されてユーザに配布されてもよいし、ネットワークを介してユーザのコンピュータにダウンロードされることにより配布されてもよい。
【0076】
以上のように、本実施形態によれば、認証または鍵交換のプロトコルについて、要求されている安全性を選択して、それぞれの安全性を検証することができる。すなわち、本実施形態によれば、認証または鍵交換のプロトコルを安全性のレベルに応じて検証することができる。
【0077】
以上、本発明の実施形態について説明したが、本発明は上述した実施形態に限るものではない。また、本発明の実施形態に記載された効果は、本発明から生じる最も好適な効果を列挙したに過ぎず、本発明による効果は、本発明の実施形態に記載されたものに限定されるものではない。
【符号の説明】
【0078】
1 検証装置
10 制御部
20 記憶部
30 入力部
40 表示部
101 プロトコル受付部
102 暗号プリミティブおよびデータ列挙部
103 種類設定部
104 役割設定部
105 要素設定部
106 安全性選択部
107 検証項目判定部
108 安全性判定部

【特許請求の範囲】
【請求項1】
認証または鍵交換のプロトコルの安全性を検証する検証装置であって、
前記プロトコルにおいて使用されている暗号プリミティブの役割に対して設定される所定のフレームワークに適合する、前記認証のプロトコルにおけるなりすまし攻撃に対する安全性およびオフライン辞書攻撃に対する安全性のそれぞれの要件を満たすための検証項目と、前記鍵交換のプロトコルにおける受動的攻撃に対する安全性、能動的攻撃に対する安全性、既知鍵攻撃に対する安全性、弱前方秘匿性(weak forward secrecy)およびオフライン辞書攻撃に対する安全性のそれぞれの要件を満たすための検証項目と、を記憶する記憶部と、
前記プロトコルにおいて使用されている暗号プリミティブの種類を設定する種類設定部と、
前記種類設定部により種類が設定された暗号プリミティブの役割を設定する役割設定部と、
前記プロトコルにおけるデータ値の種類と状態、または暗号プリミティブの関数値の種類と状態とを示す要素を設定する要素設定部と、
要求に応じて検証対象の安全性を選択する安全性選択部と、
前記安全性選択部により選択された安全性それぞれに関する検証項目を前記記憶部から抽出し、前記暗号プリミティブの種類および役割ならびに前記要素設定部により設定された要素に基づいて、当該検証項目を満足するか否かを判定する検証項目判定部と、
前記検証項目判定部により前記選択された全ての安全性に関する検証項目を満足していると判定された場合に、前記プロトコルが安全であると判定する安全性判定部と、を備える検証装置。
【請求項2】
前記フレームワークは、g(f(A,B),C)と表現され、
関数gの役割は、前記認証のプロトコルにおける認証の対象となる第1の暗号プリミティブ、前記鍵交換のプロトコルにおける鍵生成対象となる第2の暗号プリミティブ、フロー上に現れる第3の暗号プリミティブ、または前記第1から第3の暗号プリミティブおよび前記第1から第3の暗号プリミティブの引数に含まれる第4の暗号プリミティブのいずれでもない第5の暗号プリミティブのいずれかであり、
関数fの役割は、関数gの役割が前記第1から第3の暗号プリミティブのいずれかである場合には、前記第4の暗号プリミティブであり、関数gの役割が前記第5の暗号プリミティブである場合には、前記第1から第3の暗号プリミティブのいずれかであり、
引数A、BおよびCは、暗号プリミティブの関数値またはデータ値であることを特徴とする請求項1に記載の検証装置。
【請求項3】
前記フレームワークの関数に設定される前記第1から第4の暗号プリミティブの種類は、共通鍵暗号、パスワードを用いた暗号化、公開鍵暗号、Diffie−Hellman族、ディジタル署名、ハッシュ関数またはメッセージ認証コードのいずれかであり、
当該関数の引数は、一般データ、IDデータ、テンポラリデータ、長期鍵、パスワード、関数固定値または関数テンポラリ値と、公開状態または秘密状態と、の組合せを示す要素値であることを特徴とする請求項2に記載の検証装置。
【請求項4】
前記認証または鍵交換のプロトコルにおける検証項目は、関数gおよび関数fの種類と、引数A、引数Bおよび引数Cのそれぞれに設定される要素値と、の組合せであることを特徴とする請求項3に記載の検証装置。
【請求項5】
コンピュータが認証または鍵交換のプロトコルの安全性を検証する検証方法であって、
当該コンピュータは、前記プロトコルにおいて使用されている暗号プリミティブの役割に対して設定される所定のフレームワークに適合する、前記認証のプロトコルにおけるなりすまし攻撃に対する安全性およびオフライン辞書攻撃に対する安全性のそれぞれの要件を満たすための検証項目と、前記鍵交換のプロトコルにおける受動的攻撃に対する安全性、能動的攻撃に対する安全性、既知鍵攻撃に対する安全性、弱前方秘匿性(weak forward secrecy)およびオフライン辞書攻撃に対する安全性のそれぞれの要件を満たすための検証項目と、を記憶する記憶部を備え、
前記プロトコルにおいて使用されている暗号プリミティブの種類を設定する種類設定ステップと、
前記種類設定ステップにより種類が設定された暗号プリミティブの役割を設定する役割設定ステップと、
前記プロトコルにおけるデータ値の種類と状態、または暗号プリミティブの関数値の種類と状態とを示す要素を設定する要素設定ステップと、
要求に応じて検証対象の安全性を選択する安全性選択ステップと、
前記安全性選択ステップにより選択された安全性それぞれに関する検証項目を前記記憶部から抽出し、前記暗号プリミティブの種類および役割ならびに前記要素設定ステップにより設定された要素に基づいて、当該検証項目を満足するか否かを判定する検証項目判定ステップと、
前記検証項目判定ステップにより前記選択された全ての安全性に関する検証項目を満足していると判定された場合に、前記プロトコルが安全であると判定する安全性判定ステップと、を含む検証方法。
【請求項6】
コンピュータに認証または鍵交換のプロトコルの安全性を検証させる検証プログラムであって、
当該コンピュータは、前記プロトコルにおいて使用されている暗号プリミティブの役割に対して設定される所定のフレームワークに適合する、前記認証のプロトコルにおけるなりすまし攻撃に対する安全性およびオフライン辞書攻撃に対する安全性のそれぞれの要件を満たすための検証項目と、前記鍵交換のプロトコルにおける受動的攻撃に対する安全性、能動的攻撃に対する安全性、既知鍵攻撃に対する安全性、弱前方秘匿性(weak forward secrecy)およびオフライン辞書攻撃に対する安全性のそれぞれの要件を満たすための検証項目と、を記憶する記憶部を備え、
前記プロトコルにおいて使用されている暗号プリミティブの種類を設定する種類設定ステップと、
前記種類設定ステップにより種類が設定された暗号プリミティブの役割を設定する役割設定ステップと、
前記プロトコルにおけるデータ値の種類と状態、または暗号プリミティブの関数値の種類と状態とを示す要素を設定する要素設定ステップと、
要求に応じて検証対象の安全性を選択する安全性選択ステップと、
前記安全性選択ステップにより選択された安全性それぞれに関する検証項目を前記記憶部から抽出し、前記暗号プリミティブの種類および役割ならびに前記要素設定ステップにより設定された要素に基づいて、当該検証項目を満足するか否かを判定する検証項目判定ステップと、
前記検証項目判定ステップにより前記選択された全ての安全性に関する検証項目を満足していると判定された場合に、前記プロトコルが安全であると判定する安全性判定ステップと、を実行させる検証プログラム。

【図1】
image rotate

【図2】
image rotate

【図3】
image rotate

【図4】
image rotate

【図5】
image rotate

【図6】
image rotate

【図7】
image rotate

【図8】
image rotate

【図9】
image rotate