Search
moon
sun
๐Ÿ‘”

SSL/TLS advanced

Category
as S/W ์—”์ง€๋‹ˆ์–ด
Tags
TLS
POODLE attack
SNI
HSTS
SSL Pinning
Certificate Transparency
SSL Spoofing
SSL Strip
Cipher Suite
SSL
Created time
2021/05/05

Introduction

SSL/TLS ๊ด€๋ จ ์‹ฌํ™” ์ฃผ์ œ๋ฅผ ๋‹ค๋ฃน๋‹ˆ๋‹ค.

TLS์˜ย Cipher Suite

โ€ข
TLS๋Š”ย ์Œ๋ฐฉ์ดย ์‚ฌ์šฉํ• ย 4๊ฐœ์˜ย ์•Œ๊ณ ๋ฆฌ์ฆ˜ย ์ฆ‰,ย ํ‚ค๊ตํ™˜,ย ์ „์ž์„œ๋ช…,ย ๋Œ€์นญํ‚คย ์•”ํ˜ธํ™”, MACย ์•Œ๊ณ ๋ฆฌ์ฆ˜์„ย handshakingย ๊ณผ์ •์„ย ํ†ตํ•ดย ํ•ฉ์˜ํ•œ๋‹ค.ย ์•„๋ž˜์™€ย ๊ฐ™์€ย ํ˜•์‹์œผ๋กœ.
โ€ข
๋Œ€์นญํ‚คย ๊ตํ™˜ย ๋ฐฉ์‹์€ย ECDHE(Elliptic Curve Diffie Hellman Ephemeral)์„ย ์‚ฌ์šฉ
โ€ข
์ธ์ฆ์„œย ์„œ๋ช…ย ๋ฐฉ์‹์€ย RSA๋กœย ์„œ๋ช…๋œย ์ธ์ฆ์„œ๋กœย ์ƒํ˜ธย ๊ฐ„์˜ย ์‹ ์›์„ย ํ™•์ธ
โ€ข
๋Œ€์นญํ‚คย ์•”ํ˜ธํ™”ย ์•Œ๊ณ ๋ฆฌ์ฆ˜์€ย AES 256bit์™€ย GCM์„ย ์‚ฌ์šฉ
โ€ข
HMACย ์•Œ๊ณ ๋ฆฌ์ฆ˜์œผ๋กœ๋Š”ย SHA-384๋ฅผย ์‚ฌ์šฉํ•ด์„œย ๋ฉ”์‹œ์ง€์˜ย ๋ฌด๊ฒฐ์„ฑ์„ย ํ™•์ธ

TLS authenticationย ๋ฉ”์ปค๋‹ˆ์ฆ˜

Domainย ์œ ํšจ์„ฑย ๊ฒ€์ฆ

โ€ข
์ ‘๊ทผํ•œย domain name๊ณผย certificateย ๋‚ดย CN(Common Name) fieldย ๊ฐ’์˜ย ๋™์ผ์„ฑย ๋น„๊ต
โ€ข
์ฐธ๊ณ ย : CN์—๋Š” ์ผ๋ฐ˜์ ์œผ๋กœย domain name์ด ๋“ค์–ด๊ฐ(wildcardย ํฌํ•จ ๊ฐ€๋Šฅ)

signatureย ๊ฒ€์ฆ

์‚ฌ์ „ย ์ง€์‹

โ€ข
๊ฒ€์ฆย ๋Œ€์ƒย certificateย ๋‚ดย signature๋Š”ย CA์˜ย private key๋กœย sign๋จ
โ€ข
๊ฒ€์ฆย ์ฃผ์ฒด๋Š”ย ๊ฒ€์ฆย ๋Œ€์ƒย certificate์„ย signํ•œย CA certificate์„ย ๊ฐ–๊ณ ย ์žˆ์Œ

๊ฒ€์ฆย ์ ˆ์ฐจ(digital signatureย ๊ฒ€์ฆย ๋ฉ”์ปค๋‹ˆ์ฆ˜ย ๊ทธ๋Œ€๋กœย ์‚ฌ์šฉ)

1.
MDย ์ถ”์ถœย via public key of CA :ย ๊ฒ€์ฆย ๋Œ€์ƒย certificateย ๋‚ดย ํฌํ•จ๋œย signature๋ฅผย ๊ฒ€์ฆย ์ฃผ์ฒดย ์ž์‹ ์ดย ๊ฐ€์ง„ย CA certificateย ๋‚ดย public key๋กœย ๋ณตํ˜ธํ™”
2.
MDย ์ถ”์ถœย via hashing :ย ๊ฒ€์ฆย ๋Œ€์ƒย certificate์„ย hashing
3.
์ถ”์ถœ๋œย MDย ๊ฐ„์˜ย ๋™์ผ์„ฑย ๋น„๊ต

์กฐ๊ฑด

๊ฒ€์ฆ ๋Œ€์ƒย certificate์˜ย CA์™€ ๊ฒ€์ฆ ์ฃผ์ฒด๊ฐ€ ๊ฐ€์ง„ย CA๋Š” ๋™์ผํ•ด์•ผ ํ•จ

๊ธฐํƒ€

โ€ข
๋ณธย ์„ค๋ช…์—์„œย expiration / activation dateย ๊ฒ€์ฆย ๋ฐย revocationย ๊ฒ€์ฆย ์ž‘์—…์—ย ๋Œ€ํ•ด์„œ๋Š”ย ์ƒ๋žตํ•จ
โ€ข
DV vs OV vs EV SSL

SSL Spoofing / SSL Strip

โ€ข
SSL์—ย ๋Œ€ํ•œย MITM(Man In The Middle) attackย ๊ธฐ๋ฒ•์œผ๋กœ,ย ๊ฐ€์งœย ์ธ์ฆ์„œย ๋˜๋Š”ย non SSL/TLS(e.g. HTTP)ย ๊ธฐ๋ฐ˜์œผ๋กœย ํ†ต์‹ ํ•˜๋„๋กย ํ•˜๋Š”ย ๊ณต๊ฒฉย ๊ธฐ๋ฒ•
โ€ข
Strip์€ย Spoofing์˜ ์ผ์ข…์œผ๋กœย SSL/TLS layer๋ฅผ ๋ฒ‹๊ฒจ๋‚ด์–ดย spoofingย ๋Œ€์ƒย host์—ย message๋ฅผ ์ „๋‹ฌ

SSL Spoofing / Stripย ์›๋ฆฌ

1.
server(SSLย ๊ฒ€์ฆย ๋Œ€์ƒ)๊ณผย victim(SSLย ๊ฒ€์ฆย ์ฃผ์ฒด)์˜ย network channelย ์‚ฌ์ด์—ย attackerย ์œ„์น˜
2.
Attacker๋Š”ย DNS Spoofingย ์ค€๋น„(e.g. DNS Serverย ๋˜๋Š”ย victim hostย ํƒˆ์ทจ, DNS packetย ๊ฐ์ฒญ์„ย ํ†ตํ•œย ๊ฐ€์งœย DNS responseย ์ „์†ก(์ง„์งœ๋ณด๋‹คย ๋จผ์ €))
3.
victim์€ย DNS spoofingย ๊ณต๊ฒฉ์œผ๋กœย ์ธํ•ดย serverย ์ ‘๊ทผย ์‹œย attacker๋กœย ์ ‘๊ทผ
4.
attacker๋Š”ย victim๊ณผย serverย ์‚ฌ์ด์˜ย ๋ชจ๋“ ย message์—ย ๋Œ€ํ•œย ๋ณ€์กฐ
โ€ข
attacker์™€ย serverย ์‚ฌ์ด์—๋Š”ย ์ •์ƒ์ ์ธย HTTPSย ํ†ต์‹ 
โ€ข
attacker์™€ย victimย ์‚ฌ์ด์—๋Š”ย HTTP(SSL Stripย ๊ฒฝ์šฐ)ย ๋˜๋Š”ย (attacker์˜)ย ๋น„์ •์ƒย certificateย ๊ธฐ๋ฐ˜ย ํ†ต์‹ 

SSL Spoofing / Stripย ๋ฐฉ์–ดย ๋ฐฉ๋ฒ•ย : SSL/TLSย ์‚ฌ์šฉย ๊ฐ•์ œํ™”ย ๋ฐย ์ธ์ฆ์„œย ์œ ํšจ์„ฑย ํ™•์ธ

โ€ข
HSTSย ์‚ฌ์šฉย : Browser Level์—์„œย ๊ฐ•์ œ์ ์œผ๋กœย HTTPS๋งŒย ์‚ฌ์šฉํ•˜๋„๋กย ํ•จ
โ€ข
SSL Pinning(Certificate Pinningย ๋˜๋Š”ย CA Pinning)
โ€ข
Certificate Transparency
โ€ข
๊ธฐํƒ€
โ—ฆ
SSL Spoofing / Stripย ๊ณต๊ฒฉ์€ย SSL MITMย ๊ณต๊ฒฉ์˜ย ์ผ์ข…์ž„
โ—ฆ
SSL MITMย ๊ณต๊ฒฉ์œผ๋กœย ์ƒ๊ธฐย ๊ณต๊ฒฉย ์ด์™ธ์—๋„ย POODLE, FREAKย ๋“ฑย ๋‹ค์–‘ํ•จ.

HSTS

โ€ข
HTTP Strict Transport Security์˜ย ์•ฝ์ž๋กœ์„œโ€ฏHTTPย ๋Œ€์‹ ย HTTPS๋งŒ์„ย ์‚ฌ์šฉํ•˜์—ฌย ํ†ต์‹ ํ•ด์•ผย ํ•œ๋‹ค๊ณ ย ์›น์‚ฌ์ดํŠธ๊ฐ€ย ๋ธŒ๋ผ์šฐ์ €์—ย ์•Œ๋ฆฌ๋Š”ย ๋ณด์•ˆย ๊ธฐ๋Šฅ.โ€ฏRFC-6797ย ์ •์˜.
โ€ข
HTTP Headerย ํ˜•์‹ย :โ€ฏStrict-Transport-Security: max-age=<expire-time>; includeSubDomains
โ€ข
includeSubDomains๊ฐ€ย ์„ค์ •๋˜์ง€ย ์•Š์œผ๋ฉดย DNS Spoofing์„ย ํ†ตํ•ดย ์œ ์‚ฌย ์•…์˜ย domain์œผ๋กœย ์—ฐ๊ฒฐ๋ ย ์ˆ˜ย ์žˆ์Œ์„ย ์œ ์˜

SSL Pinning

โ€ข
์ •์˜โ€ฏ: SSL Spoofing / SSL Stripย ๊ณต๊ฒฉ์„ย ํ”ผํ•˜๊ธฐย ์œ„ํ•œย ๋Œ€์‘ย ๊ธฐ๋ฒ•
โ€ข
์›๋ฆฌโ€ฏ: certificateย ๋˜๋Š”ย public key๋ฅผ ์ธ์ฆ ์ฃผ์ฒด ๋ชจ๋“ˆ์— ๋‚ด์žฅํ•˜์—ฌ, TLSย ์ธ์ฆ์„œ ๊ฒ€์ฆ ๊ณผ์ • ์‹œ ์™ธ๋ถ€(e.g. CA, DNS)์— ๋Œ€ํ•œ ์˜์กด์—†์ด ์ธ์ฆ ๊ฐ€๋Šฅํ† ๋ก ํ•จ.
โ€ข
HPKP(HTTP-Based Public Key Pinning)
โ—ฆ
HTTPย ๊ธฐ๋ฐ˜์—์„œย ์‚ฌ์šฉํ•˜๋Š”ย SSL Pinningย ๊ธฐ๋ฒ•.
rust on First Useโ€ฏ(TOFU)ย ๊ธฐ๋ฒ•ย ์ค‘ย ํ•˜๋‚˜๋กœ,ย ์ตœ์ดˆย ์—ฐ๊ฒฐย ์‹œย ํ•ด๋‹นย ์‚ฌ์ดํŠธ์˜ย public key๋ฅผย HTTP header๋กœย ์ „๋‹ฌ,ย ์ดํ›„ย ์—ฐ๊ฒฐ์—์„œย ํ•ด๋‹นย public key๋ฅผย ์ธ์ฆ์—ย ์‚ฌ์šฉํ•˜๋„๋กย ํ•จ.
โ—ฆ
HTTP headerย ํ˜•์‹ย :โ€ฏPublic-Key-Pins: pin-sha256="base64=="; max-age=expireTime [; includeSubDomains][; report-uri="reportURI"]
โ—ฆ
Chrome์—์„œ๋Š”ย HPKPย ๊ธฐ๋Šฅ์„ย ์ œ๊ฑฐํ•จ(DoS์™€ย ์ž˜๋ชป๋œย ๊ฐ’์„ย pinningํ•˜๋Š”ย side effect๋ฅผย ๋งŒ๋“ค๊ธฐ์—..)
โ€ข
SSL Pinningย ๋‹จ์ 
โ—ฆ
์ธ์ฆย ์ฃผ์ฒด์—ย ์ €์žฅ๋œย certificate / public key๊ฐ€ย ๋ฌดํšจํ™”๋ ย ๊ฒฝ์šฐ(๋งŒ๋ฃŒย ๋“ฑ)ย ๊ฐฑ์‹ ย ํ•„์š”
โ—ฆ
HPKP์˜ย ๊ฒฝ์šฐย Chrome์€ย ์ง€์›ํ•˜์ง€ย ์•Š์Œ
โ–ช
์ง€์›ํ•˜๋‹ค๊ฐ€ ์ œ๊ฑฐํ•จ.ย ์ƒ๊ธฐ ๊ฐฑ์‹  ํ•„์š”์„ฑ์„ ํฌํ•จํ•œ ๋‹ค์–‘ํ•œ ์šด์˜ ์ƒ ์ด์Šˆ ๋ฐ ๋‚ฎ์€ ๋„์ž…๋ฅ ๋กœ ์ธํ•จ
(e.g.โ€ฏ์ž˜๋ชป๋œย HPKP header๊ฐ€ ํ•œ๋ฒˆ ์ „๋‹ฌ๋˜๋ฉด ํ•ด๋‹นย client๋Š” ๋ณต๊ตฌ๊ฐ€ ๋งค์šฐ ์–ด๋ ค์›€)
โ–ช
HPKPย ๋Œ€์‹ ย Expect CT headerย ์‚ฌ์šฉ(Certificate Transparencyย ์„น์…˜ย ์ฐธ์กฐ)

Certificate Transparency

โ€ข
์ •์˜:ย ์ธ์ฆ์„œย ๋ชจ๋‹ˆํ„ฐ๋งย /ย ๊ฐ์‚ฌ๋ฅผย ์œ„ํ•œย Google์ดย ๋ฐœ์˜/์ฃผ๋„์˜ย ์ธํ„ฐ๋„ทย ๋ณด์•ˆย ํ‘œ์ค€ย /ย ์˜คํ”ˆ์†Œ์Šคย ํ”„๋ ˆ์ž„์›Œํฌ. RFC 6962.
โ€ข
์›๋ฆฌ: CAย ๋ฐย ํ†ต์‹ ย peerย ๋ชจ๋‘๊ฐ€ย ์‹ ๋ขฐํ•˜๋Š”ย ๊ณณ์—ย ์ธ์ฆ์„œย ๋ฐœ๊ธ‰/์‚ฌ์šฉ์—ย ๋Œ€ํ•œย ๋กœ๊ทธ๋ฅผย ์ ์žฌํ•จ์œผ๋กœย ๋กœ๊ทธ๋ฅผย ํ†ตํ•ดย ์ธ์ฆ์„œ์˜ย ์œ ํšจ์„ฑ์„ย ํŒ๋ณ„
โ€ข
ํ˜„ํ™ฉ: Chrome / Safari๋Š”ย ํ˜„์žฌย ๋ชจ๋“ ย ์ธ์ฆ์„œ๊ฐ€ย CT๋ฅผย ์ง€์›ํ•˜๋„๋กย ๊ฐ•์ œํ•จ(CTย ์ง€์›ย ์—†์ดย ๋ฐœ๊ธ‰๋œย ์ธ์ฆ์„œ๋Š”ย ์˜ค๋ฅ˜ย ๋ฌธ๊ตฌย ์ฒ˜๋ฆฌ)
โ€ข
๋™์ž‘ย ๊ตฌ์กฐ

๊ธฐํƒ€

SNI(Server Name Indication)

โ€ข
TLSย ํ™•์žฅย ํ‘œ์ค€ย ์ค‘ย ํ•˜๋‚˜๋กœย server๊ฐ€ย ์—ฌ๋Ÿฌย domain์„ย ๊ฐ€์งˆย ๊ฒฝ์šฐ, client๊ฐ€ย ์š”์ฒญํ•˜๋Š”ย server domain์„ย ๋‚˜ํƒ€๋‚ด๋Š”ย field์ž„. HTTP์˜ย Host header์™€ย ๋™์ผํ•œย ์—ญํ• 
โ€ข
ํ‰๋ฌธย ๊ธฐ๋ฐ˜์ธย SSL handshakingย ๊ณผ์ •ย ์ค‘์—ย ์ „์†ก๋˜๊ธฐ์—, site filteringย ๋“ฑ์˜ย ์˜ค์šฉย ์—ฌ์ง€๊ฐ€ย ์žˆ์Œ(๊ตญ๋‚ด์˜ย ๊ฒฝ์šฐย ์ธํ„ฐ๋„ทย ๊ฒ€์—ดย ๋…ผ๋ž€ย ๋“ฑ).
โ€ข
=> TLS 1.3ย ๋ฐย ESNI(Encrypted ENI)ย ์ ์šฉ์„ย ํ†ตํ•ดย ๋ฐฉ์ง€ย ๊ฐ€๋Šฅ

TLS 1.3

โ€ข
ํ•ธ๋“œ์…ฐ์ดํฌ์—ย โ€˜0-RTTโ€™ย ๋ชจ๋“œย ์ถ”๊ฐ€โ€ฏ: handshaking stepย ์ถ•์†Œ๋กœย ์„ฑ๋Šฅย ์ฆ๋Œ€
โ€ข
์ •์ ์ธย RSA์™€ย ๋””ํ”ผ-ํ—ฌ๋จผย ์•”ํ˜ธํ™”ย ์Šค์œ„ํŠธ(Diffie-Hellman Cipher Suite)ย ์ œ๊ฑฐ
โ€ข
ํ•ธ๋“œ์…ฐ์ดํฌ๋ฅผย ๊ฐ€๋Šฅํ•œย ์ตœ๋Œ€ํ•œย ์•”ํ˜ธํ™”ย :ย ๊ธฐ๋ฐ€์„ฑย ๊ฐ•ํ™”
โ€ข
ํƒ€์›ย ๊ณก์„ ย ์•Œ๊ณ ๋ฆฌ์ฆ˜์„ย ๊ธฐ๋ณธ์œผ๋กœย ์ง€์›ย :ย ๊ธฐ๋ฐ€์„ฑย ๊ฐ•ํ™”ํ‚คย ๊ตํ™˜๊ณผย ์•”ํ˜ธํ™”ย ๋ฐฉ์‹์„ย ์•”ํ˜ธํ™”ย ์Šค์œ„ํŠธ(Cipher Suite)๋ฐฉ์‹์ดย ์•„๋‹ˆ๋ผ,ย ๊ฐœ๋ณ„์ ์œผ๋กœย ๊ฒฐ์ •ย :ย ์•Œ๊ณ ๋ฆฌ์ฆ˜ย ๊ด€๋ฆฌย ๋ณต์žก๋„ย ์™„ํ™”
โ€ข
TLS 1.2์€โ€ฏCBCย ์šด์šฉย ๋ชจ๋“œย ์ง€์›์œผ๋กœย ์ธํ•ดโ€ฏPOODLE attack๊ณผย ์œ ์‚ฌํ•œย ์ทจ์•ฝ์ ย ์กด์žฌ(Zombie POODLE / GOLDENDOODLE)
โ€ข
์ด๋ฅผย ํ•ด๊ฒฐํ•˜๊ธฐย ์œ„ํ•ด์„œ๋Š”ย CBCย ์šด์šฉย ๋ชจ๋“œย ์ง€์›์„ย ์ œ๊ฑฐํ•˜๋˜๊ฐ€, TLS 1.3์œผ๋กœย ์—…๊ทธ๋ ˆ์ด๋“œํ•ด์•ผย ํ•จ.

POODLE attack

โ€ข
์ทจ์•ฝ์ :ย ์•”ํ˜ธย ํ•ด๋…ย ๋ฐย SSL/TLS version downgrading์„ย ์œ ๋ฐœย ๊ฐ€๋Šฅ
โ€ข
ํ•ด๊ฒฐ์•ˆ:โ€ฏSSL 3.0ย ๋ฒ„์ „ย ์ดํ•˜ย ์‚ฌ์šฉย ๊ธˆ์ง€

References

โ€ข
RFC 6125 Representation and Verification of Domain-Based Application Service Identity within Internet PKI - X.509 Certificates in the Context of TLS :โ€ฏhttps://tools.ietf.org/html/rfc6125#section-6.6.2
โ€ข
How SSL Certificates Use Digital Signature :โ€ฏhttps://commandlinefanatic.com/cgi-bin/showarticle.cgi?article=art012
โ€ข
Understanding SSL Certificate Authentication & Validation :โ€ฏhttps://www.geocerts.com/blog/understanding-ssl-certificate-authentication-validation
โ€ข
SSL Spoofing(SSL Strip) :โ€ฏSSL_Spoofing.pdf
โ€ข
SSL Stripย ๊ณต๊ฒฉ๊ณผย ๋ฐฉ์–ดย ๊ธฐ๋ฒ•ย :โ€ฏhttp://noplanlife.com/?p=1418
โ€ข
Certificate Transparency :โ€ฏhttps://www.certificate-transparency.org/
โ€ข
์ค‘๊ตญย SSL MITMย ๊ณต๊ฒฉย ์‚ฌ๊ฑดย ์ •๋ฆฌย ๋ฐย ๊ณต๊ฒฉย ์›๋ฆฌย :โ€ฏhttps://blog.alyac.co.kr/204
โ€ข
โ€ข
โ€ข
์ธ์ฆ์„œย ํˆฌ๋ช…์„ฑย ๊ฐœ์š”ย :โ€ฏhttps://blog.yeon.me/goto/1212
โ€ข
์ธ์ฆ์„œย ํˆฌ๋ช…์„ฑย ์ž‘๋™ย ๋ฐฉ์‹ย :โ€ฏhttps://blog.yeon.me/goto/1219
โ€ข
Certificate Transparency Home :โ€ฏhttp://www.certificate-transparency.org/