๐Ÿ“–SSL(Secure Sockets Layer)/TLS(Transport Layer Security)

ํด๋ผ์ด์–ธํŠธ์™€ ์„œ๋ฒ„๊ฐ€ ์„œ๋กœ ๋ฐ์ดํ„ฐ๋ฅผ ์•”ํ˜ธํ™”ํ•˜์—ฌ ํ†ต์‹ ํ•  ์ˆ˜ ์žˆ๋„๋ก ๋•๋Š” ๋ณด์•ˆ ํ”„๋กœํ† ์ฝœ

  • ํŠน์ • ๋„คํŠธ์›Œํฌ ๊ณ„์ธต์— ์†ํ•˜๋Š” ํ”„๋กœํ† ์ฝœ์ด ์•„๋‹ˆ๋ผ, ๋…์ž์ ์œผ๋กœ ์กด์žฌํ•˜๋Š” ํ”„๋กœํ† ์ฝœ
  • TLS๊ฐ€ SSL์˜ ๋‰ด ๋ฒ„์ „(๋Œ€๋‹ค์ˆ˜์˜ ๋ณด์•ˆ ํ”„๋กœํ† ์ฝœ์ด TLS, but ๊ณ„์† SSL์ด๋ผ๊ณ  ๋ถ€๋ฆ„)
  • ๋Œ€์นญํ‚ค์™€ ๊ณต๊ฐœํ‚ค ์•”ํ˜ธํ™” ๋ฐฉ์‹์„ ์ ์ ˆํžˆ ํ˜ผํ•ฉํ•œ ํ•˜์ด๋ธŒ๋ฆฌ๋“œ ์•Œ๊ณ ๋ฆฌ์ฆ˜

๋Œ€์นญํ‚ค์™€ ๊ณต๊ฐœํ‚ค ์•”ํ˜ธํ™” ๋ฐฉ์‹์„ ์กฐํ•ฉํ•ด์„œ ์‚ฌ์šฉํ•˜๋Š” ์ด์œ 

  • ์‹ค์ œ ์ „์†ก๋˜๋Š” ๋ฐ์ดํ„ฐ์˜ ์•”ํ˜ธํ™” : ๋Œ€์นญํ‚ค ์•”ํ˜ธํ™” ๋ฐฉ์‹
  • ํ‚ค ๊ตํ™˜ : ๋น„๋Œ€์นญํ‚ค ์•”ํ˜ธํ™”
    ๐Ÿ”–๊ณต๊ฐœํ‚ค์•”ํ˜ธํ™” ๋ฐฉ์‹๋งŒ์„ ์‚ฌ์šฉ ๋งŽ์€ ์ ‘์†์ด ๋ชฐ๋ฆฌ๋Š” ์„œ๋ฒ„๋Š” ๋งค์šฐ ํฐ ๋น„์šฉ์„ ์ง€๋ถˆํ•ด์•ผ ํ•จ ๐Ÿ”–๋Œ€์นญํ‚ค ์•”ํ˜ธํ™” ๋ฐฉ์‹๋งŒ์„ ์‚ฌ์šฉ ๋Œ€์นญํ‚ค๋ฅผ ์ƒ๋Œ€๋ฐฉ์—๊ฒŒ ์ „์†กํ•  ๋•Œ, ์•”ํ˜ธํ™”๊ฐ€ ๋˜์ง€ ์•Š์€ ์ธํ„ฐ๋„ท์„ ํ†ตํ•ด ํ‚ค๋ฅผ ์ „์†กํ•˜๋Š” ๊ฒƒ์€ ์œ„ํ—˜
    โ†’ ๋Œ€์นญํ‚ค๋ฅผ ๊ณต์œ ํ•  ๋•Œ(๋Œ€์นญํ‚ค๋ฅผ ์•”ํ˜ธํ™”ํ•  ๋•Œ)๋Š” ์†๋„๋Š” ๋А๋ฆฌ์ง€๋งŒ ๋ฐ์ดํ„ฐ๋ฅผ ์•ˆ์ „ํ•˜๊ฒŒ ์ฃผ๊ณ  ๋ฐ›์„ ์ˆ˜ ์žˆ๋Š” ๊ณต๊ฐœํ‚ค ์•”ํ˜ธํ™” ๋ฐฉ์‹์„ ์‚ฌ์šฉ โ†’ ์‹ค์ œ ๋ฐ์ดํ„ฐ๋ฅผ ์ฃผ๊ณ  ๋ฐ›์„ ๋•Œ๋Š” ๋Œ€์นญํ‚ค ์•”ํ˜ธํ™” ๋ฐฉ์‹์„ ์‚ฌ์šฉ

๐Ÿ“–SSL ๋™์ž‘ ๊ณผ์ •

๐Ÿ“ŽHandshake(์•…์ˆ˜)

  1. Client(๋ธŒ๋ผ์šฐ์ €) : โ€œClient Helloโ€ ๋ฉ”์„ธ์ง€์— ๋‹ค์Œ๊ณผ ๊ฐ™์€ ์ •๋ณด๋ฅผ ๋‹ด์•„ ์„œ๋ฒ„๋กœ ์ „์†ก
  • ํด๋ผ์ด์–ธํŠธ๊ฐ€ ์‚ฌ์šฉํ•˜๋Š” SSL/TLS ๋ฒ„์ „ ์ •๋ณด
  • ํด๋ผ์ด์–ธํŠธ๊ฐ€ ์ง€์›ํ•˜๋Š” ์•”ํ˜ธํ™” ๋ฐฉ์‹
  • ํด๋ผ์ด์–ธํŠธ๊ฐ€ ์ˆœ๊ฐ„์ ์œผ๋กœ ์ƒ์„ฑํ•œ ์ž„์˜์˜ ๋‚œ์ˆ˜
  1. Server : ์‘๋‹ต์œผ๋กœ โ€œServer Helloโ€ ๋ฉ”์„ธ์ง€์— ๋‹ค์Œ๊ณผ ๊ฐ™์€ ์ •๋ณด๋ฅผ ๋‹ด์•„ ์ „์†ก
  • ์„œ๋ฒ„์˜ ๊ณต๊ฐœํ‚ค๊ฐ€ ๋‹ด๊ธด SSL ์ธ์ฆ์„œ
  • ์„œ๋ฒ„๊ฐ€ ์ˆœ๊ฐ„์ ์œผ๋กœ ์ƒ์„ฑํ•œ ์ž„์˜์˜ ๋‚œ์ˆ˜
  1. Client : ์„œ๋ฒ„๊ฐ€ ๋ณด๋‚ธ SSL ์ธ์ฆ์„œ๊ฐ€ CA ๋ฆฌ์ŠคํŠธ์— ์žˆ๋Š”์ง€ ํ™•์ธ โ†’ CA ๋ฆฌ์ŠคํŠธ์— ์—†๋‹ค๋ฉด ์‚ฌ์šฉ์ž์—๊ฒŒ ๊ฒฝ๊ณ  ๋ฉ”์„ธ์ง€ ์ถœ๋ ฅ

CA ๋ฆฌ์ŠคํŠธ์— ์žˆ๋Š”์ง€ ์–ด๋–ป๊ฒŒ ํ™•์ธํ•˜๋‚˜์š”?

ํด๋ผ์ด์–ธํŠธ์— ๋‚ด์žฅ๋œ CA์˜ ๊ณต๊ฐœํ‚ค๋ฅผ ์ด์šฉํ•ด์„œ ์ธ์ฆ์„œ๋ฅผ ๋ณตํ˜ธํ™” ๋ณตํ˜ธํ™”์— ์„ฑ๊ณต ์‹œ โ†’ ์ธ์ฆ์„œ๋Š” CA์˜ ๊ฐœ์ธํ‚ค๋กœ ์•”ํ˜ธํ™”๋œ ๋ฌธ์„œ์ž„์ด ์•”์‹œ์ ์œผ๋กœ ๋ณด์ฆ์ด ๋œ ๊ฒƒ

  1. Client : ์ž์‹ ์ด ์ƒ์„ฑํ•œ ๋‚œ์ˆ˜์™€ ์„œ๋ฒ„๊ฐ€ ์ƒ์„ฑํ•œ ๋‚œ์ˆ˜๋ฅผ ์‚ฌ์šฉํ•ด premaster secret key๋ฅผ ์ƒ์„ฑํ•ด ์„œ๋ฒ„์˜ ๊ณต๊ฐœํ‚ค๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ ์•”ํ˜ธํ™” ํ•œ ๋’ค ์„œ๋ฒ„๋กœ ์ „์†ก
  2. Server : ์ž์‹ ์˜ ๋น„๋ฐ€ํ‚ค๋กœ ํด๋ผ์ด์–ธํŠธ๊ฐ€ ์ „์†กํ•œ premaster secret key๋ฅผ ๋ณตํ˜ธํ™” โ†’ ๋ณตํ˜ธํ™”ํ•œ ๊ฐ’์„ master secret๊ฐ’์œผ๋กœ ์ €์žฅ โ†’ ์ด ๊ฐ’์„ ์ด์šฉํ•ด session key ์ƒ์„ฑ ์ฆ‰, premaster key โ†’ master key โ†’ session key
  3. Handshake ๋‹จ๊ณ„ ์ข…๋ฃŒ

๐Ÿ“ŽSession(์„ธ์…˜)

์„œ๋ฒ„์™€ ํด๋ผ์ด์–ธํŠธ๊ฐ€ ์‹ค์ œ๋กœ ๋ฐ์ดํ„ฐ๋ฅผ ์ฃผ๊ณ  ๋ฐ›๋Š” ๋‹จ๊ณ„

  • session key : ์„œ๋ฒ„์™€ ํด๋ผ์ด์–ธํŠธ๊ฐ€ ์„œ๋กœ ๊ณต์œ 
  1. session key๋ฅผ ์ด์šฉํ•˜์—ฌ ๋ฐ์ดํ„ฐ๋ฅผ ๋Œ€์นญํ‚ค ๋ฐฉ์‹์œผ๋กœ ์•”ํ˜ธํ™”ํ•ด ๋ฐ์ดํ„ฐ๋ฅผ ์ „์†ก
  2. session key๋ฅผ ์ด์šฉํ•˜์—ฌ ๋ฐ์ดํ„ฐ๋ฅผ ๋Œ€์นญํ‚ค ๋ฐฉ์‹์œผ๋กœ ๋ณตํ˜ธํ™”ํ•ด ๋ฐ์ดํ„ฐ๋ฅผ ๋ฐ›์Œ

๐Ÿ“ŽSession End(์„ธ์…˜ ์ข…๋ฃŒ)

  1. ๋ฐ์ดํ„ฐ์˜ ์ „์†ก์ด ๋๋‚˜๋ฉด SSL ํ†ต์‹ ์ด ๋๋‚ฌ์Œ์„ ์„œ๋กœ์—๊ฒŒ ์•Œ๋ฆผ
  2. session key ํ๊ธฐ