์ด ๊ธ์ ์ ์๊ถ์ ์๋ฆฌ๋ฐค ๋์๊ฒ ์์ต๋๋ค.
"์ํธํ ํต์ " ๋ญ๊ฐ ํ ๋ฆฌ์ฐ๋ ๋ธ๋ก๋ฒ์คํฐ ์ฐ์ ์คํ์ด ์ก์ ์ํ์์๋ ๋์ฌ๋ฒํ ๋จ์ด์ฃ
ํ์ง๋ง ์๊ฐ ์ธ๋ก ์ฐ๋ฆฌ ์ผ์์ํ์์ ๋ง์ด ์ฌ์ฉํ๊ณ ์์ด์. ๊ทธ ๋ํ์ ์ธ ์๊ฐ https ์ฃ
https ๋ ๊ธฐ์กด์ ์ธํฐ๋ท ๋ฐฉ์(http)์ ๋ณด์์ ๊ฒฐํฉํ ๊ฒ์ด๊ณ , ์ค๋์ ๊ทธ "๋ณด์" ์ด ์ด๋ป๊ฒ ์ด๋ฃจ์ด์ง๋์ง์ ๋ํด ๊ณต๋ถํ ๊ฑฐ์์.
1. ๊ทธ "๋ณด์"์ด ๋ญ๋ฐ ์ํธํ ํต์ ์ด ๊ฐ๋ฅํ ๊ฒ์ผ๊น?
์ํธํ ํต์ ์ SSL(๋๋ TLS)๋ผ๋ ํ๋กํ ์ฝ์ ์ฌ์ฉํด์ ์ธ์ ๋ฐ์ดํฐ๋ฅผ ์ํธํํ๋ ๊ฒ์ ์๋ฏธํด์.
์ฐ๋ฆฌ๊ฐ ์ฒ์ ๋ง๋ ์ฌ๋๊ณผ ์ธ์ฌํ ๋ฏ
์ฌ์ฉ์์ ์น์๋ฒ๊ฐ ์ํธํ ํต์ ์ ํ ๋ ์ธ์ฌํ๋ฉฐ ์ด๋ค ์ํธํ๋ฅผ ์ฌ์ฉ ํ ๊ฒ์ธ์ง ์๊ธฐ๋ฅผ ๋๋์ฃ . ์ด๋ฌํ ๊ณผ์ ์ SSL Handshake๋ผ๊ณ ์นญํด์.
๋ฒ์ธ์ ์ธ ์๊ธฐ๋ก handshake ์ด๋์ ๋ค์ด๋ณธ๊ฑฐ ๊ฐ์ง ์๋์ ?
๋ค์ด๋ดค๋ค๋ฉด TCP ํต์ ์๊ธฐ ์ค์ ๋์๋ 3 way handshake ๊ฐ ์๋๊น ์ถ๋ค์ ~
์ฐธ๊ณ ๋ก SSL handshake๋ 3 way handshake ๊ฐ ๋๋ ๋ค์ ์ด๋ฃจ์ด์ง๋ ์ธ์ฌ์์
(์ธ์ฌ๋ฅผ 2๋ฒ์ด๋ ํ๋ค์ ใ ใ )
SSL ํธ๋์์ดํฌ๋ ์ฌ๋ฌ ๋จ๊ณ๋ฅผ ๊ฑฐ์ณ ์ํธํ ํต์ ์ ๋ํ ํ์๋ฅผ ์งํํด์
(์ฐธ๊ณ ๋ก ๊ทธ๋ฆผ์์ ๋๋ ๊ธฐ์ค์ ์ค๋ช ์ ์ํจ์ผ ๋ฟ ์ ๋์ ์ด์ง ์์์)
๊ทธ๋ผ ์ค์ ๋ก ์ด๋ฐ ๋ด์ฉ๋ค์ด ์ด๋ป๊ฒ ์๋ค๊ฐ๋ค ํ๋์ง ํ์ธํด๋ณผ๊น์?
2. ๋ฌด์์ ? ์ด๋ป๊ฒ? ํ์ธํ ๊ฒ์ธ๊ฐ?
๋ ๋ผ๋ค๋๋ ํจํท์ ์์ผ๋ก ์ก์ ์ ์์ง์.
๊ทธ๋ ๊ธฐ ๋๋ฌธ์ Wireshark ์ ๋์์ ๋ฐ๋๋ก ํ ๊ฑฐ์์.
(์ค์น ์ฌ์ดํธ: https://www.wireshark.org/download.html)
๋ค์ด๋ฒ์์ ์ ์๊ณผ์ ์ ํ๋ฒ ์ดํด๋ณผ๊น์?
๋ฐฉ๋ฒ์ ๋งค์ฐ ๊ฐ๋จํฉ๋๋ค.
์ฒซ ์งธ. Wireshark๋ฅผ ์คํํ๋ค.
๋ ์งธ. ์บก์ฒ๋ฅผ ์์ํ๋ค
์ ์งธ. ์ธํฐ๋ท ๋ธ๋ผ์ฐ์ ๋ฅผ ์ผ ๋ค
๋ท ์งธ. ๋ค์ด๋ฒ์ ๋ค์ด๊ฐ๋ค
๋ง์ง๋ง. ์บก์ฒ๋ฅผ ๋๊ณ ํจํท์ ๋ณธ๋ค.
3. ์บก์ฒ ํ ํจํท์ ์ด๋ค ๋ด์ฉ์ด ์๋๊ฐ?
์ ๊ทธ๋ผ ์บก์ฒํ ๊ฒฐ๊ณผ๋ฌผ์ ํ๋ฒ ๋ณผ๊น์?
์ค์ ๋ค์ด๋ฒ์ ์ ์ํ๋ ๊ณผ์ ์์ ์บก์ฒ๋๋ ssl ํจํท์ ๋๋ค.
์๊น ์์์ ์๊ฐํ ๋จ๊ณ์ ๋น์ทํ ๋จ์ด๋ค์ด ๋ง์ด ๋ณด์ด์ฃ ?
๋น๊ตํ๊ธฐ ์ํด ํจ๊ป ์๊ฐ๋ฝ์ผ๋ก ํ๋ํ๋ ์ง์ด๊ฐ๋ฉฐ ์ธ์ด๋ณด์์
<ํจํท์บก์ฒ ๋ด์ฉ>
<์ฒดํฌ ๋ฆฌ์คํธ>
์ด ??
๋ญ๊ฐ ์ด์ํจ์ ๋๋ผ์ จ๋์ ?
4, 6, 8 ๋ฒ์ ์๊ณ
Finished ๋ ๋จ์ด๋ ์ ๋ณด์ด์ฃ ?
์, ์ด์ํจ์ ๋ง์์ ๊น์ด ์ธ๊ธฐ๊ณ ์ฐ์ ์ ์บก์ฒ ๋ ๋ด์ฉ์ ์ฝ์ด๋ณผ๊ฒ์
๊ทธ๋ฌ๋ฉด ๊ถ๊ธ์ฆ์ด ํด๊ฒฐ๋ ๊ฑฐ์์
4. ํ์คํ์ค ์ด๋ค ์๋ฏธ๊ฐ ๋ค์ด๊ฐ์์๊น์?
(1) Client hello (ํด๋ผ์ด์ธํธ -> ์๋ฒ)
์ฌ์ฉ์(client)๊ฐ ๋ค์ด๋ฒ์ ์ ์ํ๊ธฐ ์ํด ๋ค์ด๋ฒ ์๋ฒ์ชฝ์ ํต์ ์ ์์ฒญํ๋๊ฑฐ์์.
์ด ๋, ํด๋ผ์ด์ธํธ๋ ํต์ ํ๊ณ ์ ํ๋ TLS ๋ฒ์ , ์์ ์ด ์ง์ํ๋ cipher ๋ฆฌ์คํธ, ํด๋ผ์ด์ธํธ๊ฐ ์์ฑํ ๋์ ์ ๋ณด๋ฅผ ๋ณด๋ ๋๋ค.
(์ํฉ๊ทน)
ํด๋ผ์ด์ธํธ๋ ์๋ฒ๊ฐ ๋ฏฟ์ ์ ์๋ ๋ ์์ธ์ง ๋ชจ๋ฆ ๋๋ค. "์๋ฒ์ผ ๋๋ฅผ ๋ด๊ฐ ๋ฏฟ์ด๋ ๋ ๊น?"
(2) Server hello (ํด๋ผ์ด์ธํธ <- ์๋ฒ)
์ธ์ฌ๋ฅผ ๋ฐ์์ผ๋ฉด ๊ฐ์ด ์ธ์ฌ๋ฅผ ํด์ผ๊ฒ ์ง์ ?
์๋ฒ๋ ์์ ์ SSL๋ฒ์ , ์์ ์ด ๋ง๋ ์์์ ๋์์ ํด๋ผ์ด์ธํธ์ cipher ๋ฆฌ์คํธ ์ค ํ๋์ ์ ํํ์ฌ ๊ทธ ์ ๋ณด๋ฅผ ํด๋ผ์ด์ธํธ์๊ฒ ๋ณด๋ ๋๋ค.
(์ํฉ๊ทน)
๊ทธ๋ผ ์๋ฒ๋ ํด๋ผ์ด์ธํธ์๊ฒ ๋งํฉ๋๋ค. "๊ทธ๋ผ ๊ทธ๋ผ ๋ฏฟ์ด๋ ๋์ง!! ์ฌ๊ธฐ ๋๋ฅผ ์ฆ๋ช ํ ์ ์๋ ์ฆ๋ช ์(CA๊ธฐ๊ด์์ ์ ๊ณตํด์ค SSL/TSL ์ธ์ฆ์)๋ ์๋๊ฑธ?"
(3) Server certificate or Server key Exchanges (ํด๋ผ์ด์ธํธ <- ์๋ฒ)
์์ง ์ ๋๋ฌ์ด์
์๋ฒ๋ ๊ฑฐ๊ธฐ์ ๋๋ถ์ด ์์ ์ด ๊ฐ๊ณ ์๋ ์ธ์ฆ์์ ๋ณด๋ฅผ ์ ์กํฉ๋๋ค.
(์ํฉ๊ทน)
ํด๋ผ์ด์ธํธ๋ ์๋ฒ๊ฐ ๋ณด๋ด์ค ์ฆ๋ช ์(SSL/TSL ์ธ์ฆ์)๋ฅผ ๋ด ๋๋ค. ๊ทธ๋ฆฌ๊ณค ์ด๊ฒ ์์กฐ๋ ์ฆ๋ช ์์ธ์ง ์๋๋ฉด ์ง์ง ์ฆ๋ช ์์ธ์ง ํ์ธ์ ํด๋ด์ผ ํฉ๋๋ค. ๊ทธ๋์ ํด๋ผ์ด์ธํธ๋ CA๊ธฐ๊ด์๊ฒ ์ ํ๋ฅผ ๊ฑธ์ด ์ด ์ฆ๋ช ์๊ฐ ๋ง๋์ง ๋ฌผ์ด๋ด ๋๋ค. ๊ทธ๋ผ CA๊ธฐ๊ด์ ์ฆ๋ช ์๊ฐ ์ง์ง์ธ์ง ํ๋จํ๊ณ ๋ง๋ค๋ฉด, ํด๋ผ์ด์ธํธ์๊ฒ ์๋ฒ๋ฅผ ๋ฏฟ์ด๋ ๋๋ค๊ณ ์๋ ค์ค๋๋ค.
(4) Certificate Request (ํด๋ผ์ด์ธํธ <- ์๋ฒ)
๋ฒ์ธ๋ก ํด๋ผ์ด์ธํธ๋ ๋ง์ฐฌ๊ฐ์ง๋ก ์๋ฒ ๋ํ ํด๋ผ์ด์ธํธ์๊ฒ ๋ ์ ์์ ์ธ์ ๋ ? ๋ผ๋ฉฐ ์ธ์ฆ์๋ฅผ ์์ฒญํ ์ ์์ด์
์ ๋จ๊ณ๋ ์ ํ์ ์ผ๋ก ๋์ํ๋๋ฐ, ์ด๋ฒ ๊ณผ์ ์๋ ์๋ค์
(5) Server hello done (ํด๋ผ์ด์ธํธ <- ์๋ฒ)
๋๋์ด ์๋ฒ์ ๋ง์ด ๋๋ฌ์ต๋๋ค.
(6) Client Certificate (ํด๋ผ์ด์ธํธ -> ์๋ฒ)
์ ์ด์ ํด๋ผ์ด์ธํธ๊ฐ ๋งํ ์ฐจ๋ก๋ค์
์ฐ์ ์ ์๊น ํด๋ผ์ด์ธํธ์๊ฒ ์์ฒญํ ์ธ์ฆ์. Client ์ธ์ฆ์ ์์ผ๋ ํ ๋ง์ด ์์ด์.
๋์ด๊ฐ๊ฒ์
(7) Client key exchange (ํด๋ผ์ด์ธํธ -> ์๋ฒ)
ํด๋ผ์ด์ธํธ๋ ์์ ์ด ๋ง๋ ๋์์ ์๋ฒ๊ฐ ๋ง๋ ๋์๋ฅผ ํตํด pre-master-secret๋ฅผ ์์ฑํฉ๋๋ค. ๊ทธ๋ฆฌ๊ณ ์๋ฒ์ ๊ณต๊ฐํค๋ฅผ ํตํด ์ํธํ ํ์ฌ ์๋ฒ๋ก ์ ์กํฉ๋๋ค.
์ฆ, ํด๋น๊ณผ์ ์ ํตํด ์ค์ง์ ์ผ๋ก ์ํธํ์ ์ฌ์ฉํ๋ ๋์นญํค๊ฐ ์์ฑ๋ฉ๋๋ค.
(์ํฉ๊ทน)
์ด์ ํด๋ผ์ด์ธํธ๋ ์๋ฒ๋ฅผ ์์ ํ ์ ๋ขฐํ ์ ์๊ฒ ๋์์ต๋๋ค. ํด๋ผ์ด์ธํธ๋ฅผ ์๋ฒ์ ๊ด๊ณ๋ฅผ ๋น๋ฐ๋ฆฌ์ ์ ์งํ๊ณ ์ ๋น๋ฐ์น๊ตฌ๊ฐ ๋์๊ณ ํฉ๋๋ค. ๊ทธ๋์ ์์ ๋ง์ ์ํธ(pre-master-secret)๋ก ๋ฐํ์ผ๋ก ํค(๋์นญํค)๋ฅผ ๋ง๋ค์ด ์๋ฒ์๊ฒ ์ ๋ฌํด์ค๋๋ค.
(8) Client verify (ํด๋ผ์ด์ธํธ -> ์๋ฒ)
ํด๋ผ์ด์ธํธ ์ธ์ฆ์์ ๋ฌด๊ฒฐ์ฑ์ ๋ํด ๊ฒ์ฆํ๋๋ถ๋ถ์ธ๋ฐ, client ์ธ์ฆ์ ์์ผ๋ ๋์ด๊ฐ๊ฒ์ !!
(9) Change cipher spec / finished (ํด๋ผ์ด์ธํธ -> ์๋ฒ)
ํด๋ผ์ด์ธํธ์ ๋ง์ง๋ง ๋ง์ ํ์ ๋ ์๊ณ ๋ฆฌ์ฆ๊ณผ ํค๋ฅผ ์ด์ฉํ๊ณ , ๋ฐ๋ก (finished)๋ฉ์ธ์ง๋ฅผ ์ ์กํฉ๋๋ค.
์ฆ, Finished ๋ฉ์์ง๊ฐ ํ์๋ ์๊ณ ๋ฆฌ์ฆ ๋ฐ ํค๊ฐ ์ฒ์์ผ๋ก ์ ์ฉ๋๋ ๊ฒ์ด์ฃ
(์ํฉ๊ทน)
์๋ฒ๋ ํด๋ผ์ด์ธํธ์๊ฒ ํค(๋์นญํค)๋ฅผ ๋ฐ์๊ณ , ์์ผ๋ก ํด๋ผ์ด์ธํธ์ ๋ฉ์์ง๋ฅผ ์ฃผ๊ณ ๋ฐ์๋ ํค๋ฅผ ์ด์ฉํด์ ์ฝ์ด์ผํฉ๋๋ค. ์๋ํ๋ฉด ๋ฉ์์ง๋ ํค(๋์นญํค)๋ก ์ํธํ๊ฐ ๋์ด์๊ธฐ ๋๋ฌธ์ด์ฃ .
(10) Change cipher spec / finished (ํด๋ผ์ด์ธํธ <- ์๋ฒ)
์๋ฒ ๋ํ ํด๋ผ์ด์ธํธ์ ๋ฉ์ธ์ง๋ฅผ ํ์ธํ๊ณ ๋์ผํ๊ฒ Change Cipher Specs ๋ฉ์์ง ์ ์ก ํ (Finished)๋ฉ์ธ์ง๋ฅผ ํตํด ์ํธํ ๋ ํต์ ์ ์ฌ์ฉํฉ๋๋ค.
์ ์ด๋ก์จ SSL ํธ๋์์ดํน์ด ๋๋ฌ์ต๋๋ค.
๊ฒฐ๊ตญ SSL ํธ๋์์ดํน์ https:// ์ ์ ์ํ๋ ๊ณผ์ ์ ๋๋ค.
์ฃผ์ ์น๊ณ ์ํฐํ๋ฒ ๋๋ ์ ๋ฟ์ธ๋ฐ ์๊ณ ๋ณด๋ ๊ต์ฅํ ๋ง์ ํจํท๋ค์ด ์๋ค๊ฐ๋ค ํ๊ณ ์์์ฃ ?