Download free for 30 days
Sign in
Upload
Language (EN)
Support
Business
Mobile
Social Media
Marketing
Technology
Art & Photos
Career
Design
Education
Presentations & Public Speaking
Government & Nonprofit
Healthcare
Internet
Law
Leadership & Management
Automotive
Engineering
Software
Recruiting & HR
Retail
Sales
Services
Science
Small Business & Entrepreneurship
Food
Environment
Economy & Finance
Data & Analytics
Investor Relations
Sports
Spiritual
News & Politics
Travel
Self Improvement
Real Estate
Entertainment & Humor
Health & Medicine
Devices & Hardware
Lifestyle
Change Language
Language
English
Español
Português
Français
Deutsche
Cancel
Save
Submit search
EN
YH
Uploaded by
Yasutaka Hiraki
PDF, PPTX
104 views
Hacking demonstration 2018
第72回灘校文化祭において,パソコン研究部のステージ企画「ハッキング実演」で使用
Technology
◦
Read more
1
Save
Share
Embed
Embed presentation
Download
Download as PDF, PPTX
1
/ 84
2
/ 84
3
/ 84
4
/ 84
5
/ 84
6
/ 84
7
/ 84
8
/ 84
9
/ 84
10
/ 84
11
/ 84
12
/ 84
13
/ 84
14
/ 84
15
/ 84
16
/ 84
17
/ 84
18
/ 84
19
/ 84
20
/ 84
21
/ 84
22
/ 84
23
/ 84
24
/ 84
25
/ 84
26
/ 84
27
/ 84
28
/ 84
29
/ 84
30
/ 84
31
/ 84
32
/ 84
33
/ 84
34
/ 84
35
/ 84
36
/ 84
37
/ 84
38
/ 84
39
/ 84
40
/ 84
41
/ 84
42
/ 84
43
/ 84
44
/ 84
45
/ 84
46
/ 84
47
/ 84
48
/ 84
49
/ 84
50
/ 84
51
/ 84
52
/ 84
53
/ 84
54
/ 84
55
/ 84
56
/ 84
57
/ 84
58
/ 84
59
/ 84
60
/ 84
61
/ 84
62
/ 84
63
/ 84
64
/ 84
65
/ 84
66
/ 84
67
/ 84
68
/ 84
69
/ 84
70
/ 84
71
/ 84
72
/ 84
73
/ 84
74
/ 84
75
/ 84
76
/ 84
77
/ 84
78
/ 84
79
/ 84
80
/ 84
81
/ 84
82
/ 84
83
/ 84
84
/ 84
More Related Content
PDF
CRYPT+YOU, UNDERSTAND TODAY!
by
inaz2
PDF
暗号技術入門 秘密の国のアリス 総集編
by
京大 マイコンクラブ
PDF
SSLv3の脆弱性 Another
by
Yasutaka Hiraki
PDF
暗号技術入門
by
MITSUNARI Shigeo
PDF
新しい暗号技術
by
MITSUNARI Shigeo
PPT
Nseg#40
by
jem_3
PDF
Secure scheme script suite
by
Tod Morita
PDF
Secure Scheme Script Suite
by
shibuya_lisp
CRYPT+YOU, UNDERSTAND TODAY!
by
inaz2
暗号技術入門 秘密の国のアリス 総集編
by
京大 マイコンクラブ
SSLv3の脆弱性 Another
by
Yasutaka Hiraki
暗号技術入門
by
MITSUNARI Shigeo
新しい暗号技術
by
MITSUNARI Shigeo
Nseg#40
by
jem_3
Secure scheme script suite
by
Tod Morita
Secure Scheme Script Suite
by
shibuya_lisp
Similar to Hacking demonstration 2018
PDF
SSL/TLSの基礎と最新動向
by
shigeki_ohtsu
PDF
katagaitai workshop #7 crypto ナップサック暗号と低密度攻撃
by
trmr
PPTX
katagaitai CTF勉強会 #3 crypto
by
trmr
KEY
20120922 勉強会スライド
by
Yasuhiro Kinoshita
PDF
ElGamal型暗号文に対する任意関数演算・再暗号化の二者間秘密計算プロトコルとその応用
by
MITSUNARI Shigeo
PDF
Fuzzing
by
ashigirl ZareGoto
PPTX
プログラミング言語「A」 2019 07 08
by
Nmimineko
PPTX
PHP でバイナリ変換プログラミング
by
Yo Ya
PDF
“Sliding right into disaster”の紹介
by
MITSUNARI Shigeo
PDF
姫路 IT 系勉強会 Vol.6 プログラミングコンテストという名のオンラインゲームがあるらしい
by
Kazkuki Oakamoto
PDF
katagaitai CTF勉強会 #5 Crypto
by
trmr
PDF
楕円曲線と暗号
by
MITSUNARI Shigeo
PDF
情報セキュリティ講習会2016
by
Naoki Kato
PDF
『データ解析におけるプライバシー保護』勉強会 秘密計算
by
MITSUNARI Shigeo
PPT
平成21年度 秋期 cs 午前ⅱ
by
Yuki Hirano
PDF
暗号文のままで計算しよう - 準同型暗号入門 -
by
MITSUNARI Shigeo
PPT
Provable Security1
by
Satoshi Hada
PDF
フラグを愛でる
by
MITSUNARI Shigeo
KEY
Summer seminar
by
Eita Sugimoto
PDF
Ruby を用いた超絶技巧プログラミング(夏のプログラミングシンポジウム 2012)
by
mametter
SSL/TLSの基礎と最新動向
by
shigeki_ohtsu
katagaitai workshop #7 crypto ナップサック暗号と低密度攻撃
by
trmr
katagaitai CTF勉強会 #3 crypto
by
trmr
20120922 勉強会スライド
by
Yasuhiro Kinoshita
ElGamal型暗号文に対する任意関数演算・再暗号化の二者間秘密計算プロトコルとその応用
by
MITSUNARI Shigeo
Fuzzing
by
ashigirl ZareGoto
プログラミング言語「A」 2019 07 08
by
Nmimineko
PHP でバイナリ変換プログラミング
by
Yo Ya
“Sliding right into disaster”の紹介
by
MITSUNARI Shigeo
姫路 IT 系勉強会 Vol.6 プログラミングコンテストという名のオンラインゲームがあるらしい
by
Kazkuki Oakamoto
katagaitai CTF勉強会 #5 Crypto
by
trmr
楕円曲線と暗号
by
MITSUNARI Shigeo
情報セキュリティ講習会2016
by
Naoki Kato
『データ解析におけるプライバシー保護』勉強会 秘密計算
by
MITSUNARI Shigeo
平成21年度 秋期 cs 午前ⅱ
by
Yuki Hirano
暗号文のままで計算しよう - 準同型暗号入門 -
by
MITSUNARI Shigeo
Provable Security1
by
Satoshi Hada
フラグを愛でる
by
MITSUNARI Shigeo
Summer seminar
by
Eita Sugimoto
Ruby を用いた超絶技巧プログラミング(夏のプログラミングシンポジウム 2012)
by
mametter
Recently uploaded
PDF
Reiwa 7 IT Strategist Afternoon I Question-1 3C Analysis
by
akipii ogaoga
PDF
100年後の知財業界-生成AIスライドアドリブプレゼン イーパテントYouTube配信
by
e-Patent Co., Ltd.
PPTX
ddevについて .
by
iPride Co., Ltd.
PDF
さくらインターネットの今 法林リージョン:さくらのAIとか GPUとかイベントとか 〜2026年もバク進します!〜
by
法林浩之
PDF
Drupal Recipes 解説 .
by
iPride Co., Ltd.
PDF
Reiwa 7 IT Strategist Afternoon I Question-1 Ansoff's Growth Vector
by
akipii ogaoga
PDF
第21回 Gen AI 勉強会「NotebookLMで60ページ超の スライドを作成してみた」
by
嶋 是一 (Yoshikazu SHIMA)
PDF
Starlink Direct-to-Cell (D2C) 技術の概要と将来の展望
by
CRI Japan, Inc.
PDF
2025→2026宙畑ゆく年くる年レポート_100社を超える企業アンケート総まとめ!!_企業まとめ_1229_3版
by
sorabatake
Reiwa 7 IT Strategist Afternoon I Question-1 3C Analysis
by
akipii ogaoga
100年後の知財業界-生成AIスライドアドリブプレゼン イーパテントYouTube配信
by
e-Patent Co., Ltd.
ddevについて .
by
iPride Co., Ltd.
さくらインターネットの今 法林リージョン:さくらのAIとか GPUとかイベントとか 〜2026年もバク進します!〜
by
法林浩之
Drupal Recipes 解説 .
by
iPride Co., Ltd.
Reiwa 7 IT Strategist Afternoon I Question-1 Ansoff's Growth Vector
by
akipii ogaoga
第21回 Gen AI 勉強会「NotebookLMで60ページ超の スライドを作成してみた」
by
嶋 是一 (Yoshikazu SHIMA)
Starlink Direct-to-Cell (D2C) 技術の概要と将来の展望
by
CRI Japan, Inc.
2025→2026宙畑ゆく年くる年レポート_100社を超える企業アンケート総まとめ!!_企業まとめ_1229_3版
by
sorabatake
Hacking demonstration 2018
1.
ハッキング実演 2018 平木 康傑
2.
はじめまして • 平木と申します • 普段は趣味で競技プログラミングをしています •
IOI(国際情報オリンピック)という数学オリンピックの親戚がある • 今年は日本で開催 • IAちゃんが歌うよ! • 高3のプロが日本代表に選ばれました • 僕も2軍として戦力外から国際大会に参加します
3.
何をするの • 今回は脆弱な暗号化を破ります • 脆弱(ぜいじゃく):
安全でない,もろい • 結構ヤバい代物ですが,実は小学生でも理解できます • 去年を反省して分かりやすさを心がけています
4.
何をするの • 本来はブロッキングに関連したやつ(こっちも結構ヤバい)をするつもりだった • 何度やっても再現できなかったのでLTに回した •
CombNada見てね
5.
はじまりはじまり • 背景がきれい
6.
旅路の地図 • 後で書く
7.
よく見るアレ • 見たことありますか? ↑この緑のやつ↑
8.
通信 • ブラウザ君(クライアント)とサーバ君が文通をしている
9.
通信 • ブラウザ君(クライアント)とサーバ君が文通をしている • ク「やっほ^^」
10.
通信 • ブラウザ君(クライアント)とサーバ君が文通をしている • ク「やっほ^^」 •
サ「ん,あんたか」
11.
通信 • ブラウザ君(クライアント)とサーバ君が文通をしている • ク「やっほ^^」 •
サ「ん,あんたか」 • ク「サーバ君,早速だけどそっちのページ見せて?おいしいクッキーあげるから」
12.
通信 • ブラウザ君(クライアント)とサーバ君が文通をしている • ク「やっほ^^」 •
サ「ん,あんたか」 • ク「サーバ君,早速だけどそっちのページ見せて?おいしいクッキーあげるから」 • サ「はいはい.これだよ: (コンテンツ)」
13.
通信 • ブラウザ君(クライアント)とサーバ君が文通をしている • ク「やっほ^^」 •
サ「ん,あんたか」 • ク「サーバ君,早速だけどそっちのページ見せて?おいしいクッキーあげるから」 • サ「はいはい.これだよ: (コンテンツ)」 • 変態郵便屋 (へぇ~…)
14.
通信 • ブラウザ君(クライアント)とサーバ君が文通をしている • ク「やっほ^^」 •
サ「ん,あんたか」 • ク「サーバ君,早速だけどそっちのページ見せて?おいしいクッキーあげるから」 • サ「はいはい.これだよ: (コンテンツ)」 • 変態郵便屋 (へぇ~…) • 覗かれる!
15.
通信 • ブラウザ君(クライアント)とサーバ君が文通をしている • ク「はい,手作りクッキー!サーバ君にあげる!」
16.
通信 • ブラウザ君(クライアント)とサーバ君が文通をしている • ク「はい,手作りクッキー!サーバ君にあげる!」 •
変態郵便屋 (やっぱり恋する乙女のクッキーは美味いな)
17.
通信 • ブラウザ君(クライアント)とサーバ君が文通をしている • ク「はい,手作りクッキー!サーバ君にあげる!」 •
変態郵便屋 (やっぱり恋する乙女のクッキーは美味いな) • 変態郵便屋 (しまった,つい…そうだ!偽の手紙を用意しよう…)
18.
通信 • ブラウザ君(クライアント)とサーバ君が文通をしている • ク「はい,手作りクッキー!サーバ君にあげる!」 •
変態郵便屋 (やっぱり恋する乙女のクッキーは美味いな) • 変態郵便屋 (しまった,つい…そうだ!偽の手紙を用意しよう…) • ク(偽)『ごめん…家が燃えちゃった…クッキーはまた今度ね…』
19.
通信 • ブラウザ君(クライアント)とサーバ君が文通をしている • ク「はい,手作りクッキー!サーバ君にあげる!」 •
変態郵便屋 (やっぱり恋する乙女のクッキーは美味いな) • 変態郵便屋 (しまった,つい…そうだ!偽の手紙を用意しよう…) • ク(偽)『ごめん…家が燃えちゃった…クッキーはまた今度ね…』 • サ「は?」
20.
通信 • ブラウザ君(クライアント)とサーバ君が文通をしている • ク「はい,手作りクッキー!サーバ君にあげる!」 •
変態郵便屋 (やっぱり恋する乙女のクッキーは美味いな) • 変態郵便屋 (しまった,つい…そうだ!偽の手紙を用意しよう…) • ク(偽)『ごめん…家が燃えちゃった…クッキーはまた今度ね…』 • サ「は?」 • 内容をいじられる! • これを改竄(かいざん)といいます
21.
SSL/TLS • 悪いやつから文通の内容を守りたい • そこで暗号化をする •
厳密には本人確認もいるけどそこは今回の話の本質ではない • 鍵を用意して,それで暗号化しながら通信を行う • 『サマーウォーズ』でも出てきたRSA暗号はここや本人確認でよく使われる
22.
SSL/TLS • 悪いやつから文通の内容を守りたい • そこで暗号化をする •
厳密には本人確認もいるけどそこは今回の話の本質ではない • 鍵を用意して,それで暗号化しながら通信を行う • 『サマーウォーズ』でも出てきたRSA暗号はここや本人確認でよく使われる • 暗号化のプロトコル(仕組み)がSSL/TLS
23.
あなたはだあれ • Webサイトが,ログインしたことを覚えてくれていることがあります • YouTubeとか •
どうやって覚えてるんだろう?
24.
あなたはだあれ • Webサイトが,ログインしたことを覚えてくれていることがあります • YouTubeとか •
どうやって覚えてるんだろう? • Cookieやセッションというものがある
25.
COOKIE? セッション? 画像出典: ぱくたそ
26.
COOKIE • ユーザがどんな情報に興味があるのかを調べるために,ページへのアクセス回数を記録 したいとします ブラウザ サーバ
27.
COOKIE • ユーザがどんな情報に興味があるのかを調べるために,ページへのアクセス回数を記録 したいとします • 初めてアクセスした時に… ブラウザ
サーバ
28.
COOKIE • ユーザがどんな情報に興味があるのかを調べるために,ページへのアクセス回数を記録 したいとします • 初めてアクセスした時に サーバが”1回目”という情報を発行し,ブラウザに送信して覚えさせる ブラウザ
サーバ 1回目 1回目(Cookie)
29.
COOKIE • ユーザがどんな情報に興味があるのかを調べるために,ページへのアクセス回数を記録 したいとします • 初めてアクセスした時に サーバが”1回目”という情報を発行し,ブラウザに送信して覚えさせる •
2回目以降はブラウザが既に情報を持っているので,それをサーバに送信 ブラウザ サーバ 42回目 42回目(Cookie)
30.
COOKIE • ユーザがどんな情報に興味があるのかを調べるために,ページへのアクセス回数を記録 したいとします • 初めてアクセスした時に サーバが”1回目”という情報を発行し,ブラウザに送信して覚えさせる •
2回目以降はブラウザが既に情報を持っているので,それをサーバに送信 サーバはそれをもとに,新しく情報を発行してブラウザに渡す ブラウザ サーバ 43回目 43回目(Cookie) 42回目(Cookie)
31.
COOKIE • Cookieはサーバが発行してブラウザが記録する情報 • “回数:
43”といったようにキーと値のペアで保持する • これはSessionも同様 ブラウザ サーバ 43回目 43回目(Cookie) 42回目(Cookie)
32.
SESSION • ログインしている間,本人確認をしないといけない • ユーザ名とパスワードを一々送っていては面倒だし危険 ブラウザ
サーバ User: Nada-taro, Password: 1nf|n!+y8
33.
SESSION • ログインしている間,本人確認をしないといけない • ユーザ名とパスワードを一々送っていては面倒だし危険 •
そこでユーザに対応するSession IDを発行する ブラウザ サーバ User: Nada-taro, Password: 1nf|n!+y8 538b2df7 -> Nada-taro
34.
SESSION • ログインしている間,本人確認をしないといけない • ユーザ名とパスワードを一々送っていては面倒だし危険 •
そこでユーザに対応するSession IDを発行し,割り振られた本人側に送る ブラウザ サーバ User: Nada-taro, Password: 1nf|n!+y8 SessionID: 538b2df7 538b2df7 -> Nada-taro538b2df7
35.
SESSION • ログインしている間,本人確認をしないといけない • ユーザ名とパスワードを一々送っていては面倒だし危険 •
そこでユーザに対応するSession IDを発行し,割り振られた本人側に送る • ブラウザはSession IDを使用期限の短いCookieとして記録し,ログイン情報として使う ブラウザ サーバ I am 538b2df7. ChangePassword: steamisfun Successfully changed. 538b2df7 -> Nada-taro538b2df7
36.
SESSION • ログインしている間,本人確認をしないといけない • ユーザ名とパスワードを一々送っていては面倒だし危険 •
そこでユーザに対応するSession IDを発行し,割り振られた本人側に送る • ブラウザはSession IDを使用期限の短いCookieとして記録し,ログイン情報として使う • Session IDを知らないと本人確認をパスできない! 悪いやつ サーバ I am 11451419. ChangePassword: 12345678 F*ck you. 538b2df7 -> Nada-taroSessionIDを知らない
37.
SESSION • Cookieと違って,Sessionはサーバが発行してサーバが記録する • クライアントごとに割り振られたSessionIDを, 寿命の短いCookieとしてブラウザ側で保存 ブラウザ
サーバ I am 538b2df7. ChangePassword: steamisfun Successfully changed. 538b2df7 -> Nada-taro538b2df7
38.
SSL/TLSの説明に入る • その前に
39.
データ→バイト列 • コンピュータ上で,データは2進法での数値や数値列(=「バイト列」)として扱われる • 文章,音声,画像,動画,プログラム,あらゆるファイル •
2進法での1桁を1bitという • 2進法での8桁=8bitを,1byteとする • 厳密さのためにoctetということも多いです • 1byteのデータは00~FF (0~255)の範囲にある,28 = 256個の整数を表せる • 1byteのデータを並べた列を「バイト列」という • 8つ並べたら「長さ8のバイト列」 10110101 ↑1bit ↑ 8bit = 1byte ↑ F8 04 8C 9A DE AD BE EF ↑8bit
40.
XOR (排他的論理和) • XORという演算がある •
足し算を改造した感じのやつ • 結構うれしい性質を持つ • こいつが足し算だ!!!!→ 1 0 1 1 0 1 0 1 1 0 0 1 1 1 0 1 0 1 0 1 0 0 1 0 +
41.
XOR (排他的論理和) • XORという演算がある •
足し算を改造した感じのやつ • 結構うれしい性質を持つ • こいつが足し算だ!!!!→ 1 0 1 1 0 1 0 1 1 0 0 1 1 1 0 1 0 1 0 1 0 0 1 0 +
42.
XOR (排他的論理和) • XORという演算がある •
足し算を改造した感じのやつ • 結構うれしい性質を持つ • こいつが足し算だ!!!!→ • かわいそう 1 0 1 1 0 1 0 1 1 0 0 1 1 1 0 1 0 1 0 1 0 0 1 0 +
43.
XOR (排他的論理和) • XORという演算がある • •
こいつがXORだ!!!!→ 1 0 1 1 0 1 0 1 1 0 0 1 1 1 0 1 0 0 1 0 1 0 0 0 ⊕
44.
XOR (排他的論理和) • XORという演算がある •
足し算には繰り上がりがあったが, XORでは繰り上がりを無視する • こいつがXORだ!!!!→ 1 0 1 1 0 1 0 1 1 0 0 1 1 1 0 1 0 0 1 0 1 0 0 0 ⊕
45.
XOR (排他的論理和) • XORという演算がある •
足し算には繰り上がりがあったが, XORでは繰り上がりを無視する • こいつがXORだ!!!!→ • もっと簡単に言うと, 同じ桁は0に,違う桁は1になる 1 0 1 1 0 1 0 1 1 0 0 1 1 1 0 1 0 0 1 0 1 0 0 0 ⊕
46.
XOR (排他的論理和) • XORという演算がある •
足し算には繰り上がりがあったが, XORでは繰り上がりを無視する • こいつがXORだ!!!!→ • もっと簡単に言うと, 同じ桁は0に,違う桁は1になる • 桁溢れも起きない 1 0 1 1 0 1 0 1 1 0 0 1 1 1 0 1 0 0 1 0 1 0 0 0 ⊕
47.
XORのうれしい性質 • A⊕(B⊕C) =
(A⊕B)⊕C …結合法則 • A⊕B = B⊕A …交換法則 • A⊕A = 0 • 足し算みたいな感覚で扱える • [ ] ⊕ A = Bの形の式から[ ]を逆算できる 1 0 1 1 0 1 0 1 1 0 0 1 1 1 0 1 0 0 1 0 1 0 0 0 ⊕
48.
LET’S ENCRYPT! • やっと本題 •
ここではSSL3.0について話します
49.
ブロック暗号 • 共有鍵暗号方式のひとつ • 暗号はこれと公開鍵暗号に大別される •
共有鍵暗号はこれとストリーム暗号に大別される • AESが有名 • 入力が特定の桁数(AESなら128bit)で固定,鍵の長さにも制約あり • 今回は深くは触れません
50.
入力の長さ • 当然世の中の通信が全部128bitの長さというわけにはいかない(大抵はもっと長い) • じゃあどうする?
51.
入力の長さ • 当然世の中の通信が全部128bitの長さというわけにはいかない(大抵はもっと長い) • じゃあどうする? •
分割すればいい!
52.
暗号利用モード • 平文を128bitごとのブロックに分割する • 足りない部分は”パディング”(詰め物)で埋める •
これらのブロックをどう扱うかの方法を「暗号利用モード」という 平文 ブロック ブロック ブロック ブ ロック
53.
暗号利用モード • 平文を128bitごとのブロックに分割する • 足りない部分は”パディング”(詰め物)で埋める •
これらのブロックをどう扱うかの方法を「暗号利用モード」という • SSL3.0のブロック暗号ではCBC方式というものが使われる 平文 ブロック ブロック ブロック ブ ロック
54.
準備はOK? • ついてこれた? • ここからが肝心
55.
最も単純な方式(ECB方式) • 皆さんの中にも 思いついた方がいると 思います • 同じブロックを 暗号化すると 常に同じ結果になる •
使うべきでない 暗号化 CIPHER 3 PLAIN 3 暗号化 CIPHER 2 PLAIN 2 暗号化 CIPHER 1 PLAIN 1
56.
CBC方式 • 1976年にIBMが開発 暗号化 CIPHER 3 PLAIN
3 XOR 暗号化 CIPHER 2 PLAIN 2 XOR 暗号化 CIPHER 1 PLAIN 1 XOR IV
57.
CBC方式 • 1976年にIBMが開発 • 平文ブロックに 「直前の暗号ブロック」とXORしてから 暗号化にかける •
同じブロックでも違う結果になるので より安全 暗号化 CIPHER 2 PLAIN 2 XOR CIPHER 1
58.
CBC方式 • 1976年にIBMが開発 • 平文ブロックに 「直前の暗号ブロック」とXORしてから 暗号化にかける •
同じブロックでも違う結果になるので より安全 • 最初のブロックではランダムに生成した ブロック(IV) を XORのために使う 暗号化 CIPHER 1 PLAIN 1 XOR IV
59.
CBC方式の復号 • 暗号ブロックを復号した後, 「直前の暗号ブロック」とXORする • 要はさっきの逆をするだけ •
かんたん CIPHER 1 復号 CIPHER 2 PLAIN 2 XOR
60.
SSL3.0の弱かったところ • SSL3.0ちゃんはドジっ子なので今までも様々なヤバい脆弱性を指摘されてきた • 野獣に喰われたり(BEAST,
2011年)悪魔に憑かれたり(Lucky Thirteen, 2013年) • なんとか対策してきたが,POODLE攻撃(2014.10.14)で遂にとどめを刺された • 突かれた穴は「パディングの正当性を判断する方法が雑だった」
61.
パディングの詰め方 • パディングは必ず1byte以上入れる • パディング長を入れなければならないため •
平文の末尾に,長さがブロック長の倍数になるようにつける 平文 ブロック ブ ロック ブロック
62.
パディングの詰め方 • パディングは必ず1byte以上入れる • パディング長を入れなければならないため •
平文の末尾に,長さがブロック長の倍数になるようにつける • →つまり,平文がブロック長の倍数ちょうどであれば, パディングのみのブロックが出来る 平文 ブロック ブロック ブロック ブロック
63.
パディングの詰め方 • パディングは必ず1byte以上入れる • パディング長を入れなければならないため •
平文の末尾に,長さがブロック長の倍数になるようにつける • →つまり,平文がブロック長の倍数ちょうどであれば, パディングのみのブロックが出来る • パディングの値は,各1byteがパディングの長さを表す値で, SSL3.0では末尾1byteだけしかチェックされない 平文 ブロック ブ ロック パディングの長さが9ならば, パディングの各byteの値は9-1=8 ブロック
64.
考えてみよう • みんなも SSL3.0を 破ってみよう 復号 CIPHER 2 PLAIN
2 XOR 復号 CIPHER 1 PLAIN 1 XOR 復号 CIPHER 3 PLAIN 3 XOR IV
65.
POODLE攻撃が成立する前提条件 • 標的となるクライアントを,攻撃者の指定したURLに誘導できる • 暗号文の正当性(=パディングの正当性)を確認した結果(OKかNGか)を知れる •
解読結果が分かる必要はない • SSL3.0を使っている TLS1.0も実装によっては該当,TLS1.1以降は大丈夫 • 大体こんな感じ
66.
ヒント • https://example.net/distribute?name=Mr.+Test&message=Howdy%21 • こういうURLに誘導することを考える •
右図は通信内容(の平文)の例 • 背景色: 赤(&濃い青)がクライアントのリクエスト • その中にある濃い青の部分がCookie • 上の赤枠と下の緑枠がそれぞれURLの赤/緑に対応 • 何が言いたいかというと, Cookieの位置や平文の長さを調整できる ↓ →
67.
というわけで • リクエストを1文字ずつずらして,パディングonlyのブロックを作らせました • 攻撃者にはCIPHER側だけが分かる 復号 CIPHER
P PADDING XOR CIPHER 9
68.
というわけで • リクエストを1文字ずつずらして,パディングonlyのブロックを作らせました • 攻撃者にはCIPHER側だけが分かる •
解読したい暗号ブロックで末尾を置換して送り,復号させる 復号 CIPHER 3 PADDING XOR CIPHER 9 ↓置き換えた
69.
というわけで • リクエストを1文字ずつずらして,パディングonlyのブロックを作らせました • 攻撃者にはCIPHER側だけが分かる •
解読したい暗号ブロックで末尾を置換して送り,復号させる • もしパディングが正当と判断されれば, その瞬間にとある1byteが解読できます 復号 CIPHER 3 PADDING XOR CIPHER 9
70.
というわけで • 末尾が分かっているブロックを黄色の枠で示します • 解読したいブロックそのものの末尾1byteは 実は不要なので無視します 復号 CIPHER
3 PADDING XOR CIPHER 9
71.
というわけで • 末尾が分かっているブロックを黄色の枠で示します • 解読したいブロックそのものの末尾1byteは 実は不要なので無視します •
むしろ必要なのは PADDING 復号 CIPHER 3 XOR CIPHER 9
72.
というわけで • 末尾が分かっているブロックを黄色の枠で示します • 解読したいブロックそのものの末尾1byteは 実は不要なので無視します •
むしろ必要なのはこっち PADDING 復号 CIPHER 3 XOR CIPHER 9 DECRYPT
73.
というわけで • 末尾が分かっているブロックを黄色の枠で示します • 解読したいブロックそのものの末尾1byteは 実は必要ではありません •
むしろ必要なのはこっち • XORは1byteごとに計算できます(定義を思い出そう) • XORは逆算が可能なので,暗号ブロックの復号直後の末尾1byteがわかる PADDING 復号 CIPHER 3 XOR CIPHER 9 DECRYPT
74.
というわけで • 末尾が分かっているブロックを黄色の枠で示します • へぇ~ 復号 CIPHER
3 DECRYPT
75.
というわけで • 末尾が分かっているブロックを黄色の枠で示します • あれ? PLAIN
3 復号 CIPHER 3 XOR CIPHER 2 DECRYPT
76.
というわけで • 末尾が分かっているブロックを黄色の枠で示します • あれれ? PLAIN
3 復号 CIPHER 3 XOR CIPHER 2 DECRYPT
77.
というわけで • 末尾が分かっているブロックを黄色の枠で示します • あれれれ? PLAIN
3 復号 CIPHER 3 XOR CIPHER 2 DECRYPT
78.
というわけで • 末尾が分かっているブロックを黄色の枠で示します • あれれれ? PLAIN
3
79.
というわけで • 末尾が分かっているブロックを黄色の枠で示します • あれれれ? PLAIN
3
80.
確率はどうなるの • リクエストごとにIVもKeyもランダムに変わります • 各暗号ブロックもランダムになると考えてよいです •
ということで,書き換え後の 最終ブロックの復号結果もランダムと考えられます • SSL3.0の脆弱性より,末尾1byteが合致すればよいので, 確率は平均して1/256 (1byteの取り得る値は256通り)です • つまり平均256回で1byte解読できる • ヤバい 復号 CIPHER 3 PADDING XOR CIPHER 9
81.
他のBYTEはどうなるの • URLを変えることで,長さを維持したまま1byteずつずらせる • なので任意のbyteをブロックの末尾に持って来ることが出来る •
これによってCookieを含む多くの部分を解読することができ, 攻撃者はセッションIDを使ってなりすましに成功する • こわいね
82.
実演 • 1byteあたり平均256回ほどのリクエストで解読できるでしょう • 誰か適当にパスフレーズを打ち込んでみて下さい
83.
対策 • TLS1.0以降ではパディング全体を調べることで防止している • 中間者攻撃でSSL3.0にダウングレードさせられる恐れがあるため, SSL3.0は無効にしなければならない(今のブラウザはみんなそうしているはず) •
人間は万能じゃないので,現行のTLS(に限らず様々な仕組み)に新たな脆弱性が 見つかる可能性も十分にあります • そのうち見つかると思う • 被害に遭わないためにもアップグレードは積極的に行いましょう
84.
FINALE • どうでしたか? • 小学生でも理解できるよう噛み砕いて説明したつもりです •
内容に関してよくわからなかったところとかはありますか • 遠慮せず聞いてください
Download