HMAC (Hash based Message Authentication Code)

HMAC (Hash based Message Authentication Code)

1. HMAC

[Figure 1] HMAC

[Figure 1] HMAC

HMAC (Hash based Message Authentication Code)은 Hashing 기법을 통해서 Data의 무결성을 보장하는 기법이다. [Figure 1]은 HMAC 과정을 나타내고 있다. Message를 보내는 발신자와 수신자 모두 동일한 MAC 알고리즘과 Secret Key를 가지고 있다. 여기서 MAC Algorithm은 Hashing 함수를 의미하며, 일반적으로 SHA-256 알고리즘을 많이 이용한다. Secret Key는 Hashing의 Key로 이용된다.

송신자는 MAC Algorithm과 Secret Key를 이용하여 MAC을 생성한 다음 원본 Message와 함께 MAC을 같이 전송한다. 수신자는 수신한 Message를 이용하여 발신자와 동일한 MAC Algorithm과 Secret Key를 활용하여 MAC을 생성하고, 수신받은 MAC과 비교하여 Message의 무결성을 검증한다.

1.1. with Rest API

HMAC은 Rest API에서도 Message의 무결성 보장인증 과정을 HMAC을 활용한다. MAC 값은 일반적으로 HTTP, GRPC의 Header 값에 포함되어 발신자에서 수신자로 같이 전송된다. HMAC을 포함하는 Header는 아직까지 표준이 정해져 있지 않으며 API마다 별도로 지정하여 이용한다.

예를 들어 AWS API의 경우에는 Message를 SHA-256 알고리즘을 통해서 생성한 문자열과 함께 Secret Access Key를 같이 활용하여 Signature (MAC) 값을 생성하며, 생성한 Signature는 X-Amz-Signature Header에 포함되어 전송된다.

2. 참조