2023-04-10 TIL

์ •์Šน์›ยท2023๋…„ 4์›” 11์ผ
0
post-thumbnail
post-custom-banner

๐Ÿ“’ ๋ชฉ์ฐจ

๐Ÿ“Œ ๋กœ๊ทธ์ธ ํ”„๋กœ์„ธ์Šค ์ดํ•ด
๐Ÿ“Œ JWT ํ† ํฐ๊ณผ ์กฐ์ž‘ ๋ถˆ๊ฐ€๋Šฅ์„ฑ ์ดํ•ด
๐Ÿ“Œ ์•”ํ˜ธํ™”(์–‘๋ฐฉํ–ฅ ์•”ํ˜ธํ™”)์™€ ํ•ด์‹ฑ(๋‹จ๋ฐฉํ–ฅ ์•”ํ˜ธํ™”)
๐Ÿ“Œ Hash(๋‹จ๋ฐฉํ–ฅย ์•”ํ˜ธํ™”)
๐Ÿ“Œ Key Stretching & Salt

๐Ÿ“Œ ๋กœ๊ทธ์ธ ํ”„๋กœ์„ธ์Šค ์ดํ•ด

โœ… ์ฒซ ๋ฒˆ์งธ ๋กœ๊ทธ์ธ ์—ญ์‚ฌ (์ฟ ํ‚ค / ์„ธ์…˜ ๋กœ๊ทธ์ธ)

์šฐ๋ฆฌ๊ฐ€ ์ด๋ฉ”์ผ๊ณผ ๋น„๋ฐ€๋ฒˆํ˜ธ๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ ๋กœ๊ทธ์ธ์„ ํ•œ๋‹ค๊ณ  ๊ฐ€์ •ํ•ด๋ณด์ž. ๋กœ๊ทธ์ธ ๋ฒ„ํŠผ์„ ๋ˆ„๋ฅด๊ฒŒ ๋˜๋ฉด, ๋ฐฑ์—”๋“œ ์„œ๋ฒ„๋กœ loginAPI ์š”์ฒญ์ด ๋‚ ๋ผ๊ฐ€๊ฒŒ ๋˜๊ณ , ๋ฐฑ์—”๋“œ์—์„œ๋Š” ํ•ด๋‹น ์œ ์ €๋ฅผ Backend session์— ์ €์žฅํ•œ๋‹ค.

๊ทธ ํ›„, session ID๋ฅผ ๋ถ€์—ฌํ•˜์—ฌ ๋ธŒ๋ผ์šฐ์ €๋กœ ๋ณด๋‚ด์ค€๋‹ค.

์ด๋•Œ, session ID๋Š” ๋กœ๊ทธ์ธ์„ ํ•ด์•ผ์ง€๋งŒ ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ๋Š” ์„œ๋น„์Šค์— ์‚ฌ์šฉ๋œ๋‹ค. ์˜ˆ๋ฅผ ๋“ค์–ด, ํฌ์ธํŠธ์ถฉ์ „API, ํ”„๋กœํ•„ ์ˆ˜์ •API๊ณผ ๊ฐ™์€ ์„œ๋น„์Šค๊ฐ€ ์žˆ๋‹ค.

์ข€ ๋”, ๊ตฌ์ฒด์ ์œผ๋กœ ์„ค๋ช…ํ•˜์ž๋ฉด, ์šฐ๋ฆฌ๊ฐ€ ๋กœ๊ทธ์ธํ•˜์—ฌ ํฌ์ธํŠธ๋ฅผ ์ถฉ์ „ํ•œ๋‹ค๊ณ  ํ•ด๋ณด์ž.

๋ฐฑ์—”๋“œ์—์„œ๋Š” ์‹ ์›์ด ํ™•์ธ๋˜์ง€ ์•Š์€ ์œ ์ €๊ฐ€ ํฌ์ธํŠธ๋ฅผ ์ถฉ์ „ํ•˜๋Š” ๊ฒƒ์„ ํ—ˆ์šฉํ•  ์ˆ˜ ์—†๊ธฐ ๋•Œ๋ฌธ์— ์œ ์ €๋ฅผ ์‹๋ณ„ํ•˜๊ธฐ ์œ„ํ•ด ์ถฉ์ „์„ ์š”์ฒญํ•œ ์œ ์ €๊ฐ€ session ID๋ฅผ ๋„ฃ์–ด์„œ ํฌ์ธํŠธ ์ถฉ์ „ ์š”์ฒญ์ด ๋“ค์–ด์˜ค๋„๋ก ํ•œ๋‹ค.

๊ทธ ํ›„, ๋ฐฑ์—”๋“œ์—์„œ๋Š” session ID๋ฅผ ํ™•์ธํ•˜์—ฌ ํฌ์ธํŠธ๋ฅผ ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค์— ์ €์žฅํ•˜๊ณ  ๋งŒ์•ฝ, ์‹ ์›์ด ํ™•์ธ๋˜์ง€ ์•Š์•˜๋‹ค๋ฉด ์—๋Ÿฌ ๋ฉ”์‹œ์ง€๋ฅผ ๋ฐ˜ํ™˜ํ•ด์ค€๋‹ค.

ํ•˜์ง€๋งŒ, ์ด๋Ÿฌํ•œ ๋ฐฉ์‹์—๋Š” ๋ฌธ์ œ์ ์ด ์กด์žฌํ•œ๋‹ค.

์œ ์ €์˜ ์ •๋ณด๋ฅผ ๋ฐฑ์—”๋“œ ์„œ๋ฒ„๋กœ ๋ฐ›๊ฒŒ ๋˜๋‹ˆ, ํ•œ๋ฒˆ์— ์—ฌ๋Ÿฌ๋ช…์˜ ์ •๋ณด๋ฅผ ๋ฐ›๋Š”๋ฐ ํ•œ๊ณ„์ ์ด ์žˆ๋‹ค.
์ฆ‰, ์ ‘์†์ž๊ฐ€ ๋งŽ์•„์งˆ์ˆ˜๋ก ๋ฐฑ์—”๋“œ ์„œ๋ฒ„์˜ ๋ฉ”๋ชจ๋ฆฌ๊ฐ€ ๋ถ€์กฑํ•ด์ง€๊ณ , ์„œ๋ฒ„์— ๋ฌธ์ œ๊ฐ€ ์ƒ๊ธฐ๊ฒŒ ๋œ๋‹ค.

์ด๋Ÿฌํ•œ ๋ฌธ์ œ๋ฅผ ํ•ด๊ฒฐํ•˜๊ธฐ ์œ„ํ•ด ๋ฐฑ์—”๋“œ ์ปดํ“จํ„ฐ๋ฅผ scale-upํ•˜๊ฒŒ ๋˜์—ˆ๋‹ค.

scale up
scale-up์ด๋ž€ CPU ๋˜๋Š” Memory ๋“ฑ์„ ์—…๊ทธ๋ ˆ์ด๋“œํ•˜์—ฌ ์ปดํ“จํ„ฐ์˜ ์„ฑ๋Šฅ์„ ์˜ฌ๋ ค์ฃผ๋Š” ๊ฒƒ์ด๋‹ค.

โœ… ๋‘ ๋ฒˆ์งธ ๋กœ๊ทธ์ธ ์—ญ์‚ฌ (์ฟ ํ‚ค / ์„ธ์…˜ ๋กœ๊ทธ์ธ)


๋ฐฑ์—”๋“œ ์ปดํ“จํ„ฐ์˜ ์„ฑ๋Šฅ์„ ์˜ฌ๋ฆฌ๋”๋ผ๋„ ์ ‘์†์ž ์ˆ˜๊ฐ€ ๋งŽ์•„์ง€๊ฒŒ ๋˜๋ฉด ์—ฌ์ „ํžˆ ์„œ๋ฒ„์˜ ๋ถ€ํ•˜๋ฅผ ์ดˆ๋ž˜ํ•˜๊ฒŒ ๋˜์—ˆ๋‹ค.

๋”ฐ๋ผ์„œ ๋‘ ๋ฒˆ์งธ ๋ฐฉ๋ฒ•์œผ๋กœ๋Š” ๋ฐฑ์—”๋“œ ์ปดํ“จํ„ฐ๋ฅผ ๋ณต์‚ฌํ•˜์˜€๋‹ค.
์ฆ‰, ์œ ์ €์˜ ์ •๋ณด๊ฐ€ ๋‹ด๊ธด ๋ฐฑ์—”๋“œ ์ปดํ“จํ„ฐ๋ฅผ ์—ฌ๋Ÿฌ ๋Œ€๋กœ ๋ณต์‚ฌํ•ด ์„œ๋ฒ„์˜ ๋ถ€ํ•˜๋ฅผ ๋ถ„์‚ฐํ•˜๋Š” ๊ฒƒ์ด๋‹ค.

ํ•˜์ง€๋งŒ ์ด ๋ฐฉ๋ฒ• ์—ญ์‹œ, ๋ฌธ์ œ๊ฐ€ ์žˆ์—ˆ๋Š”๋ฐ, ์ปดํ“จํ„ฐ๋ฅผ ๋ณต์‚ฌํ•  ๋•Œ, session ์ •๋ณด๊นŒ์ง€ ๋ณต์‚ฌํ•˜์ง€ ์•Š์•„ ์œ ์ €์˜ ๋กœ๊ทธ์ธ ์ •๋ณด๊ฐ€ ์—†๋‹ค๋Š” ๊ฒƒ์ด๋‹ค.

๊ฒฐ๊ตญ, ๋™์ผํ•œ ์œ ์ € ์ •๋ณด์— ๋Œ€ํ•ด ๋ชจ๋“  ๋ฐฑ์—”๋“œ ์ปดํ“จํ„ฐ์— ์ €์žฅํ•˜๊ธฐ ๋•Œ๋ฌธ์— ์„œ๋ฒ„๊ฐ€ ํ„ฐ์ง€๋Š” ๋ฌธ์ œ๋Š” ์—ฌ์ „ํžˆ ํ•ด๊ฒฐํ•˜์ง€ ๋ชปํ–ˆ๋‹ค.

โœ… ์„ธ ๋ฒˆ์งธ ๋กœ๊ทธ์ธ ์—ญ์‚ฌ (ํ…Œ์ด๋ธ” ํŒŒํ‹ฐ์…”๋‹ ์ดํ•ด - ์ˆ˜ํ‰(์ƒค๋”ฉ)๊ณผ ์ˆ˜์ง)

์„ธ ๋ฒˆ์งธ ๋ฐฉ๋ฒ•์€ ๋‘ ๋ฒˆ์งธ ๋ฐฉ๋ฒ•์˜ ๋ฌธ์ œ๋ฅผ ๋ณด์™„ํ•œ ๋ฐฉ๋ฒ•์ด๋ฉฐ, ํ˜„์žฌ ๊ฐ€์žฅ ๋งŽ์ด ์‚ฌ์šฉ๋˜๊ณ  ์žˆ๋Š” ๋ฐฉ๋ฒ•์ด๋‹ค.

๋กœ๊ทธ์ธ ์ •๋ณด๋ฅผ ๋ฐฑ์—”๋“œ ์„ธ์…˜์— ์ €์žฅํ•˜๋Š” ๊ฒƒ์ด ์•„๋‹ˆ๋ผ DB์— ์ €์žฅํ•˜๋Š” ๊ฒƒ์ด๋‹ค.

DB๋ฅผ ๋‚˜๋ˆ„๋Š” 2๊ฐ€์ง€ ๋ฐฉ๋ฒ•
1. ์ˆ˜์ง์œผ๋กœ ๋‚˜๋ˆ„๋Š” ์ˆ˜์งํŒŒํ‹ฐ์…”๋‹
2. ์ˆ˜ํ‰์œผ๋กœ ๋‚˜๋ˆ„๋Š” ์ˆ˜ํ‰ํŒŒํ‹ฐ์…”๋‹(์ƒค๋”ฉ)


๋”ฐ๋ผ์„œ ์ด์ œ๋Š” API๋ฅผ ์š”์ฒญํ•  ๋•Œ, ์–ด๋–ค ๋ฐฑ์—”๋“œ ์ปดํ“จํ„ฐ์— ์ ‘์†ํ•ด๋„ ๋˜‘๊ฐ™์€ ์š”์ฒญ์ฒ˜๋ฆฌ์™€ ์‘๋‹ต์ด ์ด๋ฃจ์–ด์ง€๊ฒŒ ๋˜์—ˆ๋‹ค. ๋˜ํ•œ ์ˆ˜ํ‰ ํŒŒํ‹ฐ์…”๋‹์„ ํ†ตํ•ด DB๋ฅผ ๋‚˜๋ˆ„์–ด ์ €์žฅํ•˜๊ธฐ ๋•Œ๋ฌธ์— DB์˜ ๋ถ€ํ•˜๊นŒ์ง€ ๋ถ„์‚ฐํ•  ์ˆ˜ ์žˆ๋‹ค.

DB์— ์ €์žฅํ• ๋•Œ๋Š”, ๋ฉ”๋ชจ๋ฆฌ ๊ธฐ๋ฐ˜ ์„ธ์…˜ ๋ฐฉ์‹์—์„œ ๋””์Šคํฌ ๊ธฐ๋ฐ˜์˜ ํ† ํฐ ๋ฐฉ์‹์œผ๋กœ ๋ฐ”๋€Œ๊ฒŒ ๋˜์—ˆ๋‹ค.

๋กœ๊ทธ์ธ์„ ํ• ๋•Œ, ํ† ํฐ์„ ๋ธŒ๋ผ์šฐ์ €์— ์ „๋‹ฌํ•˜๊ณ  ๋ธŒ๋ผ์šฐ์ €๋Š” ์ €์žฅ๊ณต๊ฐ„์— ํ† ํฐ์„ ์ €์žฅํ•˜๊ณ  ์–ด๋– ํ•œ ํ–‰๋™์„ ํ• ๋•Œ ํ† ํฐ์„ ๊ฐ™์ด ๋ณด๋‚ด์–ด ์‚ฌ์šฉ์ž๊ฐ€ ๋ˆ„๊ตฐ์ง€ ์‹๋ณ„ํ•œ๋‹ค.

ํ•˜์ง€๋งŒ ์—ฌ๊ธฐ์„œ ๋ฌธ์ œ๊ฐ€ ๋ฐœ์ƒํ•˜๋Š”๋ฐ, ๋กœ๊ทธ์ธ์„ ํ• ๋•Œ๋งˆ๋‹ค ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค์—์„œ ํ•ด๋‹น ์œ ์ €๋ฅผ ํŒŒ์•…ํ•ด์•ผ ํ•˜๋Š” ๋ฌธ์ œ๊ฐ€ ์žˆ๋‹ค.
์™œ๋ƒํ•˜๋ฉด, ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค์—์„œ ๋ฐ์ดํ„ฐ๋ฅผ ๊บผ๋‚ด์˜ค๋Š” ์†๋„๊ฐ€ ๋Š๋ฆฌ๊ธฐ ๋•Œ๋ฌธ์ด๋‹ค.

๋”ฐ๋ผ์„œ ์ด๋Ÿฌํ•œ ๋ฌธ์ œ๋ฅผ ํ•ด๊ฒฐํ•˜๊ธฐ ์œ„ํ•ด Redis๋ผ๋Š” ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค์— ์ €์žฅํ•˜์—ฌ ์†๋„ ๋ฌธ์ œ๋ฅผ ํ•ด๊ฒฐํ•œ๋‹ค.

Redis๋ฅผ ์‚ฌ์šฉํ•˜๋ฉด ์ปดํ“จํ„ฐ๊ฐ€ ๊บผ์กŒ์„ ๋•Œ, ๋ฐ์ดํ„ฐ๊ฐ€ ๋‚ ์•„๊ฐ€๋Š” ๋‹จ์ ์ด ์žˆ์ง€๋งŒ ์†๋„๊ฐ€ ๋น ๋ฅธ ์žฅ์ ์ด ์žˆ๋‹ค.

๐Ÿ“Œ JWT ํ† ํฐ๊ณผ ์กฐ์ž‘ ๋ถˆ๊ฐ€๋Šฅ์„ฑ ์ดํ•ด

โœ… ๋„ค ๋ฒˆ์งธ ๋กœ๊ทธ์ธ ์—ญ์‚ฌ


ํ˜„์žฌ ๊ฐ€์žฅ ๋งŽ์ด ์“ฐ์ด๋Š” ๋ฐฉ๋ฒ• ์ค‘ ํ•˜๋‚˜๋กœ JWT ํ† ํฐ ๋ฐฉ์‹์ด๋‹ค.

JWT ํ† ํฐ์€ ์œ ์ € ์ •๋ณด๋ฅผ ๋‹ด์€ ๊ฐ์ฒด๋ฅผ ์•”ํ˜ธํ™”๋ฅผ ํ†ตํ•ด ๋ฌธ์ž์—ด๋กœ ๋งŒ๋“ค์–ด ์•”ํ˜ธํ™”๋œ ํ‚ค(accessToken)๋ฅผ ๋ธŒ๋ผ์šฐ์ €๋กœ ์ „๋‹ฌํ•ด ์ค€๋‹ค.

๋ฐฑ์—”๋“œ๋Š” ๋ธŒ๋ผ์šฐ์ €์—์„œ ๋ฐ›์€ ์•”ํ˜ธํ™” ํ‚ค๋ฅผ ๋ณตํ˜ธํ™”ํ•˜์—ฌ ์œ ์ €๋ฅผ ์‹๋ณ„ํ•œ ํ›„, ์ ‘๊ทผ์ด ๊ฐ€๋Šฅํ•˜๋„๋ก ํ•œ๋‹ค.

JWT ํ† ํฐ์—๋Š” ํ•ด๋‹น ํ† ํฐ์ด ๋ฐœ๊ธ‰ ๋ฐ›์•„์˜จ ์„œ๋ฒ„์—์„œ ์ •์ƒ์ ์œผ๋กœ ๋ฐœ๊ธ‰์„ ๋ฐ›์•˜๋‹ค๋Š” ์ฆ๋ช…์„ํ•˜๋Š” signature๋ฅผ ๊ฐ€์ง€๊ณ  ์žˆ๋‹ค. ๋”ฐ๋ผ์„œ ์‚ฌ์šฉ์ž์˜ ์ •๋ณด๋ฅผ DB๋ฅผ ์—ด์–ด๋ณด์ง€ ์•Š๊ณ ๋„ ์‹๋ณ„ํ•  ์ˆ˜ ์žˆ๋‹ค.

JWT ํ† ํฐ์˜ ๊ตฌ์„ฑ
1. header : ํ† ํฐ์˜ ํƒ€์ž…, ์•”ํ˜ธํ™”์‹œ ์‚ฌ์šฉํ•œ ์•Œ๊ณ ๋ฆฌ์ฆ˜ ์ •๋ณด
2. payload : ํ† ํฐ ๋ฐœํ–‰์ •๋ณด(๋ˆ„๊ตฌ์ธ์ง€, ์–ธ์ œ ๋ฐœํ–‰๋˜์—ˆ๋Š”์ง€, ์–ธ์ œ ๋งŒ๋ฃŒ๋  ๊ฒƒ ์ธ์ง€)
3. signature : ํ† ํฐ์˜ ๋น„๋ฐ€๋ฒˆํ˜ธ

โœ… ์ธ์ฆ (Authentication)

๋กœ๊ทธ์ธ์„ ํ†ตํ•ด accessToken์„ ๋ฐ›์•„์˜ค๋Š” ๊ณผ์ •์„ ์˜๋ฏธํ•œ๋‹ค.
๋ฐ›์•„์˜จ accessToken์—๋Š” ์œ ์ €๊ฐ€ ๋กœ๊ทธ์ธ ํ•œ ๊ธฐ๋ก์ด ์ €์žฅ๋˜์–ด ์žˆ๋‹ค.

๋”ฐ๋ผ์„œ ์œ ์ €์ •๋ณด๋ฅผ ํ™•์ธํ•ด์•ผ ํ•˜๋Š” API๋ฅผ ์‚ฌ์šฉํ•  ๋•Œ, accessToken์„ ์ฒจ๋ถ€ํ•ด์„œ ์š”์ฒญํ•ด์•ผ์ง€ ์œ ์ €์ •๋ณด๋ฅผ ํ™•์ธ ํ›„ ํ•ด๋‹น API๋ฅผ ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ๋‹ค.

โœ… ์ธ์ฆ (Authentication)

์•ž์„œ ๋ฐ›์•„์˜จ accessToken์„ ๋ณตํ˜ธํ™” ํ•˜์—ฌ ์œ ์ €์ •๋ณด๋ฅผ ๊ฒ€์ฆํ•˜๋Š” ๊ณผ์ •์„ ์ธ๊ฐ€๋ผ๊ณ  ํ•œ๋‹ค.

โœ… JWT์˜ ๋ฌธ์ œ์ 

๋ˆ„๊ตฐ๊ฐ€ ํ† ํฌ์„ ๊ฐ€์ ธ๊ฐ„๋‹ค๋ฉด ํ† ํฐ์˜ ์ •๋ณด๋ฅผ ์•Œ์ˆ˜ ์žˆ๋‹ค.
์ฆ‰, JWTํ† ํฐ์€ ์•”ํ˜ธํ™”๋Š” ํ–ˆ์ง€๋งŒ ๋ˆ„๊ตฌ๋“  ์—ด์–ด๋ณผ ์ˆ˜ ์žˆ๋‹ค๋Š” ๋ฌธ์ œ๊ฐ€ ์žˆ๋‹ค.
๋”ฐ๋ผ์„œ, ์ค‘์š”ํ•œ ์ •๋ณด๋Š” JWT ํ† ๊ทผ์— ์ €์žฅํ•ด์„œ๋Š” ์•ˆ๋œ๋‹ค.

์•”ํ˜ธํ™”์™€ ๋ณตํ˜ธํ™”
1. Encoded : ์•”ํ˜ธํ™”

  1. decoded : ๋ณตํ˜ธํ™”(์•”ํ˜ธ๋ฅผ ํ‘ธ๋Š” ๊ฒƒ)

ํ•˜์ง€๋งŒ, ๋ˆ„๊ตฌ๋“ ์ง€ ๋ณตํ˜ธํ™”ํ•˜์—ฌ ์—ด์–ด ๋ณผ ์ˆ˜๋Š” ์žˆ์ง€๋งŒ, ํ† ํฐ์˜ ๋‚ด์šฉ์„ ์กฐ์ž‘ํ•  ์ˆ˜๋Š” ์—†๋‹ค.
ํ† ํฐ์„ ์ƒ์„ฑํ•  ๋•Œ signature(ํ† ํฐ์˜ ๋น„๋ฐ€๋ฒˆํ˜ธ)๋ฅผ ์ƒ์„ฑํ•˜์—ฌ ์‚ฌ์šฉํ•˜๊ฒŒ ๋˜๋Š”๋ฐ, ์ด ๋น„๋ฐ€๋ฒˆํ˜ธ๋ฅผ ๋ˆ„๊ตฌ๋‚˜ ์•„๋Š” ๊ฒƒ์€ ์•„๋‹ˆ๋‹ค. ๋”ฐ๋ผ์„œ ๋ฐฑ์—”๋“œ์—์„œ signature๋ฅผ ํ†ตํ•ด ํ† ํฐ ์กฐ์ž‘ ์—ฌ๋ถ€๋ฅผ ์•Œ ์ˆ˜ ์žˆ๋‹ค.

๐Ÿ“Œ ์•”ํ˜ธํ™”(์–‘๋ฐฉํ–ฅ ์•”ํ˜ธํ™”)์™€ ํ•ด์‹ฑ(๋‹จ๋ฐฉํ–ฅ ์•”ํ˜ธํ™”)

์ผ๋ฐ˜์ ์œผ๋กœ ์‚ฌ๋žŒ๋“ค์ด ๋น„๋ฐ€๋ฒˆํ˜ธ๋ฅผ ๋งŒ๋“ค ๋•Œ, ๋ชจ๋“  ์‚ฌ์ดํŠธ์—์„œ ๋น„๋ฐ€๋ฒˆํ˜ธ๋ฅผ ๋‹ค๋ฅด๊ฒŒ ์„ค์ •ํ•˜๋Š” ๊ฒฝ์šฐ๋Š” ๋งŽ์ง€ ์•Š๋‹ค. ๋”ฐ๋ผ์„œ ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค์— ๋น„๋ฐ€๋ฒˆํ˜ธ๋ฅผ ์ €์žฅํ•  ๋•Œ, ๋น„๋ฐ€๋ฒˆํ˜ธ ๊ทธ๋Œ€๋กœ ์ €์žฅ์„ ํ•˜๊ฒŒ๋˜๋ฉด, ํ•ดํ‚น์ด ๋ฐœ์ƒํ–ˆ์„ ๋•Œ, ํ•ด๋‹น ํŽ˜์ด์ง€ ๋ฟ๋งŒ ์•„๋‹ˆ๋ผ ๋‹ค๋ฅธ ์‚ฌ์ดํŠธ๊นŒ์ง€ ์ถ”๊ฐ€์ ์ธ ํ•ดํ‚น ์œ„ํ—˜์ด ๋ฐœ์ƒํ•˜๊ฒŒ ๋œ๋‹ค.

๋”ฐ๋ผ์„œ, ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค์— ๋น„๋ฐ€๋ฒˆํ˜ธ๋ฅผ ์ €์žฅํ•  ๋•Œ๋Š” ๋น„๋ฐ€๋ฒˆํ˜ธ๋ฅผ ์•”ํ˜ธํ™”ํ•˜์—ฌ ์ €์žฅํ•˜๊ฒŒ ๋œ๋‹ค.

ํ•˜์ง€๋งŒ ์•”ํ˜ธํ™”์— ์‚ฌ์šฉ๋œ ํ‚ค๋ฅผ ์‚ฌ์šฉํ•˜๋ฉด ๋ฐ์ดํ„ฐ๋ฅผ ๋ณตํ˜ธํ™” ํ•  ์ˆ˜๋„ ์žˆ๋‹ค. ๋”ฐ๋ผ์„œ ์™„์ „ํ•œ ์•”ํ˜ธํ™”๊ฐ€ ๋˜์ง€ ์•Š๋Š” ๋ฌธ์ œ๋ฅผ ํ•ด๊ฒฐํ•˜๊ธฐ ์œ„ํ•ด ํ•ด์‹ฑ์ด ๋‚˜ํƒ€๋‚˜๊ฒŒ ๋˜์—ˆ๋‹ค.

โœ… ์•”ํ˜ธํ™”์˜ ์ข…๋ฅ˜

  • ์–‘๋ฐฉํ–ฅ ์•”ํ˜ธํ™” : ์•”ํ˜ธํ™”์™€ ๋ณตํ˜ธํ™”๊ณผ์ •์„ ํ†ตํ•ด ์†ก ใƒป ์ˆ˜์‹  ๊ฐ„ ์ฃผ๊ณ ๋ฐ›๋Š” ๋ฉ”์‹œ์ง€๋ฅผ ์•ˆ์ „ํ•˜๊ฒŒ ์•”ํ˜ธํ™”ํ•˜๊ณ  ํ‰๋ฌธ์œผ๋กœ ๋ณตํ˜ธํ™”ํ•˜๋Š” ๊ณผ์ •.
  • ๋‹จ๋ฐฉํ–ฅ ์•”ํ˜ธํ™” : ํ•ด์‹ฑ(Hashing)์„ ์ด์šฉํ•œ ์•”ํ˜ธํ™” ๋ฐฉ์‹์œผ๋กœ ์–‘๋ฐฉํ–ฅ๊ณผ๋Š” ๋‹ค๋ฅธ ๊ฐœ๋…์œผ๋กœ, ํ‰๋ฌธ์„ ์•”ํ˜ธ๋ฌธ์œผ๋กœ ์•”ํ˜ธํ™”๋Š” ๊ฐ€๋Šฅํ•˜์ง€๋งŒ ์•”ํ˜ธ๋ฌธ์„ ํ‰๋ฌธ์œผ๋กœ ๋ณตํ˜ธํ™” ํ•˜๋Š” ๊ฒƒ์€ ๋ถˆ๊ฐ€๋Šฅ.

๐Ÿ“Œ Hash(๋‹จ๋ฐฉํ–ฅย ์•”ํ˜ธํ™”)

ํ•ด์‹œ๋Š” ์›๋ณธ ๋ฐ์ดํ„ฐ๋ฅผ ๋งคํ•‘์‹œ์ผœ ์™„์ „ํžˆ ๋‹ค๋ฅธ ์•”ํ˜ธํ™”๋œ ๋ฐ์ดํ„ฐ๋กœ ๋ณ€ํ™˜ํ•˜๋Š” ๊ฒƒ์„ ์˜๋ฏธํ•œ๋‹ค.

ํ•ด์‹œ๋Š” ๋‹จ๋ฐฉํ–ฅ ์•”ํ˜ธํ™”์ด๊ธฐ ๋•Œ๋ฌธ์— ๋ณตํ˜ธํ™” ์ฆ‰, ์›๋ณธ ๋ฐ์ดํ„ฐ๋ฅผ ๊ตฌํ•  ์ˆ˜ ์—†๋‹ค.


Password 123456 ์„ ํ•ด์‹œ ํ•จ์ˆ˜์—ย ๋Œ๋ ค์„œ ๋‹ค์ด์ œ์ŠคํŠธ์ธ fs32a3xzz0 ์„ ์ƒ์„ฑํ•˜๊ณ ย ํ•ด๋‹น ๋ฐ์ดํ„ฐ๋ฅผ DB ์— ์ €์žฅํ•œ๋‹ค.

DB์— ์ €์žฅ๋œ ๋‹ค์ด์ œ์ŠคํŠธ๊ฐ€ ์„ค๋ น DB๊ฐ€ ๋ˆ„์ถœ๋œ๋‹ค ํ•˜๋”๋ผ๋„ fs32a3xzz0 ์€ ๋‹จ๋ฐฉํ–ฅ์œผ๋กœ ํ•ด์‹ฑ ๋œ ๋ฌธ์ž๋ผ ๋ณตํ˜ธํ™” ํ•  ์ˆ˜๊ฐ€ ์—†๋‹ค.

๐Ÿ“Œ Key Stretching & Salt

์–ด๋– ํ•œ ์•Œ๊ณ ๋ฆฌ์ฆ˜ ์•”ํ˜ธํ™”๋ฅผ ํ†ตํ•ด ๋‚˜์˜จ ๊ฐ’์„ ๋ณด๊ณ  ๊ทธ ๊ฐ’์ด ๋‚˜์˜ฌ ์ˆ˜ ์žˆ๋Š” ๋ชจ๋“  ๊ฒฝ์šฐ๋ฅผ ์Šค์บ”ํ•˜๋Š” ๋ ˆ์ธ๋ณด์šฐ ํ…Œ์ด๋ธ”์„ ์ด์šฉํ•˜์—ฌ ๋ฌด์ž‘์ • ๋‹ค ๋Œ€์ž…ํ•ด ๋ณตํ˜ธํ™” ํ•˜๋Š” ๊ฒฝ์šฐ๊ฐ€ ์กด์žฌํ•˜๊ธฐ ๋•Œ๋ฌธ์— ํ•ด์‹œ๋กœ๋งŒ ๋ณ€ํ™˜ํ•œ๋‹ค๊ณ  ํ•ด์„œ ๋ณด์•ˆ์ด ์™„๋ฒฝํ•œ ๊ฒƒ์€ ์•„๋‹ˆ๋‹ค.

โœ… Key Stretching

Key Stretching(ํ‚ค-์ŠคํŠธ๋ ˆ์นญ)์€ ๊ฐœ๋ฐœ์ž๊ฐ€ ํšŸ์ˆ˜๋ฅผ ์ •ํ•ด์„œ Hash ํ•จ์ˆ˜๋ฅผ ๋Œ๋ฆฌ๋Š” ๋ฐฉ๋ฒ•์œผ๋กœ ํŒจ์Šค์›Œ๋“œ๋ฅผ ์ €์žฅํ•  ๋•Œ ๊ฐ€์žฅ ์‰ฝ๊ฒŒ ์ƒ๊ฐ ํ•  ์ˆ˜ ์žˆ๋Š” ๋ฐฉ๋ฒ•์ด๋‹ค.

โœ… Salt

์—ฌ๋Ÿฌ ๋ฒˆ ํ•ด์‹œ ํ•จ์ˆ˜๋ฅผ ๋Œ๋ฆฌ๋”๋ผ๋„ ๊ฒฐ๊ตญ ๋ช‡ ๋ฒˆ ๋Œ๋ ธ๋Š”์ง€ ํšŸ์ˆ˜๋งŒ ์•Œ๊ฒŒ ๋œ๋‹ค๋ฉด, ๊ณต๊ฒฉํ•˜๋Š” ์ž…์žฅ์—์„œ ์ƒ์ง•์„ฑ ์žˆ๋Š” ๋Œ€ํ‘œ ๋ฌธ์ž์—ด๋“ค์„ ์ถ”๋ ค๋ณด๋ฉด ์ถฉ๋ถ„ํžˆ ๊ณต๊ฒฉ์ด ๊ฐ€๋Šฅํ•˜๋‹ค.

๋˜ํ•œ ๊ฐ™์€ ๋น„๋ฐ€๋ฒˆํ˜ธ๋ฅผ ์‚ฌ์šฉํ•˜๋Š” ์‚ฌ์šฉ์ž๋“ค์ด ์žˆ๋‹ค๋ฉด ํ•˜๋‚˜์˜ ๊ฒฐ๊ณผ๋ฅผ ๊ฐ–๊ณ ๋„ ๋‹ค์ˆ˜ ์‚ฌ์šฉ์ž์˜ password ๋ฅผ ์•Œ์•„๋‚ผ ์ˆ˜ ์žˆ๋‹ค.

๋”ฐ๋ผ์„œ ์ด๋Ÿฌํ•œ ๋ฌธ์ œ๋ฅผ ๋ฐฉ์ง€ํ•˜๊ธฐ ์œ„ํ•ด ๋„์ž…ํ•œ ๊ฒƒ์ด ๋ฐ”๋กœ ์†”ํŠธ์ด๋‹ค.

Salt(์†”ํŠธ)๋ž€ ํ•ด์‹œํ•จ์ˆ˜๋ฅผ ๋Œ๋ฆฌ๊ธฐ ์ „์— ์›๋ฌธ์— ์ž„์˜์˜ ๋ฌธ์ž์—ด์„ ๋ง๋ถ™์ด๋Š” ๊ฒƒ์„ ๋งํ•œ๋‹ค. ์˜๋ฏธ ๊ทธ๋Œ€๋กœ ์›๋ฌธ์— ์ž„์˜์˜ ๋ฌธ์ž์—ด์„ ๋ถ™์ด๋Š” ์˜๋ฏธ์˜ ์†Œ๊ธˆ์นœ๋‹ค(Salting)์ด๋ผ๊ณ  ์ƒ๊ฐํ•˜๋ฉด ๋œ๋‹ค.

๐ŸŒˆ ์˜ค๋Š˜ ํ•˜๋ฃจ

์˜ค๋Š˜์€ ํšŒ์›๊ฐ€์ž…์— ์‚ฌ์šฉ๋˜๋Š” ๋น„๋ฐ€๋ฒˆํ˜ธ๊ฐ€ ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค์— ์ €์žฅ๋  ๋•Œ, ์–ด๋– ํ•œ ๋ถ€๋ถ„์„ ๊ณ ๋ คํ•ด์•ผ ํ•˜๋Š”์ง€์— ๋Œ€ํ•˜์—ฌ ํ•™์Šตํ•˜์˜€๋‹ค. ์œ ์ €์˜ ๋น„๋ฐ€๋ฒˆํ˜ธ๋Š” ๋ณด์•ˆ๊ณผ ๊ด€๋ จ๋œ ๋ฏผ๊ฐํ•œ ์ •๋ณด์ด๊ธฐ ๋•Œ๋ฌธ์— ๋ฐฑ์—”๋“œ ์ž…์žฅ์—์„œ ์‹ ์ค‘ํ•˜๊ณ  ์ฒ ์ €ํ•˜๊ฒŒ ๊ด€๋ฆฌ ๋˜์–ด์•ผ ํ•œ๋‹ค. ์˜ค๋Š˜ ๋ฐฐ์šด ํšŒ์›๊ฐ€์ž…์˜ ์•”ํ˜ธํ™”๋ฅผ ํ†ตํ•ด ์•ž์œผ๋กœ ๋งŒ๋“ค์–ด ๋‚˜๊ฐˆ ๋กœ๊ทธ์ธ์— ๋Œ€ํ•œ ํ•™์Šต์„ ๋ฏธ๋ฆฌ ์ค€๋น„ํ•˜๋Š” ๋‹จ๊ณ„๋ผ๊ณ  ์ƒ๊ฐํ•œ๋‹ค.

post-custom-banner

0๊ฐœ์˜ ๋Œ“๊ธ€