- TLS ํ๋กํ ์ฝ์ ์ํธํ ํต์ ์ด๋ค.
์ด ๋ ์๋ฒ์ ํด๋ผ์ด์ธํธ ๊ฐ์ ํค์ ๋ํ ํฉ์๊ฐ ์ด๋ฃจ์ด ์ ธ์ผ ํ๋๋ฐ ์ด ๋ PRF๋ฅผ ํตํด ํค๋ฅผ ์์ฑํ๋ค.
ํ์ฌ ์ค๋ช ์ ECDH ๋ฅผ ํตํ ํค ์์ฑ์ ๋ํ ๋ด์ฉ์ด๋ค. - ์ฐธ๊ณ ๋ก ์๋ ์ค๋ช ํ๋ ๋ด์ฉ์ RFC5246 ์ ๋ด์ฉ์ ๋ถ์ํ ๊ฒ์ด๋ค.
P_hash(secret, seed) = HMAC_hash(secret, A(1) + seed) +
HMAC_hash(secret, A(2) + seed) +
HMAC_hash(secret, A(3) + seed) + ...
A() is defined as:
A(0) = seed
A(i) = HMAC_hash(secret, A(i-1))
PRF(secret, label, seed) = P_<hash>(secret, label + seed)
๊ฐ๋จํ ๋งํ๋ฉด seed ๊ฐ์ ์
๋ ฅ์ผ๋ก hmac ๊ฐ์ ๊ตฌํ A(1)์ด ๋์ค๊ณ
์ด ํ ์ํ๋ ๊ฒฐ๊ณผ ๊ฐ ๊ธธ์ด ์ด์์ด ๋์ฌ ๋ ๊น์ง ๋ฐ๋ณต ํ๋ฉด ๋๋ค.
์ด PRE ํจ์๋ฅผ ํตํด key_block ๊ฐ์ ์์ฑ ํ๋ค.
pre_master_secret = ECDH_Compute( my_private, other_pub_x, other_pub_y );
master_secret = PRF( pre_master_secret
"key expansion",
client_random + server_random);
key_block = PRF( master_secret,
"key expansion",
server_random + client_random);
// ์์ฑ๋ ํค key_block ( client_write_MAC_key || server_write_MAC_key || client_write_key || server_write_key || client_write_IV || server_write_IV )
client_write_MAC_key[mac_key_length]
server_write_MAC_key[mac_key_length]
client_write_key[enc_key_length]
server_write_key[enc_key_length]
client_write_IV[fixed_iv_length]
server_write_IV[fixed_iv_length]
verify_data = PRF(master_secret,
"finished",
Hash(handshake_messages))
[0..verify_data_length-1];
PRF ํจ์ ๊ฒฝ์ฐ KeyBlock ์ ์์ฑ ์์ Finished ๋ฉ์ธ์ง๋ฅผ ๋ณด๋ผ๋ ์ฌ์ฉ ๋๋ค.
ECDH ์๊ณ ๋ฆฌ์ฆ ๊ฒฝ์ฐ
์๋๋ฐฉ ๊ณต๊ฐํค ๊ฐ๊ณผ ์์ ์ ๊ฐ์ธํค๋ก Secret ํค๊ฐ ์์ฑ ๋๋ค. ์ด ์์ฑ ๋ ํค๊ฐ pre_master_secret ๊ฐ์ด ๋๋ค.
๊ทธ๋ฆฌ๊ณ master_sercret ๋ PRF๋ฅผ ์ด์ฉํ 48 ๋ฐ์ดํธ์ ๊ณ ์ ๊ฐ์ ๋ง๋ ๋ค.
์ด ๋ server ์ client ๋๋ค ๊ฐ์ ์์น๊ฐ ๋ฐ๊ฟ์ด์ผ ํ๋ค.
์ฐธ๊ณ ๋ก GCM ๋๋ CCM ์ ์ฌ์ฉ ์ ์๋ ๊ฐ์ ์๋ค.
client_write_MAC_key[mac_key_length]
server_write_MAC_key[mac_key_length]
์ด๋ ๊ฒ 4๊ฐ์ ๊ฐ์ ์ฌ์ฉ ํ๋ฉด ๋๋ค.
client_write_key[enc_key_length]
server_write_key[enc_key_length]
client_write_IV[fixed_iv_length]
server_write_IV[fixed_iv_length]
์ฐธ๊ณ ๋ก ECDH GCM ์ฌ์ฉ ์ fixed_iv_length ๊ฐ์ 4 Bytes ์ด๋ค.
IV ๊ฐ์ ๋๋จธ์ง ๊ธธ์ด๋ TLS ํจํท ์ ๋ณด์ ์ผ๋ถ๋ถ๊ณผ ํจ๊ป ์ฌ์ฉํ๋ฏ๋ก 4 Bytes ๊ธธ์ด๊ฐ ์ ํด ์ก๋ค.
ECDH ์ AES256 ํค ๊ธธ์ ์ฌ์ฉ ์
๋์นญํค ๊ธธ์ด ๊ฒฝ์ฐ 256 bits ๋ฅผ ์ฌ์ฉํ๋ ๊ฒฝ์ฐ
์๋ช
๊ฐ ๊ฒ์ฆ ์ SHA-384 ๋ฅผ ์ฌ์ฉํ๋ค.
๊ทธ๋ฌ๋ฏ๋ก ๋์นญํค ๊ธธ์ด๋ค 256์ ์ธ๋๋ ECDSA_SHA384 ๋ ์ง์ ์ด์ผ ๋๋ค.
'PKI > TLS' ์นดํ ๊ณ ๋ฆฌ์ ๋ค๋ฅธ ๊ธ
SSL ์ธ์ฆ์์ https ๋๋ฉ์ธ ์ฃผ์ ์ฐ๊ด์ฑ (0) | 2023.06.08 |
---|---|
TLS ํธ๋์์ดํฌ ๊ธฐ๋ฅ ๊ฐ๋จ ์ค๋ช (0) | 2023.06.08 |
TLS ์ DTLS ๋ฒ์ 1.2 ์ ๊ดํ ํน์ฑ (0) | 2023.04.11 |