0Pricing
Cryptology Academy · 강의

CMAC 및 Poly1305: 블록 암호 MAC

CMAC와 Poly1305를 해시 기반 MAC의 대안으로 비교합니다.

CMAC 및 Poly1305: 블록 암호 MAC은(는) CoddyKit의 무료 Cryptology Academy 강의입니다. 이것은 4개 중 4번째 강의입니다. 아래에서 전체 강의를 무료로 읽을 수 있으며, 내장 코드 에디터와 24/7 AI 튜터와 함께 브라우저에서 직접 실습할 수 있습니다. 이 강의는 Cryptology Academy 학습 경로의 일부이며, 진행 상황이 웹과 CoddyKit 앱에 동기화됩니다. Cryptology Academy 강의에는 총 4개의 강의가 포함되어 있습니다.

MAC이란 무엇입니까?

메시지 인증 코드(Message Authentication Code, MAC)는 키와 메시지를 받아 태그를 생성합니다. 이 태그는 메시지가 변조되지 않았으며 키를 가진 누군가가 생성했음을 증명합니다.

HMAC과 블록 암호 MAC 비교

HMAC은 기본 요소로 해시 함수를 사용합니다. 반면 CMAC와 Poly1305는 블록 암호 또는 다항식 연산을 사용합니다. 블록 암호 MAC은 해시 함수에 대한 의존성을 피하고 AES 하드웨어와 자연스럽게 통합됩니다.

CMAC 구성

CMAC(Cipher-based MAC)는 NIST SP 800-38B에 정의되어 있습니다. 메시지를 블록 경계에 맞게 패딩하고, 암호에서 두 개의 하위 키 K1/K2를 파생한 다음, 이를 마지막 블록에 XOR하고 중간 암호문을 저장하지 않은 채 CBC 모드를 실행합니다.

CMAC 하위 키 파생

K1 = AES_K(0^128)을 1비트 왼쪽 시프트한 값이며, MSB가 1이었다면 상수와 XOR합니다. K2 = K1을 같은 방식으로 시프트한 값입니다. 이러한 하위 키는 길이 확장에 맞서 마지막 부분 블록을 안전하게 보호합니다.

Poly1305 개요

Poly1305는 Daniel Bernstein이 설계한 일회용 인증자입니다. 소수 2^130-5 위에서 다항식을 계산하며, 메시지를 다항식 계수로 취급하고 일회용 키 쌍(r, s)을 사용합니다.

Poly1305 수학

Tag = (sum of (m_i * r^i) mod 2^130-5) + s mod 2^128. 타이밍 공격을 방지하기 위해 키 r은 특정 22비트가 고정되도록 조정됩니다. s는 16바이트 일회용 덧셈 마스크입니다.

ChaCha20-Poly1305

Poly1305는 거의 항상 ChaCha20과 함께 사용됩니다. ChaCha20은 스트림 암호 키 스트림에서 일회용 (r, s)를 생성하므로, 결합된 AEAD 방식은 보안이 증명되어 있으며 ARM/모바일 CPU에서 매우 빠릅니다.

AES-GCM과 AES-CMAC 비교

AES-GCM은 GF(2^128) 위의 다항식 MAC인 GHASH를 사용해 인증합니다. AES-CMAC는 더 단순하며 IEEE 802.11i(WPA2)와 TLS 1.2 암호 스위트에서 사용됩니다. GCM은 한 번의 처리로 암호화와 인증을 모두 제공합니다.

성능 비교

ARM Cortex-A의 Poly1305는 NEON 내장 함수를 사용해 바이트당 약 1사이클을 사용합니다. AES-CMAC는 16바이트 블록마다 AES 블록 연산을 한 번 수행해야 합니다. 대량 데이터의 경우 AES-NI가 없는 하드웨어에서는 Poly1305가 CMAC보다 성능이 뛰어납니다.

보안 속성

AES가 의사 난수 순열이라고 가정하면 CMAC는 선택 메시지 공격에 대해 존재적 위조 불가능성을 가집니다. Poly1305는 진정으로 무작위인 일회용 키가 주어졌을 때 정보 이론적으로 안전하며, 위조 확률은 최대 8*ceil(L/16)/2^106입니다.

사용 사례

CMAC: WPA2, S/MIME, 파일 시스템 무결성. Poly1305: ChaCha20-Poly1305를 통한 TLS 1.3, WireGuard VPN, Signal Protocol, Noise Protocol Framework. 두 방식 모두 현대의 고보안 시스템에 널리 배포되어 있습니다.

빠른 확인

ChaCha20-Poly1305 AEAD에서 사용하는 MAC은 무엇입니까?

요약

CMAC의 CBC 기반 구성과 Poly1305의 다항식 연산을 배웠습니다. 두 방식 모두 실제 프로토콜에서 사용되는 일정 시간 실행 방식의 안전한 MAC입니다. 다음에는 TLS/HTTPS와 이러한 모든 기본 요소가 결합되는 방식을 살펴봅니다.

자주 묻는 질문

“CMAC 및 Poly1305: 블록 암호 MAC” 강의는 무료인가요?

네 — “CMAC 및 Poly1305: 블록 암호 MAC” 전체 내용을 이 웹사이트에서 무료로 읽을 수 있습니다. 인터랙티브하게 실습하려면(내장 코드 에디터와 24/7 AI 튜터), CoddyKit PRO로 업그레이드하면 Cryptology Academy 강의 전체를 잠금 해제할 수 있습니다. Cryptology Academy 강의에는 총 4개의 강의가 포함되어 있습니다.

“CMAC 및 Poly1305: 블록 암호 MAC”에서 뭘 배우나요?

CMAC와 Poly1305를 해시 기반 MAC의 대안으로 비교합니다. 브라우저에서 직접 실행하는 실습 코드로 Cryptology Academy을(를) 배우며, 24/7 AI 튜터가 강의를 진행하면서 질문에 답변해줍니다.

Cryptology Academy을(를) 시작하는 데 경험이 필요한가요?

사전 경험은 필요하지 않습니다. CoddyKit의 Cryptology Academy은(는) 초급자부터 고급 학습자까지를 위해 구성되어 있으므로, 여기서 시작하거나 처음부터 시작할 수 있으며 자신의 속도대로 진행할 수 있습니다. 이것은 4개 중 4번째 강의입니다.

“CMAC 및 Poly1305: 블록 암호 MAC” 강의는 얼마나 걸리나요?

대부분의 CoddyKit 강의는 약 5~10분이 소요됩니다. 각 강의는 간결하고 인터랙티브하여 꾸준한 진행이 가능하며, 웹과 앱에서 중단한 부분부터 바로 시작할 수 있습니다.

이 Cryptology Academy 강의에서 코드를 작성하고 실행할 수 있나요?

네. 모든 Cryptology Academy 강의에는 내장 코드 에디터가 포함되어 있으므로, 브라우저에서 바로 실제 코드를 작성하고 실행한 후 즉시 AI 피드백을 받을 수 있습니다 — 로컬 설정이 필요 없습니다.

이 강의의 모든 강의

  1. MAC 개념과 길이 확장 공격
  2. HMAC 구성과 보안 증명
  3. API의 HMAC: 요청 서명
  4. CMAC 및 Poly1305: 블록 암호 MAC
← Cryptology Academy(으)로 돌아가기