シンボリックモデルチェックとは正確には何ですか?


8

シンボリックモデルチェックは、Kripkeモデルのようなモデルを使用したCTLのような式としての状態セットと遷移関係の表現に基づく状態空間トラバーサルであることを知っています。私は理論を知っています。しかし、実際のアプリケーションを理解するのは難しいと感じています。正確にどこで使用されていますか?それは正確には何をし、どのように機能しますか?

誰かが実際の例で説明し、理論を実践に関連付けることはできますか?


1
これは私には広いようです。「それは何をしますか?」一部は妥当なスコープ(またはそうでない)かもしれませんが、「どこで使用されますか?」a)完全に別の質問であり、b)おそらく広すぎる
ラファエル

しかし、それに基づいて例を取り上げて説明することができます。それは広すぎません。
Xpleria 2015年

2
たとえば、Christel BaierとJoost-Pieter Katoenによる "Principles of Model Checking"のように、標準的なテキストでのシンボリックモデルチェックの説明に満足できないのはなぜですか。混乱している部分はありますか?
hengxin 2015年

彼らは「それがどのように行われることになっているのか」について話しているが、「どのように正確に行われているのか」については語っていない。理論と実際の実装を関連付けようとしています。私はまだこれに慣れていないので、例が必要です。
Xpleria 2015年

1
その時あなたは間違ったサイトにいるかもしれません。コンピュータサイエンスは概念(「それをどのように行うべきか」)に関するものです。「どのように行われるか」については、実践者に尋ねる必要があります。
ラファエル

回答:


4

シンボリックモデルチェックは、シンボリック状態で機能するモデルチェックです。つまり、状態を記号表現、通常は順序付き二分決定グラフ(OBDD)にエンコードします。

問題は、彼らが何をし、どのように機能するかです。

最初に、いくつかのアプリケーションのソースコードを用意します。次に、ソースコードをクリプケ構造のような状態遷移グラフに変換します。状態は、その特定の状態で何が真実であるかを説明する原子命題で満たされています。シンボリックモデルチェックでは、アトミックな命題がOBDDとしてエンコードされ、スペースを節約してパフォーマンスを向上させます。

次に、モデルチェッカーはいくつかの初期状態から開始し、状態を調べて、状態遷移グラフでエラーを探します。エラーが見つかると、多くの場合、エラーを示すテストケースが生成されます。シンボリックOBDDを使用して、状態空間をある程度最適にナビゲートします。そこでもっと説明できたらいいのにと思っています。

しかし、それは基本的にそれだけです。プログラムを形式モデル(状態遷移グラフ)に変換し、シンボリック最適化を使用して状態空間をナビゲートして(LTL / CTL仕様と比較して)エラーを探します。そして、エラーが見つかった場合、モデルチェッカーはドキュメント化して解決するのに役立つ情報を提供します。


5

シンボリックモデルチェックは、通信およびセキュリティプロトコルの正確性を検証するのに非常に役立ちます。例えば:

  • OAUTH2実装のシンボリックモデルは、攻撃者が秘密の認証トークンまたはプロセスの違反に役立つ可能性のある関連する状況データを取得するという意図しない結果をチェックするのに役立ちます。
  • TLSハンドシェイクなどの暗号プロトコルのシンボリックモデルは、暗号設計に意図しない結果がないことを確認するのに役立ちます。

これは、すべてのプリミティブ関数とプロトコルアルゴリズムのシンボリックな記述を記述し、ProVerifなどのシンボリックモデルチェッカーを使用して状態空間を走査し、好ましくない結果を生成する状態の組み合わせを検出しようとします。ProVerifの場合、シンボリックモデルは、適用されたPi計算をモデリング言語として使用して記述されます。これにより、機能的なMLのような構文でプロトコルを記述できます。

弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.