7. Message Authentication Codes

KyoungJae Jung ·2022년 2월 25일
0

암호학

목록 보기
2/7

기존까지의 암호학은 Confidentiality를 중점으로 봤다.
Message Authentication은 message integrity를 중점으로 하는 것이다.

message integrity에서 보장해야하는 것.

  1. Sender 인증
  2. 메시지의 무결성인증

Mac의 구성

  1. KeyGen(i)
  2. Mac(k,m)
  3. Verify(k,m)


알 수 있는 사실

  • 같은 key를 가져야한다.
  • 메시지가 위조되면 검증이 안된다.
  • Mac은 숨기는 것이 아니다.

Mac을 깨기 위해선?

  1. (기본)K가 없음에도 제대로 검증되는 (m',t')쌍이 있어야한다.
  2. (능력부여) M들을 제공해서 새롭고 검증되는 (m',t')를 구할 수 있어야한다.

Mac의 안전성 모델링

Mac의 예제

  • protecting system files
    시스템을 부팅할 때 안전한 부팅을 위해 사용할 수 있는 방법

    시스템의 부팅파일들에 대해 Mac을 걸고 이를 안전한 곳에 보관하고 부팅을 할 때 파일들을 검사해서 이것이 변조되지않았는지 확인하고 부팅을 한다.

Mac을 구성하는 방법

  • Using PRF
    AES를 통해 메시지를 암호화해서 이를 tag로 사용하는 방법

    그러나 암호문의 일부를 잘라 전송해서 tag로 사용한다.
    가능한 이유는 복호화가 필요없기에 그렇다.
    적당한 길이를 보내야한다.
    - CBC-MAC

    Navie한 방법에 대한 그림으로 마지막의 block을 tag로 쓰면 되지않을까라는 생각을 가질 수 있으나 이는 문제 있다.
    1. IV의 문제.
    IV와 Message가 노출이 된다.
    따라서 이에 대한방법으로 IV를 제거한다.
    그러나 이도 안전하지 않다.

    2. Mac tag를 구하고 이 tag와 또다른 tag'를 구했을 때 이어붙이기 공격을 한다면 아래와 같은 결과가 나타난다.

    이를 막기위해 CBC-MAC은 다음과 같이 구성되어있다.

    이렇게 한다면 이어붙이기 공격이 불가능하다.
    따라 현재 사용되는 CBC-MAC의 방법이다.

MAC Padding


- CMAC
패딩을 하면서 만들어지는 더미 block을 해결하기 위한 방법이다.

CBC-MAC, CMAC의 차이는 분명히 있다.
1. dummy block 생성
2. 1번더 암호화를 진행하냐

  • Hash
    - HMAC

    가장 간단한 방법의 HMAC이다.
    그러나 이방식에는 문제점이 있다.
    Merkle-Damgrd의 tech를 사용하기 때문이다.

    이러한 성질로 인해 아래와 같은 방법의 공격이 가능하다.

    위와 같이 이어붙이기 공격이 가능하다.
    개선한 방법은 다음과 같다.

    기존과 다르게 2개의 pad와 2번의 Hash함수를 사용한다.
    알고리즘으로 보면 다음과 같은 식이 나온다.

MAC공격 방법

  • Verification Timing Attacks
    MAC의 검증하는 알고리즘의 시간에 대한 공격을 하는 것이다.
    알고리즘에서 대부분 MAC을 생성하고 이를 비교하는데 이 비교를 Byte단위로 진행을 한다.
    이러한 비교에 대한 시간을 측정해서 MAC을 공격하는 것이다.

    여기서 Accept, reject의 시간을 측정하고 이에 대한 가능한 경우의 수를 통해 MAC을 공격한다.

이를 방어하려면 결국

모든 MAC이 틀리더라도 멈추는 것이 아니라 모두 비교후 실패를 내보내는 것이다.

profile
보안전문가를 꿈꾸는 대학생

0개의 댓글