[CS] TLS/SSL HandShake

๋Œ€์นญํ‚ค์™€ ๋น„๋Œ€์นญํ‚ค

  • ๋Œ€์นญํ‚ค(๋น„๋ฐ€ํ‚ค) : ํ•˜๋‚˜์˜ ํ‚ค๋กœ ๋ฐ์ดํ„ฐ๋ฅผ ์•”ํ˜ธํ™”ํ•˜๊ณ  ๋ณตํ˜ธํ™”
  • ๋น„๋Œ€์นญํ‚ค(๊ณต๊ฐœํ‚ค) : ๊ณต๊ฐœํ‚ค์™€ ๊ฐœ์ธํ‚ค๋กœ ์•”ํ˜ธํ™” ๋ฐ ๋ณตํ˜ธํ™” ์ˆ˜ํ–‰
  • ์•”ํ˜ธํ™” - ๊ณต๊ฐœํ‚ค, ๋ณตํ˜ธํ™” - ๊ฐœ์ธํ‚ค
    • ๋ฐ์ดํ„ฐ๋ฅผ ์•”ํ˜ธํ™”ํ•˜์—ฌ ๋ณดํ˜ธํ•˜๊ธฐ ์œ„ํ•œ ๋ชฉ์ 
  • ์•”ํ˜ธํ™” - ๊ฐœ์ธํ‚ค, ๋ณตํ˜ธํ™” - ๊ณต๊ฐœํ‚ค
    • ์ธ์ฆ์„ ์œ„ํ•œ ๋ชฉ์ 

 

CA์™€ ์ธ์ฆ์„œ

  • CA : ์ธ์ฆ์„œ์˜ ์—ญํ• ์€ ํด๋ผ์ด์–ธํŠธ๊ฐ€ ์ ‘์†ํ•œ ์„œ๋ฒ„๊ฐ€ ์˜๋„ํ•œ ์„œ๋ฒ„๊ฐ€ ๋งž๋Š”์ง€ ๋ณด์žฅํ•˜๋Š” ๊ฒƒ
  • → ์ด ์—ญํ• ์„ ํ•˜๋Š” ๋ฏผ๊ฐ„๊ธฐ์—…์„ CA(Certificate Authority) ํ˜น์€ Root Certificate๋ผ๊ณ  ๋ถ€๋ฆ„
  • SSL ์ธ์ฆ์„œ : ์„œ๋น„์Šค์˜ ์ •๋ณด(์ธ์ฆ์„œ๋ฅผ ๋ฐœ๊ธ‰ํ•œ CA, ์„œ๋น„์Šค์˜ ๋„๋ฉ”์ธ ๋“ฑ)์™€ ์„œ๋ฒ„์ธก ๊ณต๊ฐœํ‚ค๊ฐ€ ๋“ค์–ด์žˆ์Œ

 

SSL Handshake

  • ํŒŒ๋ž€์ƒ‰ : TCP์˜ 3-way handshake๋กœ HTTPS๊ฐ€ TCP ๊ธฐ๋ฐ˜์˜ ํ”„๋กœํ† ์ฝœ์ด๊ธฐ ๋•Œ๋ฌธ์— ์•”ํ˜ธํ™” ํ˜‘์ƒ(SSL Handshake)์— ์•ž์„œ ์—ฐ๊ฒฐ์„ ์ƒ์„ฑํ•˜๊ธฐ ์œ„ํ•ด ์‹ค์‹œํ•˜๋Š” ๊ณผ์ •
  • ๋…ธ๋ž€์ƒ‰ : SSL Handshake

โœ… Client Hello : ํด๋ผ์ด์–ธํŠธ๊ฐ€ ์„œ๋ฒ„์— ์—ฐ๊ฒฐ์„ ์‹œ๋„ํ•˜๋ฉฐ ์ „์†กํ•˜๋Š” ํŒจํ‚ท

  • ์ž์‹ ์ด ์‚ฌ์šฉ ๊ฐ€๋Šฅํ•œ Cipher SUite ๋ชฉ๋ก, Session ID, SSL ํ”„๋กœํ† ์ฝœ ๋ฒ„์ „, Random Byte ๋“ฑ์„ ์ „๋‹ฌ
  • Cipher Suite๋Š” SSL Protocol version, ์ธ์ฆ์„œ ๊ฒ€์ •, ๋ฐ์ดํ„ฐ ์•”ํ˜ธํ™” ํ”„๋กœํ† ์ฝœ, Hash ๋ฐฉ์‹ ๋“ฑ์˜ ์ •๋ณด๋ฅผ ๋‹ด๊ณ  ์žˆ๋Š” ์กด์žฌ๋กœ ์„ ํƒ๋œ Cipher Suite์˜ ์•Œ๊ณ ๋ฆฌ์ฆ˜์— ๋”ฐ๋ผ ๋ฐ์ดํ„ฐ๋ฅผ ์•”ํ˜ธํ™” ํ•จ

→ ํด๋ผ์ด์–ธํŠธ๊ฐ€ ์‚ฌ์šฉ๊ฐ€๋Šฅํ•œ Cipher Suite๋ฅผ ์„œ๋ฒ„์— ์ œ๊ณตํ•˜๋Š” ๊ฒƒ์„ ์•Œ ์ˆ˜ ์žˆ์Œ

 

โœ… Server Hello : ํด๋ผ์ด์–ธํŠธ๊ฐ€ ๋ณด๋‚ด์˜จ Client Hello Packet์„ ๋ฐ›์•„ Cipher Suite ์ค‘ ํ•˜๋‚˜๋ฅผ ์„ ํƒํ•œ ๋‹ค์Œ ํด๋ผ์ด์–ธํŠธ์— ์ด๋ฅผ ์•Œ๋ฆผ

  • ์ž์‹ ์˜ SSL Protocol Version ๋“ฑ๋„ ๊ฐ™์ด ๋ณด๋ƒ„

→ 17๊ฐœ์˜€๋˜ Cipher Suite์—์„œ ์„œ๋ฒ„๊ฐ€ ์„ ํƒํ•œ Cipher Suite๋งŒ ์กด์žฌํ•˜๋Š” ๊ฒƒ์„ ์•Œ ์ˆ˜ ์žˆ์Œ

 

โœ… Certificate : ์„œ๋ฒ„๊ฐ€ ์ž์‹ ์˜ SSL ์ธ์ฆ์„œ๋ฅผ ํด๋ผ์ด์–ธํŠธ์—๊ฒŒ ์ „๋‹ฌ

  • ์ธ์ฆ์„œ ๋‚ด๋ถ€์—๋Š” ์„œ๋ฒ„๊ฐ€ ๋ฐœํ–‰ํ•œ ๊ณต๊ฐœํ‚ค(+๊ฐœ์ธํ‚ค๋Š” ์„œ๋ฒ„๊ฐ€ ์†Œ์œ )
  • ํด๋ผ์ด์–ธํŠธ๋Š” ์„œ๋ฒ„๊ฐ€ ๋ณด๋‚ธ CA์˜ ๊ฐœ์ธํ‚ค๋กœ ์•”ํ˜ธํ™”๋œ SSL ์ธ์ฆ์„œ๋ฅผ ์ด๋ฏธ ๋ชจ๋‘์—๊ฒŒ ๊ณต๊ฐœ๋œ CA์˜ ๊ณต๊ฐœํ‚ค๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ ๋ณตํ˜ธํ™” (๋ณตํ˜ธํ™”์— ์„ฑ๊ณตํ•˜๋ฉด ์ง„์งœ์ž„์ด ์ฆ๋ช…๋˜๋Š” ๊ฒƒ)
  • ํด๋ผ์ด์–ธํŠธ๋Š” ๋ฐ์ดํ„ฐ ์•”ํ˜ธํ™”์— ์‚ฌ์šฉํ•  ๋Œ€์นญํ‚ค(๋น„๋ฐ€ํ‚ค)๋ฅผ ์ƒ์„ฑํ•œ ํ›„ SSL ์ธ์ฆ์„œ ๋‚ด๋ถ€์— ๋“ค์–ด์žˆ๋˜ (์„œ๋ฒ„๊ฐ€ ๋ฐœํ–‰ํ•œ) ๊ณต๊ฐœํ‚ค๋ฅผ ์ด์šฉํ•ด ์•”ํ˜ธํ™”ํ•˜์—ฌ ์„œ๋ฒ„์—๊ฒŒ ์ „์†ก

→ SSL์ด ๋ฌด์Šจ ์•Œ๊ณ ๋ฆฌ์ฆ˜์œผ๋กœ ์•”ํ˜ธํ™”๋˜์—ˆ๊ณ , ๋ฌด์Šจ Hash์•Œ๊ณ ๋ฆฌ์ฆ˜์œผ๋กœ ์„œ๋ช…๋˜์—ˆ๋Š”์ง€ ํ™•์ธ ๊ฐ€๋Šฅ

 

โœ… Server Key Exchange/ Server Hello Done

  • ‘Server Key Exchange’๋Š” ์„œ๋ฒ„์˜ ๊ณต๊ฐœํ‚ค๊ฐ€ SSL ์ธ์ฆ์„œ ๋‚ด๋ถ€์— ์—†๋Š” ๊ฒฝ์šฐ, ์„œ๋ฒ„๊ฐ€ ์ง์ ‘ ์ „๋‹ฌํ•จ์„ ์˜๋ฏธ
    • ๊ณต๊ฐœํ‚ค๊ฐ€ SSL ์ธ์ฆ์„œ ๋‚ด๋ถ€์— ์žˆ์„ ๊ฒฝ์šฐ Server Key Exchange๋Š” ์ƒ๋žต๋จ
  • ์ธ์ฆ์„œ ๋‚ด๋ถ€์— ๊ณต๊ฐœํ‚ค๊ฐ€ ์žˆ๋‹ค๋ฉด ํด๋ผ์ด์–ธํŠธ๊ฐ€ CA์˜ ๊ณต๊ฐœํ‚ค๋ฅผ ํ†ตํ•ด ์ธ์ฆ์„œ๋ฅผ ๋ณตํ˜ธํ™”ํ•œ ํ›„ ์„œ๋ฒ„์˜ ๊ณต๊ฐœํ‚ค๋ฅผ ํ™•๋ณดํ•  ์ˆ˜ ์žˆ์Œ → ์„œ๋ฒ„๊ฐ€ ํ–‰๋™์„ ๋งˆ์ณค์Œ์„ ์ „๋‹ฌ

ํ‚ค ๊ตํ™˜ ์•Œ๊ณ ๋ฆฌ์ฆ˜ : Diffie-Hellmen ์•Œ๊ณ ๋ฆฌ์ฆ˜ → Server Key Exchange ๋ฐœ์ƒ

 

โœ… Client Key Exchange

  • ๋Œ€์นญํ‚ค(๋ฐ์ดํ„ฐ๋ฅผ ์‹ค์ œ๋กœ ์•”ํ˜ธํ™”ํ•˜๋Š” ํ‚ค)๋ฅผ ํด๋ผ์ด์–ธํŠธ๊ฐ€ ์ƒ์„ฑํ•˜์—ฌ SSL ์ธ์ฆ์„œ ๋‚ด๋ถ€์—์„œ ์ถ”์ถœํ•œ ์„œ๋ฒ„์˜ ๊ณต๊ฐœํ‚ค๋ฅผ ์ด์šฉํ•ด ์•”ํ˜ธํ™”ํ•œ ํ›„ ์„œ๋ฒ„์—๊ฒŒ ์ „๋‹ฌ
  • RSA ํ‚ค๊ตํ™˜ ์•Œ๊ณ ๋ฆฌ์ฆ˜์„ ์‚ฌ์šฉํ•˜๊ฒŒ๋˜๋ฉด ํด๋ผ์ด์–ธํŠธ๊ฐ€ ๋Œ€์นญํ‚ค(๋น„๋ฐ€ํ‚ค)๋ฅผ ์ƒ์„ฑํ•˜์—ฌ ์ธ์ฆ์„œ ๋‚ด๋ถ€์— ๋“ค์–ด ์žˆ๋˜ ์„œ๋ฒ„์˜ ๊ณต๊ฐœํ‚ค๋กœ ์•”ํ˜ธํ™”ํ•œ ํ›„ ์ „๋‹ฌํ•˜๊ฒŒ ๋จ

  • ์‚ฌ์ง„์˜ ๊ฒฝ์šฐ Diffie-Hellman(DH, DHE ๋“ฑ)์•Œ๊ณ ๋ฆฌ์ฆ˜์„ ์‚ฌ์šฉ
  • DH ์•Œ๊ณ ๋ฆฌ์ฆ˜๊ณผ ํƒ€์›๊ณก์„  ์•”ํ˜ธ์ธ ECDHE (Elliptic Curve DHE)๋ฅผ ์‚ฌ์šฉํ•˜๊ฒŒ ๋˜๋ฉด ํด๋ผ์ด์–ธํŠธ๊ฐ€ ๋ฐ์ดํ„ฐ๋ฅผ ์•”ํ˜ธํ™”ํ•  ๋Œ€์นญํ‚ค๋ฅผ ๋ณด๋‚ด๋Š” ๊ฒƒ์ด ์•„๋‹ˆ๋ผ ๋Œ€์นญํ‚ค๋ฅผ ์ƒ์„ฑํ•  ์žฌ๋ฃŒ๋ฅผ ํด๋ผ์ด์–ธํŠธ์™€ ์„œ๋ฒ„๊ฐ€ ๊ตํ™˜ํ•˜๊ฒŒ ๋จ
  • → ์„œ๋กœ ๊ตํ™˜ํ•œ ๊ฐ์ž์˜ ์žฌ๋ฃŒ๋ฅผ ํ•ฉ์ณ ๋™์ผํ•œ ๋Œ€์นญํ‚ค๋ฅผ ๋งŒ๋“ค ์ˆ˜ ์žˆ์Œ

โœ… Client Cipher Spec/ Finished

  • ํด๋ผ์ด์–ธํŠธ, ์„œ๋ฒ„ ๋ชจ๋‘๊ฐ€ ์„œ๋กœ์—๊ฒŒ ๋ณด๋‚ด๋Š” Packet์œผ๋กœ ๊ตํ™˜ํ•  ์ •๋ณด๋ฅผ ๋ชจ๋‘ ๊ตํ™˜ํ•œ ๋’ค ํ†ต์‹ ํ•  ์ค€๋น„๊ฐ€ ๋‹ค๋˜์—ˆ์Œ์„ ์•Œ๋ฆฌ๋Š” ํŒจํ‚ท
  • FInished ํŒจํ‚ท์„ ๋ณด๋‚ด์–ด SSL Handshake๋ฅผ ์ข…๋ฃŒ


์š”์•ฝ

์ฐธ๊ณ ์ž๋ฃŒ

HTTPS ํ†ต์‹ ๊ณผ์ • ์‰ฝ๊ฒŒ ์ดํ•ดํ•˜๊ธฐ #3(SSL Handshake, ํ˜‘์ƒ)

'CS > Network' ์นดํ…Œ๊ณ ๋ฆฌ์˜ ๋‹ค๋ฅธ ๊ธ€

[CS] Blocking/Non-blocking & Synchronous/Asynchronous  (1) 2024.01.30
[CS] Load Balancing (๋กœ๋“œ๋ฐธ๋Ÿฐ์‹ฑ)  (0) 2024.01.26
[CS] HTTP & HTTPS  (0) 2024.01.26
[CS] ๋Œ€์นญํ‚ค & ๊ณต๊ฐœํ‚ค  (1) 2023.11.29
[CS] UDP  (0) 2023.11.29