RFID 카드키 복사하기

디지털 도어락이나 각종 출입문 키 등 많은 출입 인증 시스템에서는 인증 수단으로 RFID 카드를 널리 사용한다. 이런 RFID 카드키는 일반적으로 크게 두 가지 규격이 있는데, 하나는 13.56MHz 주파수를 사용하는 HF 계열이고 하나는 125kHz계열을 사용하는 MF 계열이다.

HF 계열은 교통카드(티머니 등)나 비접촉 결제(VISA사의 Tap to pay 등의 EMV 결제)에도 자주 사용되는 ISO 14443 표준을 기반으로 하고 있다. 이러한 티머니나 각종 태그는 보통 ISO 14443 표준의 구현체 중 하나인 MIFARE Classic을 기본으로 여기에 확장 기능을 덧붙인 형태로, 기본적인 메모리 및 블록 구조와 전기적 특성은 MIFARE 태그와 같다.

 

이 중 출입 인증 수단으로 가장 자주 사용되는, 다양한 카드나 태그를 등록하여 사용하는 방식의 디지털 도어락은 거의 예외 없이 동일한 메커니즘으로 동작한다. 바로 카드나 태그의 고유번호를 기억하는 것이다. 이는 각종 NFC 태그나 교통카드, 카드키 등이 모두 MIFARE 규격을 사용하기 때문에 가능하다.

 

교통카드나 비접촉 결제를 지원하는 신용카드 등은 모두 MIFARE을 기본 규격으로 하고 있다.

모든 MIFARE 태그는 각각의 고유번호를 가지며, 이를 UID라고 한다. 이는 카드/태그 칩 제조 단계에서 4바이트의 임의의 값으로 부여되며, 이후에는 변경할 수 없다. 또한 각각의 칩의 UID는 모두 다르기 때문에 이를 각 태그를 구분하는 데에 사용할 수 있다. 이런 UID 값은 MCT (Mifare Classic Tool)라는 안드로이드 앱을 이용해서 쉽게 읽을 수 있다.

MCT 앱을 실행한 뒤 폰의 뒷면에 카드나 태그를 가져다 대면 고유번호(UID)를 읽을 수 있다.

MCT 앱을 실행한 상태에서 폰의 뒷면 NFC 안테나가 있는 부분에 교통카드 등 원하는 카드나 태그를 가져다 대면 고유번호(UID)를 읽을 수 있다. UID는 4바이트로 구성되기 때문에 8자리의 16진수 숫자로 표시된다. 카드키를 자유롭게 등록할 수 있는 디지털 도어락은 내가 아는 한 거의 예외없이 이 UID를 읽는 방식을 사용한다.

디지털 도어락은 일반적으로 키를 등록할 수 있는 최대 개수에 제한이 있고, 또 키를 등록하는 과정은 꽤나 번거롭다. 열쇠키처럼 키를 복사해서 쓸 수 있다면 더할 나위 없이 좋을 것이다. 그렇다면 이 카드키/태그를 복사하려면 어떻게 해야 할까?

빈 MIFARE 태그(MIFARE Classic 1K 규격)의 데이터를 읽은 것. 보라색으로 표시된 데이터가 0번 블럭으로, 0번 블럭의 맨 앞 4바이트가 UID 값이다. 이 값은 읽기 전용으로 사용자가 기록할 수 없다.

일단 카드키나 태그의 UID를 복사하는 것은 원래 MIFARE 표준에서는 불가능하다. 앞서 언급했듯 UID는 제조 과정에서 각 칩에 고유하게 부여되는 것으로, 이후에는 사용자가 바꿀 수 없기 때문이다. MIFARE 칩에는 종류에 따라 256바이트(Ultralight) – 1024바이트(MIFARE 1K)의 메모리가 내장되어 있는데, 이 메모리의 첫 번째 블럭(0번 블럭)은 읽기 전용이며, 여기에 UID가 저장되어 있다. 정확히는 0번 블럭의 맨 앞 4바이트가 바로 UID이다. 많은 NFC 태그들은 사용자가 직접 다양한 데이터를 기록할 수 있지만, 이 0번 블럭만은 사용자가 건드릴 수 없다.

하지만 원래 불가능하다고 표현한 이유가 무엇이겠는가. 당연히 방법이 있다는 의미이다. 원래 MIFARE 태그 규격에서는 불가능하지만, 중국에서 MIFARE 규격을 카피해서 만든 호환 태그 중에서는 UID를 재기록할 수 있는 태그가 있다. 이런 태그를 보통 쇼핑몰이나 관련 커뮤니티에서는 CUID Tag 같은 식으로 표현하는 것 같은데, 알리익스프레스 등에서 손쉽게 구할 수 있다.

 

이런 태그는 일반적인 MIFARE 신호를 받았을 때에는 MIFARE 태그처럼 동작하지만, 전용의 커스텀된 신호가 따로 있어서 해당 신호를 이용하면 0번 블럭에 데이터를 쓸 수 있게 된다. 이를 커뮤니티에서는 보통 ‘chinese magic backdoor’ 이라고 부르는 것 같다. 이 태그에 UID를 기록하려면 전용의 신호가 있어야 하기 때문에, 이 단계부터는 일반적인 안드로이드폰으로는 어렵다. 태그에 따라 Mifare Classic Tool 앱으로 UID를 쓸 수 있는 제품도 있는데, 아닌 제품도 있다. 때문에 전용 RFID 리더/라이터가 필요하다. RFID 리더/라이터는 알리익스프레스 등에서 쉽게 구할 수 있다.

USB에 연결해서 사용하는 타입도 있고

단독으로 동작하는 타입도 있다.

둘 다 CUID 태그에 원하는 UID를 입력하는 간단한 방법으로 사용할 수 있으며, 기존 태그의 UID를 읽어 다른 태그에 그대로 쓰는 복사 기능도 지원한다. 이렇게 UID를 복사하면 UID만을 확인하는 대부분의 디지털 도어락이나 출입 키를 복사해서 사용할 수 있게 된다.

다만 S사의 출입 인증 시스템 등 시스템에 따라 UID뿐만 아니라 카드/태그에 기록된 데이터를 함께 확인하는 장비도 있는데, 이는 다음 포스트에 작성한다.

4 comments

댓글 남기기

%d 블로거가 이것을 좋아합니다: