HMAC - boostcamp-2020/Project03-A-TOTP GitHub Wiki

MAC์ด๋ž€?

Message Authentication Code

https://ko.wikipedia.org/wiki/๋ฉ”์‹œ์ง€_์ธ์ฆ_์ฝ”๋“œ

๋ฉ”์„ธ์ง€ ์ธ์ฆ์— ์‚ฌ์šฉ๋˜๋Š” ์ฝ”๋“œ

MAC ์‚ฌ์šฉ ๋ฐฉ์‹

์†ก์‹ ์ž๊ฐ€ ๋ฉ”์„ธ์ง€์™€ MAC์„ ๊ฐ™์ด ์ „๋‹ฌํ•˜๋ฉด ์ˆ˜์‹ ์ž๋Š” ๋ฐ›์€ MAC๊ณผ ์ž์‹ ์ด ๋งŒ๋“  MAC์ด ์ผ์น˜ํ•˜๋Š”์ง€ ๋น„๊ตํ•ด์„œ ๋ฉ”์„ธ์ง€๋ฅผ ๊ฒ€์ฆํ•œ๋‹ค

MAC์˜ ํŠน์ง•

  • ์ธ์ฆ ๊ธฐ๋Šฅ : ๋ฉ”์„ธ์ง€๋ฅผ ๋ณด๋‚ธ ์†ก์‹ ์ž๋ฅผ ์ธ์ฆํ•  ์ˆ˜ ์žˆ๋‹ค
  • ๋ฌด๊ฒฐ์„ฑ : ๋ฉ”์„ธ์ง€๊ฐ€ ์ค‘๊ฐ„์— ์œ„์กฐ๋˜์—ˆ๋Š”์ง€ ํ™•์ธํ•  ์ˆ˜ ์žˆ๋‹ค
  • ๊ธฐ๋ฐ€์„ฑ์„ ์ œ๊ณตํ•˜์ง€ ์•Š๋Š”๋‹ค : ๋ฉ”์„ธ์ง€๊ฐ€ ์™ธ๋ถ€์— ๋…ธ์ถœ๋œ๋‹ค
  • ๊ณต๊ฐœํ‚ค(๋น„๋Œ€์นญํ‚ค) ๋ฐฉ์‹๋ณด๋‹ค ๋น ๋ฅด๋‹ค

HMAC์ด๋ž€?

keyed-hash message authentication code, hash-based message authentication code

https://ko.wikipedia.org/wiki/HMAC https://tools.ietf.org/html/rfc2104 http://cseweb.ucsd.edu/~mihir/papers/hmac-cb.pdf

MAC์˜ ํ•œ ์ข…๋ฅ˜๋กœ, ํ•ด์‹œ ํ•จ์ˆ˜์™€ ๋น„๋ฐ€ ํ‚ค๋กœ MAC์„ ๋งŒ๋“œ๋Š” ๋ฐฉ์‹์ด๋‹ค

HMAC์˜ ํŠน์ง•

  • HMAC์˜ security power๋Š” ์‚ฌ์šฉํ•˜๋Š” ํ•ด์‰ฌํ•จ์ˆ˜์˜ power์— ๋น„๋ก€ํ•œ๋‹ค

HMAC ๊ฐ’ ์ƒ์„ฑ

ํŒŒ๋ผ๋ฏธํ„ฐ

  • H : ํ•ด์‹œ ํ•จ์ˆ˜. MD5 or SHA-1 ๋“ฑ ์—ฌ๋Ÿฌ ํ•จ์ˆ˜๊ฐ€ ๋  ์ˆ˜ ์žˆ๋‹ค. ํ•ด์‹œ ํ•จ์ˆ˜๋Š” ์ž„์˜์˜ ๊ธธ์ด์˜ ์ž…๋ ฅ์„ ๋ฐ›์•„์„œ ๊ณ ์ •๋œ ๊ธธ์ด(l)์˜ ์ถœ๋ ฅ๊ฐ’(l = 128 for MD5 and l = 160 for SHA-1)์„ ๊ณ„์‚ฐํ•œ๋‹ค
  • Text : MAC ํ•จ์ˆ˜๊ฐ€ ์ ์šฉ๋  ๋ฐ์ดํ„ฐ
  • K : ๋ฉ”์„ธ์ง€ ์ธ์ฆ ๋น„๋ฐ€ ํ‚ค. ์ตœ๋Œ€ 64๋ฐ”์ดํŠธ๋ฅผ ๋„˜์„ ์ˆ˜ ์—†๋‹ค. ๋งŒ์•ฝ 64๋ฐ”์ดํŠธ๋ณด๋‹ค ์ž‘์œผ๋ฉด 64๋ฐ”์ดํŠธ๊ฐ€ ๋˜๋„๋ก ๋’ท๋ถ€๋ถ„์„ 0์œผ๋กœ ์ฑ„์šด๋‹ค
  • ipad(inner pad) : 0x36์ด 64๋ฒˆ ๋ฐ˜๋ณต๋˜๋Š” 64๋ฐ”์ดํŠธ ๋ฌธ์ž์—ด
  • opad(outer pad) : 0x5C๊ฐ€ 64๋ฒˆ ๋ฐ˜๋ณต๋˜๋Š” 64๋ฐ”์ดํŠธ ๋ฌธ์ž์—ด

๊ณต์‹

  • K๋Š” ๊ธธ ํ•„์š”๋Š” ์—†์ง€๋งŒ ์ตœ์†Œ l ๋งŒํผ ๋˜๋Š” ๊ฒƒ์ด ์ข‹๋‹ค
  • HMAC ๊ฒฐ๊ณผ๊ฐ’์„ 80๋น„ํŠธ๊นŒ์ง€ ์„ ํƒ์ ์œผ๋กœ ์ž๋ฅด๋Š” ๊ฒƒ์ด ํ—ˆ์šฉ๋œ๋‹ค

HMAC ์ธ์ฆ๊ณผ์ •

  1. HMAC + ๋ฉ”์„ธ์ง€ ๊ฐ™์ด ์ „๋‹ฌ
  2. ์„œ๋ฒ„์—์„œ ๋ฉ”์„ธ์ง€ + ํ‚ค๋กœ HMAC ๊ฐ’์„ ์ƒ์„ฑํ•ด์„œ ๊ฐ™์€์ง€ ํ™•์ธ