2022-03-19 TIL
Hash & Salt
๋จ๋ฐฉํฅ ํด์ ํจ์์ ํ๊ณ์
-
๋์ผํ ๋ฉ์์ง๋ ๋์ผํ ๋ค์ด์ ์คํธ(ํด์์ ์ํด ์ํธํ๋ ๋ฐ์ดํฐ, e.g. 123456 -> fs32a3xzz0)๋ฅผ ๊ฐ๋๋ค. 123456์ ๋ค์ด์ ์คํธ๋ฅผ ๊ฐ๊ณ 123456์ ์ ์ถํ๊ธฐ๋ ์ด๋ ต์ง๋ง, 123456์ ๋ค์ด์ ์คํธ ๊ฐ์ ํญ์ ๊ฐ๋ค. plain text์ ๋ค์ด์ ์คํธ ๊ฐ์ ํญ์ ๊ฐ๋ค๋ ๋ฌธ์ ์ ์ด ์๋ค. ๊ทธ๋์ ํด์ปค๋ค์ด ์ฌ๋ฌ ๊ฐ๋ค์ ๋์ ํด๋ณด๋ฉด์ ์ป์๋ ๋ค์ด์ ์คํธ๋ค์ ๋ชจ์๋์ ๋ฆฌ์คํธ๊ฐ ์๋๋ฐ ๊ทธ ๋ฆฌ์คํธ๋ฅผ Rainbow Table์ด๋ผ๊ณ ํ๋ค(๊ตฌ๊ธ์ sha-256 rainbow table ์ด๋ผ๊ณ ๊ฒ์ํด๋ณด๋ฉด ์ฌ๋ฌ ์๋ฃ๊ฐ ๋ฌ๋ค). ์ฆ ํน์ ๊ฐ์ด Rainbow Table์ ์์ผ๋ฉด ๋ฐ๋ก ๋ณด์์ด ๋ซ๋ฆฐ๋ค๋ ๊ฒ ๋จ๋ฐฉํฅ ํด์์ ๋จ์ ์ด๋ค. ๋ํ, ์ ์ ํ๋ฅ ๋ก ํด์ ์ถฉ๋ ๋ฌธ์ ๋ ์๊ธฐ ๋๋ฌธ์ sha-256 ๊ฐ์ ํด์ ํจ์๋ฅผ ์ฌ์ฉํ์ฌ ํด์ฑ์ ํ๋ค 100% ์์ ํ๋ค๊ณ ์ฅ๋ดํ ์๋ ์๋ค. ๊ทธ๋ฌ๋ฉด ์ด๋ป๊ฒ ๋ณด์ํ ์ ์์๊น?
-
ํด์ ํจ์ ์ฌ๋ฌ ๋ฒ ์ํํ๊ธฐ -> ํค ์คํธ๋์นญ(Key Stretching) ํจ์ค์๋๋ฅผ ์ ์ฅํ ๋ ๊ฐ์ฅ ์ฝ๊ฒ ์๊ฐํ ์ ์๋ ๋ฐฉ๋ฒ์ด๋ค. ์๋ฅผ ๋ค์ด, sha-256์ ์ฌ์ฉํ๋ค๊ณ ๊ฐ์ ํ ๋, 123456์ ์ ๋ ฅํ๊ณ 123456์ ๋ค์ด์ ์คํธ๋ก 8d969eef6ecad3c29a3a629280e686cf0c3f5d5a86aff3ca12020c923adc6c92์ ์ป์๋ค๋ฉด, ํด๋น ๋ค์ด์ ์คํธ๋ก ํ ๋ฒ๋ ํด์ฑ์ ํ๋ ๊ฒ์ด๋ค. ์ด ๋ฐฉ๋ฒ์ ์ปดํจํ ํ์๋ฅผ ๊ฐ์ง๊ณ ๋ธ๋ฃจํธํฌ์ค ๋ฐฉ๋ฒ์ผ๋ก ๋ฌด์์ ๋์ ํด๋ณด๋ ๊ณต๊ฒฉ์ ๋ฐฉ์ดํ๋ ๋ฐ ์ ์ฉํ๋ค.
-
์ํธ(Salt) ์ํธ๋ ํด์ํจ์๋ฅผ ๋๋ฆฌ๊ธฐ ์ ์ ์๋ฌธ์ ์์์ ๋ฌธ์์ด์ ๋ง๋ถ์ด๋ ๊ฒ์ ๋งํ๋ค. ๋จ์ด ๋ป ๊ทธ๋๋ก ์๋ฌธ์ ์์์ ๋ฌธ์์ด์ ๋ถ์ธ๋ค๋ ์๋ฏธ์ ์๊ธ์ ์น๋ค(Salting)๋ ๊ฒ์ด๋ค.
plain text Password + Salt => Hash => Digest
์ด๋ ๊ฒ ํ๋ฉด ์ค๋ น ๋ค์ด์ ์คํธ๋ฅผ ์์๋ธ๋ค ํ๋๋ผ๋ Password ๊ฐ์ ์์๋ด๊ธฐ ๋์ฑ ์ด๋ ค์์ง๋ค. ๊ทธ๋ฆฌ๊ณ ์ฌ์ฉ์๋ง๋ค ๋ค๋ฅธ Salt๋ฅผ ์ฌ์ฉํ๋ค๋ฉด ์ค๋ น ๊ฐ์ ๋น๋ฐ๋ฒํธ๋ผ๋ ๋ค์ด์ ์คํธ ๊ฐ์ ๋ค๋ฅด๋ค. ์ด๋ ๊ฒฐ๊ตญ ํ ๋ช ์ ํจ์ค์๋๊ฐ ์ ์ถ๋๋๋ผ๋ ๊ฐ์ ๋น๋ฐ๋ฒํธ๋ฅผ ์ฌ์ฉํ๋ ๋ค๋ฅธ ์ฌ์ฉ์๋ ๋น๊ต์ ์์ ํ๋ค๋ ์๋ฏธ์ด๋ค. (Salt ๊ฐ์ด ์์์ ๋ฌธ์์ด์ด๊ธฐ ๋๋ฌธ์ Password + Salt ๊ฐ์ ํด์ฑํ ํด์ฑ ๊ฐ์ด Rainbow Table์ ์์ ๊ฐ๋ฅ์ฑ์ ๊ฑฐ์ ์๋ค)
๋๊ธ๋จ๊ธฐ๊ธฐ