MAC (Message Authentication Code)

MySprtlty·2022년 7월 20일
0

Applied Cryptography

목록 보기
8/11

🖇️cf. Digital Signature은 일종의 Asymmetric MAC으로 볼 수도 있다.

🏷️MAC

  • hash function과 private key를 합치면, data integrity를 위한 MAC을 얻을 수 있다.
  • MAC은 private key를 입력받는 hash function이라고 보면 된다.
  • 그리고 출력으로 digest가 아닌 authentication code를 생성한다.
  • Both hash functions and MACs are deterministic, but they are not reversible.
  • HTTP cookie같은 곳에 변조 방지를 위해 필요하다.
  • message의 유효성을 검사하려면 authentication code를 생성하는 작업을 똑같이 하면 된다.
    • private key와 message를 이용해 authentication code를 생성하고, 일치하는지 확인하면 된다.

📌The Security Attributes of MAC

authentication tag forgery

  • private key를 모르면 message에 대한 authentication tag를 계산할 수 없다.
  • 단 private key가 임의적이어야 한다.

The length of the authentication tag

  • authentication tag는 collision attack으로부터 안전한 크기를 가져야 한다.
  • 입력 XX, YY에 대해 MAC(secretkey,X)=MAC(secretkey,Y)MAC(secret key, X)=MAC(secret key, Y)일 때를 충돌로 정의한다.
  • 일반적으로 128 bits authentication tag 정도가 충분한 resistance를 갖는다.
  • birthday paradox에 따라 2642^{64}개의 authentication tag를 요청해야 높은 확률로 충돌이 발생하기 때문이다.
  • RFC-2104에 다음과 같은 말이 있다.

    With a block length of 64 bytes, it would take 250,000 years to transmit this data over a continuous 1Gbps link without changing the secret key K during all this time.

Replay Attack

  • A replay attack occurs when someone intercepts and reuses legitimate data to trick a system into repeating actions like transactions or granting access.
  • 공개적으로 통신할 때, MAC 자체만으로는 Replay Attack을 막을 수 없다.
  • 악의적인 사용자가 replay attack을 할 때, MAC 입력에 counter를 추가함으로써 막을 수 있다.

Timing Attack

  • 검증에 걸리는 시간을 측정한 후, authentication tag를 바이트 단위로 다시 생성해서 공격하는 기법이다.
  • 위 그림을 보자.
  • 0X 00 00의 authentication tag를 보냈을 때, 첫 자리부터 틀리기 때문에 1t 시간만에 검증이 끝난다.
  • 하지만 A0 00 00의 authentication tag을 보내면, 첫 자리는 맞았기 때문에 검증에 걸리는 시간이 2t가 됐다.
  • 따라서 authentication tag 검증 시 수신한 authentication tag와 새롭게 계산한 authentication tag의 비교가 constant time내에 이루어져야 한다.
profile
2Co 4:7

0개의 댓글