password ๋ฅผ ์ ์ํธํ ํด์ผ ํ ๊น??
์ํธํ๋ฅผ ํ๋ ์ด์ ๋ ๋ฐ์ดํฐ๋ฒ ์ด์ค๊ฐ ์ ์ถ๋๋ ๊ณต๊ฒฉ ๋์์ ๊ฒฝ์ฐ ์ ๋ณด์ ์ถ์ ๋ง๊ธฐ ์ํ๊ฒ
์๋ฅผ ๋ค์ด ์ด์๋๊ณ ์๋ ์ผํ๋ชฐ ์ฌ์ดํธ๊ฐ ๊ด๋ฆฌ์์ ๋ถ์ฃผ์๋ก ์ธํด ๋ฐ์ดํฐ๋ฒ ์ด์ค๊ฐ
์ ์ถ ๋๊ฑฐ๋, ๋๋ ํด์ปค์ ์ํด ๋ฐ์ดํฐ๋ฒ ์ด์ค๊ฐ ๊ณต๊ฒฉ ๋นํ์ ๊ฒฝ์ฐ
์ ์ฅ๋์ด ์๋ ์ ์ ๋ค์ ๊ฐ์ธ์ ๋ณด๊ฐ ์ ์ถ๋์ด ๊ฐ์ข ๋ฒ์ฃ์ ์ ์ฉ ๋ ์ ์๋ค.
์ด๋ก์ธํด ์ํธํ๋ ์ ๋ณด๋ฅผ ๊ด๋ฆฌํจ์ ์์ด์ ์ ํ์ฌํญ์ด ์๋ ํ์์ฌํญ ์ด๋ค!!
- ๋จ๋ฐฉํฅ ํด์ ํจ์
์ํธํ์ฐ์ฐ์ ํตํด ์๋ณธ ๋ฉ์์ง๋ฅผ ๋ณํ์์ผ ๋ค์ด์ ์คํธ(ํด์ฑ ๊ณต์์ ์์ฑ๋ ๋ฌธ์์ด)๋ฅผ ์์ฑ
๋จ๋ฐฉํฅ์ฑ: ์๋ณธ๋ฉ์์ง๋ฅผ ๊ตฌํ๋ฉด ์ํธํ๋ ๋ฉ์์ง๋ฅผ ๊ตฌํ๊ธฐ๋ ์ฝ๋ค. ๊ทธ๋ฌ๋ ์ํธํ๋ ๋ฉ์์ง๋ก ์๋ณธ ๋ฉ์์ง๋ฅผ ๊ตฌํ ์๋ ์๋ค.- ๋จ๋ฐฉํฅ ํด์ํจ์์ ๋ฌธ์ ์
์ธ์ ๊ฐ๋ฅ์ฑ: ๋์ผํ ๋ฉ์์ง๊ฐ ํญ์ ๋์ผํ ๋ค์ด์ ์คํธ๋ฅผ ๊ฐ๋๋ค๋ฉด ํด์ปค๊ฐ ๋ค์ด์ ์คํธ๋ฅผ ๋ง์ด ํ๋ณดํ๋ค ๊ฒฐ๊ณผ๋ฅผ ํ ๋๋ก ์๋ณธ๋ฉ์์ง๋ฅผ ์ ์ถํด๊ฑฐ๋ ์ ์ฉํ ์ ์๋ค. ์ด์ ๊ฐ์ ๋ค์ด์ ์คํธ ๋ชฉ๋ก์ ๋ ์ธ๋ณด์ฐ ํ ์ด๋ธ์ด๋ผํ๊ณ ๋ ์ธ๋ณด์ฐ ๊ณต๊ฒฉ์ด๋ผ ํ๋ค.
์๋: ํด์ํจ์์ ๋ชฉ์ ์ด ์งง์์๊ฐ์ ๋ฐ์ดํฐ๋ฅผ ๊ฒ์ํ๊ธฐ ์ํด ์ค๊ณ๋๊ฒ์ด๋ค. ํด์ํจ์์ ๋น ๋ฅธ์๋๋ฅผ ์ด์ฉํ์ฌ ํด์ปค๊ฐ ๋ค์ด์ ์คํธ๋ฅผ ์๋ณธ๋ฌธ์์ด๊ณผ ๋น๊ตํด๋ณผ ์ ์๋ค(๋ฐ์ดํฐ๊ฐ ์ถฉ๋ถํ ๊ธธ๊ฑฐ๋ ๋ณต์กํ์ง ์์ ๊ฒฝ์ฐ ํ์ทจ๊ฐ๋ฅ).
์ํ (Salting): ์ํธ(salt)๋ ๋จ๋ฐฉํฅ ํด์ ํจ์์์ ๋ค์ด์ ์คํธ๋ฅผ ์์ฑํ ๋ ์ถ๊ฐ๋๋ ๋ฐ์ดํธ ๋จ์์ ์์์ ๋ฌธ์์ด์ด๋ค. ์ด ์๋ณธ ๋ฉ์์ง์ ๋ฌธ์์ด์ ์ถ๊ฐํ์ฌ ๋ค์ด์ ์คํธ๋ฅผ ์์ฑํ๋ ๊ฒ์ ์ํ ์ด๋ผํ๋ค. ์ํธ์ ๊ธธ์ด๋ 32๋ฐ์ดํธ ์ด์์ด์ด์ผ ์ํธ์ ๋ค์ด์ ์คํธ๋ฅผ ์ถ์ธกํ๊ธฐ ์ด๋ ต๋ค.
ํค ์คํธ๋ ์นญ(key stretching): ์๋ณธ๋ฉ์์ง๋ฅผ ์ํธํ๋ก ๋ค์ด์ ์คํธ๋ฅผ ์์ฑํ๊ณ , ์์ฑ๋ ๋ค์ด์ ์คํธ๋ฅผ ์ ๋ ฅ ๊ฐ์ผ๋ก ํ์ฌ ๋ค์ด์ ์คํธ๋ฅผ ์์ฑํ๊ณ , ์ด๋ฅผ ๋ฐ๋ณตํ๋ ๋ฐฉ๋ฒ์ผ๋ก ๋ค์ด์ ์คํธ๋ฅผ ์์ฑํ ์ ์๋ค. ์ด๋ ๊ฒ ํ๋ฉด ์ ๋ ฅํ ํจ์ค์๋๋ฅผ ๋์ผํ ํ์๋งํผ ํด์ํด์ผ ์ ๋ ฅํ ํจ์ค์๋ ์ผ์น ์ฌ๋ถ๋ฅผ ํ์ธํ ์ ์๋ค. ์ด๊ฒ์ ํค ์คํธ๋ ์นญ์ด๋ผ ํ๋ค.
Adaptive Key Derivation Functions: ๋ค์ด์ ์คํธ๋ฅผ ์์ฑํ ๋ ์ํ ๊ณผ ํค ์คํธ๋ ์นญ์ ๋ฐ๋ณตํ๋ฉฐ ์ํธ์ ํจ์ค์๋ ์ธ์๋ ์ ๋ ฅ ๊ฐ์ ์ถ๊ฐํ์ฌ ๊ณต๊ฒฉ์๊ฐ ์ฝ๊ฒ ๋ค์ด์ ์คํธ๋ฅผ ์ ์ถํ ์ ์๋๋ก ํ๊ณ ๋ณด์์ ๊ฐ๋๋ฅผ ์ ํํ ์ ์๋ค.
- pbkdf2
ํด์ ํจ์์ ์ปจํ ์ด๋
salt๋ฅผ ์ ์ฉํ ํ ํด์ ํจ์์ ๋ฐ๋ณต ํ์๋ฅผ ์์๋ก ์ ํํ ์ ์๋ค.
๊ฐ๋ณ๊ณ ๊ตฌํํ๊ธฐ ์ฝ๋ค.
SHA์ ๊ฐ์ด ๊ฒ์ฆ๋ ํด์ ํจ์๋ง์ ์ฌ์ฉํด hashingํ๋ค.
NIST์ ์ํด์ ์น์ธ๋ ์๊ณ ๋ฆฌ์ฆ- bcrypt
ํ์ฌ ๊ฐ์ฅ ๊ฐ๋ ฅํ ํด์ ๋ฉ์ปค๋์ฆ ์ค ํ๋
blowfish ์ํธํ์ ๊ธฐ๋ฐ์ ๋๊ณ ์๋ค.
์ ๋ ฅ ๊ฐ์ผ๋ก 72 bytes character๋ฅผ ์ฌ์ฉํด์ผ ํ๋ค.- scrypt
adaptive key derivation function
digest๋ฅผ ์์ฑํ ๋ ๋ฉ๋ชจ๋ฆฌ ์ค๋ฒํค๋๋ฅผ ๊ฐ๋๋ก ์ค๊ณํ์ฌ ๋ธ๋ฃจํธ ํฌ์ค ๊ณต๊ฒฉ์ ์๋ํ ๋ ๋ณ๋ ฌํ ์ฒ๋ฆฌ๊ฐ ์ด๋ ต๋ค.
๋ฏธ๋์ ๊ด์ ์์ ๋ดค์ ๋ 3๊ฐ์ง ์๊ณ ๋ฆฌ์ฆ ์ค์์ ๊ฐ์ฅ ๊ฒฝ์๋ ฅ ์๋ ์๊ณ ๋ฆฌ์ฆ์ผ๋ก ๋ฝํ๋ค.
๊ทธ๋ผ ๊ฒฐ๋ก ์ ์ผ๋ก ๊ฐ์ฅ ์ข๊ณ ๊ฐ๋ ฅํ, ์๊ณ ๋ฆฌ์ฆ์ ์ฌ์ฉํด์ ์ํธํ๋ฅผ ํด์ผ ํ๋?? ๋ผ๊ณ ํ๋ค๋ฉด
๊ผญ ๊ทธ๋ ์ง๋ง์ ์๋ค, ๋ฌผ๋ก ๊ฐ๋ ฅํ ์๊ณ ๋ฆฌ์ฆ์ ํตํด ์ํธํ๋ฅผ ํ๋ฉด ์ ๋ณด์ ์ถ์ ๋ํด์๋ ๋ณด๋ค
์์ ํ๊ฒ ์ง๋ง, ์๋น์ค๊ฐ ๊ฐ๋นํ ์ ์๋ ์์์๋ ํ๊ณ๊ฐ ์๊ณ ํ์ ๋ ์์์์ ์ต์ ์ ํจ๊ณผ๋ฅผ ๋ด์ผ ํ๊ธฐ ๋๋ฌธ์ ์กฐ๊ฑด,์ํฉ์ ๋ง๋ ์ ์ ํ ์ํธํ ๋ฐฉ์์ ์ฌ์ฉํ๋ฉด ๋๋ค!!