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์— ์žˆ์„ ๊ฐ€๋Šฅ์„ฑ์€ ๊ฑฐ์˜ ์—†๋‹ค)

๋Œ“๊ธ€๋‚จ๊ธฐ๊ธฐ