MapleStory Finger Point

๐ŸŸค JAVA/๐ŸŸค Spring

[Spring Security] BCrypt ํ•ด์‹œ ํ•จ์ˆ˜ ์•Œ๊ณ ๋ฆฌ์ฆ˜

HYEJU01 2024. 11. 29. 17:57

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. ๋น„์šฉ ํŒฉํ„ฐ๊ฐ€ ๋†’์„ ์ˆ˜๋ก ๋ณด์•ˆ์ด ๊ฐ•ํ™”๋˜์ง€๋งŒ ์—ฐ์‚ฐ ์†๋„๋Š” ๋Š๋ ค์ง