์ํธํ ํด์ ํจ์ BLAKE3 1.0์ ์ฐธ์กฐ ๊ตฌํ์ด ์ถ์๋์์ต๋๋ค. ์ด๋ SHA-3 ์์ค์์ ์์ ์ฑ์ ๋ณด์ฅํ๋ ๋์์ ๋งค์ฐ ๋์ ํด์ ๊ณ์ฐ ์ฑ๋ฅ์ผ๋ก ์ ๋ช ํฉ๋๋ค. 16KB ํ์ผ์ ๋ํ ํด์ ์์ฑ ํ ์คํธ์์ 3๋นํธ ํค๋ฅผ ์ฌ์ฉํ๋ BLAKE256์ SHA3-256๋ณด๋ค 17๋ฐฐ, SHA-256์ 14๋ฐฐ, SHA-512๋ 9๋ฐฐ, SHA-1์ 6๋ฐฐ, BLAKE2b๋ณด๋ค ์ฑ๋ฅ์ด ๋ฐ์ด๋ฉ๋๋ค. 5 ํ. ๋งค์ฐ ๋ง์ ์์ ๋ฐ์ดํฐ๋ฅผ ์ฒ๋ฆฌํ ๋ ์๋นํ ๊ฒฉ์ฐจ๊ฐ ๋จ์ ์์ต๋๋ค. ์๋ฅผ ๋ค์ด BLAKE3์ 256GB์ ๋ฌด์์ ๋ฐ์ดํฐ์ ๋ํ ํด์๋ฅผ ๊ณ์ฐํ ๋ SHA-8๋ณด๋ค 1๋ฐฐ ๋น ๋ฅธ ๊ฒ์ผ๋ก ๋ํ๋ฌ์ต๋๋ค. BLAKE3 ์ฐธ์กฐ ๊ตฌํ ์ฝ๋๋ ์ด์ค ๊ณต๊ฐ ๋๋ฉ์ธ(CC0) ๋ฐ Apache 2.0 ๋ผ์ด์ ์ค์ ๋ฐ๋ผ C ๋ฐ Rust ๋ฒ์ ์ผ๋ก ์ ๊ณต๋ฉ๋๋ค.
ํด์ ๊ธฐ๋ฅ์ ํ์ผ ๋ฌด๊ฒฐ์ฑ ๊ฒ์ฌ, ๋ฉ์์ง ์ธ์ฆ, ์ํธํ ๋์งํธ ์๋ช ์ ์ํ ๋ฐ์ดํฐ ์์ฑ๊ณผ ๊ฐ์ ์์ฉ ํ๋ก๊ทธ๋จ์ ์ํด ์ค๊ณ๋์์ต๋๋ค. BLAKE3์ ๊ฐ๋ฅํ ํ ๋นจ๋ฆฌ ํด์๋ฅผ ๊ณ์ฐํ๋ ๊ฒ์ ๋ชฉํ๋ก ํ๊ธฐ ๋๋ฌธ์ ๋น๋ฐ๋ฒํธ ํด์ฑ์ฉ์ด ์๋๋๋ค. ๋น๋ฐ๋ฒํธ์ ๊ฒฝ์ฐ ๋๋ฆฐ ํด์ ๊ธฐ๋ฅ yescrypt, bcrypt, scrypt ๋๋ Argon2๋ฅผ ์ฌ์ฉํ๋ ๊ฒ์ด ์ข์ต๋๋ค. ๊ณ ๋ ค ์ค์ธ ํด์ ํจ์๋ ํด์๋ ๋ฐ์ดํฐ์ ํฌ๊ธฐ์ ๋ฏผ๊ฐํ์ง ์์ผ๋ฉฐ ์ถฉ๋ ์ ํ ๋ฐ ์ฌ์ ์ด๋ฏธ์ง ์ฐพ๊ธฐ์ ๋ํ ๊ณต๊ฒฉ์ผ๋ก๋ถํฐ ๋ณดํธ๋ฉ๋๋ค.
์ด ์๊ณ ๋ฆฌ์ฆ์ ์ ๋ช ํ ์ํธํ ์ ๋ฌธ๊ฐ(Jack O'Connor, Jean-Philippe Aumasson, Samuel Neves, Zooko Wilcox-O'Hearn)์ ์ํด ๊ฐ๋ฐ๋์์ผ๋ฉฐ BLAKE2 ์๊ณ ๋ฆฌ์ฆ ๊ฐ๋ฐ์ ๊ณ์ํ๊ณ Bao ๋ฉ์ปค๋์ฆ์ ์ฌ์ฉํ์ฌ ๋ธ๋ก์ฒด์ธ ํธ๋ฆฌ๋ฅผ ์ธ์ฝ๋ฉํฉ๋๋ค. . BLAKE2(BLAKE2b, BLAKE2s)์ ๋ฌ๋ฆฌ BLAKE3์ ๋นํธ ์ฌ๋ ๋ฐ ํด์ ํฌ๊ธฐ์ ์ฝ๋งค์ด์ง ์๊ณ ๋ชจ๋ ํ๋ซํผ์ ๋ํด ๋จ์ผ ์๊ณ ๋ฆฌ์ฆ์ ์ ๊ณตํฉ๋๋ค.
๋ผ์ด๋ ์๋ฅผ 10์์ 7๋ก ์ค์ด๊ณ ๋ธ๋ก์ 1KB ๋จ์๋ก ๋ณ๋๋ก ํด์ฑํจ์ผ๋ก์จ ์ฑ๋ฅ์ด ํฅ์๋์์ต๋๋ค. ์ ์์์ ๋ฐ๋ฅด๋ฉด ๋์ผํ ์์ค์ ์ ๋ขฐ์ฑ์ ์ ์งํ๋ฉด์ 7๋ผ์ด๋ ๋์ 10๋ผ์ด๋๋ฅผ ์ํํ๋ ๊ฒ์ด ๊ฐ๋ฅํ๋ค๋ ์ค๋๋ ฅ ์๋ ์ํ์ ์ฆ๊ฑฐ๋ฅผ ๋ฐ๊ฒฌํ์ต๋๋ค(๋ช ํ์ฑ์ ์ํด 7์ด ํ์ ๋ฏน์์์ ๊ณผ์ผ์ ํผํฉํ๋ ์๋ฅผ ๋ค ์ ์์ต๋๋ค). ๊ณผ์ผ์ ์ด๋ฏธ ์์ ํ ํผํฉ๋์ด ์์ผ๋ฏ๋ก 3์ด๋ฅผ ๋ ์ถ๊ฐํด๋ ํผํฉ๋ฌผ์ ๋๋์๋ ์ํฅ์ ๋ฏธ์น์ง ์์ต๋๋ค. ๊ทธ๋ฌ๋ ์ผ๋ถ ์ฐ๊ตฌ์๋ค์ ํด์์ ๋ํด ์๋ ค์ง ๋ชจ๋ ๊ณต๊ฒฉ์ ๋์ํ๋ ๋ฐ ํ์ฌ 7๋ผ์ด๋๊ฐ ์ถฉ๋ถํ๋๋ผ๋ ํฅํ ์๋ก์ด ๊ณต๊ฒฉ์ด ์๋ณ๋๋ฉด ์ถ๊ฐ 3๋ผ์ด๋๊ฐ ์ ์ฉํ ์ ์๋ค๊ณ ๋ฏฟ์ผ๋ฉฐ ์๊ตฌ์ฌ์ ํ๋ช ํฉ๋๋ค.
๋ธ๋ก์ผ๋ก ๋๋๋ ๊ฒฝ์ฐ BLAKE3์์๋ ์คํธ๋ฆผ์ 1KB ์กฐ๊ฐ์ผ๋ก ๋๋๊ณ ๊ฐ ์กฐ๊ฐ์ ๋ ๋ฆฝ์ ์ผ๋ก ํด์ฑ๋ฉ๋๋ค. ์กฐ๊ฐ๋ค์ ํด์๋ฅผ ๊ธฐ๋ฐ์ผ๋ก ๋ฐ์ด๋๋ฆฌ ๋จธํด ํธ๋ฆฌ๋ฅผ ๊ธฐ๋ฐ์ผ๋ก ํ๋์ ํฐ ํด์๊ฐ ํ์ฑ๋ฉ๋๋ค. ์ด ๋ถํ ์ ํตํด ํด์๋ฅผ ๊ณ์ฐํ ๋ ๋ฐ์ดํฐ ์ฒ๋ฆฌ๋ฅผ ๋ณ๋ ฌํํ๋ ๋ฌธ์ ๋ฅผ ํด๊ฒฐํ ์ ์์ต๋๋ค. ์๋ฅผ ๋ค์ด 4์ค๋ ๋ SIMD ๋ช ๋ น์ด๋ฅผ ์ฌ์ฉํ์ฌ 4๊ฐ ๋ธ๋ก์ ํด์๋ฅผ ๋์์ ๊ณ์ฐํ ์ ์์ต๋๋ค. ๊ธฐ์กด SHA-* ํด์ ํจ์๋ ๋ฐ์ดํฐ๋ฅผ ์์ฐจ์ ์ผ๋ก ์ฒ๋ฆฌํฉ๋๋ค.
BLAKE3์ ํน์ง:
- ๊ณ ์ฑ๋ฅ์ธ BLAKE3์ MD5, SHA-1, SHA-2, SHA-3 ๋ฐ BLAKE2๋ณด๋ค ํจ์ฌ ๋น ๋ฆ ๋๋ค.
- SHA-2๊ฐ ์ทจ์ฝํ ๋ฉ์์ง ์ฐ์ฅ ๊ณต๊ฒฉ์ ๋ํ ์ ํญ์ ํฌํจํ ๋ณด์
- Rust์์ ์ฌ์ฉ ๊ฐ๋ฅํ๋ฉฐ SSE2, SSE4.1, AVX2, AVX-512 ๋ฐ NEON ๋ช ๋ น์ด์ ์ต์ ํ๋์ด ์์ต๋๋ค.
- ์ค๋ ๋ ์์ SIMD ์ฑ๋ ์์ ๊ด๊ณ์์ด ๊ณ์ฐ ๋ณ๋ ฌํ๋ฅผ ๋ณด์ฅํฉ๋๋ค.
- ์คํธ๋ฆผ์ ์ฆ๋ถ ์ ๋ฐ์ดํธ ๋ฐ ๊ฒ์ฆ๋ ์ฒ๋ฆฌ ๊ฐ๋ฅ์ฑ
- PRF, MAC, KDF, XOF ๋ชจ๋ ๋ฐ ์ผ๋ฐ ํด์๋ก ์ฌ์ฉํฉ๋๋ค.
- x86-64 ์์คํ ๊ณผ 32๋นํธ ARM ํ๋ก์ธ์ ๋ชจ๋์์ ๋น ๋ฅธ ๋ชจ๋ ์ํคํ ์ฒ๋ฅผ ์ํ ๋จ์ผ ์๊ณ ๋ฆฌ์ฆ์ ๋๋ค.
BLAKE3๊ณผ BLAKE2์ ์ฃผ์ ์ฐจ์ด์ ์ ๋ค์๊ณผ ๊ฐ์ต๋๋ค.
- ํด์ ๊ณ์ฐ์์ ๋ฌด์ ํ ๋ณ๋ ฌ ์ฒ๋ฆฌ๋ฅผ ํ์ฉํ๋ ์ด์ง ํธ๋ฆฌ ๊ตฌ์กฐ๋ฅผ ์ฌ์ฉํฉ๋๋ค.
- ๋ผ์ด๋ ์๋ฅผ 10์์ 7๋ก ์ค์ ๋๋ค.
- ์ธ ๊ฐ์ง ์๋ ๋ชจ๋: ํด์ฑ, ํค๋ฅผ ์ฌ์ฉํ ํด์ฑ(HMAC) ๋ฐ ํค ์์ฑ(KDF).
- ์ด์ ์ ํค ๋งค๊ฐ๋ณ์ ๋ธ๋ก์ด ์ฐจ์งํ๋ ์์ญ์ ์ฌ์ฉํ๋ฏ๋ก ํค๋ก ํด์ฑํ ๋ ์ถ๊ฐ ์ค๋ฒํค๋๊ฐ ์์ต๋๋ค.
- ํ์ฅ๋ ๊ฒฐ๊ณผ๋ฅผ ๊ฐ๋ ๊ธฐ๋ฅ(XOF, ํ์ฅ ๊ฐ๋ฅํ ์ถ๋ ฅ ๊ธฐ๋ฅ) ํํ์ ๋ด์ฅ ์๋ ๋ฉ์ปค๋์ฆ์ผ๋ก ๋ณ๋ ฌํ ๋ฐ ์์น ์ง์ (ํ์)์ด ๊ฐ๋ฅํฉ๋๋ค.
์ถ์ฒ : opennet.ru