Spring Security ์์๋ BCryptPasswordEncoder ๋ผ๋ ํด๋์ค๋ฅผ ์ ๊ณตํ๋๋ฐ
์ด ํด๋์ค๋ ๋น๋ฐ๋ฒํธ๋ฅผ ์ํธํํ ๋ ์ฌ์ฉํ๋ค.
์ด๋ ์ํธํ ๋ฐฉ์์ BCrypt ํด์ ํจ์ ์๊ณ ๋ฆฌ์ฆ์ ์ฌ์ฉํ๋๋ฐ
BCrypt ํด์ ํจ์ ์๊ณ ๋ฆฌ์ฆ์ ๋ํด ์์ธํ ์์๋ณด๊ฒ ๋ค.
- BCrypt ๋?
BCrypt ๋ฐฉ์์ ๋น๋ฐ๋ฒํธ ํด์ฑ์ ์ํ ์๊ณ ๋ฆฌ์ฆ์ด๋ค.
๋จ๋ฐฉํฅ ํด์๋ก ์๋ณธ ๋น๋ฐ๋ฒํธ๋ฅผ ๋ณต์ํ ์ ์๋ค.
- BCrypy ๋์ ๋ฐฉ์
๋ด๋ถ์ ์ผ๋ก ๋๋คํ ์ํธ๋ฅผ ์๋ ์์ฑํ์ฌ ๋น๋ฐ๋ฒํธ ํด์ฑ์ ํฌํจ์ํจ๋ค.
๋๋ค salt ์์ฑ > ๋น๋ฐ๋ฒํธ + salt ๊ฒฐํฉ > ๋น์ฉํฉํฐ์ ๋ฐ๋ฅธ ๋ฐ๋ณต ํด์ฑ > ํด์ฑ ๊ฒฐ๊ณผ ์ ์ฅ
์ ๊ณผ์ ์ ๊ฑฐ์น๋ค.
- salt(์ํธ) ๋?
ํด์ํจ์์ ์ถ๊ฐ์ ์ผ๋ก ์ฌ์ฉ๋๋ ๋๋ค ๋ฐ์ดํฐ
1. ๋ฌด์์์ฑ ์ถ๊ฐ : ๋์ผํ ๋น๋ฐ๋ฒํธ๋ผ๋ ์๋ฅด๊ฐ ๋ค๋ฅด๋ฉด ๋ค๋ฅธ ํด์๊ฐ์ด ์์ฑ๋จ
2. ๋ฌด์์ ๋์ ๊ณต๊ฒฉ ๋ฐฉ์ด : ๋ฏธ๋ฆฌ ๊ณ์ฐ๋ ํด์๊ฐ์ ์ฌ์ฉํ ๊ฐ๋ฅ์ฑ์ ๋ฐฉ์ง
3. ์ค๋ณต ๋ฐฉ์ง : ๋์ผํ ๋น๋ฐ๋ฒํธ๋ฅผ ์ฌ์ฉํด๋ ์๋ก ๋ค๋ฅธ ํด์ ๊ฐ์ด ์์ฑ๋จ
pass123 + slat2 => hash1
pass123 + salt2 => hash2
- ๋น์ฉ ํฉํฐ (cost factor)
1. bcrypt ๋ฐ๋ณต ํ์๋ฅผ ์ค์ ํ๋ ๋น์ฉ ํฉํฐ ์ ๊ณต
2. 2์ ๊ฑฐ๋ญ์ ๊ณฑ์ผ๋ก ์ค์ ๋๊ณ
3. ๋น์ฉ ํฉํฐ๊ฐ ๋์ ์๋ก ๋ณด์์ด ๊ฐํ๋์ง๋ง ์ฐ์ฐ ์๋๋ ๋๋ ค์ง