๊ด€๋ฆฌ ๋ฉ”๋‰ด

Tech Log ๐Ÿ› ๏ธ

HTTP , HTTPS์˜ ํŠน์ง•๊ณผ ์ฐจ์ด ๋ณธ๋ฌธ

Computer Science/๋„คํŠธ์›Œํฌ

HTTP , HTTPS์˜ ํŠน์ง•๊ณผ ์ฐจ์ด

sehaan 2024. 2. 12. 17:24

HTTP ๋ž€

HTTP๋Š” ์„œ๋กœ ๋‹ค๋ฅธ ํด๋ผ์ด์–ธํŠธ์™€ ์„œ๋ฒ„ ๊ฐ„ ํ†ต์‹ ์„ ์œ„ํ•œ ๊ธฐ์ดˆ์ ์ธ ํ†ต์‹  ๊ทœ์น™ ์„ธํŠธ ๋˜๋Š” ํ”„๋กœํ† ์ฝœ์ด๋‹ค. 

์‚ฌ์šฉ์ž๊ฐ€ ์›น ์„œ๋น„์Šค์— ์ ‘์†ํ•˜๋ฉด ํด๋ผ์ด์–ธํŠธ๋Š” 80๋ฒˆ ํฌํŠธ๋ฅผ ํ†ตํ•ด ์›น ์„œ๋ฒ„์— HTTP ์š”์ฒญ์„ ๋ณด๋‚ด๊ณ  ์‘๋‹ต์„ ๋ฐ›๋Š”๋‹ค. ์ด๋ ‡๊ฒŒ ํ•จ์œผ๋กœ์จ ๋ฐ์ดํ„ฐ๋ฅผ ์ผ๋ฐ˜ ํ…์ŠคํŠธ๋กœ ๊ตํ™˜ํ•  ์ˆ˜ ์žˆ๋‹ค.

์˜ˆ๋ฅผ ๋“ค์–ด, ์‚ฌ์šฉ์ž๊ฐ€ HTTP์˜ ์š”์ฒญ ์ข…๋ฅ˜์ธ GET์„ ๋ณด๋‚ด๋ฉด ์„œ๋ฒ„๋Š” ๊ทธ์— ๋งž๋Š” ์‘๋‹ต ๋ฐ ์ƒํƒœ ์ฝ”๋“œ๋ฅผ ๋ณด๋‚ธ๋‹ค. ์ƒํƒœ ์ฝ”๋“œ ์˜ˆ์‹œ๋Š” ๋‹ค์Œ๊ณผ ๊ฐ™๋‹ค.

200 - OK(์ •์ƒ)
400 - Bad request(์ž˜๋ชป๋œ ์š”์ฒญ)
404 - Resource not found(๋ฆฌ์†Œ์Šค๋ฅผ ์ฐพ์„ ์ˆ˜ ์—†์Œ)

 

 

HTTP๋Š” TCP/IP ์œ„์—์„œ ์ž‘๋™ํ•˜๋Š” ๋ฌด์ƒํƒœ(stateless) ํ”„๋กœํ† ์ฝœ์ด๋ฉฐ ๋‹ค์Œ๊ณผ ๊ฐ™์€ ๊ตฌ์กฐ๋ฅผ ๊ฐ€์ง„๋‹ค.

์ด๋ฏธ์ง€ ์ถœ์ฒ˜ : https://mangkyu.tistory.com/98

 

ํ•˜์ง€๋งŒ HTTP๋Š” ํ‰๋ฌธ ๋ฐ์ดํ„ฐ๋ฅผ ์ „์†กํ•˜๊ธฐ์— ์ œ 3์ž๊ฐ€ ๊ทธ ๋ฐ์ดํ„ฐ๋ฅผ ์กฐํšŒํ•  ์ˆ˜ ์žˆ๋‹ค๋Š” ๋ณด์•ˆ ์ด์Šˆ๊ฐ€ ์žˆ๋‹ค.

 

 

HTTP REQUEST ๋ฐฉ์‹ ์ข…๋ฅ˜

๋ฐฉ์‹ ๋ชฉ์ 
GET ๋ฆฌ์†Œ์Šค ์กฐํšŒ
POST ์š”์ฒญ ๋ฐ์ดํ„ฐ ์ฒ˜๋ฆฌ
PUT ๋ฆฌ์†Œ์Šค ๋Œ€์ฒด(๋ฎ์–ด ์“ฐ๊ธฐ) , ํ•ด๋‹น ๋ฆฌ์†Œ์Šค๊ฐ€ ์—†์œผ๋ฉด ์ƒ์„ฑ
PATCH ๋ฆฌ์†Œ์Šค ๋ถ€๋ถ„ ๋ณ€๊ฒฝ
DELETE ๋ฆฌ์†Œ์Šค ์‚ญ์ œ

 

HTTP ๋ฒ„์ „ ๋ณ„ ์ฐจ์ด

HTTP/1.0

๊ธฐ๋ณธ์ ์œผ๋กœ ์—ฐ๊ฒฐ์˜ ์ˆ˜๋ช…์ด ์งง์œผ๋ฉฐ HTTP ์š”์ฒญ๋‹น TCP hand-shake๊ฐ€ ๋ฐœ์ƒํ•ด์„œ ๊ฐ๊ฐ ์—ฐ๊ฒฐ์„ ์ฒ˜๋ฆฌํ•œ๋‹ค.

์ด๋กœ ์ธํ•ด ์„œ๋ฒ„์˜ ์˜ค๋ฒ„ํ—ค๋“œ๊ฐ€ ๋ฐœ์ƒํ•˜๊ณ  *RTT๊ฐ€ ๋Š˜์–ด๋‚˜๋Š” ๋ฌธ์ œ๊ฐ€ ์žˆ์—ˆ๋‹ค.

 

RTT(Round Trip Time) : ์–ด๋–ค ๋ฉ”์„ธ์ง€๊ฐ€ ๋‘ ์žฅ์น˜ ์‚ฌ์ด๋ฅผ ์™•๋ณตํ•˜๋Š” ๋ฐ ๊ฑธ๋ฆฐ ์‹œ๊ฐ„

 

HTTP/1.1

1.0 ๋ฒ„์ „์˜ ๋‹จ์ ์„ ๋ณด์™„ํ•œ ํ”„๋กœํ† ์ฝœ์ด๋‹ค. ํฌ๊ฒŒ 3๊ฐ€์ง€์˜ ๊ฐœ์„ ์ ์ด ์žˆ๋‹ค.

 

1. keep alive default

์š”์ฒญํ•  ๋•Œ๋งˆ๋‹ค TCP ์—ฐ๊ฒฐ์„ ํ•˜๋Š” ๊ฒƒ์ด ์•„๋‹Œ keep alive ์˜ต์…˜์„ ๊ธฐ๋ณธ ์˜ต์…˜์„ ํ•จ์œผ๋กœ์จ ๊ณ„์†ํ•ด์„œ ๋ฐ์ดํ„ฐ๋ฅผ ๋ฐ›์„ ์ˆ˜ ์žˆ๋‹ค.

 

2. ํ˜ธ์ŠคํŠธ ํ—ค๋”

1.1 ๋ฒ„์ „๋ถ€ํ„ฐ ์„œ๋ฒ„๋Š” ์—ฌ๋Ÿฌ ๋Œ€์˜ ํ˜ธ์ŠคํŠธ๋ฅผ ๊ฐ€์งˆ ์ˆ˜ ์žˆ์œผ๋ฉฐ ํ•ญ์ƒ ํ˜ธ์ŠคํŠธ๋ฅผ ํ—ค๋”์— ํฌํ•จ์—์„œ ์š”์ฒญ์„ ๋ณด๋‚ด์•ผํ•œ๋‹ค.

 

3. Persistent Connection (๋Œ€์—ญํญ ์ตœ์ ํ™”)

์ง€์ •ํ•œ time out ์‹œ๊ฐ„ ๋‚ด์— ๊ธฐ์กด connection์„ ์žฌ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ๋‹ค. 

๊ธฐ์กด์—๋Š” ํŒŒ์ผ์„ ๋‹ค์šด๋กœ๋“œ ๋ฐ›๋‹ค๊ฐ€ ๋Š๊ธฐ๋ฉด ์ฒ˜์Œ๋ถ€ํ„ฐ ๋ฐ›์•„์•ผํ–ˆ์ง€๋งŒ, 1.1 ๋ฒ„์ „๋ถ€ํ„ฐ ์ด์–ด์„œ ๋‹ค์‹œ ๋‹ค์šด๋กœ๋“œ ๋ฐ›์„ ์ˆ˜ ์žˆ๋‹ค.

 

์ด์™ธ์—๋„ ์š”์ฒญ์„ ์ตœ์†Œํ™”ํ•˜๊ธฐ ์œ„ํ•œ ์—ฌ๋Ÿฌ ๊ธฐ์ˆ ๋“ค์„ ๋„์ž…ํ–ˆ๋‹ค.

 

1. ์ด๋ฏธ์ง€ ์Šคํ”„๋ผ์ดํŠธ

ํ•˜๋‚˜์˜ ์ด๋ฏธ์ง€๋งŒ ๋‹ค์šด๋ฐ›๊ณ  ์—ฌ๋Ÿฌ ๊ฐœ์˜ ์ด๋ฏธ์ง€๋ฅผ ๋‹ค์šด๋ฐ›์€ ๋“ฏํ•œ ํšจ๊ณผ๋ฅผ ๋‚ธ๋‹ค.

 

2. ์ฝ”๋“œ ์••์ถ•

 

3. Base64 ์ธ์ฝ”๋”ฉ

์ด๋ฏธ์ง€ ํŒŒ์ผ์„ 64์ง„๋ฒ•์œผ๋กœ ์ด๋ฃจ์–ด์ง„ ๋ฌธ์ž์—ด๋กœ ์ธ์ฝ”๋”ฉํ•ด์„œ ์ด๋ฏธ์ง€ ์„œ๋ฒ„์— ๋Œ€ํ•œ HTTP ์š”์ฒญ์„ ์ค„์ธ๋‹ค.

ํ•˜์ง€๋งŒ ํŒŒ์ผ ํฌ๊ธฐ๊ฐ€ ๋” ์ปค์ง„๋‹ค๋Š” ๋‹จ์ ์ด ์žˆ๋‹ค.

 

 

HTTP/1.1์˜ ๋ฌธ์ œ์  : HOL

๊ทธ๋Ÿฌ๋‚˜ HTTP/1.1 ์€ HOL(Head Of Line Blocking)์ด๋ผ๋Š” ๊ณ ์งˆ์ ์ธ ๋ฌธ์ œ๊ฐ€ ์žˆ์—ˆ๋‹ค.

HTTP/1.1๋ถ€ํ„ฐ๋Š” ์—ฌ๋Ÿฌ ์š”์ฒญ์„ ๋ณด๋‚ด๊ณ  ์ˆœ์„œ๋Œ€๋กœ ์‘๋‹ต์„ ๋ฐ›๋Š” ํŒŒ์ดํ”„๋ผ์ด๋‹์ด ๊ฐ€๋Šฅํ•ด์กŒ๋Š”๋ฐ ์ด๋กœ ์ธํ•ด ์น˜๋ช…์ ์ธ ๋ฌธ์ œ๊ฐ€ ์ƒ๊ฒผ๋‹ค.

์˜ˆ๋ฅผ ๋“ค์–ด ํŒŒ์ดํ”„๋ผ์ธ์œผ๋กœ ์ธํ•ด 1๋ฒˆ ์š”์ฒญ์— ๋ฌธ์ œ๊ฐ€ ์ƒ๊ธฐ๋ฉด ๊ทธ ๋’ค์— ์š”์ฒญ์ด ์ค„์ค„์ด ์ง€์—ฐ๋˜๋Š” ๊ฒƒ์ด๋‹ค.

RFC ๋ฌธ์„œ ์›์น™์— ๋”ฐ๋ผ ์š”์ฒญ์ด ์˜จ ์ˆœ์„œ๋Œ€๋กœ ์ฒ˜๋ฆฌํ•ด์•ผ ๋˜๊ธฐ ๋•Œ๋ฌธ์— ๋‹ค์Œ๊ณผ ๊ฐ™์€ ๋ฌธ์ œ๊ฐ€ ์ƒ๊ฒผ๋‹ค.

์ด๋ฏธ์ง€ ์ถœ์ฒ˜ : https://withbundo.blogspot.com/2021/02/httphol-head-of-line-blocking.html

 

 

 

HTTP/2.0

 

๋ฐ”์ด๋„ˆ๋ฆฌ ํฌ๋งท ๊ณ„์ธต

๋” ์ž‘์€ ํ”„๋ ˆ์ž„์œผ๋กœ ๋ฉ”์„ธ์ง€๋ฅผ ์ „์†กํ•˜๊ธฐ ์œ„ํ•ด ์–ดํ”Œ๋ฆฌ์ผ€์ด์…˜๊ณผ ํ†ต์‹  ๊ณ„์ธต ์‚ฌ์ด์— ๋ฐ”์ด๋„ˆ๋ฆฌ ํฌ๋งท ๊ณ„์ธต์„ ์ถ”๊ฐ€ํ•˜์˜€๋‹ค. 

 

 

๋ฉ€ํ‹ฐ ํ”Œ๋ ‰์‹ฑ

๋‹จ์ผ TCP ์—ฐ๊ฒฐ์—์„œ ์ŠคํŠธ๋ฆผ์„ ํ†ตํ•ด ์—ฌ๋Ÿฌ HTTP ์š”์ฒญ๊ณผ ์‘๋‹ต์„ ๋น„๋™๊ธฐ์ ์œผ๋กœ ๋ฐ›์„ ์ˆ˜ ์žˆ๋‹ค.

๊ธฐ์กด์—๋Š” ๋‹ค์ค‘ TCP ์—ฐ๊ฒฐ์„ ํ†ตํ•ด์„œ๋งŒ ๋ณ‘๋ ฌ ์š”์ฒญ์ด ๊ฐ€๋Šฅํ–ˆ์ง€๋งŒ HTTP/2.0 ๋ถ€ํ„ฐ๋Š” ๋ฆฌ์†Œ์Šค๋ฅผ ์ž‘์€ ํ”„๋ ˆ์ž„์œผ๋กœ ๋‚˜๋ˆ„๊ณ  ์ŠคํŠธ๋ฆผ์œผ๋กœ ํ”„๋ ˆ์ž„์„ ๋ณ‘๋ ฌ์ ์œผ๋กœ ์ „๋‹ฌํ•œ๋‹ค. ์ด๋ฅผ ํ†ตํ•ด HTTP/1.1์˜ ๋ฌธ์ œ์ธ HOL์„ ํ•ด๊ฒฐํ•  ์ˆ˜ ์žˆ๋‹ค.

 

๋˜ํ•œ ๊ฐ๊ฐ์˜ ํ”„๋ ˆ์ž„์€ ์ŠคํŠธ๋ฆผ id๊ฐ€ ์žˆ๊ธฐ ๋•Œ๋ฌธ์— ์‘๋‹ต ์ˆœ์„œ์™€ ์ƒ๊ด€์—†์ด ๋ฐ์ดํ„ฐ๋ฅผ ์กฐ๋ฆฝํ•  ์ˆ˜ ์žˆ๋‹ค.

 

 

์„œ๋ฒ„ ํ‘ธ์‹œ

ํด๋ผ์ด์–ธํŠธ์˜ ๋ณ„๋„ ์š”์ฒญ์ด ์—†๋”๋ผ๋„ ์„œ๋ฒ„๊ฐ€ ํ•„์š”ํ•  ๊ฒƒ ๊ฐ™์€ ๋ฐ์ดํ„ฐ๋ฅผ ๋ฏธ๋ฆฌ ์‘๋‹ต์— ๊ฐ™์ด ๋ณด๋‚ผ ์ˆ˜ ์žˆ๋‹ค.

 

ํ—ค๋” ์••์ถ•

๋ฌด๊ฑฐ์šด ํ—ค๋”๋ฅผ ์ตœ์†Œํ™”ํ•˜๊ธฐ ์œ„ํ•ด ์ค‘๋ณต๋œ ํ—ค๋”๋Š” ํ•œ๋ฒˆ๋งŒ ๋ณด๋‚ด๊ณ  ์ค‘๋ณต๋˜์ง€ ์•Š์€ ๊ฐ’์€ *ํ—ˆํ”„๋งŒ ์ธ์ฝ”๋”ฉ์„ ํ†ตํ•ด ์••์ถ•์‹œํ‚จ๋‹ค.

 

ํ—ˆํ”„๋งŒ ์ธ์ฝ”๋”ฉ: ๋ฌธ์ž์—ด์„ ๋ฌธ์ž ๋‹จ์œ„๋กœ ์ชผ๊ฐœ์„œ ๋นˆ๋„๊ฐ€ ๋†’์€ ์ •๋ณด๋Š” ์ ์€ ๋น„ํŠธ์ˆ˜๋ฅผ ์‚ฌ์šฉํ•˜๊ณ , ๋นˆ๋„๊ฐ€ ๋‚ฎ์€ ์ •๋ณด๋Š” ๋น„ํŠธ์ˆ˜๋ฅผ ๋งŽ์ด ์‚ฌ์šฉํ•œ๋‹ค.

 

์šฐ์„  ์ˆœ์œ„

์„œ๋ฒ„์—์„œ ์›ํ•˜๋Š” ์ˆœ์„œ๋Œ€๋กœ ์šฐ์„ ์ˆœ์œ„๋ฅผ ์ •ํ•ด์„œ ๋ฆฌ์†Œ์Šค๋ฅผ ์ „๋‹ฌํ•  ์ˆ˜ ์žˆ๋‹ค.

 

HTTP/3.0

TCP ์—ฐ๊ฒฐ๋กœ ์ธํ•œ ์˜ค๋ฒ„ํ—ค๋“œ ๋ฐ RTT ์‹œ๊ฐ„ ์ฆ๊ฐ€์˜ ๋ฌธ์ œ์ ์„ ํ•ด๊ฒฐํ•œ ๋ฒ„์ „์ด๋‹ค.

์ด ๋ฒ„์ „๋ถ€ํ„ฐ UDP ํ”„๋กœํ† ์ฝœ ๊ธฐ๋ฐ˜์˜ QUIC(Quick UDP Internet Connections)๋กœ ๋™์ž‘ํ•˜๋ฉฐ ์ด์ „ ๋ฒ„์ „๋“ค์˜ ์žฅ์ , ํŠน์ง•๋“ค์€ ๋Œ€๋ถ€๋ถ„ ๊ฐ€์ง€๊ณ  ์žˆ๋‹ค.

 

๋˜ํ•œ QUIC๋Š” TLS๋กœ ์•”ํ˜ธํ™” ํ†ต์‹ ์„ ๊ตฌ์ถ•ํ•  ๋•Œ hand shake๋ฅผ ํ†ตํ•ด ์„œ๋ฒ„์™€์˜ ์—ฐ๊ฒฐ๊นŒ์ง€ ์ง„ํ–‰ํ•จ์œผ๋กœ์จ 1-RTT๋งŒ์— ์—ฐ๊ฒฐ์„ ์ˆ˜๋ฆฝํ•  ์ˆ˜ ์žˆ๋‹ค.

๊ธฐ์กด UDP๋Š” ๋ฐ์ดํ„ฐ์˜ ๋ฌด๊ฒฐ์„ฑ์„ ๋ณด์žฅํ•˜์ง€ ๋ชปํ•˜๋Š” ํ”„๋กœํ† ์ฝœ์ด์—ˆ์ง€๋งŒ, QUIC๋Š” ์—๋Ÿฌ๋ฅผ ๊ฒ€์ถœํ•˜๊ณ  ์ˆ˜์ •ํ•  ์ˆ˜ ์žˆ๋Š” ์ˆœ๋ฐฉํ–ฅ ์˜ค๋ฅ˜ ์ œ์–ด ๋ฉ”์ปค๋‹ˆ์ฆ˜์„ ๊ฐ€์ง€๊ณ  ์žˆ๋‹ค.

 

HTTPS์™€์˜ ์ฐจ์ด์ 

HTTP์˜ ๋ณด์•ˆ์ ์ธ ํ•œ๊ณ„๋ฅผ SSL/TLS๋ฅผ ์‚ฌ์šฉํ•จ์œผ๋กœ์จ ํ•ด๊ฒฐํ•œ ๊ฒƒ์ด HTTPS์ด๋‹ค.

SSL์€ ์„œ๋ฒ„์™€ ํด๋ผ์ด์–ธํŠธ ์‚ฌ์ด์— ์•”ํ˜ธํ™” ๋œ ์—ฐ๊ฒฐ์„ ๋งŒ๋“ค์–ด์ฃผ๊ณ  ๋ฐ์ดํ„ฐ๋“ค์ด ๋„๋‚œ๋˜๋Š” ๊ฒƒ์„ ๋ฐฉ์ง€ํ•œ๋‹ค.

 

SSL ์ธ์ฆ์„œ๋Š” ํด๋ผ์ด์–ธํŠธ์™€ ์„œ๋ฒ„ ๊ฐ„ ์ฃผ๊ณ ๋ฐ›๋Š” ๋ฐ์ดํ„ฐ๋“ค์„ ์•”ํ˜ธํ™”ํ•œ๋‹ค. ๊ทธ๋ ‡๊ธฐ ๋•Œ๋ฌธ์— ๋ฐ์ดํ„ฐ๊ฐ€ ํƒˆ์ทจ๋œ๋‹ค ํ•˜๋”๋ผ๋„ ์•”ํ˜ธํ™” ๋œ ์ƒํƒœ์ด๊ธฐ ๋•Œ๋ฌธ์— ์ œ 3์ž๋Š” ์•Œ ์ˆ˜ ์—†๋‹ค.

๋˜ํ•œ SSL ์™ธ์—๋„ TLS ํ”„๋กœํ† ์ฝœ์„ ํ†ตํ•ด์„œ๋„ ๋ฐ์ดํ„ฐ ๋ฌด๊ฒฐ์„ฑ์„ ์ œ๊ณตํ•จ์œผ๋กœ์จ ๋ณด์•ˆ์„ ๊ฐ•ํ™”ํ•œ๋‹ค.

 

HTTPS๋Š” ๋ณด์•ˆ ์ƒ์˜ ์ด์ ๋„ ์žˆ์ง€๋งŒ ๊ตฌ๊ธ€์ด ์•ˆ์ „ํ•˜๋‹ค๊ณ  ์‹ ๋ขฐํ•˜๋Š” ์‚ฌ์ดํŠธ๋ผ๋Š” ๋ฐ˜์ฆ์ด๊ธฐ ๋•Œ๋ฌธ์— ๊ฒ€์ƒ‰์—”์ง„ ์ตœ์ ํ™”(SEO)์ธก๋ฉด์—์„œ๋„ ๋งŽ์€ ์ด์ ์„ ์–ป์„ ์ˆ˜ ์žˆ๋‹ค.

 

HTTPS์˜ ๋™์ž‘ ๋ฐฉ์‹

HTTPS์˜ ๊ฐ€์žฅ ํฐ ํŠน์ง•์€ ์•”ํ˜ธํ™”๋ฅผ ํ•œ๋‹ค๋Š” ์ ์ธ๋ฐ ์•”ํ˜ธํ™” ๋ฐฉ์‹์€ ํฌ๊ฒŒ ๋‘๊ฐ€์ง€๋กœ ๋ถ„๋ฅ˜๋œ๋‹ค.

์•”ํ˜ธํ™”๋ฅผ ํ†ตํ•ด ์˜๋„๋œ ์†ก์ˆ˜์‹ ์ž๋ฅผ ์ œ์™ธํ•˜๊ณ ๋Š” ๋ฐ์ดํ„ฐ ์œ ์ถœ์„ ๋ฐฉ์ง€ํ•˜๊ณ  ๋ฐ์ดํ„ฐ์˜ ๋ฌด๊ฒฐ์„ฑ์„ ๋ณด์žฅํ•œ๋‹ค.

 

๋Œ€์นญํ‚ค ์•”ํ˜ธํ™”

ํด๋ผ์ด์–ธํŠธ์™€ ์„œ๋ฒ„๊ฐ€ ๋™์ผํ•œ ํ‚ค๋ฅผ ํ•˜๋‚˜๋งŒ ์‚ฌ์šฉํ•ด์„œ ์•”ํ˜ธํ™”ํ•œ๋‹ค.

ํ‚ค๊ฐ€ ๋…ธ์ถœ๋  ์œ„ํ—˜์ด ์žˆ์ง€๋งŒ ์—ฐ์‚ฐ ์†๋„๊ฐ€ ๋น ๋ฅด๋‹ค๋Š” ์žฅ์ ์ด ์žˆ๋‹ค.

ex)

Plaintext + key = ciphertext: hello + 2jd8932kd8 = X5xJCSycg14=

Ciphertext + key = plaintext: X5xJCSycg14= + 2jd8932kd8 = hello

-> ๋งŒ์•ฝ ๋ฐ์ดํ„ฐ๋ฅผ ์ „์†กํ•˜๋Š” ๊ณผ์ •์—์„œ key๋ฅผ ํƒˆ์ทจ๋‹นํ•˜๋ฉด ์ œ 3์ž๊ฐ€ ๋ฐ์ดํ„ฐ๋ฅผ ๋ณผ ์ˆ˜ ์žˆ๋‹ค.

 

๋น„๋Œ€์นญํ‚ค ์•”ํ˜ธํ™”

๋‘ ๊ฐœ์˜ ๋‹ค๋ฅธ ํ‚ค๋กœ ๋ฐ์ดํ„ฐ๋ฅผ ์•”ํ˜ธํ™”ํ•˜๊ฑฐ๋‚˜ ๋ณตํ˜ธํ™”ํ•˜๊ณ  ๊ณต๊ฐœํ‚ค๋Š” ๋ˆ„๊ตฌ๋‚˜ ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ๋‹ค.

์˜ˆ๋ฅผ ๋“ค์–ด ๊ณต๊ฐœํ‚ค๋กœ ์•”ํ˜ธํ™”๋œ ๋ฐ์ดํ„ฐ๋Š” ๊ฐœ์ธํ‚ค๋กœ๋งŒ ๋ณตํ˜ธํ™”๊ฐ€ ๊ฐ€๋Šฅํ•˜๋‹ค.

์•”ํ˜ธํ™”๋ฅผ ๊ฐœ์ธํ‚ค๋กœ ํ• ๊ฒƒ์ธ์ง€ ๊ณต๊ฐœํ‚ค๋กœ ํ•  ๊ฒƒ์ธ์ง€์— ๋”ฐ๋ผ ์–ป๋Š” ํšจ๊ณผ๊ฐ€ ๋‹ฌ๋ผ์ง„๋‹ค.

 

๊ณต๊ฐœํ‚ค ์•”ํ˜ธํ™”: ๊ฐœ์ธํ‚ค๋กœ๋งŒ ๋ณตํ˜ธํ™”ํ•  ์ˆ˜ ์žˆ์œผ๋ฏ€๋กœ ํ•ด๋‹น ๋ฐ์ดํ„ฐ๋Š” ์ž์‹ ๋งŒ ํ™•์ธ ๊ฐ€๋Šฅํ•˜๋‹ค.

๋Œ€์นญํ‚ค ์•”ํ˜ธํ™” ๋ฐฉ์‹์€ ๋ฐ์ดํ„ฐ ์ „์†ก ๊ณผ์ •์—์„œ ํ‚ค๊ฐ€ ํƒˆ์ทจ๋  ์œ„ํ—˜์ด ์žˆ์—ˆ์ง€๋งŒ ๊ณต๊ฐœํ‚ค ์•”ํ˜ธํ™” ๋ฐฉ์‹์€ ๊ณต๊ฐœํ‚ค๊ฐ€ ํƒˆ์ทจ๋˜๋„ ์ƒ๊ด€์ด ์—†๋‹ค.

์ˆ˜์‹ ์ธก์—์„œ๋Š” ๊ณต๊ฐœํ‚ค๋กœ ์•”ํ˜ธํ™” ํ•œ ๋‹ค์Œ์— ๋‹ค์‹œ ๊ฐœ์ธํ‚ค๋กœ ๋ณตํ˜ธํ™”ํ•ด์„œ ๋ฐ์ดํ„ฐ๋ฅผ ํ™•์ธํ•  ์ˆ˜ ์žˆ๋‹ค.

์ œ3์ž๋Š” ๊ฐœ์ธํ‚ค๋ฅผ ๊ฐ€์ง€๊ณ  ์žˆ์ง€ ์•Š๊ธฐ ๋•Œ๋ฌธ์— ๊ณต๊ฐœํ‚ค๋กœ ์•”ํ˜ธํ™”๋œ ๋ฐ์ดํ„ฐ๋ฅผ ํƒˆ์ทจํ•˜๋”๋ผ๋„ ๋ฐ์ดํ„ฐ๋ฅผ ํ™•์ธํ•  ์ˆ˜ ์—†๋‹ค.

 

๊ฐœ์ธํ‚ค ์•”ํ˜ธํ™”: ๋ชจ๋‘์—๊ฒŒ ๊ณต๊ฐœ๋œ ๊ณต๊ฐœํ‚ค๋กœ ๋ณตํ˜ธํ™”ํ•˜๋ฏ€๋กœ ์ธ์ฆ๋œ ์ •๋ณด์ž„์„ ์‹ ๋ขฐํ•  ์ˆ˜ ์žˆ๋‹ค.

A๋Š” ์›๋ณธ ๋ฐ์ดํ„ฐ์™€ ๊ฐœ์ธํ‚ค๋กœ ์•”ํ˜ธํ™”๋œ ๋ฐ์ดํ„ฐ๋ฅผ ์ „์†กํ•œ๋‹ค. ๊ทธ๋Ÿฌ๋ฉด B์—์„œ๋Š” ๊ณต๊ฐœํ‚ค๋ฅผ ํ†ตํ•ด ์•”ํ˜ธํ™”๋œ ๋ฐ์ดํ„ฐ๋ฅผ ๋ณตํ˜ธํ™”ํ•˜๊ณ  ํ•ด๋‹น ๋ฐ์ดํ„ฐ๊ฐ€ ์›๋ณธ ๋ฐ์ดํ„ฐ์™€ ์ผ์น˜ํ•˜๋ฉด ์‹ ๋ขฐํ•  ์ˆ˜ ์žˆ๋Š” ์ •๋ณด์ž„์„ ์ธ์ฆํ•  ์ˆ˜ ์žˆ๋‹ค.

ํ•˜์ง€๋งŒ ๊ณต๊ฐœํ‚ค๋กœ ๋ณตํ˜ธํ™”๋ฅผ ํ•˜์˜€์„ ๋•Œ ์›๋ณธ ๋ฐ์ดํ„ฐ์™€ ๋‹ค๋ฅด๋‹ค๋ฉด ํ•ด๋‹น ๋ฐ์ดํ„ฐ๋Š” A๊ฐ€ ์•„๋‹Œ ์ œ3์ž๊ฐ€ ์•”ํ˜ธํ™”ํ•œ ๋ฐ์ดํ„ฐ์ด๋ฏ€๋กœ ์‹ ๋ขฐํ•  ์ˆ˜ ์—†๋‹ค.

 

TLS Hand Shaking

SSL์€ SSL 1.0 ๋ถ€ํ„ฐ ์‹œ์ž‘ํ•ด์„œ ๋ช…์นญ์ด ๋ฐ”๋€Œ์–ด TLS 1.3 ๋ฒ„์ „์— ์ด๋ฅด๋ €๋‹ค.

TLS๋Š” ์ „์†ก ๊ณ„์ธต์—์„œ ์ œ 3์ž๊ฐ€ ๋ฉ”์„ธ์ง€๋ฅผ ๋„์ฒญํ•˜๊ฑฐ๋‚˜ ๋ณ€์กฐํ•˜์ง€ ๋ชปํ•˜๊ฒŒ ๋ณด์•ˆ์„ ์ œ๊ณตํ•˜๋Š” ํ”„๋กœํ† ์ฝœ์ด๋‹ค.

 

์ด ๊ณผ์ •์—์„œ ๋น„๋Œ€์นญํ‚ค ์•”ํ˜ธํ™”์™€ ๋Œ€์นญํ‚ค ์•”ํ˜ธํ™”๋ฅผ ๋ชจ๋‘ ์‚ฌ์šฉํ•˜์—ฌ์„œ ๋น ๋ฅธ ์—ฐ์‚ฐ ์†๋„์™€ ์•ˆ์ •์„ฑ์„ ์ œ๊ณตํ•œ๋‹ค.

๋จผ์ € ์ฒ˜์Œ ์—ฐ๊ฒฐ์ด ์ง„ํ–‰๋ ๋•Œ๋Š” ์•ˆ์ „ํ•œ ์—ฐ๊ฒฐ์„ ์œ„ํ•ด ์†๋„๊ฐ€ ๋‹ค์†Œ ๋Š๋ฆฐ ๋น„๋Œ€์นญํ‚ค ์•”ํ˜ธํ™”๋ฅผ ์‚ฌ์šฉํ•˜๊ณ , ์ดํ›„์—๋Š” ๋น ๋ฅธ ํ†ต์‹ ์„ ์œ„ํ•ด์„œ ๋Œ€์นญํ‚ค๋ฅผ ์‚ฌ์šฉํ•œ๋‹ค.

 

 

Client : Client Hello

ํŒจํ‚ท์— TLS Version, Client๊ฐ€ ์ง€์›ํ•˜๋Š” ์•”ํ˜ธํ™” ๋ฐฉ์‹(์‚ฌ์ดํผ์ŠˆํŠธ), Client Random Data(ํด๋ผ์ด์–ธํŠธ์—์„œ ์ƒ์„ฑํ•œ ๋‚œ์ˆ˜๋กœ ๋Œ€์นญํ‚ค๋ฅผ ๋งŒ๋“ค ๋•Œ ์‚ฌ์šฉ), ์ž„์‹œ *DH๋ณ€์ˆ˜, SNI(์„œ๋ฒ„๋ช…) ๋ฅผ ๋‹ด์•„์„œ ๋ณด๋‚ธ๋‹ค.

 

DH ๋งค๊ฐœ๋ณ€์ˆ˜ : DH๋Š” Die-Hellman์„ ์˜๋ฏธํ•˜๋ฉฐ Die-Hellman ์•Œ๊ณ ๋ฆฌ์ฆ˜์€ ์„œ๋กœ ๊ณต๊ฐœ๊ฐ’ ๊ณต์œ ,๋น„๋ฐ€๊ฐ’๊ณผ ํ˜ผํ•ฉ, ํ˜ผํ•ฉ๊ฐ’๊ณผ ๊ณต์œ , ๊ฐ์ž์˜ ๋น„๋ฐ€๊ฐ’๊ณผ ํ˜ผํ•ฉํ•ด์„œ ๊ณตํ†ต์˜ ์•”ํ˜ธํ‚ค๋ฅผ ๋งŒ๋“œ๋Š” ์•Œ๊ณ ๋ฆฌ์ฆ˜์ด๋‹ค. ๋ชจ๋“  TLS ํ†ต์‹ ์ด DH ๋งค๊ฐœ๋ณ€์ˆ˜๋ฅผ ์‚ฌ์šฉํ•˜์ง€๋Š” ์•Š์Œ

 

Server Hello, EncryptedExtensions, Certificate, CertificateVerify

์„œ๋ฒ„๋Š” ํด๋ผ์ด์–ธํŠธ๋กœ๋ถ€ํ„ฐ ๋ฐ›์€ ์˜ต์…˜์„ ํ™•์ธํ•˜๊ณ  ๊ณต๊ฐœํ‚ค๊ฐ€ ํฌํ•จ๋œ ์ธ์ฆ์„œ์™€, ์„œ๋ฒ„๋žœ๋ค๊ฐ’, DH ๋งค๊ฐœ๋ณ€์ˆ˜๋ฅผ ๋ธŒ๋ผ์šฐ์ €์— ๋ณด๋‚ธ๋‹ค.

 

Client : Client Key Exchange

ํด๋ผ์ด์–ธํŠธ๊ฐ€ ์„œ๋ฒ„๋กœ๋ถ€ํ„ฐ ๋ฐ›์€ DH๋งค๊ฐœ๋ณ€์ˆ˜(ํ˜น์€ ๊ณต๊ฐœํ‚ค)๋ฅผ ์ด์šฉํ•˜์—ฌ ์„ธ์…˜ํ‚ค๋ฅผ ์ƒ์„ฑํ•œ๋‹ค.

์ด๋ ‡๊ฒŒ ์ƒ์„ฑ๋œ ์„ธ์…˜ํ‚ค๋ฅผ ๋‹ค์‹œ ๊ณต๊ฐœํ‚ค๋กœ ์•”ํ˜ธํ™”ํ•ด์„œ ์„œ๋ฒ„์— ๋ณด๋‚ด๋ฉด, ์„œ๋ฒ„๋Š” ๊ฐœ์ธํ‚ค๋กœ ๋ณตํ˜ธํ™”๋ฅผ ํ•  ์ˆ˜ ์žˆ๋‹ค.

 

Server & Client : Finished

ํด๋ผ์ด์–ธํŠธ์™€ ์„œ๋ฒ„์˜ ์„ธ์…˜ํ‚ค๋ฅผ ๊ธฐ๋ฐ˜์œผ๋กœํ•œ ๋Œ€์นญ ์•”ํ˜ธํ™”๋œ ํ†ต์‹ ์ด ์‹œ์ž‘๋œ๋‹ค.

 

๋งŒ์•ฝ ์„ธ์…˜ํ‚ค๊ฐ€ ์ƒ์„ฑ๋œ ์ดํ›„ ๋‹ค์‹œ ๊ทธ ์‚ฌ์ดํŠธ์— ๋ฐฉ๋ฌธํ•œ๋‹ค๋ฉด, ๋ฏธ๋ฆฌ ๋งŒ๋“ค์–ด๋†“์€ ์„ธ์…˜ํ‚ค๋กœ ํ†ต์‹ ํ•˜๊ธฐ ๋•Œ๋ฌธ์— ์ธ์ฆ์— ๋“œ๋Š” ๋น„์šฉ์€ ์—†๋‹ค.