XKCP ํจํค์ง(eXtended Keccak Code Package)์์ ์ ๊ณต๋๋ SHA-3(Keccak) ์ํธํ ํด์ ๊ธฐ๋ฅ ๊ตฌํ์์ ์ทจ์ฝ์ (CVE-2022-37454)์ด ํ์ธ๋์์ต๋๋ค. ์ด๋ ํน์ ํจํค์ง๋ฅผ ์ฒ๋ฆฌํ๋ ๋์ ๋ฒํผ ์ค๋ฒํ๋ก๋ฅผ ์ผ์ผํฌ ์ ์์ต๋๋ค. ํ์ํ๋ ๋ฐ์ดํฐ. ์ด ๋ฌธ์ ๋ ์๊ณ ๋ฆฌ์ฆ ์์ฒด์ ์ทจ์ฝ์ ์ด ์๋๋ผ ํน์ SHA-3 ๊ตฌํ ์ฝ๋์ ๋ฒ๊ทธ๋ก ์ธํด ๋ฐ์ํฉ๋๋ค. XKCP ํจํค์ง๋ Keccak ๊ฐ๋ฐํ์ ์๊ฒฌ์ ๋ฐํ์ผ๋ก ๊ฐ๋ฐ๋ SHA-3์ ๊ณต์ ๊ตฌํ์ผ๋ก ์ ์ ๋๋ฉฐ ๋ค์ํ ํ๋ก๊ทธ๋๋ฐ ์ธ์ด์์ SHA-3 ๊ธฐ๋ฅ์ ๊ธฐ์ด๋ก ์ฌ์ฉ๋ฉ๋๋ค(์: XKCP ์ฝ๋๋ Python hashlib์์ ์ฌ์ฉ๋ฉ๋๋ค) ๋ชจ๋, Ruby ๋ค์ด์ ์คํธ ํจํค์ง sha3 ๋ฐ PHP hash_* ํจ์).
๋ฌธ์ ๋ฅผ ํ์ธํ ์ฐ๊ตฌ์์ ๋ฐ๋ฅด๋ฉด, ๊ทธ๋ ์ด ์ทจ์ฝ์ ์ ์ด์ฉํด ํด์ ํจ์์ ์ํธํ ์์ฑ์ ์๋ฐํ๊ณ ์ฒซ ๋ฒ์งธ์ ๋ ๋ฒ์งธ ์ฌ์ ์ด๋ฏธ์ง๋ฅผ ์ฐพ๊ณ ์ถฉ๋์ ๊ฐ์งํ ์ ์์์ต๋๋ค. ๋ํ ํน๋ณํ ์ค๊ณ๋ ํ์ผ์ ํด์๋ฅผ ๊ณ์ฐํ ๋ ์ฝ๋๋ฅผ ์คํํ ์ ์๋ ํ๋กํ ํ์ ์ต์คํ๋ก์์ด ์์ฑ๋ ๊ฒ์ด๋ผ๊ณ ๋ฐํ๋์์ต๋๋ค. ์ด ์ทจ์ฝ์ ์ SHA-3(์: Ed448)์ ์ฌ์ฉํ๋ ๋์งํธ ์๋ช ํ์ธ ์๊ณ ๋ฆฌ์ฆ์ ๊ณต๊ฒฉํ๋ ๋ฐ ์ ์ฌ์ ์ผ๋ก ์ฌ์ฉ๋ ์๋ ์์ต๋๋ค. ๊ณต๊ฒฉ ๋ฐฉ๋ฒ์ ๋ํ ์์ธํ ๋ด์ฉ์ ์ทจ์ฝ์ ์ด ๋ชจ๋ ๊ณณ์์ ์ ๊ฑฐ๋ ํ ์ถํ ๊ณต๊ฐ๋ ์์ ์ ๋๋ค.
์ทจ์ฝ์ ์ด ์ค์ ๋ก ๊ธฐ์กด ์ ํ๋ฆฌ์ผ์ด์ ์ ์ผ๋ง๋ ์ํฅ์ ๋ฏธ์น๋์ง๋ ์์ง ๋ช ํํ์ง ์์ต๋๋ค. ๋ฌธ์ ๊ฐ ์ฝ๋์ ๋ํ๋๋ ค๋ฉด ๋ธ๋ก์ ์ํ ํด์ ๊ณ์ฐ์ ์ฌ์ฉํด์ผ ํ๊ณ ์ฒ๋ฆฌ๋ ๋ธ๋ก ์ค ํ๋์ ํฌ๊ธฐ๊ฐ ์ฝ 4GB(์ต์)์ฌ์ผ ํ๊ธฐ ๋๋ฌธ์ ๋๋ค. 2^32 - 200๋ฐ์ดํธ). (ํด์๋ฅผ ๋ถ๋ถ์ ์ผ๋ก ์์ฐจ์ ์ผ๋ก ๊ณ์ฐํ์ง ์๊ณ ) ์ ๋ ฅ ๋ฐ์ดํฐ๋ฅผ ํ๋ฒ์ ์ฒ๋ฆฌํ๋ ๊ฒฝ์ฐ์๋ ๋ฌธ์ ๊ฐ ๋ํ๋์ง ์์ต๋๋ค. ๊ฐ์ฅ ๊ฐ๋จํ ๋ณดํธ ๋ฐฉ๋ฒ์ผ๋ก ํด์ ๊ณ์ฐ์ ํ ๋ฒ ๋ฐ๋ณต์ ํฌํจ๋๋ ๋ฐ์ดํฐ์ ์ต๋ ํฌ๊ธฐ๋ฅผ ์ ํํ๋ ๊ฒ์ด ์ ์๋ฉ๋๋ค.
ํด๋น ์ทจ์ฝ์ ์ ์ ๋ ฅ ๋ฐ์ดํฐ์ ๋ธ๋ก ์ฒ๋ฆฌ ์ค๋ฅ๋ก ์ธํด ๋ฐ์ํฉ๋๋ค. "int" ์ ํ์ ๊ฐ์ ์๋ชป ๋น๊ตํ์ฌ ๋ณด๋ฅ ์ค์ธ ๋ฐ์ดํฐ์ ์๋ชป๋ ํฌ๊ธฐ๊ฐ ๊ฒฐ์ ๋๊ณ , ์ด๋ก ์ธํด ํ ๋น๋ ๋ฒํผ๋ฅผ ๋์ด์๋ ํ ์ผ์ด ๊ธฐ๋ก๋ฉ๋๋ค. ํนํ ๋น๊ต์์๋ โpartialBlock + ์ธ์คํด์ค->byteIOIndexโ๋ผ๋ ํํ์ ์ฌ์ฉํ๋๋ฐ, ์ด๋ก ์ธํด ๊ตฌ์ฑ ๋ถ๋ถ์ ํฐ ๊ฐ์ ๋ํด ์ ์ ์ค๋ฒํ๋ก๊ฐ ๋ฐ์ํ์ต๋๋ค. ๋ํ ์ฝ๋์ ์๋ชป๋ ์ ํ ์บ์คํ "(unsigned int)(dataByteLen - i)"๊ฐ ์์ด 64๋นํธ size_t ์ ํ์ ์ฌ์ฉํ๋ ์์คํ ์์ ์ค๋ฒํ๋ก๊ฐ ๋ฐ์ํ์ต๋๋ค.
์ค๋ฒํ๋ก๋ฅผ ์ผ์ผํค๋ ์์ ์ฝ๋: import hashlib h = hashlib.sha3_224() m1 = b"\x00" * 1; m2 = b"\x00โณ * 4294967295; h.update(m1) h.update(m2) print(h.hexdigest())
์ถ์ฒ : opennet.ru