true/false/undefという割り切り Was: 第5回会合でご紹介したセキュリティ分析図作成ツール language-sad を公開しました

32 views
Skip to first unread message

Matsunami, Masaru (SDNA)

unread,
Sep 3, 2017, 8:33:21 PM9/3/17
to 脅威分析研究会 SIGSTA

田口先生、みなさま

 

松並です。議論いただきありがとうございます。

 

攻撃では無くて防御策についてですので、若干、解釈等について違いが出てくるのではないか

 

攻撃側、防御側のどちらの立場をとるかによって、考え方や解釈が変わる可能性がありますが、

経験が不十分なため、本当に違いがあるのか、それとも本質的な違いはないのか、まだ分かりませんし、

とても興味があります。

 

 

三値論理を利用する場合、 truefalse 以外の三番目の値をどのように解釈するかは色々ありますが、

undef というのが良いかについては若干、検討が必要なのではないかと思いました。

特にそれ以下の意味付けを見ると、何か他の適切な値の表現があるのではないかと思いました。

 

ご指摘の通りです。3値論理と書きましたが、ちょっと正しくありませんね。true/false/undefで表現

しようとしている意味?の空間は下記の2つの軸から構成されているようなものだと思います。

軸1:true / false

軸2:軸1の値が決定済み / 未決定(undef)

 

undef」という名称はJavaScriptで変数に値がセットされていないことを表すundefinedという

特別な値(値がセットされていないことを表す値)がありまして、実際にlanguage-sad内部では

true / false/ undefined を使っているので、undefinedを短縮してundefとしているだけなのです。

 

ちなみにundefを導入したことで、分析作業では以下のようなメリットがあります。

undefLeafノードを見れば、次に調べないといけない設計情報が分かる

ToDo化しやすい 次に何をすべきか迷わなくて済む

andの子ノードのうちfalseになりそうな子ノードの設計情報を優先して調べる

falseになれば他の子ノードの調査を省略できる

orの子ノードのうちtrueに・・・以下同文

 

 

1) GSN 図で表現されているものの Confidence Level をどのように計算するのか(様々な確率が提唱されています)

2)根拠の信頼度はどのように計測するのか

 

language-sadが出力するセキュリティ分析図は「とにかく簡単にセキュリティ分析ができること」

を目指しているものでして、そのため「確からしさ」といった程度表現をばっさりと捨てています。

そのため2)の根拠の確からしさをtrueとすべきかfalseとすべきかを分析者の判断にゆだねており、

なぜtrue / falseと判断したのかを分析図中に[根拠]として理由記載することで、

確からしさの思考・考察の内容も後から確認できるようにしています。

2)を単純化していますので1)の計算は単なるbool計算になるので、1)の計算方法の妥当性の議論

まで踏み込む必要がないといったところです。もし根拠を連続値で扱うと1)の計算方法は難しい

議論になると思います。

 

まずはtrue/falseでどこまでセキュリティ分析できるのかやってみよう!意外とイケるんじゃないか?

というのが出発点となる考え方でやっています。まだまだ経験不足で何とも言えませんが。

 

 

このようにご指摘等いただけますと、自分のしていることを客観的にとらえる機会となったり、

GSNのことも少し理解できたりと、とても勉強になります。いつもありがとうございます。

 

追伸:language-sadは機能改善、バグ修正等、アップデートしております。Ver. 0.1.4が最新です。

 

松並

 

From: sig...@googlegroups.com [mailto:sig...@googlegroups.com] On Behalf Of Kenji Taguchi
Sent: Saturday, September 2, 2017 11:19 PM
To:
脅威分析研究会 SIGSTA <sig...@googlegroups.com>
Cc: kenji....@gmail.com
Subject: Re: [sigsta] Re: Attack Tree
を書いてみました RE: 5回会合でご紹介したセキュリティ分析図作成ツール language-sad を公開しました

 

松並様、

 

 新しい例で示されたのが、攻撃では無くて防御策についてですので、若干、解釈等について違いが出てくるのではないかと思うのですが、ちょっと時間が空いてしまいましたが、以下の質問・コメントがあります。

 

> 松並です。はい3値論理です。andorは次のようにundefを扱っています。

 

 三値論理を利用する場合、 truefalse 以外の三番目の値をどのように解釈するかは色々ありますが、 undef というのが良いかについては若干、検討が必要なのではないかと思いました。特にそれ以下の意味付けを見ると、何か他の適切な値の表現があるのではないかと思いました。

 

> 利用できているかどうかを下記のような5項目で調べている段階で、[5]の条件を満たせているのかどうか

> まだ分からないときにundefして扱います。

 

 後、根拠という新しいノードを追加され、それにより、基本ノードの真理値を判定されています。これは、GSN Goal Structuring Notation)と非常に構造的に類似していると思いました。GSNにおいては、いくつか議論される点があり、例えば、以下について色々と議論されています。

 

1) GSN 図で表現されているものの Confidence Level をどのように計算するのか(様々な確率が提唱されています)

2)根拠の信頼度はどのように計測するのか

 

 例でみると、根拠が正しいので、基本ノード(ツリーの末端(リーフ)ノード)が true とされていますが、実際にはそこに色々な判断が入りそうな気がします(上記の 2))。

 

 私自身は、このような表記法は非常に有効だと思いますので、続けて議論させて頂けると幸いです。

 

田口

 


2017
829日火曜日 175516 UTC+9 松並@事務局:

田口先生、みなさま

 

undef の説明ありがとうございました。あまり関係無いとは思いますが、そうすると三値論理になっているなあ、と思いました。

それが何かに使えるかどうかは、直ぐに何も浮かびませんが。。。

 

松並です。はい3値論理です。andorは次のようにundefを扱っています。

undefは次のようなケースに使います。HTTPS通信をするシステムがあった場合、HTTPS技術を正しく

利用できているかどうかを下記のような5項目で調べている段階で、[5]の条件を満たせているのかどうか

まだ分からないときにundefして扱います。下図は、この段階では[1]は真になるか偽になるか分からない、

[5]の結果次第であるということを表現しています。後に設計者に確認することで真か偽が判明して[1]の値

が決定することになります。

 

 

ちなみに他のノードが1つでも偽であることが明らかとなれば、すべてのノードの値が分からなくても

[1]は偽になります。

 

私の方は、最近、中間ノードもっと、きちんとして値を入れた方が良いのではないかと思っています。

そのような場合は、松並さんの記法では難しいかなあと思います(ゲート記号が書かれているので)。

 

同意です。いろんな値の設定方法、計算方法、表現の方法が考えられまして、プロトタイピングで

試してみることが良いものを見つける早道であると思います。ということで、このツールのソースが

そうした試行に使えるようでしたら嬉しいと思っています。

 

ちなみに表記法の改造したい場合は、dot-writer.jsを改造してgraphvizdot言語の出力を改造する

ことでできます。

 

松並

 

 

From: sig...@googlegroups.com [mailto:sig...@googlegroups.com] On Behalf Of Kenji Taguchi
Sent: Tuesday, August 29, 2017 4:46 PM
To:
脅威分析研究会 SIGSTA <sig...@googlegroups.com>
Subject: Re: [sigsta] Re: Attack Tree
を書いてみました RE: 5回会合でご紹介したセキュリティ分析図作成ツール language-sad を公開しました

 

松並様、

 

 現実逃避中です。。。

 

  undef の説明ありがとうございました。あまり関係無いとは思いますが、そうすると三値論理になっているなあ、と思いました。それが何かに使えるかどうかは、直ぐに何も浮かびませんが。。。

 

 私の方は、最近、中間ノードもっと、きちんとして値を入れた方が良いのではないかと思っています。そのような場合は、松並さんの記法では難しいかなあと思います(ゲート記号が書かれているので)。

 

田口

 

2017829日火曜日 140148 UTC+9 松並@事務局:

田口先生、みなさま

 

松並です。ATのサンプルを見ていただいたのですね!ありがとうございます。

 

■ノード間の曲線

ノート間を結ぶ曲線はgraphvizが勝手に書いてくれるベジエ曲線です。

[7]-[9]の線が[7]-[8]の線に重なってしまうところはちょっと美しくありませんが、

簡単にノードの自動配置までやってくれるgraphvizは大変ありがたいです。

 

undefとは?

末端ノード(葉ノード)のundefに関してですが、下記URLFigure 1のように、

true(=possible)もしくはfalse(=impossible)と記述しておいたほうがよかったですね。

https://www.schneier.com/academic/archives/1999/12/attack_trees.html

(あとでAT図のサンプルを差し替えるかもしれません。)

 

このツールでは「すべての命題ノードはtrue()/false()/undef(不定)のいずれかの値を持つ」

という作りになっています。命題ノードの内容が成り立つかどうか不明な状態、つまり真か偽が

判断できる根拠がまだ見つかっていない状態を表現したくて、undefという値を使えるように

しています。システムを分析している途中は沢山のundef(設計確認しないと何とも言えない)

がありますので。

 

命題ノードの右端は子供があるノードの場合は親子関係のand/or/not/=を表示し、

末端ノードの場合はそのノード自身のtrue/false/undefを表示するようにしています。

上記URLFigure 1で言えば、PIを書くところにandorも書いていることに相当します。

これは単に見た目をシンプルにしたくて、こうした表現仕様にしています。

 

命題ノードの値はノードの色(青:true、赤:false、グレー:undef)で表現しています。

このAT図ではすべての命題ノードの値がundef(不定)なのですべてグレー色で描かれています。

 

命題ノードの値はどのように決定されるかというと、子供のノードがあるものについては、

子供ノード群のそれぞれの値とand/or/not/=の親子関係で決定されます。

末端ノードの値については、末端ノード自身にtrue/false/undefを記述者が割り当てることに

なっています。明示的に値を決めていない末端ノードは自動的にundef扱いになります。

 

■複数種類の値の表現・計算とか

現在のこのツールは、すべての命題が「true/false/undefという3つの状態をとる値」を持つ

という仕様になっていますが、上記URLFigure 6のように、SE/NSEの2状態をとる値、

コストをとる値といった、いろんな値の計算をしたくなると思います。こうした実験をできる

プロトタイピングのツールという位置づけで、このツールのソースを改造して使ってもらえたら

と思っています。

 

松並

 

From: sig...@googlegroups.com [mailto:sig...@googlegroups.com] On Behalf Of Kenji Taguchi
Sent: Tuesday, August 29, 2017 12:46 PM
To:
脅威分析研究会 SIGSTA <sig...@googlegroups.com>
Subject: [sigsta] Re: Attack Tree
を書いてみました RE: 5回会合でご紹介したセキュリティ分析図作成ツール language-sad を公開しました

 

松並様、

 

 アタックツリーのサンプル読んでみました。

 

 ツールに関する資料を読まずにコメントするのは失礼かもしれませんが、 AND OR ゲートに関して、このように表現されるのはなるほど、と思いました。また、ノード間を結ぶ曲線がかなり良いですね。チェンジビジョン社が astah* GSN を開発された時に、ノード間の線をこのような形にして欲しい(従来の GSN はこのような曲線なので)と要望したのを思い出します。

 

 ただ、 undef が良く分かりませんでした。通常の Fault Trees/Attack Trees などでは、それ以上発展させない、もしくは今後、発展させる予定として未発展ノード(Undeveloped Node) 、分析の最小単位である基本ノード(Basic Node)があります。それらとの関連が不明確でした。 undef の定義はどのようになっているのでしょうか?

 

田口

 

  



2017
828日月曜日 233834 UTC+9 松並@事務局:

脅威分析研究会のみなさま

松並です。language-sadMLにもPOSTしたのですが、
参加者がまだ少数なのでこちらにもPOSTします。

language-sad
を使ってAttack Treeのサンプルを作ってみました。

そのPNG画像はこちら。こんな図がサクッと作れます。
https://raw.githubusercontent.com/masaru-matsunami/language-sad/master/samples/attack-tree.png

そのソースとなるattack-tree.sadはこちら。
// ------------------------------------------------------------------------
//  Attack Tree example
//  https://www.schneier.com/academic/archives/1999/12/attack_trees.html
// ------------------------------------------------------------------------

[1] Open Safe /
金庫を開ける
    orig https:\/\/www.schneier.com/academic/archives/1999/12/attack_trees.html
    expr or(2, 3, 4, 5)
  [2] Pick Lock /
鍵をこじ開ける
  [3] Learn Combo /
鍵の番号を知る
      expr or(6, 7)
    [6] Find Written Combo /
紙などに書いてある鍵の番号を探す
    [7] Get Combo From Target /
金庫の関係者から鍵の番号を聞き出す
        expr or(8, 9, 10, 11)
      [8] Threaten /
脅す
      [9] Blackmail /
弱みに付け込む
      [10] Eavesdrop /
盗聴する
          expr and(12, 13)
        [12] Listen to Conversation /
会話を聞く
        [13] Get Target to Sate Combo /
何らかの方法で鍵の番号を言わせる
      [11] Bribe /
賄賂を渡す
  [4] Cut Open Safe /
金庫を斬る
  [5] Install Improperly /
攻撃者が開けられる細工をした金庫を予め設置しておく

末端ノードにtrue/falseを指定するとboolean計算できますけど、上記ではやってません。

ちなみにlanguage-sadSTRIDE法やRWX法など特定の手法に依存するものではなく、
単なる命題間の論理関係を記述・表現するツールです。

--
松並 勝 <masaru.m...@sony.com>
Chief Security Technology Officer
ソニーデジタルネットワークアプリケーションズ株式会社



-----Original Message-----
From: sig...@googlegroups.com [mailto:sig...@googlegroups.com] On Behalf Of Matsunami, Masaru (SDNA)
Sent: Sunday, August 27, 2017 8:39 PM
To: 'sig...@googlegroups.com' <sig...@googlegroups.com>
Subject: [sigsta]
5回会合でご紹介したセキュリティ分析図作成ツール language-sad を公開しました

脅威分析研究会のみなさま

松並です。第5回会合でご紹介しました「セキュリティ分析図作成ツール」ですが、
https://sites.google.com/view/sigsta/%E7%AC%AC5%E5%9B%9E%E4%BC%9A%E5%90%88
漸く、やっとのことで、Atomパッケージとして公開できました。
MIT
ライセンスなので好き放題に改造していただけます。

Security Analysis Diagram language package https://atom.io/packages/language-sad/
  ←★

注意点:
Windows専用です。いまのところ。
graphvizをインストールしてPATHdot.exeに通す必要があります。
・ともあれ上記★のページを読んでください。

まだまだ恥ずかしいソースでバグもたくさんあると思いますが、
ご興味あるかたはぜひお使いいただきまして、
下記の雑談用MLにて雑談をいたしましょう。

language-sad
雑談ML
https://groups.google.com/d/forum/language-sad
なお雑談には↑にて自ら「メンバー登録」していただくか、
わたし宛てにメールでご連絡ください。

いまのところboolean計算に特化したものになっていますが、
他のリスク値などの算出ができるようにもう少しリファクタリングが
必要だと思っていますが、まずは動かして遊んでみていただいて、
感想をいただけましたら幸いです。

松並 勝 <masaru.m...@sony.com>

--
このメールは Google グループのグループ「脅威分析研究会 SIGSTA」の登録者に送られています。
このグループから退会し、グループからのメールの配信を停止するには sigsta+un...@googlegroups.com にメールを送信してください。
その他のオプションについては、https://groups.google.com/d/optout にアクセスしてください。

--
このメールは Google グループのグループ「脅威分析研究会 SIGSTA」に登録しているユーザーに送られています。
このグループから退会し、グループからのメールの配信を停止するには sigsta+un...@googlegroups.com にメールを送信してください。
その他のオプションについては https://groups.google.com/d/optout にアクセスしてください。

--
このメールは Google グループのグループ「脅威分析研究会 SIGSTA」に登録しているユーザーに送られています。
このグループから退会し、グループからのメールの配信を停止するには sigsta+un...@googlegroups.com にメールを送信してください。
その他のオプションについては https://groups.google.com/d/optout にアクセスしてください。

--
このメールは Google グループのグループ「脅威分析研究会 SIGSTA」に登録しているユーザーに送られています。
このグループから退会し、グループからのメールの配信を停止するには sigsta+un...@googlegroups.com にメールを送信してください。
その他のオプションについては https://groups.google.com/d/optout にアクセスしてください。

Reply all
Reply to author
Forward
0 new messages