TL;DR
- SSL์ ํต์ ์ํธํ ํ๋กํ ์ฝ์ด์ง๋ง ๋ณด์ ์ทจ์ฝ์ ์ผ๋ก ํ๊ธฐ๋ ์ํ
- TLS๋ SSL์ ํ์ ํ์ค์ผ๋ก, ํํ โSSLโ์ด๋ผ ๋ถ๋ฌ๋ ์ค์ ๋ก๋ TLS๊ฐ ๋์
- TLS 1.3์ handshake ๊ฐ์ํ์ ์ทจ์ฝ ์ํธ ์ค์ํธ ์ ๊ฑฐ๋ก ์ฑ๋ฅ๊ณผ ๋ณด์ ๊ฐ์
1. SSL์ด๋
SSL(Secure Sockets Layer)์ ์ธํฐ๋ท ํต์ ์ ์ํธํํ์ฌ ๋ฐ์ดํฐ ๋ณด์์ ์ ๊ณตํ๋ ํ๋กํ ์ฝ์ด๋ค. Netscape๊ฐ 1995๋ ์ ์ค๊ณํ๋ค.
- ๋ฐ์ดํฐ ์ํธํ๋ก ํต์ ๋ณด์ ์ ์ง
- ์๋ฒ์ ํด๋ผ์ด์ธํธ ๊ฐ ์ ์ ์ธ์ฆ
- ๋ฐ์ดํฐ ๋ฌด๊ฒฐ์ฑ ๋ณด์ฅ (๋ณ์กฐ ๋ฐฉ์ง)
SSL ์๋ ๋ฐฉ์
- ํด๋ผ์ด์ธํธ๊ฐ ์๋ฒ์ ์ฐ๊ฒฐ ์์ฒญ
- ์๋ฒ๊ฐ ์ธ์ฆ์๋ฅผ ํด๋ผ์ด์ธํธ์ ์ ๋ฌ
- ํด๋ผ์ด์ธํธ๊ฐ ์ธ์ฆ์ ์ ๋ขฐ ์ฌ๋ถ ํ์ธ
- ์์ธก์ด ์ํธํ ๋ฐฉ์ ํ์ ํ ์ธ์ ํค ์์ฑ
- ์ธ์ ํค๋ฅผ ์ฌ์ฉํด ์ํธํ๋ ํต์ ์์
์ธ์ ํค
์ธ์ ํค๋ 17. ์์ ์ฑ์ ์ํ ๊ธฐ์ > ์ํธ์ ์ธ์ฆ์์์ ๋ค๋ฃฌ ํ์ด๋ธ๋ฆฌ๋ ๋ฐฉ์์ผ๋ก ์์ฑ๋๋ค. ๋น๋์นญ ํค๋ก ๋์นญ ํค(์ธ์ ํค)๋ฅผ ์์ ํ๊ฒ ๊ตํํ ๋ค, ์ค์ ๋ฐ์ดํฐ ์ ์ก์ ๋น ๋ฅธ ๋์นญ ํค ์ํธํ๋ก ์ฒ๋ฆฌํ๋ค.
2. SSL์ ํ๊ธฐ
SSL์ ํ์ฌ ์ฌ์ฉํด์๋ ์ ๋๋ ํ๋กํ ์ฝ์ด๋ค.
| ๋ฒ์ | ์ฐ๋ | ์ํ |
|---|---|---|
| SSL 1.0 | 1994 | ๊ณต๊ฐ ์ ํ๊ธฐ (์ฌ๊ฐํ ๊ฒฐํจ) |
| SSL 2.0 | 1995 | 2011๋ ํ๊ธฐ (RFC 6176) |
| SSL 3.0 | 1996 | 2015๋ ํ๊ธฐ (RFC 7568) |
SSL 3.0์ POODLE ๊ณต๊ฒฉ(2014๋ ๋ฐ๊ฒฌ)์ผ๋ก ์ธํด ํ๊ธฐ๋์๋ค. POODLE์ SSL 3.0์ CBC ๋ชจ๋ ํจ๋ฉ ์ฒ๋ฆฌ ๋ฐฉ์์ ์ ์ฉํด ์ํธํ๋ ๋ฐ์ดํฐ๋ฅผ ํ ๋ฐ์ดํธ์ฉ ๋ณตํธํํ ์ ์๋ ์ทจ์ฝ์ ์ด๋ค.
3. TLS๋
TLS(Transport Layer Security)๋ SSL 3.0์ ๊ธฐ๋ฐ์ผ๋ก IETF๊ฐ ํ์คํํ ํ์ ํ๋กํ ์ฝ์ด๋ค.
| ๋ฒ์ | ์ฐ๋ | ์ํ |
|---|---|---|
| TLS 1.0 | 1999 | 2021๋ ํ๊ธฐ (RFC 8996) |
| TLS 1.1 | 2006 | 2021๋ ํ๊ธฐ (RFC 8996) |
| TLS 1.2 | 2008 | ํ์ฌ ์ฌ์ฉ ๊ฐ๋ฅ |
| TLS 1.3 | 2018 | ํ์ฌ ๊ถ์ฅ ํ์ค |
"SSL"์ด๋ผ ๋ถ๋ฅด์ง๋ง ์ค์ ๋ก๋ TLS
๋ธ๋ผ์ฐ์ ์ฃผ์์ฐฝ์ ์๋ฌผ์ ์์ด์ฝ, โSSL ์ธ์ฆ์โ, Letโs Encrypt ๋ฑ์์ ๋งํ๋ SSL์ ์ฌ์ค์ TLS๋ฅผ ์๋ฏธํ๋ค. ์ญ์ฌ์ ์ด์ ๋ก SSL์ด๋ผ๋ ์ด๋ฆ์ด ๊ด์ฉ์ ์ผ๋ก ๋จ์ ์์ ๋ฟ์ด๋ค.
4. TLS 1.2 vs TLS 1.3
TLS 1.3์ 2018๋ ์ ๋ฐํ๋ ์ต์ ํ์ค์ผ๋ก, 1.2 ๋๋น ๋ณด์๊ณผ ์ฑ๋ฅ์ด ๋ชจ๋ ๊ฐ์ ๋์๋ค.
Handshake ๊ฐ์ํ
- TLS 1.2 : 2-RTT (์๋ณต 2ํ) โ ClientHello โ ServerHello โ ํค ๊ตํ โ Finished
- TLS 1.3 : 1-RTT (์๋ณต 1ํ) โ ClientHello์ ํค ๊ณต์ ์ ๋ณด๋ฅผ ํฌํจํด์ ๋ณด๋
# TLS 1.2 (2-RTT)
Client โ Server : ClientHello
Client โ Server : ServerHello, Certificate, KeyExchange
Client โ Server : KeyExchange, Finished
Client โ Server : Finished
# TLS 1.3 (1-RTT)
Client โ Server : ClientHello + KeyShare
Client โ Server : ServerHello + KeyShare, Certificate, Finished
Client โ Server : Finished
์ฐ๊ฒฐ ์ค์ ์ด ๋นจ๋ผ์ง๋ฏ๋ก ์ฒด๊ฐ ์๋๊ฐ ํฅ์๋๋ค.
0-RTT (Zero Round Trip Time)
TLS 1.3์์๋ ์ด์ ์ ์ฐ๊ฒฐํ ์ ์๋ ์๋ฒ์ ๋ํด ์ฒซ ๋ฉ์์ง์ ๋ฐ์ดํฐ๋ฅผ ํจ๊ป ๋ณด๋ผ ์ ์๋ค (0-RTT Resumption). ๋ค๋ง ์ฌ์ ์ก ๊ณต๊ฒฉ(replay attack)์ ์ทจ์ฝํ ์ ์์ด์ ๋ฉฑ๋ฑํ์ง ์์ ์์ฒญ์๋ ์ฌ์ฉํ์ง ์๋ ๊ฒ์ด ์ข๋ค.
์ทจ์ฝํ ์๊ณ ๋ฆฌ์ฆ ์ ๊ฑฐ
TLS 1.3์์๋ ์๋ ํญ๋ชฉ์ด ์์ ํ ์ ๊ฑฐ๋์๋ค.
- RSA ํค ๊ตํ (์ ๋ฐฉ ๋น๋ฐ์ฑ ๋ฏธ์ง์)
- CBC ๋ชจ๋ ์ํธ ์ค์ํธ
- RC4, DES, 3DES
- SHA-1 ๊ธฐ๋ฐ ์๋ช
- ์ ์ Diffie-Hellman
์ ๋ฐฉ ๋น๋ฐ์ฑ (Forward Secrecy)
์๋ฒ์ ๊ฐ์ธ ํค๊ฐ ์ ์ถ๋๋๋ผ๋ ๊ณผ๊ฑฐ์ ์ํธํ๋ ํต์ ๋ด์ฉ์ ๋ณตํธํํ ์ ์๋ ์ฑ์ง์ด๋ค. TLS 1.3์ ๋ชจ๋ ํค ๊ตํ์ ์์ Diffie-Hellman(DHE/ECDHE)์ ์ฌ์ฉํ์ฌ ์ ๋ฐฉ ๋น๋ฐ์ฑ์ ๊ฐ์ ํ๋ค. TLS 1.2์์๋ RSA ํค ๊ตํ์ ์ฐ๋ฉด ์ ๋ฐฉ ๋น๋ฐ์ฑ์ด ๋ณด์ฅ๋์ง ์์๋ค.
TLS 1.2 vs 1.3 ๋น๊ต ํ
| ํญ๋ชฉ | TLS 1.2 | TLS 1.3 |
|---|---|---|
| Handshake | 2-RTT | 1-RTT (0-RTT ์ง์) |
| ํค ๊ตํ | RSA, DHE, ECDHE | ECDHE, DHE๋ง ํ์ฉ |
| ์ ๋ฐฉ ๋น๋ฐ์ฑ | ์ ํ (RSA ์ฌ์ฉ ์ ๋ฏธ์ง์) | ๊ฐ์ |
| ์ํธ ์ค์ํธ | ๋ค์ (์ผ๋ถ ์ทจ์ฝ) | 5๊ฐ๋ก ์ถ์ (์์ ํ ๊ฒ๋ง) |
| ์ํธํ ๋ชจ๋ | CBC, GCM ๋ฑ | AEAD๋ง ํ์ฉ (GCM, ChaCha20) |
5. SSL/TLS ์ธ์ฆ์
์ธ์ฆ์ ์ข ๋ฅ
| ์ข ๋ฅ | ๊ฒ์ฆ ๋์ | ์ฉ๋ |
|---|---|---|
| DV (Domain Validation) | ๋๋ฉ์ธ ์์ ๊ถ | ๊ฐ์ธ ๋ธ๋ก๊ทธ, ์๊ท๋ชจ ์ฌ์ดํธ |
| OV (Organization Validation) | ๊ธฐ์ ์ ์ | ๊ธฐ์ ์น์ฌ์ดํธ |
| EV (Extended Validation) | ๊ธฐ์ ์ ๋ฒ์ ์กด์ฌ์ ์ ๋ขฐ์ฑ | ๊ธ์ต, ์ ์์๊ฑฐ๋ |
์ธ์ฆ์ ๋ฐ๊ธ ๋ฐฉ์
- ์ ๋ฃ CA : DigiCert, GlobalSign ๋ฑ์์ ๋ฐ๊ธ
- ๋ฌด๋ฃ CA : Letโs Encrypt๊ฐ ๋ํ์ . DV ์ธ์ฆ์๋ฅผ ์๋์ผ๋ก ๋ฐ๊ธํ๊ณ ๊ฐฑ์ ํ๋ค
# Let's Encrypt + certbot ์์
sudo certbot --nginx -d example.com์ธ์ฆ์ ํ์ธ
# ์๋ฒ์ ์ธ์ฆ์ ์ ๋ณด ํ์ธ
openssl s_client -connect example.com:443 -servername example.com < /dev/null 2>/dev/null | openssl x509 -noout -subject -dates -issuer
# TLS ๋ฒ์ ํ์ธ
openssl s_client -connect example.com:443 -tls1_36. ์ฃผ์ ์ฌ์ฉ์ฒ
- ์น์ฌ์ดํธ HTTPS ํต์ (HTTPS handshake ์ฐธ๊ณ )
- ์ด๋ฉ์ผ ์ํธํ (SMTP, IMAP)
- ๋ฐ์ดํฐ ์ ์ก ๋ฐ API ํต์ ๋ณด์
- VPN ์ฐ๊ฒฐ (OpenVPN ๋ฑ)
- ๋ฐ์ดํฐ๋ฒ ์ด์ค ์ฐ๊ฒฐ ์ํธํ (PostgreSQL, MySQL ๋ฑ)