
Mifare카드는 Contactless의 인터페이스만 가능하며, Contact은 불가능하다.
개발 업체는 구 Philips 사 이며, 현재는 NXP 이다.
사용되는 주파수는 13.56MHz 이다.
Mifare카드의 종류는 Mifare Ultra lite, Mifare Classic 1K, 4K, Mifare Plus 등 있지만, 일반적으로 사용되는 Mifare Class 1K를 기준으로 설명한다.
Mifare 카드 메모리의 구조는 16개의 Sector, 1개의 Sector는 4개의 Block, 1 Block의 크기는 16bytes 이다.
0 Sector의 0 Block은 사용이 불가하며, 카드의 고유값인 Chip Serial Number(4 Byte) 및 고유정보가 저장되어있다.
각 Sector의 마지막 Block 은 해당 Sector의 접근 방식을 설정하는 Key A, B의 접근 방식인 Access Condition의 값이 저장되어있다. Key A, B의 값은 각 6 Byte 이며, Access Condition은 4 Byte로 구성되어었다.
나머지는 Data Block으로 데이터를 저장하는 Block 이며, 일반적인 데이터를 저장하는 타입과, 숫자를 저장하는 타입이 있으며,
일반 데이터 Block의 경우 Read, Write의 명령을 수행하고, 숫자를 저장하는 Value Block의 경우 4 Byte의 정수사용이 가능하며, 음수는 불가능하다. 수행되는 명령은 Read, Write, Increment, Decrement, Restore, Transfer 명령을 수행한다.
참고로 Mifare의 경우 메모리의 불안정성 때문에 저장 후 Read를 수행하여 제대로 저장여부를 확인해야 한다.
해서 Value Block의 사용빈도는 매우 적다.
예를 들면, T-Money의 초기 사용카드가 Mifare 였는데 충전 또는 차감 중 데이터가 오염되어 문제가 발생된 사례가 있다.
초기화 된 Mifare 카드의 초기키는 0xFFFFFFFFFFFF 이다. 만일 이 값으로 제어가 안된다면 Mifare 카드 제공업체에 확인이 필요하다.
Mifare카드의 제어 명령 순서
1. Request > Anticolision(CSN값을 리턴) > Select > Authkey(해당 Sector) > Sector의 Block들 제어 > Halt(Select한 카드 응답불가 적용 : )
Request 명령은 Request Standard와 Request All 이 있으며, 일반적으로 Request Standard를 사용하며, Request All의 경우 Halt된 카드까지 활성화 하기위한 명령어다.
Anticolision의 경우 Mifare카드는 4 Byte의 Chip Serial Number를 응답하지만 기타 카드의 경우 4 Byte, 7 Byte, 10 Byte를 응답할 수 있다. 또한 Chip Serial Number의 값은 Mifare 카드는 응답이 항상 동일하지만 카드의 종류에 따라 변동될 수 있으니 주의가 필요하다.
Mifare 카드 제어가 가능한 단말기는 검색하기 힘들다.
2000년 중반까지 단말기 제조업체에서 각자 스펙을 만들어 제어가 가능했으나, 이는 단말기 제조사마다 스펙이 달라
마이크로소프트에서 PC/SC 표준 스펙을 만들었다. 하지만 PC/SC의 경우 Mifare를 지원하는 스펙이 불포함되어있다.
해서, Mifare를 지원하는 단말기를 따로 검색해야 한다.
내가 쓰는 단말기는 (주)듀얼아이 https://www.duali.com/kr/ 에서 판매하는 DE-620 단말기를 사용하며, Vendor Mode 로 동작시켜 사용한다.
국내 자체생산하는 제품으로 커스터마이징이 가능한 이점이 있다. 하지만 저가형 보다 가격은 단점이 되겠다.
참고로 PC/SC로 제어가 가능한 카드는 ISO-14443 A 카드이다. 일반적으로 Type A 카드를 말하며, 우리가 일반적으로 쓰는 교통카드 기능이 되는 카드를 말한다.
ISO-14443 A 는 NFC(Near Field Communication)의 스펙을 공부하는데 도움이 된다. ISO-14443 A 스펙 이후 NFC 스펙이 나왔으며, NFC 스펙은 어느 업체들이 만들었는지 참고하면 이해하는데 많은 도움이 된다.
그리고 스마트카드를 공부하는 입장이라면 PC/SC 단말기 사용은 자재해야 한다.
PC/SC의 경우 Request > Anticolision > Select 명령을 Connect 이란 하나의 명령으로 수행되고, APDU 명령 또한 NAD, CID, Length가 자동 적용되어 자세한 스펙 공부에 방해가 된다. 일반 Vendor Mode의 단말기를 이용하여 직접 명령을 만들어 수행하고, 카드의 응답을 분석하는 공부가 나만의 기술을 상승시켜준다.