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

Network

TLS 1.2 Handshake λ™μž‘ κ³Όμ • + HTTPS κ°œμš”

ByteByteGo : SSL, TLS, HTTPS Explained μ˜μƒμ„ 보며 μ •λ¦¬ν•œ κΈ€μž…λ‹ˆλ‹€.

 

HTTPS κ°œμš”

TLS 1.2 Handshake λ™μž‘ κ³Όμ • μ„€λͺ…에 μ•žμ„œ λͺ‡ 가지 κ°œλ…μ„ μ†Œκ°œν•©λ‹ˆλ‹€.

 

β–Ά HTTPS : HTTP ν”„λ‘œν† μ½œμ„ TLS/SSL 둜 μ•”ν˜Έν™”ν•œ ν”„λ‘œν† μ½œμž…λ‹ˆλ‹€.

 

β–Ά SSL/TLS : μ•”ν˜Έν™” ν”„λ‘œν† μ½œλ‘œ, 인터넷을 톡해 μ „μ†‘λ˜λŠ” 데이터λ₯Ό λ³΄ν˜Έν•©λ‹ˆλ‹€. SSL 이 졜초의 μ•”ν˜Έν™” ν”„λ‘œν† μ½œμ΄λ©°, λ³΄μ•ˆμ΄ 더 ν–₯μƒλ˜κ³ , λ°œμ „ν•œ 것이 TLS ν”„λ‘œν† μ½œμž…λ‹ˆλ‹€.

 

β–Ά λŒ€μΉ­ν‚€ μ•”ν˜Έν™” 방식

μ•”ν˜Έν™”/λ³΅ν˜Έν™”μ— 같은 ν‚€λ₯Ό μ‚¬μš©ν•˜λŠ” μ–‘λ°©ν–₯ μ•”ν˜Έ λ°©μ‹μž…λ‹ˆλ‹€.

같은 ν‚€λ₯Ό μ‚¬μš©ν•˜κΈ° λ•Œλ¬Έμ— 미리 μ•ˆμ „ν•œ ν†΅λ‘œλ₯Ό 톡해 ν‚€κ°€ κ΅ν™˜λ˜μ–΄μ•Ό ν•©λ‹ˆλ‹€.

같은 ν‚€λ₯Ό μ‚¬μš©ν•˜κΈ° λ•Œλ¬Έμ— μ•”ν˜Έν™” 속도가 λΉ¨λΌμ„œ λŒ€μš©λŸ‰ 데이터 μ•”ν˜Έ μ²˜λ¦¬μ— μ‚¬μš©λ©λ‹ˆλ‹€.

같은 ν‚€λ₯Ό μ‚¬μš©ν•˜κΈ° λ•Œλ¬Έμ— 비ꡐ적 μ•ˆμ „ν•˜μ§€ λͺ»ν•΄ μ „μž μ„œλͺ…, 인증에 쓰이지 λͺ»ν•©λ‹ˆλ‹€.

 

β–Ά λΉ„λŒ€μΉ­ν‚€(κ³΅κ°œν‚€) μ•”ν˜Έν™” 방식

μ•”ν˜Έν™”/λ³΅ν˜Έν™”μ— λ‹€λ₯Έ ν‚€λ₯Ό μ‚¬μš©ν•˜λŠ” μ–‘λ°©ν–₯ μ•”ν˜Έ λ°©μ‹μž…λ‹ˆλ‹€.

κ³΅κ°œν‚€(λˆ„κ΅¬λ‚˜ κ°€μ§ˆ 수 μžˆλŠ” ν‚€)둜 μ•”ν˜Έν™” ν•œ 것은 κ°œμΈν‚€(λΉ„λ°€ν‚€)둜 λ³΅ν˜Έν™” ν•  수 있으며, κ·Έ 역인 κ°œμΈν‚€λ‘œ μ•”ν˜Έν™” ν•œ 것은 κ³΅κ°œν‚€λ‘œ λ³΅ν˜Έν™” ν•  수 μžˆμŠ΅λ‹ˆλ‹€.

λ‹€λ₯Έ ν‚€λ₯Ό μ‚¬μš©ν•˜κΈ° λ•Œλ¬Έμ— μ•”ν˜Έν™” 속도가 λŒ€μΉ­ν‚€ μ•”ν˜Έν™” 방식보닀 λŠλ¦½λ‹ˆλ‹€.

 

β–Ά μ „μž μ„œλͺ…

λΉ„λŒ€μΉ­ν‚€ μ•”ν˜Έν™” 방식을 μ‚¬μš©ν•©λ‹ˆλ‹€.

μ„œλͺ…μžλŠ” 개인 ν‚€λ₯Ό μ‚¬μš©ν•˜μ—¬ μ„œλͺ…ν•˜λ©΄, μˆ˜μ‹ μžλŠ” κ³΅κ°œν‚€λ₯Ό μ‚¬μš©ν•˜μ—¬ μ„œλͺ…을 ν™•μΈν•©λ‹ˆλ‹€.

 

TLS 1.2 Handshake λ™μž‘ κ³Όμ •

TLS handshake 은 TCP Handshake, Certificate Check, Key Exchage, Data Transmission 둜 총 4개의 κ³Όμ •μœΌλ‘œ λ‚˜λˆŒ 수 μžˆμŠ΅λ‹ˆλ‹€.

사진1. μ„œλ²„μ™€ ν΄λΌμ΄μ–ΈνŠΈκ°„μ˜ TLS Handshake 과정을 총 μ •λ¦¬ν•œ 사진

1. TCP Handshake

TCP Handshake λŠ” μ„œλ²„μ™€ ν΄λΌμ΄μ–ΈνŠΈκ°„ μ‹ λ’°μ„± μžˆλŠ” 연결을 μ„€μ •ν•˜λŠ” κ³Όμ •μœΌλ‘œ 3-way Handshake 라고 λΆ€λ¦…λ‹ˆλ‹€.

3-way Handshake λŠ” SYN(동기화), SYN + ACK(동기화+승인), ACK(승인) 의 μ„Έ λ‹¨κ³„λ‘œ κ΅¬λΆ„λ˜λ©° λ‹€λ₯Έ κΈ€μ—μ„œ μ†Œκ°œν•˜κ² μŠ΅λ‹ˆλ‹€.

사진2. TCP Handshake

2. Certificate Check

* 사진 3을 μ°Έκ³ ν•˜μ„Έμš”

 

2-1. Client Hello

ν΄λΌμ΄μ–ΈνŠΈλŠ” ν΄λΌμ΄μ–ΈνŠΈκ°€ μ§€μ›ν•˜λŠ” TLS 버전과 μ•”ν˜Έν™” μ•Œκ³ λ¦¬μ¦˜ λͺ©λ‘λ“€μ„ λ‹΄μ•„μ„œ μ„œλ²„μ—κ²Œ Hello λ©”μ‹œμ§€λ₯Ό λ³΄λƒ…λ‹ˆλ‹€.

 

2-2. Server Hello

μ„œλ²„λŠ” ν΄λΌμ΄μ–ΈνŠΈ λ©”μ‹œμ§€μ˜ TLS버전과 μ•”ν˜Έν™” μ•Œκ³ λ¦¬μ¦˜ λͺ©λ‘λ“€μ„ 기반으둜 μ‚¬μš©ν•  TLS버전과 μ•”ν˜Έν™” μ•Œκ³ λ¦¬μ¦˜μ„ μ„ νƒν•΄μ„œ ν΄λΌμ΄μ–ΈνŠΈμ—κ²Œ λ³΄λƒ…λ‹ˆλ‹€.

 

2-3. Certificate

μ„œλ²„λŠ” ν΄λΌμ΄μ–ΈνŠΈμ—κ²Œ μ„œλ²„μ˜ κ³΅κ°œν‚€κ°€ λ‹΄κΈ΄ μΈμ¦μ„œλ₯Ό λ³΄λƒ…λ‹ˆλ‹€.

 

2-4. Server Hello Done

μ„œλ²„λŠ” Certificate Check κ°€ λλ‚¬λ‹€λŠ” λ©”μ‹œμ§€λ₯Ό ν΄λΌμ΄μ–ΈνŠΈμ—κ²Œ λ³΄λƒ…λ‹ˆλ‹€.

사진3. Certificate Check

3. Key Exchange

Client Key Exchange ~ Finished 전체

ν΄λΌμ΄μ–ΈνŠΈλŠ” 랜덀 μ„Έμ…˜ν‚€λ₯Ό ν•˜λ‚˜ μƒμ„±ν•©λ‹ˆλ‹€.

그리고, μ„œλ²„μ˜ κ³΅κ°œν‚€λ‘œ ν•΄λ‹Ή 랜덀 μ„Έμ…˜ν‚€λ₯Ό μ•”ν˜Έν™”ν•©λ‹ˆλ‹€.

μ•”ν˜Έν™”ν•œ 랜덀 μ„Έμ…˜ν‚€λ₯Ό μ„œλ²„μ—κ²Œ 보내고, μ„œλ²„λŠ” 이 랜덀 μ„Έμ…˜ν‚€λ₯Ό κ°œμΈν‚€λ‘œ λ³΅ν˜Έν™”ν•©λ‹ˆλ‹€.

 

즉, ⭐랜덀 μ„Έμ…˜ν‚€λ₯Ό μ£Όκ³  λ°›κΈ° μœ„ν•΄ μ„œλ²„μ™€ ν΄λΌμ΄μ–ΈνŠΈλŠ” λΉ„λŒ€μΉ­ν‚€ μ•”ν˜Έν™” 방식을 μ‚¬μš©ν•©λ‹ˆλ‹€. 

사진4. Key Exchage 방식 및, μ„Έμ…˜ ν‚€ μ•”ν˜Έν™” λ³΅ν˜Έν™”ν•˜λŠ” κ³Όμ •

4. Data Transmission

λ“œλ””μ–΄ μ²˜μŒμ— 봀던 사진과 λ™μΌν•œ 사진이 λ‚˜μ™”μŠ΅λ‹ˆλ‹€.

 

이제 μ„œλ²„μ™€ ν΄λΌμ΄μ–ΈνŠΈλŠ” 같은 μ„Έμ…˜ν‚€λ₯Ό 가지고 μžˆμŠ΅λ‹ˆλ‹€.

이제 데이터λ₯Ό μ£Όκ³  받을 λ•Œ, ν΄λΌμ΄μ–ΈνŠΈλŠ” μ„Έμ…˜ν‚€λ‘œ 데이터λ₯Ό μ•”ν˜Έν™”ν•˜κ³  μ„œλ²„λŠ” μ„Έμ…˜ν‚€λ‘œ 데이터λ₯Ό λ³΅ν˜Έν™”ν•©λ‹ˆλ‹€.

 

즉, ⭐데이터λ₯Ό μ£Όκ³  받을 λ•Œ, μ„œλ²„μ™€ ν΄λΌμ΄μ–ΈνŠΈλŠ” λŒ€μΉ­ν‚€ μ•”ν˜Έν™” 방식을 μ‚¬μš©ν•©λ‹ˆλ‹€. 

 

사진5. TLS 1.2 Handshake 둜 μ΄λ£¨μ–΄μ§€λŠ” HTTPS 도식화

 

κ²°λ‘ 

⭐⭐⭐즉, μ„Έμ…˜ν‚€(λŒ€μΉ­ν‚€)λ₯Ό λ§Œλ“€κΈ° μ „κΉŒμ§€ ν΄λΌμ΄μ–ΈνŠΈμ™€ μ„œλ²„λŠ” λΉ„λŒ€μΉ­ν‚€ μ•”ν˜Έν™” 방식을 μ‚¬μš©ν•©λ‹ˆλ‹€.

μ΄λ ‡κ²Œ λ§Œλ“  κ³ μœ ν•œ μ„Έμ…˜ν‚€(λŒ€μΉ­ν‚€)둜 λ‘˜μ€ λŒ€μΉ­ν‚€ μ•”ν˜Έν™” λ°©μ‹μœΌλ‘œ 데이터λ₯Ό μ „μ†‘ν•˜κ²Œ λ©λ‹ˆλ‹€. ⭐⭐⭐

 

TLS 1.2 Handshake λŠ” λŒ€μΉ­ν‚€, λΉ„λŒ€μΉ­ν‚€ μ•”ν˜Έν™” 방식을 μ‚¬μš©ν•˜λ©° 이루어지며 HTTPS 을 μ΄μš©ν•  수 있게 λ˜μ—ˆμŠ΅λ‹ˆλ‹€.

ν•˜μ§€λ§Œ, μ‚¬μ§„μ—μ„œ μ•Œμˆ˜ μžˆλ“―μ΄ HTTPS κ°€ 이루어지기 μœ„ν•΄ 수 λ§Žμ€ λ„€νŠΈμ›Œν¬ 왕볡이 μΌμ–΄λ‚©λ‹ˆλ‹€.

 

TLS 1.3  μ—μ„œλŠ” λ„€νŠΈμ›Œν¬ 왕볡 횟수λ₯Ό 쀄이기 μœ„ν•΄ Handshake λ₯Ό μ΅œμ ν™” ν•˜κ³ , 더 κ°•λ ₯ν•œ μ•”ν˜Έν™” μ•Œκ³ λ¦¬μ¦˜μ„ μ‚¬μš©ν•˜μ—¬ μ•ˆμ „ν•˜κ²Œ ν‚€λ₯Ό κ΅ν™˜ν•˜λŠ” λ“± TLS 1.2 보닀 μ—…κ·Έλ ˆμ΄λ“œ λ˜μ—ˆλ‹€κ³  ν•©λ‹ˆλ‹€.

 

TLS 1.3 κ³Ό TLS 1.2 의 μ°¨μ΄λŠ” Cloudflare - TLS 1.3 을 μ‚¬μš©ν•˜λŠ” μ΄μœ λŠ”? μ—μ„œ μ°Ύμ•„ λ³Ό 수 μžˆκ² μŠ΅λ‹ˆλ‹€.