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
Protocol for Web 2018
Search
Hiroki Suezawa (@rung)
December 28, 2018
Technology
0
490
Protocol for Web 2018
Securityベンダで行った社内勉強会資料
Webに関わるプロトコルの変化を追うことで、現在のWebの状況および、Snowden事件以降のPrivacyの重視などの10年間の変遷を說明した
Hiroki Suezawa (@rung)
December 28, 2018
Tweet
Share
More Decks by Hiroki Suezawa (@rung)
See All by Hiroki Suezawa (@rung)
開発環境のセキュリティおよびCI/CDパイプラインのセキュア化
rung
24
24k
Dangerous attack paths: Modern Development Environment Security - Devices and CI/CD pipelines
rung
2
1.1k
Attacking and Securing CI/CD Pipeline
rung
16
23k
How to secure your Kubernetes cluster on Google Cloud - セキュアなGKEクラスタのつくりかた
rung
0
2.7k
Achieving Security Compliance Monitoring with Open Policy Agent and Rego
rung
1
1.4k
Kubernetes Security for Microservices
rung
11
4.7k
Exploitation Fundamentals - Japanese
rung
0
220
Exploitation Fundamentals - English
rung
2
240
Other Decks in Technology
See All in Technology
Machine Intelligence for Vision, Language, and Actions
keio_smilab
PRO
0
540
為什麼我們需要 Observability?
marcustung
0
470
Amazon DevOps Guru のベースラインを整備して1ヶ月ほど運用してみた #jawsug_asa / Amazon DevOps Guru trial
masahirokawahara
3
200
Java で学ぶ 代数的データ型
ysknsid25
2
1.1k
医療業界に特化した音声認識モデル構築のためのアノテーションの実態
thickstem
0
390
実践Kafka Streams 〜イベント駆動型アーキテクチャを添えて〜
joker1007
3
810
Java 30周年記念! Javaの30年をふりかえる
skrb
4
2.6k
データ戦略部門 紹介資料
sansan33
PRO
1
3.1k
Bill One 開発エンジニア 紹介資料
sansan33
PRO
4
12k
SwiftUI Transaction を徹底活用!ZOZOTOWN UI開発での活用事例
tsuzuki817
1
130
【ClickHouseMeetup】ClickHouseを活用したセキュリティログ解析AIエージェント『LogEater』とは
hssh2_bin
0
110
GitHub Copilot Use Cases at ZOZO
horie1024
1
330
Featured
See All Featured
The World Runs on Bad Software
bkeepers
PRO
68
11k
Typedesign – Prime Four
hannesfritz
42
2.6k
What’s in a name? Adding method to the madness
productmarketing
PRO
22
3.5k
StorybookのUI Testing Handbookを読んだ
zakiyama
30
5.8k
Building Applications with DynamoDB
mza
95
6.4k
Sharpening the Axe: The Primacy of Toolmaking
bcantrill
42
2.4k
Why Our Code Smells
bkeepers
PRO
337
57k
Designing for humans not robots
tammielis
253
25k
Chrome DevTools: State of the Union 2024 - Debugging React & Beyond
addyosmani
6
670
Scaling GitHub
holman
459
140k
The Psychology of Web Performance [Beyond Tellerrand 2023]
tammyeverts
47
2.8k
How to Ace a Technical Interview
jacobian
276
23k
Transcript
Protocol for Web 2018 2018.12 Security ベンダ 社内勉強会資料 Hiroki Suezawa
(@rung)
伝えたいこと • Protocol(or 標準化 ) を見ることで Web の流れが分かってくること • 世界観の共有
◦ Web はここ 10 年で一気に変化が進んでいること ◦ End to End 暗号化に対する強い意志 ◦ Privacy の要素を頭に入れておくと変化を追いやすいこと
State of the Web Reference HTTPSの利用は急増
State of the Web based on Alexa’s list of the
most popular sites in the world. https://www.ssllabs.com/ssl-pulse/ TLS1.3の登場 多くのHTTP/2サポート
2000 - 2020 〜2000 2005 2010 2015 2020 HTTP/2 SPDY
by Google IEの時代 ActiveX, Flash Google Maps, Ajax Chrome リリース HTTP/3 TLS1.2 TLS1.3 Web socket WebRTC Mozzila Suiteの死. Firefoxリリース (Java|ECMA)Scriptの時代 Snowden事件
Webにおける力関係の変化 • Microsoft IE の時代が 2005 年に終わり始める • 2005- (Java|ECMA)Script
の時代 ◦ Ajax: Web でリッチなコンテンツを作っていく動き ◦ Web における標準化の促進 ▪ WHATWG/W3C/TC39.. • 2008- Chrome の誕生 ◦ Web を主戦場にする企業による、実験出来るブラウザの誕生 • Web = インターネットに ◦ クラウド +CDN がインターネットの基盤になる ▪ AWS/Azure/GCP/Akamai/Fastly/Cloudflare • Protocol を変える土壌が整う ◦ クライアントサイドと、サーバサイドの両方に大きなプラットフォーマー ▪ クライアント =Chrome/Firefox 。 ▪ サーバサイド =CDN
プロトコルを作る目的 • Web を • 便利にする • 速くする • セキュアにする
• セキュア : 攻撃耐性 + Privacy • 特に Snowden 事件以降は、 Privacy の要素は最重要視される要素
httpbis: IETFのワーキンググループ • Chairs(2018) ◦ Mark Nottingham(Fastly/ 元 Akamai) ◦
Patrick McManus(Fastly/ 元 Mozzila) ◦ Tommy Pauly(Apple) ▪ (Chairs が 2 人とも Fastly になったことから最近 Chair に追加 ) • ブラウザベンダ or CDN ベンダが Web を変化させる人たちを雇っている
Javascriptの進化に伴うプロトコルの変化 • Javascript 経由で利用する機能 • XHR(XML HTTP Request) • Javascript
経由で、クライアントに通信を発生させられる • 双方向性がない • Chat の実装 : 定期的なポーリングなどが必要 ◦ Websocket(2011) ▪ 双方向性がある ▪ バイナリフレーミング ▪ Web 上で効率的に双方向の通信が可能になる https://hpbn.co/xmlhttprequest/
Javascriptの進化に伴うプロトコルの変化 ◦ WebRTC(2012) ▪ “ 標準的に ” ビデオストリーミングなどで P2P 通信を可能にしたい
▪ 過去 : Skype • 独自プロトコル。 P2P に失敗し、サーバ経由でやりとりすることも多かった ▪ 例 : Google Duo • ビデオ通信などで P2P を利用する際に WebRTC を利用 • P2P 失敗時の通信方式も現在は標準化されている (NAT 超え対応など )
通信プロトコルの課題 • 実感に反する問題 : 帯域幅 (Bandwidth) を増やしても Web は早くならない ◦
プロトコルに問題がある • レイテンシを速くすると、それだけ Web は速くなる ◦ CDN により解決できる Reference
HTTP/1.1 • 問題点 • Head of line blocking ▪ 多重化されておらず、次の通信を始めるためには、レスポンスを待つ必要あり
▪ ブラウザによる ”1 ドメイン 6TCP セッション制限 ” を回避するため、ドメインシャーディングの実施 がベストプラクティス ▪ 重要な通信と重要でない通信を分けられない • 画像ファイルはなくても Web 描写を開始できる https://www.slideshare.net/hustwj/http-20-tokyo https://developers.google.com/web/fundamentals/performance/critical-rend ering-path/render-tree-construction
HTTP/2 • 特徴 ◦ バイナリフレーム ▪ TCP 1 コネクション。通信をフレームで区切る ▪
Stream( 通信単位 )/Message(Header 全体 /Data 全体など )/Frame( フレーム単位 ) ◦ ヘッダ圧縮 ▪ HTTP/1.1 ではヘッダは圧縮できない ▪ 単純な圧縮ではセキュリティホールを生むので独自圧縮方式 (HPACK) ◦ 優先度制御 ▪ DOM 構築に必要な html/js/css を優先的に取得 ※プロトコルと Web ブラウザ描写の問題は密接 に結びついている https://developers.google.com/web/fundamentals/performance/http2/?hl=ja#_3
HTTP/2 • SPDY 実験 ◦ Chrome が 2009 年ごろから HTTP/2
の前身となる SPDY プロトコルを実験 ▪ その最終的な成果が HTTP/2 • RFC 著者 ◦ M. Belshe( 元 Google で SPDY 実施 ) ◦ R. Peon(Google) ◦ M. Thomson, Ed.(Mozilla) ◦ その他 CDN/Microsoft 従事者などに謝辞
TLS1.2 -> 1.3 • TLS1.3: TLS のシンプル化 ◦ 2RTT ->
1RTT: 速くする ◦ 暗号選択をシンプル + 強く ▪ AEAD( 認証付き暗号 ) : AES-GCM/ChaCha20-Poly1305 ▪ CipherSuite の選択肢がほとんどない (OpenSSL で Cipher suites を気にする必要が減る ) ◦ PFS の必須化 ▪ 鍵交換に RSA が使用できない = 通信経路を監視しても復号できないように ◦ 不要な機能の削除 ▪ TLS 圧縮 /SHA1… ◦ ただし SNI は暗号化できない ▪ どのドメインに通信 するかは仲介者に見える https://blog.cloudflare.com/tls-1-3-overview-and-q-and-a/ TLS1.2 TLS1.3
TLS1.3策定時に起きた重要な議論 • DC 内復号 ◦ 仲介者が通信を復号できる仕組みを作ろうという提案 ▪ TLS を復号できるように、セッションシークレットを公開鍵で暗号化して埋め込む ▪
秘密鍵を持っている人が通信を復号可能にする ▪ https://datatracker.ietf.org/doc/draft-rhrd-tls-tls13-visibility/?include_text=1 ◦ IETF にて炎上 ▪ TLS を弱める機能を入れる理由はない ▪ Snowden 事件の反省が生かされていない • Snowden 事件では PGP 暗号化メールが秘密鍵により復号された ◦ ポイント : Privacy は市民にとって最重要視されるべき事項であるという認識が Protocol 策定者間では 共通認識になっている。
TCP • 問題点 ◦ Head of line blocking ▪ 先行パケットが落ちると、後ろのパケットが詰まる
• 全体が遅れる ▪ TCP slow start • ウインドウサイズを少しずつ上げていく • パケットロス時に安全すぎる輻輳回避 https://hpbn.co/building-blocks-of-tcp/
HTTP/3 (QUIC) • 現在策定中 • UDP を使用 ◦ TCP/UDP に変わる
L4 プロトコルを作ることは実質不可能 ▪ UDP 上に再送制御などを実装。 UDP より上のレイヤは全て暗号化 ▪ 制御はユーザランドで全て実装出来るので Kernel に依存しないで済む • Kernel の更新には時間がかかる ▪ 事実上の TCP2 • 通信プロトコル上に TLS レイヤが乗る • Chrome による実験 ◦ gQUIC と呼ばれる Google 専用の QUIC プロトコル ◦ ブラウザ上でたくさんの実験および概念実証 https://datatracker.ietf.org/meeting/98/materials/slides-98-edu-sessf-quic-tutorial/
その先 • End to End 暗号化に対する強い意志 : Privacy ◦ Snowden
事件からの変えられない流れ ◦ TLS 証明書発行も自動化が進んでいる ▪ ACME プロトコル (Let’s encrypt) • 通信全体を秘匿する流れ ◦ DNS/TLS/HTTP どのレイヤにも介入が難しくなっていく ▪ DNS Over HTTPS ▪ Encrypted SNI ▪ QUIC.. https://speakerdeck.com/kazuho/security-privacy-performance-of-next-generation-transport-protocols?slide=4
[セキュリティベンダとして] 社内セキュリティどうする? • 社内からの通信に対する、 MITM Proxy による SSL Inspection ◦
出来なくなる可能性もある (OS 側でのルート証明書管理の厳格化 ) • → EDR などを基本とした Proxy でない管理手法が求められる • マルウェア対策の流れの変化 ? ◦ 旧 : 自由な端末 (Mac/Windows) ◦ 新 : セキュアな端末の登場 (iPhone/Android/Chromebook/Windows 10 S) ▪ そもそもおかしなコードを実行できない環境への変化 ▪ アンチウイルスからホワイトリスティングという考え方もある? • https://www.theregister.co.uk/2016/11/17/google_hacker_pleads_try_whitelists_not_just_ bunk_antivirus_ids/
付録: メール(SMTP) • 古いプロトコル ◦ Web と違い、変えるコストが大きい (MTA サーバが世界中に多数存在している /
アップデートが難しい ) • 小さな動き : SMTP-STS ◦ SMTP-STS: SMTP over TLS の強制化仕様 ◦ ただしサーバ間暗号化でしかない • 現在の大きな問題 ◦ メールは End To End で認証できない / 暗号化できない ◦ なりすましが容易 ◦ E2E 認証 / 暗号化できるだけで、なりすましによるフィッシング攻撃は一気に難しくなるはず・・・ ◦ 理想のイメージ : 会社間でも LINE でやりとりするような世界
付録: メール(SMTP) • ただし、 ” メッセージング ” は大きく変化している • 会社内では
Slack/Teams が基本に • 既に個人間通信は End to End 暗号化されている ▪ Signal Protocol を各社採用 .Whatsapp/Hangout など ▪ LINE も LINE sealing 機能で E2E 暗号化 • プラットフォーマーが会社 / サービス間メッセージングの暗号化に本気になるとき ▪ どこかのタイミングで E2E 暗号化プロトコルが標準化される? ( 実質上の SMTP2?)