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

HSTSについて調べた

 HSTSについて調べた

Hiroto Sasagawa

July 10, 2023
Tweet

More Decks by Hiroto Sasagawa

Other Decks in Technology

Transcript

  1. HSTSについて調べた
    笹川 尋翔

    View Slide

  2. HSTS(HTTP Strict Transport Security)
    • サーバとクライアント間の通信でHTTPSを使うことを強制
    • レスポンスヘッダにStrict-Transport-Securityを付与

    View Slide

  3. HTTPのリダイレクトじゃ駄⽬?
    • HTTPに届いたリクエストをHTTPSにリダイレクト
    NGINXでリダイレクトを設定する例

    View Slide

  4. 中間者攻撃のリスクがある
    • リダイレクトされる前の通信は平⽂で⾏われる
    • 悪意のあるサーバを経由させると通信を盗聴、改ざんできる

    View Slide

  5. HSTSの利点
    • 中間者攻撃(Man In The Middle Attack)を防⽌
    • Cookieなどの通信データを暗号化

    View Slide

  6. HSTSの⽋点
    • 例1.) そのドメインに初めてアクセスする場合
    • 例2.) Strict-Transport-Securityが期限切れの場合
    最初のリスエストとレスポンスの通信を
    HTTPで⾏うことができる

    View Slide

  7. ディレクティブ
    • max-age=
    • HTTPSだけで接続することをWebブラウザが記憶する秒数
    • includeSubDomains
    • サイトの全てのサブドメインにもHSTSを適⽤
    • preload
    • 最初の通信からHSTSを適⽤
    • 仕様書(RFC 6797)では定義されていない

    View Slide

  8. Cookieの暗号化
    • CookieにSecure属性を設定
    • 暗号化を保証
    • HTTPSを使うときだけCookieが作成
    • HSTSを使う
    • Cookieをほぼ確実に暗号化できるが暗号化は保証されない
    • “HSTSの⽋点”で説明したように、HTTPで通信される場合がある

    View Slide

  9. 中間者攻撃
    • クライアントと正規サーバの通信を、悪意のあるサーバを
    経由して実施させる
    • 通信の盗聴、改ざんをする
    • 例) HTTPで通信している場合
    • 平⽂でデータが渡されるため、盗聴や改ざんが容易

    View Slide

  10. 中間者攻撃の例

    View Slide

  11. HSTSの設定⽅法
    • Webアプリケーションフレームワークのバックエンド
    • 例) Ruby on Rails
    • Webサーバ
    • 例) NGINX
    • DNSサーバ
    • 例) Cloudflare DNS

    View Slide

  12. まとめ
    • HSTSはHTTPSでの接続を強制する仕組み
    • 単独では通信の暗号化を保証しない
    • HSTS ≠ 安全
    • preloadディレクティブ、Cookieのsecure属性を設定することが推奨

    View Slide

  13. 参考
    • https://developer.mozilla.org/ja/docs/Web/HTTP/Headers/Strict-
    Transport-Security
    • https://www.chromium.org/hsts/
    • https://hstspreload.org/

    View Slide