์ธ์ฆ์ ํ์๊ฐ์
๊ณผ ๋ก๊ทธ์ธ์ ๋งํฉ๋๋ค!
์ธ์ฆ์ ์์ด๋๋ ์ด๋ฉ์ผ์ฃผ์, ๋น๋ฐ๋ฒํธ ๋ฑ์ผ๋ก ์๋น์ค๋ฅผ ๋๊ฐ ์ด๋ป๊ฒ ์ฐ๋์ง ํ์ธํ๋ ์ ์ฐจ๋ผ๊ณ ์๊ฐํ๋ฉด ๋ฉ๋๋ค.
์ธ์ฆ ์ ์ฐจ์์ ๊ฐ์ฅ ์ค์ํ๊ฒ ์๊ฐํด์ผ ํ ๊ฒ ๋น๋ฐ๋ฒํธ ์
๋๋ค.
๋น๋ฐ๋ฒํธ๋ Database์ ์ ์ฅ๋ ๋ ์
๋ ฅํ ๊ฐ ๊ทธ๋๋ก ์ ์ฅ์ ํ๋๊ฑด ์ ๋ ๊ธ์ง!
ํดํน์ ๋นํด์ ์ ์ถ์ด ๋ ์๋ ์๊ณ ๋ฒ์ ์ผ๋ก ์ํธํํด์ ์ ์ฅํ๋๋ก ๊ท์ ์ด ๋์ด ์์ต๋๋ค.
์ํธํ๋ ํด์ฑ์ ์ฌ์ฉํด์ ๋ณต์ํ ์ ์๋๋ก Database์ ์ ์ฅ๋ฉ๋๋ค.
๋ณธ๋ ํด์ฌํจ์๋ ์๋ฃ๊ตฌ์กฐ์์ ๋น ๋ฅด๊ฒ ์๋ฃ๋ฅผ ๊ฒ์ ํ๊ฑฐ๋ ๋ฐ์ดํฐ์ ์๋ณ์กฐ๋ฅผ ์ฒดํฌํ๊ธฐ ์ํด ์ฌ์ฉ
์ธํ์ด ์์ผ๋ฉด ์์ํ๋ ํ๋๋ง ๋์ค๋ ํจ์ํํ๋ก ๋์ด์์ต๋๋ค.
๋จ๋ฐฉํฅ ํด์ ํจ์๋ ์๋ณธ ๋ฉ์์ง๋ฅผ ๋ณํํ์ฌ ์ํธํ๋ ๋ฉ์์ง์ธย ๋ค์ด์ ์คํธ(digest)๋ฅผ ์์ฑํฉ๋๋ค
์์์ 20์ ํด์ํด์ 2000์ด๋ผ๋ ๊ฐ์ด ๋์ค๋๊ฑด ์์ ์์ง๋ง 5000์ด๋ผ๋ ๊ฐ์ด ์๋ 1์ด๋ผ๋ ๊ฐ์ ์์ ์๊ฒ ๋ฉ๋๋ค ๊ทธ๋์ ๋ณต์์ด ๋ถ๊ฐ๋ฅํ ๋จ๋ฐฉํฅ ํด์ฌ ํจ์๋ ์ํธํ์ ์ฉ๋๋ก๋ ์ฌ์ฉ์ด ๋๋ค๊ณ ํฉ๋๋ค.
๋จ ๊ฐ์๊ฐ์ธ๊ฑธ ์์ ์๋๋ฐฉ๋ฒ
์์
password: 1235
hash256์ด๋ผ๋ ํด์ฌ ํจ์๋ฅผ ์ฌ์ฉ 0b47c69b1033498d5f33f5f7d97bb6a3126134751629f4d0185c115db44c094e
์์ ์ค๋ช
ํ๋ฏ์ด ๋ณธ๋ ํด์ฌํจ์๋ ์๋ฃ๊ตฌ์กฐ์์ ๋น ๋ฅด๊ฒ ์๋ฃ๋ฅผ ๊ฒ์ ํ๊ฑฐ๋ ๋ฐ์ดํฐ์ ์๋ณ์กฐ๋ฅผ ์ฒดํฌํ๊ธฐ ์ํด ์ฌ์ฉ ํ๋ ๋ฐฉ์์ด๋ผ ๊ณต๊ฒฉ์ ์๋ํ๋ ์ฌ๋์ด ๋ฏธ๋ฆฌ ํด์ฌ ๊ฐ๋ค์ ๊ณ์ฐํด ๋์ ํ
์ด๋ธ์ ์ฌ์ฉํ ๋๋ ๋น ๋ฅธ ์๋๋ก ์ํธ๋ฅผ ์ถ์ธก ํ ์ ์๋ค๊ณ ํฉ๋๋ค.
๋จ๋ฐฉํฅ ํด์ฌ ํจ์์ ์ทจ์ฝ์ ๋ค์ ๋ณด์ํ๊ธฐ ์ํด ์ผ๋ฐ์ ์ผ๋ก 2๊ฐ์ง ๋ณด์์ ๋ค์ด ์ฌ์ฉ๋๋๋ฐ ์๋์์ ์์ ๋ณด๊ฒ ์ต๋๋ค
์ฒซ๋ฒ์งธ๋ก๋ Salting ์ธ๋ฐ ๋ง๊ทธ๋๋ก ์๊ธ์ ์น๊ณ ๋๋ ค์ค๋ค ์๊ฐํ๋ฉด ๋์๋๋ฐ
์
๋ ฅํ ๋น๋ฐ๋ฒํธ์ ์์๋ก ์์ฑํ ๋ฌธ์์ด(Salt)์ ํฉ์ณ์ ํด์ฑ์ ํด์ฃผ๊ณ ์ด ํด์ ๊ฐ์ ์ ์ฅํ๋ ๋ฐฉ๋ฒ ์
๋๋ค.
๋น๊ต๋ฅผ ์ํด ํด์๊ฐ๊ณผ Salt๊ฐ์ ๊ฐ์ด ์ ์ฅํด์ฃผ์ด์ผ
๋๋ฒ์งธ๋ Key Stretching ํด์ปค๊ฐ ํจ์ค์๋๋ฅผ ๋ฌด์์ ๋์ ์ ํตํด ํด์๊ฐ์ ๊ณ์ฐํ๋๋ฐ ํ์ํ ์๊ฐ์ ๋ํญ ๋๋ฆฌ๊ธฐ ์ํด salting๋ฐ ํด์ฑ์ ์ฌ๋ฌ๋ฒ ๋ฐ๋ณตํด์ ์๋ณธ ๊ฐ์ ์ ์ถํ๊ธฐ ์ด๋ ต๊ฒ ๋ง๋๋๊ฑฐ๋ผ ์๊ฐํ์๋ฉด ๋ฉ๋๋ค.
Saltingd์ Key Stretching์ ๋ํ์ ๋ผ์ด๋ธ๋ฌ๋ฆฌ๋ค.
๋ค์ํ ์ธ์ด๋ฅผ ์ง์ํ๊ณ ์ฌ์ฉ์ด ๊ฐํธํดํด์ ์ฝ๊ฒ ์ ์ฉ์ด ๊ฐ๋ฅํฉ๋๋ค.
์ธ๊ฐ๋ ์ ์ ๊ฐ ์์ฒญํ๋ request๋ฅผ ์คํํ ์ ์๋ ๊ถํ์ด ์๋ ์ ์ ์ธ๊ฐ๋ฅผ ํ์ธํ๋ ์ ์ฐจ ์ ๋๋ค
JWT์ ๊ตฌ์กฐ๋ ์๋ ๊ทธ๋ผ์ฒ๋ผ ๊ตฌ์กฐ๊ฐ ๋์ด์์ต๋๋ค
ํ ๊ทผ์ ํ์
๊ณผ ํด์ ์๊ณ ๋ฆฌ์ฆ ์ ๋ณด๊ฐ ๋ค์ด๊ฐ๋๋ค
ํค๋์ ๋ด์ฉ์๋ BASE64 ๋ฐ์์ผ๋ก ์ธ์ฝ๋ฉํด์ JWT์ ๊ฐ์ฅ ์ฒซ ๋ถ๋ถ์ ๊ธฐ๋ก์ด ๋ฉ๋๋ค
์์
{
"alg": "HS256", "typ": JWP" }
Payload์๋ ๋ด์ฉ๋ค์ด ๋ค์ด๊ฐ๋๋ค.
๋ด์ฉ์๋ exp์ ๊ฐ์ด ๋ง๋ฃ์๊ฐ์ ๋ํ๋ด๋ ๊ณต๊ฐ ํด๋ ์์ด, ํด๋ผ์ด์ธํธ์ ์๋ฒ๊ฐ ํ์ํ์ ์ฌ์ฉ ํ๋ ๋น๊ณต๊ฐ ํด๋ ์ ์ ์กฐํฉํด์ ์์ฑํ๋ค BASE64๋ก ์ธ์ฝ๋ฉํ์ฌ JWT์ ๋๋ฒ์งธ ๋ถ๋ถ์ ๊ธฐ๋ก์ด ๋ฉ๋๋ค.
์์
{
"uesr-id": 1, "exp": 1539517391 }
Signature์ ์๋ช
๋ถ๋ถ์ธ๋ฐ JWT๊ฐ ์๋ณธ ๊ทธ๋๋ก๋ผ๋ ๊ฒ์ ํ์ธํ ๋ ์ฌ์ฉํ๋ ๋ถ๋ถ์ด๋ผ๊ณ ํฉ๋๋ค.
Header ์ Payload , JWT secret์ ํค๋์ ์ง์ ๋ ์ํธ ์๊ณ ๋ฆฌ์ฆ์ผ๋ก ์ํธํ ํ์ฌ ์ ์กํฉ๋๋ค.(๋ณตํธํ ๊ฐ๋ฅ)