Hatena::Diary

ockeghem(徳丸浩)の日記 このページをアンテナに追加 RSSフィード

2011-02-14

「体系的に学ぶ 安全なWebアプリケーションの作り方」3月1日発売です 「体系的に学ぶ 安全なWebアプリケーションの作り方」3月1日発売ですを含むブックマーク

去年の5月末に「本を書く」という宣言をしてから8ヶ月以上掛かってしまいましたが、ようやく体系的に学ぶ 安全なWebアプリケーションの作り方が脱稿し、3月1日に発売される運びとなりました。

現時点で一番詳しい本の目次は、出版元のオフィシャルページにありますが、このブログでもおいおい詳しい内容を紹介したいと思います。また別途サポートページを立ち上げる予定です。

本書の目次は以下の通りです。

1章 Webアプリケーション脆弱性とは

2章 実習環境のセットアップ

3章 Webセキュリティの基礎 〜HTTPセッション管理、同一生成元ポリシー

4章 Webアプリケーションの機能別に見るセキュリティバグ

5章 代表的なセキュリティ機能

6章 文字コードセキュリティ

7章 携帯電話向けWebアプリケーション脆弱性対策

8章 Webサイトの安全性を高めるために

9章 安全なWebアプリケーションのための開発マネジメント

元々「入門的な内容」を書くことになっていたのですが、書き上がったものを振り返ると、開発者視点で基礎から実践までをできるだけ丁寧に説明したつもりですが、必ずしも易しい内容とは言えないように思います。

この性格は、本書での専門用語の使い方に表れていると思います。ネットなどで「入門的な本なのに専門用語だらけで分かりにくい」という批判を目にすることがあります。これはもっともな意見ですが、しかしセキュリティの説明を専門用語を使わないで説明することも難しいと考えました。そこで、セキュリティの専門家のみが使う用語はできるだけ避け、開発者が知っておくべき用語は遠慮なく使うという方針を採用することにしました。その結果、例えば以下の用語は頻繁に登場することになりました。

 最後の同一生成元ポリシーについては、本書では12ページを割いて説明しています。実は、当初目次案では、同一生成元ポリシーを説明する予定はありませんでした。しかし、XSSCSRFの初稿を読んだレビュアー諸氏から、これら攻撃が通常のアクセスと違う理由がわかりにくいという指摘を受け、検討した結果、同一生成元ポリシーの説明からこれらの脆弱性の説明を導く現在の姿になりました。

 このように、レビュアーの皆様には、字句の間違い指摘というレベルを超えて、非常に本質的な「この脆弱性のなりたちは何か」という議論に及ぶこともあり、私自身非常に勉強になりました。深くお礼申し上げるとともに、ここにレビュアーのお名前・ハンドルを公表させていただきます。以下の表記は、公表にあたっての確認をとった形です(50音順、敬称略)。

大崎雅幸、太田良典、かいと(kaito834)、加藤泰文、小邨孝明、坂井隆二、id:s-yo-ko、高木正弘*1、竹迫良範、東内裕二、塙与志夫、日野洋一郎、山崎圭吾、山下太郎、Masahiro Yamada(masa141421356)、山本陽平

みなさまネット上でブログなどを運用されておられますが、ブログURL等の公表の許可まではいただいておりません(拒否されたというわけでもありませんが)ので、氏名もしくはハンドルの公表のみとさせていただきます。

また、はせがわようすけ氏には草稿の一部を読んでいただき、的確なアドバイスをいただきました。さらには、ブログtwitterのコメントなどの形で非常に多くの方々と議論させていただき、その結果が本書に反映させていただいています。本当にありがとうございました。

(続く)

*1:確認をとった「高」は「はしご高」の方ですが、はてなダイアリー文字化けを起こすようでこちらの表記を用いました

defiantdefiant 2011/02/15 02:47 ブログURLももちろん公表可ですよ! と言いつつ,韓国ドラマブログとか音楽レビューブログにリンクされたりして :-p

2010-12-28

[]KCCSの「クラウド利用者必見!新春 情報セキュリティソリューションセミナー」で講演します KCCSの「クラウド利用者必見!新春 情報セキュリティソリューションセミナー」で講演しますを含むブックマーク

KCCSの情報セキュリティのセミナーでしゃべることになりました。テーマはクラウド利用のセキュリティについてです。

クラウドセキュリティというと、文字通り雲をつかむような話になりがちですが、できるだけ明確なお話ができるように準備したいと思います。

# たとえば、クラウドに対する脆弱性診断ってできるの? みたいな疑問にお答えします

日時:2011年1月28日(金曜日) 14時30分〜17時20分
場所:KCCS東京支社(東京都港区)最寄り駅は泉岳寺
費用:無料

プログラム詳細、お申し込みはこちら https://www.kccs.co.jp/news/events/110128.html

2010-12-21

[]初稿を完成しレビュアーさんに送付しました 初稿を完成しレビュアーさんに送付しましたを含むブックマーク

本を書いています。昨日ようやく全ての章の初稿を書き上げ、レビューアの皆様に最後の初稿を送付しています。現在は、レビューの結果を反映した第2稿に着手しています。最初の方に書いた章・節は、かなり手直しが必要で、まだ時間が掛かりそうです。

というわけで、当初計画では、今頃は書店に並んでなければならないのですが、今は、今期中になんとか出さないと、というところです。

当初は、こういうことを書いていたわけですが、

入門的な内容になる予定ですので、私のブログの読者が期待するような、マニアックな内容にはならないと思います

http://d.hatena.ne.jp/ockeghem/20100528/p1

できあがった初稿を見るに、「入門的な内容」というよりは、むしろ「基礎的な内容」をみっちり書いたという感じかなと、思っております。入門的と基礎的のニュアンスの違いは、まぁ本が出てからのお楽しみということで。

とはいえ、初心者の方が楽しめるように、できるだけ手を動かせるようにしておりますので、ご期待を。

2010-12-09

パスワードの定期変更は神話なのか 続パスワードの定期変更は神話なのかを含むブックマーク

2008年2月に パスワードの定期変更は「神話」なのか? - ockeghem(徳丸浩)の日記を書いた時の反応は、賛否両論という感じだったが、その後、twitterでのつぶやきなどを見るに、「パスワードは定期変更しなくてもいいんじゃない?」という意見は、セキュリティの専門家にも多くなっているような印象を受けている。

そのよう状況の中、以下の記事を読んだ。

辞書攻撃がうまくいかない場合、クラッカーは総攻撃(ブルートフォース攻撃とも言います)を仕掛けます。【中略】仮に1秒間に1000万回の計算ができるとすれば、パスワードクラックに要する時間は1年にもなりません。どんなに強固なパスワードであっても、1年ももたないということになります。だからこそ、3カ月に1回とか半年に1回はパスワードを変更する必要があるのです。(2ページ目より引用)

http://www.itmedia.co.jp/enterprise/articles/1012/07/news010.html

面白い。1年間でパスワードが破られるという条件(1年で全てのパスワードのパターンを試行できる)下で、パスワードを半年に1度、あるいは3ヶ月に1度変更すると、パスワードはどの程度「破られにくく」なるのか計算で求めてみよう。

まず、半年に1回変更するケース。半年では全てのパスワードパターンの半分を試しているわけだから、最初の半年でパスワードが破られる確率は0.5、破られない確率も0.5。一年を通じてパスワードが破られない確率は、0.5 * 0.5 = 0.25。すなわち、一年間のうちにパスワードが破られる確率は 0.75 となる。

3ヶ月に1度ならどうか。3ヶ月でパスワードが「破られない」確率は0.75だから、1年間パスワードが破られない確率は 0.75の4乗だ。

0.75 ^ 4 = 0.3164

すなわち、一年間でパスワード破られない破られる確率は、1 - 0.3164 で約 0.68 となる。

つまり、パスワードを3ヶ月毎に変更しても、68%の確率で破られるのだ。これで「安全になる」と言えるのだろうか。

ついでに、究極の定期変更として、ワンタイムパスワードだったらどうか。ものすごく安全性は高まるのだろうか。

ワンタイムトークンなどては、よく6桁の数値がワンタイムパスワードとして表示される。このパターンで計算してみよう。6桁整数ワンタイムパスワードを100万回試すという想定だ。一回あたりの試行で「破られない」確率は、1 - 1/100万 = 0.999999、それが100万回破られない確率には、

0.999999 ^ 1000000 = 0.3679

すなわち、100万回の試行でパスワードが破られる確率は、約 0.63 となる。

どんなに頻繁にパスワードを変更しても、パスワード変更による効果というのはこの程度なのだ。簡単に言えば、100%の確率を60〜70%に減らす程度の効果しかない。こんなあやふやなものに認証を頼るわけにはいかない。

では、なにが悪かったかというと、「全てのパスワードを試行できる」という前提がおかしい。この条件で安全性を保つ方法はない。

どうすればよいか。その答えは二つ。

どちらも、パスワードの定期変更に掛かるコストよりもずっと簡単で効果が明確だ。

パスワードの定期変更が必要という主張は、いったん疑った方がよいだろう。意味がある場合もあるが、それは特殊なケースだけだ。

PS

本を書いています。認証についても一生懸命書いています。出るのは来年になりそうで、もうしばらくお待ちください。

らぃりるらぃりる 2010/12/09 11:02 ワンタイムトークンですが、有効時間内に計算できないのでその確率はおかしい。

mmmm 2010/12/09 15:21 リスクファクターとパスワードの使用位置が少なすぎませんか。デジタルな辞書攻撃とかだけだったらそうですが、AccountingのLappingなど継続的に悪用される際には有効なのでは?

dodododo 2010/12/09 18:02 定期変更は力ずくのパスワード破りへの対策ではなく、過失等による朗詠^H^H漏洩対策ということでしょう。その場合はパスワードの長さは無関係ですよね。

laclefdorlaclefdor 2010/12/10 03:39 私の持っているトークンは6桁の認証番号(私しか知らない)+6桁の番号(トークン上で表示)なので、まず破るのは不可能です。

名無し名無し 2010/12/10 06:30 アカウントロックをやるとDoS攻撃に弱くなります

torisugaritorisugari 2010/12/10 09:16 セキュリティの話しでは「そもそも論」もあまりすべきではないと思っています。(/etc/shadowなど)
「そもそも」が通じない場合を想定した、一重、二重の防御を行うか、行わないか、を、それぞれ判断すべきだと思います。
このような話題で一番怖いのは「そもそも」を理解せずに、パスワードは変更する必要がないんだ。と、誤った理解が広まってしまうことかと。
もちろんPCIDSSなどでの義務付けはやりすぎだと思いますが。

通りすがり通りすがり 2010/12/10 13:25 最初のある期間Aにパスワードが破られない確率がxとしても、
次の同じ長さの期間Bにパスワードが破られない確率が同じ x になるわけではありません。

ぽすといっとぽすといっと 2010/12/14 12:28 定期変更するとして、毎回必ず辞書に載ってないパスワードにするのって、
どうやるんでしょうか。
変更したことにより、今まで辞書に載ってなかったものが、辞書にある
パスワードになってしまうことってないんでしょうか。

askaaska 2011/01/07 19:47 > 過失への対策
パスワードが漏れてから悪用されるまでの間にパスワードが変更されるのを期待できませんし
変更のタイミングによって悪用を止めさせられるとしても数ヶ月単位では...
「共通パスワードを人の入れ替わりの度に変更」という話ならまだわかりますが
金庫やドアの悪戯対策をコンピュータの世界に持ち込んでいるだけな気が...

2010-10-18

講演予告3題 講演予告3題を含むブックマーク

twitterで次のようにつぶやいたところ

PHPカンファレンスでやった文字コードの話を再演できる適当な場はないかな。まぁ、本書きで忙しい(はず and/or べき)ので、やりたいような、やらない方がいいような…とつぶやいてみる

http://twitter.com/#!/ockeghem/status/25955951747

ECナビの春山さん @haruyama と、セキュmemoの小島先生 @kjmkjm が反応してくださり、東京と京都で勉強会を開催することになりました。

東京の「第1回神泉セキュリティ勉強会」では、春山さんや、サイボウズラボの奥さん @kazuho 、竹迫さん @takesako にもお話し頂きますので、私自身とても楽しみです。

京都の「@random な勉強会」では、なんと京大の上原先生 @tetsutalow が、「岡崎図書館事件に見る自治体IT調達の問題点」という演題で講演されます。私も、LASDECのウェブ健康診断の仕様策定をお手伝いした関係などで自治体のIT調達には関心がありますので、楽しみです。

あと、Internet Week 2010で講演することになりましたのでお知らせします。。


第1回神泉セキュリティ勉強会

日時: 2010/10/26(火) 19:00〜

場所: 株式会社ECナビ

参加費用: 無料

タイトル:文字コードに起因する脆弱性とその対策

プログラム、申し込みはこちら


@random な勉強会

日時: 2010.10.30 (土) 13:00〜17:00

場所: 龍谷大学深草学舎 21 号館 406 室。

参加費用: 500円 (学生は無料)

タイトル: 文字コードに起因する脆弱性とその対策

プログラム、申し込みはこちら


Internet Week 2010

日時: 2010年11月24日(水) 13:00〜15:30

場所: 富士ソフト アキバプラザ

タイトル: S3 今日こそわかる、安全なWebアプリの作り方2010

5,000円の有料セッションです。

2.5時間の枠がありますので、Webアプリセキュリティの全体像をおさらいした後、以下の3テーマに深く切り込む予定です。

SQLインジェクション

文字コードの問題

携帯電話向けWebアプリセキュリティ