SSL / TLS
๐ฟ SSL / TLS
- SSL: Secure Sockets Layer(Netscape์ฌ์์ ๊ฐ๋ฐ)
- TLS: Transport Layer Security
๐ฟ Certificate ๋ณด์ฅ
- ๋จผ์ ์๋ฒ์ธก์ ์ธ์ฆ์๊ฐ ํ์ํจ
- ์ด ์ธ์ฆ์ ๋ฐ๊ธ์ ์ํด์ key(๊ณต๊ฐํค, ๊ฐ์ธํค)๋ฅผ ๋ง๋ค์ด์ผ ํจ
- ๊ณต๊ฐํค(csr)๋ฅผ CA๊ธฐ๊ด์ ๋ณด๋ด๋ฉด ๊ณต๊ฐํค์ ์ธ์ฆ์(crt)๋ฅผ ๋ฌถ์ด์ ๋ณด๋ด์ค
- ์ด ์ธ์ฆ์ ๋ฐ๊ธ์ ์ํด์ key(๊ณต๊ฐํค, ๊ฐ์ธํค)๋ฅผ ๋ง๋ค์ด์ผ ํจ
- Client๊ฐ ์๋ฒ ์ ์์ ์ธ์ฆ์๋ฅผ ์๊ตฌ
- Server๊ฐ ์ธ์ฆ์์ ๊ณต๊ฐํค๋ฅผ ๋ณด๋
- Client๊ฐ CA๊ธฐ๊ด์ ์ธ์ฆ์๋ฅผ ํ์ธ ์์ฒญ
- CA๊ธฐ๊ด์ ํ์ธ์ด ์๋ฃ๋๋ฉด ์ํธํ๋ session key๋ฅผ ๋ณด๋
- ํต์ ํ ๋ ๋ง๋ค ๊ณต๊ฐํค๋ฅผ ์ฌ์ฉํ๋ฉด resource๋ฅผ ๋๋ฌด ๋ง์ด ์ก์๋จน์(๊ณต๊ฐํค๋ ๋ง์ด ๊ธธ๋ค)
- ๊ทธ๋์ ์ฒ์ ํต์ ํ ๋๋ง session key๋ฅผ ๊ณต๊ฐํค๋ก ์ํธํ ํด์ ์ฌ์ฉ
- ์ด์ ์ด session key๋ก ๋ฐ์ดํฐ๋ฅผ ์ํธํํด์ ์ฌ์ฉํจ ___
๐ฟ ๋์
1> Client Hello
Client๊ฐ ์๋ฒ์ ์ ์์ ์๋ํ ๋ ํ๋ ์ฒซ๋ฒ์งธ ์ธ์ฌ
- random: Client๋ 32 ๋ฐ์ดํธ ๋์๊ฐ์ ์ ๋ฌ
- ๋์ค์ ๋น๋ฐ ๋ฐ์ดํฐ(master secret)๋ฅผ ์ํด ์ฌ์ฉ๋จ
- session ID: ์ธ์ ์ ์ฒ์ ์์ฑํ ๋๋ ๋น๊ฐ, ์ด๋ฏธ ์์ฑ๋ ์ธ์ ์ด ์๋ค๋ฉด ๊ทธ ์ธ์ ID๋ฅผ ์ ๋ฌ
- cipher suit: ํด๋ผ์ด์ธํธ๊ฐ ์ง์๊ฐ๋ฅํ ํค ๊ตํ ์๊ณ ๋ฆฌ์ฆ, ๋์นญํค ์ํธ ์๊ณ ๋ฆฌ์ฆ ๋ฑ์ ์๋ ค์ค
- ํค๊ตํ์ RSA, ๋์นญํค๋ AES_128 GCM๋ฐฉ์๋ฑ์ ์ฌ์ฉ
2> Server Hello
์ฌ์ฉํ TLS๋ฒ์ , Client, ์๋ฒ ๊ณตํต์ผ๋ก ์ง์๊ฐ๋ฅํ Cipher suite, ์์ถ๋ฐฉ์๋ฑ์ client์ ์ ๋ฌ
- random: ์๋ฒ๋ 32byte ๋์๋ฅผ client์ ์ ๋ฌ
- ์ด ์ญ์ master secret์ด๋ผ๋ ๋น๋ฐ ๊ฐ์ ์์ฑํ ๋ ์ฌ์ฉ
- session ID: ์ธ์ ์ ๋ณด
3> server certificate
์ฌ๊ธฐ์ ์ธ์ฆ์๋ฅผ ์ด์ฉํด์ ํด๋ผ์ด์ธํธ๋ ์๋ฒ๊ฐ ๋ฏฟ์ ๋งํ ์๋ฒ์ธ์ง ํ์ธํ๋ค.(Certificate ๋ณด์ฅ ๋ถ๋ถ)
4> Server key exchange
ํค ๊ตํ์ ํ์ํ ์ ๋ณด๋ฅผ ์ ๊ณตํฉ๋๋ค.
- ํ์ํ์ง ์์ผ๋ฉด ์ด ๊ณผ์ ์ ์๋ต์ด ๊ฐ๋ฅ
- ์๋ฅผ ๋ค์ด ํค๊ตํ ์๊ณ ๋ฆฌ์ฆ์ด Diffie-Hellman์ผ๋ก ์ฌ์ฉํ๋ค๋ฉด ์์, ์์๊ทผ ๋ฑ์ด ํ์ํจ
5> Certificate request
์๋ฒ ์ญ์ ํด๋ผ์ด์ธํธ๋ฅผ ์ธ์ฆํด์ผํ ๋ ์ธ์ฆ์๋ฅผ ์๊ตฌํ ์ ์์ต๋๋ค.
- ํ์ ์ ์ฐจ๋ ์๋
6> Server Hello Done
์๋ฒ์ ์ธ์ฌ๊ฐ ๋๋จ
7> Certificate
๋ฐฉ๊ธ ์ ์๋ฒ๊ฐ ์์ฒญํ๋ ์ธ์ฆ์๋ฅผ ์ค ์ ์์ต๋๋ค.
- ์๋ฒ๊ฐ ์์ฒญํ์ง ์์์ผ๋ฉด ์๋ต๋จ
8> Client key exchange
ํค ๊ตํ์ ํ์ํ ์ ๋ณด(pre-master-secret)๋ฅผ ์๋ฒ์ ์ ๊ณต
- ์ ๋ ๋ ธ์ถ๋์ด์๋ ์๋จ
- ์๋ฒ๋ก ๋ฐ์ random ๊ฐ์ ์ฌ๋ฃ๋ก ํด๋ผ์ด์ธํธ๊ฐ ์์ฑํ ๋๋ค๊ฐ์ ์กฐํฉํ์ฌ ์๋ฒ์ ์ ์ก
- ์ด ์ ๋ณด๋ ์ธ์ฆ์์์ ๊ณต๊ฐํค๋ก ์ํธํ ํด์ ์ ์กํ๋ค.
- ์ํธํ๋ ์ ๋ณด๋ฅผ ์๋ฒ๊ฐ ๊ฐ์ธํค๋ก ๋ณตํธํ ํ๋ค.
- ์ด์ ๊ณต์ ํ๊ณ ์๋ pre-master secret์ ์ผ๋ จ์ ๊ณผ์ ์ ๊ฑฐ์ณ master secret์ผ๋ก ๋ง๋ฌ
- ์ด ํค๋ฅผ ๋์นญํค๋ก ์ฌ์ฉ
9> Certificate verify
ํด๋ผ์ด์ธํธ์ ๋ํ Certificate request๋ฅผ ๋ฐ์๋ค๋ฉด ๋ณด๋ธ ์ธ์ฆ์์ ๋ํ ๊ฐ์ธํค๋ฅผ ๊ฐ์ง๊ณ ์๋ค๋ ๊ฒ์ ์ฆ๋ช
- handshake ๊ณผ์ ์์ ์ฃผ๊ณ ๋ฐ์ ๋ฉ์์ง + master secret์ ์กฐํฉํ hash๊ฐ์ ๊ฐ์ธํค๋ก ๋์งํธ ์๋ช ํ์ฌ ์ ์ก
10> Change cipher spec
ํ์๋ ๋ณด์ ํ๋ผ๋ฏธํฐ๋ฅผ ์ ์ฉํ๊ฑฐ๋ ๋ณ๊ฒฝ๋ ๋ ์๋ฒ์๊ฒ ์๋ฆฝ๋๋ค.
11> Client Finished
ํด๋ผ์ด์ธํธ ๋
12> change cipher spec
ํด๋ผ์ด์ธํธ์๊ฒ ๋ณด์ ํ๋ผ๋ฏธํฐ ๋ณ๊ฒฝ์ ์๋ฆฝ๋๋ค.
13> Finished
์๋ฒ๋ ๋