๊ฐ๋ ์ดํด
SSL์ด๋?
SSL์ Netscape๊ฐ 1995๋ ์ ๊ฐ๋ฐํ ์ต์ด์ ์น ๋ณด์ ํ๋กํ ์ฝ์ด๋ค. ํ์ฌ๋ TLS๋ก ๋์ฒด๋์์ผ๋, ๋ง์ ์ฌ๋๋ค์ด ์ฌ์ ํ TLS๋ฅผ โSSLโ์ด๋ผ๊ณ ๋ถ๋ฅธ๋ค.
์ญ์ฌ์ ๋ฐ์ ๊ณผ์
timeline title SSL/TLS ๋ฐ์ ๊ณผ์ 1995 : SSL 2.0 ์ถ์ 1996 : SSL 3.0 ์ถ์ 1999 : TLS 1.0 ์ถ์ 2006 : TLS 1.1 ์ถ์ 2008 : TLS 1.2 ์ถ์ 2015 : SSL ๋ชจ๋ ๋ฒ์ ์ฌ์ฉ ์ค๋จ 2018 : TLS 1.3 ์ถ์
SSL์ ๊ธฐ๋ณธ ๊ตฌ์กฐ
ํ๋กํ ์ฝ ์คํ
graph TB subgraph "SSL Protocol Stack" A[SSL Handshake Protocol] --> B[SSL Record Protocol] C[SSL Change Cipher Spec Protocol] --> B D[SSL Alert Protocol] --> B B --> E[TCP] end
๊ธฐ๋ณธ ๋์ ์๋ฆฌ
sequenceDiagram participant Client participant Server Client->>Server: 1. ClientHello Server->>Client: 2. ServerHello Server->>Client: 3. ์๋ฒ ์ธ์ฆ์ Client->>Server: 4. ํด๋ผ์ด์ธํธ ํค ๊ตํ Client->>Server: 5. ChangeCipherSpec Client->>Server: 6. Finished Server->>Client: 7. ChangeCipherSpec Server->>Client: 8. Finished
SSL vs TLS
์ฃผ์ ์ฐจ์ด์ ๋น๊ต
| ํน์ง | SSL 3.0 | TLS 1.0 | TLS 1.2 | TLS 1.3 |
|---|---|---|---|---|
| ์ถ์์ฐ๋ | 1996 | 1999 | 2008 | 2018 |
| ๋ณด์์ฑ | ์ทจ์ฝ | ์ทจ์ฝ | ์์ | ๋งค์ฐ ์์ |
| ์๋ | ๋๋ฆผ | ๋๋ฆผ | ๋ณดํต | ๋น ๋ฆ |
| ์ํ | ์ฌ์ฉ์ค๋จ | ์ฌ์ฉ์ค๋จ | ์ฌ์ฉ์ค | ๊ถ์ฅ |
์ทจ์ฝ์ ๊ณผ ๋ณด์ ๋ฌธ์
1. POODLE ์ทจ์ฝ์
- SSL 3.0์ CBC ๋ชจ๋ ์ทจ์ฝ์
- ์ค๊ฐ์ ๊ณต๊ฒฉ ๊ฐ๋ฅ
- 2014๋ ๋ฐ๊ฒฌ
2. DROWN ์ทจ์ฝ์
- SSL 2.0 ํ๋กํ ์ฝ์ ์ทจ์ฝ์
- RSA ํค ๋ณตํธํ ๊ฐ๋ฅ
- 2016๋ ๋ฐ๊ฒฌ
๋ณด์ ์ฌ๊ณ ์ฌ๋ก
graph TD A[SSL ์ทจ์ฝ์ ] --> B[POODLE] A --> C[DROWN] A --> D[BEAST] B --> E[๋ฐ์ดํฐ ์ ์ถ] C --> E D --> E
SSL ์ธ์ฆ์ ์ดํด
์ธ์ฆ์ ์ข ๋ฅ
- DV (Domain Validation)
- OV (Organization Validation)
- EV (Extended Validation)
์ธ์ฆ์ ๊ตฌ์กฐ
graph TB subgraph "SSL ์ธ์ฆ์ ๊ตฌ์กฐ" A[์๋ช ์๊ณ ๋ฆฌ์ฆ] --> B[๋ฐ๊ธ์ ์ ๋ณด] B --> C[์ฃผ์ฒด ์ ๋ณด] C --> D[๊ณต๊ฐํค] D --> E[ํ์ฅ ํ๋] end
๋ง์ด๊ทธ๋ ์ด์ ๊ฐ์ด๋
SSL์์ TLS๋ก ์ ํ
1. ์น ์๋ฒ ์ค์ (Apache)
# ์ด์ ์ค์ (์ฌ์ฉํ์ง ๋ง ๊ฒ)
SSLProtocol all -SSLv2
# ์๋ก์ด ์ค์
SSLProtocol all -SSLv2 -SSLv3 -TLSv1 -TLSv1.12. ์น ์๋ฒ ์ค์ (Nginx)
# ์ด์ ์ค์ (์ฌ์ฉํ์ง ๋ง ๊ฒ)
ssl_protocols SSLv3 TLSv1 TLSv1.1 TLSv1.2;
# ์๋ก์ด ์ค์
ssl_protocols TLSv1.2 TLSv1.3;๋ณด์ ๊ฐํ ๋ฐฉ์
1. ํ๋กํ ์ฝ ์ค์
# OpenSSL ์ค์ ํ์ธ
openssl ciphers -v | awk '{print $2}' | sort | uniq
# ํ๋กํ ์ฝ ์ง์ ํ์ธ
nmap --script ssl-enum-ciphers -p 443 example.com2. ์ํธํ ์ค์ํธ ์ค์
ssl_ciphers ECDHE-ECDSA-AES128-GCM-SHA256:ECDHE-RSA-AES128-GCM-SHA256;
ssl_prefer_server_ciphers off;๋ฌธ์ ํด๊ฒฐ ๊ฐ์ด๋
์ผ๋ฐ์ ์ธ ๋ฌธ์
1. ์ธ์ฆ์ ๋ฌธ์
# SSL ์ฐ๊ฒฐ ํ
์คํธ
openssl s_client -connect example.com:443
# ์ธ์ฆ์ ์ฒด์ธ ํ์ธ
openssl s_client -connect example.com:443 -showcerts2. ํธํ์ฑ ๋ฌธ์
# TLS ๋ฒ์ ๋ณ ํ
์คํธ
openssl s_client -connect example.com:443 -tls1_2
openssl s_client -connect example.com:443 -tls1_3Security Best Practices
1. ๊ตฌ์ฑ ์ ๊ฒ ํญ๋ชฉ
- ์ต์ ๋ณด์ ํจ์น ์ ์ฉ
- ์ทจ์ฝํ ํ๋กํ ์ฝ ๋นํ์ฑํ
- ๊ฐ๋ ฅํ ์ํธํ ์ค์ํธ ์ฌ์ฉ
2. ๋ชจ๋ํฐ๋ง
- ์ธ์ฆ์ ๋ง๋ฃ ๋ชจ๋ํฐ๋ง
- ๋ณด์ ์ทจ์ฝ์ ๋ชจ๋ํฐ๋ง
- ํธ๋ํฝ ๋ชจ๋ํฐ๋ง
๊ฒฐ๋ก
์์ฝ
- SSL์ ํ์ฌ ์ฌ์ฉ์ด ์ค๋จ๋์๋ค
- TLS๊ฐ SSL์ ์์ ํ ๋์ฒดํ๋ค
- ๋ณด์์ ์ํด TLS 1.2 ์ด์์ ์ฌ์ฉํด์ผ ํ๋ค
๊ถ์ฅ์ฌํญ
- ๋ชจ๋ SSL ๋ฒ์ ๋นํ์ฑํ
- TLS 1.2 ์ด์์ผ๋ก ์ ๊ทธ๋ ์ด๋
- ์ ๊ธฐ์ ์ธ ๋ณด์ ๊ฐ์ฌ ์ํ
- ์ธ์ฆ์ ์๋ช ์ฃผ๊ธฐ ๊ด๋ฆฌ