์ํธํ ํต์ ํ๋กํ ์ฝ
SSL(Secure Socket Layer) / TLS(Transport Layer Security)๋ ๋ชจ๋ ์น ๋ธ๋ผ์ฐ์ ์ ์น ์๋ฒ ๊ฐ ํต์ ์ ์ํธํํ๋ ํ๋กํ ์ฝ์ด๋ค. SSL์ ์น ๋ธ๋ผ์ฐ์ ๊ฐ๋ฐ์ฌ์์ ๋ง๋ ํ๋กํ ์ฝ๋ก ์ธํฐ๋ท ๊ธฐ์ ํ์คํ ๋จ์ฒด์ธ IETF๊ฐ TLS๋ก ๋ค์ ์ค๊ณํ์ฌ ์ธํฐ๋ท ํ์ค์ผ๋ก ์ผ์๋ค.
๐ ์ฅ์
- ๊ธฐ๋ฐ์ฑ(์ํธํ) : ์๋ฒ์ ์ฃผ๊ณ ๋ฐ๋ ๋ฐ์ดํฐ๊ฐ ์ค๋ํ ๋๋ ๊ฒ์ ๋ฐฉ์งํ๋ค.
- ๋ฐ์ดํฐ ๋ฌด๊ฒฐ์ฑ : ํจํท ์ ๋ฌ ๊ณผ์ ์์ ๋ฐ์ดํฐ๊ฐ ์ 3์์ ์ํด์ ์ ์๋ก ๋ณ๊ฒฝ๋๋ ๊ฒ์ ๋ฐฉ์งํ๋ค.
- ์๋ฒ ์ธ์ฆ : ์๋ฒ๊ฐ ์ ๋ขฐํ ์ ์๋ ์๋ฒ๋ผ๋ ๊ฒ์ ํ์ธํ๋ค.
๐ ์ํธํ
TLS๋ ๋ณด์๊ณผ ์ฑ๋ฅ์์ ์ด์ ๋ก ๋ ๊ฐ์ง ์ํธํ ๋ฐฉ๋ฒ์ ํผ์ฉํด์ ์ฌ์ฉํ๋ค. ์ํธํ๋ฅผ ์ํด์๋ ํค๊ฐ ํ์ํ๋ค.
์ด๋ ์ํธํ์ ๋ณตํธํ์ ์ฌ์ฉํ๋ ํค๋ ์๋ก ๋์ผ ํ ์๋, ๋ค๋ฅผ ์๋ ์๋ค.
๋์นญํค ์ํธํ(Symmetric Key Algorithm)
- ๋์นญํค ์ํธํ๋, ์ํธํ๋ฅผ ํ๋ ํค์ ๋ณตํธํ๋ฅผ ํ๋ ํค๊ฐ ๋์ผํ ํค๋ฅผ ์ฌ์ฉํ๋ ๋ฐฉ์์ด๋ค. ์ด ๋ ์ฌ์ฉํ๋ ํค๋ฅผ ๋์นญํค๋ผ๊ณ ํ๋ค.
- ๋์นญํค๋ฅผ ์ฌ์ฉํ๊ธฐ ์ํด์๋ ์๋์ ๊ฐ์ ํค๋ฅผ ๊ณต์ ํด์ผ ํ๋ค. ๋์นญํค๋ฅผ ํจํท์ ํตํด ์๋๋ฐฉ๊ณผ ๊ณต์ ํ๋ ๊ณผ์ ์์ ์ด ํจํท์ ํ์ณ๋ณด๋ ์ค๋ํ(sniffing) ๊ณต๊ฒฉ์ ์ทจ์ฝํ๋ค๋ ๋จ์ ์ด ์กด์ฌํ๋ค.
๋น๋์นญํค ์ํธํ
- ํ๋์ ํค๋ฅผ ๊ฐ๋ ๋์นญํค ์ํธ์ ๋ฐฉ์๊ณผ ๋ฌ๋ฆฌ, ๋น๋์นญํค ์ํธํ ๋ฐฉ์์ ํ ์์ ํค๋ฅผ ๊ฐ๊ฒ ๋๋ค. ์ด ํ ์์ ํค๋ฅผ ๊ฐ๊ฐ ์ํธํ, ๋ณตํธํ ๊ณผ์ ์์ ์ฌ์ฉํ๋ค.
- ํ๋๋ ๊ณต๊ฐ ํค(Public Key), ๋ค๋ฅธ ํ๋๋ ๊ฐ์ธํค(Private Key)๋ผ๊ณ ๋ถ๋ฅธ๋ค. ํ๋์ ํค๋ก ์ํธํ๋ฅผ ํ์๋ค๋ฉด ๋ค๋ฅธ ๋จ์ ํค๋ก ๋ณตํธํ๋ฅผ ํ ์ ์๋ค. ์ํธํ์ ์ฌ์ฉํ ํค๋ก ๋ค์ ๋ณตํธํ๊ฐ ๋ถ๊ฐ๋ฅํ๋ค. ์ด๋ ๊ฒ ํ ์์ ํค๋ก ์ํธํ ๋ฐ ๋ณตํธํ๋ฅผ ํ๋ ๋ฐฉ์์ RSA ์๊ณ ๋ฆฌ์ฆ์ด๋ผ ํ๋ค.
- ๋น๋์นญํค ์ํธํ๋ฅผ ์ฌ์ฉํ๋ฉด ์๋๋ฐฉ์๊ฒ ์ ๋ฌํ๋ ๊ณต๊ฐํค๋ฅผ ๋์ค์ ํดํน๋นํ๋ค ํด๋ ๊ฐ์ธํค๋ฅผ ์์ง ๋ชปํ๊ธฐ ๋๋ฌธ์ ๋ณตํธํ๋ฅผ ํ ์ ์๋ค.
๐ TLS ์ํธํ ๋ฐฉ์
๋น๋์นญํค ์ํธํ๋ RSA ์๊ณ ๋ฆฌ์ฆ์ ์ด์ฉํ ์ํธํ ๋ฐฉ์์ผ๋ก ๋ณต์กํ ์ํ์ ์๋ฆฌ๋ก ์ด๋ฃจ์ด์ ธ ์์ด CPU ๋ฆฌ์์ค๋ฅผ ํฌ๊ฒ ์๋ชจํ๋ค๋ ๋จ์ ์ด ์๋ค. ์ด๋ฅผ ํด๊ฒฐํ๊ธฐ ์ํด TLS์์๋ ๋ ๊ฐ์ง์ ์ํธํ ๋ฐฉ์์ ๋ชจ๋ ์ฌ์ฉํ์ฌ ๋ ๋ฐฉ์์ ๋ณด์ํ์ฌ ์ฌ์ฉํ๋ค.
์ฒ์ ๋์นญํค๋ฅผ ์๋ก ๊ณต์ ํ๋ ๊ณผ์ ์์ RSA ๋น๋์นญํค ๋ฐฉ์์ ์ฌ์ฉํ๊ณ ์์ ํ๊ฒ ๊ณต์ ๋ฐ์ ๋์นญํค๋ฅผ ์ฌ์ฉํ์ฌ ์ค์ ํต์ ํ ๋ ๋ฐ์ดํฐ๋ฅผ ์ฃผ๊ณ ๋ฐ๋ ๊ณผ์ ์์ ์ฌ์ฉํ๋ค.
๐ ์ธ์ฆ์
์๋ฒ๊ฐ ์ ๋ขฐํ ์ ์๋ ์๋ฒ์ธ์ง๋ฅผ ํ์ธํ๊ธฐ ์ํด ํ์ํ๋ค. ์ธ์ฆ์๋ ๋ค์๊ณผ ๊ฐ์ ์ ๋ณด๋ค์ ํฌํจํ๋ค.
- ์๋น์ค ์ ๋ณด(์ธ์ฆ์๋ฅผ ๋ฐ๊ธํ CA, ์๋น์ค์ ๋๋ฉ์ธ ๋ฑ)
- ์๋ฒ ์ธก ๊ณต๊ฐ ํค(๊ณต๊ฐ ํค ์ํธํ ๋ฐฉ์)
- ์ง๋ฌธ, ๋์งํธ ์๋ช ๋ฑ
๐ CA(Certificate Authority)
CA๋ ์ธ์ฆ์๋ฅผ ๋ฐ๊ธํ๋ ๊ธฐ๊ด์ผ๋ก, Root Certificate๋ผ๊ณ ๋ ๋ถ๋ฅธ๋ค. TLS ํต์ ์ ํ๋ ค๋ฉด ์ด CA๋ฅผ ํตํด์ ์ธ์ฆ์๋ฅผ ๋ฐ๊ธ๋ฐ์์ผ ํ๋ค. CA๋ ์์ฒด์ ์ผ๋ก ๊ณต๊ฐ ํค์ ๊ฐ์ธ ํค๋ฅผ ๊ฐ์ง๊ณ ์๋ค. CA๋ก๋ถํฐ ์ธ์ฆ์๋ฅผ ๋ฐ๊ธ๋ฐ๊ธฐ ์ํด์๋ ๋ค์๊ณผ ๊ฐ์ ๋ฐฉ์์ ๋ฐ๋ฅธ๋ค.
- ๋ฐ๊ธ ๋ฐ๊ณ ์ ํ๋ ๊ธฐ๊ด์ ์์ ์ ์ฌ์ดํธ ์ ๋ณด(๋๋ฉ์ธ ๋ฑ)๊ณผ ๊ณต๊ฐ ํค๋ฅผ CA์๊ฒ ์ ์ถํ๋ค.
- CA์์ ์ธ์ฆ์๋ฅผ ๋ฐ๊ธ ๋ฐ๊ณ ์ ํ๋ ๊ธฐ๊ด์ ๋ํด ๊ฒ์ฆ์ ์งํํ๋ค.
- CA๋ ๊ฒ์ฆ์ ๊ฑฐ์น ํ ๋ฐ๊ธ ๋ฐ๊ณ ์ ํ๋ ๊ธฐ๊ด์ ๊ณต๊ฐ ํค๋ฅผ ํด์(SHA-256 ๋ฑ)ํ๋ค. ์ด๋ ๊ฒ ํด์ํ ๊ฐ์ Finger Print(์ง๋ฌธ)๋ผ๊ณ ํ๋ค.
- Finger Print๋ฅผ CA์ ๊ฐ์ธ ํค๋ก ์ํธํํ๊ณ , ์ธ์ฆ์์ ๋ฐ๊ธ์ ์๋ช ์ผ๋ก ๋ฑ๋กํ๋ค. ์ด๋ ๊ฒ ์๋ช ๋ ๊ฒ์ ๋์งํธ ์๋ช (Digital Signing)์ด๋ผ๊ณ ํ๋ค.
- ์ด์ CA๋ ๋์งํธ ์๋ช , ๋ฐ๊ธ์ ์ ๋ณด ๋ฑ์ด ๋ฑ๋ก๋์ด ์๋ ์ธ์ฆ์๋ฅผ ๋ฐ๊ธํ๋ค.
์ด๋ฌํ ๋ฐฉ์์ผ๋ก ์์ ์ธ์ฆ ๊ธฐ๊ด์ด ํ์ ์ธ์ฆ์๊ฐ ํฌํจํ๊ณ ์๋ ๊ณต๊ฐ ํค(์ธ์ฆ์)๋ฅผ ์์ ๊ธฐ๊ด์ ๊ฐ์ธ ํค๋ก ์ํธํํ์ฌ ์ํธ ๋ณด์ฆํ๊ฒ ๋๋ ๊ฒ์ ์ธ์ฆ์ ์ฒด์ธ(Certificate Chain)์ด๋ผ๊ณ ํ๋ค.
๋ฐ๊ธ๋ฐ๋ CA ๊ธฐ๊ด์ด Root CA๊ฐ ์๋๋ผ๋ฉด, ์ด CA ๊ธฐ๊ด๋ง์ ๋ ์์ CA์๊ฒ ์ธ์ฆ์๋ฅผ ๋ฐ๊ธ๋ฐ๋๋ค. ๋ณดํต 3๋จ๊ณ์ ๊ฑธ์ณ์ ์ธ์ฆ์ ์ฒด์ธ์ด ์ด๋ฃจ์ด์ง๋ค.
- tistory.com์ ์ธ์ฆ์๋ ๊ทธ ์์ ์ธ์ฆ์์ธ Thawte TLS RSA CA G1์ ์ธ์ฆ๊ธฐ๊ด(Intermediate CA)์ ๊ฐ์ธ ํค๋ก ์ํธํ ๋ ๊ฒ์ด๋ค.
- Thawte TLS RSA CA G1 ์ธ์ฆ์๋ ๊ทธ ์์ ์ธ์ฆ์์ธ DigiCert Global Root CA G2์ ์ธ์ฆ๊ธฐ๊ด์ ๊ฐ์ธ ํค๋ก ์ํธํ ๋ ๊ฒ์ด๋ค.
- DigiCert Global Root G2๋ ์์ ์ธ์ฆ๊ธฐ๊ด์ด ์๋ Root CA์ด๊ธฐ ๋๋ฌธ์ Self-Signed ๋์ด ์๋ค.
Self-Signed(์ค์ค๋ก ๋ณด์ฆ)์ด๋, ์์ ์ ์ธ์ฆ์๋ฅผ ํด์ํ ํ CA๊ฐ ์๋ ์์ ์ ๊ฐ์ธ ํค๋ก ์ํธํํ์ฌ ์๋ช ์ผ๋ก ๋ฑ๋กํ๋ ๊ฒ์ ๋งํ๋ค.
๐ CA ์ธ์ฆ ์์ด ์ธ์ฆ์ ์์ฑ
์ ๋ขฐ์ฑ์ ๋จ์ด์ง์ง๋ง CA ์ธ์ฆ๊ณผ ์๊ด ์์ด ๋ฐํํ๋ ์ธ์ฆ์๋ฅผ ์ฌ์ค ์ธ์ฆ์๋ผ๊ณ ํ๋ค. ์ด ์ฌ์ค ์ธ์ฆ์๋ Root CA ์ฒ๋ผ Self-Signed ๋์ด ์๋ค. ๋๋ฌธ์ ๋ณด์ฆ๊ธฐ๊ด์ด ์์ผ๋ฉฐ ๋๊ตฌ๋ ๋ณด์ฆํด์ฃผ์ง ์๋ ์ธ์ฆ์๋ค. ์ด๋ฌํ ์ฌ์ค ์ธ์ฆ์๋ฅผ ์ฌ์ฉํ์ฌ๋ TLS ํต์ ์ด ๊ฐ๋ฅํ๋ค. ์ด๋ฌํ ๊ฒฝ์ฐ “์ ๋ขฐํ ์ ์๋ ์ฌ์ดํธ”์ ๊ฐ์ ์๋ด๋ฌธ์ ํ์ธํ ์ ์๋ค.
๐ TLS(SSL) ์ธ์ฆ์๋ก ์๋ฒ๋ฅผ ์ธ์ฆํ๋ ๋ฐฉ๋ฒ
CA์์ ๋ฐ๊ธ๋ฐ์ ์ธ์ฆ์๋ฅผ ํตํด ์๋ฒ์ ์ ๋ขฐ์ฑ์ ์ธ์ฆํ๋ค. ํด๋ผ์ด์ธํธ๋ ์ด ์ธ์ฆ์๊ฐ CA์์ ๋ฐ๊ธ๋ฐ์ ๊ฒ์ธ์ง ์ด๋ป๊ฒ ํ์ธํ ๊น? ๋จผ์ ์์ ๋ ๊ฒ์, ํด๋ผ์ด์ธํธ๋ค์ CA ๋ฆฌ์คํธ๋ฅผ ์ด๋ฏธ ๊ฐ๊ณ ์๋ค. OS๋ฅผ ์ค์นํ ๋ PC์ ํฌํจ๋๊ฑฐ๋ ๋ธ๋ผ์ฐ์ ๊ฐ ํฌํจํ๊ณ ์๋ค. Mac์์๋ KeyChain์, ๋ธ๋ผ์ฐ์ ๋ ์์ค์ฝ๋์ ์ด๋ฏธ ์กด์ฌํ๋ค. CA ๋ฆฌ์คํธ๋, ๊ณต์ธ์ผ๋ก ์ธ์ฆ๋ CA๊ธฐ๊ด๋ค์ ๋ฆฌ์คํธ๋ค๋ก ๊ณต๊ฐ ํค ๋ํ ํจ๊ป ๊ฐ๊ณ ์๋ค.
1. ์๋ฒ์์ ์ธ์ฆ์๋ฅผ ์์ฒญํ๋ค.
CA๋ ๊ฒ์ฆ์ ๊ฑฐ์น ํ ์ ์ถ๋ฐ์ ์๋ฒ์ ๊ณต๊ฐํค๋ฅผ ํด์ํ์ฌ CA์ ๊ฐ์ธ ํค๋ก ์ํธํํ๋ค. ๊ทธ๋ฆฌ๊ณ ์๋ฒ์๊ฒ ์ธ์ฆ์๋ฅผ ๋ฐ๊ธํด ์ค๋ค. ์ด์ ์๋ฒ๊ฐ ์ง์ง ์์ ์์ ์ธ์ฆํด์ค ์ธ์ฆ์๋ฅผ ๊ฐ๊ฒ ๋๋ค.
2. ํด๋ผ์ด์ธํธ๊ฐ ์๋ฒ์ ์ ์ํ๊ธฐ์ํด ์ธ์ฆ์๋ฅผ ํ์ธํ๊ณ ์ ํ๋ค.
๋จผ์ ํด๋ผ์ด์ธํธ๋ ์๋ฒ๋ก๋ถํฐ ๋ฐ์ ์ธ์ฆ์๊ฐ ์์ ์ด ๊ฐ์ง CA ๋ฆฌ์คํธ์ ์๋ ๊ธฐ๊ด์์ ๋ฐ๊ธ๋ฐ์ ๊ฒ์ธ์ง ํ์ธํ๋ค. TLS ํต์ ์์ ํด๋ผ์ด์ธํธ์ ์๋ฒ๋ ์๋ก ๋ช๋ฒ ์ธ์ฌ๋ฅผ ์ฃผ๊ณ ๋ฐ์ผ๋ฉฐ ์๋ฒ๋ CA์์ ๋ฐ๊ธ ๋ฐ์ ์์ ์ ์ธ์ฆ์๋ฅผ ํด๋ผ์ด์ธํธ์๊ฒ ์ ๋ฌํ๋ค. ์ฌ๊ธฐ์ ์ ๋ฌ ๋ฐ์ ์ธ์ฆ์๊ฐ ์ค๊ฐ์ ๋ณ์กฐ๋ ์ฌ์ค์ด ์๋์ง ๋ฌด๊ฒฐ์ฑ ๊ฒ์ฌ๋ฅผ ์งํํ๋ค. ๋จผ์ ํด๋ผ์ด์ธํธ๋ ์๋ฒ๋ก๋ถํฐ ๋ฐ์ ์ธ์ฆ์๊ฐ ์์ ์ด ๊ฐ์ง CA ๋ฆฌ์คํธ์ ์๋ ๊ธฐ๊ด์์ ๋ฐ๊ธ๋ฐ์ ๊ฒ์ธ์ง ํ์ธํ๋ค.
์ด๊ฒ์ด ํ์ธ๋๋ฉด, ํด๋น CA ๊ธฐ๊ด์ ๊ณต๊ฐ ํค๋ก ์๋ฒ ์ธ์ฆ์์ ์๋ช (Digital Signing)์ ๋ณตํธํํ๋ค. ๋์งํธ ์๋ช ์ ๋ณตํธํ ํ๋ฉด ์ธ์ฆ์ ๋ด์ฉ์ ํด์ํ ๊ฐ์ด ๋์จ๋ค.
์ด๋ ๊ฒ ๋์งํธ ์๋ช ์ CA ๊ธฐ๊ด์ ๊ณต๊ฐ ํค๋ก ๋ณตํธํ ํ์ฌ ๋์จ ํด์ ๊ฐ๊ณผ, ์๋ฒ์ ๊ณต๊ฐ ํค๋ฅผ ํด์ํ ๊ฐ(Finger Print)์ด ์ผ์น ํ๋ค๋ฉด, ์ธ์ฆ์๊ฐ ์์กฐ๋์ง ์์์์ ์ธ์ฆํ๋ ๊ฒ์ด๋ค.
์ ์ฒด์ ์ธ ๊ฒ์ฆ ์ ์ฐจ๋ ๋ค์ ๊ทธ๋ฆผ๊ณผ ๊ฐ๋ค.
3. ํด๋ผ์ด์ธํธ๊ฐ ์๋ฒ๋ฅผ ์ธ์ฆํ๊ณ ์ํธํ ํต์ ์ ์งํํ๋ค.
ํด๋ผ์ด์ธํธ๋ ์๋ฒ์ ๊ณต๊ฐ ํค๋ก ๋์นญํค๋ฅผ ์ํธํํ์ฌ ์๋ฒ์๊ฒ ๋ณด๋ด๊ณ , ์๋ฒ๋ ์์ ์ ๊ฐ์ธ ํค๋ก ๋ณตํธํํ์ฌ ํด๋ผ์ด์ธํธ์ ๋์นญํค๋ฅผ ์์๋ธ๋ค. ํด๋ผ์ด์ธํธ๋ ์๋ฒ๊ฐ CA ์ธ์ฆ๊ธฐ๊ด์์ ์ธ์ฆ๋ฐ์ ์ ๋ขฐํ ์ ์๋ ์๋ฒ์์ ํ์ธํ์ผ๋ฉฐ ์ธ์ฆ์ ์์ ์๋ ์๋ฒ์ ๊ณต๊ฐ ํค ๋ํ ์์๋ค. ์ด์ ์๋ก ํต์ ์ ์ฃผ๊ณ ๋ฐ๊ธฐ ์ํด ํด๋ผ์ด์ธํธ๋ ์์ ์ด ์ฌ์ฉํ ๋์นญํค๋ฅผ ์๋ฒ์๊ฒ TLS ์ํธํ ๋ฐฉ์์ ํตํด ์ ๋ฌํ๋ค.
๐ TLS HandShake
๋ฐ์ดํฐ๋ฅผ ์ฃผ๊ณ ๋ฐ๊ธฐ ์ , ์๋ฒ์ ๋ฌด๊ฒฐ์ฑ์ ํ์ธํ๊ณ ๋์นญํค๋ฅผ ์ ๋ฌํ๋ ๊ณผ์ ์ด ์ด๋ฃจ์ด์ง๋ค.
Client Hello(Client)
ํด๋ผ์ด์ธํธ๊ฐ ์๋ฒ์ ์ ์ํ๋ค. ์ค์ Client Hello๋ผ๋ ํจํท์ ์ ์กํ๊ณ ์ด ํจํท ์์๋ ๋ค์๊ณผ ๊ฐ์ ๋ฉ์์ง ์ ๋ณด๊ฐ ๋ค์ด์๋ค.
- TLS version
ํด๋ผ์ด์ธํธ์์ ์ฌ์ฉํ๋ TLS ๋ฒ์ . - Cipher Suite List
ํด๋ผ์ด์ธํธ์ ์๋ฒ๊ฐ ์ง์ํ๋ ์ํธํ ๋ฐฉ์์ด ์๋ก ๋ค๋ฅผ ์ ์๊ธฐ ๋๋ฌธ์ ์ํธ๊ฐ์ ์ด๋ค ์ํธํ ๋ฐฉ์์ ์ฌ์ฉํ ๊ฒ์ธ์ง์ ๋ํ ํ์์ ํด์ผ ํ๋ค. ์ด ํ์์ ์ํด์ ํด๋ผ์ด์ธํธ ์ธก์์๋ ์์ ์ด ์ฌ์ฉํ ์ ์๋ ์ํธํ ๋ฐฉ์์ ์ ์กํ๋ค. - Client Random Data
ํด๋ผ์ด์ธํธ์์ ์์ฑํ ๋์, ๋์ค์ ๋์นญํค๋ฅผ ๋ง๋ค ๋ ์ฌ์ฉ. - Session ID
๋งค๋ฒ HandShake๋ฅผ ํ๋ ๊ณผ์ ์ ๋น์ฐํ ์๊ฐ์ด ์์๋๋ ์์ ์ด๋ค. ์ด ์์ ์ ๋งค๋ฒ ์ฐ๊ฒฐ ํ ๋๋ง๋ค ํ์ง ์๊ธฐ ์ํด์, ์ต์ด ํ๋ฒ์ HandShake๋ง Full HandShake๋ฅผ ํ๊ธฐ์ํด Session ID๋ฅผ ์ฌ์ฉํ๋ค.
์ต์ด HandShake์์ Session ID๊ฐ 0์ด๊ณ ์ดํ ์ด์ด์ง๋ Server Hello ๋ฉ์ธ์ง๋ฅผ ํตํด ์๋ฒ๋ Session ID๋ฅผ ๋ณด๋ด์ค๋ค. ํด๋ผ์ด์ธํธ๋ ์ด Session ID๋ฅผ ๋ก์ปฌ์ ์ ์ฅํ๊ณ ๋ค์ ์๋ฒ์ HandShake๋ฅผ ๋งบ์ ๋ ๋ก์ปฌ์ ์ ์ฅํ Session ID๋ฅผ ๋ณด๋ธ๋ค. ์๋ฒ์์ ์ด Session ID๊ฐ ์ ํจํ๋ค๊ณ ํ๋จํ๋ฉด SeverHello์ ๊ฐ์ Session ID๋ฅผ ๋ณด๋ธ๋ค. ๊ทธ๋ ๊ฒ ๋๋ฉด, ์๋ฒ์ ์ธ์ฆ์๋ฅผ ํ์ธํ๊ณ ์ํธํ ๋ฐฉ๋ฒ์ ์ ์ ํ๊ณ ๋์นญํค๋ฅผ ๊ตํํ๋ ๋ฑ์ ์์ ์ ํ์ง ์๋๋ค.
- SNI(Server Name Indication)
์๋ฒ์ ์ด๋ฆ์ ํ์ํ๋ ๋ถ๋ถ. SNI๋ฅผ ์ฌ์ฉํ๋ฉด ๋ฌผ๋ฆฌ์ ์ผ๋ก ๋์ผํ ์๋ฒ์ ์กด์ฌํ๋ ๊ฐ๊ธฐ ๋ค๋ฅธ ๋๋ฉ์ธ๋ค์ด ์๋ก ๋ค๋ฅธ TLS ์ธ์ฆ์๋ฅผ ์ ์ฉํ ์ ์๋ค.
Server Hello(Server)
ํด๋ผ์ด์ธํธ๊ฐ ๋ณด๋ธ Client Hello์ ๋ํด ์๋ฒ์์ ์๋ตํ๋ ๊ฒ. Server Hello ํจํท์ Client Hello์ ์ ์ฌํ ๋ฉ์์ง ์ ๋ณด๊ฐ ๋ค์ด์๋ค.
- TLS Version
์๋ฒ์์ ์ฌ์ฉํ๋ TLS ๋ฒ์ . - Selected Suite
ํด๋ผ์ด์ธํธ๊ฐ ์ ๋ฌํ ์ํธํ ๋ฐฉ์ ์ค์์ ์๋ฒ ์ชฝ์์๋ ์ฌ์ฉํ ์ ์๋ ์ํธํ ๋ฐฉ์์ ์ ํํด์ ํด๋ผ์ด์ธํธ๋ก ์ ๋ฌํ๋ค. ์ด๋ก์จ ์ํธํ ๋ฐฉ์์ ๋ํ ํ์์ด ์ข ๋ฃ๋๊ณ ์๋ฒ์ ํด๋ผ์ด์ธํธ๋ ์ด ์ํธํ ๋ฐฉ์์ ์ด์ฉํด์ ์ ๋ณด๋ฅผ ๊ตํํ๊ฒ ๋๋ค. - Server Random Data
์๋ฒ์์ ์์ฑํ ๋์, ํด๋ผ์ด์ธํธ์ ๋์ผํ๊ฒ ๋์นญํค๋ฅผ ๋ง๋ค ๋ ์ฌ์ฉ. - Session ID
ํด๋ผ์ด์ธํธ์์ ๋ฐ์ Session ID๊ฐ 0์ด๋ฉด ์๋ก Session ID๋ฅผ ์์ฑ ๋ฐ ์๋ต, 0์ด ์๋๋ผ๋ฉด ๋ฐ์ Session ID๊ฐ ์ ํจํ์ง ํ์ธํ์ฌ ์๋ตํ๋ค. - SNI(Server Name Indication)
์๋ฒ์์ SNI๋ฅผ ๋น์์(Empty) ๋ณด๋ธ๋ค.
Server Certificate(Server)
์๋ฒ์ ์ธ์ฆ์๋ฅผ ํด๋ผ์ด์ธํธ์๊ฒ ๋ณด๋ด๋ ๋จ๊ณ. ํด๋ผ์ด์ธํธ๋ ์ด ๋ฉ์์ง๋ฅผ ํตํด ์๋ฒ์ ์ธ์ฆ์๊ฐ ๋ฌด๊ฒฐํ์ง ๊ฒ์ฆํ๋ค. ์๋ฒ์ ์ธ์ฆ์์ ๋ํ ๊ฒ์ฆ์ด ์๋ฃ๋๋ฉด ์ด์ ์ ์ฃผ๊ณ ๋ฐ์๋ ํด๋ผ์ด์ธํธ์ ์๋ฒ์ ๋์๋ฅผ ์กฐํฉํ์ฌ pre master secret ํค๋ฅผ ์์ฑํ๋ค. ์ด ๋ ์ฌ์ฉํ ์ํธํ ๊ธฐ๋ฒ์ ๋์นญํค์ด๊ธฐ ๋๋ฌธ์ pre master secret ๊ฐ์ ์ 3์์๊ฒ ์ ๋๋ก ๋ ธ์ถ๋์ด์๋ ์๋๋ค. ์ด pre master secret(๋์นญํค)๋ฅผ ์๋ฒ์ ๊ณต๊ฐํค๋ก ์ํธํํ๋ค.
- Server Hello Done(Server)
์๋ฒ๊ฐ ํด๋ผ์ด์ธํธ์๊ฒ ๋ณด๋ผ ๋ฉ์์ง๋ฅผ ๋ชจ๋ ๋ณด๋๋ค๋ ๋ป์ผ๋ก ๋ณด๋ด๋ ๋ฉ์์ง. - Client Key Exchange(Client)
ํด๋ผ์ด์ธํธ๋ ๋ง๋ค์ด๋ pre master secret ํค๋ฅผ ์๋ฒ์ ๊ณต๊ฐํค๋ก ์ํธํํ์ฌ ์๋ฒ์๊ฒ ์ ๋ฌ. - Key Generation(Server&Client)
ํด๋ผ์ด์ธํธ์ ์๋ฒ๊ฐ ์๋ก ์ํธํ ๋ฐ ๋ณตํธํ ํ ๋ ์ฌ์ฉํ ๋์นญํค๋ฅผ ์ฑ๊ณต์ ์ผ๋ก ๊ณต์ ํ๋ ๊ณผ์ . - Cipher Spec Exchange(Server&Client)
์ดํ๋ก ์ ์ก๋๋ ๋ชจ๋ ๋ฉ์ธ์ง๋ ํ์๋ ์๊ณ ๋ฆฌ์ฆ๊ณผ, ํค๋ฅผ ์ด์ฉํ์ฌ ์ํธํ ํ๊ฒ ๋ค๋ ๋ฉ์์ง๋ฅผ ์ ๋ฌ. - Finished(Server&Client)
ํด๋ผ์ด์ธํธ์ ์๋ฒ๊ฐ TLS HandShake๋ฅผ ์ฑ๊ณต์ ์ผ๋ก ๋ง์น๊ณ ์ข ๋ฃ๋์๋ค๋ ๊ฒ์ ์๋ก์๊ฒ ์๋ฆฐ๋ค. - Application Data(Server&Client)
ํด๋ผ์ด์ธํธ์ ์๋ฒ๊ฐ ์๋ก TLS๋ก ์ํธํ ํต์ ์ ํ๋ ๋ฐ์ดํฐ ํจํท
๐ HTTPS
HTTP๋ ์ํธํ๋์ง ์์ ๋ฐฉ๋ฒ์ผ๋ก ๋ฐ์ดํฐ๋ฅผ ์ ์กํ๊ธฐ ๋๋ฌธ์ ์๋ฒ์ ํด๋ผ์ด์ธํธ๊ฐ ์ฃผ๊ณ ๋ฐ๋ ๋ฉ์์ง๋ฅผ ๊ฐ์ฒญํ๋ ๊ฒ์ด ๋งค์ฐ ์ฝ๋ค. ์๋ฅผ๋ค์ด ๋ก๊ทธ์ธ์ ์ํด์ ์๋ฒ๋ก ๋น๋ฐ๋ฒํธ๋ฅผ ์ ์กํ๊ฑฐ๋, ๋๋ ์ค์ํ ๊ธฐ๋ฐ ๋ฌธ์๋ฅผ ์ด๋ํ๋ ๊ณผ์ ์์ ์ ์์ ์ธ ๊ฐ์ฒญ์ด๋ ๋ฐ์ดํฐ์ ๋ณ์กฐ๋ฑ์ด ์ผ์ด๋ ์ ์๋ค. ์ด๋ฅผ ๋ณด์ํ ๊ฒ์ด HTTPS๋ค.
HTTPS๋ TLS/SSL ๋ณด์ ํ๋กํ ์ฝ ์์์ ๋์ํ๋ HTTP๋ค.
๐ ์ฐธ๊ณ ์๋ฃ
๊ทธ๋ฆผ์ผ๋ก ์ดํดํ๋ ๋คํธ์ํฌ ๊ตฌ์กฐ์ ๊ธฐ์
TLS(SSL) - 1. TLS์ ์ํธํ ๋ฐฉ์(๋์นญํค, ๋น๋์นญํค)
'๐ iOS > ๐ ๊ฐ๋ ' ์นดํ ๊ณ ๋ฆฌ์ ๋ค๋ฅธ ๊ธ
[ํจ๋ฌ๋ค์] ํจ์ํ ํ๋ก๊ทธ๋๋ฐ (1) | 2024.10.23 |
---|---|
[iOS]Unit Test์ ์ฌ์ฉ (0) | 2024.02.05 |
[๋์์ธ ํจํด]Delegate Pattern (2) | 2024.01.27 |
[๋์์ธ ํจํด]Observer Pattern (1) | 2024.01.27 |