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 andl
= 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 ์ธ์ฆ๊ณผ์
- HMAC + ๋ฉ์ธ์ง ๊ฐ์ด ์ ๋ฌ
- ์๋ฒ์์ ๋ฉ์ธ์ง + ํค๋ก HMAC ๊ฐ์ ์์ฑํด์ ๊ฐ์์ง ํ์ธ