HMAC: Difference between revisions

From IT 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 공식.svg|500x500픽셀]]
[[파일: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 14: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]

350x350픽셀

  • H = 암호화 해시 함수
  • m = 인증 대상 메시지
  • K = 기밀 키
  • K' = 기밀 키 K에서 파생된 블록 크기 키
  • || = 문자열 연결(concat)
  • ⊕ = 비트 배타적 논리합(XOR)
  • opad = 블록 크기의 외부 패딩으로서, 반복되는 0x5c 값 바이트로 구성
  • ipad = 블록 크기의 내부 패딩으로서 반복되는 0x36 값 바이트로 구성

HMAC-SHA1 생성 예시

600x600픽셀

사용 사례[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