๋ณธ๋ฌธ ๋ฐ”๋กœ๊ฐ€๊ธฐ
๐ŸŽ iOS/๐Ÿ“– ๊ฐœ๋…

[Network] TLS/SSL

by MINT09 2024. 10. 28.
์•”ํ˜ธํ™” ํ†ต์‹  ํ”„๋กœํ† ์ฝœ

SSL(Secure Socket Layer) / TLS(Transport Layer Security)๋Š” ๋ชจ๋‘ ์›น ๋ธŒ๋ผ์šฐ์ €์™€ ์›น ์„œ๋ฒ„ ๊ฐ„ ํ†ต์‹ ์„ ์•”ํ˜ธํ™”ํ•˜๋Š” ํ”„๋กœํ† ์ฝœ์ด๋‹ค. SSL์€ ์›น ๋ธŒ๋ผ์šฐ์ € ๊ฐœ๋ฐœ์‚ฌ์—์„œ ๋งŒ๋“  ํ”„๋กœํ† ์ฝœ๋กœ ์ธํ„ฐ๋„ท ๊ธฐ์ˆ  ํ‘œ์ค€ํ™” ๋‹จ์ฒด์ธ IETF๊ฐ€ TLS๋กœ ๋‹ค์‹œ ์„ค๊ณ„ํ•˜์—ฌ ์ธํ„ฐ๋„ท ํ‘œ์ค€์œผ๋กœ ์‚ผ์•˜๋‹ค.

๐Ÿ“– ์žฅ์ 

  • ๊ธฐ๋ฐ€์„ฑ(์•”ํ˜ธํ™”) : ์„œ๋ฒ„์™€ ์ฃผ๊ณ  ๋ฐ›๋Š” ๋ฐ์ดํ„ฐ๊ฐ€ ์Šค๋‹ˆํ•‘ ๋˜๋Š” ๊ฒƒ์„ ๋ฐฉ์ง€ํ•œ๋‹ค.
  • ๋ฐ์ดํ„ฐ ๋ฌด๊ฒฐ์„ฑ : ํŒจํ‚ท ์ „๋‹ฌ ๊ณผ์ •์—์„œ ๋ฐ์ดํ„ฐ๊ฐ€ ์ œ 3์ž์— ์˜ํ•ด์„œ ์•…์˜๋กœ ๋ณ€๊ฒฝ๋˜๋Š” ๊ฒƒ์„ ๋ฐฉ์ง€ํ•œ๋‹ค.
  • ์„œ๋ฒ„ ์ธ์ฆ : ์„œ๋ฒ„๊ฐ€ ์‹ ๋ขฐํ•  ์ˆ˜ ์žˆ๋Š” ์„œ๋ฒ„๋ผ๋Š” ๊ฒƒ์„ ํ™•์ธํ•œ๋‹ค.

๐Ÿ“– ์•”ํ˜ธํ™”

TLS๋Š” ๋ณด์•ˆ๊ณผ ์„ฑ๋Šฅ์ƒ์˜ ์ด์œ ๋กœ ๋‘ ๊ฐ€์ง€ ์•”ํ˜ธํ™” ๋ฐฉ๋ฒ•์„ ํ˜ผ์šฉํ•ด์„œ ์‚ฌ์šฉํ•œ๋‹ค. ์•”ํ˜ธํ™”๋ฅผ ์œ„ํ•ด์„œ๋Š” ํ‚ค๊ฐ€ ํ•„์š”ํ•˜๋‹ค.

์ด๋•Œ ์•”ํ˜ธํ™”์™€ ๋ณตํ˜ธํ™”์— ์‚ฌ์šฉํ•˜๋Š” ํ‚ค๋Š” ์„œ๋กœ ๋™์ผ ํ•  ์ˆ˜๋„, ๋‹ค๋ฅผ ์ˆ˜๋„ ์žˆ๋‹ค.

๋Œ€์นญํ‚ค ์•”ํ˜ธํ™”(Symmetric Key Algorithm)

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

๋น„๋Œ€์นญํ‚ค ์•”ํ˜ธํ™”

  • ํ•˜๋‚˜์˜ ํ‚ค๋ฅผ ๊ฐ–๋Š” ๋Œ€์นญํ‚ค ์•”ํ˜ธ์™€ ๋ฐฉ์‹๊ณผ ๋‹ฌ๋ฆฌ, ๋น„๋Œ€์นญํ‚ค ์•”ํ˜ธํ™” ๋ฐฉ์‹์€ ํ•œ ์Œ์˜ ํ‚ค๋ฅผ ๊ฐ–๊ฒŒ ๋œ๋‹ค. ์ด ํ•œ ์Œ์˜ ํ‚ค๋ฅผ ๊ฐ๊ฐ ์•”ํ˜ธํ™”, ๋ณตํ˜ธํ™” ๊ณผ์ •์—์„œ ์‚ฌ์šฉํ•œ๋‹ค.
  • ํ•˜๋‚˜๋Š” ๊ณต๊ฐœ ํ‚ค(Public Key), ๋‹ค๋ฅธ ํ•˜๋‚˜๋Š” ๊ฐœ์ธํ‚ค(Private Key)๋ผ๊ณ  ๋ถ€๋ฅธ๋‹ค. ํ•˜๋‚˜์˜ ํ‚ค๋กœ ์•”ํ˜ธํ™”๋ฅผ ํ•˜์˜€๋‹ค๋ฉด ๋‹ค๋ฅธ ๋‚จ์€ ํ‚ค๋กœ ๋ณตํ˜ธํ™”๋ฅผ ํ•  ์ˆ˜ ์žˆ๋‹ค. ์•”ํ˜ธํ™”์— ์‚ฌ์šฉํ•œ ํ‚ค๋กœ ๋‹ค์‹œ ๋ณตํ˜ธํ™”๊ฐ€ ๋ถˆ๊ฐ€๋Šฅํ•˜๋‹ค. ์ด๋ ‡๊ฒŒ ํ•œ ์Œ์˜ ํ‚ค๋กœ ์•”ํ˜ธํ™” ๋ฐ ๋ณตํ˜ธํ™”๋ฅผ ํ•˜๋Š” ๋ฐฉ์‹์„ RSA ์•Œ๊ณ ๋ฆฌ์ฆ˜์ด๋ผ ํ•œ๋‹ค.
  • ๋น„๋Œ€์นญํ‚ค ์•”ํ˜ธํ™”๋ฅผ ์‚ฌ์šฉํ•˜๋ฉด ์ƒ๋Œ€๋ฐฉ์—๊ฒŒ ์ „๋‹ฌํ•˜๋Š” ๊ณต๊ฐœํ‚ค๋ฅผ ๋„์ค‘์— ํ•ดํ‚น๋‹นํ•œ๋‹ค ํ•ด๋„ ๊ฐœ์ธํ‚ค๋ฅผ ์•Œ์ง€ ๋ชปํ•˜๊ธฐ ๋•Œ๋ฌธ์— ๋ณตํ˜ธํ™”๋ฅผ ํ•  ์ˆ˜ ์—†๋‹ค.

๐Ÿ“– TLS ์•”ํ˜ธํ™” ๋ฐฉ์‹

๋น„๋Œ€์นญํ‚ค ์•”ํ˜ธํ™”๋Š” RSA ์•Œ๊ณ ๋ฆฌ์ฆ˜์„ ์ด์šฉํ•œ ์•”ํ˜ธํ™” ๋ฐฉ์‹์œผ๋กœ ๋ณต์žกํ•œ ์ˆ˜ํ•™์  ์›๋ฆฌ๋กœ ์ด๋ฃจ์–ด์ ธ ์žˆ์–ด CPU ๋ฆฌ์†Œ์Šค๋ฅผ ํฌ๊ฒŒ ์†Œ๋ชจํ•œ๋‹ค๋Š” ๋‹จ์ ์ด ์žˆ๋‹ค. ์ด๋ฅผ ํ•ด๊ฒฐํ•˜๊ธฐ ์œ„ํ•ด TLS์—์„œ๋Š” ๋‘ ๊ฐ€์ง€์˜ ์•”ํ˜ธํ™” ๋ฐฉ์‹์„ ๋ชจ๋‘ ์‚ฌ์šฉํ•˜์—ฌ ๋‘ ๋ฐฉ์‹์„ ๋ณด์™„ํ•˜์—ฌ ์‚ฌ์šฉํ•œ๋‹ค.

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

๐Ÿ“– ์ธ์ฆ์„œ

์„œ๋ฒ„๊ฐ€ ์‹ ๋ขฐํ•  ์ˆ˜ ์žˆ๋Š” ์„œ๋ฒ„์ธ์ง€๋ฅผ ํ™•์ธํ•˜๊ธฐ ์œ„ํ•ด ํ•„์š”ํ•˜๋‹ค. ์ธ์ฆ์„œ๋Š” ๋‹ค์Œ๊ณผ ๊ฐ™์€ ์ •๋ณด๋“ค์„ ํฌํ•จํ•œ๋‹ค.

  1. ์„œ๋น„์Šค ์ •๋ณด(์ธ์ฆ์„œ๋ฅผ ๋ฐœ๊ธ‰ํ•œ CA, ์„œ๋น„์Šค์˜ ๋„๋ฉ”์ธ ๋“ฑ)
  2. ์„œ๋ฒ„ ์ธก ๊ณต๊ฐœ ํ‚ค(๊ณต๊ฐœ ํ‚ค ์•”ํ˜ธํ™” ๋ฐฉ์‹)
  3. ์ง€๋ฌธ, ๋””์ง€ํ„ธ ์„œ๋ช… ๋“ฑ

๐Ÿ“– CA(Certificate Authority)

CA๋Š” ์ธ์ฆ์„œ๋ฅผ ๋ฐœ๊ธ‰ํ•˜๋Š” ๊ธฐ๊ด€์œผ๋กœ, Root Certificate๋ผ๊ณ ๋„ ๋ถ€๋ฅธ๋‹ค. TLS ํ†ต์‹ ์„ ํ•˜๋ ค๋ฉด ์ด CA๋ฅผ ํ†ตํ•ด์„œ ์ธ์ฆ์„œ๋ฅผ ๋ฐœ๊ธ‰๋ฐ›์•„์•ผ ํ•œ๋‹ค. CA๋Š” ์ž์ฒด์ ์œผ๋กœ ๊ณต๊ฐœ ํ‚ค์™€ ๊ฐœ์ธ ํ‚ค๋ฅผ ๊ฐ€์ง€๊ณ  ์žˆ๋‹ค. CA๋กœ๋ถ€ํ„ฐ ์ธ์ฆ์„œ๋ฅผ ๋ฐœ๊ธ‰๋ฐ›๊ธฐ ์œ„ํ•ด์„œ๋Š” ๋‹ค์Œ๊ณผ ๊ฐ™์€ ๋ฐฉ์‹์„ ๋”ฐ๋ฅธ๋‹ค.

  1. ๋ฐœ๊ธ‰ ๋ฐ›๊ณ ์ž ํ•˜๋Š” ๊ธฐ๊ด€์€ ์ž์‹ ์˜ ์‚ฌ์ดํŠธ ์ •๋ณด(๋„๋ฉ”์ธ ๋“ฑ)๊ณผ ๊ณต๊ฐœ ํ‚ค๋ฅผ CA์—๊ฒŒ ์ œ์ถœํ•œ๋‹ค.
  2. CA์—์„œ ์ธ์ฆ์„œ๋ฅผ ๋ฐœ๊ธ‰ ๋ฐ›๊ณ ์ž ํ•˜๋Š” ๊ธฐ๊ด€์— ๋Œ€ํ•ด ๊ฒ€์ฆ์„ ์ง„ํ–‰ํ•œ๋‹ค.
  3. CA๋Š” ๊ฒ€์ฆ์„ ๊ฑฐ์นœ ํ›„ ๋ฐœ๊ธ‰ ๋ฐ›๊ณ ์ž ํ•˜๋Š” ๊ธฐ๊ด€์˜ ๊ณต๊ฐœ ํ‚ค๋ฅผ ํ•ด์‹œ(SHA-256 ๋“ฑ)ํ•œ๋‹ค. ์ด๋ ‡๊ฒŒ ํ•ด์‹œํ•œ ๊ฐ’์„ Finger Print(์ง€๋ฌธ)๋ผ๊ณ  ํ•œ๋‹ค.
  4. Finger Print๋ฅผ CA์˜ ๊ฐœ์ธ ํ‚ค๋กœ ์•”ํ˜ธํ™”ํ•˜๊ณ , ์ธ์ฆ์„œ์˜ ๋ฐœ๊ธ‰์ž ์„œ๋ช…์œผ๋กœ ๋“ฑ๋กํ•œ๋‹ค. ์ด๋ ‡๊ฒŒ ์„œ๋ช…๋œ ๊ฒƒ์„ ๋””์ง€ํ„ธ ์„œ๋ช…(Digital Signing)์ด๋ผ๊ณ  ํ•œ๋‹ค.
  5. ์ด์ œ CA๋Š” ๋””์ง€ํ„ธ ์„œ๋ช…, ๋ฐœ๊ธ‰์ž ์ •๋ณด ๋“ฑ์ด ๋“ฑ๋ก๋˜์–ด ์žˆ๋Š” ์ธ์ฆ์„œ๋ฅผ ๋ฐœ๊ธ‰ํ•œ๋‹ค.

์ด๋Ÿฌํ•œ ๋ฐฉ์‹์œผ๋กœ ์ƒ์œ„ ์ธ์ฆ ๊ธฐ๊ด€์ด ํ•˜์œ„ ์ธ์ฆ์„œ๊ฐ€ ํฌํ•จํ•˜๊ณ  ์žˆ๋Š” ๊ณต๊ฐœ ํ‚ค(์ธ์ฆ์„œ)๋ฅผ ์ƒ์œ„ ๊ธฐ๊ด€์˜ ๊ฐœ์ธ ํ‚ค๋กœ ์•”ํ˜ธํ™”ํ•˜์—ฌ ์ƒํ˜ธ ๋ณด์ฆํ•˜๊ฒŒ ๋˜๋Š” ๊ฒƒ์„ ์ธ์ฆ์„œ ์ฒด์ธ(Certificate Chain)์ด๋ผ๊ณ  ํ•œ๋‹ค.

๋ฐœ๊ธ‰๋ฐ›๋Š” CA ๊ธฐ๊ด€์ด Root CA๊ฐ€ ์•„๋‹ˆ๋ผ๋ฉด, ์ด CA ๊ธฐ๊ด€๋งˆ์ € ๋˜ ์ƒ์œ„ CA์—๊ฒŒ ์ธ์ฆ์„œ๋ฅผ ๋ฐœ๊ธ‰๋ฐ›๋Š”๋‹ค. ๋ณดํ†ต 3๋‹จ๊ณ„์— ๊ฑธ์ณ์„œ ์ธ์ฆ์„œ ์ฒด์ธ์ด ์ด๋ฃจ์–ด์ง„๋‹ค.

  1. tistory.com์˜ ์ธ์ฆ์„œ๋Š” ๊ทธ ์ƒ์œ„ ์ธ์ฆ์„œ์ธ Thawte TLS RSA CA G1์˜ ์ธ์ฆ๊ธฐ๊ด€(Intermediate CA)์˜ ๊ฐœ์ธ ํ‚ค๋กœ ์•”ํ˜ธํ™” ๋œ ๊ฒƒ์ด๋‹ค.
  2. Thawte TLS RSA CA G1 ์ธ์ฆ์„œ๋Š” ๊ทธ ์ƒ์œ„ ์ธ์ฆ์„œ์ธ DigiCert Global Root CA G2์˜ ์ธ์ฆ๊ธฐ๊ด€์˜ ๊ฐœ์ธ ํ‚ค๋กœ ์•”ํ˜ธํ™” ๋œ ๊ฒƒ์ด๋‹ค.
  3. DigiCert Global Root G2๋Š” ์ƒ์œ„ ์ธ์ฆ๊ธฐ๊ด€์ด ์—†๋Š” Root CA์ด๊ธฐ ๋•Œ๋ฌธ์— Self-Signed ๋˜์–ด ์žˆ๋‹ค.

Self-Signed(์Šค์Šค๋กœ ๋ณด์ฆ)์ด๋ž€, ์ž์‹ ์˜ ์ธ์ฆ์„œ๋ฅผ ํ•ด์‹œํ•œ ํ›„ CA๊ฐ€ ์•„๋‹Œ ์ž์‹ ์˜ ๊ฐœ์ธ ํ‚ค๋กœ ์•”ํ˜ธํ™”ํ•˜์—ฌ ์„œ๋ช…์œผ๋กœ ๋“ฑ๋กํ•˜๋Š” ๊ฒƒ์„ ๋งํ•œ๋‹ค.

๐Ÿ“– CA ์ธ์ฆ ์—†์ด ์ธ์ฆ์„œ ์ƒ์„ฑ

์‹ ๋ขฐ์„ฑ์€ ๋–จ์–ด์ง€์ง€๋งŒ CA ์ธ์ฆ๊ณผ ์ƒ๊ด€ ์—†์ด ๋ฐœํ–‰ํ•˜๋Š” ์ธ์ฆ์„œ๋ฅผ ์‚ฌ์„ค ์ธ์ฆ์„œ๋ผ๊ณ  ํ•œ๋‹ค. ์ด ์‚ฌ์„ค ์ธ์ฆ์„œ๋Š” Root CA ์ฒ˜๋Ÿผ Self-Signed ๋˜์–ด ์žˆ๋‹ค. ๋•Œ๋ฌธ์— ๋ณด์ฆ๊ธฐ๊ด€์ด ์—†์œผ๋ฉฐ ๋ˆ„๊ตฌ๋„ ๋ณด์ฆํ•ด์ฃผ์ง€ ์•Š๋Š” ์ธ์ฆ์„œ๋‹ค. ์ด๋Ÿฌํ•œ ์‚ฌ์„ค ์ธ์ฆ์„œ๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ๋„ TLS ํ†ต์‹ ์ด ๊ฐ€๋Šฅํ•˜๋‹ค. ์ด๋Ÿฌํ•œ ๊ฒฝ์šฐ “์‹ ๋ขฐํ•  ์ˆ˜ ์—†๋Š” ์‚ฌ์ดํŠธ”์™€ ๊ฐ™์€ ์•ˆ๋‚ด๋ฌธ์„ ํ™•์ธํ•  ์ˆ˜ ์žˆ๋‹ค.

๐Ÿ“– TLS(SSL) ์ธ์ฆ์„œ๋กœ ์„œ๋ฒ„๋ฅผ ์ธ์ฆํ•˜๋Š” ๋ฐฉ๋ฒ•

CA์—์„œ ๋ฐœ๊ธ‰๋ฐ›์€ ์ธ์ฆ์„œ๋ฅผ ํ†ตํ•ด ์„œ๋ฒ„์˜ ์‹ ๋ขฐ์„ฑ์„ ์ธ์ฆํ•œ๋‹ค. ํด๋ผ์ด์–ธํŠธ๋Š” ์ด ์ธ์ฆ์„œ๊ฐ€ CA์—์„œ ๋ฐœ๊ธ‰๋ฐ›์€ ๊ฒƒ์ธ์ง€ ์–ด๋–ป๊ฒŒ ํ™•์ธํ• ๊นŒ? ๋จผ์ € ์•Œ์•„ ๋‘˜ ๊ฒƒ์€, ํด๋ผ์ด์–ธํŠธ๋“ค์€ CA ๋ฆฌ์ŠคํŠธ๋ฅผ ์ด๋ฏธ ๊ฐ–๊ณ ์žˆ๋‹ค. OS๋ฅผ ์„ค์น˜ํ•  ๋•Œ PC์— ํฌํ•จ๋˜๊ฑฐ๋‚˜ ๋ธŒ๋ผ์šฐ์ €๊ฐ€ ํฌํ•จํ•˜๊ณ  ์žˆ๋‹ค. Mac์—์„œ๋Š” KeyChain์—, ๋ธŒ๋ผ์šฐ์ €๋Š” ์†Œ์Šค์ฝ”๋“œ์— ์ด๋ฏธ ์กด์žฌํ•œ๋‹ค. CA ๋ฆฌ์ŠคํŠธ๋ž€, ๊ณต์ธ์œผ๋กœ ์ธ์ฆ๋œ CA๊ธฐ๊ด€๋“ค์˜ ๋ฆฌ์ŠคํŠธ๋“ค๋กœ ๊ณต๊ฐœ ํ‚ค ๋˜ํ•œ ํ•จ๊ป˜ ๊ฐ–๊ณ  ์žˆ๋‹ค.

1. ์„œ๋ฒ„์—์„œ ์ธ์ฆ์„œ๋ฅผ ์š”์ฒญํ•œ๋‹ค.

CA๋Š” ๊ฒ€์ฆ์„ ๊ฑฐ์นœ ํ›„ ์ œ์ถœ๋ฐ›์€ ์„œ๋ฒ„์˜ ๊ณต๊ฐœํ‚ค๋ฅผ ํ•ด์‹œํ•˜์—ฌ CA์˜ ๊ฐœ์ธ ํ‚ค๋กœ ์•”ํ˜ธํ™”ํ•œ๋‹ค. ๊ทธ๋ฆฌ๊ณ  ์„œ๋ฒ„์—๊ฒŒ ์ธ์ฆ์„œ๋ฅผ ๋ฐœ๊ธ‰ํ•ด ์ค€๋‹ค. ์ด์ œ ์„œ๋ฒ„๊ฐ€ ์ง„์งœ ์ž์‹ ์ž„์„ ์ธ์ฆํ•ด์ค„ ์ธ์ฆ์„œ๋ฅผ ๊ฐ–๊ฒŒ ๋œ๋‹ค.

2. ํด๋ผ์ด์–ธํŠธ๊ฐ€ ์„œ๋ฒ„์— ์ ‘์†ํ•˜๊ธฐ์œ„ํ•ด ์ธ์ฆ์„œ๋ฅผ ํ™•์ธํ•˜๊ณ ์ž ํ•œ๋‹ค.

๋จผ์ € ํด๋ผ์ด์–ธํŠธ๋Š” ์„œ๋ฒ„๋กœ๋ถ€ํ„ฐ ๋ฐ›์€ ์ธ์ฆ์„œ๊ฐ€ ์ž์‹ ์ด ๊ฐ€์ง„ CA ๋ฆฌ์ŠคํŠธ์— ์žˆ๋Š” ๊ธฐ๊ด€์—์„œ ๋ฐœ๊ธ‰๋ฐ›์€ ๊ฒƒ์ธ์ง€ ํ™•์ธํ•œ๋‹ค. TLS ํ†ต์‹ ์—์„œ ํด๋ผ์ด์–ธํŠธ์™€ ์„œ๋ฒ„๋Š” ์„œ๋กœ ๋ช‡๋ฒˆ ์ธ์‚ฌ๋ฅผ ์ฃผ๊ณ  ๋ฐ›์œผ๋ฉฐ ์„œ๋ฒ„๋Š” CA์—์„œ ๋ฐœ๊ธ‰ ๋ฐ›์€ ์ž์‹ ์˜ ์ธ์ฆ์„œ๋ฅผ ํด๋ผ์ด์–ธํŠธ์—๊ฒŒ ์ „๋‹ฌํ•œ๋‹ค. ์—ฌ๊ธฐ์„œ ์ „๋‹ฌ ๋ฐ›์€ ์ธ์ฆ์„œ๊ฐ€ ์ค‘๊ฐ„์— ๋ณ€์กฐ๋œ ์‚ฌ์‹ค์ด ์—†๋Š”์ง€ ๋ฌด๊ฒฐ์„ฑ ๊ฒ€์‚ฌ๋ฅผ ์ง„ํ–‰ํ•œ๋‹ค. ๋จผ์ € ํด๋ผ์ด์–ธํŠธ๋Š” ์„œ๋ฒ„๋กœ๋ถ€ํ„ฐ ๋ฐ›์€ ์ธ์ฆ์„œ๊ฐ€ ์ž์‹ ์ด ๊ฐ€์ง„ CA ๋ฆฌ์ŠคํŠธ์— ์žˆ๋Š” ๊ธฐ๊ด€์—์„œ ๋ฐœ๊ธ‰๋ฐ›์€ ๊ฒƒ์ธ์ง€ ํ™•์ธํ•œ๋‹ค.

์ด๊ฒƒ์ด ํ™•์ธ๋˜๋ฉด, ํ•ด๋‹น CA ๊ธฐ๊ด€์˜ ๊ณต๊ฐœ ํ‚ค๋กœ ์„œ๋ฒ„ ์ธ์ฆ์„œ์˜ ์„œ๋ช…(Digital Signing)์„ ๋ณตํ˜ธํ™”ํ•œ๋‹ค. ๋””์ง€ํ„ธ ์„œ๋ช…์„ ๋ณตํ˜ธํ™” ํ•˜๋ฉด ์ธ์ฆ์„œ ๋‚ด์šฉ์„ ํ•ด์‹œํ•œ ๊ฐ’์ด ๋‚˜์˜จ๋‹ค.

์ด๋ ‡๊ฒŒ ๋””์ง€ํ„ธ ์„œ๋ช…์„ CA ๊ธฐ๊ด€์˜ ๊ณต๊ฐœ ํ‚ค๋กœ ๋ณตํ˜ธํ™” ํ•˜์—ฌ ๋‚˜์˜จ ํ•ด์‹œ ๊ฐ’๊ณผ, ์„œ๋ฒ„์˜ ๊ณต๊ฐœ ํ‚ค๋ฅผ ํ•ด์‹œํ•œ ๊ฐ’(Finger Print)์ด ์ผ์น˜ ํ•œ๋‹ค๋ฉด, ์ธ์ฆ์„œ๊ฐ€ ์œ„์กฐ๋˜์ง€ ์•Š์•˜์Œ์„ ์ธ์ฆํ•˜๋Š” ๊ฒƒ์ด๋‹ค.

์ „์ฒด์ ์ธ ๊ฒ€์ฆ ์ ˆ์ฐจ๋Š” ๋‹ค์Œ ๊ทธ๋ฆผ๊ณผ ๊ฐ™๋‹ค.

3. ํด๋ผ์ด์–ธํŠธ๊ฐ€ ์„œ๋ฒ„๋ฅผ ์ธ์ฆํ•˜๊ณ  ์•”ํ˜ธํ™” ํ†ต์‹ ์„ ์ง„ํ–‰ํ•œ๋‹ค.

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

๐Ÿ“– TLS HandShake

๋ฐ์ดํ„ฐ๋ฅผ ์ฃผ๊ณ  ๋ฐ›๊ธฐ ์ „, ์„œ๋ฒ„์˜ ๋ฌด๊ฒฐ์„ฑ์„ ํ™•์ธํ•˜๊ณ  ๋Œ€์นญํ‚ค๋ฅผ ์ „๋‹ฌํ•˜๋Š” ๊ณผ์ •์ด ์ด๋ฃจ์–ด์ง„๋‹ค.

Client Hello(Client)

 ํด๋ผ์ด์–ธํŠธ๊ฐ€ ์„œ๋ฒ„์— ์ ‘์†ํ•œ๋‹ค. ์‹ค์ œ Client Hello๋ผ๋Š” ํŒจํ‚ท์„ ์ „์†กํ•˜๊ณ  ์ด ํŒจํ‚ท ์•ˆ์—๋Š” ๋‹ค์Œ๊ณผ ๊ฐ™์€ ๋ฉ”์‹œ์ง€ ์ •๋ณด๊ฐ€ ๋“ค์–ด์žˆ๋‹ค. 

  • TLS version
    ํด๋ผ์ด์–ธํŠธ์—์„œ ์‚ฌ์šฉํ•˜๋Š” TLS ๋ฒ„์ „.
  • Cipher Suite List
    ํด๋ผ์ด์–ธํŠธ์™€ ์„œ๋ฒ„๊ฐ€ ์ง€์›ํ•˜๋Š” ์•”ํ˜ธํ™” ๋ฐฉ์‹์ด ์„œ๋กœ ๋‹ค๋ฅผ ์ˆ˜ ์žˆ๊ธฐ ๋•Œ๋ฌธ์— ์ƒํ˜ธ๊ฐ„์— ์–ด๋–ค ์•”ํ˜ธํ™” ๋ฐฉ์‹์„ ์‚ฌ์šฉํ•  ๊ฒƒ์ธ์ง€์— ๋Œ€ํ•œ ํ˜‘์ƒ์„ ํ•ด์•ผ ํ•œ๋‹ค. ์ด ํ˜‘์ƒ์„ ์œ„ํ•ด์„œ ํด๋ผ์ด์–ธํŠธ ์ธก์—์„œ๋Š” ์ž์‹ ์ด ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ๋Š” ์•”ํ˜ธํ™” ๋ฐฉ์‹์„ ์ „์†กํ•œ๋‹ค.
  • Client Random Data
    ํด๋ผ์ด์–ธํŠธ์—์„œ ์ƒ์„ฑํ•œ ๋‚œ์ˆ˜, ๋‚˜์ค‘์— ๋Œ€์นญํ‚ค๋ฅผ ๋งŒ๋“ค ๋•Œ ์‚ฌ์šฉ.
  • Session ID
    ๋งค๋ฒˆ HandShake๋ฅผ ํ•˜๋Š” ๊ณผ์ •์€ ๋‹น์—ฐํžˆ ์‹œ๊ฐ„์ด ์†Œ์š”๋˜๋Š” ์ž‘์—…์ด๋‹ค. ์ด ์ž‘์—…์„ ๋งค๋ฒˆ ์—ฐ๊ฒฐ ํ•  ๋•Œ๋งˆ๋‹ค ํ•˜์ง€ ์•Š๊ธฐ ์œ„ํ•ด์„œ, ์ตœ์ดˆ ํ•œ๋ฒˆ์˜ HandShake๋งŒ Full HandShake๋ฅผ ํ•˜๊ธฐ์œ„ํ•ด Session ID๋ฅผ ์‚ฌ์šฉํ•œ๋‹ค.

์ตœ์ดˆ HandShake์—์„  Session ID๊ฐ€ 0์ด๊ณ  ์ดํ›„ ์ด์–ด์ง€๋Š” Server Hello ๋ฉ”์„ธ์ง€๋ฅผ ํ†ตํ•ด ์„œ๋ฒ„๋Š” Session ID๋ฅผ ๋ณด๋‚ด์ค€๋‹ค. ํด๋ผ์ด์–ธํŠธ๋Š” ์ด Session ID๋ฅผ ๋กœ์ปฌ์— ์ €์žฅํ•˜๊ณ  ๋‹ค์‹œ ์„œ๋ฒ„์™€ HandShake๋ฅผ ๋งบ์„ ๋•Œ ๋กœ์ปฌ์— ์ €์žฅํ•œ Session ID๋ฅผ ๋ณด๋‚ธ๋‹ค. ์„œ๋ฒ„์—์„œ ์ด Session ID๊ฐ€ ์œ ํšจํ•˜๋‹ค๊ณ  ํŒ๋‹จํ•˜๋ฉด SeverHello์— ๊ฐ™์€ Session ID๋ฅผ ๋ณด๋‚ธ๋‹ค. ๊ทธ๋ ‡๊ฒŒ ๋˜๋ฉด, ์„œ๋ฒ„์˜ ์ธ์ฆ์„œ๋ฅผ ํ™•์ธํ•˜๊ณ  ์•”ํ˜ธํ™” ๋ฐฉ๋ฒ•์„ ์„ ์ •ํ•˜๊ณ  ๋Œ€์นญํ‚ค๋ฅผ ๊ตํ™˜ํ•˜๋Š” ๋“ฑ์˜ ์ž‘์—…์„ ํ•˜์ง€ ์•Š๋Š”๋‹ค.

  •  SNI(Server Name Indication) 
    ์„œ๋ฒ„์˜ ์ด๋ฆ„์„ ํ‘œ์‹œํ•˜๋Š” ๋ถ€๋ถ„. SNI๋ฅผ ์‚ฌ์šฉํ•˜๋ฉด ๋ฌผ๋ฆฌ์ ์œผ๋กœ ๋™์ผํ•œ ์„œ๋ฒ„์— ์กด์žฌํ•˜๋Š” ๊ฐ๊ธฐ ๋‹ค๋ฅธ ๋„๋ฉ”์ธ๋“ค์ด ์„œ๋กœ ๋‹ค๋ฅธ TLS ์ธ์ฆ์„œ๋ฅผ ์ ์šฉํ•  ์ˆ˜ ์žˆ๋‹ค.

Server Hello(Server)

ํด๋ผ์ด์–ธํŠธ๊ฐ€ ๋ณด๋‚ธ Client Hello์— ๋Œ€ํ•ด ์„œ๋ฒ„์—์„œ ์‘๋‹ตํ•˜๋Š” ๊ฒƒ. Server Hello ํŒจํ‚ท์€ Client Hello์™€ ์œ ์‚ฌํ•œ ๋ฉ”์‹œ์ง€ ์ •๋ณด๊ฐ€ ๋“ค์–ด์žˆ๋‹ค.

  • TLS Version
    ์„œ๋ฒ„์—์„œ ์‚ฌ์šฉํ•˜๋Š” TLS ๋ฒ„์ „.
  • Selected Suite
    ํด๋ผ์ด์–ธํŠธ๊ฐ€ ์ „๋‹ฌํ•œ ์•”ํ˜ธํ™” ๋ฐฉ์‹ ์ค‘์—์„œ ์„œ๋ฒ„ ์ชฝ์—์„œ๋„ ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ๋Š” ์•”ํ˜ธํ™” ๋ฐฉ์‹์„ ์„ ํƒํ•ด์„œ ํด๋ผ์ด์–ธํŠธ๋กœ ์ „๋‹ฌํ•œ๋‹ค. ์ด๋กœ์จ ์•”ํ˜ธํ™” ๋ฐฉ์‹์— ๋Œ€ํ•œ ํ˜‘์ƒ์ด ์ข…๋ฃŒ๋˜๊ณ  ์„œ๋ฒ„์™€ ํด๋ผ์ด์–ธํŠธ๋Š” ์ด ์•”ํ˜ธํ™” ๋ฐฉ์‹์„ ์ด์šฉํ•ด์„œ ์ •๋ณด๋ฅผ ๊ตํ™˜ํ•˜๊ฒŒ ๋œ๋‹ค.
  • Server Random Data
    ์„œ๋ฒ„์—์„œ ์ƒ์„ฑํ•œ ๋‚œ์ˆ˜, ํด๋ผ์ด์–ธํŠธ์™€ ๋™์ผํ•˜๊ฒŒ ๋Œ€์นญํ‚ค๋ฅผ ๋งŒ๋“ค ๋•Œ ์‚ฌ์šฉ.
  • Session ID
    ํด๋ผ์ด์–ธํŠธ์—์„œ ๋ฐ›์€ Session ID๊ฐ€ 0์ด๋ฉด ์ƒˆ๋กœ Session ID๋ฅผ ์ƒ์„ฑ ๋ฐ ์‘๋‹ต, 0์ด ์•„๋‹ˆ๋ผ๋ฉด ๋ฐ›์€ Session ID๊ฐ€ ์œ ํšจํ•œ์ง€ ํ™•์ธํ•˜์—ฌ ์‘๋‹ตํ•œ๋‹ค.
  • SNI(Server Name Indication)
    ์„œ๋ฒ„์—์„  SNI๋ฅผ ๋น„์›Œ์„œ(Empty) ๋ณด๋‚ธ๋‹ค.

Server Certificate(Server)

์„œ๋ฒ„์˜ ์ธ์ฆ์„œ๋ฅผ ํด๋ผ์ด์–ธํŠธ์—๊ฒŒ ๋ณด๋‚ด๋Š” ๋‹จ๊ณ„. ํด๋ผ์ด์–ธํŠธ๋Š” ์ด ๋ฉ”์‹œ์ง€๋ฅผ ํ†ตํ•ด ์„œ๋ฒ„์˜ ์ธ์ฆ์„œ๊ฐ€ ๋ฌด๊ฒฐํ•œ์ง€ ๊ฒ€์ฆํ•œ๋‹ค. ์„œ๋ฒ„์˜ ์ธ์ฆ์„œ์— ๋Œ€ํ•œ ๊ฒ€์ฆ์ด ์™„๋ฃŒ๋˜๋ฉด ์ด์ „์— ์ฃผ๊ณ  ๋ฐ›์•˜๋˜ ํด๋ผ์ด์–ธํŠธ์™€ ์„œ๋ฒ„์˜ ๋‚œ์ˆ˜๋ฅผ ์กฐํ•ฉํ•˜์—ฌ pre master secret ํ‚ค๋ฅผ ์ƒ์„ฑํ•œ๋‹ค. ์ด ๋•Œ ์‚ฌ์šฉํ•  ์•”ํ˜ธํ™” ๊ธฐ๋ฒ•์€ ๋Œ€์นญํ‚ค์ด๊ธฐ ๋•Œ๋ฌธ์— pre master secret ๊ฐ’์€ ์ œ 3์ž์—๊ฒŒ ์ ˆ๋Œ€๋กœ ๋…ธ์ถœ๋˜์–ด์„œ๋Š” ์•ˆ๋œ๋‹ค. ์ด pre master secret(๋Œ€์นญํ‚ค)๋ฅผ ์„œ๋ฒ„์˜ ๊ณต๊ฐœํ‚ค๋กœ ์•”ํ˜ธํ™˜ํ•œ๋‹ค.

  • Server Hello Done(Server)
    ์„œ๋ฒ„๊ฐ€ ํด๋ผ์ด์–ธํŠธ์—๊ฒŒ ๋ณด๋‚ผ ๋ฉ”์‹œ์ง€๋ฅผ ๋ชจ๋‘ ๋ณด๋ƒˆ๋‹ค๋Š” ๋œป์œผ๋กœ ๋ณด๋‚ด๋Š” ๋ฉ”์‹œ์ง€.
  • Client Key Exchange(Client)
    ํด๋ผ์ด์–ธํŠธ๋Š” ๋งŒ๋“ค์–ด๋‘” pre master secret ํ‚ค๋ฅผ ์„œ๋ฒ„์˜ ๊ณต๊ฐœํ‚ค๋กœ ์•”ํ˜ธํ™”ํ•˜์—ฌ ์„œ๋ฒ„์—๊ฒŒ ์ „๋‹ฌ.
  • Key Generation(Server&Client)
    ํด๋ผ์ด์–ธํŠธ์™€ ์„œ๋ฒ„๊ฐ€ ์„œ๋กœ ์•”ํ˜ธํ™” ๋ฐ ๋ณตํ˜ธํ™” ํ•  ๋•Œ ์‚ฌ์šฉํ•  ๋Œ€์นญํ‚ค๋ฅผ ์„ฑ๊ณต์ ์œผ๋กœ ๊ณต์œ ํ•˜๋Š” ๊ณผ์ •.
  • Cipher Spec Exchange(Server&Client)
    ์ดํ›„๋กœ ์ „์†ก๋˜๋Š” ๋ชจ๋“  ๋ฉ”์„ธ์ง€๋Š” ํ˜‘์ƒ๋œ ์•Œ๊ณ ๋ฆฌ์ฆ˜๊ณผ, ํ‚ค๋ฅผ ์ด์šฉํ•˜์—ฌ ์•”ํ˜ธํ™” ํ•˜๊ฒ ๋‹ค๋Š” ๋ฉ”์‹œ์ง€๋ฅผ ์ „๋‹ฌ.
  • Finished(Server&Client)
    ํด๋ผ์ด์–ธํŠธ์™€ ์„œ๋ฒ„๊ฐ€ TLS HandShake๋ฅผ ์„ฑ๊ณต์ ์œผ๋กœ ๋งˆ์น˜๊ณ  ์ข…๋ฃŒ๋˜์—ˆ๋‹ค๋Š” ๊ฒƒ์„ ์„œ๋กœ์—๊ฒŒ ์•Œ๋ฆฐ๋‹ค.
  • Application Data(Server&Client)
    ํด๋ผ์ด์–ธํŠธ์™€ ์„œ๋ฒ„๊ฐ€ ์„œ๋กœ TLS๋กœ ์•”ํ˜ธํ™” ํ†ต์‹ ์„ ํ•˜๋Š” ๋ฐ์ดํ„ฐ ํŒจํ‚ท

๐Ÿ“– HTTPS

HTTP๋Š” ์•”ํ˜ธํ™”๋˜์ง€ ์•Š์€ ๋ฐฉ๋ฒ•์œผ๋กœ ๋ฐ์ดํ„ฐ๋ฅผ ์ „์†กํ•˜๊ธฐ ๋•Œ๋ฌธ์— ์„œ๋ฒ„์™€ ํด๋ผ์ด์–ธํŠธ๊ฐ€ ์ฃผ๊ณ  ๋ฐ›๋Š” ๋ฉ”์‹œ์ง€๋ฅผ ๊ฐ์ฒญํ•˜๋Š” ๊ฒƒ์ด ๋งค์šฐ ์‰ฝ๋‹ค. ์˜ˆ๋ฅผ๋“ค์–ด ๋กœ๊ทธ์ธ์„ ์œ„ํ•ด์„œ ์„œ๋ฒ„๋กœ ๋น„๋ฐ€๋ฒˆํ˜ธ๋ฅผ ์ „์†กํ•˜๊ฑฐ๋‚˜, ๋˜๋Š” ์ค‘์š”ํ•œ ๊ธฐ๋ฐ€ ๋ฌธ์„œ๋ฅผ ์—ด๋žŒํ•˜๋Š” ๊ณผ์ •์—์„œ ์•…์˜์ ์ธ ๊ฐ์ฒญ์ด๋‚˜ ๋ฐ์ดํ„ฐ์˜ ๋ณ€์กฐ๋“ฑ์ด ์ผ์–ด๋‚  ์ˆ˜ ์žˆ๋‹ค. ์ด๋ฅผ ๋ณด์•ˆํ•œ ๊ฒƒ์ด HTTPS๋‹ค.

HTTPS๋Š” TLS/SSL ๋ณด์•ˆ ํ”„๋กœํ† ์ฝœ ์œ„์—์„œ ๋™์ž‘ํ•˜๋Š” HTTP๋‹ค.

๐Ÿ“š ์ฐธ๊ณ  ์ž๋ฃŒ

๊ทธ๋ฆผ์œผ๋กœ ์ดํ•ดํ•˜๋Š” ๋„คํŠธ์›Œํฌ ๊ตฌ์กฐ์™€ ๊ธฐ์ˆ 

TLS(SSL) - 1. TLS์˜ ์•”ํ˜ธํ™” ๋ฐฉ์‹(๋Œ€์นญํ‚ค, ๋น„๋Œ€์นญํ‚ค)

HTTPS์™€ SSL ์ธ์ฆ์„œ - ์ƒํ™œ์ฝ”๋”ฉ

[10๋ถ„ ํ…Œ์ฝ”ํ†ก] ๐Ÿ‘ถ์—๋‹จ์˜ TLS