Upgrade to Pro
— share decks privately, control downloads, hide ads and more …
Speaker Deck
Features
Speaker Deck
PRO
Sign in
Sign up for free
Search
Search
TLS1.3対応のサービスが増えているが、クライアントアプリケーション側で考慮すべきことも考えてみる
Search
Sponsored
·
Your Podcast. Everywhere. Effortlessly.
Share. Educate. Inspire. Entertain. You do you. We'll handle the rest.
→
iwasa
April 25, 2024
3.5k
0
Share
Embed
Copy iframe code
Copy JS code
Copy link
Start on current slide
TLS1.3対応のサービスが増えているが、クライアントアプリケーション側で考慮すべきことも考えてみる
iwasa
April 25, 2024
More Decks by iwasa
See All by iwasa
OWASP Juice Shop に AWS Security Agent で ペネトレーションテストを実施した結果
tak1wa
0
310
最近の医療 x AWS
tak1wa
0
380
3大クラウドから学ぶクラウド上でのランサムウェア対策
tak1wa
0
870
Lambdaの様々な新機能とユースケース
tak1wa
0
430
AWS最新機能を駆使したマルチテナントSaaSアーキテクチャーを考えてみる
tak1wa
0
1k
Tsumiki を使って仕様駆動開発をやってみよう
tak1wa
0
990
社内開発で Amazon Q Developer を使っていたが Kiro に乗り換えた話
tak1wa
0
1.8k
Microsoft Azure プランの復習とプラン切り替えのお話
tak1wa
0
570
Amazon Q Detector Library から学ぶセキュアコーディング
tak1wa
0
470
Featured
See All Featured
Self-Hosted WebAssembly Runtime for Runtime-Neutral Checkpoint/Restore in Edge–Cloud Continuum
chikuwait
0
600
BBQ
matthewcrist
89
10k
Digital Ethics as a Driver of Design Innovation
axbom
PRO
1
320
YesSQL, Process and Tooling at Scale
rocio
174
15k
Sam Torres - BigQuery for SEOs
techseoconnect
PRO
0
290
Designing for humans not robots
tammielis
254
26k
How to Build an AI Search Optimization Roadmap - Criteria and Steps to Take #SEOIRL
aleyda
1
2.1k
Put a Button on it: Removing Barriers to Going Fast.
kastner
60
4.3k
My Coaching Mixtape
mlcsv
0
150
Chrome DevTools: State of the Union 2024 - Debugging React & Beyond
addyosmani
10
1.2k
HDC tutorial
michielstock
2
720
Jamie Indigo - Trashchat’s Guide to Black Boxes: Technical SEO Tactics for LLMs
techseoconnect
PRO
0
170
Transcript
TLS1.3対応のサービスが増えているが クライアントアプリケーション側で考慮すべきことも考えてみる 2024 年 4 月 25 日 NW X
Security JAWS勉強会#3 1
2 自己紹介 岩浅 貴大 (いわさ) クラスメソッド株式会社 ➢ 2020年12月入社 ◦ ソリューションアーキテクト
◦ 札幌オフィス ➢ 前職まで ◦ アプリケーションエンジニア ◦ 業務アプリ、モバイルアプリ、Webア プリ、色々 ➢ 得意な領域:アプリケーション ➢ 苦手な領域:ネットワーク、セキュリティ
3 今日はなさないこと 0-RTT や QUIC のはなし
4 今日はなすこと バージョン・互換性などもっと単純なところのはなし TLS に関する特にバージョン周りについて サーバーとクライアントの関係を知っておく
5 アジェンダ • TLS1.3対応のAWSサービスとクライアントアプリケーション 1. はじめに 2. TLS1.3対応の AWS サービス
3. クライアントアプリケーション側での考慮 4. まとめ
6 アジェンダ • TLS1.3対応のAWSサービスとクライアントアプリケーション 1. はじめに 2. TLS1.3対応の AWS サービス
3. クライアントアプリケーション側での考慮 4. まとめ
7 はじめに SSL/TLS 使ってますか?
SSL/TLS はセッション層に位置するセキュアプロトコルで、通信の暗号 化、データ完全性の確保、サーバ(場合によりクライアント)の認証を行 うことができる。 IPA TLS暗号設定ガイドライン より https://www.ipa.go.jp/security/crypto/guideline/ssl_crypt_config.html 8 SSL/TLS
プロトコル概要
• 様々なプロトコル、アプリケーションで使われる ◦ HTTP, SMTP, FTP … ◦ 昨今は TLS1.0/1.1
が非推奨になったこともあり、特にWeb アプリ ケーションで HTTPS を構成する際にはバージョンまで気にすることが 多いのでは 9 多くの人が使っているであろうTLS
10 はじめに バージョンまわり
• サーバーサイド ◦ どのバージョン、どの暗号スイート? ◦ AWS だと「セキュリティポリシー」どうする? • クライアントサイド ◦
ライブラリによってはTLSバージョンを指定するオプションあるが? ◦ どのバージョンで接続しにいこうとしているのか? 11 TLS のバージョンどうする?
12 アジェンダ • TLS1.3対応のAWSサービスとクライアントアプリケーション 1. はじめに 2. TLS1.3対応の AWS サービス
3. クライアントアプリケーション側での考慮 4. まとめ
13 TLS1.3対応の AWS サービス TLS 1.3 ?
14 TLS の歴史 1994年 - SSL 2.0 1995年 - SSL
3.0 1999年 - TLS 1.0 2006年 - TLS 1.1 2008年 - TLS 1.2 2018年 - TLS 1.3 基本的に、プロトコルのバージョンが後になるほど、以前の攻撃に対する対策が盛り込まれるため、より安全性が高くなる
15 TLS の歴史 1994年 - SSL 2.0 1995年 - SSL
3.0 1999年 - TLS 1.0 2006年 - TLS 1.1 2008年 - TLS 1.2 2018年 - TLS 1.3 基本的に、プロトコルのバージョンが後になるほど、以前の攻撃に対する対策が盛り込まれるため、より安全性が高くなる 非推奨 非推奨 非推奨 非推奨
- サポートされている対称暗号化アルゴリズムのリストは、レガシーと見なされるすべてのアルゴリズムから削除されました。 残っているのは、すべて関連データを使用した認証暗号化 (AEAD)アルゴリズムです。 暗号スイートの概念が変更され、認証とキー交換メカニズムをレコード保護アルゴリズム(秘密キーの長さを含む)およびキー派生機能とハンドシェイクメッ セージ認証コード(MAC)の両方で使用されるハッシュから分離しました。 - ゼロラウンドトリップタイム(0-RTT)モードが追加され、特定のセキュリティプロパティを犠牲にして、一部のアプリケーションデータの接続セットアップ時のラウンドトリップが節約され ました。 -
静的RSAおよびDiffie-Hellman暗号スイートが削除されました。 すべての公開鍵ベースの鍵交換メカニズムは、前方秘密を提供するようになりました。 - ServerHello後のすべてのハンドシェイクメッセージが暗号化されます。 新しく導入されたEncryptedExtensionsメッセージにより、ServerHelloで以前に平文で送信されたさまざまな拡張機能 も機密保護を享受できます。 - 主要な派生関数が再設計されました。 新しい設計により、鍵分離特性が改善されているため、暗号作成者による分析が容易になります。 HMACベースの抽出および拡張キー派生関数(HKDF) は、基になるプリミティブとして使用されます。 - ハンドシェイクステートマシンが大幅に再構築されて、一貫性が向上し、ChangeCipherSpecなどの不要なメッセージが削除されました(ミドルボックスの互換性に必要な場合を除く)。 - 現在、楕円曲線アルゴリズムは基本仕様に含まれており、EdDSAなどの新しい署名アルゴリズムが含まれています。 TLS 1.3は、各曲線の単一のポイント形式を支持して、ポイント形式のネゴ シエーションを削除しました。 - RSA確率的署名スキーム(RSASSA-PSS)を使用するためのRSAパディングの変更、圧縮の削除、デジタル署名アルゴリズム(DSA)、およびカスタムEphemeral Diffie-Hellman(DHE)グルー プを含む、その他の暗号化の改善が行われました。 - TLS 1.2バージョンネゴシエーションメカニズムは、拡張機能のバージョンリストを優先して廃止されました。 これにより、バージョンネゴシエーションを誤って実装した既存のサーバーとの 互換性が向上します。 - サーバー側の状態がある場合とない場合のセッション再開、および以前のTLSバージョンのPSKベースの暗号スイートは、単一の新しいPSK交換に置き換えられました。 - 必要に応じて、RFCの更新されたバージョンを指すように参照が更新されました(RFC 3280ではなくRFC 5280など)。 RFC 8446 - The Transport Layer Security (TLS) Protocol Version 1.3 日本語訳 より https://tex2e.github.io/rfc-translater/html/rfc8446.html 16 TLS 1.3 は TLS 1.2 から 何が変わったのか
- サポートされている対称暗号化アルゴリズムのリストは、レガシーと見なされるすべてのアルゴリズムから削除されました。 残っているのは、すべて関連データを使用した認証暗号化 (AEAD)アルゴリズムです。 暗号スイートの概念が変更され、認証とキー交換メカニズムをレコード保護アルゴリズム(秘密キーの長さを含む)およびキー派生機能とハンドシェイクメッ セージ認証コード(MAC)の両方で使用されるハッシュから分離しました。 - ゼロラウンドトリップタイム(0-RTT)モードが追加され、特定のセキュリティプロパティを犠牲にして、一部のアプリケーションデータの接続セットアップ時のラウンドトリップが節約され ました。 -
静的RSAおよびDiffie-Hellman暗号スイートが削除されました。 すべての公開鍵ベースの鍵交換メカニズムは、前方秘密を提供するようになりました。 - ServerHello後のすべてのハンドシェイクメッセージが暗号化されます。 新しく導入されたEncryptedExtensionsメッセージにより、ServerHelloで以前に平文で送信されたさまざまな拡張機能 も機密保護を享受できます。 - 主要な派生関数が再設計されました。 新しい設計により、鍵分離特性が改善されているため、暗号作成者による分析が容易になります。 HMACベースの抽出および拡張キー派生関数(HKDF) は、基になるプリミティブとして使用されます。 - ハンドシェイクステートマシンが大幅に再構築されて、一貫性が向上し、ChangeCipherSpecなどの不要なメッセージが削除されました(ミドルボックスの互換性に必要な場合を除く)。 - 現在、楕円曲線アルゴリズムは基本仕様に含まれており、EdDSAなどの新しい署名アルゴリズムが含まれています。 TLS 1.3は、各曲線の単一のポイント形式を支持して、ポイント形式のネゴ シエーションを削除しました。 - RSA確率的署名スキーム(RSASSA-PSS)を使用するためのRSAパディングの変更、圧縮の削除、デジタル署名アルゴリズム(DSA)、およびカスタムEphemeral Diffie-Hellman(DHE)グルー プを含む、その他の暗号化の改善が行われました。 - TLS 1.2バージョンネゴシエーションメカニズムは、拡張機能のバージョンリストを優先して廃止されました。 これにより、バージョンネゴシエーションを誤って実装した既存のサーバーとの 互換性が向上します。 - サーバー側の状態がある場合とない場合のセッション再開、および以前のTLSバージョンのPSKベースの暗号スイートは、単一の新しいPSK交換に置き換えられました。 - 必要に応じて、RFCの更新されたバージョンを指すように参照が更新されました(RFC 3280ではなくRFC 5280など)。 RFC 8446 - The Transport Layer Security (TLS) Protocol Version 1.3 日本語訳 より https://tex2e.github.io/rfc-translater/html/rfc8446.html 17 TLS 1.3 の TLS 1.2 からの主な違い よりセキュアで、パフォーマンス良い
18 TLS 1.3 が推奨されるということは TLS 1.2 も非推奨に?
- このドキュメントの推奨事項が既知の攻撃を緩和する場合、TLS 1.2の使 用はTLS 1.3の使用と同じくらい安全です - TLS 1.3は、プロトコルの大きなオーバーホールであり、TLS 1.2の多くのセキュリティ問題を解決 します。実装がTLS
1.2をサポートする限り(TLS 1.3にデフォルトであっても)、このドキュメン トで指定されたTLS 1.2に関する推奨事項に従う必要があります。 - TLSとDTLを再利用するほとんどのアプリケーションプロトコルでは、 TLS 1.3のみに移行する必要はありません。 RFC 9325 - Recommendations for Secure Use of Transport Layer Security (TLS) and Datagram Transport Layer Security (DTLS) 日本語訳 より https://tex2e.github.io/rfc-translater/html/rfc9325.html 19 本日時点で TLS 1.2 は非推奨ではない
- このドキュメントの推奨事項が既知の攻撃を緩和する場合、TLS 1.2の使 用はTLS 1.3の使用と同じくらい安全です - TLS 1.3は、プロトコルの大きなオーバーホールであり、TLS 1.2の多くのセキュリティ問題を解決 します。実装がTLS
1.2をサポートする限り(TLS 1.3にデフォルトであっても)、このドキュメ ントで指定されたTLS 1.2に関する推奨事項に従う必要があります。 - TLSとDTLを再利用するほとんどのアプリケーションプロトコルでは、 TLS 1.3のみに移行する必要はありません。 RFC 9325 - Recommendations for Secure Use of Transport Layer Security (TLS) and Datagram Transport Layer Security (DTLS) 日本語訳 より https://tex2e.github.io/rfc-translater/html/rfc9325.html 20 本日時点で TLS 1.2 は非推奨ではない
21 AWS サービスで TLS 1.3 ?
22 AWS サービスで TLS 1.3 AWS サービス サポート時期 DevelopersIO CloudFront
2020.09.04 TLSv1.3 をサポートしたCloudFrontの動作を弊社のカフェサイトで確認してみた Network Load Balancer 2021.10.18 [アップデート]NLBがTLS1.3に対応しました! Application Load Balancer 2023.03.23 [アップデート] Application Load Balance (ALB) がTLS 1.3をサポートしました RDS for PostgreSQL 2023.11.17 Amazon RDS for PostgreSQL 16.1 から TLS 1.3 がサポートされていたので確認し てみた OpenSearch Service 2023.01.04 Amazon OpenSearch Service と Amazon OpenSearch Serverless が TLS 1.3 を サポートしていたので有効化方法や注意点などを確認してみた OpenSearch Serverless 2023.02.14 API Gateway 2024.02.16 [アップデート] Amazon API Gateway で TLS 1.3 をサポートする API タイプ、エンドポ イントタイプが増えました Lightsail 2024.04.03 [アップデート] Amazon Lightsail でディストリビューションの最低 TLS バージョンを設 定出来るようになりました
23 AWS サービスで TLS 1.3 セキュリティポリシー
24 セキュリティポリシー 「Application Load Balancer 用の HTTPS リスナーを作成する」より
25 セキュリティポリシー 「Application Load Balancer 用の HTTPS リスナーを作成する」より
26 セキュリティポリシー変更出来ないものも https://dev.classmethod.jp/articles/app-runner-amplify-hosting-tls-version/
27 セキュリティポリシー変更出来ないものも https://dev.classmethod.jp/articles/app-runner-amplify-hosting-tls-version/
28 セキュリティポリシー変更出来ないものも
29 TLS1.3対応の AWS サービス TLS1.3サポートが増えている サポートというか勝手に適用されてる かなり限定されたポリシーも含まれている
30 アジェンダ • TLS1.3対応のAWSサービスとクライアントアプリケーション 1. はじめに 2. TLS1.3対応の AWS サービス
3. クライアントアプリケーション側での考慮 4. まとめ
31 クライアントのはなし AWS サービス側でTLS1.3がいつの間にか使われ ているが大丈夫なのか
- TLS 1.3は以前のバージョンと直接の互換性はありません - TLSのすべてのバージョンには、クライアントとサーバーが両方のピアで サポートされている場合に共通バージョンを相互運用可能にネゴシエート できるバージョン管理メカニズムが組み込まれています。 RFC 8446 -
The Transport Layer Security (TLS) Protocol Version 1.3 日本語訳 より https://tex2e.github.io/rfc-translater/html/rfc8446.html 32 TLS と互換性のはなし
33 クライアントのはなし バージョン管理メカニズム ?
34 バージョンネゴシエーション
35 バージョンネゴシエーション
36 バージョンネゴシエーション
37 バージョンネゴシエーション
38 バージョンネゴシエーション
39 バージョンネゴシエーション
40 バージョンネゴシエーション
41 バージョンネゴシエーションでうまいこと クライアントがまだTLS1.3に対応していなくても サーバーがTLS1.3以外のバージョンもサポートしていれば使える
42 クライアントがサポートする TLS バージョン 把握したい
43 クライアントごとの対応状況 クライアント 状況 備考 Web フロントエンド ブラウザバージョンに依存 モバイルアプリ OSバージョンに依存
独自実装している場合もある その他クライアント クライアントによりバラバラ OSに依存している場合もあれば、依存せずに HTTPクライアントが独 自実装している場合もある Webフロントエンド以外のクライアントは個別に確認を推奨
44 TLS 1.3 が使えないクライアント
• 古いOS、古いブラウザバージョン → レガシークライアントと呼ばれる ◦ ブラウザバージョン ◦ モバイルOS(下位バージョンで独自実装による接続も可能) 45 TLS
1.3 が使えないクライアント ブラウザ デフォルト有効 備考 Chrome 70以上 下位バージョンオプトインあり Edge 79以上 Safari 14以上 macOSバージョンにも依存 Firefox 63以上 モバイルOS デフォルト有効 備考 Android Android 10 (API 29) iOS iOS 12.2以上 ※ SecureTransport API は対象外
• クライアントライブラリに制限がある場合 ◦ .NET HttpClient の MacOSサポートなど ▪ MacOS で
HttpClient を使う場合は .NET 8 時点では TLS 1.3 がサ ポートされていない 46 TLS 1.3 が使えないクライアント https://dev.classmethod.jp/articles/dotnet-httpclinet-tls-version-macos/
• 独自でバージョン指定していて使えない場合もある ◦ 独自でバージョン指定していて使えない場合もある 47 TLS 1.3 が使えないクライアント https://dev.classmethod.jp/articles/node-js-tlsv12-max-version/
• サードパーティの検証サイトなど 48 クライアントごとの対応状況を実際に検証する https://dev.classmethod.jp/articles/check-your-client-side-ssl-tls-support-via-api/
49 クライアントで考慮しておきたい バージョンネゴシエーションを把握 クライアントがサポートするバージョンを確認
50 アジェンダ • TLS1.3対応のAWSサービスとクライアントアプリケーション 1. はじめに 2. TLS1.3対応の AWS サービス
3. クライアントアプリケーション側での考慮 4. まとめ
• セキュリティポリシーを TLS 1.3 のみにする場合は注意 ◦ 互換性がなくなるのでクライアントアプリケーションに影響でるかも • TLS 1.2
= セキュアとは限らない ◦ TLS 1.2 は非推奨ではないが、使う場合は推奨構成に準拠 • クライアント実装 ◦ クライアントでバージョン固定などの独自実装は避けたほうが無難 ◦ レガシーAPIは使わない 51 まとめ
52