๋ณธ๋ฌธ ๋ฐ”๋กœ๊ฐ€๊ธฐ

๐ŸŽ iOS/iOS Application

[iOS, Network] Wireshark๋กœ ๋„คํŠธ์›Œํฌ ํŒจํ‚ท ๋ถ„์„ํ•˜๊ธฐ(3) - Wireshark๋กœ SSL Handshake(TLS Handshake) ๊ณผ์ • ๋ถ„์„

728x90

 SSL Handshake(TLS Handshake)

 
 

SSL handshake๋Š” HTTP์— ์ ‘์†ํ•˜๋Š” ๊ณผ์ •์œผ๋กœ 3 way handshake ๊ฐ€ ๋๋‚œ ๋’ค์— ์ด๋ฃจ์–ด์ง€๋Š” ๊ณผ์ •์ด๋‹ค.

ํ†ต์‹ ๊ณผ์ •์—์„œ ์†ก์‹ ์ž์™€ ์ˆ˜์‹ ์ž๊ฐ€ ์•”ํ˜ธํ™” ํ†ต์‹ ์„ ์œ„ํ•œ ๋ฐฉ๋ฒ•๊ณผ ์ˆ˜๋‹จ์— ๋Œ€ํ•ด ๊ณต์œ ํ•œ๋‹ค.

์ฆ‰, ์•”ํ˜ธํ™”๋œ ๋ฐ์ดํ„ฐ๋ฅผ ๊ตํ™˜ํ•˜๊ธฐ ์œ„ํ•œ Client์™€ Server์˜ ํ˜‘์ƒ ๊ณผ์ •.

ํ˜‘์ƒ ๊ณผ์ •์—์„œ๋Š” SSL ์ธ์ฆ์„œ ์ „๋‹ฌ, ๋Œ€์นญํ‚ค(๋น„๋ฐ€ํ‚ค) ์ „๋‹ฌ, ์•”ํ˜ธํ™” ์•Œ๊ณ ๋ฆฌ์ฆ˜ ๊ฒฐ์ •, SSL/TLS ํ”„๋กœํ† ์ฝœ ๊ฒฐ์ • ๋“ฑ์ด ํฌํ•จ.


(1) Client Hello (ํด๋ผ์ด์–ธํŠธ -> ์„œ๋ฒ„)

: ์•”ํ˜ธํ™” ์•Œ๊ณ ๋ฆฌ์ฆ˜ ๋‚˜์—ด ๋ฐ ์ „๋‹ฌ

ํด๋ผ์ด์–ธํŠธ๋Š” ํ†ต์‹ ํ•˜๊ณ ์ž ํ•˜๋Š” TLS ๋ฒ„์ „, ์ž์‹ ์ด ์ง€์›ํ•˜๋Š” cipher ๋ฆฌ์ŠคํŠธ, ํด๋ผ์ด์–ธํŠธ๊ฐ€ ์ƒ์„ฑํ•œ ๋‚œ์ˆ˜ ์ •๋ณด๋ฅผ ๋ณด๋‚ธ๋‹ค.

Cipher Suite์˜ ์•Œ๊ณ ๋ฆฌ์ฆ˜์— ๋”ฐ๋ผ ๋ฐ์ดํ„ฐ๋ฅผ ์•”ํ˜ธํ™”ํ•˜๊ฒŒ ๋œ๋‹ค.

ํด๋ผ์ด์–ธํŠธ๊ฐ€ ์‚ฌ์šฉ ๊ฐ€๋Šฅํ•œ Cipher Suite์„ Server์—๊ฒŒ ์ œ๊ณตํ•˜๋Š” ๋ชฉ๋ก์„ ํ™•์ธ ๊ฐ€๋Šฅ


(2) Server Hello (์„œ๋ฒ„ -> ํด๋ผ์ด์–ธํŠธ)

: ์•”ํ˜ธํ™” ์•Œ๊ณ ๋ฆฌ์ฆ˜ ์„ ํƒ

์„œ๋ฒ„๋Š” ์ž์‹ ์˜ SSL๋ฒ„์ „, ์ž์‹ ์ด ๋งŒ๋“  ์ž„์˜์˜ ๋‚œ์ˆ˜์™€ ํด๋ผ์ด์–ธํŠธ์˜ Cipher ๋ฆฌ์ŠคํŠธ(Cipher Suite) ์ค‘ ํ•˜๋‚˜์˜ ์„ ํƒํ•˜์—ฌ ๊ทธ ์ •๋ณด๋ฅผ ํด๋ผ์ด์–ธํŠธ์—๊ฒŒ ๋ณด๋‚ธ๋‹ค.


(3) Certificate(์„œ๋ฒ„ -> ํด๋ผ์ด์–ธํŠธ)

: ์ธ์ฆ์„œ ์ „๋‹ฌ

์„œ๋ฒ„๋Š” ์ž์‹ ์ด ๊ฐ–๊ณ  ์žˆ๋Š” ์ธ์ฆ์„œ ์ •๋ณด(SSL์ธ์ฆ์„œ)๋ฅผ ํด๋ผ์ด์–ธํŠธ์—๊ฒŒ ์ „์†ก

์ธ์ฆ์„œ ๋‚ด๋ถ€์—๋Š” ์„œ๋ฒ„๊ฐ€ ๋ฐœํ–‰ํ•œ ๊ณต๊ฐœํ‚ค๊ฐ€ ๋“ค์–ด์žˆ๋‹ค.

๊ณต๊ฐœํ‚ค๋กœ ๋ณตํ˜ธํ™”์— ์„ฑ๊ณตํ•˜๋ฉด ์ธ์ฆ์„œ๊ฐ€ ์ง„์งœ์ž„์ด ์ฆ๋ช…๋จ! ์ฆ‰, ์ธ์ฆ์„œ ๊ฒ€์ฆ ๋‹จ๊ณ„


(4) Server key Exchange, Server Hello Done (์„œ๋ฒ„ -> ํด๋ผ์ด์–ธํŠธ)

Server key Exchange : ์„œ๋ฒ„์˜ ๊ณต๊ฐœํ‚ค๊ฐ€ SSL์ธ์ฆ์„œ ๋‚ด๋ถ€์— ์—†๋Š” ๊ฒฝ์šฐ, ์„œ๋ฒ„๊ฐ€ ์ง์ ‘ ์ „๋‹ฌํ–ˆ๋‹ค๋Š” ๋‚ด์šฉ.

์•„๋ž˜์˜ ๊ฒฝ์šฐ Diffie-Hellman ์•Œ๊ณ ๋ฆฌ์ฆ˜์œผ๋กœ ํ‚ค ๊ตํ™˜ ์žฌ๋ฃŒ๋ฅผ ์„œ๋กœ ๊ตํ™˜ํ•˜๋ฏ€๋กœ Server key Exchange ๋ฐœ์ƒํ•จ

ํด๋ผ์ด์–ธํŠธ๋Š” ๋ฐ์ดํ„ฐ ์•”ํ˜ธํ™”์— ์‚ฌ์šฉํ•  ๋Œ€์นญํ‚ค(๋น„๋ฐ€ํ‚ค)๋ฅผ ์ƒ์„ฑํ•œ ํ›„ SSL ์ธ์ฆ์„œ ๋‚ด๋ถ€์— ๋“ค์–ด ์žˆ๋˜ ๊ณต๊ฐœํ‚ค๋ฅผ ์ด์šฉํ•ด ์•”ํ˜ธํ™”ํ•˜์—ฌ ์„œ๋ฒ„์—๊ฒŒ ์ „์†กํ•ด์•ผ ํ•œ๋‹ค.

์ด๋•Œ, SSL ์ธ์ฆ์„œ๊ฐ€ ํ•ด์‹œ ์•Œ๊ณ ๋ฆฌ์ฆ˜์œผ๋กœ SHA512๋กœ ์„œ๋ช…๋˜์—ˆ์Œ์„ ํ™•์ธ ๊ฐ€๋Šฅ


(5) Client Key Exchange, Change Cipher Spec

: ๋ฐ์ดํ„ฐ๋ฅผ ์•”ํ˜ธํ™”ํ•  ๋Œ€์นญํ‚ค ์ „๋‹ฌ, SSL Handshake ์ข…๋ฃŒ

Client Key Exchange(ํด๋ผ์ด์–ธํŠธ -> ์„œ๋ฒ„)

๋Œ€์นญํ‚ค(๋น„๋ฐ€ํ‚ค, ๋ฐ์ดํ„ฐ๋ฅผ ์‹ค์ œ๋กœ ์•”ํ˜ธํ™”ํ•˜๋Š” ํ‚ค)๋ฅผ ํด๋ผ์ด์–ธํŠธ๊ฐ€ ์ƒ์„ฑํ•˜์—ฌ

SSL์ธ์ฆ์„œ ๋‚ด๋ถ€์—์„œ ์ถ”์ถœํ•œ Server์˜ ๊ณต๊ฐœํ‚ค๋ฅผ ์ด์šฉํ•ด ์•”ํ˜ธํ™” ํ›„ ์„œ๋ฒ„์—๊ฒŒ ์ „๋‹ฌ.

์—ฌ๊ธฐ์„œ ์ „๋‹ฌ๋œ '๋Œ€์นญํ‚ค'๊ฐ€ ๋ฐ”๋กœ SSL Handshake์˜ ๋ชฉ์ ์ด์ž ๊ฐ€์žฅ ์ค‘์š”ํ•œ ์ˆ˜๋‹จ์ธ ๋ฐ์ดํ„ฐ๋ฅผ ์‹ค์ œ๋กœ ์•”ํ˜ธํ™”ํ•  ๋Œ€์นญํ‚ค(๋น„๋ฐ€ํ‚ค)์ด๋‹ค.

Change Cipher Spec(ํด๋ผ์ด์–ธํŠธ -> ์„œ๋ฒ„, ์„œ๋ฒ„ -> ํด๋ผ์ด์–ธํŠธ) / finished

ํด๋ผ์ด์–ธํŠธ, ์„œ๋ฒ„ ๋ชจ๋‘๊ฐ€ ์„œ๋กœ์—๊ฒŒ ๋ณด๋‚ด๋Š” Packet์œผ๋กœ ๊ตํ™˜ํ•  ์ •๋ณด๋ฅผ ๋ชจ๋‘ ๊ตํ™˜ํ•œ ๋’ค ํ†ต์‹ ํ•  ์ค€๋น„๊ฐ€ ๋‹ค ๋˜์—ˆ์Œ์„ ์•Œ๋ฆฌ๋Š” ํŒจํ‚ท.

 

๋ฐ˜์‘ํ˜•