HTTP and TLS(SSL)
Web(HTTPS)

HTTP and TLS(SSL)

1.  HTTP vs HTTPS

- HTTP(Hypertext Transfer Protocol) : ์ „์†ก์ค‘ ์•”ํ˜ธํ™” X, 80 Port

- HTTPS(HTTP Secure) : ์ „์†ก์ค‘ ์•”ํ˜ธํ™” O, 443 Port

์›น ๋ธŒ๋ผ์šฐ์ € URL ํ™”๋ฉด์— ์ž๋ฌผ์‡  ํ‘œ์‹œ๊ฐ€ ์žˆ์œผ๋ฉด HTTPS ์—ฐ๊ฒฐ

 

- ํ•ด์ปค๊ฐ€ HTTP ํŒจํ‚ท์„ ๊ฐˆ์ทจํ•˜๊ฒŒ ๋  ๊ฒฝ์šฐ ํ‰๋ฌธ์˜ ์ •๋ณด๋“ค์ด ๋ณด์ด์ง€๋งŒ HTTPS ํŒจํ‚ท์€ ์•”ํ˜ธํ™”๋˜์–ด์„œ ๋ณด์ด๊ธฐ ๋•Œ๋ฌธ์— ๋ณด์•ˆ ํ–ฅ์ƒ(๋กœ๊ทธ์ธ ํŽ˜์ด์ง€๊ฐ€ ๋งŒ์•ฝ HTTP๋ผ๋ฉด์€ ๋‚˜์˜ ๋กœ๊ทธ์ธ ์ •๋ณด๊ฐ€ ๋‹ค ๋ณด์ด๊ฒŒ ๋œ๋‹ค๋Š”...?! ํ˜„์žฌ๋Š” ์ค‘์š” ํŽ˜์ด์ง€ ์˜ˆ๋ฅผ ๋“ค์–ด ๋กœ๊ทธ์ธ, ๊ฒฐ์ œ ๊ด€๋ จ ํŽ˜์ด์ง€๋Š” ๋ฌด์กฐ๊ฑด HTTPS๋ฅผ ์‚ฌ์šฉ)

 

Handshake ๋Œ€๋ถ€๋ถ„์˜ ๋ฉ”์„ธ์ง€๋ฅผ ์ฃผ๊ณ  ๋ฐ›๋Š” ์—ญํ• ์„ ํ•˜๋ฉฐ ์•”ํ˜ธํ™” ์•Œ๊ณ ๋ฆฌ์ฆ˜ ๊ฒฐ์ •, ํ‚ค ์ „๋‹ฌ, ์ธ์ฆ ๋ฉ”์„ธ์ง€ ์ „๋‹ฌ์„ ๋‹ด๋‹น
Change Cipher Spec SSL ์•”ํ˜ธํ™” ํ†ต์‹  ์‹œ ์‚ฌ์šฉํ•  ์•”ํ˜ธํ™” ์•Œ๊ณ ๋ฆฌ์ฆ˜ ์„ค์ • ๊ทœ์•ฝ์ด๋ฉฐ ๋น„๋ฐ€ํ‚ค, ๋ฉ”์„ธ์ง€ ๋‹ค์ด์ œ์ŠคํŠธ ์•Œ๊ณ ๋ฆฌ์ฆ˜ ์„ ์ •
Alter SSL ํ†ต์‹  ์ค‘ ์—๋Ÿฌ ๋˜๋Š” ์ •์ƒ์ ์ด์ง€ ์•Š์€ ์ƒํ™ฉ์ด ๋ฐœ์ƒํ–ˆ์„ ๋•Œ ์ƒ๋Œ€์ชฝ์— ์•Œ๋ฆผ
Application Data ์•”ํ˜ธํ™”๋œ ๋ฐ์ดํ„ฐ
Record ์œ„ ํ”„๋กœํ† ์ฝœ์„ ๊ฐ์‹ธ๊ณ  ๋ฐ์ดํ„ฐ ์•”/๋ณตํ˜ธํ™”, ๋ฌด๊ฒฐ์ • ๊ฒ€์ฆ์„ ํ•˜์—ฌ Transport Layer๋กœ ๋„˜๊น€

TLS Layer - Hanshake
TLS Layer - Application Data ์•”ํ˜ธํ™”

 

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 ์ธ์ฆ์„œ, ์„œ๋ฒ„ ๊ณต๊ฐœํ‚ค

 

์ฒซ๋ฒˆ์งธ ์ด๋ฏธ์ง€์—์„œ ์ธ์ฆ์„œ ํด๋ฆญํ•  ๊ฒฝ์šฐ SSL ์ธ์ฆ์„œ ํ™•์ธ ๊ฐ€๋Šฅ(DigiCert Global Root CA > Root CA, DigiCert SHA2 Secure Server CA > Intermediate CA) 

 

3. CA๋ฅผ ํ™•์ธํ•˜์—ฌ SSL ์ธ์ฆ์„œ ๋ณตํ˜ธํ™” (์ „์ž์„œ๋ช…)

- SSL ์ธ์ฆ์„œ๊ฐ€ CA์— ์˜ํ•˜์—ฌ ๋ฐœ๊ธ‰๋œ ๊ฒƒ์ธ์ง€ ํ™•์ธํ•˜๊ธฐ ์œ„ํ•˜์—ฌ ๋‚ด์žฅ๋œ CA List์™€ ํ™•์ธ(์—†๋‹ค๋ฉด ๊ฒฝ๊ณ  ๋ฉ”์„ธ์ง€ ํŒ์—…)

- CA List์— ์žˆ๋‹ค๋ฉด CA์—์„œ ๋ฐœ๊ธ‰ํ•œ ๊ฒƒ์ด ๋งž๋Š”์ง€ ํ™•์ธํ•˜๊ธฐ ์œ„ํ•˜์—ฌ ๋ณด์œ ํ•œ CA ๊ณต๊ฐœํ‚ค๋กœ SSL ์ธ์ฆ์„œ๋ฅผ ๋ณตํ˜ธํ™”

- ๋น„๊ณต๊ฐœํ‚ค๋กœ ์•”ํ˜ธํ™”๋œ SSL ์ธ์ฆ์„œ๋ฅผ ๊ณต๊ฐœํ‚ค๋กœ ๋ณตํ˜ธํ™”ํ•˜์—ฌ ์ „์ž์„œ๋ช…

ํฌ๋กฌ ๋ธŒ๋ผ์šฐ์ €์— ์ธ์ฆ๋œ Root CA List

 

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

 

HTTPS์™€ SSL ์ธ์ฆ์„œ - ์ƒํ™œ์ฝ”๋”ฉ

HTTPS VS HTTP HTTP๋Š” Hypertext Transfer Protocol์˜ ์•ฝ์ž๋‹ค. ์ฆ‰ Hypertext ์ธ HTML์„ ์ „์†กํ•˜๊ธฐ ์œ„ํ•œ ํ†ต์‹ ๊ทœ์•ฝ์„ ์˜๋ฏธํ•œ๋‹ค. HTTPS์—์„œ ๋งˆ์ง€๋ง‰์˜ S๋Š” Over Secure Socket Layer์˜ ์•ฝ์ž๋กœ Secure๋ผ๋Š” ๋ง์„ ํ†ตํ•ด์„œ ์•Œ ์ˆ˜ ์žˆ๋“ฏ์ด

opentutorials.org

 

'Web(HTTPS)' ์นดํ…Œ๊ณ ๋ฆฌ์˜ ๋‹ค๋ฅธ ๊ธ€

HTTP/2์™€ HTTP/3  (0) 2021.07.18
HTTPS ํŒจํ‚ท ๋ถ„์„(TLS 1.2์™€ TLS 1.3)  (1) 2021.06.11
URI, URL, URN  (0) 2020.03.22
HTTP Method(GET/POST)  (0) 2020.03.22
HTTP Header  (0) 2020.03.22