๊ฐœ๋… ์ดํ•ด

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.0TLS 1.0TLS 1.2TLS 1.3
์ถœ์‹œ์—ฐ๋„1996199920082018
๋ณด์•ˆ์„ฑ์ทจ์•ฝ์ทจ์•ฝ์•ˆ์ „๋งค์šฐ ์•ˆ์ „
์†๋„๋А๋ฆผ๋А๋ฆผ๋ณดํ†ต๋น ๋ฆ„
์ƒํƒœ์‚ฌ์šฉ์ค‘๋‹จ์‚ฌ์šฉ์ค‘๋‹จ์‚ฌ์šฉ์ค‘๊ถŒ์žฅ

์ทจ์•ฝ์ ๊ณผ ๋ณด์•ˆ ๋ฌธ์ œ

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 ์ธ์ฆ์„œ ์ดํ•ด

์ธ์ฆ์„œ ์ข…๋ฅ˜

  1. DV (Domain Validation)
  2. OV (Organization Validation)
  3. 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.1

2. ์›น ์„œ๋ฒ„ ์„ค์ • (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.com

2. ์•”ํ˜ธํ™” ์Šค์œ„ํŠธ ์„ค์ •

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 -showcerts

2. ํ˜ธํ™˜์„ฑ ๋ฌธ์ œ

# TLS ๋ฒ„์ „๋ณ„ ํ…Œ์ŠคํŠธ
openssl s_client -connect example.com:443 -tls1_2
openssl s_client -connect example.com:443 -tls1_3

Security Best Practices

1. ๊ตฌ์„ฑ ์ ๊ฒ€ ํ•ญ๋ชฉ

  • ์ตœ์‹  ๋ณด์•ˆ ํŒจ์น˜ ์ ์šฉ
  • ์ทจ์•ฝํ•œ ํ”„๋กœํ† ์ฝœ ๋น„ํ™œ์„ฑํ™”
  • ๊ฐ•๋ ฅํ•œ ์•”ํ˜ธํ™” ์Šค์œ„ํŠธ ์‚ฌ์šฉ

2. ๋ชจ๋‹ˆํ„ฐ๋ง

  • ์ธ์ฆ์„œ ๋งŒ๋ฃŒ ๋ชจ๋‹ˆํ„ฐ๋ง
  • ๋ณด์•ˆ ์ทจ์•ฝ์  ๋ชจ๋‹ˆํ„ฐ๋ง
  • ํŠธ๋ž˜ํ”ฝ ๋ชจ๋‹ˆํ„ฐ๋ง

๊ฒฐ๋ก 

์š”์•ฝ

  • SSL์€ ํ˜„์žฌ ์‚ฌ์šฉ์ด ์ค‘๋‹จ๋˜์—ˆ๋‹ค
  • TLS๊ฐ€ SSL์„ ์™„์ „ํžˆ ๋Œ€์ฒดํ–ˆ๋‹ค
  • ๋ณด์•ˆ์„ ์œ„ํ•ด TLS 1.2 ์ด์ƒ์„ ์‚ฌ์šฉํ•ด์•ผ ํ•œ๋‹ค

๊ถŒ์žฅ์‚ฌํ•ญ

  1. ๋ชจ๋“  SSL ๋ฒ„์ „ ๋น„ํ™œ์„ฑํ™”
  2. TLS 1.2 ์ด์ƒ์œผ๋กœ ์—…๊ทธ๋ ˆ์ด๋“œ
  3. ์ •๊ธฐ์ ์ธ ๋ณด์•ˆ ๊ฐ์‚ฌ ์ˆ˜ํ–‰
  4. ์ธ์ฆ์„œ ์ˆ˜๋ช… ์ฃผ๊ธฐ ๊ด€๋ฆฌ