카테고리 없음

[CRYPTO] Message Authentication Codes

ialleejy 2024. 12. 4. 17:35

암호학적 기본 요소

암호학에서 두 가지 주요 범주로 나눠볼 수 있다:

  1. 대칭 암호(Symmetric Cryptography): 하나의 키를 사용하는 방식.
  2. 비대칭 암호(Asymmetric Cryptography): 공개키와 비밀키 두 개의 키를 사용하는 방식.

1. 기밀성 (Confidentiality):

  • 데이터를 보호하여 허가되지 않은 사용자가 접근하지 못하게 보장하는 기능.
  • 대칭 암호:
    • 프라이빗 키 암호화 (Private-key encryption).
    • 예: AES(Advanced Encryption Standard).
  • 비대칭 암호:
    • 공개키 암호화 (Public-key encryption).
    • 예: RSA-OAEP(RSA Optimal Asymmetric Encryption Padding).

2. 무결성 (Integrity):

  • 데이터가 전송 중에 변조되지 않았음을 보장하는 기능.
  • 대칭 암호:
    • 메시지 인증 코드(MAC):
      • 특정 알고리즘으로 데이터와 키를 조합하여 인증 태그 생성.
  • 비대칭 암호:
    • 디지털 서명 (Digital Signature):
      • 송신자가 보낸 데이터의 신뢰성을 보장.
      • 예: RSA-PSS(RSA Probabilistic Signature Scheme).

메시지 인증 코드 (MAC)

1. MAC 정의:

  • 암호학에서 메시지 인증 코드(MAC)는 메시지를 인증하고 무결성 및 진위 여부를 보장하기 위해 사용되는 짧은 정보 조각이다.
  • 무결성 보장(integrity):
    • 메시지의 우발적 또는 의도적 변경을 감지.
  • 진위성 보장:
    • 메시지가 올바른 출처에서 왔는지 확인.

2. MAC 기능 (MAC Functionality):

  • MAC 알고리즘:
    • 키 기반 암호 해시 함수(keyed cryptographic hash function)를 사용하거나 이를 포함한 다양한 방식으로 MAC을 생성할 수 있음.
    • 입력값:
      • 비밀 키(secret key).
      • 인증할 임의 길이의 메시지.
    • 출력값:
      • MAC 값(tag): 메시지와 연결된 인증 코드.
  • 보호 기능:
    • 데이터 무결성: 메시지가 수정되지 않았음을 보장.
    • 진위 확인:
      • 비밀 키를 가진 검증자가 메시지의 변경 여부를 확인 가능.

3. MAC의 주요 역할:

  • 메시지 전달 중 데이터 변조를 방지.
  • 키를 알고 있는 송신자와 수신자만 메시지의 진위 여부를 확인 가능.


 

MAC

1. 알고리즘 (Algorithms)

MAC은 세 가지 주요 단계로 구성됩니다:

  1. 키 생성 알고리즘 (Key Generation Algorithm):
    • 비밀 키 를 생성하여 송신자와 수신자 간에 공유한다.
  2. 태그 생성 알고리즘 (Tag-Generation Algorithm):
    • 메시지 M과 키 K를 입력으로 받아 MAC 태그 T를 생성한다.
    • 수식: T=MAC(K,M)
  3. 검증 알고리즘 (Verification Algorithm):
    • 수신자가 K, M, T를 사용하여 태그 T가 유효한지 확인한다.
    • 수식: Vrfy(K,M,T)=1/0

2. 보안 (Security)

MAC 함수가 안전하려면 다음 조건을 충족해야 한다:

  • 선택 평문 공격(Chosen-Plaintext Attacks)에 대한 내성:
    • 공격자가 비밀 키를 보유한 오라클(검증자)에게 접근해 자신이 선택한 메시지로부터 MAC 값을 생성했다고 하더라도, 다른 메시지의 MAC 값을 예측할 수 없어야 한다.
    • 즉, 공격자가 무차별 대입(brute force) 없이 유효한 MAC을 위조할 수 없어야 한다.

3. 구현 (Implementation)

MAC 알고리즘은 다양한 암호학적 원리를 기반으로 구현할 수 있다:

  • 암호 해시 함수(Cryptographic Hash Functions):
    • 예: HMAC(Hash-based Message Authentication Code).
  • 블록 암호(Block Ciphers):
    • 예: CMAC(Cipher-based Message Authentication Code).

Length Extension Attack (길이 확장 공격)

1. 정의:

  • 길이 확장 공격은 암호학 및 컴퓨터 보안에서 발생하는 공격 유형으로, 공격자가 Hash(message₁) 값과 message₁의 길이를 사용하여, 실제로 message₁의 내용을 알지 못하더라도 Hash(message₁ ‖ message₂) 값을 계산할 수 있는 공격.
    • 여기서 는 문자열 연결(Concatenation)을 의미.
    • 공격자는 자신이 제어할 수 있는 message2를 추가로 연결해 해시 값을 계산.

2. 취약성:

  • Merkle–Damgård 구조를 기반으로 설계된 해시 알고리즘들은 이러한 공격에 취약하다.
    • 예: MD5, SHA-1, SHA-2.
    • 이들 해시 함수는 내부적으로 초기 값(initial value)와 메시지 블록을 반복적으로 처리하는 방식으로 동작하기 때문에, 해시 값과 메시지 길이 정보만으로 새로운 연결된 메시지의 해시를 계산할 수 있다.

3. 안전한 알고리즘:

  • SHA-3 알고리즘은 이 공격에 안전하다!!!
    • SHA-3는 Merkle–Damgård 구조를 사용하지 않고, 대신 Sponge 구조를 사용하여 설계되었다.
    • 따라서 길이 확장 공격이 불가능하다.

 

 

 

4. 작동 방식 (그림 설명):

  • 그림은 Merkle–Damgård 구조의 작동 방식을 나타낸다:
    1. 초기 값 IV를 시작으로 첫 메시지 블록을 처리.
    2. 이전 출력 값(CV)을 다음 메시지 블록에 입력으로 사용.
    3. 마지막 메시지 블록까지 이 과정을 반복하여 최종 해시 값을 생성.
  • 공격자는 CVL를 사용해 추가된 message2를 포함한 새로운 해시 값을 계산할 수 있다.

5. 대응 방법:

  • 길이 확장 공격을 방지하려면 다음을 고려해야 한다:
    • HMAC(Hash-based Message Authentication Code)를 사용:
      • 키를 추가하여 해시 계산에 포함시키므로 공격자가 이를 악용하지 못하도록 함.
    • SHA-3 또는 Sponge 구조 기반의 최신 해시 알고리즘 사용.

HMAC (Hash-based Message Authentication Code)

1. 정의:

  • HMAC은 암호 해시 함수(예: SHA-2, SHA-3)를 기반으로 메시지의 인증 코드(MAC)를 생성하는 방식.
  • 사용된 해시 함수에 따라 HMAC-X로 표현된다.
    • 예: HMAC-SHA256, HMAC-SHA3-256 등.

2. 작동 방식:

HMAC은 두 단계의 해시 과정을 통해 동작:

  1. 첫 번째 단계:
    • 비밀 키(secret key)를 사용하여 두 개의 키(inner와 outer)를 생성.
    • 메시지와 inner 키를 결합한 내부 해시 값을 생성.
  2. 두 번째 단계:
    • 첫 번째 단계에서 생성된 내부 해시 값과 outer 키를 결합하여 최종 HMAC 값을 생성.

3. 특징:

  • 길이 확장 공격(Length Extension Attack)에 대한 내성을 제공합니다.
    • HMAC 알고리즘은 키를 해시 과정에 포함시키기 때문에 공격자가 단순히 기존 해시 값을 확장하여 새로운 값을 계산할 수 없습니다.

4. 사용 예:

  • HMAC-SHA256:
    • SHA-256 해시 함수를 기반으로 HMAC을 구현.
  • HMAC-SHA3-256:
    • SHA-3 해시 함수를 기반으로 HMAC을 구현.

5. 장점:

  • 데이터 무결성과 인증을 보장.
  • 해시 함수의 강점과 키 기반 인증의 조합으로 높은 보안을 제공.

 


HMAC의 정의 (RFC 2104)

1. 공식 정의:

HMAC 계산은 다음 수식을 기반으로 한다:

HMAC(K,M)=H((K′⊕opad)∥H((K′⊕ipad)∥M))

  • H: 암호 해시 함수(예: SHA-256, MD5).
  • K: 비밀 키.
  • K′: 블록 크기에 맞게 조정된 키.
    • K가 블록 크기보다 짧으면 0으로 패딩(padding).
    • K가 블록 크기보다 길면 H(K)를 사용.
  • M: 인증할 메시지.
  • : 연결(Concatenation).
  • : XOR 연산.

2. 패딩 정의:

  • K′:
    • K를 블록 크기에 맞게 오른쪽에 0을 추가하여 패딩하거나,
    • K가 블록 크기보다 길면 K의 해시 를 사용.
  • :
    • 외부 패딩 상수(0x5c5c…5c, 블록 크기만큼의 값).
  • :
    • 내부 패딩 상수(0x3636…36, 블록 크기만큼의 값).

3. 비고 (예시 블록 크기):

  • MD5, SHA-1, SHA-224, SHA-256:
    • 블록 크기 = 64 바이트 (512 비트)

4. HMAC-SHA1


SHA-3 vs. HMAC

  1. SHA-3 (Keccak 해시 함수):
    • Keccak 해시 함수는 NIST의 SHA-3 대회에서 선정된 알고리즘.
    • SHA-3는 HMAC에서 사용하는 중첩 접근 방식(nested approach)이 필요하지 않는다.
    • 키를 메시지 앞에 단순히 추가(prepending)하는 것만으로 MAC(Message Authentication Code)을 생성할 수 있다.
  2. HMAC:
    • HMAC은 기존의 SHA-1, SHA-2 등 Merkle-Damgård 구조 기반 해시 함수의 안전성을 강화하기 위해 설계된 MAC 알고리즘.
    • SHA-3는 자체적으로 Sponge 구조를 사용하기 때문에 별도의 보강(HMAC 구조)이 필요하지 않는다.

주요 차이점:

  • 구조적 차이:
    • HMAC은 내부 및 외부 패딩(IPAD/OPAD)을 사용하여 두 번의 해시 연산이 필요.
    • SHA-3는 Sponge 구조를 사용하므로 간단한 방식으로 MAC을 생성할 수 있다.
  • 복잡성:
    • HMAC은 추가 연산이 필요하므로 SHA-3에 비해 다소 복잡.

CBC-MAC (Cipher Block Chaining MAC)

1. 정의:

  • CBC-MAC은 메시지 MM의 인증 코드를 계산하는 방법으로, 메시지를 CBC 모드로 암호화하여 최종 블록을 MAC으로 사용.
  • 초기 벡터(IV)는 항상 0으로 설정.

2. 보안 특성:

  • 고정된 길이 메시지:
    • CBC-MAC은 고정된 길이의 메시지에 대해서는 안전.
    • 블록 암호가 안전(예: 의사 난수 순열)하다면 CBC-MAC도 안전.
  • 가변 길이 메시지:
    • CBC-MAC은 가변 길이 메시지에 대해 안전하지 않다.
    • 공격자가 길이를 조작해 MAC을 위조할 가능성이 있다

CMAC (Cipher-based MAC)

1. 정의:

  • CMAC은 CBC-MAC의 변형된 알고리즘으로, CBC-MAC의 보안 결함(특히 가변 길이 메시지에 대한 취약성)을 해결하기 위해 설계되었다.
  • 이 알고리즘은 BlackRogawayXCBC라는 이름으로 제안하고 분석한 뒤, NIST에 제출되었다.

2. 특징:

  • CBC-MAC은 고정 길이 메시지에 대해서만 안전하지만, CMAC은 가변 길이 메시지에서도 안전성을 제공한다.
  • CMAC은 CBC-MAC의 구조를 기반으로 하지만, 추가적인 키와 처리를 통해 보안 강화를 구현한다.

3. 작동 방식:

CMAC은 두 개의 키를 추가로 사용하여 가변 길이 메시지를 처리할 때 발생할 수 있는 보안 문제를 방지한다:

  1. 마지막 메시지 블록 처리:
    • 메시지의 마지막 블록이 완전한 경우(블록 크기와 동일), 첫 번째 키 K1을 사용한다.
    • 그렇지 않다면(블록이 부족하면), 패딩 후 두 번째 키 K2를 사용합니다.
  2. CBC-MAC 연산:
    • 나머지 과정은 CBC-MAC와 유사.

4. 장점:

  • CBC-MAC의 단점인 가변 길이 메시지에 대한 취약성을 해결.
  • 간단한 방식으로 보안성을 유지하면서 기존 CBC-MAC 알고리즘과 호환성을 제공.

 


2. 구성 요소 설명

  • T: 메시지 인증 코드 (MAC, 태그).
  • Tlen: MAC TT의 비트 길이.
  • MSBs(X): 비트 문자열 X의 상위 ss 비트.
  • K1:
    • 메시지의 마지막 블록이 블록 크기와 일치하는지 여부에 따라 또는 사용.

3. 패딩 규칙

  • 메시지 M의 마지막 블록이 블록 크기의 배수가 아닐 경우:
    • 마지막 블록의 오른쪽에 1 비트를 추가하고, 블록 크기가 될 때까지 0으로 채움.
    • 이후, K1 대신 를 사용하여 처리.

주요 특징

  • CMAC은 CBC-MAC의 보안 결함을 해결하며, 가변 길이 메시지에서도 안전하게 동작한다.
  • 마지막 블록에서 또는 를 사용하는 추가 XOR 연산을 통해 위조 공격을 방지한다.

CMAC 키 생성

1. 두 개의 키 (K1,) 생성 공식

  • 1단계: L 계산
    • L=E(K,0n)
    • 여기서:
      • K: 암호화 키.
      • 0^n: nn-비트 길이의 0으로만 구성된 입력.
      • E: 블록 암호화 함수.
    • 를 사용해 암호화된 0^n의 출력 값.
  • 2단계: K1, 계산
    • K1=L⋅x
    • K2=L⋅x2=(L⋅x)⋅x
    • 여기서:
      • ⋅\cdot: GF(2n)GF(2^n)에서의 곱셈.
      • :GF(2^n)에서 정의된 일차 다항식.

2. 유한체 GF(2^n)에서의 곱셈

  • GF(2^n)에서 곱셈은 다항식 곱셈으로 정의되며, 필요한 경우 선택된 불가약 다항식(irreduciable polynomial*을 사용해 결과를 축소.
  • 의 이진 표현:
    • x: n−2개의 0 뒤에 10.
    • x^2: n−3개의 0 뒤에 .

3. 사용되는 불가약 다항식

  • 블록 크기에 따라 다른 불가약 다항식을 사용:
    1. n=64n :
      • 다항식: x^64+x^4+x^3+x+1.
    2. n=128:
      • 다항식: x^{128} + x^7 + x^2 + x + 1

4. 요약

  • K1,K2GF(2^n)의 연산을 기반으로 하며, 이를 통해 CMAC이 메시지 길이와 상관없이 안정적인 인증 코드를 생성할 수 있다.

Authenticated Encryption (AE)

1. 정의

  • Authenticated Encryption은 기밀성(confidentiality)과 무결성(integrity), 그리고 진위(authenticity)를 동시에 제공하는 암호화 시스템.
    • 기밀성: 메시지가 암호화되어 내용이 보호됨.
    • 무결성 및 진위: 데이터가 변조되지 않았으며, 출처가 신뢰할 수 있음을 확인.

2. 작동 모드 (Mode of Operation)

AE를 구현하기 위해 두 가지 주요 모드가 사용됩니다:

  1. CCM (Counter with CBC-MAC):
    • CTR(Counter) 모드를 사용하여 데이터를 암호화.
    • CBC-MAC를 사용하여 데이터의 무결성과 인증을 보장.
    • 주로 성능과 보안을 모두 고려한 환경에서 사용됨.
  2. GCM (Galois/Counter Mode):
    • CTR 모드로 데이터를 암호화.
    • Galois 필드를 사용하여 인증 태그를 생성.
    • 매우 빠른 처리 속도로 네트워크 및 고성능 애플리케이션에서 자주 사용.

주요 특징

  • AE는 전송 중인 데이터의 기밀성과 무결성을 동시에 보장하므로, 단순한 암호화보다 더 높은 보안성을 제공.
  • 일반적으로 네트워크 보안 프로토콜(예: TLS/HTTPS) 및 데이터 저장에 사용.

 


CCM (Counter with CBC-MAC)

1. 작동 방식

  • CCM은 CBC-MACCTR(카운터) 모드 암호화를 결합한 방식입니다.
  • 작동 과정:
    1. 메시지에 대해 CBC-MAC을 계산하여 인증 태그(tag)를 생성합니다.
    2. 생성된 태그와 메시지를 CTR 모드를 사용하여 암호화합니다.

2. 활용 분야

  • CCM 모드는 다음과 같은 표준에서 사용됩니다:
    • IEEE 802.11i (CCMP: WPA2 암호화 알고리즘).
    • IPsec.
    • Bluetooth Low Energy.
    • TLS.

GCM (Galois/Counter Mode)

1. 작동 방식

  • GCM은 CTR(카운터) 모드Galois 필드 기반 인증을 결합한 방식입니다.
  • 주요 특징:
    • 병렬 처리에 최적화되어 높은 성능을 제공합니다.
    • 암호화와 인증을 효율적으로 수행합니다.

2. 활용 분야

  • GCM 모드는 다음과 같은 표준에서 사용됩니다:
    • IEEE 802.1AE (MACsec: 이더넷 보안).
    • IEEE 802.11ad (WiGig: 고속 무선 통신).
    • IPsec, SSH, TLS 1.2.
    • Fibre Channel Security Protocols (FC-SP).
    • IEEE P1619.1 (테이프 저장소).

차이점 요약

특성CCMGCM

처리 성능 병렬 처리가 어려움 병렬 처리에 최적화
구조 CBC-MAC + CTR 모드 CTR 모드 + Galois 인증
활용 분야 WPA2, IPsec, Bluetooth 등 TLS 1.2, SSH, MACsec 등

CCM