LUCATHREE.COM

← Back to list
🧐 TIL

[λ°±μ—”λ“œ κΈ°λ³Έ κ°œλ… 정리] SSL / TLS

μž‘μ„±μΌ:
TILTerms

SSLκ³Ό TLS

μ•žμ„  ν¬μŠ€νŒ…μ—μ„œ 잠깐 μ„€λͺ…ν–ˆμ§€λ§Œ HTTP에 SSL/TLS ν”„λ‘œν† μ½œμ„ κ²°ν•©ν•˜μ—¬ λ³΄μ•ˆμ„ κ°•ν™”ν•œ 것이 HTTPS μ˜€λ‹€. κ·Έλ ‡λ‹€λ©΄ SSL/TLS κ°€ 무엇을 ν•˜κΈΈλž˜ λ³΄μ•ˆμ„ κ°•ν™”μ‹œμΌœ 쀄 수 μžˆλŠ” κ²ƒμΌκΉŒ?
SSL은 Secure Sockets Layer의 μ•½μžλ‘œ 1995년에 λ„·μŠ€μΌ€μ΄ν”„μ— μ˜ν•΄ νƒ„μƒν•œ μ›ΉλΈŒλΌμš°μ €μ™€ μ›Ήμ„œλ²„κ°„ 데이터 톡신을 μ•”ν˜Έν™”ν•˜λŠ” ν”„λ‘œν† μ½œμ΄λ‹€. κ·ΈλŸ¬λ‚˜ 1996년에 λ‚˜μ˜¨ SSL 3.0μ—μ„œ 섀계 κ²°ν•¨μœΌλ‘œ μΈν•œ λ³΄μ•ˆ 취약점이 λ°œκ²¬λ˜μ—ˆκ³  이λ₯Ό λ³΄μ™„ν•˜μ—¬ λ‚˜μ˜¨ 것이 TLS λ‹€.
TLSλŠ” Transport Layer Security의 μ•½μžλ‘œ SSL을 κ³„μŠΉν•˜μ—¬ ν˜„μž¬ μ›Ήμ—μ„œ μ“°μ΄λŠ” λ³΄μ•ˆ 톡신은 λŒ€λΆ€λΆ„ TLS κΈ°λ°˜μ΄λ‹€. 즉, ν”νžˆ β€œSSL μΈμ¦μ„œβ€λΌκ³  λΆ€λ₯΄λŠ” 것도 μ‹€μ œλ‘œλŠ” TLS μΈμ¦μ„œμ΄λ©° SSL은 역사적인 이름일 뿐 TLSκ°€ ν˜„μž¬μ˜ ν‘œμ€€μ΄λΌκ³  μ΄ν•΄ν•˜λ©΄ λœλ‹€.

SSL/TLSκ°€ ν•΄κ²°ν•˜λŠ” 문제

웹을 톡해 데이터λ₯Ό 주고받을 λ•ŒλŠ” λˆ„κ΅°κ°€ λ„€νŠΈμ›Œν¬λ₯Ό κ°€λ‘œμ±„μ„œ λ‚΄μš©μ„ ν›”μ³λ³΄λŠ” 도청(Eavesdropping), 데이터λ₯Ό μ€‘κ°„μ—μ„œ λ°”κΎΈλŠ” λ³€μ‘°(Modification), κ°€μ§œκ°€ μ§„μ§œ 톡신 λŒ€μƒμΈ μ²™ν•˜λŠ” μœ„μž₯(Spoofing) λ“±μ˜ μœ„ν—˜μ΄ μ‘΄μž¬ν•œλ‹€. 이λ₯Ό λ°©μ§€ν•˜κΈ° μœ„ν•΄ SSL/TLSλŠ” μ•„λž˜ μ„Έ κ°€μ§€λ₯Ό 보μž₯ν•œλ‹€.
  1. κΈ°λ°€μ„±(Confidentiality): 데이터λ₯Ό μ•”ν˜Έν™”ν•˜μ—¬ 도청을 λ°©μ§€
  1. 무결성(Integrity): 데이터가 쀑간에 λ³€μ‘°λ˜μ§€ μ•Šμ•˜μŒμ„ 보μž₯
  1. 인증(Authentication): μ„œλ²„(ν˜Ήμ€ ν΄λΌμ΄μ–ΈνŠΈ)의 신원을 검증
Β 

SSL/TLS의 λ™μž‘ 방식

TLSλŠ” 기본적으둜 TCP μœ„μ—μ„œ λ™μž‘ν•œλ‹€. κ·Έλž˜μ„œ TCP μ—°κ²°κ³Όμ •λΆ€ν„° λ‚˜μ—΄ν•˜λ©΄ μ‹œν€€μŠ€λŠ” μ•„λž˜μ™€ κ°™λ‹€.
  1. TCP 3-way handshake
  1. TLS ν•Έλ“œμ…°μ΄ν¬ β€” 톡신 μƒλŒ€μ— λŒ€ν•œ 검증 및 데이터λ₯Ό μ£Όκ³  λ°›κΈ° μœ„ν•΄ μ–΄λ–€ 방법을 μ‚¬μš©ν•  것인지 νŒŒμ•…
  1. 전솑 β€” μ•”ν˜Έν™” 및 λ³΅ν˜Έν™” 과정을 ν¬ν•¨ν•œ 데이터 전솑
  1. μ„Έμ…˜ μ’…λ£Œ (λ˜λŠ” 재개) β€” μ’…λ£Œ μ‹œ μ„Έμ…˜ ν‚€λŠ” 폐기

TLS ν•Έλ“œμ…°μ΄ν¬ κ³Όμ •

  1. Client Hello: ν΄λΌμ΄μ–ΈνŠΈκ°€ μ„œλ²„μ— 접속
      • ν΄λΌμ΄μ–ΈνŠΈ μΈ‘μ—μ„œ μ§€μ›ν•˜λŠ” μ•”ν˜Έν™” 방식을 μ„œλ²„μ—κ²Œ μ•Œλ¦°λ‹€.
      • ν΄λΌμ΄μ–ΈνŠΈμ—μ„œ μƒμ„±ν•œ λ¬΄μž‘μœ„ λ°”μ΄νŠΈ λ¬Έμžμ—΄μ„ μ „λ‹¬ν•œλ‹€.
  1. Server Hello: μ„œλ²„μ—μ„œ ν΄λΌμ΄μ–ΈνŠΈμ˜ 톡신에 응닡
      • μ„œλ²„ μΈ‘μ—μ„œλ„ μ§€μ›ν•˜λŠ” μ•”ν˜Έν™” 방식을 ν΄λΌμ΄μ–ΈνŠΈμ—κ²Œ μ•Œλ¦°λ‹€.
      • μ„œλ²„κ°€ λ³΄μœ ν•˜κ³  μžˆλŠ” μΈμ¦μ„œλ₯Ό ν΄λΌμ΄μ–ΈνŠΈμ—κ²Œ 보낸닀.
      • μ„œλ²„μ—μ„œ μƒμ„±ν•œ λ¬΄μž‘μœ„ λ°”μ΄νŠΈ λ¬Έμžμ—΄μ„ μ „λ‹¬ν•œλ‹€.
  1. μΈμ¦μ„œ 검증: ν΄λΌμ΄μ–ΈνŠΈκ°€ μΈμ¦μ„œμ˜ μœ νš¨μ„±μ„ 검증
      • λ””μ§€ν„Έ μΈμ¦μ„œλ₯Ό λ°œκΈ‰ν•˜κ³  κ΄€λ¦¬ν•˜λŠ” 제3자 기관인 CA(Client Authority)둜 λΆ€ν„° μ„œλ²„κ°€ 보낸 μΈμ¦μ„œκ°€ μœ νš¨ν•œμ§€λ₯Ό ν™•μΈν•œλ‹€.
        • μΈμ¦μ„œκ°€ μ‹ λ’°ν•  수 μžˆλŠ” CA에 μ˜ν•΄ μ„œλͺ…λ˜μ—ˆλŠ”μ§€ 확인
        • ν΄λΌμ΄μ–ΈνŠΈκ°€ μ ‘μ†ν•˜λŠ” 도메인과 μΈμ¦μ„œμ˜ 도메인 정보가 μΌμΉ˜ν•˜λŠ”μ§€ 확인
  1. ν΄λΌμ΄μ–ΈνŠΈ ν‚€ κ΅ν™˜: ν΄λΌμ΄μ–ΈνŠΈκ°€ μ„Έμ…˜ ν‚€λ₯Ό μƒμ„±ν•˜κΈ° μœ„ν•œ 데이터λ₯Ό μ„œλ²„μ— 전솑
      • ν΄λΌμ΄μ–ΈνŠΈκ°€ μ•žμ„œ κ΅ν™˜ν•œ λ¬΄μž‘μœ„ λ°”μ΄νŠΈ λ¬Έμžμ—΄μ„ μ‘°ν•©ν•˜μ—¬ Pre Master Secret을 μƒμ„±ν•œλ‹€.
      • μΈμ¦μ„œ μ•ˆμ— ν¬ν•¨λœ μ„œλ²„μ˜ κ³΅κ°œν‚€λ₯Ό μ‚¬μš©ν•˜μ—¬ Pre Master Secret을 μ•”ν˜Έν™” ν•˜κ³  μ„œλ²„μ— μ „μ†‘ν•œλ‹€.
  1. μ„Έμ…˜ ν‚€ 생성: ν΄λΌμ΄μ–ΈνŠΈμ™€ μ„œλ²„ κ°κ°μ—μ„œ 이번 톡신 μ„Έμ…˜ λ™μ•ˆ μ‚¬μš©ν•  μ„Έμ…˜ ν‚€(Session Key)λ₯Ό 생성
      • μ„œλ²„μ—μ„œλŠ” λ³΄μœ ν•˜κ³  μžˆλŠ” λΉ„κ³΅κ°œ ν‚€λ₯Ό μ‚¬μš©ν•˜μ—¬ ν΄λΌμ΄μ–ΈνŠΈκ°€ 보낸 Pre Master Secret을 λ³΅ν˜Έν™”ν•œλ‹€.
      • μ„œλ²„μ™€ ν΄λΌμ΄μ–ΈνŠΈ λͺ¨λ‘ Pre Master Secret을 μ‚¬μš©ν•˜μ—¬ Master Secret을 λ§Œλ“€κ³  Master Secret을 μ‚¬μš©ν•˜μ—¬ μ„Έμ…˜ ν‚€λ₯Ό λ§Œλ“ λ‹€.
      • 각각 λ§Œλ“€μ–΄μ§„ μ„Έμ…˜ ν‚€λŠ” λŒ€μΉ­ν‚€λ‘œμ¨ μ„œλ‘œ μΌμΉ˜ν•΄μ•Όν•œλ‹€.
  1. ν΄λΌμ΄μ–ΈνŠΈ μ™„λ£Œ(Client Finished): ν΄λΌμ΄μ–ΈνŠΈμ—μ„œ ν•Έλ“œμ…°μ΄ν¬κ°€ μ™„λ£Œλ˜μ—ˆμŒμ„ μ•Œλ¦Ό
      • ν΄λΌμ΄μ–ΈνŠΈκ°€ μ„Έμ…˜ ν‚€λ₯Ό μ‚¬μš©ν•˜μ—¬ μ•”ν˜Έν™” 된 β€œFinished” λ©”μ‹œμ§€λ₯Ό μ„œλ²„μ— 전솑
  1. μ„œλ²„ μ™„λ£Œ (Server Finished): μ„œλ²„μ—μ„œλ„ ν•Έλ“œμ…°μ΄ν¬κ°€ μ™„λ£Œλ˜μ—ˆμŒμ„ μ•Œλ¦Ό
      • μ„œλ²„μ—μ„œ μƒμ„±ν•œ μ„Έμ…˜ ν‚€λ₯Ό μ‚¬μš©ν•˜μ—¬ ν΄λΌμ΄μ–ΈνŠΈμ˜ μ™„λ£Œ λ©”μ‹œμ§€λ₯Ό λ³΅ν˜Έν™”ν•˜κ³  확인
      • μ„œλ²„μ—μ„œλ„ λ§ˆμ°¬κ°€μ§€λ‘œ μ„Έμ…˜ ν‚€λ₯Ό 톡해 μ•”ν˜Έν™” ν•œ μ™„λ£Œ λ©”μ‹œμ§€λ₯Ό ν΄λΌμ΄μ–ΈνŠΈμ— 전솑
  1. μ•”ν˜Έν™”λœ 톡신 μ‹œμž‘: μ΄ν›„μ˜ λͺ¨λ“  λ°μ΄ν„°λŠ” μ„Έμ…˜ ν‚€λ‘œ μ•”ν˜Έν™”λ˜μ–΄ 전솑

μΈμ¦μ„œμ™€ 인증기관 (CA, Client Authority)

  • μΈμ¦μ„œ(Certificate)λŠ” SSL/TLS의 핡심 μš”μ†Œ 쀑 ν•˜λ‚˜λ‘œ μ„œλ²„μ˜ κ³΅κ°œν‚€ 및 도메인 정보λ₯Ό λ‹΄κ³  μžˆλŠ” μ „μž λ¬Έμ„œλ‹€.
  • μΈμ¦μ„œλŠ” μ„œλ²„ μΈ‘μ—μ„œ CAλ₯Ό 톡해 λ³„λ„λ‘œ λ°œκΈ‰μ„ λ°›μ•„μ•Ό ν•˜λ©°, HTTPS ν”„λ‘œν† μ½œμ„ μ‚¬μš©ν•˜λ”λΌλ„ CAλ₯Ό ν†΅ν•œ μ„œλͺ…이 κ°–μΆ°μ§€μ§€ μ•Šμ•˜κ±°λ‚˜ μΈμ¦μ„œκ°€ λ§Œλ£Œλ˜μ—ˆμ„ 경우 λΈŒλΌμš°μ €κ°€ μ‹ λ’°ν•˜μ§€ μ•ŠλŠ”λ‹€.
Β