๋ณธ๋ฌธ ๋ฐ”๋กœ๊ฐ€๊ธฐ
5๏ธโƒฃ CS/Network

[Network] SSL/TLS

by seolhee2750 2022. 10. 13.

SSL/TLS์— ๋Œ€ํ•œ ๊ฐœ๋… ๋ฐ ์ž‘๋™ ๋ฐฉ์‹์— ๋Œ€ํ•ด ์ •๋ฆฌํ•ด๋ณด์•˜๋‹ค.

 

๐Ÿ“Ž SSL/TLS

๊ฐœ๋…

  • SSL์€ 1995๋…„ Netscape ์‚ฌ์˜ ์›น ๋ธŒ๋ผ์šฐ์ € ๋ณด์•ˆ ํ”„๋กœํ† ์ฝœ๋กœ ์ฒ˜์Œ ๋“ฑ์žฅํ•˜์˜€๊ณ ,
    1999๋…„ IETF์— ์˜ํ•ด SSL 3.1์„ ํ‘œ์ค€ํ™”ํ•œ TLS ๋ฒ„์ „ 1.0์ด ๋ฐœํ‘œ๋˜์—ˆ๋‹ค.
    ๐Ÿ‘‰ SSL๊ณผ TSL์€ ํ†ต์ƒ์ ์œผ๋กœ ๊ฐ™์€ ์˜๋ฏธ๋กœ ์“ฐ์ธ๋‹ค.
  • SSL/TLS์„ ์‚ฌ์šฉํ•˜์—ฌ ์•”ํ˜ธํ™”๋œ ์—ฐ๊ฒฐ์„ ํ•˜๋Š” HTTP๋ฅผ HTTPS๋ผ๊ณ  ํ•œ๋‹ค.
  • ๋Œ€์นญํ‚ค, ๋น„๋Œ€์นญํ‚ค ์•”ํ˜ธํ™”์˜ ๋‹จ์ ์„ ๋ณด์™„ํ•œ๋‹ค.
๐Ÿ“ ๋Œ€์นญํ‚ค, ๋น„๋Œ€์นญํ‚ค ์•”ํ˜ธํ™” ๋ฐฉ์‹

(1) ๋Œ€์นญํ‚ค ์•”ํ˜ธํ™”
์•”ํ˜ธํ™”, ๋ณตํ˜ธํ™”์— ์‚ฌ์šฉ๋˜๋Š” ํ‚ค๊ฐ€ ๋™์ผํ•˜๋‹ค.
๋น„๋Œ€์นญํ‚ค ์•”ํ˜ธํ™” ๋ฐฉ์‹์— ๋น„ํ•ด ์†๋„๊ฐ€ ๋น ๋ฅด๋‹ค๋Š” ์žฅ์ ์ด ์žˆ์ง€๋งŒ,
์ฒ˜์Œ ํ‚ค๋ฅผ ๊ตํ™˜ํ•˜๋Š” ๊ณผ์ •์—์„œ ํ‚ค ํƒˆ์ทจ์— ์˜ํ•œ ๋ณด์•ˆ ์•ฝ์ ์ด ์กด์žฌํ•œ๋‹ค.

(2) ๋น„๋Œ€์นญํ‚ค ์•”ํ˜ธํ™”
์•”ํ˜ธํ™”, ๋ณตํ˜ธํ™”์— ์‚ฌ์šฉ๋˜๋Š” ํ‚ค๊ฐ€ ๋‹ค๋ฅด๋‹ค.
๋Œ€์นญํ‚ค ์•”ํ˜ธํ™” ๋ฐฉ์‹์— ๋น„ํ•ด ์†๋„๊ฐ€ ๋Š๋ฆฌ๋‹ค๋Š” ๋‹จ์ ์ด ์žˆ์ง€๋งŒ,
๋Œ€์นญํ‚ค ์•”ํ˜ธํ™” ๋ฐฉ์‹์˜ ํ‚ค ๊ต๋กผ ๋ฌธ์ œ๋ฅผ ํ•ด๊ฒฐํ•  ์ˆ˜ ์žˆ๋‹ค.

โœ”๏ธ ๋น„๋Œ€์นญํ‚ค ์•”ํ˜ธํ™” ๋ฐฉ์‹ ์„ค๋ช…
๊ณต๊ฐœํ‚ค์™€ ๊ฐœ์ธํ‚ค๋ฅผ ๊ฐ€์ง€๋Š”๋ฐ,
๊ณต๊ฐœํ‚ค๋Š” ๋ชจ๋“  ์‚ฌ์šฉ์ž๊ฐ€ ์ ‘๊ทผ ๊ฐ€๋Šฅํ•œ ํ‚ค์ด๋ฉฐ, ๊ฐœ์ธํ‚ค๋Š” ๊ฐ ์‚ฌ์šฉ์ž๋งŒ์ด ๊ฐ€์ง€๋Š” ํ‚ค์ด๋‹ค.

1. A์™€ B ์‚ฌ์šฉ์ž๊ฐ€ ์žˆ๋‹ค๊ณ  ํ•  ๋•Œ, B๊ฐ€ ๊ณต๊ฐœํ‚ค/๊ฐœ์ธํ‚ค ์Œ์„ ์ƒ์„ฑํ•œ๋‹ค.
2. A๊ฐ€ B๋กœ ์ ‘์† ์š”์ฒญ์„ ๋ณด๋‚ธ๋‹ค.
3. B๋Š” A์—๊ฒŒ ์ž์‹ ์˜ ๊ณต๊ฐœํ‚ค๋ฅผ ์ „์†กํ•œ๋‹ค.
4. A๊ฐ€ B์˜ ๊ณต๊ฐœํ‚ค๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ ๋ฐ์ดํ„ฐ๋ฅผ ์•”ํ˜ธํ™”ํ•œ๋‹ค.
5. ์•”ํ˜ธํ™”๋œ ๋ฐ์ดํ„ฐ๋ฅผ B์—๊ฒŒ ์ „์†กํ•œ๋‹ค.
6. B๋Š” ์•”ํ˜ธํ™”๋œ ๋ฐ์ดํ„ฐ๋ฅผ B์˜ ๊ฐœ์ธํ‚ค๋กœ ๋ณตํ˜ธํ™”ํ•œ๋‹ค.
๐Ÿ‘‰ ๊ณต๊ฐœํ‚ค์™€ ์Œ์„ ์ด๋ฃจ๋Š” ๊ฐœ์ธํ‚ค๋งŒ์ด ๋ณตํ˜ธํ™”ํ•  ์ˆ˜ ์žˆ์œผ๋ฏ€๋กœ, B๋งŒ์ด ๋ฐ์ดํ„ฐ๋ฅผ ๋ณผ ์ˆ˜ ์žˆ๋‹ค.


SSL/TLS์˜ ์•”ํ˜ธํ™” ๋ฐฉ์‹

SSL/TLS๋Š” ๋Œ€์นญํ‚ค, ๋น„๋Œ€์นญํ‚ค ๋ฐฉ์‹์„ ํ˜ผํ•ฉํ•˜์—ฌ ์‚ฌ์šฉํ•จ์œผ๋กœ์จ ๊ทธ ๋‹จ์ ์„ ๊ทน๋ณตํ•œ๋‹ค.

์ฒ˜์Œ ํ‚ค ๊ตํ™˜ ์‹œ์—๋งŒ ๋น„๋Œ€์นญํ‚ค ๋ฐฉ์‹์„ ์‚ฌ์šฉํ•˜๊ณ , ์ดํ›„๋กœ๋Š” ๋Œ€์นญํ‚ค ๋ฐฉ์‹์„ ์‚ฌ์šฉํ•œ๋‹ค.

  1. A์™€ B ์‚ฌ์šฉ์ž๊ฐ€ ์žˆ๋‹ค๊ณ  ํ•  ๋•Œ, B๋Š” ๊ณต๊ฐœํ‚ค/๊ฐœ์ธํ‚ค ์Œ์„ ์ƒ์„ฑํ•œ๋‹ค.
  2. A๊ฐ€ B๋กœ ์ ‘์† ์š”์ฒญ์„ ๋ณด๋‚ธ๋‹ค.
  3. B๋Š” A์—๊ฒŒ ์ž์‹ ์˜ ๊ณต๊ฐœํ‚ค๋ฅผ ์ „์†กํ•œ๋‹ค.
  4. A๋Š” ์ž์‹ ์˜ ๋Œ€์นญํ‚ค๋ฅผ B์—์„œ ์ „๋‹ฌ ๋ฐ›์€ B์˜ ๊ณต๊ฐœํ‚ค๋กœ ์•”ํ˜ธํ™”ํ•œ๋‹ค.
  5. ์•”ํ˜ธํ™”ํ•œ ๋‹ค์‹ ์˜ ๋Œ€์นญํ‚ค๋ฅผ B์—๊ฒŒ ์ „๋‹ฌํ•œ๋‹ค.
  6. B๋Š” ์ž์‹ ์˜ ๊ฐœ์ธํ‚ค๋กœ ๋ณตํ˜ธํ™”ํ•˜์—ฌ A์˜ ๋Œ€์นญํ‚ค๋ฅผ ์–ป๋Š”๋‹ค.
  7. ์–ป์€ ๋Œ€์นญํ‚ค๋ฅผ ํ™œ์šฉํ•˜์—ฌ A์™€ B๋Š” ์•ˆ์ „ํ•˜๊ณ  ๋น ๋ฅด๊ฒŒ ๋Œ€์นญํ‚ค ์•”ํ˜ธํ™” ๋ฐฉ์‹์œผ๋กœ ํ†ต์‹ ํ•œ๋‹ค.

 

SSL/TLS Handshake

ํ†ต์‹ ์„ ํ•˜๋Š” ๋ธŒ๋ผ์šฐ์ €์™€ ์›น ์„œ๋ฒ„๊ฐ€ ์„œ๋กœ ์•”ํ˜ธํ™” ํ†ต์‹ ์„ ์‹œ์ž‘ํ•  ์ˆ˜ ์žˆ๋„๋ก

์‹ ๋ถ„์„ ํ™•์ธํ•˜๊ณ , ํ•„์š”ํ•œ ์ •๋ณด๋ฅผ ์ฃผ๊ณ  ๋ฐ›๋Š” ๊ณผ์ •์ด๋‹ค.

 

์•„๋ž˜๋Š” Handshake ๊ณผ์ •์„ ํ‘œํ˜„ํ•œ ๊ทธ๋ฆผ์ด๋‹ค. ํŒŒ๋ž€ ์นธ๊ณผ ๋…ธ๋ž€ ์นธ์€ ๋„คํŠธ์›Œํฌ ์ƒ์—์„œ ์ „๋‹ฌ๋˜๋Š” IP ํŒจํ‚ท์ด๋‹ค.

  • ํŒŒ๋ž€ ์นธ์€ TCP ๋ ˆ์ด์–ด์˜ 3-Way Handshake๋กœ, HTTPS๋Š” TCP ๊ธฐ๋ฐ˜์˜ ํ”„๋กœํ† ์ฝœ์ด๋ฏ€๋กœ
    SSL/TLS Handshake์— ์•ž์„œ ์—ฐ๊ฒฐ ์ƒ์„ฑ์„ ์œ„ํ•ด ์‹ค์‹œํ•˜๋Š” ๊ณผ์ •์ด๋‹ค.
  • ๋…ธ๋ž€ ์นธ์— ํ•ด๋‹นํ•˜๋Š” ํŒจํ‚ท๋“ค์ด SSL/TLS Handshake์ด๋‹ค.

https://www.cloudflare.com/ko-kr/learning/ssl/what-happens-in-a-tls-handshake/

  • ClientHello
    ํด๋ผ์ด์–ธํŠธ๊ฐ€ ์„œ๋ฒ„์— ์—ฐ๊ฒฐ์„ ์‹œ๋„ํ•˜๋ฉฐ ์ „์†กํ•œ๋‹ค.
  • ServerHello
    ์„œ๋ฒ„๋Š” ํด๋ผ์ด์–ธํŠธ๊ฐ€ ๋ณด๋‚ธ ClientHello ํŒจํ‚ท์„ ๋ฐ›๊ณ , ํด๋ผ์ด์–ธํŠธ์—๊ฒŒ ์•Œ๋ฆฐ๋‹ค. 
  • Certificate
    ์„œ๋ฒ„๋Š” ์ž์‹ ์˜ ์ธ์ฆ์„œ๋ฅผ ํด๋ผ์ด์–ธํŠธ์—๊ฒŒ ์ „๋‹ฌํ•œ๋‹ค. (์„œ๋ฒ„์˜ ๊ณต๊ฐœํ‚ค๊ฐ€ ๋“ค์–ด์žˆ๋‹ค.)
    ํด๋ผ์ด์–ธํŠธ๋Š” ์„œ๋ฒ„๊ฐ€ ๋ณด๋‚ธ ์•”ํ˜ธํ™”๋œ ์ธ์ฆ์„œ๋ฅผ CA์˜ ๊ณต๊ฐœํ‚ค๋กœ ๋ณตํ˜ธํ™”ํ•œ๋‹ค.
    ๐Ÿ‘‰ ๋ณตํ˜ธํ™” ์„ฑ๊ณต ์‹œ ํ•ด๋‹น ์ธ์ฆ์„œ๋Š” CA๊ฐ€ ์„œ๋ช…ํ•œ ๊ฒƒ์ด ๋งž์œผ๋‹ˆ ์ง„์งœ์ž„์ด ๊ฒ€์ฆ๋œ๋‹ค.
  • ServerKeyExchange
    ์„œ๋ฒ„์˜ ๊ณต๊ฐœํ‚ค๊ฐ€ ์ธ์ฆ์„œ ๋‚ด๋ถ€์— ์—†๋‹ค๋ฉด, ์„œ๋ฒ„๊ฐ€ ์ง์ ‘ ์ „๋‹ฌํ•œ๋‹ค๋Š” ๋œป์œผ๋กœ,
    ServerKeyExchange๊ฐ€ ํ•„์š”ํ•˜์ง€๋งŒ, ๋ฐ˜๋Œ€์˜ ๊ฒฝ์šฐ์—๋Š” ServerKeyExchange๋Š” ์ƒ๋žต๋œ๋‹ค.
  • ServerHelloDone
    ์ธ์ฆ์„œ ๋‚ด๋ถ€์— ์„œ๋ฒ„์˜ ๊ณต๊ฐœํ‚ค๊ฐ€ ์žˆ๋‹ค๋ฉด, ํด๋ผ์ด์–ธํŠธ๊ฐ€ CA์˜ ๊ณต๊ฐœํ‚ค๋ฅผ ํ†ตํ•ด ์ธ์ฆ์„œ๋ฅผ ๋ณตํ˜ธํ™”ํ•œ ํ›„
    ์„œ๋ฒ„์˜ ๊ณต๊ฐœํ‚ค๋ฅผ ํ™•๋ณดํ•  ์ˆ˜ ์žˆ๋‹ค. ๊ทธ๋ฆฌ๊ณ  ์„œ๋ฒ„๊ฐ€ ํ–‰๋™์„ ๋งˆ์ณค์Œ์„ ์ „๋‹ฌํ•œ๋‹ค.
  • ClientKeyExchange
    ํด๋ผ์ด์–ธํŠธ๋Š” ๋ฐ์ดํ„ฐ ์•”ํ˜ธํ™”์— ์‚ฌ์šฉํ•  ๋Œ€์นญํ‚ค๋ฅผ ์ƒ์„ฑํ•œ ํ›„,
    ์ธ์ฆ์„œ ๋‚ด๋ถ€์—์„œ ์ถ”์ถœํ•œ ์„œ๋ฒ„์˜ ๊ณต๊ฐœํ‚ค๋ฅผ ์ด์šฉํ•˜์—ฌ ์•”ํ˜ธํ™”ํ•˜์—ฌ ์„œ๋ฒ„์—๊ฒŒ ์ „๋‹ฌํ•œ๋‹ค.
    ๐Ÿ‘‰ ์—ฌ๊ธฐ์„œ ์ „๋‹ฌ๋œ ๋Œ€์นญํ‚ค๊ฐ€ Handshake์˜ ๋ชฉ์ ์ด์ž, ์‹ค์ œ๋กœ ๋ฐ์ดํ„ฐ๋ฅผ ์•”ํ˜ธํ™”ํ•  ํ‚ค์ด๋‹ค.
  • ChangeCipherSpec
    ๊ตํ™˜ํ•ด์•ผ ํ•  ์ •๋ณด๋ฅผ ๋ชจ๋‘ ๊ตํ™˜ํ•œ ๋’ค, ๋ชจ๋“  ์ค€๋น„๊ฐ€ ์™„๋ฃŒ๋˜์—ˆ์Œ์„ ์•Œ๋ฆฌ๋Š” ํŒจํ‚ท์ด๋‹ค.
  • Finished
    HandShake๋ฅผ ์ข…๋ฃŒํ•œ๋‹ค.

 

SSL/TLS์ด ์ œ๊ณตํ•˜๋Š” ๋ณด์•ˆ ์„œ๋น„์Šค

  • ๊ธฐ๋ฐ€์„ฑ
    ๋Œ€์นญํ‚ค, ๋น„๋Œ€์นญํ‚ค ์•”ํ˜ธํ™” ๋ฐฉ์‹์„ ์‚ฌ์šฉํ•˜์—ฌ ๊ธฐ๋ฐ€์„ฑ์„ ์ œ๊ณตํ•œ๋‹ค.
  • ๋ฌด๊ฒฐ์„ฑ
    ๋ฐ์ดํ„ฐ ์œ„๋ณ€์กฐ๋ฅผ ํ™•์ธํ•œ๋‹ค.
  • ์ธ์ฆ
    ์—ฐ๊ฒฐ ์ดˆ๊ธฐ ์„ค์ •์—์„œ ์ฃผ๊ณ  ๋ฐ›๋Š” ์ธ์ฆ์„œ๋ฅผ ํ†ตํ•ด ์‹ ๋ขฐํ•  ์ˆ˜ ์žˆ๋Š” ์‚ฌ์šฉ์ž์ธ์ง€ ๋ณด์žฅํ•  ์ˆ˜ ์žˆ๋‹ค.

์ฐธ๊ณ 

'5๏ธโƒฃ CS > Network' ์นดํ…Œ๊ณ ๋ฆฌ์˜ ๋‹ค๋ฅธ ๊ธ€

[Network] Sync/Async์™€ Blocking/Non-blocking  (0) 2022.10.21
[Network] TCP์˜ 3-Way HandShake์™€ 4-Way HandShake  (0) 2022.10.13

๋Œ“๊ธ€