인디노트

HMAC (Hash-based Message Authentication Code) 본문

인증기술/보안기술

HMAC (Hash-based Message Authentication Code)

인디개발자 2021. 7. 2. 20:11

HMAC 은 원본 데이터에 특정한 값 (이 값은 비공개 비밀정보여야 하기 때문에 이 값을 HMAC 키라고 함) 을 더해서 함께 해시하는 키 기반 해시 (Keyed Hash) 로 일반적인 해시 함수로만 수행할 때보다 더 높은 안정성을 확보할 수 있다.

키 기반 해시는 난수 형태인 비밀값을 키 값으로 사용한다.

안정성의 확보 뿐 아니라 해당 해시를 자신이 생성 했음을 인증하려는 목적에서 키를 추가하여 해시하기도 한다. 키를 추가하면 역상 저항성이 높아져 원본 데이터를 알아내기가 그만큼 더 어려워진다.

충돌 저항성의 관점에서 같은 해시값을 생성하는 원본 데이터를 노출해도 키를 제외한 부분은 알 수 없으므로 다른 서비스까지 위험하게 하지 않는다.

즉. HMAC 은 제2 역상 저항성과 비밀키의 안정성에 따라 보안 강도를 향상 시킬 수 있다.

키 기반 해시에 필요한 키 값을 생성하기 위해 “키 생성기” 로서 키 유도함수를 사용한다. 일종의 난수 발생기라고 할 수 있다.

키 유도함수는 키를 생성하는 입력 값의 안정성과 해시 함수의 역상 저항성에 따라 보안 강도가 다르게 된다.

실예로써 하기의 캡춰와 같은 사이트에서 알 수 있듯이 OTP 키를 생성하기 위해서 Secret 를 사용하게 되는데 여기서 Secret 값이 비밀키로 사용된다.

반응형
Comments