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

์‚ฌ์šฉ ๊ฐ€๋Šฅ ๋ฌด๋ฃŒ ์•”ํ˜ธํ™” ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ ์ถœ์‹œ ๋‚˜ํŠธ๋ฅจ 1.0.18(๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ์™€ API ํ˜ธํ™˜) NaCl (๋„คํŠธ์›Œํ‚น ๋ฐ ์•”ํ˜ธํ™” ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ) ๋ณด์•ˆ ๋„คํŠธ์›Œํฌ ํ†ต์‹  ๊ตฌ์„ฑ, ํ•ด์‹ฑ, ์˜์‚ฌ ๋‚œ์ˆ˜ ์ƒ์„ฑ, ๋””์ง€ํ„ธ ์„œ๋ช… ์ž‘์—…, ์ธ์ฆ๋œ ๊ณต๊ฐœ ๋ฐ ๋Œ€์นญ(๊ณต์œ  ํ‚ค) ํ‚ค๋ฅผ ์‚ฌ์šฉํ•œ ์•”ํ˜ธํ™” ๊ธฐ๋Šฅ์„ ์ œ๊ณตํ•ฉ๋‹ˆ๋‹ค. Sodium API๋Š” ๊ฐ„๋‹จํ•˜๋ฉฐ ๊ธฐ๋ณธ์ ์œผ๋กœ ๊ฐ€์žฅ ์•ˆ์ „ํ•œ ์˜ต์…˜, ์•”ํ˜ธํ™” ๋ฐ ํ•ด์‹ฑ ๋ฐฉ๋ฒ•์„ ์ œ๊ณตํ•ฉ๋‹ˆ๋‹ค. ๋„์„œ๊ด€ ์ฝ”๋“œ ๋ฐฐํฌ์ž ๋ฌด๋ฃŒ ISC ๋ผ์ด์„ผ์Šค์— ๋”ฐ๋ผ.

์ฃผ์š” ํ˜์‹ :

  • ์ƒˆ๋กœ์šด WebAssembly/WASI ๋Œ€์ƒ ํ”Œ๋žซํผ ์ถ”๊ฐ€(์ธํ„ฐํŽ˜์ด์Šค ๋‚ด๊ฐ€ ๊ทธ๋žฌ๋‹ˆ ๋ธŒ๋ผ์šฐ์ € ์™ธ๋ถ€์—์„œ WebAssembly๋ฅผ ์‚ฌ์šฉํ•˜๋ ค๋ฉด)
  • AVX2 ์ง€์นจ์„ ์ง€์›ํ•˜๋Š” ์‹œ์Šคํ…œ์—์„œ ๊ธฐ๋ณธ ํ•ด์‹ฑ ์ž‘์—…์˜ ์„ฑ๋Šฅ์ด ์•ฝ 10% ํ–ฅ์ƒ๋˜์—ˆ์Šต๋‹ˆ๋‹ค.
  • Visual Studio 2019๋ฅผ ์‚ฌ์šฉํ•œ ๋นŒ๋“œ์— ๋Œ€ํ•œ ์ง€์›์ด ์ถ”๊ฐ€๋˜์—ˆ์Šต๋‹ˆ๋‹ค.
  • edwards25519 ์ง€์ ์— ํ•ด์‹œ๋ฅผ ๋ฐ˜์˜ํ•˜๊ฑฐ๋‚˜ ๋ฌด์ž‘์œ„ edwards25519 ์ง€์ ์„ ์–ป๊ธฐ ์œ„ํ•ด ์ƒˆ๋กœ์šด ํ•จ์ˆ˜ core_ed25519_from_hash() ๋ฐ core_ed25519_random()์„ ๊ตฌํ˜„ํ–ˆ์Šต๋‹ˆ๋‹ค.
  • ์Šค์นผ๋ผ*์Šค์นผ๋ผ ๊ณฑ์…ˆ(mod L)์„ ์œ„ํ•œ crypto_core_ed25519_scalar_mul() ํ•จ์ˆ˜๋ฅผ ์ถ”๊ฐ€ํ–ˆ์Šต๋‹ˆ๋‹ค.
  • ์†Œ์ˆ˜์˜ ์ˆœ์„œ ๊ทธ๋ฃน์— ๋Œ€ํ•œ ์ง€์›์ด ์ถ”๊ฐ€๋˜์—ˆ์Šต๋‹ˆ๋‹ค. ๋ฆฌ์Šค ํ† ๋ › ํ† , wasm-crypto์™€์˜ ํ˜ธํ™˜์„ฑ์— ํ•„์š”ํ•ฉ๋‹ˆ๋‹ค.
  • ์‹œ์Šคํ…œ ํ˜ธ์ถœ ์‚ฌ์šฉ ๊ฐ€๋Šฅ ์—”ํŠธ๋กœํ”ผ() ์ด๋ฅผ ์ง€์›ํ•˜๋Š” ์‹œ์Šคํ…œ์—์„œ;
  • NativeClient ๊ธฐ์ˆ ์— ๋Œ€ํ•œ ์ง€์›์ด ์ค‘๋‹จ๋˜์—ˆ์œผ๋ฉฐ ํ•ด๋‹น ๊ธฐ์ˆ ์˜ ๊ฐœ๋ฐœ์ด ์ค‘๋‹จ๋˜์—ˆ์Šต๋‹ˆ๋‹ค. ๋‹จ์ข… WebAssembly๋ฅผ ์„ ํ˜ธํ•ฉ๋‹ˆ๋‹ค.
  • ๋นŒ๋“œํ•  ๋•Œ ์ปดํŒŒ์ผ๋Ÿฌ ์˜ต์…˜ "-ftree-Vectorize" ๋ฐ "-ftree-slp-Vectorize"๊ฐ€ ํ™œ์„ฑํ™”๋ฉ๋‹ˆ๋‹ค.

์ถœ์ฒ˜ : opennet.ru

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