λ³Έλ¬Έ λ°”λ‘œκ°€κΈ°

ν•Έλ“œμ…°μ΄ν¬ μ΅œμ ν™”: TLS 1.3의 κ°œμ„ μ 

mrmount 2024. 10. 18.

 

 

ν•Έλ“œμ…°μ΄ν¬ μ΅œμ ν™”: TLS 1.3의 κ°œμ„ μ 

TLS 1.3 은 ν•Έλ“œμ…°μ΄ν¬ 속도λ₯Ό λŒ€ν­ κ°œμ„  ν•˜μ—¬ κΈ°μ‘΄ TLS 1.2보닀 더 λΉ λ₯΄κ²Œ 연결을 μˆ˜λ¦½ν•©λ‹ˆλ‹€. μ΄μ „μ—λŠ” 두 번의 왕볡(Round Trip) 이 ν•„μš”ν–ˆμ§€λ§Œ, TLS 1.3μ—μ„œλŠ” 단일 왕볡 으둜 연결이 μ™„λ£Œλ©λ‹ˆλ‹€. 이둜 인해 μ›ΉνŽ˜μ΄μ§€ λ‘œλ”© 속도가 κ°œμ„ λ˜κ³ , μ‚¬μš©μž κ²½ν—˜μ΄ ν–₯μƒλ©λ‹ˆλ‹€.

TLS 1.3κ³Ό TLS 1.2의 차이점 비ꡐ

ν•­λͺ© TLS 1.2 TLS 1.3
ν•Έλ“œμ…°μ΄ν¬ μ‹œκ°„ 두 번의 왕볡(RTT) ν•„μš” ν•œ 번의 왕볡(RTT)으둜 μ™„λ£Œ
지원 μ•Œκ³ λ¦¬μ¦˜ λ‹€μ–‘ν•œ(일뢀 μ·¨μ•½) μ•”ν˜Έν™” μ•Œκ³ λ¦¬μ¦˜ μ•ˆμ „ν•œ μ•Œκ³ λ¦¬μ¦˜λ§Œ μ‚¬μš©
ν‚€ κ΅ν™˜ 방식 RSA 및 DH ν‚€ κ΅ν™˜ ECDHE(더 λΉ λ₯΄κ³  μ•ˆμ „ν•œ 방식) μ‚¬μš©
ν”„λ‘œν† μ½œ 지원 λ‹€μš΄κ·Έλ ˆμ΄λ“œ 곡격 κ°€λŠ₯μ„± 있음 λ‹€μš΄κ·Έλ ˆμ΄λ“œ 곡격 차단




 

SSL ν•Έλ“œμ…°μ΄ν¬μ™€ λ³΄μ•ˆ 이슈

ν•Έλ“œμ…°μ΄ν¬ κ³Όμ •μ—μ„œ λ°œμƒν•  수 μžˆλŠ” λ³΄μ•ˆ 이슈 λŠ” λ‹€μŒκ³Ό κ°™μŠ΅λ‹ˆλ‹€.

1. μ€‘κ°„μž 곡격(MITM)

κ³΅κ²©μžκ°€ ν•Έλ“œμ…°μ΄ν¬λ₯Ό κ°€λ‘œμ±„ ν΄λΌμ΄μ–ΈνŠΈμ™€ μ„œλ²„ μ‚¬μ΄μ˜ 톡신 을 μ‘°μž‘ν•˜λŠ” κ³΅κ²©μž…λ‹ˆλ‹€.
ν•΄κ²° λ°©μ•ˆ: SSL/TLSλ₯Ό μ‚¬μš©ν•  λ•Œ μΈμ¦μ„œ ν•€(Pinning) κ³Ό HSTS(HTTP Strict Transport Security) λ₯Ό μ„€μ •ν•©λ‹ˆλ‹€.

예제: Nginxμ—μ„œ HSTS μ„€μ •

add_header Strict-Transport-Security "max-age=31536000; includeSubDomains" always;

 


 

ν•Έλ“œμ…°μ΄ν¬ μ΅œμ ν™”: TLS 1.3의 κ°œμ„ μ 

TLS 1.3 은 ν•Έλ“œμ…°μ΄ν¬ 속도λ₯Ό λŒ€ν­ κ°œμ„  ν•˜μ—¬ κΈ°μ‘΄ TLS 1.2보닀 더 λΉ λ₯΄κ²Œ 연결을 μˆ˜λ¦½ν•©λ‹ˆλ‹€. μ΄μ „μ—λŠ” 두 번의 왕볡(Round Trip) 이 ν•„μš”ν–ˆμ§€λ§Œ, TLS 1.3μ—μ„œλŠ” 단일 왕볡 으둜 연결이 μ™„λ£Œλ©λ‹ˆλ‹€. 이둜 인해 μ›ΉνŽ˜μ΄μ§€ λ‘œλ”© 속도가 κ°œμ„ λ˜κ³ , μ‚¬μš©μž κ²½ν—˜μ΄ ν–₯μƒλ©λ‹ˆλ‹€.

TLS 1.3κ³Ό TLS 1.2의 차이점 비ꡐ

ν•­λͺ© TLS 1.2 TLS 1.3
ν•Έλ“œμ…°μ΄ν¬ μ‹œκ°„ 두 번의 왕볡(RTT) ν•„μš” ν•œ 번의 왕볡(RTT)으둜 μ™„λ£Œ
지원 μ•Œκ³ λ¦¬μ¦˜ λ‹€μ–‘ν•œ(일뢀 μ·¨μ•½) μ•”ν˜Έν™” μ•Œκ³ λ¦¬μ¦˜ μ•ˆμ „ν•œ μ•Œκ³ λ¦¬μ¦˜λ§Œ μ‚¬μš©
ν‚€ κ΅ν™˜ 방식 RSA 및 DH ν‚€ κ΅ν™˜ ECDHE(더 λΉ λ₯΄κ³  μ•ˆμ „ν•œ 방식) μ‚¬μš©
ν”„λ‘œν† μ½œ 지원 λ‹€μš΄κ·Έλ ˆμ΄λ“œ 곡격 κ°€λŠ₯μ„± 있음 λ‹€μš΄κ·Έλ ˆμ΄λ“œ 곡격 차단




 

SSL ν•Έλ“œμ…°μ΄ν¬μ™€ λ³΄μ•ˆ 이슈

ν•Έλ“œμ…°μ΄ν¬ κ³Όμ •μ—μ„œ λ°œμƒν•  수 μžˆλŠ” λ³΄μ•ˆ 이슈 λŠ” λ‹€μŒκ³Ό κ°™μŠ΅λ‹ˆλ‹€.

1. μ€‘κ°„μž 곡격(MITM)

κ³΅κ²©μžκ°€ ν•Έλ“œμ…°μ΄ν¬λ₯Ό κ°€λ‘œμ±„ ν΄λΌμ΄μ–ΈνŠΈμ™€ μ„œλ²„ μ‚¬μ΄μ˜ 톡신 을 μ‘°μž‘ν•˜λŠ” κ³΅κ²©μž…λ‹ˆλ‹€.
ν•΄κ²° λ°©μ•ˆ: SSL/TLSλ₯Ό μ‚¬μš©ν•  λ•Œ μΈμ¦μ„œ ν•€(Pinning) κ³Ό HSTS(HTTP Strict Transport Security) λ₯Ό μ„€μ •ν•©λ‹ˆλ‹€.

예제: Nginxμ—μ„œ HSTS μ„€μ •

add_header Strict-Transport-Security "max-age=31536000; includeSubDomains" always;

2. μΈμ¦μ„œ 체인 문제

쀑간 μΈμ¦μ„œκ°€ λˆ„λ½λ  경우 ν•Έλ“œμ…°μ΄ν¬κ°€ μ‹€νŒ¨ν•  수 μžˆμŠ΅λ‹ˆλ‹€.
ν•΄κ²° λ°©μ•ˆ: SSL Labs 와 같은 도ꡬλ₯Ό μ‚¬μš©ν•΄ 체인을 μ κ²€ν•˜κ³ , λˆ„λ½λœ 쀑간 μΈμ¦μ„œλ₯Ό μΆ”κ°€ν•©λ‹ˆλ‹€.

3. μ·¨μ•½ν•œ μ•”ν˜Έν™” μ•Œκ³ λ¦¬μ¦˜ μ‚¬μš©

κ΅¬ν˜• TLS λ²„μ „μ—μ„œλŠ” RC4, MD5 와 같은 μ·¨μ•½ν•œ μ•Œκ³ λ¦¬μ¦˜μ΄ μ‚¬μš©λ  수 μžˆμŠ΅λ‹ˆλ‹€.
ν•΄κ²° λ°©μ•ˆ: TLS 1.2 이상 을 μ‚¬μš©ν•˜κ³  κ°•λ ₯ν•œ μ•Œκ³ λ¦¬μ¦˜(AES-256, ChaCha20) 을 μ μš©ν•©λ‹ˆλ‹€.

 


 

SSL/TLS μ„±λŠ₯ μ΅œμ ν™” 팁

SSL ν•Έλ“œμ…°μ΄ν¬λ₯Ό μ΅œμ ν™”ν•˜λ©΄ μ›Ήμ‚¬μ΄νŠΈ μ„±λŠ₯ 이 κ°œμ„ λ˜κ³  μ‚¬μš©μž κ²½ν—˜ 이 ν–₯μƒλ©λ‹ˆλ‹€. λ‹€μŒμ€ μ„±λŠ₯을 μ΅œμ ν™”ν•˜κΈ° μœ„ν•œ νŒμž…λ‹ˆλ‹€.

  1. TLS 1.3 μ‚¬μš©: μ΅œμ‹  ν”„λ‘œν† μ½œμ„ μ‚¬μš©ν•΄ μ—°κ²° μ‹œκ°„μ„ λ‹¨μΆ•ν•©λ‹ˆλ‹€.
  2. μ„Έμ…˜ μž¬μ‚¬μš©(Session Resumption): κΈ°μ‘΄ μ„Έμ…˜ 정보λ₯Ό μž¬μ‚¬μš©ν•΄ ν•Έλ“œμ…°μ΄ν¬λ₯Ό λ‹¨μΆ•ν•©λ‹ˆλ‹€.
  3. OCSP Stapling ν™œμ„±ν™”: μΈμ¦μ„œ μƒνƒœλ₯Ό λΉ λ₯΄κ²Œ ν™•μΈν•˜μ—¬ ν•Έλ“œμ…°μ΄ν¬ 속도λ₯Ό λ†’μž…λ‹ˆλ‹€.

예제: Nginxμ—μ„œ OCSP Stapling ν™œμ„±ν™”

ssl_stapling on;
ssl_stapling_verify on;
resolver 8.8.8.8;

 


 

κ²°λ‘ : SSL ν•Έλ“œμ…°μ΄ν¬μ˜ 이해와 적용

SSL ν•Έλ“œμ…°μ΄ν¬λŠ” μ•ˆμ „ν•œ μ—°κ²°μ˜ 핡심 κ³Όμ • 으둜, λŒ€μΉ­ν‚€μ™€ λΉ„λŒ€μΉ­ν‚€λ₯Ό ν™œμš©ν•΄ μ‹ λ’°ν•  수 μžˆλŠ” 톡신을 보μž₯ν•©λ‹ˆλ‹€. TLS 1.3κ³Ό 같은 μ΅œμ‹  ν”„λ‘œν† μ½œμ„ μ‚¬μš©ν•˜λ©΄ λ³΄μ•ˆκ³Ό μ„±λŠ₯ λͺ¨λ‘λ₯Ό κ°œμ„ ν•  수 μžˆμŠ΅λ‹ˆλ‹€. λ˜ν•œ, μ€‘κ°„μž 곡격 방지와 μ„±λŠ₯ μ΅œμ ν™” λ₯Ό μœ„ν•΄ ν•Έλ“œμ…°μ΄ν¬ 섀정을 꼼꼼히 관리해야 ν•©λ‹ˆλ‹€.

 


 

FAQ

Q1. ν•Έλ“œμ…°μ΄ν¬κ°€ 였래 κ±Έλ¦¬λŠ” μ΄μœ λŠ” λ¬΄μ—‡μΈκ°€μš”?
A1. ν•Έλ“œμ…°μ΄ν¬ κ³Όμ •μ—μ„œ μ•”ν˜Έν™” ν‚€ κ΅ν™˜ κ³Ό μΈμ¦μ„œ 검증이 이루어지기 λ•Œλ¬Έμ— μ‹œκ°„μ΄ μ†Œμš”λ©λ‹ˆλ‹€. TLS 1.3을 μ‚¬μš©ν•˜λ©΄ 속도가 κ°œμ„ λ©λ‹ˆλ‹€.

Q2. TLS 1.2λŠ” 계속 μ‚¬μš©ν•΄λ„ μ•ˆμ „ν•œκ°€μš”?
A2. λ„€ , TLS 1.2λŠ” μ—¬μ „νžˆ μ•ˆμ „ν•˜μ§€λ§Œ, TLS 1.3으둜 μ—…κ·Έλ ˆμ΄λ“œν•˜λ©΄ 더 λ‚˜μ€ μ„±λŠ₯κ³Ό λ³΄μ•ˆ 을 확보할 수 μžˆμŠ΅λ‹ˆλ‹€.

Q3. ν•Έλ“œμ…°μ΄ν¬ 쀑 μΈμ¦μ„œ 였λ₯˜κ°€ λ°œμƒν•˜λ©΄ μ–΄λ–»κ²Œ ν•΄μ•Ό ν•˜λ‚˜μš”?
A3. μ„œλ²„μ˜ μΈμ¦μ„œ 경둜 λ₯Ό ν™•μΈν•˜κ³ , 쀑간 μΈμ¦μ„œκ°€ λˆ„λ½λ˜μ§€ μ•Šμ•˜λŠ”μ§€ μ κ²€ν•˜μ„Έμš”.

Q4. ν΄λΌμ΄μ–ΈνŠΈμ—μ„œ ν•Έλ“œμ…°μ΄ν¬ 둜그λ₯Ό μ–΄λ–»κ²Œ ν™•μΈν•˜λ‚˜μš”?
A4. OpenSSL μ΄λ‚˜ λΈŒλΌμš°μ € 개발자 도ꡬ λ₯Ό μ‚¬μš©ν•΄ SSL/TLS 둜그λ₯Ό 확인할 수 μžˆμŠ΅λ‹ˆλ‹€.

Q5. SSL Pinning은 λ¬΄μ—‡μΈκ°€μš”?
A5. SSL Pinning은 νŠΉμ • μΈμ¦μ„œλ₯Ό κ³ μ • ν•΄ μ€‘κ°„μž 곡격을 λ°©μ§€ν•˜λŠ” κΈ°μˆ μž…λ‹ˆλ‹€. 주둜 λͺ¨λ°”일 μ• ν”Œλ¦¬μΌ€μ΄μ…˜ μ—μ„œ μ‚¬μš©λ©λ‹ˆλ‹€.

 


λŒ“κΈ€