説明

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

【課題】暗号プロトコルを安全性レベルに応じて検証することができる。
【解決手段】認証および鍵交換プロトコルにおいて、列挙した暗号プリミティブについて、危殆化情報を有するものがある場合に、安全ではないと判断する。一方、危殆化情報を有するものがない場合に、暗号プリミティブの役割を設定し、安全性の根拠の設定を行い、フローデータと暗号プリミティブの引数の種類と状態とを設定する。そして、設定したフローデータと暗号プリミティブの引数の種類と状態との関係に正しくないものを含む場合に、暗号プロトコルは安全ではないと判断する。一方、フローデータと暗号プリミティブの引数の種類と状態との関係がすべて正しいと判断した場合に、安全性に関する検証項目の選択を行い、満足しないものを含む場合に、暗号プロトコルは安全ではないと判断し、選択した検証項目をすべて満足する場合に、暗号プロトコルは安全であると判断する。

【発明の詳細な説明】
【技術分野】
【0001】
本発明は、認証や鍵共有などのセキュリティ機能を有する暗号プロトコルに関し、そうした暗号プロトコルの安全性を検証する暗号プロトコルの安全性検証装置、安全性検証方法およびプログラムに関する。
【背景技術】
【0002】
従来、プロトコル設計者の有するセキュリティ、暗号技術の見識に基づき、ヒューリスティックなアプローチで経験的に、安全な暗号プロトコルが提案されてきた。しかしながら、提案された暗号プロトコルの仕様が公開された後に、セキュリティ上の脆弱性が指摘されるケースが散見された。実際、標準化された暗号プロトコルが製品等を通じて、広く普及した後に、脆弱性が発見される場合、改修に関わるコストが大きな問題となる。
【0003】
特に、致命的な脆弱性が発見された場合には、経済的な損害の回避を目的とし、ソフトウェアのパッチの充当やハードウェアのチップ・部品の交換など、早急に対処する必要が生じる。したがって、提案された暗号プロトコルや関連製品が普及すればするほど、社会的なインパクトは非常に大きくなり、場合によってはシステム全体が破綻してしまう可能性もある。
【0004】
そのため、特許文献1および特許文献2に記載の記述では、「汎用結合可能安全性」と呼ばれる概念を利用した、暗号プロトコルの安全性を検証するための装置、方法、プログラムが開示されている。ここで、「汎用結合可能安全性」とは、ある暗号プロトコルがそのセキュリティ機能に関する理想機能を安全に実現するならば、この暗号プロトコルは安全であることを意味している。例えば、ある鍵交換プロトコルが鍵交換理想機能を安全に実現するならば、その鍵交換プロトコルは安全であることが示されたことになる。
【特許文献1】特開2007−28447号公報
【特許文献2】特開2008−35117号公報
【発明の開示】
【発明が解決しようとする課題】
【0005】
上記の先行技術文献において使用されている「汎用結合可能安全性」は、現在最も強力な安全性であると言われており、理想機能はセキュリティ機能に要求されるすべての安全性を網羅する。そのため、ある暗号プロトコルがその理想機能を安全に実現するとき、この暗号プロトコルはセキュリティ機能に要求されるすべての安全性を満足することになる。
【0006】
しかしながら、暗号プロトコルの安全性と効率性はトレードオフの関係にあり、暗号プロトコルの安全性を高くするにつれて、効率性が低くなっていく。そのため、暗号プロトコルの効率性を重要視するときには、許容される範囲まで安全性を低くしたい。しかしながら、上記の先行技術では、暗号プロトコルの厳密な安全性を検証することはできても、安全性レベルに応じた検証を行うことができない。
【0007】
そこで、本発明は、上述の課題に鑑みてなされたものであり、暗号プロトコルを安全性レベルに応じて検証することができる暗号プロトコルの安全性検証装置、安全性検証方法およびプログラムを提供することを目的とする。
【課題を解決するための手段】
【0008】
本発明は、上記の課題を解決するために、以下の事項を提案している。
【0009】
(1)本発明は、少なくとも認証や鍵共有のセキュリティ機能を有する暗号プロトコルのうち、認証プロトコル及び鍵交換プロトコルの安全性を検証する検証手段を備えた暗号プロトコルの安全性検証装置を提案している。
【0010】
(2)本発明は、(1)の暗号プロトコルの安全性検証装置について、前記検証手段が、前記認証プロトコルの安全性を検証する検証項目として、認証プロトコルの能動的攻撃安全における検証項目を含むことを特徴とする暗号プロトコルの安全性検証装置を提案している。
【0011】
(3)本発明は、(2)の暗号プロトコルの安全性検証装置について、前記認証プロトコルの能動的攻撃安全における検証項目として、前記検証手段が、認証対象となる暗号プリミティブが偽造不可能性の性質を有し、該暗号プリミティブの引数がいずれもプロトコルに初めて現れたか、同じセッションにおいて以前にプロトコルに現れたか、別のセッションにおいて繰り返し使用不可能でプロトコルに現れた一時的な公開情報であるか、または、プロトコルに初めて現れたか、同じセッションにおいて以前にプロトコルに現れたか、別のセッションにおいて繰り返し使用不可能でプロトコルに現れた一時的な秘密情報を含んでいるか、あるいは、認証対象となる暗号プリミティブが一方向性の性質を有し、該暗号プリミティブの引数がいずれもプロトコルに初めて現れた一時的な秘密情報を含んでいるか、をチェックすることを特徴とする暗号プロトコルの安全性検証装置を提案している。
【0012】
(4)本発明は、(1)の暗号プロトコルの安全性検証装置について、前記検証手段が、前記鍵交換プロトコルの安全性を検証する検証項目として、鍵交換プロトコルの能動的攻撃安全、受動的攻撃安全、オフライン辞書攻撃安全、既知鍵攻撃安全、フォワード秘匿性における検証項目を含むことを特徴とする暗号プロトコルの安全性検証装置を提案している。
【0013】
(5)本発明は、(4)の暗号プロトコルの安全性検証装置について、前記鍵交換プロトコルの能動的攻撃安全における検証項目として、鍵生成対象となる暗号プリミティブの引数に含まれる暗号プリミティブが識別不可能性または一方向性の性質を有し、該暗号プリミティブの引数がいずれもプロトコルに初めて現れた一時的な秘密情報と、別のセッションにおいて繰り返し使用可能でプロトコルに現れた長期的で完全な秘密情報または長期的で不完全な秘密情報を含んでいるか、をチェックすることを特徴とする暗号プロトコルの安全性検証装置を提案している。
【0014】
(6)本発明は、(4)の暗号プロトコルの安全性検証装置について、前記鍵交換プロトコルの受動的攻撃安全における検証項目として、鍵生成対象となる暗号プリミティブが識別不可能性の性質を有し、該暗号プリミティブの引数がいずれもプロトコルに初めて現れた一時的な秘密情報を含んでいるか、あるいは鍵生成対象となる暗号プリミティブが一方向性の性質を有し、該暗号プリミティブの引数に含まれる暗号プリミティブが識別不可能性の性質を有し、該暗号プリミティブの引数がプロトコルに初めて現れた一時的な秘密情報を含んでいるか、をチェックすることを特徴とする暗号プロトコルの安全性検証装置を提案している。
【0015】
(7)本発明は、(4)の暗号プロトコルの安全性検証装置について、前記鍵交換プロトコルのオフライン辞書攻撃安全における検証項目として、長期的で不完全な秘密情報を含む暗号プリミティブが一方向性の性質を有し、該暗号プリミティブの引数がいずれもプロトコルに初めて現れたか、同じセッションにおいて以前にプロトコルに現れたか、別のセッションにおいて繰り返し使用不可能でプロトコルに現れた一時的な秘密情報を含んでいるか、をチェックすることを特徴とする暗号プロトコルの安全性検証装置を提案している。
【0016】
(8)本発明は、(4)の暗号プロトコルの安全性検証装置について、前記鍵交換プロトコルの既知鍵攻撃安全における検証項目として、鍵生成対象となる暗号プリミティブが識別不可能性または一方向性の性質を有し、該暗号プリミティブの引数がいずれもプロトコルに初めて現れたか、同じセッションにおいて以前にプロトコルに現れたか、別のセッションにおいて繰り返し使用不可能でプロトコルに現れた一時的な秘密情報を含んでいるか、をチェックすることを特徴とする暗号プロトコルの安全性検証装置を提案している。
【0017】
(9)本発明は、(4)の暗号プロトコルの安全性検証装置について、前記鍵交換プロトコルのフォワード秘匿性における検証項目として、鍵生成対象となる暗号プリミティブが識別不可能性または一方向性の性質を有し、該暗号プリミティブの引数がいずれもプロトコルに初めて現れたか、同じセッションにおいて以前にプロトコルに現れたか、別のセッションにおいて繰り返し使用不可能でプロトコルに現れた一時的な秘密情報を含んでいるか、をチェックすることを特徴とする暗号プロトコルの安全性検証装置を提案している。
【0018】
(10)本発明は、暗号プロトコルの安全性を検証するための安全性検証方法であって、認証および鍵交換プロトコルにおいて使用されている暗号プリミティブを列挙する第1のステップと、前記列挙した暗号プリミティブについて、危殆化情報の有無を検証し、危殆化情報を有するものがある場合に、前記暗号プロトコルは安全ではないと判断する第2のステップと、該列挙した暗号プリミティブの中に、危殆化情報を有するものがない場合に、前記暗号プリミティブの役割を設定する第3のステップと、前記暗号プリミティブの安全性の根拠の設定を行う第4のステップと、フローの列挙を行う第5のステップと、フローデータと暗号プリミティブの引数の種類と状態とを設定する第6のステップと、該設定したフローデータと暗号プリミティブの引数の種類と状態との関係が正しいか否かを判断し、正しくないものを含む場合に、前記暗号プロトコルは安全ではないと判断する第7のステップと、前記設定したフローデータと暗号プリミティブの引数の種類と状態との関係がすべて正しいと判断した場合に、安全性に関する検証項目の選択を行う第8のステップと、該選択した検証項目をすべて満足するか否かを判断し、満足しないものを含む場合に、前記暗号プロトコルは選択した安全性に関して安全ではないと判断する第9のステップと、前記選択した検証項目をすべて満足する場合に、前記暗号プロトコルは安全であると判断する第10のステップと、を有することを特徴とする安全性検証方法を提案している。
【0019】
(11)本発明は、コンピュータに、暗号プロトコルの安全性を検証するための安全性検証方法を実行させるためのプログラムであって、認証および鍵交換プロトコルにおいて使用されている暗号プリミティブを列挙する第1のステップと、前記列挙した暗号プリミティブについて、危殆化情報の有無を検証し、危殆化情報を有するものがある場合に、前記暗号プロトコルは安全ではないと判断する第2のステップと、該列挙した暗号プリミティブの中に、危殆化情報を有するものがない場合に、前記暗号プリミティブの役割を設定する第3のステップと、前記暗号プリミティブの安全性の根拠の設定を行う第4のステップと、フローの列挙を行う第5のステップと、フローデータと暗号プリミティブの引数の種類と状態とを設定する第6のステップと、該設定したフローデータと暗号プリミティブの引数の種類と状態との関係が正しいか否かを判断し、正しくないものを含む場合に、前記暗号プロトコルは安全ではないと判断する第7のステップと、前記設定したフローデータと暗号プリミティブの引数の種類と状態との関係がすべて正しいと判断した場合に、安全性に関する検証項目の選択を行う第8のステップと、該選択した検証項目をすべて満足するか否かを判断し、満足しないものを含む場合に、前記暗号プロトコルは選択した安全性に関して安全ではないと判断する第9のステップと、前記選択した検証項目をすべて満足する場合に、前記暗号プロトコルは安全であると判断する第10のステップと、コンピュータに実行させるためのプログラムを提案している。
【発明の効果】
【0020】
本発明によれば、暗号プロトコルのうち、認証プロトコルと鍵交換プロトコルを安全性レベルに応じて検証することができるという効果がある。
【発明を実施するための最良の形態】
【0021】
以下、図面を用いて、本発明の実施形態について詳細に説明する。
なお、本実施形態における構成要素は適宜、既存の構成要素等との置き換えが可能であり、また、他の既存の構成要素との組み合わせを含む様々なバリエーションが可能である。したがって、本実施形態の記載をもって、特許請求の範囲に記載された発明の内容を限定するものではない。
【0022】
<暗号プロトコルの安全性レベルに関する既存のセキュリティモデル>
本発明の実施形態の説明に入る前に、暗号プロトコルの安全性レベルに関して、既存のセキュリティモデルを示す。本発明では、計算量理論にもとづいて、暗号プロトコルの安全性を証明するという「証明可能安全性」と呼ばれる概念を用いる。「暗号プロトコルが証明可能安全性を有する」とは、暗号プロトコルの安全性が、ある暗号プリミティブの安全性に帰着することを計算量理論的に証明可能であることである。
【0023】
ある暗号プロトコルを破る攻撃者を仮定した場合、ある暗号プリミティブを多項式時間で破るマシンを構成可能であることを証明することにより、この暗号プリミティブが破られなければ、暗号プロトコルも破られないことを証明する。本発明では、暗号プロトコルのうち、認証プロトコルと鍵交換プロトコルとを考える。
【0024】
上記の証明可能安全性において、認証プロトコルではmatching
conversation、鍵交換プロトコルではsemantic securityという安全性の概念がある。それぞれの概念に対し、認証・鍵交換プロトコルに要求される安全性に応じて、現実の攻撃モデルを想定し、以下の安全性に分類した。ただし、()内は、安全性に対応する攻撃を表している。
【0025】
(1)matching conversation
認証プロトコルにおいて、攻撃者が一方のパーティから受信したメッセージをそのままもう一方のパーティへ送ること以外に何もできないことを示す。すなわち、攻撃者は、メッセージの改ざんや新規メッセージの送付、メッセージの遮断、メッセージの順番の入れ替えなどの不正を行うことができない。
【0026】
(1A)能動的攻撃安全(なり済まし攻撃)
matching conversationにおける能動的攻撃安全は、攻撃者がパーティ間の通信を支配しても、認証プロトコルを破ることはできないことを示す。
【0027】
(2)semantic security
鍵交換プロトコルにおいて、攻撃者はセッション鍵に関するどんな情報も得ることができないことを示す。すなわち、攻撃者はセッション鍵と乱数を多項式時間で区別することができない。
【0028】
(2A)能動的攻撃安全(なり済まし攻撃)
semantic securityにおける能動的攻撃安全は、攻撃者がパーティ間の通信を支配しても、鍵交換プロトコルを破ることはできないことを示す。
【0029】
(2B)受動的攻撃安全(盗聴攻撃)
semantic securityにおける受動的攻撃安全は、攻撃者がパーティ間の通信を盗聴しても、鍵交換プロトコルを破ることはできないことを示す。
【0030】
(2C)オフライン辞書攻撃安全(オフライン辞書攻撃)
semantic securityにおけるオフライン辞書攻撃安全は、攻撃者がパスワード推測用の辞書からオフラインで過去の履歴に一致するパーティのパスワードを探索することはできないことを示す。
【0031】
(2D)既知鍵攻撃安全(既知鍵攻撃)
semantic securityにおける既知鍵攻撃安全は、攻撃者があるセッション鍵を得ることができたとしても、それとは別のセッション鍵を得ることはできないことを示す。
【0032】
(2E)forward secrecy(長期鍵破壊攻撃)
semantic securityにおけるforward
secrecyは、攻撃者が秘密鍵やパスワードなどの長期鍵を得ることができたとしても、それ以前に共有されたセッション鍵を得ることはできないことを示す。
【0033】
ただし、パスワード、長期鍵をそれぞれ使用しない鍵交換プロトコルの場合、(2C)のオフライン辞書攻撃安全、(2E)のforward
secrecyの安全性はそれぞれ要求されない。
【0034】
<暗号プリミティブに設定される情報と記号>
認証・鍵交換プロトコルにおいて使用されている暗号プリミティブに設定される情報は以下のとおりである。
(A)認証プロトコルにおける認証対象となる暗号プリミティブ(AGF)
(B)鍵交換プロトコルにおける鍵生成対象となる暗号プリミティブ(KGF)
(C)AGFやKGFの引数に含まれる暗号プリミティブ(ACP)
(D)それ以外の暗号プリミティブ(OCP)
【0035】
<暗号プリミティブに対して設定される安全性の根拠となる情報>
上記で設定された暗号プリミティブに対して設定される安全性の根拠となる情報は以下のとおりである。
(A)識別不可能性(IND): 秘密情報を知らずに、対応する2つの事象を多項式時間で識別することができないことを示す。
(B)一方向性(OW): 秘密情報を知らずに、出力値から入力値を多項式時間で計算することができないことを示す。
(C)偽造不可能性(UF): 秘密情報を知らずに、要求されるメッセージの認証子を多項式時間で生成することができないことを示す。
【0036】
<認証・鍵交換プロトコルにおけるすべてのフローデータ及び暗号プリミティブに設定される構成要素>
認証・鍵交換プロトコルにおけるすべてのフローデータ及び暗号プリミティブに設定される構成要素は以下のとおりである。
(A)フローデータ及び暗号プリミティブの引数の種類
a)一般公開情報(PUB)
b)特定公開情報(ID)
c)一時的な公開情報(TPK)
d)長期的で完全な秘密情報(LLK)
e)長期的で不完全な秘密情報(PW)
f)一時的な秘密情報(TSK)
(B)フローデータ及び暗号プリミティブの引数の状態
a)公開状態で初登場(PFT)
b)同じセッションにおいて以前に公開状態で登場(PSS)
c)別のセッションにおいて繰り返し使用可能で公開状態で登場(PRS)
d)別のセッションにおいて繰り返し使用不可能で公開状態で登場(PNS)
e)秘密状態で初登場(SFT)
f)同じセッションにおいて以前に秘密状態で登場(SSS)
g)別のセッションにおいて繰り返し使用可能で秘密状態で登場(SRS)
h)別のセッションにおいて繰り返し使用不可能で秘密状態で登場(SNS)
【0037】
<認証及び鍵交換プロトコルを安全性レベルに応じて検証する項目>
また、認証及び鍵交換プロトコルを安全性レベルに応じて検証する項目は、以下の通りである。
【0038】
<認証プロトコルに対するmatching conversation>
(A)能動的攻撃安全における検証項目と検証内容
a)AGFがUFであり、AGFの引数がいずれもTPK−PFTまたはTPK−PSSまたはTPK−PNSまたはTSK−SFTまたはTSK−SSSまたはTSK−SNSを含んでいる。
b)AGFがOWであり、AGFの引数がいずれもTSK−SFTを含んでいる。
【0039】
<鍵交換プロトコルに対するsemantic security>
(B)能動的攻撃安全における検証項目と検証内容
a)ACPがINDまたはOWであり、ACPの引数がいずれもTSK−SFTとLLK−SRSまたはPW−SRSを含んでいる。
【0040】
(C)受動的攻撃安全における検証項目と検証内容
a)KGFがINDであり、KGFの引数がいずれもTSK−SFTを含んでいる。
b)KGFがOWであり、ACPがINDであり、ACPの引数がTSK−SFTを含んでいる。
【0041】
(D)オフライン辞書攻撃安全における検証項目と検証内容
a)PWを含むOCPがOWであり、OCPの引数がいずれもTSK−SFTまたはTSK−SSSまたはTSK−SNSを含んでいる。
【0042】
(E)既知鍵攻撃安全における検証項目と検証内容
a)KGFがINDまたはOWであり、KGFの引数がいずれもTSK−SFTまたはTSK−SSSまたはTSK−SNSを含んでいる。
【0043】
(F)forward secrecyにおける検証項目と検証内容
a)KGFがINDまたはOWであり、KGFの引数がいずれもTSK−SFTまたはTSK−SSSまたはTSK−SNSを含んでいる。
【0044】
<暗号プロトコルの安全性検証装置の構成>
図1を用いて、本実施形態に係る暗号プロトコルの安全性検証装置の構成について説明する。本実施形態に係る暗号プロトコルの安全性検証装置は、図1に示すように、暗号プリミティブ列挙部1と、危殆化情報判定部2と、役割設定部3と、安全性根拠設定部4と、フロー列挙部5と、引数設定部6と、設定情報判定部7と、安全性選択部8と、検証項目判定部9と、安全性判定部10とから構成されている。
【0045】
暗号プリミティブ列挙部1は、認証・鍵交換プロトコルにおいて使用されている暗号プリミティブをすべて列挙する。危殆化情報判定部2は、列挙された暗号プリミティブに対して危殆化情報があるかどうかを確認する。危殆化情報が1つでもある場合、安全性判定部10が、認証・鍵交換プロトコルは安全ではないと判定する。
【0046】
役割設定部3は、列挙された暗号プリミティブのうち、暗号プリミティブの役割である情報、例えば、AGF、KGF、ACP、OCPを設定する。安全性根拠設定部4は、役割が設定された暗号プリミティブに対して、安全性の根拠となる情報、例えば、IND、OW、UFを設定する。
【0047】
フロー列挙部5は、認証・鍵交換プロトコルについて、すべてのフローを列挙する。引数設定部6は、列挙されたフローデータ及び暗号プリミティブについて、フローデータ及び暗号プリミティブの引数の種類、例えば、PUB、ID、TPK、LLK、PW、TSK等、およびフローデータ及び暗号プリミティブの引数の状態、例えば、PFT、PSS、PRS、PNS、SFT、SSS、SRS、SNS等の構成要素を設定する。
【0048】
設定情報判定部7は、図2に示すフローデータ及び暗号プリミティブの引数の種類と状態の関係を示したデータテーブルに基づいて、フローデータ及び暗号プリミティブの引数に関する種類と状態の関係がすべて正しいかどうかを判定する。そして、1つでも正しくない関係がある場合には、安全性判定部10が、認証・鍵交換プロトコルは安全ではないと判定する。
【0049】
安全性選択部8は、認証・鍵交換プロトコルにおいて、要求されている安全性を選択する。なお、複数の安全性を選択してもよい。検証項目判定部9は、安全性選択部8が選択した安全性に対して、引数設定部6が設定した情報を用いて、前述した各安全性に関する検証項目を検証する。
【0050】
ただし、検証項目を検証する前に、認証・鍵交換プロトコルにおける各安全性に応じて、以下の準備を行う。
<認証プロトコルに対するmatching conversation>
(A)能動的攻撃安全における検証項目
能動的攻撃安全は、なり済まし攻撃に対応し、攻撃者がパーティ間の通信を支配して得られる情報から、相手のパーティに認証させるための情報を生成することができないことを示している。なお、なり済まし攻撃により設定される情報は、すべてのフローである。
【0051】
設定された情報に対し、プロトコルのフロー順に以下の事項を設定する。ここで、フローデータと引数の状態は更新されていくものとする。ただし、公開状態と秘密状態では、公開状態を優先するものとする。
a)AGF、ACP、OCPの種類と安全性の根拠
b)AGF、ACP、OCPの引数の種類と状態
c)フローデータの種類と状態
【0052】
なお、AGFとACPの引数に暗号プリミティブが入れ子構造になっている場合、AGFとACPの引き数の状態を最終段階に設定する。
【0053】
<鍵交換プロトコルに対するsemantic security>
(A)能動的攻撃安全における検証項目
能動的攻撃安全は、なり済まし攻撃に対応し、攻撃者がパーティ間の通信を支配して得られる情報から、セッション鍵と乱数を多項式時間で区別することができないことを示している。なお、なり済まし攻撃により設定される情報はすべてのフローである。
【0054】
設定された情報に対し、プロトコルのフロー順に以下の事項を設定する。ここで、フローデータと引数の状態は更新されていくものとする。ただし、公開状態と秘密状態では、公開状態を優先するものとする。
a)KGF、ACP、OCPの種類と安全性の根拠
b)KGF、ACP、OCPの引数の種類と状態
c)フローデータの種類と状態
【0055】
なお、KGFとACPの引数に暗号プリミティブが入れ子構造になっている場合、KGFとACPの引き数の状態を最終段階に設定する。
【0056】
(B)受動的攻撃安全における検証項目
受動的攻撃安全は、盗聴攻撃に対応し、攻撃者がパーティ間の通信を盗聴して得られる情報から、セッション鍵と乱数を多項式時間で区別することができないことを示している。なお、盗聴攻撃により設定される情報は、すべてのフローである。
【0057】
設定された情報に対し、プロトコルのフロー順に以下の事項を設定する。ここで、フローデータと引数の状態は更新されていくものとする。ただし、公開状態と秘密状態では、公開状態を優先するものとする。
a)KGF、ACP、OCPの種類と安全性の根拠
b)KGF、ACP、OCPの引数の種類と状態
c)フローデータの種類と状態
【0058】
なお、KGFとACPの引数に暗号プリミティブが入れ子構造になっている場合、KGFとACPの引き数の状態を最終段階に設定する。
【0059】
(C)オフライン辞書攻撃安全における検証項目
オフライン辞書攻撃安全は、オフライン辞書攻撃に対応し、攻撃者がパスワード推測用の辞書からパーティのパスワードをオフラインで探索するための過去の履歴から、セッション鍵と乱数を多項式時間で区別することができないことを示している。なお、オフライン辞書攻撃により設定される情報は、すべてのフローである。
【0060】
設定された情報に対し、プロトコルのフロー順に以下の事項を設定する。ここで、フローデータと引数の状態は更新されていくものとする。ただし、公開状態と秘密状態では、公開状態を優先するものとする。
a)OCPの種類と安全性の根拠
b)OCPの引数の種類と状態
c)フローデータの種類と状態
【0061】
(D)既知鍵攻撃安全における検証項目
既知鍵攻撃安全は、既知鍵攻撃に対応し、攻撃者が別のセッションにおいて得られたセッション鍵から、セッション鍵と乱数を多項式時間で区別することができないことを示している。なお、既知鍵攻撃により設定される情報は、他のすべてのセッションのセッション鍵である。
【0062】
設定された情報に対し、プロトコルのフロー順に以下の事項を設定する。ここで、フローデータと引数の状態は更新されていくものとする。ただし、公開状態と秘密状態では、公開状態を優先するものとする。
a)KGF、ACP、OCPの種類と安全性の根拠
b)KGF、ACP、OCPの引数の種類と状態
c)フローデータの種類と状態
【0063】
なお、KGFとACPの引数に暗号プリミティブが入れ子構造になっている場合、KGFとACPの引き数の状態を最終段階に設定する。
【0064】
(E)forward secrecyにおける検証項目
forward secrecyは、長期鍵破壊攻撃に対応し、攻撃者がパーティの端末に侵入して得られた秘密鍵やパスワードなどの長期鍵から、セッション鍵と乱数を多項式時間で区別することができないことを示している。なお、長期鍵破壊攻撃により設定される情報は、長期鍵である。
【0065】
設定された情報に対し、プロトコルのフロー順に以下の事項を設定する。ここで、フローデータと引数の状態は更新されていくものとする。ただし、公開状態と秘密状態では、公開状態を優先するものとする。この場合、長期鍵は公開情報として扱う。
a)KGF、ACP、OCPの種類と安全性の根拠
b)KGF、ACP、OCPの引数の種類と状態
c)フローデータの種類と状態
【0066】
なお、KGFとACPの引数に暗号プリミティブが入れ子構造になっている場合、KGFとACPの引き数の状態を最終段階に設定する。
【0067】
<暗号プロトコルの安全性検証装置の処理>
図3を用いて、暗号プロトコルの安全性検証装置の処理について、説明する。
まず、認証および鍵交換プロトコルにおいて使用されている暗号プリミティブを列挙する(ステップS101)。次に、列挙した暗号プリミティブについて、危殆化情報の有無を検証し(ステップS102)、危殆化情報を有するものがある場合(ステップS102の「No」)に、暗号プロトコルは安全ではないと判断する。
【0068】
一方、列挙した暗号プリミティブの中に、危殆化情報を有するものがない場合に(ステップS102の「Yes」)、暗号プリミティブの役割を設定する(ステップS103)。さらに、暗号プリミティブの安全性の根拠の設定を行い(ステップS104)、フローの列挙を行って(ステップS105)、フローデータと暗号プリミティブの引数の種類と状態とを設定する(ステップS106)。
【0069】
そして、設定したフローデータと暗号プリミティブの引数の種類と状態との関係が正しいか否かを判断し(ステップS107)、正しくないものを含む場合に(ステップS107の「No」)、暗号プロトコルは安全ではないと判断する。一方、設定したフローデータと暗号プリミティブの引数の種類と状態との関係がすべて正しいと判断した場合に(ステップS107の「Yes」)、安全性に関する検証項目の選択を行う(ステップS108)。
【0070】
そして、選択した検証項目をすべて満足するか否かを判断し(ステップS109)、満足しないものを含む場合に(ステップS109の「No」)、暗号プロトコルは選択した安全性に関して安全ではないと判断し、選択した検証項目をすべて満足する場合に(ステップS109の「Yes」)、暗号プロトコルは安全であると判断する。
【0071】
したがって、本実施形態によれば、暗号プロトコルのうち、認証プロトコルと鍵交換プロトコルを安全性レベルに応じて検証することができる。
【0072】
なお、上述の一連の処理をプログラムとしてコンピュータ読み取り可能な記録媒体に記録し、この記録媒体に記録されたプログラムを暗号プロトコルの安全性検証装置に読み込ませ、実行することによって本発明の暗号プロトコルの安全性検証装置を実現することができる。
【0073】
また、WWW(World Wide Web)システムを利用している場合であれば、ホームページ提供環境(あるいは表示環境)も含むものとする。また、上記プログラムは、このプログラムを記憶装置等に格納したコンピュータから、伝送媒体を介して、あるいは、伝送媒体中の伝送波により他のコンピュータに伝送されてもよい。ここで、プログラムを伝送する「伝送媒体」は、インターネット等のネットワーク(通信網)や電話回線等の通信回線(通信線)のように情報を伝送する機能を有する媒体のことをいう。
【0074】
また、上記プログラムは、前述した機能の一部を実現するためのものであっても良い。さらに、前述した機能をコンピュータにすでに記録されているプログラムとの組合せで実現できるもの、いわゆる差分ファイル(差分プログラム)であっても良い。
【0075】
以上、この発明の実施形態につき、図面を参照して詳述してきたが、具体的な構成はこの実施形態に限られるものではなく、この発明の要旨を逸脱しない範囲の設計等も含まれる。
【図面の簡単な説明】
【0076】
【図1】本実施形態に係る暗号プロトコルの安全性検証装置の構成を示す図である。
【図2】本実施形態に係るフローデータと暗号プリミティブの引数の種類と状態との関係を示す図である。
【図3】本実施形態に係る暗号プロトコルの安全性検証装置の処理フローである。
【符号の説明】
【0077】
1・・・暗号プリミティブ列挙部
2・・・危殆化情報判定部
3・・・役割設定部
4・・・安全性根拠設定部
5・・・フロー列挙部
6・・・引数設定部
7・・・設定情報判定部
8・・・安全性選択部
9・・・検証項目判定部
10・・・安全性判定部

【特許請求の範囲】
【請求項1】
少なくとも認証や鍵共有のセキュリティ機能を有する暗号プロトコルのうち、認証プロトコル及び鍵交換プロトコルの安全性を検証する検証手段を備えた暗号プロトコルの安全性検証装置。
【請求項2】
前記検証手段が、前記認証プロトコルの安全性を検証する検証項目として、認証プロトコルの能動的攻撃安全における検証項目を含むことを特徴とする請求項1に記載の暗号プロトコルの安全性検証装置。
【請求項3】
前記認証プロトコルの能動的攻撃安全における検証項目として、前記検証手段が、認証対象となる暗号プリミティブが偽造不可能性の性質を有し、該暗号プリミティブの引数がいずれもプロトコルに初めて現れたか、同じセッションにおいて以前にプロトコルに現れたか、別のセッションにおいて繰り返し使用不可能でプロトコルに現れた一時的な公開情報であるか、または、プロトコルに初めて現れたか、同じセッションにおいて以前にプロトコルに現れたか、別のセッションにおいて繰り返し使用不可能でプロトコルに現れた一時的な秘密情報を含んでいるか、あるいは、認証対象となる暗号プリミティブが一方向性の性質を有し、該暗号プリミティブの引数がいずれもプロトコルに初めて現れた一時的な秘密情報を含んでいるか、をチェックすることを特徴とする請求項2に記載の暗号プロトコルの安全性検証装置。
【請求項4】
前記検証手段が、前記鍵交換プロトコルの安全性を検証する検証項目として、鍵交換プロトコルの能動的攻撃安全、受動的攻撃安全、オフライン辞書攻撃安全、既知鍵攻撃安全、フォワード秘匿性における検証項目を含むことを特徴とする請求項1に記載の暗号プロトコルの安全性検証装置。
【請求項5】
前記鍵交換プロトコルの能動的攻撃安全における検証項目として、鍵生成対象となる暗号プリミティブの引数に含まれる暗号プリミティブが識別不可能性または一方向性の性質を有し、該暗号プリミティブの引数がいずれもプロトコルに初めて現れた一時的な秘密情報と、別のセッションにおいて繰り返し使用可能でプロトコルに現れた長期的で完全な秘密情報または長期的で不完全な秘密情報を含んでいるか、をチェックすることを特徴とする請求項4に記載の暗号プロトコルの安全性検証装置。
【請求項6】
前記鍵交換プロトコルの受動的攻撃安全における検証項目として、鍵生成対象となる暗号プリミティブが識別不可能性の性質を有し、該暗号プリミティブの引数がいずれもプロトコルに初めて現れた一時的な秘密情報を含んでいるか、あるいは鍵生成対象となる暗号プリミティブが一方向性の性質を有し、該暗号プリミティブの引数に含まれる暗号プリミティブが識別不可能性の性質を有し、該暗号プリミティブの引数がプロトコルに初めて現れた一時的な秘密情報を含んでいるか、をチェックすることを特徴とする請求項4に記載の暗号プロトコルの安全性検証装置。
【請求項7】
前記鍵交換プロトコルのオフライン辞書攻撃安全における検証項目として、長期的で不完全な秘密情報を含む暗号プリミティブが一方向性の性質を有し、該暗号プリミティブの引数がいずれもプロトコルに初めて現れたか、同じセッションにおいて以前にプロトコルに現れたか、別のセッションにおいて繰り返し使用不可能でプロトコルに現れた一時的な秘密情報を含んでいるか、をチェックすることを特徴とする請求項4に記載の暗号プロトコルの安全性検証装置。
【請求項8】
前記鍵交換プロトコルの既知鍵攻撃安全における検証項目として、鍵生成対象となる暗号プリミティブが識別不可能性または一方向性の性質を有し、該暗号プリミティブの引数がいずれもプロトコルに初めて現れたか、同じセッションにおいて以前にプロトコルに現れたか、別のセッションにおいて繰り返し使用不可能でプロトコルに現れた一時的な秘密情報を含んでいるか、をチェックすることを特徴とする請求項4に記載の暗号プロトコルの安全性検証装置。
【請求項9】
前記鍵交換プロトコルのフォワード秘匿性における検証項目として、鍵生成対象となる暗号プリミティブが識別不可能性または一方向性の性質を有し、該暗号プリミティブの引数がいずれもプロトコルに初めて現れたか、同じセッションにおいて以前にプロトコルに現れたか、別のセッションにおいて繰り返し使用不可能でプロトコルに現れた一時的な秘密情報を含んでいるか、をチェックすることを特徴とする請求項4に記載の暗号プロトコルの安全性検証装置。
【請求項10】
暗号プロトコルの安全性を検証するための安全性検証方法であって、
認証および鍵交換プロトコルにおいて使用されている暗号プリミティブを列挙する第1のステップと、
前記列挙した暗号プリミティブについて、危殆化情報の有無を検証し、危殆化情報を有するものがある場合に、前記暗号プロトコルは安全ではないと判断する第2のステップと、
該列挙した暗号プリミティブの中に、危殆化情報を有するものがない場合に、前記暗号プリミティブの役割を設定する第3のステップと、
前記暗号プリミティブの安全性の根拠の設定を行う第4のステップと、
フローの列挙を行う第5のステップと、
フローデータと暗号プリミティブの引数の種類と状態とを設定する第6のステップと、
該設定したフローデータと暗号プリミティブの引数の種類と状態との関係が正しいか否かを判断し、正しくないものを含む場合に、前記暗号プロトコルは安全ではないと判断する第7のステップと、
前記設定したフローデータと暗号プリミティブの引数の種類と状態との関係がすべて正しいと判断した場合に、安全性に関する検証項目の選択を行う第8のステップと、
該選択した検証項目をすべて満足するか否かを判断し、満足しないものを含む場合に、前記暗号プロトコルは選択した安全性に関して安全ではないと判断する第9のステップと、
前記選択した検証項目をすべて満足する場合に、前記暗号プロトコルは安全であると判断する第10のステップと、
を有することを特徴とする安全性検証方法。
【請求項11】
コンピュータに、暗号プロトコルの安全性を検証するための安全性検証方法を実行させるためのプログラムであって、
認証および鍵交換プロトコルにおいて使用されている暗号プリミティブを列挙する第1のステップと、
前記列挙した暗号プリミティブについて、危殆化情報の有無を検証し、危殆化情報を有するものがある場合に、前記暗号プロトコルは安全ではないと判断する第2のステップと、
該列挙した暗号プリミティブの中に、危殆化情報を有するものがない場合に、前記暗号プリミティブの役割を設定する第3のステップと、
前記暗号プリミティブの安全性の根拠の設定を行う第4のステップと、
フローの列挙を行う第5のステップと、
フローデータと暗号プリミティブの引数の種類と状態とを設定する第6のステップと、
該設定したフローデータと暗号プリミティブの引数の種類と状態との関係が正しいか否かを判断し、正しくないものを含む場合に、前記暗号プロトコルは安全ではないと判断する第7のステップと、
前記設定したフローデータと暗号プリミティブの引数の種類と状態との関係がすべて正しいと判断した場合に、安全性に関する検証項目の選択を行う第8のステップと、
該選択した検証項目をすべて満足するか否かを判断し、満足しないものを含む場合に、前記暗号プロトコルは選択した安全性に関して安全ではないと判断する第9のステップと、
前記選択した検証項目をすべて満足する場合に、前記暗号プロトコルは安全であると判断する第10のステップと、
コンピュータに実行させるためのプログラム。

【図1】
image rotate

【図2】
image rotate

【図3】
image rotate


【公開番号】特開2010−10863(P2010−10863A)
【公開日】平成22年1月14日(2010.1.14)
【国際特許分類】
【出願番号】特願2008−165332(P2008−165332)
【出願日】平成20年6月25日(2008.6.25)
【国等の委託研究の成果に係る記載事項】(出願人による申告)平成19年度、独立行政法人情報通信研究機構「ユビキタスネットワークにおける環境に応じたセキュリティプロトコルの自動生成・カスタマイズ技術に関する研究開発」委託研究、産業技術力強化法第19条の適用を受ける特許出願
【出願人】(599108264)株式会社KDDI研究所 (233)
【Fターム(参考)】