[Network] TLS(Transport Layer Security)

에이블·2022λ…„ 2μ›” 24일
0

Corporation

λͺ©λ‘ 보기
2/8

1. SSL(Secure Socket Layer)

πŸ“± μ „μ†‘κ³„μΈ΅μƒμ—μ„œ Client/Server에 λŒ€ν•œ 인증 및 데이터 μ•”ν˜Έν™” μˆ˜ν–‰

  • πŸ“Œ Client - Server 양단 κ°„ μ‘μš©κ³„μΈ΅ 및 TCP 전솑계측 μ‚¬μ΄μ—μ„œ μ•ˆμ „ν•œ λ³΄μ•ˆ 채널을 ν˜•μ„± ν•΄ μ£ΌλŠ” 역할을 ν•˜λŠ” λ³΄μ•ˆμš© ν”„λ‘œν† μ½œ

πŸ“± μ£Όμš” μ‘μš©

  • πŸ“‹ HTTP(HTTPS)/ FTP(FTPS) / TELNET / SMTP / SIP / POP / IMAP λ“±
  • πŸ“‹ 주둜, μ›Ή λΈŒλΌμš°μ €μ™€ μ›Ή μ„œλ²„ μ‚¬μ΄μ˜ μ•ˆμ „ν•œ λ³΄μ•ˆ 채널을 μ œκ³΅ν•˜κΈ° μœ„ν•΄ 많이 μ‚¬μš©

2. 역사

πŸ“± 졜초 μ œμ•ˆ : λ„·μŠ€μΌ€μ΄ν”„μ‚¬

  • πŸ“‹ SSL v1.0(94.07) - SSL v2.0(94.12) - SSL v3.0(96.11)

πŸ“± SSL의 ν‘œμ€€ν™” κΈ°μ—¬ - TLS ν‘œμ€€

  • πŸ“‹ SSL v3.0을 μ°Έκ³ λ‘œν•˜μ—¬ RFC 2246(99λ…„)으둜 ν‘œμ€€ν™”λœ 것이 TLS

3. κΈ°λ³Έ 정보

  • κ³΅κ°œν‚€ μ•Œκ³ λ¦¬μ¦˜μ„ 기반으둜 λ™μž‘
  • X.509 μΈμ¦μ„œ 지원
  • 기본적으둜 TCP 443 포트λ₯Ό 이용
  • OSI 7계측 쀑 4계측(Transport)λΆ€ν„° 7계측(Application)에 걸쳐 λ™μž‘
  • RSA, MD5, SHA-1 등을 μ‚¬μš©, SHA-1은 μ΅œκ·Όμ— SHA-256으둜 λŒ€λΆ€λΆ„ ꡐ체

4. ν”„λ‘œν† μ½œ ꡬ성

πŸ“‹ 4-1. Record ν”„λ‘œν† μ½œ

  • 기밀성을 μœ„ν•œ 데이터 μ•”ν˜Έν™”λ₯Ό μˆ˜ν–‰
  • 무결성을 μœ„ν•œ MAC을 생성
  • μ•„λž˜ 3개의 ν”„λ‘œν† μ½œ ν•˜μœ„μ— μœ„μΉ˜ν•˜λ©° μ‹€μ§ˆμ μΈ λ³΄μ•ˆμ„ μˆ˜ν–‰
  • λ‹¨νŽΈν™” -> μ••μΆ• -> MACμΆ”κ°€ -> μ•”ν˜Έν™”

πŸ“‹ 4-2. Handshake ν”„λ‘œν† μ½œ

μ„Έμ…˜μ— λŒ€ν•œ μ„Έμ…˜μ •λ³΄μ™€ μ—°κ²° 정보λ₯Ό κ³΅μœ ν•˜κΈ° μœ„ν•œ ν”„λ‘œν† μ½œ

  • 초기 μ—°κ²° μ‹œ μ„Έμ…˜ ν˜•μ„±μ„ κ΄€μž₯
  • λ™μž‘μˆœμ„œ
  1. client hello
    ν΄λΌμ΄μ–ΈνŠΈ -> μ„œλ²„
    ν΄λΌμ΄μ–ΈνŠΈ SSL 버전, ν΄λΌμ΄μ–ΈνŠΈ 생성 λ‚œμˆ˜, μ„Έμ…˜ μ‹λ³„μž, CipherSuit 리슀트

  2. server hello
    μ„œλ²„ -> ν΄λΌμ΄μ–ΈνŠΈ
    μ„œλ²„μ˜ SSL 버전, μ„œλ²„ 생성 λ‚œμˆ˜, μ„Έμ…˜ μ‹λ³„μž, ν΄λΌμ΄μ–ΈνŠΈμ˜ CipherSuit 쀑 선택

  3. server certificate
    μ„œλ²„ -> ν΄λΌμ΄μ–ΈνŠΈ
    μ„œλ²„ μΈμ¦μ„œ, κ³΅κ°œν‚€

  4. certificate request
    μ„œλ²„ -> ν΄λΌμ΄μ–ΈνŠΈ
    μ„œλ²„μ—μ„œ ν΄λΌμ΄μ–ΈνŠΈ μΈμ¦μ„œ μš”μ²­(μƒλž΅κ°€λŠ₯)

  5. server hello done
    μ„œλ²„ -> ν΄λΌμ΄μ–ΈνŠΈ
    μ„œλ²„μ—μ„œ ν•„μš”ν•œ λ‚΄μš©μ„ λͺ¨λ‘ μ „μ†‘ν–ˆμŒμ„μ•Œλ¦Ό

  6. client certificate
    ν΄λΌμ΄μ–ΈνŠΈ -> μ„œλ²„
    μ„œλ²„μ—μ„œ ν΄λΌμ΄μ–ΈνŠΈ μΈμ¦μ„œλ₯Ό μš”μ²­ν•œ 경우 μΈμ¦μ„œ 솑신(μƒλž΅ κ°€λŠ₯)

  7. client key exchange
    ν΄λΌμ΄μ–ΈνŠΈ -> μ„œλ²„
    μ„Έμ…˜ν‚€ μƒμ„±μš© pre_master_secret을 μ„œλ²„ κ³΅κ°œν‚€λ‘œ μ•”ν˜Έν™”ν•˜μ—¬ 전솑

  8. certificate vertify
    ν΄λΌμ΄μ–ΈνŠΈ -> μ„œλ²„
    ν΄λΌμ΄μ–ΈνŠΈ μΈμ¦μ„œλ₯Ό 확인할 수 μžˆλ„λ‘ μ „μžμ„œλͺ… λ°œμ†‘, μ„œλ²„μ—μ„œ 검증

  9. client finish
    ν΄λΌμ΄μ–ΈνŠΈ -> μ„œλ²„
    μ„œλ²„μ— change cipher spec을 μ „μ†‘ν•˜κ³  finished μ•Œλ¦Ό

  10. server finish
    μ„œλ²„ -> ν΄λΌμ΄μ–ΈνŠΈ
    ν΄λΌμ΄μ–ΈνŠΈμ— change cipher spec μ „μ†‘ν•˜κ³  finished μ•Œλ¦Ό

  • Cipher Suite
    • μ„œλ²„μ™€ ν΄λΌμ΄μ–ΈνŠΈκ°€ μ–΄λ–€ μ•”ν˜Έν™” 방식을 μ‚¬μš©ν• μ§€ μ •ν•˜κΈ° μœ„ν•΄ κ΅ν™˜ν•˜λŠ” λ¬Έμžμ—΄ κ°’
    • ν˜•μ‹: SSL/TLS-(ν‚€ κ΅ν™˜ μ•Œκ³ λ¦¬μ¦˜) - (인증 μ•Œκ³ λ¦¬μ¦˜) - WITH - (λŒ€μΉ­ν‚€ μ•Œκ³ λ¦¬μ¦˜) - (블둝 μ•”ν˜Έ 운용 방식) - (ν•΄μ‹œ μ•Œκ³ λ¦¬μ¦˜)
    • μ˜ˆμ‹œ : TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384

πŸ“‹ λ™μž‘λ°©μ‹

TLSλŠ” 전솑 계측 μœ„μ—μ„œ TLS 계측을 λ”°λ‘œ 두어 λ™μž‘ν•˜κ²Œ λœλ‹€.
TLSλ₯Ό μ‚¬μš©ν•˜λŠ” μ–΄ν”Œλ¦¬μΌ€μ΄μ…˜ ν”„λ‘œν† μ½œμ€ 끝에 sκ°€ λΆ™κ²Œ λœλ‹€.
HTTP -> HTTPS / FTP -> FTPS

HandShake
μ–‘μͺ½ 간에 연결을 μ„€μ •ν• λ•Œ λ³΄μ•ˆ ν˜‘μƒμ„ μœ„ν•œ ν”„λ‘œν† μ½œ

Change Cipher Spec
λ³΄μ•ˆ νŒŒλΌλ―Έν„°λ₯Ό λ³€κ²½ν•˜κ±°λ‚˜ μ μš©ν• λ•Œ μ‚¬μš©
예λ₯Ό λ“€μ–΄ λŒ€μΉ­ν‚€ μ•Œκ³ λ¦¬μ¦˜μ„ λ³€κ²½ν•  λ•Œ 이 ν”„λ‘œν† μ½œμ΄ μ‚¬μš©

Alert
였λ₯˜λ₯Ό 전솑할 λ•Œ μ‚¬μš©λ˜λŠ” ν”„λ‘œν† μ½œ

Application Data
μ‹€μ œ 데이터가 전솑될 λ•Œ μ‚¬μš©λ˜λŠ” ν”„λ‘œν† μ½œ

Record
ν˜‘μƒλœ λ³΄μ•ˆ νŒŒλΌλ―Έν„°λ₯Ό μ΄μš©ν•˜μ—¬ μ•”-λ³΅ν˜Έν™”, 무결성 검증 등을 μˆ˜ν–‰ν•˜λŠ” ν”„λ‘œν† μ½œ

profile
꺾이지 μ•ŠλŠ” 마음

0개의 λŒ“κΈ€