[정리] 메시지 인증 알고리즘

데이터에 대한 무결성은 메시지 인증 코드(MAC - Message Authentication Code), 또는 전자서명을 이용하여 제공한다. 인증서와 비밀키가 이미 발급된 사용자의 경우에는 전자서명 알고리즘을 사용하여 데이터에 대한 무결성을 제공할 수 있지만, 그렇지 않은 경우에는 패스워드에 기반한 메시지 인증 코드 방식을 사용한다.

패스워드에 기반인 인증코드 방식을 알고리즘 식별자(Algorithm Identifier)로 기술할 때에는 이 방식을 명확히 기술해 주는 인자들에 대한 설명이 포함되어야 한다.

본 상세서에서는 메시지 인증 알고리즘으로 해쉬 함수를 이용한 MAC, 즉 HMAC의 사용, 또는 SEED를 이용한 MAC의 사용을 권장한다.

 

HMAC

HMAC은 메시지의 무결성과 함께 메시지의 출처 인증을 위해 사용되며, 해쉬함수와 대칭키로 구성된다. 함께 사용되는 해쉬함수로는 SHA-1, MD5 등이 있다. HMAC에서는 송신자(A)와 수신자(B)가 서로 알고 있는 대칭키(Ka, Kb)를 이용해 해쉬함수로 메시지 인증 코드(HMAC)를 생성하며, 송신자는 메시지와 메시지 인증코드를 함께 수신자에게 전송한다. 수신자는 메시지 변조 여부를 확인하기 위해 송신자와 마찬가지로 수신한 메시지와 키(Ka, Kb)를 이용해 메시지 인증코드(HMAC)를 생성하고, 송신자에게서 받은 메시지 인증 코드와 비교한다. 이 때 송신자와 수신자가 각각 생성한 두 개의 메시지 인증코드가 동일하면 메시지의 무결성이 확인되는 것이다.

난수생성 알고리즘

의사난수 생성

보안을 위해 사용되는 알고리즘에서는 예측할 수 없는 수가 인수로 필요한 경우가 많다. 이때 매번 사용할 때 마다 의사 난수 생성 알고리즘에 의해 생성되는 수를 '난수' 혹은 '의사난수'라구 부른다. 보다 안전한 난수의 사용을 위해서는 시간값을 넣어주어 매번 시간에 따라 다른 난수가 선택될 수 있도록 하는 방법을 사용한다.

의사 난수 생성 과정은 다음과 같다.

1. 단계1. 먼저 입력으로 i번째 생성 단계의 시간값(DTi)과 64비트 seed 값(Vi)을 준다. Vi 은 임의의 값으로 초기화되며, 난수 생성 과정 동안 계속 갱신된다.

2. 단계2. triple DES 를 이용한 암호화 과정을 수행한다. 여기에서는 56비트의 같은 키쌍(K1, K2)을 사용하며, 이것은 의사난수 생성을 위해서만 사용되는 비밀키이여야만 한다.

3. 단계3. 출력으로 64비트의 의사난수(Ri)와 64비트의 seed 값(Vi+1)이 생성된다.

 

출처

행정전자서명 프로파일 및 알고리즘 명세서, 웹트러스트 인증 (gpki.go.kr)

반응형