NIST와 IEEE 표준 KDF 비교 및 구현: 효율·보안·실용성 분석
초록
본 연구는 NIST가 정의한 HMAC·CMAC·KMAC 세 가지 MAC을 기반으로 한 키 파생 함수(KDF)와 IEEE 1609.2.1에서 제시한 차량용 KDF를 구현·비교한다. 실험은 동일 하드웨어·소프트웨어 환경에서 1,000개의 MAC 및 48‑byte PRN을 생성하는 시간을 측정했으며, CMAC 기반 KDF가 평균 0.014 ms로 가장 빠른 성능을 보였다. 또한 각 방법의 보안 특성, 양자 저항성, 적용 분야를 논의하고, IEEE KDF의 ECB 모드 사용에 따른 보안 우려를 지적한다.
상세 분석
본 논문은 키 파생 함수(KDF)의 핵심이 되는 메시지 인증 코드(MAC) 설계와 구현을 세부적으로 분석한다. 먼저 HMAC은 SHA‑256 기반의 해시 구조를 이용해 키를 블록 크기에 맞게 패딩하고, 내부·외부 패딩(i‑pad, o‑pad)을 적용한 뒤 두 번의 해시 연산으로 MAC을 산출한다. 이 과정은 해시 함수의 충돌 저항성과 사전 이미지 저항성을 그대로 물려받아 강력한 보안을 제공한다. CMAC은 AES‑128 블록 암호를 CBC‑MAC 방식으로 변형한 것으로, 키를 두 개의 서브키(K1, K2)로 파생하고 마지막 블록에 XOR 연산을 수행한다. 블록 암호 기반이므로 해시 기반보다 연산량이 적어 고속 처리가 가능하고, 특히 하드웨어 가속이 용이하다. KMAC은 Keccak 기반의 cSHAKE‑128을 활용해 가변 길이 출력과 도메인 구분 문자열을 지원한다. Keccak의 스폰지 구조는 병렬 처리에 유리하지만, 현재 구현에서는 SHA‑3 대비 약 2배 정도의 연산 시간이 측정되었다.
KDF 설계 측면에서 NIST SP 800‑108r1‑upd1에 정의된 카운터 모드 KDF는 PRF(예: HMAC, CMAC)를 반복 호출해 카운터값(i)와 레이블, 컨텍스트를 입력으로 사용한다. 출력 길이에 따라 필요한 블록 수를 계산하고, 각 블록을 순차적으로 연결한다. KMAC 기반 KDF는 KMAC 자체를 PRF로 사용해 동일한 구조를 유지하되, 도메인 구분 문자열을 “KDF”로 설정한다. IEEE 1609.2.1 KDF는 차량 통신 환경을 위해 AES‑128 ECB 모드와 XOR 연산을 결합한 특수 설계이며, iValue와 jValue라는 4‑byte 인덱스를 포함한다. ECB 모드는 동일 평문에 대해 동일 암호문을 생성하므로 구조적 취약점이 존재한다는 점이 논문에서 강조된다.
실험은 Intel i7‑10510U, 16 GB RAM, Windows 11, OpenJDK 21, BouncyCastle 1.70 환경에서 Java 구현으로 수행되었다. MAC 생성 1,000회 평균 시간은 HMAC 0.007 ms, CMAC 0.007 ms, KMAC 0.015 ms로, CMAC이 가장 짧았다. KDF 기반 PRN 생성에서는 CMAC‑based KDF가 0.014 ms, HMAC‑based KDF가 0.021 ms, KMAC‑based KDF가 0.038 ms, IEEE 1609.2.1 KDF가 0.069 ms로 가장 오래 걸렸다. 성능 차이는 주로 사용된 기본 PRF와 추가 연산(XOR, ECB) 여부에 기인한다.
보안 분석에서는 CMAC과 KMAC이 양자 저항성 측면에서 각각 AES와 Keccak의 구조적 특성을 물려받아 현재 알려진 양자 알고리즘에 대해 비교적 안전하다고 평가한다. HMAC은 SHA‑2 계열이 양자 저항성에서 약간 불리하지만, SHA‑3 기반 HMAC으로 전환하면 개선 가능하다. IEEE KDF는 ECB 모드 사용으로 인한 패턴 노출 위험과, XOR 연산이 공개 메시지에만 적용돼 실질적인 보안 강화가 제한적임을 지적한다.
결론적으로, 고성능·저전력 환경에서는 CMAC‑based KDF가 최적이며, 보안·양자 저항성을 중시하는 경우 KMAC‑based KDF가 유망하다. 차량용 시나리오에서는 IEEE 1609.2.1 대신 NIST 카운터 모드 KDF를 채택해 AES‑ECB 대신 CBC/CTR 모드를 적용하면 보안성을 크게 향상시킬 수 있다.
댓글 및 학술 토론
Loading comments...
의견 남기기