ssl で守られる生活

96
2015年春合宿 SSLで守られる生

Upload: -

Post on 16-Jul-2015

12.159 views

Category:

Self Improvement


0 download

TRANSCRIPT

Page 1: SSL で守られる生活

2015年春合宿

SSLで守られる生活

Page 2: SSL で守られる生活

自己紹介

ID: nona7

KMC二回生KMCでの主な活動:

● サーバの管理とか● こたつでだらだら● Slack の全チャンネルに入ったりとか

Page 3: SSL で守られる生活

このスライドの目的

● いつも身を守ってくれている物のうち、おそ

らく一番身近であるSSLについて紹介します。

● また、その恩恵をきちんと受ける為注意し

ないといけない事を notify します。

Page 4: SSL で守られる生活

注意

● このスライド中に間違いが存在するかもしれません。o 自分のセキュリティは自分で確保するしかありません。

o クリティカルなことは自分で確認して下さい。

● 常に悪意のある攻撃者を想定するのはコストが高くつきます。o 扱っている情報のたいせつさによって適切な判断をしましょう。

Page 5: SSL で守られる生活

はじまるよ

Page 6: SSL で守られる生活

私達は監視されている!!

Page 7: SSL で守られる生活
Page 8: SSL で守られる生活

私達は監視されている

Page 9: SSL で守られる生活

私達は監視されている

● NSA

Page 10: SSL で守られる生活

私達は監視されている

● NSA

● プロバイダ

Page 11: SSL で守られる生活

私達は監視されている

● NSA

● プロバイダ● 公衆無線LANに偽装した攻撃者

Page 12: SSL で守られる生活

私達は監視されている

● NSA

● プロバイダ● 公衆無線LANに偽装した攻撃者● あなたの家族

Page 13: SSL で守られる生活

私達は監視されている

● NSA

● プロバイダ● 公衆無線LANに偽装した攻撃者● あなたの家族● あなたのサークルの管理者

Page 14: SSL で守られる生活

NSA

● アメリカ国家安全保障局● “エシュロン”などを運用し、アメリカの外の通信を傍受しているとされる。

● 電子メール、データ通信、音声通話等、様々な通信を傍受しているとされる。

● 私達一般市民の通信に興味はない?o が、大量の一般市民の通信から何か意味を見出しているかもしれない。

Page 15: SSL で守られる生活

プロバイダ

通信がここを通るので、おさえられた時のダメージは大きい。

Page 16: SSL で守られる生活

公衆無線LANに偽装した攻撃者

それっぽい SSID にして電波を飛ばしていたらつないでくる人がいるでしょう。その通信を監視しておけば何か意味のある情報がそこを通るかもしれません。

Page 17: SSL で守られる生活

あなたの家族

あなたの家族があなたより十分詳しければ、あなたがどのようなサイトにアクセスしているか等の情報を監視しているかもしれません。家族であれば、あなたが十分な知識を持っていなければ、あなたの認証情報を盗むことも可能かもしれません。

Page 18: SSL で守られる生活

あなたのサークルの計算機管理者

Page 19: SSL で守られる生活

あなたのサークルの計算機管理者

● あなたが自分の認証情報を送信したりするときに、全く注意を払っていないのなら、技術的にはそれを盗むことは可能でしょう。

● ある日突然宇宙からの意思を受信し、攻撃しようと思っても、あなたが十分注意を払っていれば、攻撃することは困難となるでしょう。

Page 20: SSL で守られる生活

そもそもつらい。

● プロバイダ、家族やサークルの管理人が信頼できないモデルを考えるの辛すぎる。

● 攻撃の可能性と扱う情報の価値によってどこまで考えるかちゃんと選びましょう!!o 身近な人にパスワード漏れたほうがすぐに表われるダメージ大きいですよ。

● ある日突然攻撃されても安全なようにしておきたい。

Page 21: SSL で守られる生活

たとえばありそうなケース

Page 22: SSL で守られる生活

たとえばありそうなケース

Page 23: SSL で守られる生活

ログインしたい。

Page 24: SSL で守られる生活

ログインしたい。

Page 25: SSL で守られる生活

飛ぶリクエスト

Page 26: SSL で守られる生活

飛ぶリクエスト

Page 27: SSL で守られる生活

SSLは私達を救う

● 様々な攻撃者がいろいろなところに存在する インターネットの中で私達を守る技術の一つ。

● 気づかないうちにお世話になっている。

Page 28: SSL で守られる生活

SSLとは?

● Secure Sockets Layer の略。● 主として TCP 上で安全な通信経路を確保するプロトコル。

● 通信相手の認証、通信内容の暗号化、改ざんの検出などの機能が提供されている。

Page 29: SSL で守られる生活
Page 30: SSL で守られる生活
Page 31: SSL で守られる生活

証明書

● X.509 証明書● 「私はこの人から信用されています!」を表す。

● 信頼してる人を上に辿っていって、自分が信頼している人が見つかれば、その人は信頼できるとする。

● SSLクライアント(ブラウザとか) は信頼できる人リストを持っている。

Page 32: SSL で守られる生活

証明書

● 証明書を発行できるのは特殊な証明書を持

った人のみ。(この証明書を発行できる人、機

関を CA と呼ぶ。)

● CAは全幅の信頼が置け、決して攻撃者でないことを SSL では仮定している。

● ⇒正しい証明書を持っているなら正しい相手であるということになっている。

Page 33: SSL で守られる生活

SSL? HTTPS?

● HTTPS は SSL の上で HTTP 通信を行う。● SSL は上で HTTP 以外のプロトコルも通すことができる。o FTPS(SFTP)

o SMTPS

o IMAPS

o POP over SSL

o 等、様々なものが SSL の上を通っている。

Page 34: SSL で守られる生活

SSL の歴史

● SSL 1.0 o 作成段階で致命的な脆弱性が見つかり実装されず。

● SSL 2.0o 攻撃を回避不能な脆弱性が発見され、既に廃止。

● SSL 3.0o 1995年に仕様が策定。o IE 6 で HTTPS の通信ができる最新のSSL

Page 35: SSL で守られる生活

SSL の歴史

● TLS 1.0o SSL 3.0 のマイナーチェンジ的立ち位置とされる。o 4.3 までの Android はここまで。

● TLS 1.1o 1.1 に対応しているようなものは大抵 1.2 まで対応している。

● TLS 1.2o 現在の最新版

Page 36: SSL で守られる生活

SSL was dead.

● 2014年10月● Google によって発見された CVE-2014-

3566

● POODLE attack

● SSL 3.0 の仕様に存在する中間者攻撃に対する脆弱性。

● SSL 3.0 を無効にするよう勧告が出る。o SSL 3.0 までした対応していない IE 6 は死んだ。

Page 37: SSL で守られる生活

あたらしい TLS の話

今までこのスライドでも SSL、SSL と言って来ましたが、SSL は死にました。これからはきちんと TLS と呼んでいきましょう。

Page 38: SSL で守られる生活

How it works?

TLS がどのように安全な通信経路を確保しているか、簡単に説明していきます。

Page 39: SSL で守られる生活

TLS の通信の進み方Client Server

Page 40: SSL で守られる生活

TLS の通信の進み方Client Server

ClientHello

Page 41: SSL で守られる生活

TLS の通信の進み方Client Server

ClientHello

ServerHello

Page 42: SSL で守られる生活

TLS の通信の進み方Client Server

ClientHello

ServerHello

Certificate

Page 43: SSL で守られる生活

TLS の通信の進み方Client Server

ClientHello

ServerHello

Certificate

SrvHelDone

Page 44: SSL で守られる生活

TLS の通信の進み方Client Server

ClientHello

ServerHello

Certificate

ClientKeyEx

SrvHelDone

Page 45: SSL で守られる生活

TLS の通信の進み方Client Server

ClientHello

ServerHello

Certificate

ClientKeyEx

CCS/Finishd

SrvHelDone

Page 46: SSL で守られる生活

TLS の通信の進み方Client Server

ClientHello

ServerHello

Certificate

ClientKeyEx

CCS/Finishd

CCS/Finishd

SrvHelDone

Page 47: SSL で守られる生活

めでたしめでたし

これによりクライアントとサーバの間に安全な通信経路ができたことになった気がします。

Page 48: SSL で守られる生活

めでたしめでたし

これによりクライアントとサーバの間に安全な通信経路ができたことになった気がします。

本当でしょうか。

Page 49: SSL で守られる生活
Page 50: SSL で守られる生活

私達は監視されている!!

Page 51: SSL で守られる生活

はい

Client Hello, Server Hello, Client KeyExchange

で交わされた3つの乱数がもれない限りはさっきの手順に問題は無いです。

Page 52: SSL で守られる生活

はい

Client Hello, Server Hello, Client KeyExchange

で交わされた3つの乱数がもれない限りはさっきの手順に問題は無いです。

2つのHello によって交わされた乱数は特に暗号化されて送信しているわけではなかったので、監視者には筒抜けです。

Page 53: SSL で守られる生活

はい

頼みの綱は実質 Client KeyExchange で渡された乱数だけです。

Page 54: SSL で守られる生活

はい

頼みの綱は実質 Client KeyExchange で渡された乱数だけです。この乱数は48バイトの長さを持ちます。

Page 55: SSL で守られる生活

はい

頼みの綱は実質 Client KeyExchange で渡された乱数だけです。この乱数は48バイトの長さを持ちます。全探索とかで頑張るには辛いです。

Page 56: SSL で守られる生活

はい

頼みの綱は実質 Client KeyExchange で渡された乱数だけです。この乱数は48バイトの長さを持ちます。全探索とかで頑張るには辛いです。じゃあ安全では。

Page 57: SSL で守られる生活

はい

サーバの公開鍵で暗号化して送信してるので、サーバの秘密鍵が安全なうちは安全です。

Page 58: SSL で守られる生活

はい

サーバの公開鍵で暗号化して送信してるので、サーバの秘密鍵が安全なうちは安全です。

Page 59: SSL で守られる生活

はい

サーバの公開鍵で暗号化して送信してるので、サーバの秘密鍵が安全なうちは安全です。

サーバの秘密鍵は時々漏れる。

Page 60: SSL で守られる生活

はい

サーバの公開鍵で暗号化して送信してるので、サーバの秘密鍵が安全なうちは安全です。

サーバの秘密鍵は時々漏れる。クライアントとサーバの間の通信を全部保存しておけば、秘密鍵が手に入ったら復号化すればいい。

Page 61: SSL で守られる生活

秘密鍵の漏れるとき。

● 不適切な設定

Page 62: SSL で守られる生活

秘密鍵の漏れるとき。

● 不適切な設定● 不適切なサーバの廃棄

Page 63: SSL で守られる生活

秘密鍵の漏れるとき。

● 不適切な設定● 不適切なサーバの廃棄● サーバの脆弱性とか

Page 64: SSL で守られる生活

秘密鍵の漏れるとき。

● 不適切な設定● 不適切なサーバの廃棄● サーバの脆弱性とか

o Heartbleed !!

Page 65: SSL で守られる生活

heartbleed

● 2014年4月● 世界で一番使われている暗号化ライブラリである OpenSSL に秘密鍵が漏れたりするバグが二年ほど前からあったことが発表される。

● 全然使われていない、SSL ハートビート拡張なる所にメモリの境界チェック漏れが存在していた。

Page 66: SSL で守られる生活

heartbleed

● サーバからは正常なリクエストに見えるが、一回あたり最大65535バイトづつメモリの内容が漏れる。

● NSA はこの脆弱性を知っていたが、公表せずに、諜報に利用していたとされている。

Page 67: SSL で守られる生活

つらすぎる

秘密鍵が漏れても、過去の通信が復元されたりしなくて、新しい秘密鍵と証明書に変える必要があるだけにならないものか。

Page 68: SSL で守られる生活

つらすぎる

秘密鍵が漏れても、過去の通信が復元されたりしなくて、新しい秘密鍵と証明書に変える必要があるだけにならないものか。

⇒ FS

Page 69: SSL で守られる生活

Forward Secrecy

秘密鍵が漏れても過去の通信を復元できないような性質のこと。

TLS の範囲では以下の二つが該当する。● DHE

● ECDHE

Page 70: SSL で守られる生活

● ディフィー・ヘルマンの頭文字。● DHE の E はエフェメラルのEで、永続的な鍵を持たないとこを表す。

● お互い何も共通の秘密を持たなくても、暗号鍵の共有を可能とするアルゴリズム。

DH

Page 71: SSL で守られる生活

簡単な DH の説明

● 大きな素数p と、2以上p-1以下の数gを共有し、クライアントとサーバはそれぞれ0以上p-2

以下の数をランダムに選ぶ(それぞれa,bとする)。

● クライアントは A=g^a % p を、サーバはB=g^b % p をそれぞれ相手に送る(% は剰余関数)(これが公開鍵)。

● それぞれB^a%p, A^b%pを考えると、どちらもg^ab % p となっている。

Page 72: SSL で守られる生活

簡単な DH の説明

ネットワークを通る数は A(= g^a)%p、B(=g^b)%pのみで、この二つのみから g^ab%p

を求めたり、A から a を求めようとすることは、離散対数問題となり、多項式時間で解く方法は見つかっていない。

Page 73: SSL で守られる生活

DHE

DH をさらに、公開鍵をセッションごとに生成し、秘密鍵が漏れても、そのセッション以外は危険とならないようにしたもの。

Page 74: SSL で守られる生活

ECDH

● 楕円曲線ディフィー・ヘルマンの頭文字。● ECDHE の E はエフェメラルのEで(ry

● DH と同じようなことを楕円曲線上の演算でやってるらしい。

● 楕円曲線とか言われてもよくわからない。● DH よりも更に解くのが難しい?(DH より優先して使われる設定となってることが多い)

Page 75: SSL で守られる生活

TLSの通信の進み方(再掲)Client Server

ClientHello

ServerHello

Certificate

ClientKeyEx

CCS/Finishd

CCS/Finishd

SrvHelDone

Page 76: SSL で守られる生活

TLSの通信の進み方(DH使用)Client Server

ClientHello

ServerHello

Certificate

ClientKeyEx

CCS/Finishd

CCS/Finishd

SrvHelDone

SrvKeyEx

Page 77: SSL で守られる生活

めでたしめでたし

最近はどこと TLS で通信しても ECDHE 使ってる感じですね。

Page 78: SSL で守られる生活

めでたしめでたし

こうして我々は監視から逃れて平穏なインターネットを手に入れたのでした。

Page 79: SSL で守られる生活

で、誰が攻撃してくるの?

utxu……。

Page 80: SSL で守られる生活

で、誰が攻撃してくるの?

utxu……。

いたずらに脅威の存在を煽るのはよくない。

Page 81: SSL で守られる生活

で、誰が攻撃してくるの?

utxu……。

いたずらに脅威の存在を煽るのはよくない。

誰かが攻撃しようと思っても、簡単にできない

のはまぁ大切……。

Page 82: SSL で守られる生活

気をつけよう

● 実は証明書発行局の秘密鍵が漏れていて、"有効な" 証明書がばんばん刷られている。

● 未知の脆弱性により秘密鍵が漏れている。⇒正直どうしようもない。

Page 83: SSL で守られる生活

気をつけよう

● そもそも TLS を使っていない。⇒パスワードを入力する時に確認する。

意外と「SSL はこちら」を押さないと HTTP

で通信しているサイトがまだある……。

Page 84: SSL で守られる生活

SSLはこちら

さすがに最近もうだいぶ減ってきた。

Page 85: SSL で守られる生活

気をつけよう

● 変な証明書を信頼しない。

⇒証明書をインストールするように言われても、それがどういう意味を持つのかわからずにするのは大変危険です。

Page 86: SSL で守られる生活

証明書

証明書をインストールさせようとする怪しいサイト

http://www.e-tax.nta.go.jp/

Page 87: SSL で守られる生活

Superfish

今年2月にレノボのPCに変な証明書がプリインストールされた状態で売られていることが発覚。しかも全てのマシンで同じ秘密鍵を使っており、解析によりその鍵は既に漏れていて、任意の"信頼できる証明書"が誰にでも発行できる状態になっていた。購入時に変な証明書を入れられるのつらすぎる。

Page 88: SSL で守られる生活

気をつけよう

● TLS を処理するライブラリとかがバグってる。

⇒セキュリティアップデートが来たらすぐかけよう。

Page 89: SSL で守られる生活

goto fail

● iOS 7.0.6 以前に存在したバグ。● 証明書の検証するところにバグがあって、不正な証明書でも受け入れるようになっていた。

Page 90: SSL で守られる生活

気をつけよう

● そもそも変なホストにアクセスしていた。

⇒ tvvitter.com の有効な証明書を提示されても、それは Twitter とは関係ないですよ。

Page 91: SSL で守られる生活

まとまらない

ざっと TLS のしくみについて喋ってきました。

とりあえず「SSL はこちら」があればそっちを使うってことだけでも覚えてってください。

Page 92: SSL で守られる生活

ありがとうございました。

Page 93: SSL で守られる生活
Page 94: SSL で守られる生活

未使用領域

Page 95: SSL で守られる生活

HTTP2 で日和見暗号……

日和見暗号(サーバ認証をせずにとりあえず暗号化して通信)

Page 96: SSL で守られる生活

俺たちの戦いはこれからだ!

● PGP/GPG

● Tor

● I2P

● VPN Gate