์•”ํ˜ธํ™” ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ WolfSSL 5.1.0 ์ถœ์‹œ

์‚ฌ๋ฌผ ์ธํ„ฐ๋„ท ์žฅ์น˜, ์Šค๋งˆํŠธ ํ™ˆ ์‹œ์Šคํ…œ, ์ž๋™์ฐจ ์ •๋ณด ์‹œ์Šคํ…œ, ๋ผ์šฐํ„ฐ ๋ฐ ํœด๋Œ€ํฐ๊ณผ ๊ฐ™์ด ํ”„๋กœ์„ธ์„œ ๋ฐ ๋ฉ”๋ชจ๋ฆฌ ๋ฆฌ์†Œ์Šค๊ฐ€ ์ œํ•œ๋œ ์ž„๋ฒ ๋””๋“œ ์žฅ์น˜์— ์‚ฌ์šฉํ•˜๋„๋ก ์ตœ์ ํ™”๋œ ์†Œํ˜• ์•”ํ˜ธํ™” ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ WolfSSL 5.1.0์˜ ์ถœ์‹œ๊ฐ€ ์ค€๋น„๋˜์—ˆ์Šต๋‹ˆ๋‹ค. ์ฝ”๋“œ๋Š” C ์–ธ์–ด๋กœ ์ž‘์„ฑ๋˜์—ˆ์œผ๋ฉฐ GPLv2 ๋ผ์ด์„ผ์Šค์— ๋”ฐ๋ผ ๋ฐฐํฌ๋ฉ๋‹ˆ๋‹ค.

์ด ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ๋Š” ChaCha20, Curve25519, NTRU, RSA, Blake2b, TLS 1.0-1.3 ๋ฐ DTLS 1.2๋ฅผ ํฌํ•จํ•œ ์ตœ์‹  ์•”ํ˜ธํ™” ์•Œ๊ณ ๋ฆฌ์ฆ˜์˜ ๊ณ ์„ฑ๋Šฅ ๊ตฌํ˜„์„ ์ œ๊ณตํ•ฉ๋‹ˆ๋‹ค. ๊ฐœ๋ฐœ์ž์— ๋”ฐ๋ฅด๋ฉด OpenSSL ๊ตฌํ˜„๋ณด๋‹ค 20๋ฐฐ ๋” ์ปดํŒฉํŠธํ•ฉ๋‹ˆ๋‹ค. OpenSSL API์™€์˜ ํ˜ธํ™˜์„ฑ์„ ์œ„ํ•ด ๋‹จ์ˆœํ™”๋œ ์ž์ฒด API์™€ ๋ ˆ์ด์–ด๋ฅผ ๋ชจ๋‘ ์ œ๊ณตํ•ฉ๋‹ˆ๋‹ค. ์ธ์ฆ์„œ ํ•ด์ง€ ํ™•์ธ์„ ์œ„ํ•ด OCSP(์˜จ๋ผ์ธ ์ธ์ฆ์„œ ์ƒํƒœ ํ”„๋กœํ† ์ฝœ) ๋ฐ CRL(์ธ์ฆ์„œ ํ•ด์ง€ ๋ชฉ๋ก)์ด ์ง€์›๋ฉ๋‹ˆ๋‹ค.

WolfSSL 5.1.0์˜ ์ฃผ์š” ํ˜์‹ :

  • ์ถ”๊ฐ€๋œ ํ”Œ๋žซํผ ์ง€์›: NXP SE050(Curve25519 ์ง€์› ํฌํ•จ) ๋ฐ Renesas RA6M4. Renesas RX65N/RX72N์˜ ๊ฒฝ์šฐ TSIP 1.14(์‹ ๋ขฐํ•  ์ˆ˜ ์žˆ๋Š” ๋ณด์•ˆ IP)์— ๋Œ€ํ•œ ์ง€์›์ด ์ถ”๊ฐ€๋˜์—ˆ์Šต๋‹ˆ๋‹ค.
  • Apache http ์„œ๋ฒ„์šฉ ํฌํŠธ์— ํฌ์ŠคํŠธํ€€ํ…€ ์•”ํ˜ธํ™” ์•Œ๊ณ ๋ฆฌ์ฆ˜์„ ์‚ฌ์šฉํ•˜๋Š” ๊ธฐ๋Šฅ์ด ์ถ”๊ฐ€๋˜์—ˆ์Šต๋‹ˆ๋‹ค. TLS 1.3์˜ ๊ฒฝ์šฐ NIST 3๋ผ์šด๋“œ FALCON ๋””์ง€ํ„ธ ์„œ๋ช… ์ฒด๊ณ„๊ฐ€ ๊ตฌํ˜„๋˜์—ˆ์Šต๋‹ˆ๋‹ค. ์–‘์ž ์ปดํ“จํ„ฐ์—์„œ์˜ ์„ ํƒ์— ์ €ํ•ญํ•˜๋Š” ์•”ํ˜ธํ™” ์•Œ๊ณ ๋ฆฌ์ฆ˜์„ ์‚ฌ์šฉํ•˜๋Š” ๋ชจ๋“œ์—์„œ WolfSSL์—์„œ ์ปดํŒŒ์ผ๋œ cURL ํ…Œ์ŠคํŠธ๋ฅผ ์ถ”๊ฐ€ํ–ˆ์Šต๋‹ˆ๋‹ค.
  • ๋‹ค๋ฅธ ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ ๋ฐ ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜๊ณผ์˜ ํ˜ธํ™˜์„ฑ์„ ๋ณด์žฅํ•˜๊ธฐ ์œ„ํ•ด NGINX 1.21.4 ๋ฐ Apache httpd 2.4.51์— ๋Œ€ํ•œ ์ง€์›์ด ๋ ˆ์ด์–ด์— ์ถ”๊ฐ€๋˜์—ˆ์Šต๋‹ˆ๋‹ค.
  • SSL_OP_NO_TLSv1_2 ํ”Œ๋ž˜๊ทธ ๋ฐ SSL_CTX_get_max_early_data, SSL_CTX_set_max_early_data, SSL_set_max_early_data, SSL_get_max_early_data, SSL_CTX_clear_mode, SSL_CONF_cmd_value_type, SSL_read_early_data SSL_write_, early_data ๊ธฐ๋Šฅ์— ๋Œ€ํ•œ ์ง€์›์ด ์ถ”๊ฐ€๋˜์—ˆ์Šต๋‹ˆ๋‹ค.
  • AES-CCM ์•Œ๊ณ ๋ฆฌ์ฆ˜์˜ ๋‚ด์žฅ ๊ตฌํ˜„์„ ๋Œ€์ฒดํ•˜๊ธฐ ์œ„ํ•ด ์ฝœ๋ฐฑ ํ•จ์ˆ˜๋ฅผ ๋“ฑ๋กํ•˜๋Š” ๊ธฐ๋Šฅ์ด ์ถ”๊ฐ€๋˜์—ˆ์Šต๋‹ˆ๋‹ค.
  • CSR(์ธ์ฆ์„œ ์„œ๋ช… ์š”์ฒญ)์— ๋Œ€ํ•œ ์‚ฌ์šฉ์ž ์ •์˜ OID๋ฅผ ์ƒ์„ฑํ•˜๊ธฐ ์œ„ํ•ด ๋งคํฌ๋กœ WOLFSSL_CUSTOM_OID๋ฅผ ์ถ”๊ฐ€ํ–ˆ์Šต๋‹ˆ๋‹ค.
  • FSSL_ECDSA_DETERMINISTIC_K_VARIANT ๋งคํฌ๋กœ๋ฅผ ํ†ตํ•ด ํ™œ์„ฑํ™”๋œ ๊ฒฐ์ •์  ECC ์„œ๋ช…์— ๋Œ€ํ•œ ์ง€์›์ด ์ถ”๊ฐ€๋˜์—ˆ์Šต๋‹ˆ๋‹ค.
  • ์ƒˆ๋กœ์šด ๊ธฐ๋Šฅ wc_GetPubKeyDerFromCert, wc_InitDecodedCert, wc_ParseCert ๋ฐ wc_FreeDecodedCert๊ฐ€ ์ถ”๊ฐ€๋˜์—ˆ์Šต๋‹ˆ๋‹ค.
  • ์‹ฌ๊ฐ๋„๊ฐ€ ๋‚ฎ์€ ๊ฒƒ์œผ๋กœ ํ‰๊ฐ€๋œ ๋‘ ๊ฐ€์ง€ ์ทจ์•ฝ์ ์ด ํ•ด๊ฒฐ๋˜์—ˆ์Šต๋‹ˆ๋‹ค. ์ฒซ ๋ฒˆ์งธ ์ทจ์•ฝ์ ์€ TLS 1.2 ์—ฐ๊ฒฐ์— ๋Œ€ํ•œ MITM ๊ณต๊ฒฉ ์ค‘์— ํด๋ผ์ด์–ธํŠธ ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜์— ๋Œ€ํ•œ DoS ๊ณต๊ฒฉ์„ ํ—ˆ์šฉํ•ฉ๋‹ˆ๋‹ค. ๋‘ ๋ฒˆ์งธ ์ทจ์•ฝ์ ์€ ์„œ๋ฒ„ ์ธ์ฆ์„œ์˜ ์ „์ฒด ์‹ ๋ขฐ ์ฒด์ธ์„ ํ™•์ธํ•˜์ง€ ์•Š๋Š” WolfSSL ๊ธฐ๋ฐ˜ ํ”„๋ก์‹œ ๋˜๋Š” ์—ฐ๊ฒฐ์„ ์‚ฌ์šฉํ•  ๋•Œ ํด๋ผ์ด์–ธํŠธ ์„ธ์…˜ ์žฌ๊ฐœ์— ๋Œ€ํ•œ ์ œ์–ด๊ถŒ์„ ์–ป์„ ์ˆ˜ ์žˆ๋Š” ๊ฐ€๋Šฅ์„ฑ๊ณผ ๊ด€๋ จ์ด ์žˆ์Šต๋‹ˆ๋‹ค.

์ถœ์ฒ˜ : opennet.ru

์ฝ”๋ฉ˜ํŠธ๋ฅผ ์ถ”๊ฐ€