Skip to content

Latest commit

ย 

History

History
226 lines (146 loc) ยท 13.2 KB

File metadata and controls

226 lines (146 loc) ยท 13.2 KB

๐Ÿ”’ SSL

๐Ÿ“š Table of contents

SSL๊ณผ TLS

๊ณต๊ฐœํ‚ค(๋น„๋Œ€์นญํ‚ค), ๋น„๊ณต๊ฐœํ‚ค(๋Œ€์นญํ‚ค)

SSL ๋™์ž‘๋ฐฉ์‹

Handshake

๐Ÿ”‘ SSL๊ณผ TLS

SSL(Secure Sockets Layter)์™€ TLS(Transport Layer Security)์€ ๊ฐ™์€ ๊ฒƒ์ด๋ผ๊ณ  ํ•  ์ˆ˜ ์žˆ๋‹ค. SSL์€ TCP/IP ์•”ํ˜ธํ™” ํ†ต์‹ ์—์„œ ์‚ฌ์šฉ๋˜๋Š” ๊ทœ์•ฝ์ด๊ณ  SSL 3.0 ๋ฒ„์ „ ์ดํ›„์—๋Š” IETF์—์„œ TLS 1.0์œผ๋กœ ๊ทœ์ •ํ–ˆ์Šต๋‹ˆ๋‹ค.

์•”ํ˜ธํ™”๋Š” ํ…์ŠคํŠธ๋ฅผ ๋ˆ„๊ตฌ๋‚˜ ์ฝ์ง€ ๋ชปํ•˜๋„๋ก ํ•˜๊ธฐ์œ„ํ•ด์„œ ์•”ํ˜ธํ™”ํ•˜๋Š” ์•Œ๊ณ ๋ฆฌ์ฆ˜์ด๋ฉฐ ํ‚ค๋Š” ์•”ํ˜ธํ™” ๋™์ž‘์„ ๋ณ€๊ฒฝํ•˜๋Š” ๋งค๊ฐ๋ณ€์ˆ˜ ์—ญํ• ์„ ํ•˜๋ฉฐ ํ‚ค์— ๋”ฐ๋ผ์„œ ์•”ํ˜ธ๊ฐ€ ๋‹ฌ๋ผ์ง€๋ฏ€๋กœ ํ‚ค๋ฅผ ๋ชจ๋ฅด๋ฉด ๋ณตํ˜ธํ™”๊ฐ€ ๋ถˆ๊ฐ€๋Šฅํ•˜๋‹ค.

SSL ์•”ํ˜ธํ™” ๋ฐฉ๋ฒ•

  • ๋Œ€์นญํ‚ค
  • ๊ณต๊ฐœํ‚ค

๊ณต๊ฐœํ‚ค ์•”ํ˜ธํ™” (๋น„๋Œ€์นญํ‚ค ์•”ํ˜ธ ์•Œ๊ณ ๋ฆฌ์ฆ˜)

public

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

์‰ฝ๊ฒŒ ๋งํ•ด์„œ ์•”ํ˜ธํ™”ํ•  ๋•Œ์™€ ๋ณตํ˜ธํ™”ํ•  ๋•Œ ์ด์šฉํ•˜๋Š” ํ‚ค๊ฐ€ ๋‹ค๋ฅธ ํ‚ค, ๋น„๋Œ€์นญ์ธ ์•”ํ˜ธํ™” ๋ฐฉ์‹์ด ๊ณต๊ฐœํ‚ค ์•”ํ˜ธํ™”์ด๋‹ค.

๊ณต๊ฐœํ‚ค ์•”ํ˜ธํ™” ์ข…๋ฅ˜(์ฐธ๊ณ )

  • RSA
  • ElGamal
  • ECC(Eliptic Curve Crytosystems)
  • Digital Signature(์ „์ž์„œ๋ช…)

๊ณต๊ฐœํ‚ค ์•”ํ˜ธํ™”์™€ ์ „์ž์„œ๋ช…์˜ ๋น„๋ฐ€ํ‚ค์™€ ๊ณต๊ฐœํ‚ค์˜ ์—ญํ• ์€ ๋‹ค๋ฅด๋‹ค.

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

1. ํ‚ค ์ƒ์„ฑ ...์•”ํ˜ธํ™” ํ‚ค E(๊ณต๊ฐœํ‚ค)์™€ ๋ณตํ˜ธํ™” ํ‚ค D(๋น„๋ฐ€ํ‚ค)๋ฅผ ์ค€๋น„ํ•œ๋‹ค.
2. ์•”ํ˜ธํ™”  ...์•”ํ˜ธํ™” ํ‚ค E๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ ํ‰๋ฌธ M์„ ์•”ํ˜ธ๋ฌธ C๋กœ ๋ณ€ํ™˜ ํ•  ์ˆ˜ ์žˆ๋‹ค.
3. ๋ณตํ˜ธํ™”  ...๋ณตํ˜ธํ™” ํ‚ค D๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ ์•”ํ˜ธ๋ฌธ C๋ฅผ ํ‰๋ฌธ M์œผ๋กœ ๋ณ€ํ™˜ํ•  ์ˆ˜ ์žˆ๋‹ค.

์ „์ž์„œ๋ช…์˜ ๋น„๋ฐ€ํ‚ค๋Š” ํ‰๋ฌธ์„ ์‚ฌ์šฉํ•˜์—ฌ ์„œ๋ช…ํ•˜๊ธฐ ์œ„ํ•œ ๊ฒƒ์ด๊ณ , ๊ณต๊ฐœํ‚ค๋Š” ์„œ๋ช…์ด ์˜ฌ๋ฐ”๋ฅธ์ง€ ๊ฒ€์ฆํ•˜๋Š” ๊ฒƒ์ด๋‹ค. ์ฆ‰ ๊ณต๊ฐœํ‚ค ์•”ํ˜ธํ™”์—์„œ์˜ ๋น„๋ฐ€ํ‚ค์™€ ๊ณต๊ฐœํ‚ค์˜ ์—ญํ• ๊ณผ๋Š” ์ „ํ˜€ ๋‹ค๋ฅด๋‹ค.

CA

1. B๋Š” CA์—๊ฒŒ ์ž์‹ ์ด B์ž„์„ ์ฆ๋ช…ํ•˜๊ณ  ์ž์‹ ์˜ ๊ณต๊ฐœํ‚ค๊ฐ€ B์˜ ๊ณต๊ฐœํ‚ค๊ฐ€ ๋งž์Œ์„ ์ธ์ฆํ•˜๋Š” ์ธ์ฆ์„œ ๋ฐœ๊ธ‰ํ•œ๋‹ค.
2. A์—๊ฒŒ B์˜ ๊ณต๊ฐœํ‚ค๊ฐ€ ํฌํ•จ๋œ ์ด ์ธ์ฆ์„œ๋ฅผ ์ค€๋‹ค.
3. ์ด๋ฅผ ๋ฐ›์€ A๋Š” ์ž์‹ ์ด ์‹ ๋ขฐํ•  ์ˆ˜ ์žˆ๋Š” CA์—๊ฒŒ CA๊ฐ€ ๋ฐœ๊ธ‰ํ•œ ์ธ์ฆ์„œ์ธ์ง€ ํ™•์ธํ•œ๋‹ค.
4. ๋งž์œผ๋ฉด ๊ทธ ์ธ์ฆ์„œ์— ํฌํ•จ๋œ B์˜ ๊ณต๊ฐœํ‚ค๋กœ ๋ฐ์ดํ„ฐ๋ฅผ ์•”ํ˜ธํ™”ํ•ด์„œ B์—๊ฒŒ ์ „๋‹ฌํ•œ๋‹ค.

๋น„๊ณต๊ฐœํ‚ค ์•”ํ˜ธํ™”

private

๋น„๋Œ€์นญํ‚ค์™€๋Š” ๋ฐ˜๋Œ€๋กœ ๋Œ€์นญํ‚ค๋ผ๊ณ  ํ•œ๋‹ค. a, b์‚ฌ์ด์— private key 1๊ฐœ๋ฅผ ๊ณต์œ ํ•˜๊ณ  ๊ทธ ํ‚ค๋ฅผ ํ†ตํ•ด์„œ ์•”ํ˜ธํ™” ๋ณตํ˜ธํ™”ํ•œ๋‹ค. ๋งŒ์•ฝ์— "ABCD"๋ผ๋Š” ํ‚ค๋กœ ์•”ํ˜ธํ™”๋ฅผ ํ•˜๋ฉด ๋ณตํ˜ธํ™”์‹œ์— "ABCD"๋ฅผ ์ž…๋ ฅํ•ด์•ผํ•œ๋‹ค. ๋Œ€์นญํ‚ค๋ฅผ ๋ˆ„๊ตฐ๊ฐ€ ๋„์ฒญํ•˜๊ฑฐ๋‚˜, ์œ ์ถœ๋œ๋‹ค๋ฉด ์•”ํ˜ธํ™”๋œ ๋ฐ์ดํ„ฐ๋ฅผ ์•Œ์•„๋‚ผ ์ˆ˜ ์žˆ๋‹ค. ๋น„๊ณต๊ฐœํ‚ค์˜ ํ•˜๋‚˜์˜ ์ข…๋ฅ˜๋กœ ๋ธ”๋ก ์•”ํ˜ธ ์•Œ๊ณ ๋ฆฌ์ฆ˜์ด ์žˆ๋‹ค. ๋Œ€์นญํ‚ค ์•Œ๊ณ ๋ฆฌ์ฆ˜์œผ๋กœ ์•”,๋ณตํ˜ธํ™” ์‹œ ๋ฐ์ดํ„ฐ๋ฅผ ๋ธ”๋ก ๋‹จ์œ„๋กœ ์ฒ˜๋ฆฌํ•˜๋Š” ์•Œ๊ณ ๋ฆฌ์ฆ˜์œผ๋กœ SSL/TLS์—์„œ ๋งŽ์ด ์‚ฌ์šฉ๋œ๋‹ค.

๋Œ€์นญํ‚ค ๋น„๋Œ€์นญํ‚ค ์•”ํ˜ธํ™” ์žฅ๋‹จ์ 

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

SSL ๋™์ž‘ ๋ฐฉ์‹

SSL์˜ ๋™์ž‘ ๋ฐฉ์‹์„ ์•Œ๊ธฐ ์œ„ํ•ด์„œ๋Š” ์ธ์ฆ๊ธฐ๊ด€์— ๋Œ€ํ•˜์—ฌ ์•Œ์•„์•ผ ํ•œ๋‹ค.

๐Ÿข ์ธ์ฆ ๊ธฐ๊ด€(Certification Authority)

HTTPS ํ†ต์‹ ์—์„œ๋Š” ์ œ3์ž ์ธ์ฆ์„ ์‚ฌ์šฉํ•œ๋‹ค. ์ธ์ฆ๊ธฐ๊ด€ CA๋กœ๋ถ€ํ„ฐ ๊ณต์ธ ์ธ์ฆ์„œ๋ฅผ ๋ฐœ๊ธ‰๋ฐ›์•„์„œ ์„œ๋ฒ„์— ์„ค์น˜ํ•ด์•ผ ๊ฒฝ๊ณ  ์—†์ด HTTPS ํ†ต์‹ ์„ ํ•  ์ˆ˜ ์žˆ๋‹ค. ์ธ์ฆ๊ธฐ๊ด€์˜ ์ธ์ฆ์„ ๋ฐ›์•˜๋‹ค๋Š” ๊ฒƒ์€ ์›น ์„œ๋น„์Šค๋ฅผ ์ œ๊ณตํ•˜๋Š” ์†Œ์œ ์ž๋ฅผ ๋ณด์ฆํ•ด์ค€๋‹ค๋Š” ์˜๋ฏธ์ด๋‹ค. ์ž์„ธํžˆ๋Š” ์›น ์„œ๋น„์Šค ์ œ๊ณต์ž์˜ ๊ณต๊ฐœํ‚ค๊ฐ€ ํ‚ค ์†Œ์œ ์ž์˜ ๊ฒƒ์ด๋ผ๋Š” ๊ฒƒ์„ ๋ณด์ฆํ•ด์ฃผ๋Š” ๊ฒƒ์ด๋‹ค.

HTTPS๋กœ ์›น์„œ๋น„์Šค๋ฅผ ์ œ๊ณตํ•˜๋ ค๋Š” ์‚ฌ๋žŒ์€ ์ž์‹ ์˜ ๊ณต๊ฐœํ‚ค์™€ ๊ฐœ์ธํ‚ค๋ฅผ ์ƒ์„ฑํ•˜๊ณ , ๊ณต๊ฐœํ‚ค๋ฅผ ์ธ์ฆ๊ธฐ๊ด€์— ๋ณด๋‚ธ๋‹ค. ์ธ์ฆ๊ธฐ๊ด€์—์„œ๋Š” ๋ณด๋‚ด์˜จ ๊ณต๊ฐœํ‚ค, ์œ ํšจ๊ธฐ๊ฐ„, ๋„๋ฉ”์ธ ๋“ฑ์˜ ์ •๋ณด๋ฅผ ํฌํ•จํ•˜์—ฌ ์ธ์ฆ๊ธฐ๊ด€์˜ ๊ฐœ์ธํ‚ค๋กœ ์ „์ž์„œ๋ช…ํ•œ ์ธ์ฆ์„œ๋ฅผ ๋ฐœ๊ธ‰ํ•œ๋‹ค.

์›น์„œ๋น„์Šค ์ œ๊ณต์ž๋Š” ๋ฐœ๊ธ‰๋ฐ›์€ ์ธ์ฆ์„œ์™€ ์ž์‹ ์˜ ๊ฐœ์ธํ‚ค๋ฅผ ์›น์„œ๋ฒ„์— ์„ค์ •ํ•˜์—ฌ HTTPS ํ†ต์‹ ์„ ํ•  ์ˆ˜ ์žˆ๊ฒŒ ๋œ๋‹ค.

ํด๋ผ์ด์–ธํŠธ ์ฆ‰, ์›น ๋ธŒ๋ผ์šฐ์ €์—๋Š” ์ด๋ฏธ ์—ฌ๋Ÿฌ ์ธ์ฆ๊ธฐ๊ด€์˜ ๊ณต๊ฐœํ‚ค๋ฅผ ํฌํ•จํ•œ ์ธ์ฆ์„œ๊ฐ€ ์ด๋ฏธ ์„ค์น˜๋˜์–ด ์žˆ๋‹ค. ๊ทธ๋ž˜์„œ ์›น์„œ๋ฒ„์™€ ํ†ต์‹ ์‹œ ์ธ์ฆ๊ธฐ๊ด€์˜ ๊ฐœ์ธํ‚ค๋กœ ์„œ๋ช…๋œ ์ธ์ฆ์„œ๋ฅผ ๋ฐ›์•˜์„ ๋•Œ ์ด๋ฏธ ์„ค์น˜๋˜์–ด ์žˆ๋Š” ์ธ์ฆ๊ธฐ๊ด€์˜ ๊ณต๊ฐœํ‚ค๋กœ ๋ณตํ˜ธํ™”๊ฐ€ ๊ฐ€๋Šฅํ•œ ๊ฒƒ์ด๋‹ค.


์ธ์ฆ๊ธฐ๊ด€์œผ๋กœ๋ถ€ํ„ฐ ์ธ์ฆ์„œ๋ฅผ ๋ฐœ๊ธ‰๋ฐ›์•„์„œ ์›น์„œ๋ฒ„์— ์„ค์น˜ํ•˜๊ณ  HTTPS ํ†ต์‹ ์ด ๊ฐ€๋Šฅํ•œ ์ƒํƒœ๋ผ๊ณ  ๊ฐ€์ •ํ•œ๋‹ค.

caServer

  1. ์‚ฌ์šฉ์ž๊ฐ€ ์›น๋ธŒ๋ผ์šฐ์ €๋กœ ์‚ฌ์ดํŠธ์— ์ ‘์†ํ•˜๋ฉด ์›น์„œ๋ฒ„๋Š” ์ธ์ฆ์„œ๋ฅผ ์›น ๋ธŒ๋ผ์šฐ์ €์—๊ฒŒ ๋ณด๋‚ธ๋‹ค. ์ด ์ธ์ฆ์„œ์—๋Š” ์ธ์ฆ๊ธฐ๊ด€์˜ ๊ฐœ์ธํ‚ค๋กœ ์•”ํ˜ธํ™”๋œ ์‚ฌ์ดํŠธ์˜ ์ •๋ณด์™€ ๊ณต๊ฐœํ‚ค๊ฐ€ ๋“ค์–ด์žˆ๋‹ค.
  2. ์›น ๋ธŒ๋ผ์šฐ์ €๋Š” ์ด๋ฏธ ๊ฐ€์ง€๊ณ  ์žˆ๋Š” ์ธ์ฆ๊ธฐ๊ด€์˜ ๊ณต๊ฐœํ‚ค๋กœ ์›น ์„œ๋ฒ„์—์„œ ๋ฐ›์€ ์ธ์ฆ์„œ๋ฅผ ๋ณตํ˜ธํ™”ํ•ด์„œ ํ™•์ธํ•œ๋‹ค.

browserServer

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

์‹ค์ œ ๋ฐ์ดํ„ฐ ์ „์†ก์„ ์œ„ํ•ด ์›น ๋ธŒ๋ผ์šฐ์ €๊ฐ€ ์ง€์›ํ•˜๋Š” ์•”ํ˜ธํ™” ๋ฐฉ์‹๊ณผ ์„œ๋ฒ„๊ฐ€ ์ง€์›ํ•˜๋Š” ์•”ํ˜ธํ™”ํ•˜๋Š” ๋ฐฉ์‹๋“ค ์ค‘ ๋‘˜ ๋‹ค ์ง€์›ํ•˜๋Š” ์•”ํ˜ธํ™” ๋ฐฉ์‹์„ ์„ ํƒํ•˜๋Š” ๋“ฑ์˜ ๋งŽ์€ ์ž‘์—…์ด ์žˆ๊ณ , ํ‚ค ๊ตํ™˜๋„ ๋‹ค๋ฅธ ๋ฐฉ์‹์ด ์žˆ์„ ์ˆ˜ ์žˆ๋‹ค.

SSL Handshake

์•ž์„œ ์–ธ๊ธ‰ํ•œ ๊ฒƒ๊ณผ ๊ฐ™์ด ๋Œ€์นญํ‚ค๋ฅผ ๊ณต์œ ํ•  ๋•Œ ์™ธ๋ถ€๋กœ์˜ ๋…ธ์ถœ์ด ๋ฐœ์ƒํ•˜๊ฒŒ ๋œ๋‹ค. ๋งŒ์•ฝ ์ด ํ‚ค๋ฅผ ์ค‘๊ฐ„์—์„œ ๊ฐ€๋กœ์ฑ„๋Š” ์ผ์ด ๋ฐœ์ƒํ•˜๊ฒŒ ๋˜๋ฉด ์•ˆ๋˜๊ธฐ ๋•Œ๋ฌธ์—, ์šฐ๋ฆฌ๋Š” ๋Œ€์นญํ‚ค ๋Œ€์‹ ์— ๋น„๋Œ€์นญํ‚ค๋กœ ์•”ํ˜ธํ™” ํ†ต์‹ ์„ ํ•˜๋ฉด ๋˜์ง€ ์•Š์„ ๊ฒƒ์ธ๊ฐ€ ์ƒ๊ฐํ•œ๋‹ค. ํ•˜์ง€๋งŒ ๋„ˆ๋ฌด ๋А๋ฆฌ๊ณ  ๋น„ํšจ์œจ์ ์ด๋‹ค. ๊ทธ๋ž˜์„œ ์ฒ˜์Œ์— ๋Œ€์นญํ‚ค๋ฅผ ๊ตํ™˜ํ•  ๋•Œ๋งŒ ๋น„๋Œ€์นญํ‚ค ์•”ํ˜ธ๋ฅผ ์‚ฌ์šฉํ•˜๋Š”๋ฐ, TLS๊ฐ€ ๋ฐ”๋กœ ๊ทธ๋ ‡๊ฒŒ ๋™์ž‘ํ•œ๋‹ค.

TLS์—์„œ ์ œ๊ณตํ•˜๋Š” ๋ณด์•ˆ ์„œ๋น„์Šค

  1. ๊ธฐ๋ฐ€์„ฑ
    • ๋Œ€์นญํ‚ค ์•”ํ˜ธ๋ฅผ ์‚ฌ์šฉํ•˜๊ฒŒ ๋˜๋ฉด ๊ธฐ๋ฐ€์„ฑ์„ ์ œ๊ณตํ•  ์ˆ˜ ์žˆ๋‹ค. ๋‚จ๋“ค์ด ๋ฐ์ดํ„ฐ๋ฅผ ํ›”์ณ๊ฐ€๋„ ๋ณผ ์ˆ˜ ์—†๋Š” ๋น„๋ฐ€์„ ์ œ๊ณตํ•œ๋‹ค.
  2. ๋ฌด๊ฒฐ์„ฑ
    • ๋ฉ”์‹œ์ง€ ์ธ์ฆ์ฝ”๋“œ(MAC: Message Authentication Code)๋ฅผ ํ†ตํ•ด์„œ ๋ฉ”์‹œ์ง€ ์ธ์ฆ์„ ์ œ๊ณตํ•œ๋‹ค. ๋ณ€์กฐ ์—ฌ๋ถ€ ํ™•์ธ ๊ฐ€๋Šฅ.
  3. ์ธ์ฆ
    • ์—ฐ๊ฒฐ ์ดˆ๊ธฐ ์„ค์ •์—์„œ ์ฃผ๊ณ  ๋ฐ›๋Š” ์ธ์ฆ์„œ๋ฅผ ํ†ตํ•ด์„œ ์‹ ํšŒํ•  ์ˆ˜ ์žˆ๋Š” ๊ฐœ์ฒด์ธ์ง€ ์ธ์ฆํ•  ์ˆ˜ ์žˆ๋‹ค.

TLS๋Š” ์ „์†ก ๊ณ„์ธต ์œ„์—์„œ TLS ๊ณ„์ธต์„ ๋”ฐ๋กœ ๋‘์–ด ๋™์ž‘ํ•˜๊ฒŒ ๋œ๋‹ค. TLS๋ฅผ ์‚ฌ์šฉํ•˜๋Š” ์–ดํ”Œ๋ฆฌ์ผ€์ด์…˜ ํ”„๋กœํ† ์ฝœ์€ ๋์— s๊ฐ€ ๋ถ™๊ฒŒ๋˜๋Š” TLS๊ธฐ๋ฐ˜ HTTP -> HTTPS, TLS๊ธฐ๋ฐ˜ FTP -> FTPS.

layer

TLS์˜ ์„ธ๋ถ€ ํ”„๋กœํ† ์ฝœ

ํ”„๋กœํ† ์ฝœ ๋‚ด์šฉ
Handshake ์–‘์ชฝ ๊ฐ„์— ์—ฐ๊ฒฐ์„ ์„ค์ •ํ•  ๋•Œ ๋ณด์•ˆ ํ˜‘์ƒ์„ ์œ„ํ•œ ํ”„๋กœํ† ์ฝœ์ด๋‹ค.
Change cipher spec ๋ณด์•ˆ ํŒŒ๋ผ๋ฏธํ„ฐ๋ฅผ ๋ณ€๊ฒฝํ•˜๊ฑฐ๋‚˜ ์ ์šฉํ•  ๋•Œ ์‚ฌ์šฉํ•œ๋‹ค. ์˜ˆ๋ฅผ ๋“ค์–ด ๋Œ€์นญํ‚ค ์•Œ๊ณ ๋ฆฌ์ฆ˜์„ ๋ณ€๊ฒฝํ•  ๋•Œ ์ดํ”„๋กœํ† ์ฝœ์ด ์‚ฌ์šฉ๋œ๋‹ค.
Alert ์˜ค๋ฅ˜๋ฅผ ์ „์†กํ•  ๋•Œ ์‚ฌ์šฉ๋˜๋Š” ํ”„๋กœํ† ์ฝœ์ด๋‹ค.
Application Data ์‹ค์ œ ๋ฐ์ดํ„ฐ๊ฐ€ ์ „์†ก๋  ๋•Œ ์‚ฌ์šฉ๋˜๋Š” ํ”„๋กœํ† ์ฝœ์ด๋‹ค.
Record ํ˜‘์ƒ๋œ ๋ณด์•ˆ ํŒŒ๋ผ๋ฏธํ„ฐ๋ฅผ ์ด์šฉํ•˜์—ฌ ์•”, ๋ณตํ˜ธํ™”, ๋ฌด๊ฒฐ์„ฑ ๊ฒ€์ฆ๋“ฑ์„ ์ˆ˜ํ–‰ํ•˜๋Š” ํ”„๋กœํ† ์ฝœ์ด๋‹ค.

์ƒํƒœ ์œ ์ง€(stateful) ํ”„๋กœํ† ์ฝœ

TLS๋Š” ์„ธ์…˜๊ณผ ์—ฐ๊ฒฐ๋ณ„๋กœ ์ƒํƒœ์ •๋ณด๋ฅผ ์œ ์ง€ํ•œ๋‹ค. TLS๋Š” full handshake๋ฅผ ํ†ตํ•ด์„œ ์„ธ์…˜์„ ์ƒ์„ฑํ•˜๊ณ  ์ด ์„ธ์…˜ ์ •๋ณด๋ฅผ ๊ณต์œ ํ•˜๋Š” ์—ฌ๋Ÿฌ ์—ฐ๊ฒฐ์„ abbreviation handshake๋ฅผ ํ†ตํ•ด์„œ ์„ฑ๋ฆฝํ•œ๋‹ค. Full hanshoke๋Š” ์•„๋ž˜ ๊ทธ๋ฆผ๊ณผ ๊ฐ™์ด ์„ค๋ช…ํ•œ๋‹ค. Abbreviation handshake๋Š” ์„ธ์…˜์ด ์ด๋ฏธ ์กด์žฌํ•  ๋•Œ ์‚ฌ์šฉํ•˜๋Š” handshaking ๋ฐฉ์‹์ด๋‹ค.

  • ์—ฐ๊ฒฐ
    • ์„œ๋ฒ„์™€ ํด๋ผ์ด์–ธํŠธ ๊ฐ„ ํ†ต์‹ ์˜ ๋‹จ์œ„
  • ์„ธ์…˜
    • ์—ฐ๊ฒฐ์˜ ๋‹ค์ˆ˜๋กœ ์ด๋ฃจ์–ด์ง€๊ณ  ์„ธ์…˜์€ ํ•œ๋ฒˆ ์„ฑ๋ฆฝ๋˜๋ฉด ๋‹ค์Œ ์—ฐ๊ฒฐ์„ ์œ„ํ•ด์„œ ์ƒํƒœ ์œ ์ง€๋ฅผ ํ•  ์ˆ˜ ์žˆ๋‹ค.

tlshand

  1. client -> server/ client hello

Client๊ฐ€ ์„œ๋ฒ„์— ์ ‘์†ํ•  ๋•Œ

  • random
    • ํด๋ผ์ด์–ธํŠธ๋Š” 32๋ฐ”์ดํŠธ ๋‚œ์ˆ˜๊ฐ’์„ ์ „๋‹ฌ, ์ด ๋žœ๋ค๊ฐ’์€ ๋น„๋ฐ€ ๋ฐ์ดํ„ฐ๋ฅผ ์œ„ํ•ด์„œ ์‚ฌ์šฉํ•œ๋‹ค. ๋น„๋ฐ€ ๋ฐ์ดํ„ฐ = master secret
  • session ID
    • ์„ธ์…˜์„ ์ฒ˜์Œ ์ƒ์„ฑํ•  ๋•Œ๋Š” ๋นˆ ๊ฐ’, ์ด๋ฏธ ์ƒ์„ฑ๋œ ์„ธ์…˜์ด ์žˆ๋‹ค๋ฉด ๊ทธ ์„ธ์…˜ ID๋ฅผ ์ „๋‹ฌํ•œ๋‹ค.
  • cipher suite
    • ํด๋ผ์ด์–ธํŠธ๊ฐ€ ์ง€์› ๊ฐ€๋Šฅํ•œ ํ‚ค ๊ตํ™˜ ์•Œ๊ณ ๋ฆฌ์ฆ˜, ๋Œ€์นญํ‚ค ์•”ํ˜ธ ์•Œ๊ณ ๋ฆฌ์ฆ˜, ํ•ด์‹œ ์•Œ๊ณ ๋ฆฌ์ฆ˜ ๋“ฑ์„ ์•Œ๋ ค์ค€๋‹ค. ์ด์ค‘ ์ตœ์ ์˜ ๋ฐฉ์‹์„ ์„ ํƒ
  1. server -> client/ server hello

์‚ฌ์šฉํ•  TLS๋ฒ„์ „, ํด๋ผ์ด์–ธํŠธ, ์„œ๋ฒ„ ๊ณตํ†ต์œผ๋กœ ์ง€์› ๊ฐ€๋Šฅํ•œ ์ตœ์ ์˜ cipher suite, ์••์ถ•๋ฐฉ์‹ ๋“ฑ์„ client์—๊ฒŒ ์ „๋‹ฌ.

  • random
    • ์—ญ์‹œ server๋„ 32๋ฐ”์ดํŠธ ๋‚œ์ˆ˜ ์ƒ์„ฑํ•ด์„œ client์—๊ฒŒ ์ „๋‹ฌ. master secret = ๋น„๋ฐ€๊ฐ’ ์ƒ์„ฑํ•  ๋•Œ ์‚ฌ์šฉํ•˜๋Š” ๊ฒƒ.
  • session ID
    • ์„ธ์…˜ ์ •๋ณด
  1. server -> client/ Server certificate

์•„๊นŒ TLS๊ฐ€ ์ธ์ฆ(๊ธฐ๋ฐ€์„ฑ, ๋ฌด๊ฒฐ์„ฑ, ์ธ์ฆ) ์„œ๋น„์Šค๋ฅผ ์ œ๊ณตํ•œ๋‹ค๊ณ  ํ–ˆ๋Š”๋ฐ, ์ด ์ธ์ฆ์„œ๋ฅผ ํ†ตํ•ด์„œ ์„œ๋ฒ„๊ฐ€ ๋ฏฟ์„๋งŒํ•œ ์„œ๋ฒ„์ธ์ง€ ํ™•์ธํ•œ๋‹ค.

  1. server -> client/ Server Key exchange

ํ‚ค ๊ตํ™˜์— ํ•„์š”ํ•œ ์ •๋ณด๋ฅผ ์ œ๊ณตํ•œ๋‹ค. ๋งŒ์•ฝ ํ•„์š”์—†๋‹ค๋ฉด ์ƒ๋žต๊ฐ€๋Šฅํ•˜๋‹ค. ํ•˜์ง€๋งŒ diffie-hellman์„ ํ‚ค๊ตํ™˜ ์•Œ๊ณ ๋ฆฌ์ฆ˜์œผ๋กœ ์ด์šฉํ•œ๋‹ค๋ฉด ์†Œ์ˆ˜, ์›์‹œ๊ทผ ๋“ฑ์ด ํ•„์š”ํ•˜๊ธฐ ๋•Œ๋ฌธ์— ์ด๋Ÿฐ ๋ฐ์ดํ„ฐ ์ „์†ก ์šฉ๋„.

  1. server -> client/ Certificate request

์„œ๋ฒ„ ์—ญ์‹œ ํด๋ผ์ด์–ธํŠธ๋ฅผ ์ธ์ฆํ•ด์•ผํ•  ๋•Œ ์ธ์ฆ์„œ๋ฅผ ์š”๊ตฌํ•  ์ˆ˜ ์žˆ๋‹ค. ์š”์ฒญํ•˜์ง€ ์•Š์„์ˆ˜๋„ ์žˆ๋‹ค.

  1. server -> client/ Server hello done

์„œ๋ฒ„์˜ ์ธ์‚ฌ ๋งˆ๋ฌด๋ฆฌ.

  1. client -> server/ Certificate

๋ฐฉ๊ธˆ ์ „ ์„œ๋ฒ„๊ฐ€ ์š”์ฒญํ–ˆ๋˜ ์ธ์ฆ์„œ๋ฅผ ์ค„ ์ˆ˜ ์žˆ๋‹ค. ์š”์ฒญํ•˜์ง€ ์•Š์•˜๋‹ค๋ฉด ํ•„์š”์—†๋Š” ๊ณผ์ •์ด๋‹ค.

  1. client -> server/ Client key exchange

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

  1. client -> server/ Certificate Verify

ํด๋ผ์ด์–ธํŠธ์— ๋Œ€ํ•œ certificate request๋ฅผ ๋ฐ›์•˜๋‹ค๋ฉด ๋ณด๋‚ธ ์ธ์ฆ์„œ์— ๋Œ€ํ•œ ๊ฐœ์ธํ‚ค๋ฅผ ๊ฐ€์ง€๊ณ  ์žˆ๋‹ค๋Š” ๊ฒƒ์„ ์ฆ๋ช…ํ•œ๋‹ค. handshake๊ณผ์ •์—์„œ ์ฃผ๊ณ  ๋ฐ›์€ ๋ฉ”์‹œ์ง€ + master secret์„ ์กฐํ•ฉํ•œ hash๊ฐ’์— ๊ฐœ์ธํ‹ฐ๋กœ ๋””์ง€ํ„ธ ์„œ๋ช…ํ•˜์—ฌ ์ „์†กํ•œ๋‹ค.

  1. client -> server/ Change cipher spec

ํ˜‘์ƒ๋œ ๋ณด์•ˆ ํŒŒ๋ผ๋ฏธํ„ฐ๋ฅผ ์ ์šฉํ•˜๊ฑฐ๋‚˜ ๋ณ€๊ฒฝํ•  ๋•Œ ์„œ๋ฒ„์—๊ฒŒ ์•Œ๋ฆฐ๋‹ค.

  1. client -> server/ Finished

ํด๋ผ์ด์–ธํŠธ ๋.

  1. server -> client/ Change cipher spec

ํด๋ผ์ด์–ธํŠธ์—๊ฒŒ ๋ณด์•ˆ ํŒŒ๋ผ๋ฏธํ„ฐ ๋ณ€๊ฒฝ์„ ์•Œ๋ฆฐ๋‹ค.

  1. server -> client/ Finished

์„œ๋ฒ„ ๋.

  1. server <-> client/ ํ†ต์‹ 

๋” ๋ณด๊ธฐ ์ข‹์€ handshake

sslhandshake




์ฐธ๊ณ 

SSL๋™์ž‘ ๋ฐฉ์‹

๊ณต๊ฐœํ‚ค ์•”ํ˜ธ ๋ฐฉ์‹

์ „์ž์„œ๋ช…๊ณผ ๊ณต๊ฐœํ‚ค์•”ํ˜ธํ™”์˜ ์ฐจ์ด

SSL handshake


๐Ÿ‰ Summary

SSL๊ณผ TLS

๊ณต๊ฐœํ‚ค, ๋น„๊ณต๊ฐœํ‚ค

SSL ๋™์ž‘๋ฐฉ์‹

SSL handshake



โ‰๏ธ ๋ฉด์ ‘ ์˜ˆ์ƒ ์งˆ๋ฌธ

  1. SSL๊ณผ TLS์— ๋Œ€ํ•ด์„œ ์„ค๋ช…ํ•˜์‹œ์˜ค.
  1. ๊ณต๊ฐœํ‚ค ์•”ํ˜ธํ™” ์•Œ๊ณ ๋ฆฌ์ฆ˜์— ๋Œ€ํ•ด์„œ ์„ค๋ช…ํ•˜์‹œ์˜ค.
  1. SSL ๋™์ž‘ ๋ฐฉ์‹์€ ์–ด๋–ป๊ฒŒ ๋˜๋‚˜์š”?
  1. SSL handshake์— ๋Œ€ํ•ด์„œ ์„ค๋ช…ํ•˜์„ธ์š”.