1. HTTP vs HTTPS
- HTTP(Hypertext Transfer Protocol) : ์ ์ก์ค ์ํธํ X, 80 Port
- HTTPS(HTTP Secure) : ์ ์ก์ค ์ํธํ O, 443 Port
- ํด์ปค๊ฐ HTTP ํจํท์ ๊ฐ์ทจํ๊ฒ ๋ ๊ฒฝ์ฐ ํ๋ฌธ์ ์ ๋ณด๋ค์ด ๋ณด์ด์ง๋ง HTTPS ํจํท์ ์ํธํ๋์ด์ ๋ณด์ด๊ธฐ ๋๋ฌธ์ ๋ณด์ ํฅ์(๋ก๊ทธ์ธ ํ์ด์ง๊ฐ ๋ง์ฝ HTTP๋ผ๋ฉด์ ๋์ ๋ก๊ทธ์ธ ์ ๋ณด๊ฐ ๋ค ๋ณด์ด๊ฒ ๋๋ค๋...?! ํ์ฌ๋ ์ค์ ํ์ด์ง ์๋ฅผ ๋ค์ด ๋ก๊ทธ์ธ, ๊ฒฐ์ ๊ด๋ จ ํ์ด์ง๋ ๋ฌด์กฐ๊ฑด HTTPS๋ฅผ ์ฌ์ฉ)
Handshake | ๋๋ถ๋ถ์ ๋ฉ์ธ์ง๋ฅผ ์ฃผ๊ณ ๋ฐ๋ ์ญํ ์ ํ๋ฉฐ ์ํธํ ์๊ณ ๋ฆฌ์ฆ ๊ฒฐ์ , ํค ์ ๋ฌ, ์ธ์ฆ ๋ฉ์ธ์ง ์ ๋ฌ์ ๋ด๋น |
Change Cipher Spec | SSL ์ํธํ ํต์ ์ ์ฌ์ฉํ ์ํธํ ์๊ณ ๋ฆฌ์ฆ ์ค์ ๊ท์ฝ์ด๋ฉฐ ๋น๋ฐํค, ๋ฉ์ธ์ง ๋ค์ด์ ์คํธ ์๊ณ ๋ฆฌ์ฆ ์ ์ |
Alter | SSL ํต์ ์ค ์๋ฌ ๋๋ ์ ์์ ์ด์ง ์์ ์ํฉ์ด ๋ฐ์ํ์ ๋ ์๋์ชฝ์ ์๋ฆผ |
Application Data | ์ํธํ๋ ๋ฐ์ดํฐ |
Record | ์ ํ๋กํ ์ฝ์ ๊ฐ์ธ๊ณ ๋ฐ์ดํฐ ์/๋ณตํธํ, ๋ฌด๊ฒฐ์ ๊ฒ์ฆ์ ํ์ฌ Transport Layer๋ก ๋๊น |
2. ์ฉ์ด ์ ๋ฆฌ
- ํ๋ฌธ(Plain Text) : ์์ํ ๋ฉ์ธ์ง
- ์ํธ๋ฌธ(Cipher Text) : ์ํธํ๋ ๋ฉ์ธ์ง
- ์ํธํ(Encryption) : ํ๋ฌธ์ ์ํธ๋ฌธ์ผ๋ก ๋ณํ
- ๋ณตํธํ(Decryption) : ์ํธ๋ฌธ์ ํ๋ฌธ์ผ๋ก ๋ณํ
- ๋์นญํค ์ํธํ (Symmetric Cryptography) : ์ํธํ/๋ณตํธํ์ ๋์ผํ ํค ์ด์ฉ, ํค๋ฅผ ๋น๊ณต๊ฐํค๋ก ์ฌ์ฉ, ํ๋์ ํค๋ก ์ํธํ/๋ณตํธํ๊ฐ ๊ฐ๋ฅํ๊ธฐ ๋๋ฌธ์ ๋ ธ์ถ๋ ๊ฒฝ์ฐ ์ํ์ด ํผ
- ๋น๋์นญํค ์ํธํ(Asymmetric Cryptography) : ์ํธ์/๋ณตํธํ์ ๋ค๋ฅธ ํค ์ด์ฉ, ๊ณต๊ฐํค์ ๋น๊ณต๊ฐํค ์ฌ์ฉ
- ๋น๋์นญํค ์ํธํ์ ํค ์ฌ์ฉ ๋ฐฉ์ : ๊ณต๊ฐํค๋ก ์ํธํํ๊ณ ๋น๊ณต๊ฐํค๋ก ๋ณตํธํํ๊ฒ ๋๋ฉด "๋๊ฐ ์ํธ๋ฌธ์ ํ ์ ์๋"๊ฐ ์ค์ฌ์ด๊ธฐ ๋๋ฌธ์ Data ๋ณด์์ด ๋ ์ค์ํ ๊ฒฝ์ฐ ์ฌ์ฉ, ๋น๊ณต๊ฐํค๋ก ์ํธํํ๊ณ ๊ณต๊ฐํค๋ก ๋ณตํธํํ๊ฒ ๋๋ฉด "๋๊ฐ ์ํธ๋ฅผ ํ๋๋"๊ฐ ์ค์ฌ์ด๊ธฐ ๋๋ฌธ์ Data๋ฅผ ์ํธํํ ์ฌ๋์ ์ ์์ด ๋ ์ค์ํ ๊ฒฝ์ฐ ์ฌ์ฉ(์ ์์๋ช )
- ๊ณต๊ฐํค(Public Key) : ๋๊ตฌ์๊ฒ๋ ๊ณต๊ฐ๋ ํค
- ๋น๊ณต๊ฐํค or ๋น๋ฐํค(Private Key) : ๊ฐ์ธ๋ง ์๊ณ ์๋ ํค
- ํค(Key) : ํ๋ฌธ/์ํธ๋ฌธ์ ์ํธํ/๋ณตํธํ์ํค๋ ์ํธ ์๊ณ ๋ฆฌ์ฆ์ ํ์ํ ํต์ฌ ๊ฐ๋ณ์ ๋ณด ๊ฐ
- ์ํธ ์๊ณ ๋ฆฌ์ฆ(Crytographic Algorithm) : ์ํธํ/๋ณตํธํ์ ์ฌ์ฉํ๋ ์๊ณ ๋ฆฌ์ฆ
- SSL ์ธ์ฆ์ : ํด๋ผ์ด์ธํธ์์ ์ ์ํ ์๋ฒ๊ฐ ์ ๋ขฐํ ์ ์๋ ์๋ฒ์์ ๋ณด์ฅ, TLS ํต์ ์ ์ฌ์ฉํ ๊ณต๊ฐํค๋ฅผ ํด๋ผ์ด์ธํธ์ ์ ๊ณต
- CA(Certificate Authority or Root Certificate) : SSL ์ธ์ฆ์๋ฅผ ๋ณด์ฆํ๋ ๊ธฐ์
- SSL ์ธ์ฆ์ ๋ด์ฉ : ์๋น์ค์ ์ ๋ณด(์ธ์ฆ์๋ฅผ ๋ฐ๊ธํ CA, ์๋น์ค์ ๋๋ฉ์ธ ๋ฑ)์ ๊ณต๊ฐํค(๊ณต๊ฐํค์ ๋ด์ฉ, ๊ณต๊ฐํค์ ์ํธํ ๋ฐฉ๋ฒ)
3. ์ข ๋ฅ
๋ฒ์ | ๋ฆด๋ฆฌ์ฆ | ์ํ | ๋น๊ณ |
SSL v1 | - | X | ๋ท์ค์ผ์ดํ์์ ๊ฐ๋ฐ ์น๋ช ์ ์ธ ๊ฒฐํจ์ผ๋ก ๊ณต๊ฐ X |
SSL v2 | 1995๋ | 2011๋ ์ข ๋ฃ | |
SSL v3 | 1996๋ | 2015๋ ์ข ๋ฃ | TLS v1.0์ ์์ด TLS v1.0๊ณผ ์ํธ ์ด์ฉ X |
TLS v1.0 | 1999๋ | 2020๋ ์ข ๋ฃ | SHA1 ์๊ณ ๋ฆฌ์ฆ์ด ์ฃผ๋ก ์ฌ์ฉ๋์ง๋ง SHA256๋ ์ง์ XP, Vista์์ ๋ง์ง๋ง ์ง์ |
TLS v1.1 | 2006๋ | 2020๋ ์ข ๋ฃ | ๋ธ๋ก์ฒด์ธ ๊ณต๊ฒฉ์ ๋ํ ๋ฐฉ์ด์ IANA ๋ฑ๋ก ํ๋ผ๋ฏธํฐ ์ง์ ์ถ๊ฐ |
TLS v1.2 | 2008๋ | ์ทจ์ฝํ SHA1 ์๊ณ ๋ฆฌ์ฆ์ ๋ฒ๋ฆฌ๊ณ SHA256๋ง ์ฌ์ฉํ๋๋ก ๋ณ๊ฒฝ ๋ณด์ ๊ฐํ๋ก ์๋๊ฐ ๋๋ ค์ง |
|
TLS v1.3 | 2018๋ | ์ต์ด ์ฐ๊ฒฐ ์ ๊ฐ์ํ๋ ์ ์ฐจ ๊ฐ์ํ(์๋ณต 2ํ -> 1ํ) O-RTT(Zero Round Trip Time Resolution) ๊ธฐ๋ฅ์ผ๋ก ์ฌ์ดํธ ๋ฐฉ๋ฌธ์์ ์ฐ๊ฒฐ ์๋ ๊ฐ์ ์ทจ์ฝํ ์๊ณ ๋ฆฌ์ฆ 9๊ฐ ์ค๋จ(RC4, RSA, SHA1, CBC Mode Ciphers, MD5, Various DH Groups, DES, 3DES, EXPRT-Strength Ciphers) SNI ํ๋ ์ํธํ ํ์ฅ ๊ท๊ฒฉ๊น์ง ํฉ์น๋ฉด ํ๋ฌธ์ผ๋ก ์ ์ก๋๋ ๋ถ๋ถ์ด ์์ ์ฌ๋ผ์ง |
4. TLS ํต์ ๊ณผ์ (TLS 1.2 ๊ธฐ์ค)
- ๋์นญํค ์ํธํ์ ๋น๋์นญํค ์ํธํ๋ฅผ ๋์์ ์ฌ์ฉ
- ์ค์ ๋ฐ์ดํฐ : ๋์นญํค ์ํธํ
- ๋์นญํค ์ํธํ์ ๋์นญํค : ๋น๋์นญํค ์ํธํ
Handshake
1. HTTPS ์ ์(Client Hello)
- ํด๋ผ์ด์ธํธ์ธก์์ ์์ฑํ ๋๋ค ๋ฐ์ดํฐ
- ํด๋ผ์ด์ธํธ๊ฐ ์ง์ํ๋ ์ํธํ ๋ฐฉ์๋ค
- ์ธ์ ID
2. SSL ์ธ์ฆ์ + ์๋ฒ ๊ณต๊ฐํค ์ ๋ฌ(Server Hello, Certificate, Server Key Exchange, Server Hello Done)
- ์๋ฒ์ธก์์ ์์ฑํ ๋๋ค ๋ฐ์ดํฐ
- ์๋ฒ๊ฐ ์ ํํ ํด๋ผ์ด์ธํธ์ ์ํธํ ๋ฐฉ์
- CA ๋น๊ณต๊ฐํค๋ก ์ํธํ๋ SSL ์ธ์ฆ์, ์๋ฒ ๊ณต๊ฐํค
3. CA๋ฅผ ํ์ธํ์ฌ SSL ์ธ์ฆ์ ๋ณตํธํ (์ ์์๋ช )
- SSL ์ธ์ฆ์๊ฐ CA์ ์ํ์ฌ ๋ฐ๊ธ๋ ๊ฒ์ธ์ง ํ์ธํ๊ธฐ ์ํ์ฌ ๋ด์ฅ๋ CA List์ ํ์ธ(์๋ค๋ฉด ๊ฒฝ๊ณ ๋ฉ์ธ์ง ํ์ )
- CA List์ ์๋ค๋ฉด CA์์ ๋ฐ๊ธํ ๊ฒ์ด ๋ง๋์ง ํ์ธํ๊ธฐ ์ํ์ฌ ๋ณด์ ํ CA ๊ณต๊ฐํค๋ก SSL ์ธ์ฆ์๋ฅผ ๋ณตํธํ
- ๋น๊ณต๊ฐํค๋ก ์ํธํ๋ SSL ์ธ์ฆ์๋ฅผ ๊ณต๊ฐํค๋ก ๋ณตํธํํ์ฌ ์ ์์๋ช
4. ์๋ฒ ์ ๋ขฐ
- ๋ณตํธํ๋ฅผ ์ฑ๊ณตํ๋ค๋ฉด SSL ์ธ์ฆ์ ์ ๋ขฐ
5. Pre Master Secret ํค๋ฅผ ์๋ฒ ๊ณต๊ฐํค๋ก ์ํธํํ์ฌ ์ ๋ฌ (Client Key Exchange, Change Cipher Spec, Encrypted Handshake Message)
- ํด๋ผ์ด์ธํธ์ธก์์ ์์ฑํ ๋๋ค ๋ฐ์ดํฐ, ์๋ฒ์ธก์์ ์์ฑํ ๋๋ค ๋ฐ์ดํฐ๋ฅผ ์กฐํฉํ์ฌ Pre Master Secret ์์ฑ
- ํฌํจ๋ ์๋ฒ ๊ณต๊ฐํค๋ฅผ ์ด์ฉํด Pre Master Secret ์ํธํ
6. ๋น๊ณต๊ฐํค๋ฅผ ์ด์ฉํด Pre Master Secret ๋ณตํธํ(์ ์์๋ช )
- Cinet์ Server๊ฐ Pre Master Secret ๊ณต์ ๋๋ฉฐ Master Secret์ด ๋จ
7. Master Secret๋ฅผ ์ด์ฉํ์ฌ Session ํค ์์ฑ(๋ฐ์ดํฐ ๋์นญํค๋ก ์ฌ์ฉ)
- ์๋ฒ์ ํด๋ผ์ด์ธํธ ๋ชจ๋ ์ผ๋ จ์ ๊ณผ์ ์ ๊ฑฐ์ณ Pre Master ํค๋ก Session ํค ์์ฑ
- Session ํค(๋์นญํค)๋ฅผ ์ด์ฉํด ๋ฐ์ดํฐ ์ํธํ
8. Session ํค ์ฌ์ฉ์ ์๋ฆผ(Change Cipher Spec, Encrypted Handshake Message)
- Why ๋์นญํค? ๋น๋์นญํค ์ํธํ๋ ์ปดํจํ ํ์๋ฅผ ๋ง์ด ํ์๋กํจ
์ ์ก
9. ๋ฐ์ดํฐ ์ฃผ๊ณ ๋ฐ์ (Session ํค๋ฅผ ๋์นญํค๋ก ์ฌ์ฉ)
์ข ๋ฃ
10. ๋ฐ์ดํฐ ์ ์ก์ด ๋๋ฌ์์ ํ์ธ ํ Session ํค ํ๊ธฐ
์ฐธ๊ณ : https://opentutorials.org/course/228/4894
'Web(HTTPS)' ์นดํ ๊ณ ๋ฆฌ์ ๋ค๋ฅธ ๊ธ
HTTP/2์ HTTP/3 (0) | 2021.07.18 |
---|---|
HTTPS ํจํท ๋ถ์(TLS 1.2์ TLS 1.3) (2) | 2021.06.11 |
URI, URL, URN (0) | 2020.03.22 |
HTTP Method(GET/POST) (0) | 2020.03.22 |
HTTP Header (0) | 2020.03.22 |