HMAC: Difference between revisions
From CS Wiki
(새 문서: '''Hash-based Message Authentication Code''' 비밀키를 이용하여 메시지를 해싱함으로써 무결성과 부인방지 기능을 부여하는 메시지 인증 코드 =...) |
No edit summary |
||
Line 3: | Line 3: | ||
비밀키를 이용하여 메시지를 해싱함으로써 무결성과 부인방지 기능을 부여하는 [[메시지 인증 코드]] | 비밀키를 이용하여 메시지를 해싱함으로써 무결성과 부인방지 기능을 부여하는 [[메시지 인증 코드]] | ||
== 사용되는 해시 함수 == | ==사용되는 해시 함수== | ||
모든 해시함수가 사용될 수 있다. HMAC 뒤에 사용 해시 알고리즘을 표기한다. | 모든 해시함수가 사용될 수 있다. HMAC 뒤에 사용 해시 알고리즘을 표기한다. | ||
'''예시)''' | '''예시)''' | ||
* HMAC-MD5 | *HMAC-MD5 | ||
* HMAC-SHA256 | *HMAC-SHA256 | ||
* HMAC-SHA3-256 | *HMAC-SHA3-256 | ||
HMAC의 안전성은 사용되는 해시 알고리즘의 안전성과 비밀키 관리 안전성에 기반한다. | HMAC의 안전성은 사용되는 해시 알고리즘의 안전성과 비밀키 관리 안전성에 기반한다. | ||
== HMAC 생성 방법 == | ==HMAC 생성 방법== | ||
[[파일:HMAC | [[파일:HMAC Formula.svg|350x350픽셀]] | ||
* H = 암호화 해시 함수 | *H = 암호화 해시 함수 | ||
* m = 인증 대상 메시지 | *m = 인증 대상 메시지 | ||
* K = 기밀 키 | *K = 기밀 키 | ||
* K' = 기밀 키 K에서 파생된 블록 크기 키 | *K' = 기밀 키 K에서 파생된 블록 크기 키 | ||
* || = 문자열 연결(concat) | *|| = 문자열 연결(concat) | ||
* ⊕ = 비트 배타적 논리합(XOR) | *⊕ = 비트 배타적 논리합(XOR) | ||
* opad = 블록 크기의 외부 패딩으로서, 반복되는 0x5c 값 바이트로 구성 | *opad = 블록 크기의 외부 패딩으로서, 반복되는 0x5c 값 바이트로 구성 | ||
* ipad = 블록 크기의 내부 패딩으로서 반복되는 0x36 값 바이트로 구성 | *ipad = 블록 크기의 내부 패딩으로서 반복되는 0x36 값 바이트로 구성 | ||
'''HMAC-SHA1 생성 예시''' | '''HMAC-SHA1 생성 예시''' | ||
Line 31: | Line 31: | ||
[[파일:HMAC-SHA1 생성 절차.png|600x600픽셀]] | [[파일:HMAC-SHA1 생성 절차.png|600x600픽셀]] | ||
== 사용 사례 == | ==사용 사례== | ||
* [[IPSec]] | *[[IPSec]] | ||
* [[SSH]] | *[[SSH]] | ||
* [[TLS(SSL)]] | *[[TLS(SSL)]] | ||
* [[JWT]] | *[[JWT]] | ||
== HMAC 값 예시 == | ==HMAC 값 예시== | ||
HMAC_MD5("key", "The quick brown fox jumps over the lazy dog") = 80070713463e7749b90c2dc24911e275 | HMAC_MD5("key", "The quick brown fox jumps over the lazy dog") = 80070713463e7749b90c2dc24911e275 | ||
HMAC_SHA1("key", "The quick brown fox jumps over the lazy dog") = de7c9b85b8b78aa6bc8a7a36f70a90701c9db4d9 | HMAC_SHA1("key", "The quick brown fox jumps over the lazy dog") = de7c9b85b8b78aa6bc8a7a36f70a90701c9db4d9 | ||
HMAC_SHA256("key", "The quick brown fox jumps over the lazy dog") = f7bc83f430538424b13298e6aa6fb143ef4d59a14946175997479dbc2d1a3cd8 | HMAC_SHA256("key", "The quick brown fox jumps over the lazy dog") = f7bc83f430538424b13298e6aa6fb143ef4d59a14946175997479dbc2d1a3cd8 | ||
== 같이 보기 == | ==같이 보기== | ||
* [[메시지 인증 코드]] | *[[메시지 인증 코드]] | ||
* [[해시]] | *[[해시]] | ||
== 참고 문헌 == | ==참고 문헌== | ||
* 위키피디아 - HMAC | *위키피디아 - HMAC |
Latest revision as of 00:54, 25 June 2021
Hash-based Message Authentication Code
비밀키를 이용하여 메시지를 해싱함으로써 무결성과 부인방지 기능을 부여하는 메시지 인증 코드
사용되는 해시 함수[edit | edit source]
모든 해시함수가 사용될 수 있다. HMAC 뒤에 사용 해시 알고리즘을 표기한다.
예시)
- HMAC-MD5
- HMAC-SHA256
- HMAC-SHA3-256
HMAC의 안전성은 사용되는 해시 알고리즘의 안전성과 비밀키 관리 안전성에 기반한다.
HMAC 생성 방법[edit | edit source]
- H = 암호화 해시 함수
- m = 인증 대상 메시지
- K = 기밀 키
- K' = 기밀 키 K에서 파생된 블록 크기 키
- || = 문자열 연결(concat)
- ⊕ = 비트 배타적 논리합(XOR)
- opad = 블록 크기의 외부 패딩으로서, 반복되는 0x5c 값 바이트로 구성
- ipad = 블록 크기의 내부 패딩으로서 반복되는 0x36 값 바이트로 구성
HMAC-SHA1 생성 예시
사용 사례[edit | edit source]
HMAC 값 예시[edit | edit source]
HMAC_MD5("key", "The quick brown fox jumps over the lazy dog") = 80070713463e7749b90c2dc24911e275 HMAC_SHA1("key", "The quick brown fox jumps over the lazy dog") = de7c9b85b8b78aa6bc8a7a36f70a90701c9db4d9 HMAC_SHA256("key", "The quick brown fox jumps over the lazy dog") = f7bc83f430538424b13298e6aa6fb143ef4d59a14946175997479dbc2d1a3cd8
같이 보기[edit | edit source]
참고 문헌[edit | edit source]
- 위키피디아 - HMAC