프로그래밍[Univ]/네트워크

[네트워크] 메세지 무결성(integrity) Hash function

Cloud Travel 2012. 11. 8. 14:50

* 메세지 무결성(Integrity)

 - 통신 개체들이 수신한 메세지가 진짜인지를 확인하는 것

 - 메세지의 내용이 변경되지 않았는가?(MAC 이용)

 - 메세지를 보낸사람이 내가 아는 그 사람인가?(HMAC 이용)

 - 재사용된 메세지가 아닌가?(Nonce 이용)

 

* 메세지 다이제스트(Message digest)

 - 메세지 요약 : 본래의 메세지를 Hash algorithm을 이용하여 축소하는 것

   

 - Hash algorithm 요구사항

  > 원문과 압축된 내용은 거의 1:1로 맵핑되야한다. 

     (서로 다른 원문을 압축했을 때 같은 결과가 나오면 안된다)

  > 압축문에서 본문을 찾아내는 것이 힘들어야 한다.

  > 만약, 다른 원문이라도 인자값이 같아서 같은 압축문이 나오더라도, 그 본문을 찾기 힘들어야 한다.

     ( H(m) = H(m`), m과 m`을 계산하기 힘들어야 한다 )

 - 대표적 해쉬 함수 : MD5, SHA-1


* checksum 

 - 불안전한 해쉬 함수이다.

 - 고정된 길이의 다이제스트를 생성한다.

 - 여러줄의 데이터의 XOR연산으로 해쉬 결과가 같지만 다른 본문이 많이 존재 할 수 있다.


* MAC(Message Authentication Code)

 - 메세지가 변화 했는지 변화하지 않았는지 파악하는 것

 - 메세지를 해쉬 함수에 돌린 결과를 메세지의 끝에 붙여서 전송하는 방식

 - 받은 측에서는 받은 메세지를 해쉬 함수에 돌린 결과와 메세지와 함께온 해쉬파일을 비교하여 진위여부를 파악한다.


    


* HMAC

 - MAC은 메세지의 무결성을 보장하지만, 그사람이 내가 아는 사람인지 보장은하지 않는다.

 - 이를 위해 송수신자는 shared secret(공유된 비밀)을 메세지에 붙여서 해쉬함수를 실행한다.

 - 그외 방식은 MAC과 동일

   


* nonce

 - HMAC은 누가 정확한 메일을 보냈는지까지는 보장하지만, 그것이 재사용된 메세지인지는 파악이 불가능하다.

 - 이를 방지하기 위해서 nonce값을 메세지와 함께 해쉬 함수에 넣어서 MAC결과를 생성한다.

  > nonce 값은 서로 경우하는 값으로 한번만 사용되는 Random 값이다.

  > 상대방이 메세지를 보낸 다는 것을 요청하면, 자신은 nonce값을 생성하여 상대방에게 보내여 MAC을 생성하게 한다.

  > 이 결과 재사용된 메세지라면 nonce값이 다르기 때문에 결과가 달르게 되어 사용하지 않게될 것이다.