[Computer Science][Network] πŸ“œ TLS/SSL HandShake: μ•ˆμ „ν•œ ν†΅μ‹ μ˜ μ‹œμž‘

κΉ€μƒμš±Β·2024λ…„ 8μ›” 19일
post-thumbnail

HTTPSμ—μ„œ ν΄λΌμ΄μ–ΈνŠΈμ™€ μ„œλ²„κ°€ μ•ˆμ „ν•˜κ²Œ ν†΅μ‹ ν•˜κΈ° 전에 SSL μΈμ¦μ„œλ₯Ό 톡해 신뒰성을 ν™•μΈν•˜λŠ” 과정을 μ„€λͺ…ν•©λ‹ˆλ‹€.


1️⃣ ν΄λΌμ΄μ–ΈνŠΈμ˜ μ‹œμž‘: Client Hello

ν΄λΌμ΄μ–ΈνŠΈλŠ” μ„œλ²„μ— client hello λ©”μ‹œμ§€λ₯Ό μ „μ†‘ν•©λ‹ˆλ‹€. 이 λ©”μ‹œμ§€μ—λŠ” λ‹€μŒκ³Ό 같은 μ€‘μš”ν•œ 정보듀이 ν¬ν•¨λ©λ‹ˆλ‹€:

  • 버전: TLS/SSL ν”„λ‘œν† μ½œμ˜ 버전
  • μ•”ν˜Έ μ•Œκ³ λ¦¬μ¦˜: μ‚¬μš© κ°€λŠ₯ν•œ μ•”ν˜Έν™” μ•Œκ³ λ¦¬μ¦˜ λͺ©λ‘
  • μ••μΆ• 방식: 데이터 μ••μΆ• 방법
  • λ‚œμˆ˜: ν΄λΌμ΄μ–ΈνŠΈκ°€ μƒμ„±ν•œ λ‚œμˆ˜λ‘œ, μ„Έμ…˜ ν‚€λ₯Ό μƒμ„±ν•˜λŠ” 데 μ‚¬μš©λ©λ‹ˆλ‹€.
  • μ„Έμ…˜ ID (선택적): 이전 μ„Έμ…˜μ΄ μžˆμ—ˆλ‹€λ©΄ 이λ₯Ό μ‹λ³„ν•˜κΈ° μœ„ν•œ ID

πŸ’‘ μ„Έμ…˜: ν΄λΌμ΄μ–ΈνŠΈμ™€ μ„œλ²„ κ°„μ˜ ν•˜λ‚˜μ˜ μ—°κ²° μƒνƒœλ₯Ό μ˜λ―Έν•˜λ©°, 이 μ—°κ²° μƒνƒœμ—μ„œ μ‚¬μš©λ˜λŠ” μ•”ν˜Έν™” ν‚€, μΈμ¦μ„œ, μ•”ν˜Έν™” μ•Œκ³ λ¦¬μ¦˜ λ“±μ˜ 정보λ₯Ό ν¬ν•¨ν•©λ‹ˆλ‹€.

2️⃣ μ„œλ²„μ˜ 응닡: Server Hello

μ„œλ²„λŠ” ν΄λΌμ΄μ–ΈνŠΈκ°€ 보낸 λ©”μ‹œμ§€λ₯Ό μˆ˜μ‹ ν•˜κ³ , λ‹€μŒκ³Ό 같은 정보듀을 λ‹΄μ•„ server hello λ©”μ‹œμ§€λ‘œ μ‘λ‹΅ν•©λ‹ˆλ‹€:

  • μ„Έμ…˜ ID: ν΄λΌμ΄μ–ΈνŠΈκ°€ 보낸 μ„Έμ…˜ IDλ₯Ό μž¬μ‚¬μš©ν•˜κ±°λ‚˜ μƒˆλ‘œμš΄ μ„Έμ…˜ IDλ₯Ό μƒμ„±ν•©λ‹ˆλ‹€.
  • CA 곡개 μΈμ¦μ„œ: μ„œλ²„μ˜ κ³΅κ°œν‚€κ°€ ν¬ν•¨λœ μΈμ¦μ„œλ‘œ, μ΄ν›„μ˜ μ•”ν˜Έν™” 톡신에 μ‚¬μš©λ©λ‹ˆλ‹€.

πŸ›‘οΈ CA μΈμ¦μ„œ: ν΄λΌμ΄μ–ΈνŠΈμ™€ μ„œλ²„ κ°„μ˜ μ‹ λ’°λ₯Ό κ²€μ¦ν•˜κΈ° μœ„ν•œ μ€‘μš”ν•œ μš”μ†Œμž…λ‹ˆλ‹€. 이 μΈμ¦μ„œμ— ν¬ν•¨λœ μ„œλ²„μ˜ κ³΅κ°œν‚€λŠ” μ•”ν˜Έν™” κ³Όμ •μ—μ„œ 핡심적인 역할을 ν•©λ‹ˆλ‹€.

3️⃣ ν΄λΌμ΄μ–ΈνŠΈ μΈμ¦μ„œ 확인

ν΄λΌμ΄μ–ΈνŠΈλŠ” μ„œλ²„μ—μ„œ 받은 CA μΈμ¦μ„œμ˜ 신뒰성을 ν™•μΈν•©λ‹ˆλ‹€. μ΄λŠ” ν΄λΌμ΄μ–ΈνŠΈκ°€ μ‹ λ’°ν•˜λŠ” CA λͺ©λ‘κ³Ό λŒ€μ‘°ν•˜μ—¬ μ΄λ£¨μ–΄μ§‘λ‹ˆλ‹€.

4️⃣ Pre-Master Secret 생성

CA μΈμ¦μ„œκ°€ μ‹ λ’°ν•  λ§Œν•˜λ‹€κ³  νŒλ‹¨λ˜λ©΄, ν΄λΌμ΄μ–ΈνŠΈλŠ” μƒˆλ‘œμš΄ λ‚œμˆ˜ λ°”μ΄νŠΈλ₯Ό μƒμ„±ν•˜κ³ , 이λ₯Ό μ„œλ²„μ˜ κ³΅κ°œν‚€λ‘œ μ•”ν˜Έν™”ν•˜μ—¬ μ„œλ²„λ‘œ μ „μ†‘ν•©λ‹ˆλ‹€. 이 λ‚œμˆ˜λŠ” 이후 톡신에 μ‚¬μš©λ  λŒ€μΉ­ν‚€, 즉 pre-master-secret-keyλ₯Ό μ„€μ •ν•˜λŠ” 데 μ‚¬μš©λ©λ‹ˆλ‹€.

5️⃣ ν΄λΌμ΄μ–ΈνŠΈ μΈμ¦μ„œ 전솑 (선택 사항)

μ„œλ²„κ°€ ν΄λΌμ΄μ–ΈνŠΈ μΈμ¦μ„œλ₯Ό μš”κ΅¬ν•œ 경우, ν΄λΌμ΄μ–ΈνŠΈλŠ” μžμ‹ μ˜ μΈμ¦μ„œμ™€ ν•¨κ»˜ μžμ‹ μ˜ κ°œμΈν‚€λ‘œ μ•”ν˜Έν™”ν•œ μž„μ˜μ˜ λ°”μ΄νŠΈ λ¬Έμžμ—΄μ„ μ„œλ²„μ— μ „μ†‘ν•©λ‹ˆλ‹€.

6️⃣ μ„œλ²„μ˜ Pre-Master Secret λ³΅ν˜Έν™”

μ„œλ²„λŠ” ν΄λΌμ΄μ–ΈνŠΈλ‘œλΆ€ν„° 받은 λ‚œμˆ˜ λ°”μ΄νŠΈλ₯Ό μžμ‹ μ˜ κ°œμΈν‚€λ‘œ λ³΅ν˜Έν™”ν•˜μ—¬ pre-master-secret-keyλ₯Ό μ–»μŠ΅λ‹ˆλ‹€. 이 ν‚€λŠ” ν΄λΌμ΄μ–ΈνŠΈμ™€ μ„œλ²„ λͺ¨λ‘κ°€ κ³΅μœ ν•˜λŠ” λŒ€μΉ­ λ§ˆμŠ€ν„° ν‚€λ₯Ό μƒμ„±ν•˜λŠ” 데 μ‚¬μš©λ©λ‹ˆλ‹€.

πŸ”‘ Master Secret Key: ν΄λΌμ΄μ–ΈνŠΈμ™€ μ„œλ²„κ°€ 각각 μƒμ„±ν•œ pre-master-secret-keyλ₯Ό 기반으둜 μƒμ„±λœ ν‚€μž…λ‹ˆλ‹€. 이 ν‚€λ₯Ό 톡해 μ„œλ²„μ™€ ν΄λΌμ΄μ–ΈνŠΈλŠ” λ™μΌν•œ μ„Έμ…˜ ν‚€λ₯Ό λ„μΆœν•©λ‹ˆλ‹€.

7️⃣ ν΄λΌμ΄μ–ΈνŠΈμ˜ Finished λ©”μ‹œμ§€

ν΄λΌμ΄μ–ΈνŠΈλŠ” handshake 과정이 μ™„λ£Œλ˜μ—ˆλ‹€λŠ” finished λ©”μ‹œμ§€λ₯Ό μ„œλ²„μ— λ³΄λƒ…λ‹ˆλ‹€. 이 λ©”μ‹œμ§€μ—λŠ” μ§€κΈˆκΉŒμ§€ 주고받은 λͺ¨λ“  데이터λ₯Ό ν•΄μ‹±ν•œ 값이 ν¬ν•¨λ˜λ©°, 이 값을 λ§ˆμŠ€ν„° ν‚€λ‘œ μ•”ν˜Έν™”ν•˜μ—¬ μ „μ†‘ν•©λ‹ˆλ‹€.

πŸ”’ ν•΄μ‹±: λ©”μ‹œμ§€μ˜ 무결성을 ν™•μΈν•˜κΈ° μœ„ν•΄ λ©”μ‹œμ§€λ₯Ό κ³ μœ ν•œ ν•΄μ‹œ κ°’μœΌλ‘œ λ³€ν™˜ν•˜λŠ” κ³Όμ •μž…λ‹ˆλ‹€.

8️⃣ μ„œλ²„μ˜ Finished λ©”μ‹œμ§€ 확인

μ„œλ²„λŠ” ν΄λΌμ΄μ–ΈνŠΈμ˜ finished λ©”μ‹œμ§€λ₯Ό ν™•μΈν•˜κ³ , λ™μΌν•˜κ²Œ ν•΄μ‹±λœ 값을 λΉ„κ΅ν•˜μ—¬ μΌμΉ˜ν•˜λŠ”μ§€ ν™•μΈν•©λ‹ˆλ‹€. 이후, μ„œλ²„λ„ μžμ‹ μ˜ finished λ©”μ‹œμ§€λ₯Ό μƒμ„±ν•˜κ³  이λ₯Ό λŒ€μΉ­ν‚€λ‘œ μ•”ν˜Έν™”ν•˜μ—¬ ν΄λΌμ΄μ–ΈνŠΈμ— μ „μ†‘ν•©λ‹ˆλ‹€.

9️⃣ μ„Έμ…˜ ν‚€λ₯Ό ν†΅ν•œ μ•ˆμ „ν•œ 톡신 μ‹œμž‘

ν΄λΌμ΄μ–ΈνŠΈλŠ” μ„œλ²„μ˜ finished λ©”μ‹œμ§€λ₯Ό λ³΅ν˜Έν™”ν•˜μ—¬ μ‹ λ’°ν•  수 μžˆλŠ” 톡신이 μ‹œμž‘λ˜μ—ˆμŒμ„ ν™•μΈν•©λ‹ˆλ‹€. 이후, ν΄λΌμ΄μ–ΈνŠΈμ™€ μ„œλ²„λŠ” μƒμ„±λœ μ„Έμ…˜ ν‚€λ₯Ό μ‚¬μš©ν•˜μ—¬ μ•ˆμ „ν•˜κ²Œ 데이터λ₯Ό μ£Όκ³ λ°›μŠ΅λ‹ˆλ‹€.


이 과정을 톡해 ν΄λΌμ΄μ–ΈνŠΈμ™€ μ„œλ²„λŠ” μ„œλ‘œμ˜ 신뒰성을 ν™•μΈν•˜κ³ , μ•ˆμ „ν•œ 톡신을 μœ„ν•œ μ€€λΉ„λ₯Ό 마치게 λ©λ‹ˆλ‹€. TLS/SSL HandShakeλŠ” μ΄λŸ¬ν•œ λ³΄μ•ˆ 절차의 핡심이며, λͺ¨λ“  HTTPS ν†΅μ‹ μ˜ κΈ°μ΄ˆκ°€ λ©λ‹ˆλ‹€.

0개의 λŒ“κΈ€