์ ๋ฒ์ ์ ํน๋ณํ ํน์ง์ FPGA ์ง์(CPU, GPU ๋ฐ Xeon Phi ์ธ์)์ด ๋ฑ์ฅํ๋ค๋ ๊ฒ์
๋๋ค. ๋ณด๋์ฉ
bcrypt์ ๊ฒฝ์ฐ ~119์ํธ์ ์ ๋ ฅ ์๋น๋ก 2^5ํ ๋ฐ๋ณต(โ$2b$05โ)์ผ๋ก ์ต๋ 27c/s์ ์ฑ๋ฅ์ ๋ฌ์ฑํ๋ฉด ๋ณด๋๋น, ํ๋์จ์ด ๊ฐ๊ฒฉ๋น, ์ํธ๋น ์ต์ GPU์ ๊ฒฐ๊ณผ๋ฅผ ํฌ๊ฒ ์ด๊ณผํฉ๋๋ค. . ๋ํ ์ง์๋จ
์์
์๋๋ฅผ ๋์ด๊ธฐ ์ํด ๋ง์คํฌ(๋ค๋ฅธ ๋ชจ๋์์ ์กฐํฉ์ ํฌํจํ์ฌ "-๋ง์คํฌ" ๋ชจ๋)๋ฅผ ์ฌ์ฉํ๊ณ ๊ณ์ฐ๋ ํด์๋ฅผ FPGA ์ธก์ ๋ก๋๋ ํด์์ ๋น๊ตํ๋ ๊ธฐ๋ฅ์ ๊ตฌํํ์ต๋๋ค. ๊ตฌํ ๊ด์ ์์ ๋ณด๋ฉด ๋ง์ ๋์์ธ(์:
๊ธฐํ ์ค์ํ ๋ณ๊ฒฝ ์ฌํญ:
- ๊ธฐ์กด ๋น๋ฐ๋ฒํธ ํด์(์: QNX ์ ๋ฒ์ ์)๋ฟ๋ง ์๋๋ผ ์ํธํํ ์ง๊ฐ, ์ํธํ๋ ์์นด์ด๋ธ ๋ฐ ์ํธํ๋ ํ์ผ ์์คํ (์: Bitlocker ๋ฐ FreeBSD geli)๋ฟ๋ง ์๋๋ผ ์ด์ ์ ์ง์๋์๋ ์๋ก์ด ์ ํ์ ํ์์ ๋ํ ์ง์(์: OpenBSD Softraid์ ๋ํ bcrypt-pbkdf์ ๋ํ ์ง์ ์ถ๊ฐ) ๋ฑ๋ ์ง์๋ฉ๋๋ค. CPU์๋ ์ด 80๊ฐ ํฌ๋งท, OpenCL์๋ 47๊ฐ ํฌ๋งท์ด ์ถ๊ฐ๋์์ต๋๋ค. ์ด์ ์ด ํ์ ์๋ CPU์์ 407๊ฐ(๋๋ ๊ตฌ์ฑ ํ์ผ์์ ๊ตฌ์ฑ๋ "๋์ " ํ์์ ํฌํจํ์ง ์์ 262๊ฐ), OpenCL์์ 88๊ฐ์ ๋๋ค.
- OpenCL์ ์ ํธํ์ฌ CUDA ์ธ์ด ์ง์์ ๊ฑฐ๋ถํฉ๋๋ค. OpenCL์ NVIDIA GPU์ ์ ์ฒด ์ฌ์ฉ์ ์ ํ ๋ฐฉํดํ์ง ์์ต๋๋ค(์ด์ ์ ๋ ๊ตฌํ ๋์ GPU์ ๊ฐ ํ์์ ๋ํ ๊ฐ๋ฐ ๋ฐ ์ต์ ํ์ ์ด์ ์ ๋ง์ถ ๋๋ถ์ ๋์์ด ๋ฉ๋๋ค).
- ์๋ก์ด SIMD ๋ช
๋ น ์ธํธ(AVX2, AVX-512(86์ธ๋ Xeon Phi ํฌํจ) ๋ฐ MIC(64์ธ๋) ์ง์)์ ๋ฌผ๋ก ๋ค์ํ ํ์ ๊ตฌํ์์ SIMD๋ฅผ ๋ณด๋ค ๋ณดํธ์ ์ด๊ณ ์๋ฒฝํ๊ฒ ์ฌ์ฉํ ์ ์์ต๋๋ค. ์ด์ ์ xXNUMX(-XNUMX)์์ AVX ๋ฐ XOP๊น์ง ์ง์๋๋ ๋ช
๋ น์ด ์ธํธ ๋ฐ
ARM, Aarch64 ๋ฐ POWER์ NEON, ASIMD ๋ฐ AltiVec. - ๋์์ ๋ง์ ์์ ํด์๋ฅผ ๋ณด๋ค ํจ์จ์ ์ผ๋ก ์ฒ๋ฆฌํ๊ณ (์: GPU์ 320์ต 1์ฒ๋ง ๊ฐ์ SHA-XNUMX ํด์ ๋ก๋ ํ ์คํธ) ํด์ ๊ณ์ฐ ์๋๋ฅผ ๋์ด๊ธฐ ์ํด CPU ๋ฐ OpenCL์ ๋ํ ๋ค์ํ ์ต์ ํ๊ฐ ์ด๋ฃจ์ด์ก์ต๋๋ค. ์ด๋ฌํ ์ต์ ํ ์ค ์ผ๋ถ๋ ๋ณดํธ์ ์ด๊ณ ์ผ๋ถ๋ ๋ค์ํ ํ์ ํ์ ์งํฉ์ ๋ค๋ฃจ๋ฉฐ ๋๋ถ๋ถ์ ๊ฐ๋ณ ํ์์๋ง ์ ์ฉ๋ฉ๋๋ค.
- ์ ์ฒด ์๋ ์ฃผํ์๊น์ง์ ๋๋ฆฐ ๋จํ ๊ณ ๋ ค๋ฅผ ํฌํจํ์ฌ CPU์์ ํ์ธ๋ ๋น๋ฐ๋ฒํธ์ ์ต์ ๋ฒํผ๋ง("โtune=auto โverbosity=5") ๋ฐ OpenCL์ ์ต์ ์์ ํฌ๊ธฐ(๊ธฐ๋ณธ์ ์ผ๋ก ํ์ฑํ๋จ)์ (์๋) ๊ตฌ์ฑ NVIDIA GTX ์๋ฆฌ์ฆ GPU 10xx ์ด์. ์๋ ์กฐ์ ์ ์ํด ์ค์ ๋ก ๋ก๋๋ ํด์์ ํ์ธ ์ค์ธ ๋น๋ฐ๋ฒํธ์ ์ค์ ๊ธธ์ด(๋ฏธ๋ฆฌ ์๋ ค์ง ๊ฒฝ์ฐ)๋ฅผ ์ฌ์ฉํฉ๋๋ค.
- ๋ช ๋ น์ค์์ ์ง์ ์ง์ ๋ "๋์ ํํ์"์ ์ํ ์ปดํ์ผ๋ฌ๋ฅผ ์ถ๊ฐํ๊ณ SIMD๋ฅผ ์ฌ์ฉํ์ฌ CPU์์ ๊ณ์ฐ๋๋ "-format=dynamic='sha1(md5($p).$s)'"์ ๊ฐ์ ์๋ก์ด ํ์ด๋ธ๋ฆฌ๋ ํด์ ์ ํ์ ๊ตฌํํฉ๋๋ค. . ์ด๋ฌํ ํํ์์ ๊ตฌ์ฑ ์์๋ก ์์ญ ๊ฐ์ ๋น ๋ฅธ ํด์(MD5์ ๊ฐ์ ์ผ๋ฐ์ ์ธ ํด์๋ถํฐ Whirlpool๊ณผ ๊ฐ์ ์ฝ๊ฐ ์ด๊ตญ์ ์ธ ํด์๊น์ง), ํ์ ๋ฌธ์์ด ์ฐ๊ฒฐ, ์ธ์ฝ๋ฉ ๋ฐ ๋์ฝ๋ฉ, ๋์๋ฌธ์ ๋ณํ, ๋น๋ฐ๋ฒํธ ์ฐธ์กฐ, ์ํธ, ์ฌ์ฉ์ ์ด๋ฆ ๋ฐ ๋ฌธ์์ด ์์๊ฐ ์ง์๋ฉ๋๋ค.
- ์ด์ hashcat ๊ด๋ จ ๊ท์น(wordlist ๊ท์น ๋ช ๋ น)์ ๋ํ ์ง์, OpenCL ์ฅ์น ๋ฒํธ ์ง์ ์ 1์์ ์ ํ, ์ฑ๋ฅ ํ ์คํธ๋ฅผ ์ํด ๋์ผํ ๋น๋ฐ๋ฒํธ ๊ธธ์ด(์ผ๋ฐ์ ์ผ๋ก ๊ธธ์ด 7)์ ๊ธฐ๋ณธ ์ฌ์ฉ์ ํฌํจํ์ฌ hashcat๊ณผ์ ์์น ์๋ ์ฐจ์ด์ ์ ๊ฑฐ.
- hashcat์ PRINCE(์ ์ฒด ๊ธธ์ด์ ์ค๋ฆ์ฐจ์์ผ๋ก ์ฌ๋ฌ ๋จ์ด๋ฅผ ๊ฒฐํฉํ์ฌ "๋ฌธ๊ตฌ" ํ์ฑ), ํ์ ์งํฉ(์ด๋ฌํ ๋ฌธ์๊ฐ ์ค๋๋ผ๋ ์๋ก ๋ค๋ฅธ ๋ฌธ์ ์๊ฐ ๋ถ์กฑํ ๋น๋ฐ๋ฒํธ๋ฅผ ๊ฐ์ ธ์ด)์ ํฌํจํ์ฌ ๊ฒ์ฆ ๊ฐ๋ฅํ ๋น๋ฐ๋ฒํธ๋ฅผ ์์ฑํ๊ธฐ ์ํ ์๋ก์ด ๋ชจ๋(ํฌ๋ํน ๋ชจ๋) ๊ฐ๋ฅํ ๋ง์ ๋น๋ฐ๋ฒํธ ์ธํธ์์) ๋ฐ ํ์ด๋ธ๋ฆฌ๋ ์ธ๋ถ(C์ ์ ์ฌํ ์ธ์ด๋ก ๊ตฌ์ฑ ํ์ผ์ ์ค๋ช ๋ ์ธ๋ถ ๋ชจ๋๋ฅผ ํ์ฉํ์ฌ ๋ค๋ฅธ ๋ชจ๋์์ ์์ ๋ ๊ฐ ๊ธฐ๋ณธ "๋จ์ด"๋ฅผ ๊ธฐ๋ฐ์ผ๋ก ๋ง์ ํ์ธ ๊ฐ๋ฅํ ๋น๋ฐ๋ฒํธ๋ฅผ ์์ฑํ ์ ์์). ๋ํ ๋ช ๊ฐ์ง ์๋ก์ด ๋ฏธ๋ฆฌ ์ ์๋ ์ธ๋ถ ๋ชจ๋๊ฐ ์์ต๋๋ค.
- ์ฌ๋ฌ ๋ชจ๋๋ฅผ ๋์์ ์ฌ์ฉํ๊ธฐ ์ํ ์ถ๊ฐ ๊ธฐ๋ฅ(ํ ๋ชจ๋๋ฅผ ๋ค๋ฅธ ๋ชจ๋ ์์ ๊ฒน์ณ ์๊ธฐ)๊ณผ ๊ท์น ์ธํธ(๋จ์ด ๋ชฉ๋ก ๊ท์น ์คํํน)๋ฅผ ์ฌ์ฉํ๊ธฐ ์ํ ์ถ๊ฐ ๊ธฐ๋ฅ์ ๋๋ค.
- ๋ง์คํฌ ๋ชจ๋(์ง์ ๋ ๊ธธ์ด ๋ฒ์์์ ๋ง์คํฌ๋ฅผ ์ ์ง์ ์ผ๋ก ๋๋ฆฌ๊ธฐ, OpenCL ์ฅ์น ๋๋ FPGA ๋ณด๋ ์ธก๋ฉด์ ๋ง์คํฌ ์ ์ฉ) ๋ฐ ๋จ์ผ ํฌ๋(๋ง์ ์์ ํด์๋ฅผ ๋ณ๋ ฌ๋ก ๊ณ์ฐํ๋ ์ฅ์น์ ํฉ๋ฆฌ์ ์ธ ๋์) ๊ฐ์ ์ด์ ์๋ ์ด ๋ชจ๋์์ ํ์ธ ๊ฐ๋ฅํ ๋น๋ฐ๋ฒํธ๊ฐ ์ถฉ๋ถํ์ง ์์์ผ๋ฉฐ ๋ฉ๋ชจ๋ฆฌ ์๋น์ ๋ํ ์ ํ๋ ์์์ต๋๋ค.
- ๋ค์ํ ํ์ ์์คํ ์ ์ ๋์ฝ๋ ๋ฐ ๊ธฐํ ์ธ์ฝ๋ฉ ์ง์์ด ๋ง์ด ๊ฐ์ ๋์์ต๋๋ค.
- *2john ํ๋ก๊ทธ๋จ์ ๋ง์ ๊ฐ์ ์ฌํญ(๋ค๋ฅธ ํ์์ ํ์ผ์
john๊ณผ ํจ๊ป ์ฌ์ฉ), ํนํ wpapcap2john(WiFi ํธ๋ํฝ ์ฒ๋ฆฌ). - ๋ง์ ์๋ก์ด ๋ช ๋ น์ค ์ต์ , john.conf์ ์ค์ , ์คํฌ๋ฆฝํธ ์ต์ ๊ตฌ์ฑ ๋ฐ ์ด์ ์์ํ๋ ์๋ก์ด ๊ธฐ๋ฅ์ด ์์ง๋ง ์ฌ๊ธฐ์ ๋ชจ๋ ์ธ๊ธ๋ ๊ฒ์ ์๋๋๋ค.
- AddressSanitizer(์ด์ ) ๋ฐ UndefineBehaviorSanitizer(์ถ๊ฐ)๋ฅผ ์ฌ์ฉํ ๋๋ฒ๊ทธ ๋น๋์ ๋ํ ๋ด์ฅ ์ง์, ๋ด์ฅ ํ์ fuzzer ์ถ๊ฐ(GSoC 2015์ ์ผ๋ถ), ์ง์์ ์ธ ํตํฉ ์ฌ์ฉ(์์ญ ๊ฐ์ ์ด์ ์ฒด์ ๋ฐ ์ปดํ์ผ๋ฌ์ฉ ๋น๋) ๋๋ถ์ ์ฝ๋ ํ์ง ํฅ์ ๋ชจ๋ ํ์์ ๋ํ ์ฌ๋ฐ๋ฅธ ์ง์์ ์ํด ์กฐํฉํ๊ณ ํ ์คํธํฉ๋๋ค).
์ถ์ฒ : opennet.ru