Upgrade to Pro — share decks privately, control downloads, hide ads and more …

これだけは絶対覚えたいセキュリティ基礎/The Basics of Information S...

これだけは絶対覚えたいセキュリティ基礎/The Basics of Information Security

Webエンジニアにとって必須スキルであるセキュリティについて、歴史/実例/雑学を交えながら初学者に向けてお話ししました。

【サポーターズ勉強会】これだけは絶対覚えたいセキュリティ基礎講座
https://supporterzcolab.com/event/640/

Akira Morikawa

December 12, 2018
Tweet

More Decks by Akira Morikawa

Other Decks in Technology

Transcript

  1. 12 アジェンダ セキュリティとは 1 ガイドラインと攻撃傾向 2 セキュアコーディング 3 事例からみる危殆化 4

    OSセキュリティ 5 ページ ページ ページ ページ ページ 13 31 40 49 67 最後に 6 ページ 77
  2. 20 セキュリティリスク リスクコントロール • リスク回避 … 不要情報の破棄、等 • リスク軽減 ◦

    リスク分散 … 分散処理、等 ◦ リスク集中 … マシンルームで集中管理、等 ◦ リスク移転 … アウトソーシング、等 ◦ 損失予防… 保守メンテナンス、等 ◦ 損失軽減… システム多重化、バックアップ、等
  3. 25 セキュリティ セキュリティの定義 • 機密性 ( Confidentiality ) アクセスを認められた者だけが、情報にアクセスできる •

    完全性 ( Integrity ) 情報が破壊、改ざん又は消去されていない • 可用性 ( Availability ) アクセスを認められた者が、必要時にアクセスできる JIS Q 27002 : 2014
  4. 26 セキュリティ セキュリティの定義(拡張) • 真正性 ( Authenticity ) ある主体又は資源が、主張どおりであることを確実にする •

    責任追跡性 ( Accountability ) 動作及び動作主を一意に追跡できることを確実にする • 否認防止 ( Non-Repudiation ) 発生事象を後から否認されないように証明する • 信頼性 ( Reliability ) 意図した動作及び結果に一致する
  5. 27 セキュリティ セキュリティ対策の基礎 予防 検知 回復 • 予防 … リスク分析しセキュリティ対策を実施する

    • 抑制 … 罰則を科したり、モラルに働きかける • 防衛 … アクセス制御やファイアウォールなどを行う
  6. SQLインジェクション CSRF XSS ディレクトリトラバーサル コマンドインジェクション ヘッダインジェクション ディレクトリリスティング オープンリダイレクト 32 ブルートフォース攻撃

    親切過ぎるエラーメッセージ クリックジャッキング サイズ制限の無いアップロード DDoS いくつ知っていますか? 知っていますか?脆弱性
  7. 34 ガイドライン 攻撃技術の発達 • 1988年 スタックオバーフロー • 1998年 ヒープオーバーフロー •

    1998年 SQLインジェクション • 2000年 JavaScriptインジェクション(XSS) • 2000年 フォーマット文字列 • 2002年 整数オーバーフロー • 2004年 HTTPヘッダインジェクション セキュアプログラミング(防御的プログラミング)の歴史をざっと振り返る
  8. 35 ガイドライン 代表的な情報セキュリティガイドライン OWASP Top 10 - 2017 PCI DSS

    CWE/SANS Top 25 Most Dangerous Software Errors JIS Q 27002 : 2014 安全なウェブサイトの作り方 開発者向けセキュリティ関連コンテンツ
  9. 36 ガイドライン 代表的なコーディングガイドライン CERT Top 10 Secure Coding Standard OWASP

    Secure Coding Practices OWASP Top 10 Proactive Controls JPCERT セキュアコーディングスタンダード IPA セキュア・プログラミング講座 Androidアプリのセキュア設計・セキュアコーディングガイド
  10. 39 まとめ 最新知識を身に着けよう • ガイドラインがたくさんあります ◦ セキュアなコードを書くためのガイドライン ◦ 脆弱性対策ガイドライン ◦

    攻撃トレンドガイドライン • その他にも巧妙な攻撃手法があります ◦ GitHub / yum / apt / gem / npm / composer 等を利用
  11. メソッド 外部出力 41 入力処理 ロジック処理 出力処理 入力処理 ロジック処理 出力処理 入力処理

    ロジック処理 出力処理 外部入力 アプリケーション モジュール
  12. 42 セキュアコーディング セキュアコーディングの手法 • ゼロトラスト ◦ 入力の正しさ/出力の正しさ/論理的な正しさ ▪ 論理的 …

    郵便番号と都道府県 契約プログラミング ▪ 事前処理, 事後処理, 不変条件 ▪ 信頼境界線 • 正しいエラーハンドリング • イベントロギング
  13. 46 セキュアコーディング 信頼境界線 • 入力受付時にチェックする ◦ MVCで言えばControllerが担う ◦ 複雑なバリデーションをModelに押し付けない •

    大規模アプリケーションでは内部でも境界線を引く ◦ 自分のコード/他人のコード ◦ モジュール単位
  14. 48 セキュアコーディング まとめ • セキュアコーディングを意識する ◦ 脆弱性がない事がセキュアではない ◦ 攻撃を受けにくいコードを書く ◦

    ゼロトラスト/信頼境界線を考えよう ◦ セキュアコーディングガイドを読もう • セキュリティとパフォーマンスはトレードオフ ◦ 適宜取り入れるようにしよう
  15. 52 危殆化の事例 1999 1996 1995 2008 2006 2018 TLS/1.0 SSL/3.0

    SSL/2.0 TLS/1.2 TLS/1.1 TLS/1.3 https://www.ssllabs.com/ssl-pulse/ @ Dec 03, 2018
  16. 53 危殆化の事例 SSL 3.0 • 1996年に登場 ( RFC6101 ) •

    2014年10月に仕様上の脆弱性が発見された ◦ 2015年6月に使用禁止された ( RFC7568 ) ▪ Force Downgrade ( POODLE ) の対象となる為 ▪ SSL/2.0も、2011年3月に使用禁止された ( RFC6176 )
  17. 54 危殆化の事例 TLS 1.0 • 1999年に登場 ( RFC2246 ) •

    拡張仕様が追加された ( RFC3546 ) • 必須共通鍵暗号:TLS_DHE_DSS_WITH_3DES_EDE_CBC_SHA • 一部の鍵交換アルゴリズム廃止 ( FORTEZZA ) • ハッシュ計算方法の変更 • CBCモードにおけるパディング方法の変更 • 2018年6月30日をもって使用禁止された ( PCI-DSS v3.2 )
  18. 55 危殆化の事例 TLS 1.1 • 2006年に登場 ( RFC4346 ) •

    必須共通鍵暗号:TLS_RSA_WITH_3DES_EDE_CBC_SHA • 共通鍵暗号に AES 追加 • CBCモードにおけるパディング方法の再変更 ( POODLE ) • セッション再開の規制緩和 • 既に脆弱性が発見され、TLS/1.2 への移行 が望まれている
  19. 56 危殆化の事例 • 2008年に登場 ( RFC5246 ) • 必須共通鍵暗号:TLS_RSA_WITH_AES_128_CBC_SHA •

    脆弱なハッシュの利用箇所削減 ( MD5, SHA-1, 等 ) • CipherSuite によりハッシュ方式設定 • 署名方式の解釈方法変更 • CBC に加えて、GCM / CCM 追加 TLS 1.2
  20. 57 危殆化の事例 TLS 1.3 • 2018年8月に登場 ( RFC8446 ) •

    ハンドシェイクの高速化 ( 再接続 0-RTT, 初回接続 1-RTT ) • 平文通信が必要な部分を極力少なくして情報を秘匿 • AEAD ( 認証付き暗号 ) 必須化 • データ圧縮の廃止 ( CRIME ) • CBCモードの廃止 • セッションハッシュ機能 ( ネゴシエーション履歴全体ハッシュ ) など
  21. 分類 種類 Triple DES ブロック暗号 (64bit) AES (Rjindael) ブロック暗号 (128bit)

    Camellia ブロック暗号 (128bit) KCipher-2 ストリーム暗号 60 暗号周りの豆知識 暗号アルゴリズム ※CRYPTRECによって採択されたアルゴリズムを表記
  22. 62 暗号周りの豆知識 分類 初出 ダイジェストのビット長 MD5 1991 128 SHA-1 1995

    160 SHA-2 2001 224, 256, 384, 512 SHA-3 2015 224, 256, 384, 512 ハッシュアルゴリズム ※代表的なアルゴリズムを表記
  23. 63 暗号周りの豆知識 ハッシュアルゴリズム • 強衝突耐性は誕生日のパラドックスによって計算 ◦ Nビットの乱数が衝突するまでの回数の期待値 = 2 ▪

    128ビットの場合は約1844京回 • 現時点で MD5, SHA-1 はすでに脆弱 ◦ MD5はすでに数十分で衝突させられる ◦ SHA-2への置換が推奨されている N/2
  24. リング 0 バースデイ • 2000年1月22日に公開 • 原作は鈴木光司『バースデイ』 • 映画版リングシリーズの完結編 •

    同時上映は『ISOLA 多重人格少女 • ついに明かされる貞子出生の秘密 • リングは今世紀最悪の0で終わる © 2000「リング0~バースディ~」製作委員会
  25. 特権命令 Ring 3 Ring 2 Ring 1 Ring 0 Device

    drivers Device drivers Applications Kernel 低 高 権限 71 リングプロテクション • CPUに実装されている • CPU-OSで異なる使用法の場合も ◦ カーネルがRing-3で動いたり ◦ 一部のリング使ってなかったり • 動作モードとして ◦ スーパーバイザモード ◦ ユーザモード 詳細はWikipediaで
  26. 73 リアルモード プロテクトモード - 16bit - RAMに自由アクセス - RAM 640KBを利用可能

    - 32bit - RAMにアクセス制限 - RAM 4GBを利用可能 ロングモード - 64bit - RAMにアクセス制限 - RAM 1TBを利用可能 ※理論上は1PBまで (※80286以外) CPU動作モード
  27. 80 まとめ 常にセキュリティを考えよう • 最近のフィッシング詐欺は PC だけじゃない 佐川急便を装った迷惑メール LINEフレンドからのプリペイドカード要求 •

    エンジニアは格好の標的 ◦ 他職種より重要な情報を保持している ◦ 私物からも機密情報漏洩の可能性が十分にある
  28. 81 まとめ 常にセキュリティを考えよう • 知識の段階 ◦ 知らない ◦ 知っている ◦

    知っていて利用できる ◦ 知っていて無視せず利用できる • セキュリティを学び、正しく実践しよう