본문 바로가기
Computer Science/Computer Network

[Network] 암호화 해시 함수(Cryptographic hash function)

by domo7304 2022. 10. 12.
  1. [Network] 암호화 해시 함수(Cryptographic hash function)
  2. [Network] MAC 과 Digital Signatures
  3. [Network] HTTP vs HTTPS, SSL 의 통신흐름

 

MAC 과 Digital Signatures 를 이야기하기 위해, 해시함수를 "가변 길이의 데이터를 입력으로 받아 정해진 길이의 해시값을 만들어주기 위한 함수" 라고 정의하겠습니다.

데이터 M 을 입력으로 받아, 해시함수 H 를 통해 나오는 해시값을 h 라 하겠습니다. ( h = H(M) )

이 때 암호학적 관점에서 말하는 해시 함수인 Cryptographic hash function 은 다음과 같은 두 가지 사항을 만족해야 합니다.

  1. the one-way property : 해시값이 h 가 되는 것의 원래 값인 M 을 찾는 것이 굉장히 어려워야한다.
  2. collision-free property : 같은 해시값을 갖게 되는 두 값을 찾는 것이 굉장히 어려워야한다.

암호화 해시 함수가 필요한 이유에 대해서 상황을 통해 설명하겠습니다.

  1. Alice 가 메시지 m 을 생성한 후, 그에 대한 해시값인 H(m) 을 생성합니다.
  2. 그 후, Alice 는 그 해시값 H(m) 을 원래 메시지 m 에 붙여 (m, h) 를 Bob 에게 전송합니다.
  3. (m, h) 을 받은 Bob 은 메시지 m 을 이용하여 H(m) 을 계산합니다. 만약 H(m) = h 라면, Bob 은 전송 과정에 문제가 없다고 생각합니다.

하지만 이 과정에는 발생할 수 있는 문제가 있습니다.

Man-in-the-middle attack, 중간자 공격

  1. 위의 2 번의 과정에서 Alice 가 Bob 에게 보낸 (m, h) 를 침입자가 가로챈 후 메시지를 변조한 다음 (m') 그 메시지로 다시 해시(H(m'))를 계산하여 Bob 에게 보냅니다 (m', h').
  2. (m', h') 을 받은 Bob 은 마찬가지로 m' 을 이용하여 H(m') 을 계산하고, 당연히 H(m') = h' 이므로, Bob 은 중간에 메시지가 변조된 것을 알 수 없습니다.

이 문제는 단순히 해시 함수에 데이터를 넣으면 해시값을 얻을 수 있기 때문에, 즉 해시값을 얻는 것이 어렵지 않기 때문에 발생하게 됩니다.

때문에 이를 해결하기 위해 양쪽에서 미리 공유한 secret key 를 이용하여 해시값을 얻도록 한다면 secret key 를 모르는 침입자는 해시값을 계산할 수 없기 때문에 중간에서 메시지를 변조할 수 없게 됩니다.

(부가설명 : secret key 를 이용하여 해시값을 얻도록 개선할 경우, 해시값 = H(데이터, key) 이기 때문에, secret key 없이 혹은 올바르지 못한 secret key 로 해시값을 계산 후 Bob 에게 전송한다면, Bob 은 당연히 중간에서 데이터가 변조되었음을 알아챌 수 있습니다.)

그리고 이렇게 계산된 해시값 (secret key 와 data 를 통해 생성한 해시값) 이 MAC (Message Authentication Code) 으로 사용될 수 있습니다.

댓글