Submit Search
プロフェッショナルSSL/TLS 1.2章
5 likes
2,875 views
MITSUNARI Shigeo
社内読書会
Technology
Read more
1 of 27
Download now
Downloaded 12 times
1
2
3
4
Most read
5
6
Most read
7
8
Most read
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
More Related Content
PDF
SSL/TLSの基礎と最新動向
shigeki_ohtsu
PDF
TLS 1.3 と 0-RTT のこわ〜い話
Kazuho Oku
PDF
Garbage First Garbage Collection (G1 GC) #jjug_ccc #ccc_cd6
Yuji Kubota
PDF
MQTTとAMQPと.NET
terurou
PDF
初心者向けCTFのWeb分野の強化法
kazkiti
PDF
なかったらINSERTしたいし、あるならロック取りたいやん?
ichirin2501
PDF
僕がつくった 70個のうちの48個のWebサービス達
Yusuke Wada
PDF
JVMのGCアルゴリズムとチューニング
佑哉 廣岡
SSL/TLSの基礎と最新動向
shigeki_ohtsu
TLS 1.3 と 0-RTT のこわ〜い話
Kazuho Oku
Garbage First Garbage Collection (G1 GC) #jjug_ccc #ccc_cd6
Yuji Kubota
MQTTとAMQPと.NET
terurou
初心者向けCTFのWeb分野の強化法
kazkiti
なかったらINSERTしたいし、あるならロック取りたいやん?
ichirin2501
僕がつくった 70個のうちの48個のWebサービス達
Yusuke Wada
JVMのGCアルゴリズムとチューニング
佑哉 廣岡
What's hot
(20)
PDF
実運用して分かったRabbit MQの良いところ・気をつけること #jjug
Yahoo!デベロッパーネットワーク
PDF
大規模サービスを支えるネットワークインフラの全貌
LINE Corporation
PDF
Ruby で高速なプログラムを書く
mametter
PDF
KafkaとAWS Kinesisの比較
Yoshiyasu SAEKI
PDF
TEE (Trusted Execution Environment)は第二の仮想化技術になるか?
Kuniyasu Suzaki
PDF
Native Memory Tracking
Takahiro YAMADA
PPTX
分散システムについて語らせてくれ
Kumazaki Hiroki
PDF
実践イカパケット解析
Yuki Mizuno
PDF
暗認本読書会7
MITSUNARI Shigeo
PDF
TLS, HTTP/2演習
shigeki_ohtsu
PDF
ネットワーク ゲームにおけるTCPとUDPの使い分け
モノビット エンジン
PDF
Apache Kafka 0.11 の Exactly Once Semantics
Yoshiyasu SAEKI
PDF
ストリーム処理を支えるキューイングシステムの選び方
Yoshiyasu SAEKI
PDF
IoT時代におけるストリームデータ処理と急成長の Apache Flink
Takanori Suzuki
PDF
ヤフー社内でやってるMySQLチューニングセミナー大公開
Yahoo!デベロッパーネットワーク
PPTX
DeClang 誕生!Clang ベースのハッキング対策コンパイラ【DeNA TechCon 2020 ライブ配信】
DeNA
PPTX
監査要件を有するシステムに対する PostgreSQL 導入の課題と可能性
Ohyama Masanori
PDF
OpenJDKのコミッタってどんなことしたらなったの?解決してきた技術課題の事例から見えてくる必要な知識と技術(JJUG CCC 2023 Spring)
NTT DATA Technology & Innovation
PDF
パケットキャプチャの勘どころ Ssmjp 201501
稔 小林
PDF
株式会社コロプラ『GKE と Cloud Spanner が躍動するドラゴンクエストウォーク』第 9 回 Google Cloud INSIDE Game...
Google Cloud Platform - Japan
実運用して分かったRabbit MQの良いところ・気をつけること #jjug
Yahoo!デベロッパーネットワーク
大規模サービスを支えるネットワークインフラの全貌
LINE Corporation
Ruby で高速なプログラムを書く
mametter
KafkaとAWS Kinesisの比較
Yoshiyasu SAEKI
TEE (Trusted Execution Environment)は第二の仮想化技術になるか?
Kuniyasu Suzaki
Native Memory Tracking
Takahiro YAMADA
分散システムについて語らせてくれ
Kumazaki Hiroki
実践イカパケット解析
Yuki Mizuno
暗認本読書会7
MITSUNARI Shigeo
TLS, HTTP/2演習
shigeki_ohtsu
ネットワーク ゲームにおけるTCPとUDPの使い分け
モノビット エンジン
Apache Kafka 0.11 の Exactly Once Semantics
Yoshiyasu SAEKI
ストリーム処理を支えるキューイングシステムの選び方
Yoshiyasu SAEKI
IoT時代におけるストリームデータ処理と急成長の Apache Flink
Takanori Suzuki
ヤフー社内でやってるMySQLチューニングセミナー大公開
Yahoo!デベロッパーネットワーク
DeClang 誕生!Clang ベースのハッキング対策コンパイラ【DeNA TechCon 2020 ライブ配信】
DeNA
監査要件を有するシステムに対する PostgreSQL 導入の課題と可能性
Ohyama Masanori
OpenJDKのコミッタってどんなことしたらなったの?解決してきた技術課題の事例から見えてくる必要な知識と技術(JJUG CCC 2023 Spring)
NTT DATA Technology & Innovation
パケットキャプチャの勘どころ Ssmjp 201501
稔 小林
株式会社コロプラ『GKE と Cloud Spanner が躍動するドラゴンクエストウォーク』第 9 回 Google Cloud INSIDE Game...
Google Cloud Platform - Japan
Ad
Similar to プロフェッショナルSSL/TLS 1.2章
(20)
PDF
#mailerstudy 02 メールと暗号 - SSL/TLS -
Takashi Takizawa
PDF
暗認本読書会10
MITSUNARI Shigeo
PPTX
Professional SSL/TLS Reading Chapter 14
Shogo Hayashi
PDF
OAuthのHolder of Key Token
Yuichi Nakamura
PDF
Jap1
Naveen N
PPT
Professional SSL/TLS Reading Chapter 6
Shogo Hayashi
PPT
Xml Security
Satoshi Hada
PDF
OpenStack API
Akira Yoshiyama
PDF
WindowsAzureの長所を活かすクラウド アプリ開発(PDF版)
Shinichiro Isago
PDF
Linux 対応だけじゃない!! sql server 2017 こんな機能が追加されています。
Masayuki Ozawa
PPTX
Azure Container Services and Microservices design pattern
Yoshio Terada
PPTX
AWSを学ぶ上で必要となる前提知識(SSL)
聡 大久保
PPTX
Docker 1.12 の衝撃
Yoshinori Teraoka
PPT
1/5 ADFS 2.0 を使用してWindows Azure との SSO を実現しよう v1.1
junichi anno
PDF
最新 .NET テクノロジと次世代型アプリ開発 2013 : DE-011, MSC 2013
Akira Inoue
PPTX
Clrh 110716 wcfwf
Tomoyuki Obi
PDF
Hyperledger Fabric 1.0 概要
LFDT Tokyo Meetup
PDF
Kyoto Tycoon Guide in Japanese
Mikio Hirabayashi
PPTX
これから始める Azure の基礎サービス: IaaS/PaaS
Daiyu Hatakeyama
PDF
オンプレ/クラウド連携と柔軟なストレージで実現する高信頼サービス_Shownet2021 studio 20210416
Interop Tokyo ShowNet NOC Team
#mailerstudy 02 メールと暗号 - SSL/TLS -
Takashi Takizawa
暗認本読書会10
MITSUNARI Shigeo
Professional SSL/TLS Reading Chapter 14
Shogo Hayashi
OAuthのHolder of Key Token
Yuichi Nakamura
Jap1
Naveen N
Professional SSL/TLS Reading Chapter 6
Shogo Hayashi
Xml Security
Satoshi Hada
OpenStack API
Akira Yoshiyama
WindowsAzureの長所を活かすクラウド アプリ開発(PDF版)
Shinichiro Isago
Linux 対応だけじゃない!! sql server 2017 こんな機能が追加されています。
Masayuki Ozawa
Azure Container Services and Microservices design pattern
Yoshio Terada
AWSを学ぶ上で必要となる前提知識(SSL)
聡 大久保
Docker 1.12 の衝撃
Yoshinori Teraoka
1/5 ADFS 2.0 を使用してWindows Azure との SSO を実現しよう v1.1
junichi anno
最新 .NET テクノロジと次世代型アプリ開発 2013 : DE-011, MSC 2013
Akira Inoue
Clrh 110716 wcfwf
Tomoyuki Obi
Hyperledger Fabric 1.0 概要
LFDT Tokyo Meetup
Kyoto Tycoon Guide in Japanese
Mikio Hirabayashi
これから始める Azure の基礎サービス: IaaS/PaaS
Daiyu Hatakeyama
オンプレ/クラウド連携と柔軟なストレージで実現する高信頼サービス_Shownet2021 studio 20210416
Interop Tokyo ShowNet NOC Team
Ad
More from MITSUNARI Shigeo
(20)
PDF
暗号技術の実装と数学
MITSUNARI Shigeo
PDF
範囲証明つき準同型暗号とその対話的プロトコル
MITSUNARI Shigeo
PDF
暗認本読書会13 advanced
MITSUNARI Shigeo
PDF
暗認本読書会12
MITSUNARI Shigeo
PDF
暗認本読書会11
MITSUNARI Shigeo
PDF
暗認本読書会9
MITSUNARI Shigeo
PDF
Intel AVX-512/富岳SVE用SIMDコード生成ライブラリsimdgen
MITSUNARI Shigeo
PDF
暗認本読書会8
MITSUNARI Shigeo
PDF
暗認本読書会6
MITSUNARI Shigeo
PDF
暗認本読書会5
MITSUNARI Shigeo
PDF
暗認本読書会4
MITSUNARI Shigeo
PDF
深層学習フレームワークにおけるIntel CPU/富岳向け最適化法
MITSUNARI Shigeo
PDF
私とOSSの25年
MITSUNARI Shigeo
PDF
WebAssembly向け多倍長演算の実装
MITSUNARI Shigeo
PDF
Lifted-ElGamal暗号を用いた任意関数演算の二者間秘密計算プロトコルのmaliciousモデルにおける効率化
MITSUNARI Shigeo
PDF
楕円曲線と暗号
MITSUNARI Shigeo
PDF
HPC Phys-20201203
MITSUNARI Shigeo
PDF
BLS署名の実装とその応用
MITSUNARI Shigeo
PDF
LazyFP vulnerabilityの紹介
MITSUNARI Shigeo
PDF
Intro to SVE 富岳のA64FXを触ってみた
MITSUNARI Shigeo
暗号技術の実装と数学
MITSUNARI Shigeo
範囲証明つき準同型暗号とその対話的プロトコル
MITSUNARI Shigeo
暗認本読書会13 advanced
MITSUNARI Shigeo
暗認本読書会12
MITSUNARI Shigeo
暗認本読書会11
MITSUNARI Shigeo
暗認本読書会9
MITSUNARI Shigeo
Intel AVX-512/富岳SVE用SIMDコード生成ライブラリsimdgen
MITSUNARI Shigeo
暗認本読書会8
MITSUNARI Shigeo
暗認本読書会6
MITSUNARI Shigeo
暗認本読書会5
MITSUNARI Shigeo
暗認本読書会4
MITSUNARI Shigeo
深層学習フレームワークにおけるIntel CPU/富岳向け最適化法
MITSUNARI Shigeo
私とOSSの25年
MITSUNARI Shigeo
WebAssembly向け多倍長演算の実装
MITSUNARI Shigeo
Lifted-ElGamal暗号を用いた任意関数演算の二者間秘密計算プロトコルのmaliciousモデルにおける効率化
MITSUNARI Shigeo
楕円曲線と暗号
MITSUNARI Shigeo
HPC Phys-20201203
MITSUNARI Shigeo
BLS署名の実装とその応用
MITSUNARI Shigeo
LazyFP vulnerabilityの紹介
MITSUNARI Shigeo
Intro to SVE 富岳のA64FXを触ってみた
MITSUNARI Shigeo
プロフェッショナルSSL/TLS 1.2章
1.
プロフェッショナルSSL/TLS 1, 2章 2017/4/10 光成滋生
2.
• 『Bulletproof SSL
and TLS』(Ivan Ristic/齋藤孝道訳) • 1~2 TLSの復習 • 3~4 PKI • 5~7 各種攻撃 • 8~ 安全なサーバの設定 • 9 パフォーマンス • 10 TSTS, CSP, 公開鍵pinning • 11, 12 OpenSSL • 13 Apache • 14 Java, Tomcat • 15 IIS • 16 Nginx 概要 2 / 27
3.
• TLSの目標 • 暗号学的なセキュリティ •
安全な通信が最優先 • 相互運用性 • 異なるプログラムやライブラリが同じパラメータで通信可能 • 拡張性 • プロトコルを作り直さなくても新しい技術に対応できる • 効率性 • コストの高い暗号処理を最小限にする 1章 SSL/TLSと暗号技術 3 / 27
4.
• OSIモデル • SSL/TLSはアプリケーション層(HTTP,
SMTPなど)とトラン スポート層(TCP, UDP)の間にある • TLSを取り除いてもTCPの上でHTTPが動く • 暗号技術 • confidentiality ; 機密性 ; 秘密が守られること • authenticity ; 真正性 ; 本人であることを検証できること • integrity ; 完全性 ; 改竄されることなく転送されること OSIモデル、暗号技術 4 / 27
5.
• 暗号システムは鍵以外の全てが攻撃者に掌握されても 安全でなければならない • 暗号アルゴリズムは複数人で共有する •
共有する相手が増えると敵対する相手にアルゴリズムが漏れ る可能性が高くなる • 鍵がないと人数が増えたときに多数の人が復号できてしまう • 優れた暗号アルゴリズムを作るのは難しい • たくさんの人が精査して初めて安全と思われる Kerckhoffsの原則 5 / 27
6.
• 事前に秘密鍵を共有しておきデータを暗号化する • 他人は途中経路で眺めても分からない •
全数探索 • 鍵の種類だけ試すこと • p.6では全数探索しか暗号を破る方法が無いとき計算量的安全 と読めなくもないが必ずしもそういうわけではない • 全数探索しなくて破る方法があったとしても、その方法の計 算量が十分大きければ安全 共通鍵暗号 6 / 27
7.
• ストリーム暗号 • 鍵ストリーム
; ランダムなデータの無限列(バイト列) • 暗号化はこれと排他的論理和を求める • 同じ鍵を使い回さないことが重要 • ブロック暗号 • データの固まりごとに暗号化 • 16バイト単位のものが多い • 任意の長さのデータを扱うには暗号化モードと併用 • パディングなど • 暗号モード • ECB, CBC, CFB, OFB, CTR, GCM • 最近はGCMを推奨 ストリーム暗号とブロック暗号 7 / 27
8.
• データの完全性の検証 • 原像計算困難性(preimage
resistance) • 第2原像計算困難性(second preimage resistance) • 衝突耐性(collision resistatnce) • MAC(メッセージ認証コード) • ハッシュ関数でハッシュ値はデータと一緒に送信できない • 秘密鍵(MAC鍵ともいう)とデータからハッシュ関数を組み 合わせてハッシュ値(MAC値ともいう)を作る • MAC鍵は別途秘密に共有しておく ハッシュ関数とMAC 8 / 27
9.
• 公開鍵暗号 • 暗号化する鍵と復号する鍵を別々にした •
共通鍵暗号はn人のうち二人が秘密に通信し合おうとすると n(n-1)/2個の秘密鍵が必要 • 同じ鍵を使い回すと第三者に漏れやすい • 共通鍵暗号より計算時間がかかることが多い • デジタル署名 • 真正性を検証可能にする技術 • MACはMAC鍵の共有が面倒 • 秘密鍵で署名をつけて公開鍵(検証鍵)で真正性を確認 公開鍵暗号とデジタル署名 9 / 27
10.
• 暗号で使う擬似乱数生成器は予測不可能性が大事 乱数生成器 10 /
27
11.
• AliceとBobが安全に通信できるにはどうするか • 機密性のために共通鍵暗号を使う •
途中で改竄されないためにMACを使う • リプレイ攻撃を防ぐために番号をつける • 共通鍵暗号とMAC鍵を交換するために公開鍵暗号を使う • 本人であることを確認するためにデジタル署名を使う • このあたりの一連の流れをハンドシェイクという プロトコル 11 / 27
12.
• 現在安全かだけでなく、その情報をどれぐらいの期間 守りたいのかについても考えるべき 暗号強度 12 /
27
13.
• 中間者攻撃(man in
the middle attack) • 通信会社と結託して通信機器を乗っ取る • ARP spoofing • 任意のIPアドレスをMACアドレスに結びつける • WPAD hijacking • HTTPプロキシの設定を取得するプロトコルに対する攻撃 • DNS hijacking • ドメイン名を乗っ取る • DNSの設定を変更する • DNS cache poisoning • DNSサーバのキャッシュの脆弱性にたいする攻撃 • BGP route hijacking • ルータが利用する経路制御プロトコルにたいする攻撃 MITM 13 / 27
14.
• 受動的攻撃 • 大規模期間による継続的なモニタリング •
FS • (日和見暗号) • 能動的な攻撃 • 不正な証明書を利用 受動的攻撃と能動的な攻撃 14 / 27
15.
• TLS1.2についての解説 RFC5246参照 •
TLS record = ヘッダ | メッセージデータ • ヘッダ = contenttype | version | レコード長 • シーケンス番号 • 64ビット • 送受信データには含まれない • 通信の双方で保持 • リプレイ攻撃に対する防除 2章プロトコル struct { uint8 major; uint8 minor; } ProtocolVersion; enum { change_cipher_spec (20), alert (21), handshake (22), application_data (23) } ContentType; struct { ContentType type; ProtocolVersion version; uint16 length; / * 最長 2^14 ( 16,384 ) バイト * / opaque fragment[TLSPlaintext.length]; } TLSPlaintext; 15 / 27
16.
• ハンドシェイクの種類 • サーバ認証を行うフルハンドシェイク •
セッション再開のためのハンドシェイク • クライアントとサーバの認証を伴うハンドシェイク • フルハンドシェイク • 接続で使いたいパラメータを双方が提示して合意する • 鍵確立 • 提示された証明書の認証 • マスターシークレットの共有 • ハンドシェイクが書き換えられていないことの検証 handshakeプロトコル 16 / 27
17.
• クライアントの認証はしない一般的なケース p.27図2.2 サーバ認証を伴うフルハンドェイク client server ClientHello ServerHello Certificate ServerHelloDone ServerKeyExchange ClientKeyExchange [ChangeCipherSpec] Finished [ChangeCipherSpec] Finished 17
/ 27
18.
• Certificate • サーバの証明書を送信する •
ServerKeyExchange/ClientKeyExchange • マスターシークレットの生成に必要な情報を送る • ChangeCipherSpec • 接続に必要な情報を全て手に入れて暗号鍵を生成したことを 相手に伝えるメッセージ • 完全性検証の対象外 • 実装が難しいためOpenSSLでCCS injectio攻撃を受けた • Finished • ハンドシェイクのMACを送る(verify_data) 18 / 27
19.
• p.32 図2.3 クライアント認証時のフルハンドシェイク client
server ClientHello ServerHello Certificate ServerHelloDone ServerKeyExchange ClientKeyExchange [ChangeCipherSpec] Finished [ChangeCipherSpec] Finished CertificateRequest Certificate CertificateVerify 19 / 27
20.
• CertificateRequest • クライアントに対する認証の要求と許容できる証明書の種類 •
CertificateVerify • クライアント証明書に含まれる公開鍵に対応する署名 追加部分 20 / 27
21.
• フルハンドシェイクは重たい処理 • 認証などを省略したい •
session resumption • session IDを用いてセッションを再開する仕組み • プロトコル • クライアントがClientHelloにsession IDを含めて送信 • サーバは同じsession IDをServerHelloに含めて送信 • 以前共有したマスターシークレットを使って新しい鍵を生成 • ECDHE_ECDSA • FSの実現のために利用 • 詳細は今まで解説したので省略 セッションリザンプション 21 / 27
22.
• 以前Lucky13攻撃で紹介した図 • MAC(Seq|Header|data)計算してpaddingをつける •
IVを作ってEnc • MAC-then-encrypt(MACしてから暗号化) • pading oracleの攻撃(勉強会1, 2回目) • Encrypt-then-MACという拡張(2014) • AEAD(認証つき暗号) • 64ビットのnonceを付与して暗号化(GCM/ChaCha20) ブロック暗号を使った場合 Seq data MAC(Seq|Header|data) padding Enc(data|MAC|padding) Header ヘッダ IV 22 / 27
23.
• 新しい接続のセキュリティパラメータの合意をえる • クライアント証明書 •
サイトの全接続に対してクライアント証明書を要求すると • 証明書を持っていないと何も見えない • エラーも分からない • サイトのトップページはクライアント証明書なしを許可 • そこからクライアント証明書での接続に誘導 • このときに再ネゴシエーションを使う • 情報の隠蔽 • 2回目のハンドシェイクが暗号化されるのでクライアント証明 書が覗かれない • 暗号の強度変更 再ネゴシエーション 23 / 27
24.
• 片方が通信を閉じたらclose_notifyを送信 • 相手は書き込み中の内容を破棄してclose_notifyを送信 •
強制切断攻撃(truncation attack)を防ぐ • 攻撃者がやりとりを途中で横取りしてブロック • 正しく実装する必要あり Finished 24 / 27
25.
• PRF(pseudorandom function) •
secret, seed, labelを入力としてHMACを使って構成する • PRF(secret, label, seed) = P_hash(secret, label + seed) • P_hash(secret, seed) = H(secret, A(1) + seed) + H(secret, A(2) + seed) + ... where A(1) = H(secret, seed), A(i) = H(secret, A(i – 1)) • マスターシークレット(Ms : master secret) • Ms = PRF(pre_Ms, “master secret”, client_rand + server_rand) • key_block = PRF(Ms, “key expansion”, server_rand + client_rand) • 鍵ブロックkey_blockを分割してMAC鍵や暗号鍵にする • セッション再開時はMsは同じでclient_rand, server_randは新 しく取得する 擬似乱数生成器と鍵生成 25 / 27
26.
• 暗号処理の方法を決めるパラメータの集まり • TLS_鍵交換_認証_アルゴリズム_長さ_モード_MAC/PRF •
例)TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256 • 2章残りの節 • ALPN ; application-layer protocol negotiation • CT ; certificate transparency • Heartbeat • NPN ; nextprotocol negotiation • 標準化にはならずALPNに移行 • OCSPステープル • サーバからクライアントに証明書の失効情報を送る 暗号スイート 26 / 27
27.
• TCPデータは暗号化されるがメタデータや下位のレイ ヤは平文のまま • 送信元と宛て先のIPアドレスは分かる •
最初のハンドシェイクは平文 • ブラウザの各種情報を袖手する • ホストの証明書を調査する • クライアント証明書を使う場合のユーザ識別情報を収集 • メッセージの長さ プロトコルの限界 27 / 27
Download