์ด ๊ณ์ฐ๊ธฐ๋ ๋ฌด์์ ํ๋์
๋น๋ฐ๋ฒํธ ํด๋ ์๊ฐ ๊ณ์ฐ๊ธฐ๋ ๊ณต๊ฒฉ์๊ฐ ๊ฐ๋ฅํ ๋ชจ๋ ์กฐํฉ์ ํ๋์ฉ ์๋ํ๋ ๋ฌด์ฐจ๋ณ ๋์ (brute force) ๋ฐฉ์์ผ๋ก ๋น๋ฐ๋ฒํธ๋ฅผ ๋ซ๋ ๋ฐ ๊ฑธ๋ฆฌ๋ ์๊ฐ์ ์์ธกํฉ๋๋ค. ๊ณ์ฐ์ ์ ์ ์ผ๋ก ํค ๊ณต๊ฐ(keyspace)์ ํฌ๊ธฐ์ ๊ณต๊ฒฉ์์ ์๋ ์๋์๋ง ๊ธฐ๋ฐํ๋ฏ๋ก, ๋น๋ฐ๋ฒํธ๋ฅผ ๋ ๊ธธ๊ณ ๋ณต์กํ๊ฒ ๋ง๋ค์์ ๋ ์ค์ ๋ก ์ผ๋ง๋ ๋ ์์ ํด์ง๋์ง ํ๋์ ํ์ ํ ์ ์์ต๋๋ค.
์ฌ์ฉ ๋ฐฉ๋ฒ
๋น๋ฐ๋ฒํธ ๊ธธ์ด(๋ฌธ์ ์)๋ฅผ ์ ๋ ฅํ๊ณ , ๋น๋ฐ๋ฒํธ์ ์ฌ์ฉํ ๋ฌธ์ ์ข ๋ฅ๋ฅผ ์ ํํ ๋ค์, ๊ณต๊ฒฉ์์ ์ด๋น ์๋ ํ์๋ฅผ ์ค์ ํ์ธ์. ์ต์ GPU ์ฅ๋น๋ ๋น ๋ฅธ ํด์ ๊ธฐ์ค์ผ๋ก ์ด๋น ์ฝ 10์ต(1,000,000,000)ํ ์ ๋๋ฅผ ์๋ํ ์ ์์ผ๋ฏ๋ก, ์ด ๊ฐ์ ๊ธฐ๋ณธ๊ฐ์ผ๋ก ๋๋ฉด ์ ๋นํฉ๋๋ค. ๊ฒฐ๊ณผ์๋ ์ ์ฒด ํค ๊ณต๊ฐ์ ๋ชจ๋ ์๋ํ๋ ์ต์ ์ ๊ฒฝ์ฐ ์์ ์๊ฐ์ด ์ดยท์๊ฐยท์ผยท๋ ๋จ์๋ก ํ์๋ฉ๋๋ค.
๊ณต์ ํ์ด
๊ฐ๋ฅํ ๋น๋ฐ๋ฒํธ์ ์ด ๊ฐ์๋ ๋ฌธ์ ์ข ๋ฅ์ ํฌ๊ธฐ๋ฅผ ๊ธธ์ด๋งํผ ๊ฑฐ๋ญ์ ๊ณฑํ ๊ฐ์ ๋๋ค: \(C = N^{L}\). ์ด๋ฅผ ๊ณต๊ฒฉ์์ ์ด๋น ์๋ ํ์๋ก ๋๋๋ฉด ๋ชจ๋ ์กฐํฉ์ ์๋ํ๋ ๋ฐ ๊ฑธ๋ฆฌ๋ ์๊ฐ์ด ๋์ต๋๋ค:
$$t = \frac{N^{L}}{G}$$๋ฌธ์ ์ข ๋ฅ ํฌ๊ธฐ \(N\)์ ๋ํด์ ๊ณ์ฐํฉ๋๋ค โ ์๋ฌธ์(26), ๋๋ฌธ์(26), ์ซ์(10), ๊ธฐํธ(32)๋ฅผ ๋ชจ๋ ์์ผ๋ฉด \(N = 94\)๊ฐ ๋ฉ๋๋ค.
์์ ๋ก ์ดํด๋ณด๊ธฐ
์๋ฌธ์๋ก๋ง ์ด๋ฃจ์ด์ง 8์๋ฆฌ ๋น๋ฐ๋ฒํธ(\(N = 26\), \(L = 8\))๋ฅผ ์ด๋น 10์ต ํ๋ฅผ ์๋ํ๋ ๊ณต๊ฒฉ์์๊ฒ ๋งก๊ธด๋ค๊ณ ํด ๋ด ์๋ค. ์กฐํฉ ์ \(= 26^{8} = 208{,}827{,}064{,}576\). ํด๋ ์๊ฐ:
$$t = \frac{208{,}827{,}064{,}576}{1{,}000{,}000{,}000} \approx 208.83\ \text{์ด}$$์ฆ 4๋ถ๋ ์ฑ ๊ฑธ๋ฆฌ์ง ์์ต๋๋ค. ์ฌ๊ธฐ์ ๋๋ฌธ์ยท์ซ์ยท๊ธฐํธ๋ฅผ ์ถ๊ฐํ๋ฉด(\(N = 94\)) ๊ฐ์ ๊ธธ์ด๋ผ๋ ์กฐํฉ ์๊ฐ \(94^{8} \approx 6.1 \times 10^{15}\)๋ก ๋์ด๋, ์ฝ 70์ผ์ด ํ์ํด์ง๋๋ค.
์์ฃผ ๋ฌป๋ ์ง๋ฌธ
์ด ๊ฒฐ๊ณผ๊ฐ ์ ํํ๊ฐ์? ์๋๋๋ค. ์์ํ ๋ฌด์ฐจ๋ณ ๋์ ์ ์ด๋ก ์ ์ต๋๊ฐ์ผ ๋ฟ์ ๋๋ค. ์ค์ ๊ณต๊ฒฉ์๋ ์ฌ์ (dictionary), ์ ์ถ๋ ๋น๋ฐ๋ฒํธ ๋ชฉ๋ก, ํํ ํจํด ๋ฑ์ ํ์ฉํ๊ธฐ ๋๋ฌธ์, ์ง์ํ๊ธฐ ์ฌ์ด ๋น๋ฐ๋ฒํธ๋ ์ด ์์ธก์น๋ณด๋ค ํจ์ฌ ๋นจ๋ฆฌ ๋ซ๋ฆฝ๋๋ค.
์ด๋ค ์๋ ์๋๋ฅผ ์ ๋ ฅํด์ผ ํ๋์? ์ฌ์ฉ๋ ํด์์ ๋ฐ๋ผ ๋ค๋ฆ ๋๋ค. ๋น ๋ฅธ ํด์(MD5, ์ํธ ๋ฏธ์ ์ฉ)๋ ์ด๋น ์์ญ์ต ํ๊น์ง ๊ฐ๋ฅํ์ง๋ง, ๋๋ฆฐ ํด์(bcrypt, Argon2)๋ ์ด๋น ์์ฒ ํ ์์ค์ ๊ทธ์นฉ๋๋ค. \(G\) ๊ฐ์ด ์์์๋ก ํด๋ ์๊ฐ์ ํจ์ฌ ๊ธธ์ด์ง๋๋ค.
๊ฐ๋ ฅํ ๋น๋ฐ๋ฒํธ๋ ์ด๋ป๊ฒ ๋ง๋๋์? ๋ณต์กํจ๋ณด๋ค ๊ธธ์ด๊ฐ ๋ ์ค์ํฉ๋๋ค. ๋ฌธ์๋ฅผ ํ๋ ์ถ๊ฐํ ๋๋ง๋ค ํค ๊ณต๊ฐ์ด \(N\)๋ฐฐ์ฉ ๋์ด๋๋ฏ๋ก, ๊ธด ํจ์คํ๋ ์ด์ฆ๊ฐ ์งง๊ณ ๋ณต์กํ ๋น๋ฐ๋ฒํธ๋ณด๋ค ๋น๊ตํ ์ ์์ ๋งํผ ๋ซ๊ธฐ ์ด๋ ต์ต๋๋ค.