Infomation_Security

메세지 인증(MAC)과 해시 함수

부산대보금자리 2021. 8. 20. 14:04

MAC은 Message Authentication code이다.

서명과 차이점을 이해해야 한다.

 

메시지 인증이 해결하려는 것은 무결성 + 보낸 이의 validate + 부인방지이다.

즉 이 메시지가 제대로 된 메시지이며, 어떤 이가 보낸게 분명하며, 보낸 사실을 부정할수가 없어야 된다.

 

이러한 메세지 인증은 총 3가지 방법으로 가능하다.

1. 메세지 암호화

2. 메세지 인증을 위한 code = MAC

3. 해시 함수

 

첫 번째 방법부터 알아보자.

메시지 암호화.. 즉 암호화를 해서 해결하려는 것이다.

만약 대칭키 암호를 사용해서 이 키가 이미 공유가 돼있다. 

그럼 이 대칭키로 암호화해서 보내면 받은 사람만 알 수 있고 만약 content가 이상하게 나온다거나 하는 것은

첨부하는 checksum, redunduncy로 알 수 있을 것이다.

하지만 이 대칭키를 분배하려면 당연히 공개 키시스 템이 필요하다.

그럼 누군가 공개키를 활용해서 나한테 보냈다. 그냥 보내면 누가 보낸 건지 신원 보장이 힘들다.

이것은 두 번째 방법이다.

MAC은 small fixed sized block으로 이것을 메시지에 추가하는 것이다.

어떤 메시지에 대해서 MAC을 generate한다. 

이때 key값이 사용이 된다. 

이것을 메세지에 붙여서 보내면 수신 측에서도 같은 key를 활용해서 MAC을 만들고 붙여져 온 MAC을 복호화하고 비교하게 된다. 

인증과 암호화 중 무엇을 먼저 하는가에 따라 보안 수준이 달라진다.

기존의 SSL의 경우 (응용 ~ 4 계층 위에서 암호화 진행해주는 것, 여기서도 mac이 쓰인다.)

mac 후 암호화를 한다. 

그러니까 암호화를 한 것에 대해서 mac을 만드느냐 원본에 대해 mac을 만들고 암호화를 하느냐의 차이다

당연히 암호화를 하고 mac을 만드는 것이 안전하다고 알려져 있다.

왜냐하면 복호화하지 않고도 mac만 보고도 알아챌 수가 있다. 

이는 평문 구조가 드러날 수 있기 때문이다.

MAC의 특징을 잠시 보자.

MAC은 암호학적 Checksum이다.

가변 길이의 m을 secret key k를 사용해서 fixed sized를 만든다.

즉 Many-to-one function이다.

이때 요구되는 사항은 다음과 같다.

 

1. ‎message mac을 알때 이 mac 쓰는 다른 message를

‎2. mac값은 uniformly distributed 해야 함, 연관성

‎3. 메세지의 어떤 한비트를 바뀌더라도 mac 왕창 바뀌어야  

 

대표적인 DAA(=Data Authentication Algorithm)를 보자

이는 대칭키를 사용한 Block cipher, Mac 알고리즘이다.

얼핏 보면 CBC(=Chain block cipher) 느낌이 난다. 앞에 것 중 하나가 바뀌면 왕창 바뀌는 구조를 가진다.

그래서 CBC-MAC이라고도 불린다.

 

이와 비슷한 역할을 하는 Hash Function을 보자.

특징은 위와 같다.

Fixed size의 h가 나오며

key가 필요 없다는 차이점이 존재한다.

즉 key를 가지는 걸 MAC이라고 보면 되겠다.

h가 해시함수이다.

이 과정을 보면 전자서명이다. 

메시지를 해싱하여 나온 값을 A의 개인키로 암호화한다.

그리고 메시지에 append 하면 수신자는 이것을 a의 공개키로 복호화한다.

그리고 메시지를 똑같이 해싱하여 같은지 판단한다.

다른 점이 뭘까? 

MAC과 전자서명이 가장 비교되는 시점이 바로 송신자의 개인키가 쓰인다는 점이다.

이는 송신자가 보냈다는 것을 증명하게 된다.

해시 함수가 갖춰야 할 것에 대해서 보자

1. Any size 

‎2. fixed out 

3. ‎m 넣어서 해시값 계산하기 쉬워야함 

‎4. 결과 h로부터x 찾기가어렵다 

‎5. 하나의 x 같은 해시값이 나오는 메세지를 찾기가 어렵다- 약한 충돌저항성

‎6. 동일한 해시값의 메세지를 찾기어렵다 - 강한 충돌 저항성

공격자 입장에선 5번이 더 어렵다. 왜냐하면 6번은 어떤 메세지든 찾으면 된다. 

약한, 강한이 붙는 이유도 확률이 약한 5번을 풀수 있으면 확률이 강한(=높은) 6번도 풀수 있기 때문이다. 

'Infomation_Security' 카테고리의 다른 글

X.509 인증서란  (0) 2021.08.21
전자서명 기법 정리  (0) 2021.08.20
공개키 키 관리기법  (0) 2021.08.19
공개키 암호와 RSA  (0) 2021.08.19
AES  (0) 2021.08.07