ウィリアムのいたずらの、まちあるき、たべあるき

ウィリアムのいたずらが、街歩き、食べ物、音楽等の個人的見解を主に書くブログです(たま~にコンピューター関係も)

ソフトウェアセキュリティあれこれ

2013-11-12 18:43:21 | ネットワーク
要求工学東京サブワーキンググループで

ソフトウェアセキュリティ知識ベースを活用した学習環境
櫨山 淳雄(はぜやま あつお)先生

を聞いてきた!のでメモメモ



1.はじめに(背景と目的)
・インターネット上のサービスは増大
・セキュリティ重要
・ソフトウェアセキュリティの重要性

・ソフトウェア開発者はセキュリティの専門家ではない
・さまざまな技術をどのように使っていけばよいのかが整理されていない
  (情報処理Vol52 No9,1134-1139)

目的
・セキュリティに関する知識ベースの構築
・知識ベースを活用したソフトウェアセキュリティ学習環境の構築

学習環境:システムの構成

セキュリティに関する概念

セキュリティ特性(CIA)
 機密性
 完全性
 可用性

知識ベースに関する関連研究
 BarnumとMcGraw
   ソフトウェアセキュリティのための知識モデル
   7つの知識カタログとその関連
     attack pattern
     vulnerbility
     Exploit
     principal
     Rule
     Guidline
     Historical
 筆者:上記に追加
   Process
   Methodology
   standard
   compornent
   seculity pattern

各知識の実態に関する動向
 CAPEC(きゃぺっく)
 脆弱性
  CVE(common vulnerbilities and Exposure)
  CWE(Common Weakness and Exposures)
 Best practice By Gary McGraw
 Process
  CLASP
   OWASPという組織で
   7つのベストプラクティスと24のアクティビティ
  セキュリティ要求

SindreとOpdahlによるミスユースケース図
 1.アセットの識別
 2.セキュリティゴールの設定
 3.脅威の識別
 4.リスクの識別と分析
 5.セキュリティ要求

要求分析(7つのステップ:大久保2009)
1.機能の定義
2.保護資産の抽出、評価
  データフロー表記追加
   セキュリティプロパティ
3. アクセス権の定義
4.脅威の抽出(STRIDE)
5.脅威の評価(STRIDE)
6.対策案の抽出
7.対策の決定

STRIDE
  なりすまし:認証
  改ざん:完全性
  否認:否認不可性
  情報漏えい:機密性
  サービス拒否:可用性
  特権の昇格:承認
各知識の実体に関する動向
 SaltzerとSchroeder[1975]
 ViegaとMcGRraw

セキュリティパターン
  YoderとBarcalow
    例:シングル・アクセス・ポイント
      →システムに入る入口を1つ
  Hafizら

ガイドライン
  Firesmith
  マイクロソフト設計ガイドライン
  Mozilla webアプリケーションのためのセキュア
  Oracle Javaセキュアコーディング
 12個のセキュリティ要求
   識別要求
   認証要求
   承認要求
   免疫性要求
   完全性要求
   侵入検知要求
   否認要求
   プライバシー要求
   セキュリティ監査要求
   サバイバビリティ要求
   物理的保護要求
   システム保守セキュリティ要求

ルール
 OWASP cheat sheet
   例XSS

関連付け
(1)プロセス・方法論・標準と他の知識との関連
(2)セキュリティパターンとプリンシプル
(3)攻撃辞書(CAPEC)と他の知識の関連

ソフトウェアセキュリティ知識ベース
→知識ベースの全体像

STRIDE:脅威
CAPEC:攻撃パターン

  • X
  • Facebookでシェアする
  • はてなブックマークに追加する
  • LINEでシェアする

自動車自動運転は、まだまだなんですかね?・・・マツダの事故

2013-11-12 15:50:11 | Weblog
自動車の自動運転技術は、最近、トヨタなどで盛んですよね。
自動運転自動車の研究開発は、いろいろ進んでいるようです

で、そんな自動運転の実用化例として、
障害物を自動検知するシステムというのがあるわけですが・・・


マツダ「CX-5」試乗会で事故 ブレーキ自動制御機能の体験中-フェンス衝突、2人が重軽傷
http://blog.livedoor.jp/dqnplus/archives/1779840.html


あちゃ・・・

自動車自動運転は、まだまだなんですかね?




で、これで話題になりそうなのは、
自動車自動運転を信じて、運転した場合、だれが責任を取るのか?
運転してた人?
自動車を作った人の責任はないの?

まあ、自動運転といっても、信じちゃいけないんでしょうね・・・


  • X
  • Facebookでシェアする
  • はてなブックマークに追加する
  • LINEでシェアする

Eclipseでのプロパティエディタの利用(2)編集

2013-11-12 12:42:14 | JavaとWeb
前回の

Eclipseでのプロパティエディタの利用(1)インストール
http://blog.goo.ne.jp/xmldtp/e/b935be5c9b63c12306a916e75170460d

で、インストールを行ったので、今回は、そのつづき、
プロパティファイルを作成し、編集します。




■プロパティファイル作成

プロジェクトの1つを右クリック

新規→その他を選ぶと

になるので、Java→プロパティファイルを選ぶ

新規ファイルのダイアログで、
WEB-INFの下、classesを選び、
ファイル名を入れて「完了」




■ファイルを表示する

このままだと、パッケージからは、
(図の左)WEB-INFのclassesは見えない。


そこで、ナビゲート→表示→ナビゲーター
すると、ナビゲーターからWEB-INFのclassesが見えて、
プロパティファイルが選べる




■編集

ダブルクリックすると、以下のように書ける画面になるので

てきとうに書く

日本語で普通に書いて入力してOK
(プログラム的に勝手に変換される)

保存するときは、普通のファイルとおなじく、
フロッピーアイコンをクリック。

すると、保存先を見ると

のように、書かれている




おしまい。

  • X
  • Facebookでシェアする
  • はてなブックマークに追加する
  • LINEでシェアする

たとえば、カンマ区切りにするために、カンマをエスケープするには

2013-11-12 09:23:12 | Weblog
■御題

いま、カンマ区切りのファイルがあったとしよう。

    abcdefg,123,fghijk

ここで、abcdefgが入っている1桁目は、
カンマも入力できるとする。

    abc,defg,123,fghijk

そうすると、,のところで分解すると、abcとdefgと分かれてしまう
もちろん、""で囲って、"abc,defg",123,fghijkとなっても、
abcとdefgで分かれてしまう。

そこで、

  ・,のところで分解する
  ・文字中に,が入っても大丈夫
  ・置換だけで、実現したい

場合、どのようにすると、実現できるか?というお話




■実現方法

 実現方法としては、コード変換とエスケープがある

 (ここでは、abcdefgの項目を最後にもって行き、ある個数以上
  ,がきたら連結するという回答は、除外する。それだと、
  2項目(abcdefgとfghijk等)以上で,を許したら、できなくなってしまう)

 コード変換の場合は、出来ることは自明だろう。

 たとえば、すべての項目を16進に変換する。
 そうすれば、
 現れる文字は0123456789abcdefだけだから、
 項目区切りに,が使える

 実務上では、URLエンコーディング、base64などが使えそうだ。
 まあ、ここでは、それ以上触れない。

 一方、エスケープだが、これは、出来る場合と出来ない場合がある
 それについて、少し書く。




■エスケープの手法

ここで、エスケープの手法をまず定義する。

今回、,の文字を回避したい。

●この回避したい文字を、
 ターゲット文字とよぶことにする。
 今回の場合,(カンマ)

●このとき、ターゲット文字とは違うある文字を選び
(これをエスケープ文字と呼ぼう、
 今回は、これを%とする)

●文中に、エスケープ文字やターゲット文字が来たとき、
 エスケープ文字+他の文字で表す

ことを、エスケープと呼ぼう。

つまり、
abc%de,fg

とあった場合、%と,を別の文字に変える手法をさす

そして、ここで




■エスケープの手法3つ

このとき、エスケープの手法としては、大きく分けて3つある
なお、以下、%をエスケープ文字、,をターゲット文字とする

<<手法1>>

   %を%%
   ,を%,

であらわす。つまり、
  エスケープ文字=エスケープ文字+エスケープ文字
  ターゲット文字=エスケープ文字+ターゲット文字
にする。上記「エスケープ文字+他の文字」
のほかの文字を左辺(=の手前)の文字にすることである。

 この方法でabc%de,fgを変換すると、abc%%de%,fgとなる。

 この方法では
   1文字づつ読み込んで、%が来たら、次の文字をそのまま出す
 という方法であれば、変換できるが、
 そもそも、,で項目を切れない(abc%%de%とfgの間の,で2つに切れてしまう)。




<<手法2>>

   %を%%
   ,を%d

であらわす。つまり、
  エスケープ文字=エスケープ文字+エスケープ文字
  ターゲット文字=エスケープ文字+他の文字
にする。上記「エスケープ文字+他の文字」
の「他の文字」をターゲット文字の場合、
ターゲットでもエスケープでもない文字にする

 この方法でabc%de,fgを変換すると、abc%%de%dfgとなる。
 この方法でなら、,はきえるので1項目となり、
 ,で項目を区切ることはできる。

しかし、変換をするとき、

●,(%d)を先に変換し%(%%)を後から変換すると
  abc%%de%dfg→abc%,e,fg→abc%,e,fg(%%はないので、置換できない)
となり、もとのabc%de,fgと一致しない

●%(%%)を先に変換し,(%,)を後から変換すると
  abc%%de%dfg→abc%de%dfg→abc,e,fg
となり、もとのabc%de,fgと一致しない




<<手法3>>

   %を%c
   ,を%d

であらわす。つまり、
  エスケープ文字=エスケープ文字+他の文字1
  ターゲット文字=エスケープ文字+他の文字2
にする。上記「エスケープ文字+他の文字」
の「他の文字」をターゲット文字もエスケープ文字も別の文字にする

 この方法でabc%de,fgを変換すると、abc%cde%dfgとなる。
 この方法でなら、,はきえるので1項目となり、
 ,で項目を区切ることはできる。

そして置換された文字列を
●,(%d)を先に変換し%(%c)を後から変換すると
  abc%cde%dfg→abc%cde,fg→abc%de,fg
となって、元に戻る

ちなみに、置換するときは
○%(%c)を先に変換し,(%d)を後から変換する
  abc%de,fg→abc%cde,fgやじるsabc%cde%dfg
となり、置換できる




つまり、エスケープで行う場合には、<<手法3>>

(1)変換したい文字をきめ、ターゲット文字とする
    今回は,

(2)エスケープ文字を決める(ターゲット文字以外)
    今回は%

(3)ターゲット文字、エスケープ文字以外の2文字を決め、
   それぞれ、他の文字1、他の文字2とする
    今回は、他の文字1=c,他の文字2=d

(4)エンコーディングするときは
  エスケープ文字=エスケープ文字+他の文字1
  ターゲット文字=エスケープ文字+他の文字2
とすればよい。

具体的には、

  元の文字に対して、
  エスケープ文字を先に変換し,ターゲット文字を後から変換して
  エスケープ文字列を得る

(5)エスケープ文字列にカンマなどをつけて、
   所定の文字列にする


(6)解析するときは
   (5)の文字列を、カンマなどで分解して、エスケープ文字列を得て

(7)エスケープ文字列に対して
  ターゲット文字を先に変換し、エスケープ文字を後から変換すると
  元の文字列を得る




■ちなみに
 
この仕組みと同じものが、HTMLの&と<

ターゲット <
エスケープ &
他の文字列1 amp;
他の文字列2 gt;

とすると、上記の話が成り立つ。

  • X
  • Facebookでシェアする
  • はてなブックマークに追加する
  • LINEでシェアする