1. 인증과 인가

인증(Authentication): 자신의 신원을 시스템에 증명하는 것. 어떤 실체가 정말 그 실체가 맞는지 확인하는 과정.

인가(Authorization): 신원이 확인되어 인증 받은 사람이 출입문에 들어가도록 허락/허가하는 과정. 

 

2. 메시지 인증

메시지 인증: 송신자가 보낸, 수신자가 받기로 한 그 메시기가 맞는지 확인하는 과정.

메시지 무결성 확인: 수신된 메시지가 전송 도중 불법적으로 변경되지 않았는지 확인하는 것.

3. 메시지 인증 코드(MAC, Message Authentication Code)

MAC 동작 원리

MAC(Message Authentication Code): 메시지에 추가로 붙는 태그. 메시지 인증에 필요하다. MAC은 해당 데이터의 고유한  송신자는 메시지를 보낼 때 MAC을 함께 전송. 수신자는 받은 메시지의 변조 여부를 MAC을 통해 식별 가능. 참고로 메시지는 암호화 되지 않아 누구나 볼 수 있다. 

 

4. 메시지 인증 방법

4.1. 메시지 인증 방법의 3가지 특징

1. 비밀 키 사용

2. 기밀성 제공 안함 -> 메시지는 MAC과 독립적. 누구나 읽을 수 있다.

3. 작은 크기. -> MAC 크기는 메시지 크기와 무관.

4.2.메시지 인증 방법 종류

1. HMAC(Hash-based Message Authentication Code)

HMAC 로 MAC 생성 예

 

- 정의: 일방향 해시 함수를 이용해서 MAC을 구현하는 방법을  HMAC(Hash-based Message Authentication)이라고 한다.

- 특징 : 일방향이기 때문에 역방향 함수는 없으며, 생성된 MAC의 길이는 생성 시 바탕이된 메시지의 길이와 전혀 상관이 없다. 메시지는 암호화 되지 않기 때문에 누구나 읽을 수 있다는 특징도 있다. 사용하는 일 방향 해시 함수는 단 한 종류로 정해두고 있는 것이 아니며, 강한 일 방향 해시 함수라면 뭐든지 HMAC에 이용할 수 있다. 대칭  키, 공개 키, 비밀 값 등을 사용해 메시지 다이제스트를 사용하고 검증한다.

 

 

1) 대칭 키 사용
2) 공개 키 암호 사용
3) 비밀 값 사용

 

 

2. CMAC(Cipher-based Message Authentication Code)

CMAC 진행 과정

 

- 정의: CMAC(Cipher-based Message Authentication Code)은 블록 암호 기반. CBC 모드 메시지 적용. 트리플 DESAES와 같은 블록 암호 사용해 메시지 인증 코드(MAC)를 구현한다. 블록 암호의 키를 메시지 인증 코드의 공유 키로 사용하고, CBC 모드를 써서 메시지 전체를 암호화 한다. 메시지 인증 코드(MAC)은 복호화 할 필요가 없으므로 마지막 블록을 제외하고 모두 폐기해 마지막 블록만 MAC값으로 사용한다.

 

5. HMAC vs CMAC

 HMAC(Hash-based Message Authentication)은 해시함수로, CMAC(Cipher-based Message Authentication Code)는 DES나 AES와 같은 암호 알고리즘을 사용해 메시지 인증 수단, 즉 MAC을 구현한다고 했다. 그렇다면 과연 둘 중 어떤 방법이 더 효율적일까? 우선 해시함수와 암호 알고리즘부터 비교해보자. 

 

해시 함수는 데이터 무결성을 검증하고 데이터를 고유하게 식별하기 위해 사용되며, 이러한 면에서 암호학적인 기술의 하나로 간주될 수 있다. 그러나 해시 함수는 "암호화"와는 다르다. 일반적으로 암호화는 평문 데이터를 암호화하여 암호문으로 변환하는 과정을 의미한다. 이러한 암호화 과정은 일반적으로 해독이 가능한 형태로, 즉 특정 키를 사용하여 원래 데이터를 복원할 수 있는 형태로 이루어진다. 즉, 암호화란 복호화가 가능해야한다. 반면에 해시 함수는 일방향 함수이므로, 해시 값으로 변환된 데이터는 원래의 데이터를 복원하기가 매우 어렵거나 불가능하다. 즉, 해시 값은 복호화가 웬만해서는 불가하다.

 

암호기술이 첨가된 해시 함수는 대칭 암호 알고리즘인 DES와 비교했을 때 몇 가지 장점이 있다. 첫째, 일반적으로 대칭 암호 알고리즘인 DES보다 소프트웨적으로 속도가 빠르다. 둘째, 암호기술이 포함된 해시 함수에 대한 코드들을 쉽게 구할 수 있다. 해시 함수(1997년)가 블록 암호 기술(2006년)보다 먼저 나왔기 때문이다.  셋째, 수출에 보다 자유롭다. 대칭 암호 알고리즘이나 MAC 에서 사용하는 대칭 암호 알고리즘까지 수출 규제를 받고 있는 데 반해, 암호적 해시 함수에 대해서는 미국이나 다른 나라들이 수출 규제를 하고 있지 않다. 

 

따라서 해시함수를 바탕으로 하는 HMAC이 더 널리 쓰이는 편이다. 하지만 예외적인 몇 사항 -ex)이미 블록 암호를 사용하는 프로그램에 적용경우- 에서는 CMAC을 사용하는 편이 나을 수 도 있다. 

 

6. HMAC 설계 목표

- 수정하지 않고 쓸 수 있는 해시 함수들을 만든다. 소프트웨어에서 잘 돌아가고 코드를 무료로 제공하고 널리 쓰일 수 있도록 한다.

- 더 빠르고 안전한 해시 함수가 있거나 필요하다면 기존의 해시 함수를 쉽게 교환할 수 있도록 한다.

- 심각하게 기능저하를 유발하지 않고 해시 함수의 원래 성능을 유지하도록 한다.

- 키를 보다 쉽게 다루고자 한다.

- 내장된 해시 함수가 충분히 강하다면 인증 메커니즘의 강도에 대한 암호해독의 정도를 확실히 파악할 수 있도록 한다.

 


Reference

1.

https://withbabybird.tistory.com/6

 

해시함수의 특징 및 정의

안녕하세요. 어미새입니다. 이전 블록체인 포스팅에서 합의 문제, 합의 알고리즘에 대해서 알아봤습니다. 블록체인에서 합의 알고리즘이란 어떤 방식으로 블록을 생성해 낼 것이며, 어떤 블록

withbabybird.tistory.com

 

2. 

https://m.blog.naver.com/wnrjsxo/221719726759

 

메시지 인증 코드(Message Authentication Code, MAC)

● 메시지 인증 코드(Message Authentication Code, MAC) 해시 알고리즘으로 수정 또는 변경을 검출...

blog.naver.com

 

3.

https://crypto.stackexchange.com/questions/15721/use-cases-for-cmac-vs-hmac

 

Use cases for CMAC vs. HMAC?

Both can be used to verify the integrity of a message. Assuming you have the needed primitives available to you (i.e. the code space of needing both a cipher and a hash function isn't prohibitive),...

crypto.stackexchange.com

 

+ Recent posts