우리는 태그에 NXP NTAG 424 DNA 칩을 사용합니다. 스캔할 때마다 칩은 단조 증가 카운터의 값을 올리고 비밀 키로 AES-CMAC 인증 코드를 생성합니다. 우리 검증 서비스는 코드와 카운터를 확인하고 이미 검증한 코드는 거부합니다. 링크를 복사해도 키 없이는 새로운 유효 코드를 생성할 수 없습니다. 유효한 스캔은 태그의 진위를 인증합니다. 부착된 물품이 진품임을 증명하지는 않습니다.
단조 증가 카운터가 복제를 막는 원리
NTAG 216처럼 데이터만 저장하는 NFC 태그는 정보를 제공할 뿐 보안을 제공하지는 않습니다. 어떤 리더기로든 복사할 수 있는 고정된 정보를 저장합니다. NFC 태그를 스캔할 때마다 내부 카운터가 1씩 증가합니다. 이 카운터 값을 태그의 고유 데이터 및 비밀 키와 결합해 AES-CMAC(블록 암호 기반 메시지 인증 코드)으로 암호 서명을 생성합니다. 카운터가 매번 바뀌므로 같은 태그라도 서명은 스캔할 때마다 달라집니다.
인증 식은 다음과 같습니다.
CMAC = AES-CMAC(K, UID || Counter || Data)
여기서 K는 비밀 키, UID는 태그의 고유 식별자, Counter는 스캔할 때마다 증가하는 카운터, Data는 태그의 페이로드입니다. 위조 태그는 비밀 키를 모르면 미래의 카운터 값을 예측하거나 유효한 서명을 생성할 수 없으므로 복제가 수학적으로 실행 불가능합니다.
하드웨어 보안 모듈이 마스터 키를 보관하고, 이 키와 태그의 UID로 각 태그의 고유 키를 도출합니다. 우리는 이 키를 해당 태그의 NTAG 424 DNA 칩에 한 번 기록합니다. 기록한 키는 칩에서 다시 읽어낼 수 없습니다. 한 태그에서 추출한 키로는 다른 태그의 유효한 코드를 생성할 수 없습니다.
고정 데이터를 저장하는 NFC 태그와 우리 NTAG 424 DNA 태그 비교
| 기능 | 고정 데이터를 저장하는 NFC 태그 | 우리 NTAG 424 DNA 태그 |
|---|---|---|
| 고정된 일련번호 | 쉽게 복사 가능 | 단독으로 사용하지 않음 |
| 증가형 카운터 | 카운터가 있어도 서명 없음 | 스캔할 때마다 증가 |
| AES-CMAC 검증 | 보호 없음 | AES-CMAC으로 검증 |
| 복제 탐지 | 지원하지 않음 | 카운터 불일치 |
| 칩 검증 | 없음 | ECC secp224r1 |
| 물리적 개봉 탐지 | 지원하지 않음 | TagTamper 감지선 |