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

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

これだけは絶対覚えたいセキュリティ基礎/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. Dec 12, 2018 #spzcolab
    The Basics of
    Information Security
    @ariaki4dev CC-BY-4.0

    View full-size slide

  2. セッションの目的
    セキュリティへの意識を高めよう
    情報をキャッチアップできるようになろう
    セキュリティの基礎を知ろう
    雑学を楽しもう
    2

    View full-size slide

  3. 資産と安全
    3

    View full-size slide

  4. 資産
    ヒト
    モノ カネ
    4

    View full-size slide

  5. 生命
    生活
    生活資産(衣食住)
    その他の有形資産
    現預金・有価証券
    その他の無形資産
    安全
    5

    View full-size slide

  6. あなたの豊かな暮らし
    安全
    6

    View full-size slide

  7. 考えてみよう
    カード情報漏洩
    想定される被害
    7

    View full-size slide

  8. 考えてみよう
    カード情報漏洩
    - 不正利用
    - 利用妨害
    - 信用情報漏洩
    - 利用履歴漏洩
    - 利用履歴操作
    - 信用失墜

    想定される被害
    8

    View full-size slide

  9. リスクを多方面から考える
    9

    View full-size slide

  10. Hello, I’m @ariaki4dev
    #engineers_lt
    #techdo

    View full-size slide

  11. 12
    アジェンダ
    セキュリティとは
    1
    ガイドラインと攻撃傾向
    2
    セキュアコーディング
    3
    事例からみる危殆化
    4
    OSセキュリティ
    5
    ページ
    ページ
    ページ
    ページ
    ページ
    13
    31
    40
    49
    67
    最後に
    6 ページ
    77

    View full-size slide

  12. 13
    セキュリティとは
    About Security

    View full-size slide

  13. セキュリティリスク
    って聞いたことありますか?
    14

    View full-size slide

  14. 15
    インシデント
    リスク
    潜在
    顕在

    View full-size slide

  15. 脆弱性の程度
    16
    脅威の程度 資産価値
    リスクの大きさ

    View full-size slide

  16. 17
    セキュリティリスク
    脅威の分類
    分類 脅威の例
    人為的脅威 意図的脅威 攻撃(不正侵入、ウイルス、改ざん、盗
    聴、なりすまし、等)
    偶発的脅威 人為的ミス、障害
    環境的脅威 災害(地震、洪水、台風、火事、等)

    View full-size slide

  17. 18
    セキュリティリスク
    脆弱性の分類
    分類 脅威の例
    物理的脆弱性 建物などの設備やハードウェアに存在する
    (建物構造、機器故障、盗難、紛失、等)
    人的脆弱性 組織や人、運用管理に存在する
    (組織管理、人、問題対処法、等)
    技術的脆弱性 プログラム上に存在する
    (アプリケーション、プロトコル、等)

    View full-size slide

  18. 19
    セキュリティリスク
    資産の分類
    分類 脅威の例
    情報 データベース、データファイル、設計書、等
    ソフトウェア 業務用ソフト、アプリケーションソフト、等
    ハードウェア コンピュータ、通信装置、記憶媒体、等
    サービス 電源、暖房、照明、通信網、等
    人 人そのもの

    View full-size slide

  19. 20
    セキュリティリスク
    リスクコントロール
    ● リスク回避 … 不要情報の破棄、等
    ● リスク軽減
    ○ リスク分散 … 分散処理、等
    ○ リスク集中 … マシンルームで集中管理、等
    ○ リスク移転 … アウトソーシング、等
    ○ 損失予防… 保守メンテナンス、等
    ○ 損失軽減… システム多重化、バックアップ、等

    View full-size slide

  20. 21
    セキュリティリスク
    リスクの図式
    泥棒
    脅威 資産
    脆弱性
    鍵が開いている窓 現金など
    クラッカー セキュリティホール 情報など
    インシデント

    View full-size slide

  21. 22
    セキュリティリスク
    リスクの図式
    泥棒 鍵が開いている窓 現金など
    クラッカー セキュリティホール 情報など
    想定
    脅威 資産
    脆弱性

    View full-size slide

  22. 23
    セキュリティリスク
    リスクの図式
    泥棒 鍵が開いている窓 現金など
    クラッカー セキュリティホール 情報など
    対策
    脅威 資産
    脆弱性

    View full-size slide

  23. 24
    セキュリティリスク
    リスクの図式
    泥棒 鍵が開いている窓 現金など
    クラッカー セキュリティホール 情報など
    管理
    脅威 資産
    脆弱性

    View full-size slide

  24. 25
    セキュリティ
    セキュリティの定義
    ● 機密性 ( Confidentiality )
    アクセスを認められた者だけが、情報にアクセスできる
    ● 完全性 ( Integrity )
    情報が破壊、改ざん又は消去されていない
    ● 可用性 ( Availability )
    アクセスを認められた者が、必要時にアクセスできる
    JIS Q 27002 : 2014

    View full-size slide

  25. 26
    セキュリティ
    セキュリティの定義(拡張)
    ● 真正性 ( Authenticity )
    ある主体又は資源が、主張どおりであることを確実にする
    ● 責任追跡性 ( Accountability )
    動作及び動作主を一意に追跡できることを確実にする
    ● 否認防止 ( Non-Repudiation )
    発生事象を後から否認されないように証明する
    ● 信頼性 ( Reliability )
    意図した動作及び結果に一致する

    View full-size slide

  26. 27
    セキュリティ
    セキュリティ対策の基礎
    予防 検知 回復
    ● 予防 … リスク分析しセキュリティ対策を実施する
    ● 抑制 … 罰則を科したり、モラルに働きかける
    ● 防衛 … アクセス制御やファイアウォールなどを行う

    View full-size slide

  27. 28
    セキュリティ
    セキュリティ対策の分類
    分類 脅威の例
    技術的対策 ファイアウォール、侵入検知、ウイルス対策、等
    物理的対策 防犯対策、入退室管理、盗難防止、等
    人的対策 規程、手順書、従業員教育、等

    View full-size slide

  28. 29
    セキュリティ
    セキュリティ対策の観点
    個人情報保護 事業継続担保
    保管されている個人情報が
    漏洩しないための対策
    攻撃等による事業の停止が
    最小限に収まるための対策

    View full-size slide

  29. 攻撃を受けない為の知識
    攻撃を発見する為の知識
    攻撃を緩和する為の知識
    被害を最小限に抑える知識
    被害から復帰する為の知識
    セキュリティ =
    知識
    30

    View full-size slide

  30. 31
    ガイドラインと攻撃傾向
    Security Guidelines & Trend of Attacks

    View full-size slide

  31. SQLインジェクション
    CSRF
    XSS
    ディレクトリトラバーサル
    コマンドインジェクション
    ヘッダインジェクション
    ディレクトリリスティング
    オープンリダイレクト
    32
    ブルートフォース攻撃
    親切過ぎるエラーメッセージ
    クリックジャッキング
    サイズ制限の無いアップロード
    DDoS
    いくつ知っていますか?
    知っていますか?脆弱性

    View full-size slide

  32. 33
    (OWASP Top 10 2017 日本語版より抜粋)

    View full-size slide

  33. 34
    ガイドライン
    攻撃技術の発達
    ● 1988年 スタックオバーフロー
    ● 1998年 ヒープオーバーフロー
    ● 1998年 SQLインジェクション
    ● 2000年 JavaScriptインジェクション(XSS)
    ● 2000年 フォーマット文字列
    ● 2002年 整数オーバーフロー
    ● 2004年 HTTPヘッダインジェクション
    セキュアプログラミング(防御的プログラミング)の歴史をざっと振り返る

    View full-size slide

  34. 35
    ガイドライン
    代表的な情報セキュリティガイドライン
    OWASP Top 10 - 2017
    PCI DSS
    CWE/SANS Top 25 Most Dangerous Software Errors
    JIS Q 27002 : 2014
    安全なウェブサイトの作り方
    開発者向けセキュリティ関連コンテンツ

    View full-size slide

  35. 36
    ガイドライン
    代表的なコーディングガイドライン
    CERT Top 10 Secure Coding Standard
    OWASP Secure Coding Practices
    OWASP Top 10 Proactive Controls
    JPCERT セキュアコーディングスタンダード
    IPA セキュア・プログラミング講座
    Androidアプリのセキュア設計・セキュアコーディングガイド

    View full-size slide

  36. 37
    ガイドライン
    攻撃手法のトレンド
    情報セキュリティ10大脅威 2018
    サイバー攻撃トレンド:2018年上半期レポート
    2018 IT Security Outlook

    View full-size slide

  37. 流行は日々変わります
    38
    継続的な情報収集と改善が必要

    View full-size slide

  38. 39
    まとめ
    最新知識を身に着けよう
    ● ガイドラインがたくさんあります
    ○ セキュアなコードを書くためのガイドライン
    ○ 脆弱性対策ガイドライン
    ○ 攻撃トレンドガイドライン
    ● その他にも巧妙な攻撃手法があります
    ○ GitHub / yum / apt / gem / npm / composer 等を利用

    View full-size slide

  39. 40
    セキュアコーディング
    Defensive Programming

    View full-size slide

  40. メソッド
    外部出力
    41
    入力処理
    ロジック処理
    出力処理
    入力処理
    ロジック処理
    出力処理
    入力処理
    ロジック処理
    出力処理
    外部入力
    アプリケーション
    モジュール

    View full-size slide

  41. 42
    セキュアコーディング
    セキュアコーディングの手法
    ● ゼロトラスト
    ○ 入力の正しさ/出力の正しさ/論理的な正しさ
    ■ 論理的 … 郵便番号と都道府県
    契約プログラミング
    ■ 事前処理, 事後処理, 不変条件
    ■ 信頼境界線
    ● 正しいエラーハンドリング
    ● イベントロギング

    View full-size slide

  42. 43
    どこで入力値 $val を検証しますか?
    1. 関数コール前に検証する
    2. 関数内で検証する

    View full-size slide

  43. 44
    どこで入力値 $val を検証しますか?
    1. 関数コール前に検証する(※契約プログラミングの場合)
    2. 関数内で検証する

    View full-size slide

  44. 45
    入力値 $val を検証してみた

    View full-size slide

  45. 46
    セキュアコーディング
    信頼境界線
    ● 入力受付時にチェックする
    ○ MVCで言えばControllerが担う
    ○ 複雑なバリデーションをModelに押し付けない
    ● 大規模アプリケーションでは内部でも境界線を引く
    ○ 自分のコード/他人のコード
    ○ モジュール単位

    View full-size slide

  46. 47
    セキュアコーディング
    なぜ今必要なの?
    ● 最近はマイクロサービスへの置換が進んでいる
    ○ サービスやコンテナ間の信頼関係の確立が課題
    ● コードによるアーキテクチャの前提は有効ではない
    ○ 全てがネットを介するため、信頼できる発信者はいない
    ○ 従来、サーバ側にあった機能がクライアント側で実装される

    View full-size slide

  47. 48
    セキュアコーディング
    まとめ
    ● セキュアコーディングを意識する
    ○ 脆弱性がない事がセキュアではない
    ○ 攻撃を受けにくいコードを書く
    ○ ゼロトラスト/信頼境界線を考えよう
    ○ セキュアコーディングガイドを読もう
    ● セキュリティとパフォーマンスはトレードオフ
    ○ 適宜取り入れるようにしよう

    View full-size slide

  48. 49
    事例からみる危殆化
    Compromise to think from case

    View full-size slide

  49. 50
    最低限の対策してますか?
    Webサーバをセキュアに保つ設定のまとめ
    https://qiita.com/ariaki/items/78ed2d3810ad17f72398
    Apache SSL TLS セキュリティ

    View full-size slide

  50. き た い か
    51
    危殆化

    View full-size slide

  51. 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

    View full-size slide

  52. 53
    危殆化の事例
    SSL 3.0
    ● 1996年に登場 ( RFC6101 )
    ● 2014年10月に仕様上の脆弱性が発見された
    ○ 2015年6月に使用禁止された ( RFC7568 )
    ■ Force Downgrade ( POODLE ) の対象となる為
    ■ SSL/2.0も、2011年3月に使用禁止された ( RFC6176 )

    View full-size slide

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

    View full-size slide

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

    View full-size slide

  55. 56
    危殆化の事例
    ● 2008年に登場 ( RFC5246 )
    ● 必須共通鍵暗号:TLS_RSA_WITH_AES_128_CBC_SHA
    ● 脆弱なハッシュの利用箇所削減 ( MD5, SHA-1, 等 )
    ● CipherSuite によりハッシュ方式設定
    ● 署名方式の解釈方法変更
    ● CBC に加えて、GCM / CCM 追加
    TLS 1.2

    View full-size slide

  56. 57
    危殆化の事例
    TLS 1.3
    ● 2018年8月に登場 ( RFC8446 )
    ● ハンドシェイクの高速化 ( 再接続 0-RTT, 初回接続 1-RTT )
    ● 平文通信が必要な部分を極力少なくして情報を秘匿
    ● AEAD ( 認証付き暗号 ) 必須化
    ● データ圧縮の廃止 ( CRIME )
    ● CBCモードの廃止
    ● セッションハッシュ機能 ( ネゴシエーション履歴全体ハッシュ )
    など

    View full-size slide

  57. 58
    暗号周りの豆知識
    暗号利用モード
    ● ブロック暗号で、ブロック長よりも長いメッセージを暗号化する
    ○ 詳細は暗号利用モードを参照
    ● 複数のモードがあり、ECB、CBC、OFB、CFB、CTRが有名
    ● 多くのモードで初期化ベクトル(IV)が使われる

    View full-size slide

  58. 59
    暗号周りの豆知識
    CBCモード
    暗号化処理 暗号化処理
    暗号データ 暗号データ
    平文データ 平文データ
    初期化ベクトル (IV)
    XOR XOR

    View full-size slide

  59. 分類 種類
    Triple DES ブロック暗号 (64bit)
    AES (Rjindael) ブロック暗号 (128bit)
    Camellia ブロック暗号 (128bit)
    KCipher-2 ストリーム暗号
    60
    暗号周りの豆知識
    暗号アルゴリズム
    ※CRYPTRECによって採択されたアルゴリズムを表記

    View full-size slide

  60. 61
    暗号周りの豆知識
    暗号アルゴリズム
    ● 3-DESは今もICカード等で使われている
    ● 3-DESに変わるアルゴリズムとしてNISTが2001年にAESを選定
    ○ AES: Advanced Encryption Standard
    ○ Rijndael(ラインダール)
    AESが選ばれるまでの歴史

    View full-size slide

  61. 62
    暗号周りの豆知識
    分類 初出 ダイジェストのビット長
    MD5 1991 128
    SHA-1 1995 160
    SHA-2 2001 224, 256, 384, 512
    SHA-3 2015 224, 256, 384, 512
    ハッシュアルゴリズム
    ※代表的なアルゴリズムを表記

    View full-size slide

  62. 63
    暗号周りの豆知識
    ハッシュアルゴリズム
    ● 強衝突耐性は誕生日のパラドックスによって計算
    ○ Nビットの乱数が衝突するまでの回数の期待値 = 2
    ■ 128ビットの場合は約1844京回
    ● 現時点で MD5, SHA-1 はすでに脆弱
    ○ MD5はすでに数十分で衝突させられる
    ○ SHA-2への置換が推奨されている
    N/2

    View full-size slide

  63. 64
    暗号周りの豆知識
    ハッシュといえば…
    ● パスワード等のデータベース格納どうしていますか?
    ○ 平文?
    ○ ハッシュ?
    ○ ハッシュ+ソルト? ← BETTER
    ○ B-Crypt? ← BEST

    View full-size slide

  64. 65
    暗号周りの豆知識
    塩コショウ
    ● ソルト … ランダム文字を平文の末尾に付加してハッシュ化
    ● ペッパー … 固定の文字を平文の末尾に付加してハッシュ化
    ● 詳細はこの辺を参照

    View full-size slide

  65. 66
    まとめ
    最新情報を収集しよう
    ● 世の中には危殆化だらけ
    ● 可能な限り最新バージョンにする必要がある
    ● 暗号周りも少し覚えておくと楽しい

    View full-size slide

  66. 67
    OSセキュリティ
    Security of Operating System

    View full-size slide

  67. 68
    OSセキュリティ is 何?

    View full-size slide

  68. © 2000「リング0~バースディ~」製作委員会

    View full-size slide

  69. リング 0 バースデイ
    ● 2000年1月22日に公開
    ● 原作は鈴木光司『バースデイ』
    ● 映画版リングシリーズの完結編
    ● 同時上映は『ISOLA 多重人格少女
    ● ついに明かされる貞子出生の秘密
    ● リングは今世紀最悪の0で終わる
    © 2000「リング0~バースディ~」製作委員会

    View full-size slide

  70. 特権命令
    Ring 3
    Ring 2
    Ring 1
    Ring 0
    Device drivers
    Device drivers
    Applications
    Kernel
    低 高
    権限
    71
    リングプロテクション
    ● CPUに実装されている
    ● CPU-OSで異なる使用法の場合も
    ○ カーネルがRing-3で動いたり
    ○ 一部のリング使ってなかったり
    ● 動作モードとして
    ○ スーパーバイザモード
    ○ ユーザモード
    詳細はWikipediaで

    View full-size slide

  71. 72
    仮想8086モード
    リアルモード プロテクトモード ロングモード
    16bit 32bit 64bit
    電源ON
    互換モード
    Legacy Mode
    CPU動作モード

    View full-size slide

  72. 73
    リアルモード プロテクトモード
    - 16bit
    - RAMに自由アクセス
    - RAM 640KBを利用可能
    - 32bit
    - RAMにアクセス制限
    - RAM 4GBを利用可能
    ロングモード
    - 64bit
    - RAMにアクセス制限
    - RAM 1TBを利用可能
    ※理論上は1PBまで
    (※80286以外)
    CPU動作モード

    View full-size slide

  73. 74
    コールゲート方式
    Ring-3
    Ring-2
    Ring-1
    Ring-0
    ※x64では通常使用されない
    システムコール

    View full-size slide

  74. 75
    メモリプロテクション
    メモリ
    OS アプリ-A アプリ-B
    ( Ring-0 ) ( Ring-3 ) ( Ring-3 )
    アプリ-A

    View full-size slide

  75. 76
    まとめ
    OSの世界は面白いよ
    ● 動作モードと仮想メモリによって守られている
    ● CPU/OS実装は密接に関連している
    ● 仕組みを理解すれば脆弱性情報もわかりやすくなる
    ● OSは自作できる

    View full-size slide

  76. 77
    最後に
    Conclude

    View full-size slide

  77. 78
    まとめ
    技術的な攻撃以外も考えよう
    今期の決算って
    どうだった?
    多分超黒字
    ボーナス多そう
    人を介した機密情報漏洩
    人間を介した機密情報漏洩は最もシンプルかつ簡単に行えるものです。
    技術的な情報以外も該当するので普段から充分な注意をしましょう。

    View full-size slide

  78. 79
    まとめ
    常にセキュリティを考えよう
    ● あなたが利用しているサイトのパスワードは?
    複数サイトで使い回していない
    十分に複雑な文字列にしている
    公開されたサイト上に保管していない
    ● あなたの情報端末は?
    離席時に画面ロックしている
    スマホのパスワードを 4 桁にしていない

    View full-size slide

  79. 80
    まとめ
    常にセキュリティを考えよう
    ● 最近のフィッシング詐欺は PC だけじゃない
    佐川急便を装った迷惑メール
    LINEフレンドからのプリペイドカード要求
    ● エンジニアは格好の標的
    ○ 他職種より重要な情報を保持している
    ○ 私物からも機密情報漏洩の可能性が十分にある

    View full-size slide

  80. 81
    まとめ
    常にセキュリティを考えよう
    ● 知識の段階
    ○ 知らない
    ○ 知っている
    ○ 知っていて利用できる
    ○ 知っていて無視せず利用できる
    ● セキュリティを学び、正しく実践しよう

    View full-size slide

  81. This JavaScript code powers a 1,500 user intranet application
    最悪なログインコード

    View full-size slide

  82. Security NEXT by NEWSGAIA
    相次ぐ個人情報漏洩事件

    View full-size slide

  83. まとめのまとめ
    被害を最小限に抑える為の予防と準備を行おう
    技術以外にもセキュリティリスクは存在する
    インシデントは発生する前提で考える
    危殆化しない為に継続的な情報収集を行う
    84
    一般的な脆弱性を理解してしっかり対策する

    View full-size slide

  84. Build Something Amazing
    written by ariaki4dev

    View full-size slide

  85. 86
    Appendix
    小さく始める情報セキュリティ管理
    祝RFC!Transport Layer Security (TLS) 1.3 発行の軌跡
    理解してるつもりの SSL/TLS でも、もっと理解したら面白かった話
    yohgaki’s blog

    View full-size slide

  86. 87
    Appendix
    https://speakerdeck.com/ariaki/os-that-we-should-know
    全てのエンジニアに知ってもらいたい
    OSの中身
    https://speakerdeck.com/ariaki/learn-about-vulnerability
    Learn about vulnerability
    and how to secure your website

    View full-size slide

  87. 88
    Appendix
    https://speakerdeck.com/ariaki/2020-evolution-of-internet
    2020: Evolution of Internet

    View full-size slide