13. Digest Authentication

[Intro]

๊ธฐ๋ณธ ์ธ์ฆ์€ ํŽธ๋ฆฌํ•˜๊ณ  ์œ ์—ฐํ•˜์ง€๋งŒ ์ „ํ˜€ ์•ˆ์ „ํ•˜์ง€ ์•Š๋‹ค. (base64๋Š” ๋””์ฝ”๋”ฉ์ด ์‰ฌ์›Œ ์˜๋„์น˜์•Š๊ฒŒ ๋น„๋ฒˆ์„ ๋ณด๋Š”๊ฑด ๋ง‰์„ ์ˆ˜ ์žˆ์ง€๋งŒ, ์•…์˜๋ฅผ ๊ฐ€์ง„ ์‚ฌ๋žŒ์„ ๋ง‰์„์ˆ˜ ์—†์Œ)

๊ธฐ๋ณธ ์ธ์ฆ์„ ์•ˆ์ „ํ•˜๊ฒŒ ์‚ฌ์šฉํ•˜๋Š” ์œ ์ผํ•œ ๋ฐฉ๋ฒ•์€ SSL๊ณผ ๊ฒฐํ•ฉํ•ด์„œ ์‚ฌ์šฉํ•˜๋Š” ๊ฒƒ์ด๋‹ค.

๋‹ค์ด์ œ์ŠคํŠธ ์ธ์ฆ์€ ๊ธฐ๋ณธ์ธ์ฆ๊ณผ ํ˜ธํ™˜๋˜๋Š” ๋” ์•ˆ์ „ํ•œ ๋Œ€์ฒด์ œ๋กœ ๊ฐœ๋ฐœ์ด ๋˜์—ˆ๋‹ค.

๋„๋ฆฌ ์“ฐ์ด์ง€๋Š” ์•Š์ง€๋งŒ ๊ฐœ๋…์€ ๋ณด์•ˆ ํŠธ๋žœ์žญ์…˜์„ ๊ตฌํ˜„ํ•  ๋•Œ ์œ ์šฉํ•˜๋‹ค.

1) ๋‹ค์ด์ œ์ŠคํŠธ ์ธ์ฆ์˜ ๊ฐœ์„ ์ 

๊ธฐ๋ณธ ์ธ์ฆ์˜ ๊ฐ€์žฅ ์‹ฌ๊ฐํ•œ ๊ฒฐํ•จ์„ ์ˆ˜์ •ํ•œ ๋˜๋‹ค๋ฅธ HTTP ์ธ์ฆ ํ”„๋กœํ† ์ฝœ

ํŠน์ง•

  • ๋น„๋ฐ€๋ฒˆํ˜ธ๋ฅผ ๋„คํŠธ์›Œํฌ๋ฅผ ํ†ตํ•ด ์ ˆ๋Œ€ ํ‰๋ฌธ์œผ๋กœ ๋ณด๋‚ด์ง€ ์•Š๋Š”๋‹ค.

  • ์ธ์ฆ ์ฒด๊ฒฐ์„ ๊ฐ€๋กœ์ฑ„์„œ ์žฌํ˜„ํ•˜๋ ค๋Š” ์•…์˜์ ์ธ ์‚ฌ๋žŒ์„ ์ฐจ๋‹จํ•œ๋‹ค.

  • ๊ตฌํ˜„์— ๋”ฐ๋ผ ๋ฉ”์„ธ์ง€ ๋‚ด์šฉ ์œ„์กฐ๋ฅผ ๋ง‰๋Š”๊ฒƒ๋„ ๊ฐ€๋Šฅํ•˜๋‹ค.

  • ๊ทธ ์™ธ ๋ช‡๋ช‡ ์ž˜ ์•Œ๋ ค์ง„ ํ˜•ํƒœ์˜ ๊ณต๊ฒฉ์„ ๋ง‰๋Š”๋‹ค.

  • ๋‹ค์ด์ œ์ŠคํŠธ ์ธ์ฆ์ด ๊ฐ€๋Šฅํ•œ ๊ฐ€์žฅ ์•ˆ์ „ํ•œ ํ”„๋กœํ† ์ฝœ์€ ์•„๋‹ˆ๋‹ค. ํ•˜์ง€๋งŒ ๊ธฐ๋ณธ ์ธ์ฆ๋ณด๋‹ค ํ›จ์”ฌ ๊ฐ•๋ ฅํ•˜๋‹ค.

    [HTTP ํŠธ๋žœ์žญ์…˜์„ ์œ„ํ•œ ๋งŽ์€ ์š”๊ตฌ์‚ฌํ•ญ์„ ๋งŒ์กฑํ•˜๋ ค๋ฉด HTTPS + TLS ๊ฐ€ ๋” ์ ํ•ฉํ•˜๋‹ค.]

  • ๋‹ค์ด์ œ์ŠคํŠธ ์ธ์ฆ์€ ๋‹ค๋ฅธ ์ธํ„ฐ๋„ท ์„œ๋น„์Šค๋ฅผ ์œ„ํ•ด ์ œ์•ˆ๋œ ๋งŽ์€ ์ธ๊ธฐ์žˆ๋Š” ๋ณด์•ˆ์ฒด๊ณ„๋ณด๋‹ค ๊ฐ•๋ ฅํ•˜๋‹ค.

โ‘  ๋น„๋ฐ€๋ฒˆํ˜ธ๋ฅผ ์•ˆ์ „ํ•˜๊ฒŒ ์ง€ํ‚ค๊ธฐ ์œ„ํ•ด ์š”์•ฝ ์‚ฌ์šฉํ•˜๊ธฐ

  • ๋‹ค์ด์ œ์ŠคํŠธ์ธ์ฆ์˜ ์ขŒ์šฐ๋ช…: "์ ˆ๋Œ€๋กœ ๋น„๋ฐ€๋ฒˆํ˜ธ๋ฅผ ๋„คํŠธ์›Œํฌ๋ฅผ ํ†ตํ•ด ๋ณด๋‚ด์ง€ ์•Š๋Š”๋‹ค."

  • ๋น„๋ฐ€๋ฒˆํ˜ธ๋ฅผ ๋ณด๋‚ด๋Š” ๋Œ€์‹ , ๋น„๋ฐ€๋ฒˆํ˜ธ๋ฅผ ๋น„๊ฐ€์—ญ์ ์œผ๋กœ ์—ฎ์€ '์ง€๋ฌธ(fingerprint)', '์š”์•ฝ(digest)'๋ฅผ ๋ณด๋‚ธ๋‹ค.

โ‘ก ๋‹จ๋ฐฉํ–ฅ ์š”์•ฝ

  • ์š”์•ฝ์€ ์ •๋ณด ๋ณธ๋ฌธ์˜ ์••์ถ•์ด๋‹ค.

  • ์š”์•ฝ์€ ๋‹จ๋ฐฉํ–ฅ ํ•จ์ˆ˜๋กœ ๋™์ž‘ํ•œ๋‹ค.

  • ์ผ๋ฐ˜์ ์œผ๋กœ ์ž…๋ ฅ๊ฐ€๋Šฅํ•œ ๋ฌดํ•œ ๊ฐ€์ง€์˜ ๋ชจ๋“  ์ž…๋ ฅ๊ฐ’๋“ค์„์œ ํ•œํ•œ ๋ฒ”์œ„์˜ ์••์ถ•์œผ๋กœ ๋ณ€ํ™˜ํ•œ๋‹ค.

  • ์ธ๊ธฐ์žˆ๋Š” ์š”์•ฝ ํ•จ์ˆ˜ ์ค‘ ํ•˜๋‚˜์ธ MD5๋Š” ์ž„์˜์˜ ๋ฐ”์ดํŠธ ๋ฐฐ์—ด์„ ์›๋ž˜ ๊ธธ์ด์™€ ์ƒ๊ด€์—†์ด 128๋น„ํŠธ ์š”์•ฝ์œผ๋กœ ๋ณ€ํ™˜ํ•œ๋‹ค.

  • ์š”์•ฝ์—์„œ ์ค‘์š”ํ•œ ๊ฒƒ์€ ๋งŒ์•ฝ pw๋ฅผ ๋ชจ๋ฅด๋ฉด ์„œ๋ฒ„์— ๋ณด๋‚ผ ์•Œ๋งž์€ ์š”์•ฝ์„ ์ถ”์ธกํ•˜๊ธฐ ์œ„ํ•ด ํฐ ์‹œ๊ฐ„์†Œ๋ชจ๋ฅผ ํ•œ๋‹ค๋Š” ์ .

    ์š”์•ฝ์„ ๊ฐ–๊ณ  ์žˆ๋‹ค๋ฉด, ๋ฌดํ•œ๊ฐœ์˜ ์ž…๋ ฅ๊ฐ’๋“ค ์ค‘ ์š”์•ฝ์„ ์ƒ์„ฑํ•˜๋Š” ๊ฒƒ์„ ์ฐพ๊ธฐ์œ„ํ•ด ๋”์ฐํ•˜๊ฒŒ ๋งŽ์€ ์‹œ๊ฐ„ ์†Œ๋ชจ๋ฅผ ํ•œ๋‹ค.

โ‘ข ์žฌ์ „์†ก ๋ฐฉ์ง€๋ฅผ ์œ„ํ•œ nonce ์‚ฌ์šฉ

์žฌ์ „์†ก ๊ณต๊ฒฉ ๋ฐฉ์ง€๋ฅผ ์œ„ํ•ด์„œ ์„œ๋ฒ„๋Š” ํด๋ผ์ด์–ธํŠธ์—๊ฒŒ nonce๋ผ๊ณ  ๋ถˆ๋ฆฌ๋Š” ํŠน๋ณ„ํ•˜๊ณ  ์ž์ฃผ๋ฐ”๋€Œ๋Š” ์ฆํ‘œ๋ฅผ ๊ฑฐ๋‚ธ๋‹ค. (์•ฝ 1๋ฐ€๋ฆฌ์ดˆ๋งˆ๋‹ค, ํ˜น์€ ์ธ์ฆํ•  ๋•Œ๋งˆ๋‹ค ๊ฑด๋‚ด์ค€๋‹ค.)

์ €์žฅ๋œ ๋น„๋ฐ€๋ฒˆํ˜ธ ์š”์•ฝ์€ ํŠน์ • nonce ๊ฐ’์— ๋Œ€ํ•ด์„œ๋งŒ ์œ ํšจํ•˜๊ธฐ ๋•Œ๋ฌธ์— ๋น„๋ฐ€๋ฒˆํ˜ธ ์—†์ด ๊ณต๊ฒฉ์ž๊ฐ€ ์˜ฌ๋ฐ”๋ฅธ ์š”์•ฝ์„ ๊ณ„์‚ฐํ•˜๋Š” ๊ฒƒ์€ ๊ฐ€๋Šฅํ•˜์ง€ ์•Š๋‹ค.

โ‘ฃ ๋‹ค์ด์ œ์ŠคํŠธ ์ธ์ฆ ํ•ธ๋“œ ์…ฐ์ดํฌ

๊ธฐ์กด ํ—ค๋”์— ๋ช‡๋ช‡ ์ƒˆ ์˜ต์…˜์„ ์ถ”๊ฐ€ํ–ˆ๊ณ , ์„ ํƒ์  ํ—ค๋”์ธ Authorization-Info๊ฐ€ ์ƒˆ๋กœ ์ถ”๊ฐ€๋˜์—ˆ๋‹ค.

  • ๋‹ค์ด์ œ์ŠคํŠธ ์ธ์ฆ์˜ ํ•ต์‹ฌ

    • ๊ณต๊ฐœ๋œ ์ •๋ณด, ๋น„๋ฐ€์ •๋ณด, ์‹œํ•œ๋ถ€ nonce ๊ฐ’์„ ์กฐํ•ฉํ•œ ๋‹จ๋ฐฉํ–ฅ ์š”์•ฝ.

(์ดํ•˜ ๋‹ค์ด์ œ์ŠคํŠธ ์ธ์ฆ ํ•„๊ธฐ ์ค‘๋žต)

Last updated