๋์นญํค์ ๋น๋์นญํค
- ๋์นญํค(๋น๋ฐํค) : ํ๋์ ํค๋ก ๋ฐ์ดํฐ๋ฅผ ์ํธํํ๊ณ ๋ณตํธํ
- ๋น๋์นญํค(๊ณต๊ฐํค) : ๊ณต๊ฐํค์ ๊ฐ์ธํค๋ก ์ํธํ ๋ฐ ๋ณตํธํ ์ํ
- ์ํธํ - ๊ณต๊ฐํค, ๋ณตํธํ - ๊ฐ์ธํค
- ๋ฐ์ดํฐ๋ฅผ ์ํธํํ์ฌ ๋ณดํธํ๊ธฐ ์ํ ๋ชฉ์
- ์ํธํ - ๊ฐ์ธํค, ๋ณตํธํ - ๊ณต๊ฐํค
- ์ธ์ฆ์ ์ํ ๋ชฉ์
CA์ ์ธ์ฆ์
- CA : ์ธ์ฆ์์ ์ญํ ์ ํด๋ผ์ด์ธํธ๊ฐ ์ ์ํ ์๋ฒ๊ฐ ์๋ํ ์๋ฒ๊ฐ ๋ง๋์ง ๋ณด์ฅํ๋ ๊ฒ
- → ์ด ์ญํ ์ ํ๋ ๋ฏผ๊ฐ๊ธฐ์ ์ CA(Certificate Authority) ํน์ Root Certificate๋ผ๊ณ ๋ถ๋ฆ
- SSL ์ธ์ฆ์ : ์๋น์ค์ ์ ๋ณด(์ธ์ฆ์๋ฅผ ๋ฐ๊ธํ CA, ์๋น์ค์ ๋๋ฉ์ธ ๋ฑ)์ ์๋ฒ์ธก ๊ณต๊ฐํค๊ฐ ๋ค์ด์์
SSL Handshake
- ํ๋์ : TCP์ 3-way handshake๋ก HTTPS๊ฐ TCP ๊ธฐ๋ฐ์ ํ๋กํ ์ฝ์ด๊ธฐ ๋๋ฌธ์ ์ํธํ ํ์(SSL Handshake)์ ์์ ์ฐ๊ฒฐ์ ์์ฑํ๊ธฐ ์ํด ์ค์ํ๋ ๊ณผ์
- ๋ ธ๋์ : SSL Handshake
โ Client Hello : ํด๋ผ์ด์ธํธ๊ฐ ์๋ฒ์ ์ฐ๊ฒฐ์ ์๋ํ๋ฉฐ ์ ์กํ๋ ํจํท
- ์์ ์ด ์ฌ์ฉ ๊ฐ๋ฅํ Cipher SUite ๋ชฉ๋ก, Session ID, SSL ํ๋กํ ์ฝ ๋ฒ์ , Random Byte ๋ฑ์ ์ ๋ฌ
- Cipher Suite๋ SSL Protocol version, ์ธ์ฆ์ ๊ฒ์ , ๋ฐ์ดํฐ ์ํธํ ํ๋กํ ์ฝ, Hash ๋ฐฉ์ ๋ฑ์ ์ ๋ณด๋ฅผ ๋ด๊ณ ์๋ ์กด์ฌ๋ก ์ ํ๋ Cipher Suite์ ์๊ณ ๋ฆฌ์ฆ์ ๋ฐ๋ผ ๋ฐ์ดํฐ๋ฅผ ์ํธํ ํจ
→ ํด๋ผ์ด์ธํธ๊ฐ ์ฌ์ฉ๊ฐ๋ฅํ Cipher Suite๋ฅผ ์๋ฒ์ ์ ๊ณตํ๋ ๊ฒ์ ์ ์ ์์
โ Server Hello : ํด๋ผ์ด์ธํธ๊ฐ ๋ณด๋ด์จ Client Hello Packet์ ๋ฐ์ Cipher Suite ์ค ํ๋๋ฅผ ์ ํํ ๋ค์ ํด๋ผ์ด์ธํธ์ ์ด๋ฅผ ์๋ฆผ
- ์์ ์ SSL Protocol Version ๋ฑ๋ ๊ฐ์ด ๋ณด๋
→ 17๊ฐ์๋ Cipher Suite์์ ์๋ฒ๊ฐ ์ ํํ Cipher Suite๋ง ์กด์ฌํ๋ ๊ฒ์ ์ ์ ์์
โ Certificate : ์๋ฒ๊ฐ ์์ ์ SSL ์ธ์ฆ์๋ฅผ ํด๋ผ์ด์ธํธ์๊ฒ ์ ๋ฌ
- ์ธ์ฆ์ ๋ด๋ถ์๋ ์๋ฒ๊ฐ ๋ฐํํ ๊ณต๊ฐํค(+๊ฐ์ธํค๋ ์๋ฒ๊ฐ ์์ )
- ํด๋ผ์ด์ธํธ๋ ์๋ฒ๊ฐ ๋ณด๋ธ CA์ ๊ฐ์ธํค๋ก ์ํธํ๋ SSL ์ธ์ฆ์๋ฅผ ์ด๋ฏธ ๋ชจ๋์๊ฒ ๊ณต๊ฐ๋ CA์ ๊ณต๊ฐํค๋ฅผ ์ฌ์ฉํ์ฌ ๋ณตํธํ (๋ณตํธํ์ ์ฑ๊ณตํ๋ฉด ์ง์ง์์ด ์ฆ๋ช ๋๋ ๊ฒ)
- ํด๋ผ์ด์ธํธ๋ ๋ฐ์ดํฐ ์ํธํ์ ์ฌ์ฉํ ๋์นญํค(๋น๋ฐํค)๋ฅผ ์์ฑํ ํ SSL ์ธ์ฆ์ ๋ด๋ถ์ ๋ค์ด์๋ (์๋ฒ๊ฐ ๋ฐํํ) ๊ณต๊ฐํค๋ฅผ ์ด์ฉํด ์ํธํํ์ฌ ์๋ฒ์๊ฒ ์ ์ก
→ SSL์ด ๋ฌด์จ ์๊ณ ๋ฆฌ์ฆ์ผ๋ก ์ํธํ๋์๊ณ , ๋ฌด์จ Hash์๊ณ ๋ฆฌ์ฆ์ผ๋ก ์๋ช ๋์๋์ง ํ์ธ ๊ฐ๋ฅ
โ Server Key Exchange/ Server Hello Done
- ‘Server Key Exchange’๋ ์๋ฒ์ ๊ณต๊ฐํค๊ฐ SSL ์ธ์ฆ์ ๋ด๋ถ์ ์๋ ๊ฒฝ์ฐ, ์๋ฒ๊ฐ ์ง์ ์ ๋ฌํจ์ ์๋ฏธ
- ๊ณต๊ฐํค๊ฐ SSL ์ธ์ฆ์ ๋ด๋ถ์ ์์ ๊ฒฝ์ฐ Server Key Exchange๋ ์๋ต๋จ
- ์ธ์ฆ์ ๋ด๋ถ์ ๊ณต๊ฐํค๊ฐ ์๋ค๋ฉด ํด๋ผ์ด์ธํธ๊ฐ CA์ ๊ณต๊ฐํค๋ฅผ ํตํด ์ธ์ฆ์๋ฅผ ๋ณตํธํํ ํ ์๋ฒ์ ๊ณต๊ฐํค๋ฅผ ํ๋ณดํ ์ ์์ → ์๋ฒ๊ฐ ํ๋์ ๋ง์ณค์์ ์ ๋ฌ
ํค ๊ตํ ์๊ณ ๋ฆฌ์ฆ : Diffie-Hellmen ์๊ณ ๋ฆฌ์ฆ → Server Key Exchange ๋ฐ์
โ Client Key Exchange
- ๋์นญํค(
๋ฐ์ดํฐ๋ฅผ ์ค์ ๋ก ์ํธํํ๋ ํค
)๋ฅผ ํด๋ผ์ด์ธํธ๊ฐ ์์ฑํ์ฌ SSL ์ธ์ฆ์ ๋ด๋ถ์์ ์ถ์ถํ ์๋ฒ์ ๊ณต๊ฐํค๋ฅผ ์ด์ฉํด ์ํธํํ ํ ์๋ฒ์๊ฒ ์ ๋ฌ - RSA ํค๊ตํ ์๊ณ ๋ฆฌ์ฆ์ ์ฌ์ฉํ๊ฒ๋๋ฉด ํด๋ผ์ด์ธํธ๊ฐ ๋์นญํค(๋น๋ฐํค)๋ฅผ ์์ฑํ์ฌ ์ธ์ฆ์ ๋ด๋ถ์ ๋ค์ด ์๋ ์๋ฒ์ ๊ณต๊ฐํค๋ก ์ํธํํ ํ ์ ๋ฌํ๊ฒ ๋จ
- ์ฌ์ง์ ๊ฒฝ์ฐ Diffie-Hellman(DH, DHE ๋ฑ)์๊ณ ๋ฆฌ์ฆ์ ์ฌ์ฉ
- DH ์๊ณ ๋ฆฌ์ฆ๊ณผ ํ์๊ณก์ ์ํธ์ธ ECDHE (Elliptic Curve DHE)๋ฅผ ์ฌ์ฉํ๊ฒ ๋๋ฉด ํด๋ผ์ด์ธํธ๊ฐ ๋ฐ์ดํฐ๋ฅผ ์ํธํํ ๋์นญํค๋ฅผ ๋ณด๋ด๋ ๊ฒ์ด ์๋๋ผ ๋์นญํค๋ฅผ ์์ฑํ ์ฌ๋ฃ๋ฅผ ํด๋ผ์ด์ธํธ์ ์๋ฒ๊ฐ ๊ตํํ๊ฒ ๋จ
- → ์๋ก ๊ตํํ ๊ฐ์์ ์ฌ๋ฃ๋ฅผ ํฉ์ณ ๋์ผํ ๋์นญํค๋ฅผ ๋ง๋ค ์ ์์
โ Client Cipher Spec/ Finished
- ํด๋ผ์ด์ธํธ, ์๋ฒ ๋ชจ๋๊ฐ ์๋ก์๊ฒ ๋ณด๋ด๋ Packet์ผ๋ก ๊ตํํ ์ ๋ณด๋ฅผ ๋ชจ๋ ๊ตํํ ๋ค ํต์ ํ ์ค๋น๊ฐ ๋ค๋์์์ ์๋ฆฌ๋ ํจํท
FInished
ํจํท์ ๋ณด๋ด์ด SSL Handshake๋ฅผ ์ข ๋ฃ
์์ฝ
์ฐธ๊ณ ์๋ฃ
HTTPS ํต์ ๊ณผ์ ์ฝ๊ฒ ์ดํดํ๊ธฐ #3(SSL Handshake, ํ์)
'CS > Network' ์นดํ ๊ณ ๋ฆฌ์ ๋ค๋ฅธ ๊ธ
[CS] Blocking/Non-blocking & Synchronous/Asynchronous (1) | 2024.01.30 |
---|---|
[CS] Load Balancing (๋ก๋๋ฐธ๋ฐ์ฑ) (0) | 2024.01.26 |
[CS] HTTP & HTTPS (0) | 2024.01.26 |
[CS] ๋์นญํค & ๊ณต๊ฐํค (1) | 2023.11.29 |
[CS] UDP (0) | 2023.11.29 |