- ๋ชฉ์ฐจ
| HTTP | HTTPS |
|---|---|
| HyperText Transfer Protocol | HyperText Transfer Protocol over Secure Socket Layer(SSL) |
| ์ธํฐ๋ท์์ ์ฌ์ฉํ๋ ์น ์๋ฒ์ ์ฌ์ฉ์์ ์ธํฐ๋ท ๋ธ๋ผ์ฐ์ ์ฌ์ด์ ๋ฌธ์๋ฅผ ์ ์กํ๊ธฐ ์ํ ํต์ ๊ท์ฝ | |
| ํฌํธ๋ฒํธ : 80 | ํฌํธ๋ฒํธ : 443 |
| ์ํธํ๊ฐ ์ ํ ๋์ด ์์ง ์์, ๊ทธ๋ฅ ํ ์คํธ ๊ทธ๋๋ก ์ ์ก | ์์ผ ํต์ ์์ ์ผ๋ฐ ํ ์คํธ๋ฅผ ์ด์ฉํ๋ ๋์ ์, TLS ํ๋กํ ์ฝ์ ํตํด ์ธ์ ๋ฐ์ดํฐ๋ฅผ ์ํธํ |
| wireshark์ ๊ฐ์ ํจํท์บก์ณ ํ๋ก๊ทธ๋จ์ผ๋ก ํจํท์บก์ณ๋ฅผ ํด๋ณด๋ฉด ์ ๋ณด๊ฐ ๊ทธ๋๋ก ๋ ธ์ถ๋์ด ์๋ ๊ฒ์ ๋ณผ ์ ์์ต๋๋ค. | ํจํท์ ์ํธํํ์ฌ ์ ์กํ๊ธฐ ๋๋ฌธ์ ํจํท์บก์ณ๋ฅผ ํด๋ณด์๋ ์ํธํ๋ ๋ด์ฉ๋ง ๋ณด์ด๊ฒ ๋ฉ๋๋ค. |
| HTTPS๋ณด๋ค ํธ๋ํฝ์ด ์ ๊ฒ ๋ฐ์ | ์ค์น ๋ฐ ์ธ์ฆ์๋ฅผ ์ ์งํ๋ ๋ฐ์ ์ถ๊ฐ๋น์ฉ ๋ฐ์ |
| HTTPS์ ์ํธํ๋ Transport ๊ณ์ธต์์ ์ด๋ฃจ์ด์ง๊ฒ ๋ฉ๋๋ค. (TLS - Transport Layer Security : SSL3.0์ ๊ธฐ๋ฐ) |
- ๋ชจ๋ ์ฌ์ดํธ์์ HTTPS๋ฅผ ์ฌ์ฉํ๊ฒ ๋๋ฉด ์๋ฒ์ ๊ณผ๋ถํ๊ฐ ๊ฑธ๋ฆด ์ ์๊ธฐ ๋๋ฌธ์, ๋๋ถ๋ถ ์ค์ํ ์ฌ์ดํธ๋ HTTPS๋ก ๊ด๋ฆฌํ๊ณ ๋๋จธ์ง ์ผ๋ฐ์ ์ธ ์ฌ์ดํธ๋ HTTP๋ก ์ธํ ํฉ๋๋ค.
SSL์ ๊ณต๊ฐํค ์ํธํ ๋ฐฉ์๊ณผ ๊ณต๊ฐํค์ ๋จ์ ์ ๋ณด์ํ ๋์นญํค ์ํธํ ๋ฐฉ์์ ํจ๊ป ์ฌ์ฉํ๋ค. (๊ณต๊ฐํค ๋ฐฉ์์ ๋๋ฆฌ๋ค๋ ๋จ์ ์ด ์๋ค.)
๊ณต๊ฐํค๋ฐฉ์์ผ๋ก ๋์นญํค๋ฅผ ์ ๋ฌํ๊ณ , ์๋ก ๊ณต์ ๋ ๋์นญํค๋ฅผ ๊ฐ์ง๊ณ ํต์ ํ๊ฒ ๋๋ค.
๋๋ถ๋ถ HTTP์ HTTPS๋ฅผ ๊ฒ์ํ๋ฉด, HTTPS๋ HTTP์์ SSL/TLS ์ธ์ฆ์ ๊ฐ๋ ์ด ๋ํด์ง HTTP๋ณด๋ค ๋ณด์์ด ๋ ๊ฐํ ํ๋กํ ์ฝ์ด๋ผ๊ณ ๋์ต๋๋ค.
๊ทธ๋ผ SSL๊ณผ TLS์ ์ฐจ์ด์ ์ ๋ฌด์์ผ๊น์?
- SSL (Secure Sockets Layer) : Netscape ์ฌ์์ ๊ฐ๋ฐ
- TLS (Transport Layer Security) : IETF ์ฌ์์ ๊ฐ๋ฐ
SSL๊ณผ TLS ๋ชจ๋ ์ฌ์ฉ์์ ์น ๋ธ๋ผ์ฐ์ ๊ฐ ํต์ ์ ์ํธํํ๋๋ฐ ์ฌ์ฉํ๋ ํ๋กํ ์ฝ์ ๋๋ค.
TLS๋ SSL๊ณผ ๋น์ทํ๋ค๊ณ ๋ณด๋ฉด ๋๋๋ฐ TLS๋ SSL3.0์ ๊ธฐ๋ฐ์ผ๋ก ๊ฐ์ ๋ ์ ๊ท ๋ชจ๋ธ ํ๋กํ ์ฝ๋ก, SSL์ ๋์ด์ ์ฌ์ฉ๋์ง ์๊ณ TLS๊ฐ ์ฌ์ฉ๋ฉ๋๋ค.
ํ์ง๋ง SSL์ด๋ผ๋ ๋จ์ด๊ฐ ์ต์ํด์ SSL์ TLS๋ผ๋ ๋จ์ด๊ฐ ํผ์ฉ๋์ ์ฌ์ฉ๋ ๋๊ฐ ๋ง์๋ฐ, ๊ทธ๋ฅ HTTPS์๋ TLS๊ฐ ์ฌ์ฉ๋๋ค๊ณ ๋ณด๋ฉด ๋ฉ๋๋ค.
TLS๋ ๊ณต๊ฐํค์ ๊ฐ์ธํค๋ฅผ ๊ตํํ์ฌ ๋ณด์ ์ธ์
์ ์์ฑํ ํ ํต์ ์ ์ํธํ ํ๋ ๋ฐฉ์์ผ๋ก ์ด๋ฃจ์ด์ง๋๋ค.
SSL์ TLS๋ TCP/IP ๋คํธ์ํฌ๋ฅผ ์ฌ์ฉํ๋ ํต์ ์ ์ ์ฉ๋๋ฉฐ, ํต์ ๊ณผ์ ์์ ์ ์ก๊ณ์ธต ์ข ๋จ ๊ฐ ๋ณด์๊ณผ ๋ฐ์ดํฐ ๋ฌด๊ฒฐ์ฑ์ ํ๋ณดํ ์ ์๊ฒ ํฉ๋๋ค.
๋ฌด๊ฒฐ์ฑ : ์ ๋ณด๊ฐ ๋ณํ๋์ง ์๊ณ ๊ทธ๋๋ก ์ ๋ฌ๋๋ ์ฑ์ง
Handshake๋ ์ค์ ๋ก ์ํธํ ์์ฒด๋ฅผ ์ํํ๋ ๊ฒ์ด ์๋๋ผ, ๊ณต์ ๋๋ ๋น๋ฐ ๋ฐ ์ฌ์ฉ๋ ์ํธํ ์ ํ์ ๊ฒฐ์ ํ๋ ์ ์ฐจ๋ฅผ ์งํํฉ๋๋ค.- ์ํธํ๋ HTTP ๋ฉ์์ง๋ฅผ ๊ตํํ๊ธฐ ์ ์ Client์ Server๋ SSL ํธ๋์์ดํฌ๋ฅผ ์งํํ๋ค.
- Handshake์ ๋ชฉ์
- ํ๋กํ ์ฝ ๋ฒ์ ๋ฒํธ ๊ตํ
- ์์ชฝ์ด ์๊ณ ์๋ pre-master secret key ์์ฑ ๋ฐ ๊ตํ
- ์์ชฝ์ ์ ์ ์ธ์ฆ
- ์ฑ๋์ ์ํธํ ํ๊ธฐ ์ํ ์์ ์ธ์ ํค ์์ฑ
1. Client Hello ๐
- ์ด ๋ฉ์์ง์๋ client์์ ๊ฐ๋ฅํ TLS ๋ฒ์ , ์๋ฒ ๋๋ฉ์ธ, ์ธ์ ์๋ณ์, ์ํธ ์ค์ ๋ฑ์ ์ ๋ณด๊ฐ ํฌํจ๋๋ค.
- client๊ฐ ์์ฑํ ๋๋ค ๋ฐ์ดํฐ A๋ ์ ์ก๋๋ค.
2. Server Hello ๐
- ์ด ๋ฉ์์ง์๋ Client Hello ๋ฉ์์ง์ ์ ๋ณด ์ค Server์์ ์ฌ์ฉํ๊ธฐ๋ก ๊ฒฐ์ ํ TLS ๋ฒ์ , ์ธ์ ์๋ณ์, ์ํธ ์ค์ ๋ฑ์ ์ ๋ณด๊ฐ ํฌํจ๋๋ค.
- Server๊ฐ ์์ฑํ ๋๋ค ๋ฐ์ดํฐ B๋ ์ ์ก๋๋ค.
3. Certificate Message ๐ฉ
๊ณต๊ฐํค(RSA ์ํธ์ฉ)๊ฐ ํฌํจ๋ ์๋ฒ ์ธ์ฆ์ ์ ์ก- ์ด ์ธ์ฆ์๋ CA์์ ๋ฐ๊ธ๋ฐ์ ๊ฒ์ด๋ฉฐ, Server๊ฐ ์ ๋ขฐํ ์ ์๋ ์ ์์ ์ธ์ฆํฉ๋๋ค.
- CA(Certificate Authority) : ๋์งํธ ์ธ์ฆ์๋ฅผ ์ ๊ณตํ๋ ๊ณต์ธ๋ ๊ธฐ์
- ์ ์ก์ด ๋๋๋ฉด Server Hello Done ๋ฉ์์ง ์ ๋ฌ
4. ์ธ์ฆ์ ํ์ธ, pre-master secret key ์ํธํ ๐
- Client๋ Server์๊ฒ ์ ๋ฌ๋ฐ์ ์ธ์ฆ์๋ฅผ ๊ฒ์ฆํฉ๋๋ค.
(์ ํจ๊ธฐ๊ฐ์ด ๋ง๋ฃ๋์ง ์์๋์ง, ์ ๋ขฐํ ์ ์๋ ์ธ์ฆ ๊ธฐ๊ด์์ ๋ฐ๊ธ๋์๋์ง, ๊ทธ ์ธ์ฆ์๊ฐ ํด๋น ์๋ฒ์๊ฒ ๋ฐ๊ธ๋ ์ธ์ฆ์๊ฐ ๋ง๋์ง ๋ฑ์ ํ์ธํฉ๋๋ค) - Client๋ ๋๋ค ๋ฐ์ดํฐ A์ B๋ฅผ ์กฐํฉํด์ ์ธ์ ํค(๋์นญํค)๋ก ์ฌ์ฉ๋ ์์์ pre-master secret key๋ฅผ ์์ฑํ ๋ค, Server๊ฐ ๋ณด๋ธ ์ธ์ฆ์์ ํฌํจ๋ ๊ณต๊ฐํค๋ฅผ ์ฌ์ฉํ์ฌ pre-master secret key๋ฅผ ์ํธํ ํฉ๋๋ค.
5. Client Key Exchange ๐
๊ณต๊ฐํค๋ก ์ํธํ๋ pre-master secret key๐ ์ ์ก
6. pre-master secret key ๋ณตํธํ, Session Key (๋์นญํค) ์์ฑ ๐
- Client์๊ฒ ๋ฐ์ ์ํธํ๋ pre-master secret key๋ฅผ Server ์์ ๋ง ์๊ณ ์๋ ๊ฐ์ธํค๋ก ๋ณตํธํํ์ฌ pre-master secret key๋ฅผ ์ป์ด๋ด๊ณ , ์ด๊ฒ์ ์ด์ฉํด์ master secret key๋ฅผ ์์ฑํด๋ ๋๋ค.
- ์ด master secret key๋ฅผ ํตํด
Session Key(๋์นญํค)๋ฅผ ์์ฑํฉ๋๋ค. - ์ด ์ธ์ ํค(๋์นญํค)๋ ์์ผ๋ก Server์ Client ๊ฐ์ ํต์ ์ ์ํธํํ๋ ๋ฐ ์ฌ์ฉ๋ ๊ฒ์ ๋๋ค.
- Client ๋ํ ๊ฐ์ pre-master secret key๋ฅผ ์ฌ์ฉํ์ฌ Server์ ๊ฐ์ Session Key๋ฅผ ๊ฐ์ง๊ฒ ๋ฉ๋๋ค. ( ๋์นญ ํค )
7. Change Cipher Spec ๐ฉ ๐ฌ
- ์๋ก์๊ฒ ์์ผ๋ก ๋ชจ๋ ํต์ ๋ด์ฉ์
์ธ์ ํค(๋์นญํค)๋ก ์ํธํํ์ฌ ํต์ ํ ๊ฒ์ด๋ผ๊ณ ๋ฉ์์ง๋ฅผ ๋ณด๋ด ์๋ ค์ค๋๋ค.
8. Finished ๐ฃ ๐
- ๊ทธ๋ฆฌ๊ณ ๋์ Finished ๋ฉ์์ง๋ฅผ ๋ณด๋ด ๊ฐ์์ Handshake ๊ณผ์ ์ด ๋๋ฌ์์ ์๋ฆฝ๋๋ค.
์ดํ ์ธ์ ํค๋ฅผ ํ์ฉํ ๋์นญํค ์ํธํ ๋ฐฉ์์ผ๋ก Server์ Client๊ฐ ๋ฐ์ดํฐ๋ฅผ ์ฃผ๊ณ ๋ฐ์ต๋๋ค.
๋ฐ์ดํฐ์ ์ ์ก์ด ๋๋๋ฉด SSLํต์ ์ด ๋๋ฌ์์ ์๋ก์๊ฒ ์๋ ค์ค๋๋ค.
์ด๋, ์ธ์
ํค๐๋ฅผ ํ๊ธฐํฉ๋๋ค.
๊ณต๊ฐํค ์ํธ๋ฐฉ์(๋น๋์นญ ์ํธํ)์๋์นญํค ๋ฐฉ์๋ณด๋ค ์์ ํ์ง๋ง, ์ด๋ ค์ด ์ํ์ ๋ฌธ์ ๋ฅผ ์๋ฐํ๊ธฐ ๋๋ฌธ์ ๊ณผ์ ์ด ๋ณต์กํ๊ณ
๊ทธ๋งํผ ์๊ฐ๋ ์ค๋ ๊ฑธ๋ฆด ๋ฟ๋ง ์๋๋ผ ๋ง์ ์ปดํจํ ๋ฆฌ์์ค๋ฅผ ํ์๋ก ํฉ๋๋ค.
๋ง์ฝ ์ปค๋ฎค๋์ผ์ด์ session ์์ ๋ชจ๋ ์ ๋ณด๋ฅผ ๋ค ๋น๋์นญ ์ํธํ๋ฅผ ์ฌ์ฉํด ์ํธํํ๋ ค ํ๋ค๋ฉด ์ปดํจํฐ๊ฐ ๋ฒํ จ๋ด์ง ๋ชปํ ๊ฒ์ ๋๋ค.
๊ทธ๋์ TLS๋ ์ปค๋ฎค๋์ผ์ด์ ์ธ์ ์์๋ถ๋ถ์๋ง๋น๋์นญ ์ํธํ๋ฅผ ์ฌ์ฉํ์ฌ ์ด ๋ฌธ์ ๋ฅผ ํผํ์ต๋๋ค.๋ฐ๋ผ์ ๋ ธ์ถ๋๋ฉด ํฐ์ผ๋๋
๋์นญํค๋ฅผ ๋ง๋ค์ด ์ฃผ๊ณ ๋ฐ๋ ๊ณผ์ ์๊ณต๊ฐํค ์ํธ๋ฐฉ์์ ์ด์ฉํ๊ณ ,
์ฃผ๊ณ ๋ฐ์๋์นญํค๋ก ํต์ ์ด ์ด๋ฃจ์ด์ง๋๋ค.
์ถ๊ฐ์ ์ผ๋ก, ๊ณต๊ฐํค/๊ฐ์ธํค ์ํธํ ๋ฐฉ์(๋น๋์นญํค ๋ฐฉ์)์ ๊ฐ๋จํ๊ฒ ์ดํด๋ณด๊ฒ ์ต๋๋ค.
A์ B์ ๊ณต๊ฐํค๊ฐ ๊ฐ๊ฐ PUa, PUb๋ผ๊ณ ํ๊ณ , ๊ฐ์ธํค๊ฐ ๊ฐ๊ฐ PRa, PRb๋ผ๊ณ ํ ๋, A๊ฐ B์ ๊ณต๊ฐํค PUb๋ก ์ํธํํ ๊ฒ์ B๋ง ์๊ณ ์๋ ๊ฐ์ธํค PRb๋ก๋ง ๋ณตํธํ๊ฐ ๊ฐ๋ฅํฉ๋๋ค.
๋ง์ฐฌ๊ฐ์ง๋ก B๊ฐ A์ ๊ณต๊ฐํค PUa๋ก ์ํธํํ ๊ฒ์ A๋ง ์๊ณ ์๋ ๊ฐ์ธํค PRa๋ก๋ง ๋ณตํธํ๊ฐ ๊ฐ๋ฅํฉ๋๋ค.
๋ฐ๋๋ก ์๊ฐํ๋ฉด A๊ฐ ์์ ๋ง ์๊ณ ์๋ ๊ฐ์ธํค PRa๋ก ์ํธํ ํ๋ค๋ฉด, ๋ชจ๋ ์ฌ๋๋ค์ A์ ๊ณต๊ฐํค์ธ PUa๋ก ๋ณตํธํํ์ฌ A๊ฐ ์ํธํํ ๊ฒ์ ๋ณผ ์ ์์ต๋๋ค.
๊ทธ๋ผ ์ ๋ชจ๋ ์ฌ๋๋ค์ด ๋ณผ ์ ์๋๋ก ๊ฐ์ธํค๐๋ก ์ํธํ๐ ํ ๊น์?
์ด๋ ๋ณด์์ ๊ธฐ๋ฅ์ด ์๋, ์์ ์ ์ธ์ฆํ ์ ์๋ ํ๋์ ๋ฐฉ์์ด ๋๊ธฐ ๋๋ฌธ์
๋๋ค.
๋ฐ๋ผ์ ๊ฐ์ธํค๋ก ์ํธํ ํ๋ ์๋ก ์ ์ ์๋ช
์ ๋ค ์ ์์ต๋๋ค.
SSL/TLS ๋์ ๋ฐฉ์์์๋ Server๊ฐ Client์๊ฒ ์ธ์ฆ์์ ํจ๊ป ๊ฑด๋ด์ค ๊ณต๊ฐํค๋ฅผ ์ด์ฉํด์ Client๋ ๊ทธ ์ธ์ฆ์๊ฐ ์ ๋ขฐ๋ฐ๋ ๊ธฐ๊ด์์ Server์๊ฒ ์ค ๊ฒ์ด๋ผ๋ ๊ฒ์ ๊ฒ์ฆํ ์ ์๋ ๊ฒ์
๋๋ค.
๊ทธ๋ฆฌ๊ณ Client๊ฐ ๋์นญํค๋ฅผ ๋ง๋๋๋ฐ ํ์ฉ๋๋ pre-master secret key๋ฅผ ๊ทธ ๊ณต๊ฐํค๋ก ์ํธํ ํ๊ฒ ๋๋ฉด, ์ด๊ฒ์ Server๋ง ์๊ณ ์๋ ๊ฐ์ธํค๋ก๋ง ๋ณตํธํํ ์ ์๊ฒ ๋ฉ๋๋ค.
๊ทธ๋ ๊ฒ ํด์ pre-master secret key๋ Server์ Client๋ง ์ ์ ์๋๋ก ๋น๋์นญํค ์ํธํ ๋ฐฉ์์ผ๋ก ์ฃผ๊ณ ๋ฐ๊ฒ ๋๋ ๊ฒ์
๋๋ค.
์ด๋ ๊ฒ ์ฃผ๊ณ ๋ฐ์ pre-master secret key๋ฅผ ํตํด Server์ Client๊ฐ ๊ฐ๊ฐ ๊ฐ์ Session Key๋ฅผ ์์ฑํ ์ ์๊ฒ ๋๊ณ , ์ด **์ธ์
ํค๋ฅผ ์ด์ฉํ ์ํธํ ๋ฐฉ์(๋์นญํค ์ํธํ ๋ฐฉ์)**์ ํตํด ํต์ ์ ์ด๋ฃจ๊ฒ ๋ฉ๋๋ค.
Reference
