HTTPS
1. ๊ธฐ๋ณธ ๊ฐ๋
: ๋คํธ์ํฌ ํ๋กํ ์ฝ
์ฐ๋ฆฌ๊ฐ ์ธํฐ๋ท์ ํตํด ๋ฉ์์ง๋ฅผ ๋ณด๋ผ ๋, ๋ฐ์ดํฐ๋ ๋จ์ํ ์ ์ ํ๊ณ ๊ฐ๋ ๊ฒ์ด ์๋๋ผ ์ฌ๋ฌ ๊ณ์ธต(Layer)์ ๊ฑฐ์น๋ฉฐ ํฌ์ฅ๋๊ณ ์ด์ก๋ฉ๋๋ค.
์ด๋ฅผ ์ดํดํ๊ธฐ ์ฌ์ด ๋น์ ๋ก ์ค๋ช ํ๋ฉด ๋ค์๊ณผ ๊ฐ์ต๋๋ค.
์ดํ๋ฆฌ์ผ์ด์ ๊ณ์ธต (User): ํ๋ฐฐ๋ก ๋ณด๋ผ '๋ฌผ๊ฑด' (์ค์ ๋ฐ์ดํฐ)
์ปค๋ ๊ณ์ธต (Transport/Network): ๋ฌผ๊ฑด์ ๋ด๋ '๋ฐ์ค' (ํฌ์ฅ ๋ฐ ์ฃผ์ ์ง์ )
ํ๋์จ์ด ๊ณ์ธต: ํ๋ฐฐ๊ฐ ์ด๋ํ๋ '๋๋ก ๋ฐ ํ๋ฌผ์ฐจ' (๋ฌผ๋ฆฌ์ ์ด๋)
์ด๋ HTTP๋ ์น์์ ๋ฐ์ดํฐ๋ฅผ ์ฃผ๊ณ ๋ฐ๋ ๊ท์น(ํ๋กํ ์ฝ)์ด๋ฉฐ, ์ด ๋ฐ์ดํฐ๋ฅผ ์์ ํ๊ฒ ๋ฐฐ๋ฌํ๊ธฐ ์ํด ํ์ ๊ณ์ธต์ธ TCP ํ๋กํ ์ฝ์ ์ฌ์ฉํฉ๋๋ค.
2. TCP์ ํน์ง๊ณผ ํ๊ณ
TCP์ ํน์ง: ์ฐ๊ฒฐ ์งํฅํ
TCP๋ ๋ฐ์ดํฐ๋ฅผ ๋ณด๋ด๊ธฐ ์ ์ ์ฐ๊ฒฐ(Connection)์ ๋จผ์ ํ์ธํฉ๋๋ค. ์ด๋ฅผ 3-way Handshake๋ผ๊ณ ๋ถ๋ฅด๋ฉฐ, ๋ง์น ๋ํ๋ฅผ ๋๋๊ธฐ ์ ์๋ก ์ธ์ฌ๋ฅผ ํ๊ณ ์ ์ฉ ๋ํ๋ฐฉ(Socket)์ ๋ง๋๋ ๊ฒ๊ณผ ๊ฐ์ต๋๋ค.
ํฌํธ(Port)์ ์์ผ(Socket):
์๋ฒ์๋ 80๋ฒ ๊ฐ์ ๋ฌธ(Port)์ด ํ๋์ง๋ง, ๊ทธ ๋ฌธ์ ํตํด ๋ค์ด์จ ์์ฒญ๋ค์ ๊ฐ๊ฐ ๋ณ๋์ '์ ์ฉ ๋ํ๋ฐฉ'์ธ ์์ผ์ ๋ง๋ค์ด 1:1๋ก ํต์ ํฉ๋๋ค. ์ด ๋๋ถ์ ํ๋์ ์๋ฒ๊ฐ ์ฌ๋ฌ PC์ ๋์์ ํต์ ํ ์ ์์ต๋๋ค.
OSI 7๊ณ์ธต์์ 7๊ณ์ธต โ 4๊ณ์ธต์ผ๋ก์ ๋ฐ์ดํฐ ์ ๋ฌ์ ์์ผ์ด ํ์ํฉ๋๋ค.
7๊ณ์ธต = ์ฌ์ฉ์ ๊ณต๊ฐ
1~4 ๊ณ์ธต = ์ปค๋ ๊ณต๊ฐ
TCP์ ์น๋ช
์ ์ธ ๋จ์ : ๋ณด์
TCP๋ ๋ฐ์ดํฐ๋ฅผ ํฌ์ฅ(ํจํท)ํด์ ๋ณด๋ด์ง๋ง, ๊ทธ ํฌ์ฅ์ ๋ฏ์ผ๋ฉด ๋ด์ฉ๋ฌผ์ด ๊ทธ๋๋ก ๋ณด์ ๋๋ค(Plain Text).
์ฆ, ์ค๊ฐ์ ๋๊ตฐ๊ฐ ๋ฐ์ดํฐ๋ฅผ ๊ฐ๋ก์ฑ๋ฉด ๋ด์ฉ์ ํ์ณ๋ณด๊ฑฐ๋(๋์ฒญ), ์์กฐํ๊ธฐ๊ฐ ์ฝ์ต๋๋ค. ์ด ๋ฌธ์ ๋ฅผ ํด๊ฒฐํ๊ธฐ ์ํด ๋ฑ์ฅํ ๊ฒ์ด ๋ฐ๋ก SSL์
๋๋ค.
3. SSL์ ํต์ฌ ๊ธฐ์ : ์ํธํ
SSL์ ๋ฐ์ดํฐ๋ฅผ ์์ ํ๊ฒ ๋ณดํธํ๊ธฐ ์ํด ๋์นญํค์ ๋น๋์นญํค ๋ฐฉ์์ ํผํฉํ์ฌ ์ฌ์ฉํฉ๋๋ค.
๋์นญํค (Symmetric Key):
ํ๋์ ํค๋ก ์ ๊ทธ๊ณ (์ํธํ) ์ด๊ธฐ(๋ณตํธํ)๋ฅผ ๋ชจ๋ ํฉ๋๋ค.
์๋๊ฐ ๋น ๋ฅด์ง๋ง, ์๋๋ฐฉ์๊ฒ ํค๋ฅผ ๊ฑด๋ค์ค ๋ ํค ์์ฒด๊ฐ ํ์ทจ๋ ์ํ์ด ์์ต๋๋ค.

๋น๋์นญํค (Asymmetric Key):
๊ณต๊ฐํค(Public Key)๋ก ์ ๊ทธ๋ฉด๊ฐ์ธํค(Private Key)๋ก๋ง ์ด ์ ์์ต๋๋ค. (๋ฐ๋๋ ๊ฐ๋ฅ)ํด๋ผ์ด์ธํธ๊ฐ ์์ ์ ๋์นญํค๋ฅผ ๊ณต๊ฐํค๋ก ์ํธํํ์ฌ ์๋ฒ๋ก ์ ์กํ๋ฉด, ์๋ฒ๋ ์์ ์ ๊ฐ์ธํค๋ก ๋ณตํธํํ์ฌ ๋์นญํค๋ฅผ ์ป์ต๋๋ค.
SSL์ ํด๊ฒฐ์ฑ
(ํ์ด๋ธ๋ฆฌ๋ ๋ฐฉ์)
๋น๋์นญํค๋ฅผ ์ฌ์ฉํด '๋์นญํค'๋ฅผ ์์ ํ๊ฒ ์๋ฒ๋ก ์ ๋ฌํฉ๋๋ค.
์๋ก '๋์นญํค'๋ฅผ ๊ณต์ ํ ํ์๋, ์๋๊ฐ ๋น ๋ฅธ ๋์นญํค๋ก ์ค์ ๋ฐ์ดํฐ๋ฅผ ์ํธํํด์ ์ฃผ๊ณ ๋ฐ์ต๋๋ค.
[์ํฉ]
ํด๋ผ์ด์ธํธ(๋ธ๋ผ์ฐ์ ): ๋์นญํค(์ธ์ ํค)๋ฅผ ๋ง๋ค์ด์ ์๋ฒ์์ ๋ชฐ๋ ์ฃผ๊ณ ์ถ์.
์๋ฒ: ๊ณต๊ฐํค(์๋ฌผ์ )์ ๊ฐ์ธํค(์ด์ )๋ฅผ ๊ฐ์ง๊ณ ์์.
[์ ๋ฌ ๊ณผ์ ]
๊ณต๊ฐํค ํ๋: ํด๋ผ์ด์ธํธ๊ฐ ์๋ฒ์ ์ ์ํ๋ฉด, ์๋ฒ๋ ์์ ์ '๊ณต๊ฐํค'๊ฐ ๋ด๊ธด ์ธ์ฆ์๋ฅผ ํด๋ผ์ด์ธํธ์๊ฒ ์ค๋๋ค. (๋๊ตฌ๋ ๊ฐ์ ธ๊ฐ๋ ๋๋ ํค์ ๋๋ค.)
๋์นญํค ์์ฑ: ํด๋ผ์ด์ธํธ๋ ์์๋ก ์ฌ์ฉํ '๋์นญํค'๋ฅผ ํ๋ ์์ฑํฉ๋๋ค. (์์ง ์๋ฒ์๊ฒ ์ ์กํ์ง ์์)
์ํธํ (ํต์ฌ): ํด๋ผ์ด์ธํธ๋ ๋ฐฉ๊ธ ๋ง๋ '๋์นญํค'๋ฅผ ์๋ฒ์ '๊ณต๊ฐํค'๋ก ์ํธํํฉ๋๋ค. ์ด์ ์ด ๋ฐ์ดํฐ๋ ์๋ฒ์ ๊ฐ์ธํค๊ฐ ์์ผ๋ฉด ์ ๋ ์ด์ด๋ณผ ์ ์๋ ์ํ๊ฐ ๋ฉ๋๋ค. ์ค๊ฐ์์ ๊ฐ๋ก์ฑ๋ ์ด ์ ์์ต๋๋ค.
์ ์ก ๋ฐ ๋ณตํธํ: ์ํธํ๋ ๋ฐ์ดํฐ๋ฅผ ์๋ฒ๋ก ๋ณด๋ ๋๋ค. ์๋ฒ๋ ์์ ์ด ๊ฐ์ง '๊ฐ์ธํค'๋ก ์ด๊ฒ์ ์ด์ด์(๋ณตํธํ) '๋์นญํค'๋ฅผ ๊บผ๋ ๋๋ค.
[๊ฒฐ๊ณผ]
์ด์ ํด๋ผ์ด์ธํธ๋ ์๊ธฐ๊ฐ ๋ง๋ค์์ผ๋ ๋์นญํค๋ฅผ ๊ฐ์ง๊ณ ์๊ณ , ์๋ฒ๋ ์ํธํ๋ ๊ฑธ ๋ฐ์์ ํ์์ผ๋ ๋์นญํค๋ฅผ ๊ฐ๊ฒ ๋์์ต๋๋ค.
4. ์๋ฒ์ ๊ณต๊ฐํค๋ฅผ ๊ตฌ๋ถํ๋ ๋ฐฉ๋ฒ: ์ธ์ฆ์ (Certificate)
๋น๋์นญํค๋ฅผ ์จ๋ ๋ฌธ์ ๊ฐ ํ๋ ๋จ์ต๋๋ค. "๋ด๊ฐ ํต์ ํ๋ ค๋ ์๋ฒ๊ฐ ์ง์ง ๋ค์ด๋ฒ๋ ๊ตฌ๊ธ์ด ๋ง๋๊ฐ?"์ ๋๋ค.
ํด์ปค๊ฐ ๊ฐ์ง ๊ณต๊ฐํค๋ฅผ ๋ฟ๋ฆฌ๊ณ ์๋ฒ์ธ ์ฒํ ์ ์๊ธฐ ๋๋ฌธ์
๋๋ค. ์ด๋ฅผ ๋ง๊ธฐ ์ํด ์ธ์ฆ์(Certificate)๊ฐ ์ฌ์ฉ๋ฉ๋๋ค.
์๋ช (Signing): ์๋ฒ๋ ์ ๋ขฐํ ์ ์๋ ๊ธฐ๊ด(CA)์ ์์ ์ ์ ๋ณด๋ฅผ ์ค๋๋ค. ๊ธฐ๊ด์ ์๋ฒ์ ์ ๋ณด์ ๊ณต๊ฐํค๋ฅผ ํ์ธํ ํ, ๊ธฐ๊ด์ '๊ฐ์ธํค'๋ก ์๋ช (์ํธํ)ํ์ฌ ์ธ์ฆ์๋ฅผ ๋ฐ๊ธํฉ๋๋ค.
๊ฒ์ฆ (Verification): PC(๋ธ๋ผ์ฐ์ )๋ ์๋ฒ๋ก๋ถํฐ ์ธ์ฆ์๋ฅผ ๋ฐ์ต๋๋ค. PC๋ ์ด๋ฏธ ๊ธฐ๊ด์ '๊ณต๊ฐํค'๋ฅผ ๊ฐ์ง๊ณ ์์ผ๋ฏ๋ก, ์ด๋ฅผ ์ด์ฉํด ์ธ์ฆ์๋ฅผ ์ด์ด๋ด ๋๋ค(๋ณตํธํ).
์ ๋ขฐ: ์ธ์ฆ์๊ฐ ๊ธฐ๊ด์ ๊ณต๊ฐํค๋ก ์ ํ๋ฆฐ๋ค๋ฉด, "์, ์ด ์๋ฒ๋ ๋ฏฟ์ ์ ์๋ ๊ธฐ๊ด์ด ๋ณด์ฆํ ์ง์ง ์๋ฒ๊ตฌ๋"๋ผ๊ณ ์ ๋ขฐํ๊ฒ ๋ฉ๋๋ค. ๊ทธ ํ ์ธ์ฆ์ ์์ ๋ค์ด์๋ ์๋ฒ์ ๊ณต๊ฐํค๋ฅผ ๊บผ๋ด์ ํต์ ์ ์์ํฉ๋๋ค.
์ด์ 3-Handshake ๊ณผ์ ์ด ๋๋๊ณ TCP ์ฐ๊ฒฐ์ด ์๋ฆฝ๋ ๋ค, ๊ทธ ์์์ TLS Handshake๊ฐ ์์๋์ด ์ธ์ฆ์ ํ์ธ๊ณผ ํค ๊ตํ์ด ์ด๋ฃจ์ด ์ง๋๋ค.
Summary
์ด ๋ชจ๋ ๊ณผ์ ์ ์ข ํฉํ์ฌ ์ ๋ฆฌํ๋ฉด ๋ค์๊ณผ ๊ฐ์ต๋๋ค.
SSL (Secure Sockets Layer):
์ดํ๋ฆฌ์ผ์ด์ ๊ณ์ธต(HTTP)๊ณผ ํธ๋์คํฌํธ ๊ณ์ธต(TCP) ์ฌ์ด์ ์์นํ์ฌ, ๋ฐ์ดํฐ๊ฐ ์์ผ์ ํตํด ๋๊ฐ๊ธฐ ์ ์ ์ํธํํด ์ฃผ๋ ๋ณด์ ๊ณ์ธต์ ๋๋ค.
์ ์ก๊ณ์ธต(TCP)์ 443 ํฌํธ๋
Well-Known Port์ ๋๋ค.
HTTPS:
HTTP๊ฐ ์ผ๋ฐ TCP ์์ผ์ด ์๋, SSL์ด๋ผ๋ ๋ณด์ ๊ณ์ธต์ ์น์ ์์ผ์ ํตํด ํต์ ํ๋ ๊ฒ์ ๋งํฉ๋๋ค.
HTTP๊ฐ ์ผ๋ฐ ์์ผ(์ ๋ฆฌ)๋ผ๊ณ ํ๋ค๋ฉด, HTTPS๋ ๋ณด์ ์์ผ(๋ฐฉํ๋ณต)
TLS (Transport Layer Security):
SSL์ ์๋ ๋ท์ค์ผ์ดํ ์ฌ์์ ๋ง๋ค์์ต๋๋ค. ์ด๊ฒ์ด ๋๋ฆฌ ์ฐ์ด์ ๊ตญ์ ํ์ค์ผ๋ก ์ ๋ฆฝํ ๊ฒ์ด TLS์ ๋๋ค.
์ฆ, TLS๋ SSL์ ํ์คํ๋ ์ ๊ทธ๋ ์ด๋ ๋ฒ์ ์ด๋ฉฐ ์๋ฆฌ๋ ๋์ผํฉ๋๋ค. (SSL์ ๋ฒ์ ์ค ํ๋๊ฐ TLS)
TCP ์ฐ๊ฒฐ ์๋ฆฝ(SYN โ SYN-ACK โ ACK) โ TLS ํธ๋์ ฐ์ดํฌ(Client Hello โ Server Hello โ Certificate ๋ฑ)
"HTTP๋ TCP ์์์ ๋์ํ๋๋ฐ, TCP๋ ๋ณด์์ ์ทจ์ฝํฉ๋๋ค. ๊ทธ๋์ ๋ฐ์ดํฐ๋ฅผ ์ํธํํ๋ SSL(TLS) ๊ณ์ธต์ ์ค๊ฐ์ ๋ผ์ ๋ฃ์๊ณ , ์ด๋ ๊ฒ SSL์ ํตํด ์ํธํ ํต์ ์ ํ๋ HTTP๋ฅผ HTTPS๋ผ๊ณ ๋ถ๋ฆ ๋๋ค."
Last updated