[SSL] SSL์ด๋?
โฐ 2021-08-18 (์) 00:26:08
๊ฐ์
์น์ ๋ฐฐํฌํด๋ณธ ์ ์ด ์๋ค๋ฉด SSL์ ๋ํด ๋ค์ด๋ณธ ์ ์ด ์์ ๊ฒ์ด๋ค. SSL์ด ์ ์ฉ๋ URL์ ํ๋กํ ์ฝ์ https://
๋ก ์์ํ๋ฉฐ, http://
์ ๋ฌ๋ฆฌ ๋ณด์(Secure)์ ์๋ฏธํ๋ s
๊ฐ ๋ถ๋๋ค. ์ง๊ธ ์ด ์ฌ์ดํธ์ ์ฃผ์๋ ๐ https://blog.itcode.dev๋ก SSL์ด ์ ์ฉ๋ ๊ฑธ ํ์ธํ ์ ์๋ค. ๐ NAVER๋ ๐ Google๋ ๋ง์ฐฌ๊ฐ์ง. ์ด ์ฒ๋ผ SSL์ ๊ตณ์ด ์น ๊ฐ๋ฐ์์๊ฒ๋ง ์น์ํ ๊ฐ๋
์ด ์๋๋ค. ๋๊ตฌ๋ ์ธํฐ๋ท์ ์ฌ์ฉํ๋ค๋ฉด, ์ข๋ ์ซ๋ ๋ชจ๋๊ฐ SSL์ ์ ํ๋ค๊ณ ๋ด๋ ๋ฌด๋ฐฉํ๋ค.
SSL(Secure Socket Layer)
๊ทธ๋ ๋ค๋ฉด ์ด SSL์ด๋ ๋์ ๋ญ๊น? SSL์ Secure Socket Layer์ ์ฝ์๋ก, ์ง์ญํ๋ฉด ์ํธํ ์์ผ์ธต์ด๋ค. 1994๋ Netscape์ฌ์์ ์ฒ์ ๊ฐ๋ฐ๋์ด 3.0 ๋ฒ์ ๊น์ง ์กด์ฌํ๋ค.
SSL์ด๋, ์น ์๋ฒ์ ํด๋ผ์ด์ธํธ์ ํต์ ์ํธํ ํ๋กํ ์ฝ์ด๋ค.
SSL์ด ์ ์ฉ๋์ง ์์ ํต์ ์ ๊ฒฝ์ฐ, ์ ๊ทธ๋ฆผ๊ณผ ๊ฐ์ด ํ๋ฌธ(Plain Text)๊ฐ ๊ทธ๋๋ก ์ ์ก๋๋ค. ๋ง์ฝ ์ 3์๊ฐ ์ด๋ ํ ๋ฐฉ์์ผ๋ก๋ ํต์ ํจํท์ ํ์ทจํ ๊ฒฝ์ฐ, ๊ทธ ๋ด์ฉ์ ์ฝ๊ฒ ํ์ธํ ์ ์๋ค.
ํต์ ๋ด์ฉ์ ์๋ฅ์์ ๊ฒ๋ง ์๋ค๋ฉด ๋คํ์ด๊ฒ ์ง๋ง, ์ฌ์ฉ์์ ๊ฐ์ธ ์ ๋ณด๋, ๊ฒฐ์ ์ ๋ณด์ ๊ฐ์ ๋ฏผ๊ฐํ ์ ๋ณด์ ํต์ ์ด๋ผ๋ฉด ์๊ธฐ๊ฐ ๋ฌ๋ผ์ง๋ค.
SSL์ ์ ์ฉํ๋ค๋ฉด ์ด๋ฌํ ๋ฌธ์ ๋ฅผ ๊ธฐ์ ์ ์ผ๋ก ํด๊ฒฐํ ์ ์๋ค. ์์ฒญ์ ์ํธํํด์ ๋ณด๋ด๋ฏ๋ก ํต์ ํจํท์ด ํ์ทจ๋๋ ๋ณตํธํ ํค๊ฐ ์์ผ๋ฉด ์๋ ๋ด์ฉ์ ์ ์ ์๊ธฐ ๋๋ฌธ์ด๋ค.
TLS(Transport Layer Security)
SSL์ ์ ํ๋ค๋ณด๋ฉด TLS๋ผ๋ ๊ฐ๋ ๋ ์ ํ๊ฒ ๋๋ค. ์ฐพ๋ค๋ณด๋ฉด SSL์ด๋ TLS๋ ํผ์ฌ๋์ด์๊ธฐ๋ ํ๊ณ .
SSL์ 1996๋ ์ 3.0 ๋ฒ์ ์ด ์ถ์๋์์ผ๋ฉฐ, ๋ณด์์ทจ์ฝ์ ์ผ๋ก ์ธํด ํ์ฌ๋ ํด์ถ๋ ์ํ๋ค.
TLS๋ ๊ตญ์ ์ธํฐ๋ท ํ์คํ ๊ธฐ๊ตฌ(IETF)์์ ๊ฐ๋ฐํ ๊ฒ์ผ๋ก, SSL 3.0์ ๋ณด์์ทจ์ฝ์ ์ ๋ณด์ํ ํต์ ๋ณด์ ํ๋กํ ์ฝ์ด๋ค. ํ์ฌ TLS๋ 2018๋ 1.3 ๋ฒ์ ์ด ์ถ์๋๋ค.
SSL์ ๋ณด์ํ ๊ฒ์ด TLS์ง๋ง, ์ธํฐ๋ท์ ์ ์ฉ๋๋ ํต์ ๋ณด์ ํ๋กํ ์ฝ์ ์ ๋ถ ํตํ์ด์ SSL์ด๋ผ ๋ถ๋ฅธ๋ค.
ํ์ง๋ง ์ ์ SSL์ 2015๋ ์ SSL์ ๋ง์ง๋ง ๋ฒ์ ์ธ 3.0 ๋ง์ ๊ธ์ง๋์ผ๋ฏ๋ก, ํ์ฌ ์ฌ์ฉ ์ค์ธ ํต์ ๋ณด์ ํ๋กํ ์ฝ์ ๋ชจ๋ TLS๋ค. ๋ง์น ํธ๋นต๊ณผ ์ฐ๋นต๊ฐ์ ์ํฉ์ธ ์ .
SSL์ ํน์ง
- URL ํ๋กํ ์ฝ์
https
์ด๋ฉฐ, ๊ธฐ๋ณธ ํฌํธ๋443
์ด๋ค. - ํต์ ๋ฐ์ดํฐ๊ฐ ์ํธํ๋์ด, ํจํท์ด ํ์ทจ๋๋ ์ฌ๊ณ ๊ฐ ๋ฐ์ํด๋ ๋ฐ์ดํฐ๋ฅผ ์งํฌ ์ ์๋ค.
- SSL ์ธ์ฆ์๋ฅผ ํตํด ๋๋ฉ์ธ์ ์ ๋ขฐ์ฑ์ ๊ฒ์ฆํ ์ ์๋ค.
- ๋ฐ์ดํฐ ์ก/์์ ๊ณผ์ ์์ ์/๋ณตํธํ๊ฐ ๋ฐ์ํ๋ฏ๋ก ์๋๊ฐ ๋๋ฆฌ๋ค.
SSL์ ์๋ฆฌ
SSL์ ํต์ ํ๋ ์๋ฆฌ๋ ์๋์ ๊ฐ์ผ๋ฉฐ, ์ด๋ฌํ ์ผ๋ จ์ ๊ณผ์ ์ HandShake๋ผ ํ๋ค. ํด๋ผ์ด์ธํธ์ ์๋ฒ ๊ฐ์ ์์ฒญ/์๋ต์ ๋ฐ๋ณตํ๋ฉฐ ํต์ ์ ํ์ํ ์ฌ์ ์์ ์ ํ๋๊ฒ ๋ง์น ์ ์ ๊ฐ์ ๋ถ์ฌ์ก๋ค๊ณ ํ๋ค.
1. ClientHello ์์ฒญ
ํด๋ผ์ด์ธํธ๊ฐ ํน์ ์ฃผ์์ ์ ๊ทผํ๋ฉด, ํด๋นํ๋ ์๋ฒ์ ์์ฒญ์ ๋ณด๋ธ๋ค. ๐ NAVER์ ์ ๊ทผํ๋ฉด ๋ค์ด๋ฒ ์๋ฒ์ ์์ฒญ์ ๋ณด๋ด๊ฒ ๋๋ค.
- ๋์ ๋ฐ์ดํฐ
- ์ํธํ ํ๋กํ ์ฝ ์ ๋ณด (ํ๋กํ ์ฝ, ๋ฒ์ ๋ฑ)
- ํด๋ผ์ด์ธํธ๊ฐ ์ฌ์ฉ ๊ฐ๋ฅํ ์ํธํ ๊ธฐ๋ฒ
- ์ธ์ ์์ด๋
- ๊ธฐํ ํ์ฅ ์ ๋ณด
์ด ์์ฒญ์๋ ์์ ๊ฐ์ ์ ๋ณด๋ค์ด ํฌํจ๋์ด์๋ค. ํด๋ผ์ด์ธํธ์ ์ฃผ์ ์ ๋ณด๋ฅผ ์๋ฒ์ ์ ์กํ์ฌ, ํด๋น ํด๋ผ์ด์ธํธ๋ฅผ ์๋ณํ๊ณ , ์ด๋ค ์ํธํ๋ฅผ ์ฌ์ฉํ ์ ์๋ ์ง ๋ฑ์ ์ ๋ณด๋ฅผ ์๋ฒ๊ฐ ์ธ์งํ๋๋ก ํ๋ค.
2. ServerHello ์๋ต
์๋ฒ๊ฐ ClientHello ์์ฒญ์ ๋ฐ์ผ๋ฉด, ์์ ์ ๋ณด๋ฅผ ๋ด์ ํด๋ผ์ด์ธํธ์๊ฒ ์ผ์ข ์ ํ๋ต์ ๋ณด๋ธ๋ค.
- ๋์ ๋ฐ์ดํฐ (ClientHello์ ๋ฐ์ดํฐ์ ๋ค๋ฆ)
- ์๋ฒ๊ฐ ์ฌ์ฉํ ์ํธํ ๊ธฐ๋ฒ
- ์ธ์ฆ์
- CA
- ๋๋ฉ์ธ
- ๊ณต๊ฐํค
๋์ ๋ฐ์ดํฐ๋ ClientHello์์ ๋ณด๋ธ ๋ฐ์ดํฐ๊ณผ ์๋ฌด๋ฐ ์๊ด๊ด๊ณ๊ฐ ์๋ ๋ณ๊ฐ์ ๋ฐ์ดํฐ๋ค.
ํด๋ผ์ด์ธํธ๊ฐ ์ฌ์ฉ ๊ฐ๋ฅํ๋ค๊ณ ํต๋ณดํ ์ํธํ ๊ธฐ๋ฒ ์ค ์๋ฒ์์ ํ์ฉํ ์ํธํ ๊ธฐ๋ฒ์ ์ ๋ฌํ์ฌ ๋์ผํ ์ํธํ ๊ธฐ๋ฒ์ผ๋ก ์ก์์ ํ ์ ์๋๋ก ์ ์ธํ๋ค.
์ธ์ฆ์ ์ ๋ณด์ ํจ๊ป, ์๋ฒ์์ ์ํธํ ํต์ ์ ์ํ ์๋ฒ ๊ณต๊ฐํค๊ฐ ์ ๋ฌ๋๋ค. ์๋ฒ์ ๊ณต๊ฐํค๋ก ๋ฐ์ดํฐ๋ฅผ ์ํธํํ๋ฉด ์๋ฒ๋ ์ด๋ฅผ ๋ฐ์ ๊ฐ์ธํค๋ก ๋ณตํธํํ์ฌ ์์ฒญ์ ๋ถ์ํ ์ ์๋ค.
3. ์ธ์ฆ์ ๊ฒํ
์๋ฒ๊ฐ ์ ๋ฌํ ์ธ์ฆ์๊ฐ, ์ค์ ํด๋น ์๋ฒ์ ์ธ์ฆ์์ธ์ง, ์ ๋ขฐํ ์ ์๋ CA์์ ๋ฐ๊ธ๋ ๊ฒ์ธ์ง, ์ค์ ํด๋น CA์์ ๋ฐ๊ธ๋ฐ์๋์ง ๋ฑ ์ธ์ฆ์๋ฅผ ๊ฒํ ํ๋ค.
์ธ์ฆ์์ ์ด์์ด ์๋ค๋ฉด ์ฃผ์์ฐฝ์ ์์ ๊ฐ์ด ํ์๋๋ค. (Microsoft Chromium Edge ๊ธฐ์ค)
๋ง์ฝ ๋ฌธ์ ๊ฐ ์๋ค๋ฉด ์๋์ ๊ฐ์ ์ฐฝ์ ๋ณด๊ฒ ๋ ๊ฒ์ด๋ค.
์ด๋ ๋ธ๋ผ์ฐ์ ๊ฐ ์ฌ์ฉ์์๊ฒ ๋ณด๋ด๋ ๊ฒฝ๊ณ ๋ฌธ์ผ๋ก, ํด๋น ์ฌ์ดํธ์ ์ธ์ฆ์๊ฐ ์ฌ๋ฐ๋ฅด์ง ์์ผ๋ฏ๋ก ์ ๋ขฐํ ์ ์๋ค๊ณ ๊ฒฝ๊ณ ํ๋ ๊ฒ์ด๋ค.
๋ฌผ๋ก ์ฌ์ดํธ ๊ด๋ฆฌ์์ ์ค์๋ก ์ธ์ฆ์๊ฐ ๋ง๋ฃ๋๊ฑฐ๋, ์๋ชป๋ ์ธ์ฆ์๋ฅผ ๊ต์ฒดํด์ ๋ฐ์ํ ์ฌ์ํ ์ด์ ์ผ ์๋ ์๋ค. ํ์ง๋ง ๋ฎ์ ์ฌ์ดํธ๋ฅผ ์ ์ํ๋๋ฐ ์ด์ ๊ฐ์ ๊ฒฝ๊ณ ๊ฐ ๋ฌ๋ค๋ฉด, ์ ์์ ์ธ ๋ฐฉ๋ฒ์ผ๋ก ์ธ์ฆ์๋ฅผ ๋ฐ๊ธ๋ฐ์ ์ ์๋ ์ฌ์ดํธ์ผ ๊ฐ๋ฅ์ฑ์ด ์์ผ๋ฏ๋ก ์ ๊ทผ์ ์์ ํ์.
์ ์๊ฐ ์๋ ์ฌ์ดํธ์ผ์ง๋ผ๋, ์ฌ์ฉ์์ ๋ฐ์ดํฐ๋ ๋ณดํธํด์ฃผ์ง ๋ชป ํ๋ ์ฃผ์ํ ๊ฒ.
4. Premaster Secret ์ก์์
ClientHello, ServerHello์์ ์ก์์ ํ ๋์ ๋ฐ์ดํฐ๋ฅผ ์กฐํฉํ์ฌ Premaster Secret์ ์์ฑํ๋ค.
์ด๋ฅผ ServerHello์์ ์ ๋ฌ๋ฐ์๋ ๊ณต๊ฐํค๋ก ์ํธํํ๋ค. ์ด ๋ฐ์ดํฐ๋ ์๋ฒ๊ฐ ๊ฐ์ง ๊ฐ์ธํค๋ก๋ง ๋ณตํธํ๊ฐ ๊ฐ๋ฅํ๋ค. ์ฆ, ์ด ๋ฐ์ดํฐ๋ ํ์ทจ๋๋ค ํ๋๋ผ๋ ๊ทธ ๋ด์ฉ์ด ๋ณดํธ๋๋ค.
์๋ฒ๋ ์์ ๋ ๋ฐ์ดํฐ๋ฅผ ๋ณตํธํํ์ฌ ํด๋ผ์ด์ธํธ์ ๋์ผํ Premaster Secret์ ์ ์ฅํ ์ ์๋ค.
5. ํต์ ํค ์์ฑ
๋ณด์ ํ Premaster Secret์ ํ ๋๋ก Master Secret, Session Key๋ฅผ ์์ฑํ๋ค. ์ด๋ฅผ ํตํด ํด๋ผ์ด์ธํธ์ ์๋ฒ๊ฐ ๋์ผํ ํค๋ฅผ ๋ณด์ ํ๊ฒ ๋๋ฏ๋ก ์์ ๋ค๋ผ๋ฆฌ์ ์ํธํ ํต์ ์ด ๊ฐ๋ฅํ๋ค.
6. ๋ฐ์ดํฐ ์ก์์
ํ์ํ ๋ฐ์ดํฐ๋ ์ ์ฅ๋ Session Key๋ฅผ ํตํ ๋์นญํค ์ํธํ ๋ฐฉ์์ผ๋ก ์/๋ณตํธํํ์ฌ ํต์ ํ๋ค.
7. ์ธ์ ์ข ๋ฃ
ํด๋ผ์ด์ธํธ์์ ์ฐ๊ฒฐ์ด ๋๊ฒผ์ ๊ฒฝ์ฐ ์ฌ์ฉํ๋ Session Key๋ ํ๊ธฐํ๋ค.
์ ๋ฆฌ
SSL์ ํต์ ํจํท์ ์ํธํํ์ฌ ํจํท ํ์ทจ, ์ ๋ณด ๋์ถ ๋ฑ์ ๋ฐฉ์งํ๊ธฐ ์ํ ๋ณด์ ํ๋กํ ์ฝ์ด๋ค.
ํ์ฌ๋ ๋ชจ๋ TLS๋ก ๊ต์ฒด๋์์ง๋ง, SSL ์์ฒด๊ฐ ๊ณ ์ ๋ช ์ฌ๋์ด ๋์ ์๋ฏธ์ ํต์ ๋ณด์ ํ๋กํ ์ฝ์ ๋ช ์นญํ๋ ์๋ฏธ๋ก ์ฐ์ธ๋ค.
ํ๋์ ์ด๋ฅด๋ฌ์๋ ์น ๋ฐฐํฌ์ ์์ด์ ํ์์ ์ธ ์ฌํญ์ด๋ฏ๋ก, ๋ด์ฉ์ ์ ์ดํดํ์.
๋ค์ ์ฅ์์๋ SSL ์ธ์ฆ์์ ๋ํด ๋ค๋ฃฌ๋ค.
๐ท๏ธ ํ๊ทธ
์ฝ์ด์ฃผ์ ์ ๊ณ ๋ง์์!
๋์์ด ๋์ จ๋ค๋ฉด, ๊ณต๊ฐ์ด๋ ๋๊ธ์ ๋ฌ์์ฃผ์๋ ๊ฑด ์ด๋ค๊ฐ์?
๋ธ๋ก๊ทธ ์ด์์ ํฐ ํ์ด ๋ฉ๋๋ค.