URL : http://www.hardroid.net/archives/71
.....
1.1 RFID 와 NFC
NFC는 RFID 중 단거리에 유용하도록 정의된 기술로 먼저 RFID에 대해서 간략히 나마 설명하는 것이 좋을 것 같다. RFID는 무선 전파를 이용하여 일정 거리 안에 있는 정보를 자동으로 인식하는 기술로 RFID 태그와 RFID 리더를 사용하는데 RFID 리더가 일정거리 안에 있는 RFID 태그를 인식하여 태그에 있는 식별정보를 획득한다.
RFID 스티커 내부
RFID 태그는 많은 유형이 있지만 전원 공급에 따라 수동형(Passive)과 능동형(Active) 그리고 2가지 유형을 혼합한 반 수동형(Semi-passive)으로 나눌 수 있다.
수동형 RFID 태그는 보드에 전원 공급 장치가 없이 RFID 리더의 신호를 전자기 유도를 통해 전원을 생산하여 태그의 정보를 전송하는데 짧은 거리에서만 통신이 가능하다. 일반적으로 NFC 태그들이 이 유형에 속한다.
능동형 RFID 태그는 배터리가 내장되어 있고 수동형 RFID 태그보다 먼 거리에서도 송수신이 가능한 것이 특징인데 약 10m 이상 통신이 가능하다.
수동형 RFID는 가격이 싸고 크기가 작으며 회로가 심하게 구부려지거나 잘라지지 않은 한 통신은 가능하다. 보드 상에 전원 장치가 없으므로 일반 상태에서는 비활성화되어 있다가 RFID 리더가 태그를 감지할 때 방출하는 단거리 무선 주파수 신호를 태그 안의 안테나가 감지하여 신호를 전력으로 변환시키면 RFID 태그가 활성화된다.
.....
RFID 태그는 Ox12345678AB와 같이 오직 40비트의 유일한 식별자를 저장하고 있다. RFID 리더가 RFID 태그를 활성화시키면 태그는 유일한 ID를 전송하는데 이를 리더의 미들웨어가 전달받아 해석한 후 해석된 정보를 사용할 소프트웨어를 소프트웨어 목록에서 찾아 전송한다.
NXP의 PN65N을 NFC 컨트롤러로 사용하는 넥서스S의 NFC 미들웨어 스택
RFID와 가장 큰 차이는 근접 통신과 데이터의 량이다.
10cm의 거리에서 통신이 가능하다고 하지만 정확히 인식되어 통신되려면 5cm 이내여야 한다. 그리고 태그의 안테나의 방향과 리더기 여기서는 스마트 폰의 안테나 방향이 일치해야 인식률이 높다.
앞에서 RFID는 40비트의 식별자를 포함하고 이는 오직 읽기 전용으로 제공되지만
NFC는 이보다 많은 데이터 용량을 지원한다.
뒤에서 살펴보겠지만 NFC 표준화 단체인 NFC 포럼은 4가지 유형으로 태그를 분류하는데 이때 분류 기준 중 하나가 데이터의 용량이다.
현재 제일 작은 용량을 지원하는 NFC가 48 바이트이고 보통 144 바이트를 지원하는 것으로 나타나고 있다. 점점 데이터의 양이 늘어나고 있는데 어떤 태그는 8K 바이트를 지원하는 것도 있다.
.....
기기간 데이터 교환은 NFC 이외에 와이파이나 블루투스를 이용하여 많이 구현되었지만 페어링, 인증 단계등 여러 단계를 통해 설정이 되어야 데이터 교환을 할 수 있는데 반해 NFC는 한번의 접촉으로 물리적이고 직관적인 방식으로 아주 간편하게 연결하여 데이터를 교환할 수 있다.
블루투스 Connection Handover 흐름도 (NFC 포럼 Connection Handover 스펙 참조)
1.2 NFC 포럼
구글은 ISO 14443-3A, JIS 6319-4, ISO 15693 등 여러 NFC 기술들을 지원하지만 NFC 포럼을 표준으로 하여 태그 감지 시 NDEF 데이터가 태그로부터 스캔 될 경우 안드로이드는 자동으로 메시지를 파싱하여 바로 앱이 사용하기 편한 메시지 객체로 변환하여 제공하고 쉽게 데이터를 핸들링 하도록 API들을 제공한다.
NFC 포럼은 NDEF(NFC Data Exchange Format) 메시지 형식으로 기기간 통신, 쓰기/읽기, 카드 에뮬레이션으로 분류하여 각 모드에 필요한 기술요소들을 표준화하고 있으며 이 세가지 모드가 서로 유기적으로 제공될 수 있는 기술을 표준화하고 있다.
NFC 포럼 아키텍처
분류 | 스펙 | 설명 |
---|---|---|
Tag Type | Type 1 Tag Operation Type 2 Tag Operation Type 3 Tag Operation Type 4 Tag Operation |
|
Protocol | Logical Link Control Protocol |
|
NFC Digital Protocol |
| |
NFC Activity |
| |
NFC Analog |
| |
Data Exchange Format | NFC Data Exchange Format(NDEF) |
|
NFC Simple NDEF Exchange Protocol |
| |
Record Type | NFC Record Type Definition(RTD) |
|
NFC Text Record Type Definition | 텍스트 데이터를 위한 “Well-Known” 레코드 정의 | |
NFC URI Record Type Definition | URI 데이터를 위한 “Well-Known” 레코드 정의 | |
Smart Poster Record Type Definition | 스마트 포스터 데이터를 위한 “Well-Known” 레코드 정의 | |
NFC Signature Record Type Definition | 전자 서명 데이터를 위한 “Well-Known” 레코드 정의 | |
Reference App. | NFC Connection Handover 1.2 |
|
NFC 포럼 기술 스펙
1.3 NDEF (NFC Forum Data Exchange Format)
NFC 포럼은 NFC 포럼 기기간 주고 받거나 태그에 저장되어 있는 데이터 감지 시 데이터에 대해 경량 바이너리 메시지 형식을 표준화하였는데 이를 NFC Forum Data Exchange Format(NDEF) 이라고 한다.
애플리케이션이 전송하는 데이터를 페이로드(payload)라고 하며
페이로드들을 하나의 메시지(Message) 구조에 캡슐화하여 전송한다.
하나의 메시지의 최대 길이는 4GB이고 하나 이상의 레코드(Record)를 가지고 있다.
하나의 페이로드는 하나의 레코드에 담겨 전송되거나 여러 개의 레코드에 분할되어 전송될 수 있는데 이때의 레코드들을 덩어리(chunk)하고 한다.
NDEF의 레코드는 페이로드에 대한 정보로 페이로드 길이, 페이로드 유형, 옵션으로 추가할 수 있는 페이로드 식별자 3개의 매개변수를 포함하고 있다.
페이로드 길이(Payload Length): 레코드에 포함되어 있는 페이로드의 길이를 나타내며 만약 짧은 페이로드를 포함한 레코드이면 1바이트(옥텟) 크기를 가지며 그렇지 않으면 4바이트(옥텟) 크기의 숫자로 페이로드 길이가 지정된다. 이때 짧은 페이로드를 포함하는지에 대한 구분은 레코드의 SR 플래그 값에 따라 정해진다.
페이로드 유형(Payload Type): 페이로드의 데이터 종류를 명시하며 URIs, text/plain-text와 같은 MIME, 스마트 포스터 등 애플리케이션 개발자들이 알 수 있는 유형으로 되어 있다. 안드로이드는 애플리케이션이 원하는 페이로드 유형을 등록하면 이 값에 따라 해당하는 애플리케이션을 활성화하여 메시지를 전달한다. 그리고 Type 필드의 값의 구조를 명시하는
TNF(Type Name Format)에 대한 값을 android.nfc.NdefRecord에 정의하고 있어 쉽게 개발자들이 메시지 형식을 체크하여 핸들링할 수 있도록 지원하고 있다.
페이로드 식별자(Payload Identification): 페이로드 식별자는 옵션으로 개발자에 의해 설정되는 URI 기반의 값이다. 개발자는 유일한 식별자가 되도록 설정해야 한다.
NDEF 메시지 구조
1.4 NFC 태그 유형
NFC 포럼은 사용 용도에 따라 선택 할 수 있도록 태그를 4가지로 분류하였다. 각 분류는 용량, 쓰기 방지, 태그가 배치될 환경에 따라 선택할 수 있도록 세심하게 구분된다. 그리고 NFC 포럼과 호환되는 태그들은 앞서 말한 NDEF을 지원하며 안드로이드 개발자는 NFC Forum Type 1, 2, 3, 4 중 하나가 표시된 태그를 이용한다면 쉽게 API을 통해 태그와 상호 연동하는 애플리케이션을 만들 수 있을 것이다.
Type 1 | Type 2 | Type 3 | Type 4 | |
---|---|---|---|---|
RF 인터페이스 | ISO 14443A | ISO 14443A | JIS X 6319-4 | ISO 14443A,ISO 14443B |
속도 | 106kbps | 106kbps | 212kbps 혹은 424kbps | 424kbps 이상 |
메모리 용량 | 96 bytes, 2KB까지 확장 가능 | 48 bytes, 일반적으로는 144bytes, 2KB까지 확장 가능 | 이론적으로는 1MB | 64KB 이하 (DESFire: 4KB) (SmartFX: 32KB) |
새로 쓰기 | 사용자 새로 쓰기 가능 사용자에 의해 read-only 설정 가능 | 사용자 새로 쓰기 가능 사용자에 의해 read-only 설정 가능 | read-only 혹은 새로 쓰기를 사전에 설정하여 제조 | read-only 혹은 새로 쓰기를 사전에 설정하여 제조 |
유명제품 | 브로드콤 TopazTM | MIFARE UltraLight | 소니 FeliCaTM | INXP DESFire, NXP SmartFX |
가격 | 저가(약 ~ $1, 2) | 저가 (약 ~ $1, 2) | 고가 (약 ~ $8,10 이상) | 중고가 (약 ~ $3, 4) |
NFC 포럼의 태그 분류
.....
NFC 기술은 NFC 포럼이 설립되기 이전에 이미 존재했기 때문에 NDEF을 지원하지 않는 수많은 태그들이 존재하고 있다. 이런 경우를 위해 안드로이드는 표 1-3과 같이 android.nfc.tech 패키지에 NFC 기술들을 지원하는 클래스들을 정의하였으며 태그의 데이터를 바이트 배열로 받아 애플리케이션이 직접 파싱하여 사용할 수 있도록 지원하고 있다.
클래스 | 설명 | 제조사 지원 |
---|---|---|
TagTechnology | 태그 기술에 대한 모든 클래스들이 구현해야 할 인터페이스 | 반드시 지원 |
NfcA | NFC-A (ISO 14443-3A) 프로퍼티들과 I/O 기능을 제공 | |
NfcB | NFC-B (ISO 14443-3B) 프로퍼티들과 I/O 기능을 제공 | |
NfcF | NFC-F (JIS 6319-4) 프로퍼티들과 I/O 기능을 제공 | |
NfcV | NFC-V (ISO 15693) 프로퍼티들과 I/O 기능을 제공 | |
IsoDep | ISO-DEP (ISO 14443-4) 프로퍼티들과 I/O 기능을 제공 | |
Ndef | NDEF data에 접근할 수 있도록 지원하고 NDEF 형식의 NFC tags와 연동할 수 있는 기능을 제공 | |
NdefFormatable | NDEF 형식으로 접근 가능한 태그들을 위한 정형화된 기능을 제공 | |
MifareClassic | MIFARE Classic 프로퍼티들과 I/O 에 접근할 수 있는 기능을 제공 | 옵션 |
MifareUltralight | MIFARE Ultralight 프로퍼티들과 I/O 에 접근할 수 있는 기능을 제공 |
안드로이드에서 지원하고 있는 NFC 태그 기술 클래스
참고로 MifareClassic은 “Classic” 라벨이 부착된 MIFARE 태그들을 인식하는 것으로 이 태그는 4KB정도로 용량이 크고 비교적 1, 2달러 이내로 저렴하며 구글의 Nexus 계열 스마트 폰은 이 태그 기술을 지원하고 있다. 그러나 NDEF 메시지들을 형식화하는데 자신들만의 프로토콜을 사용하므로 제조사가 이를 지원하려면 라이선스 비용을 지불하기 때문에 조만간 안드로이드 폰에서 지원하지 않을 수 있으므로 선택에 유의하기 바란다.
1.5 NFC 서비스 유형
.....
NFC 통신 모드 | 설명 | 응용 서비스 |
---|---|---|
카드 에뮬레이션 | 단말기 상태에 관계없이 리더기에 접촉하면 인식되는 모드 | 모바일 결제, 인증을 통한 출입문 개폐, 전자제품 사용 인증 |
읽기/쓰기 | NFC 단말기가 활성화되어 있는 상태에서 NFC 태그를 인식하면 태그에 있는 데이터를 읽거나 태그에 데이터를 쓸 수 있는 모드 | 블루투스 혹은 Wifi 핸드오버, 스마트 포스터, 주차 위치 관리, 티켓팅, 이력 추적, 위치 기반 광고, 소셜 네트워크 연결 |
P2P | 2대의 NFC 단말기간에 상호 인식되어 저용량 데이터를 주고 받을 수 있는 모드 | 명함 교환, 계좌 이체, 콘텐츠 구매, 사진 및 음악 공유 |
NFC 3대 통신 모드와 응용 서비스
안드로이드는 카드 에뮬레이션 모드를 제외한 읽기/쓰기 모드와 P2P 모드를 지원하고 있다.
읽기/쓰기 모드는 안드로이드 폰의 잠금 상태를 해제하면 android.tech 패키지에 있는 태그 기술을 이용하여 태그를 인식하여 데이터를 읽고 쓸 수 있도록 지원하며 P2P 모드는 진저브레드 버전에서는 NPP(NDEF Push Protocol)로 ICS 이상에서는 안드로이드 빔을 이용하여 다른 단말기간에 데이터를 공유할 수 있도록 지원하고 있다.
** 최근 안드로이드 4.4 킷캣에서 NFC HCE기능이 추가되어 카드 에뮬레이션 기능을 구현할 수 있도록 인터페이스를 구글측에서 제공해 주었다.
그러나 아직 넘을 산이 많다.
가장 중요한 부분중에 하나인 SE(Secure Element)가 그 이유이다. 지금까지 우리나라(대한민국)에서는 SE가 보통 USIM에 포함되어 있고 기존방식은 NFC Controller에서 USIM과 NFC Reader와 직접 통신하고 앱측에서는 관여를 할 수 없었다.
그러나 HCE기능이 제공되면서 NFC Contoller의 카드에뮬레이션 기능임에도 데이터가 기본 테이블이 AP로 전달가능하게 된 것이다. 즉, USIM으로 가지 않고 앱으로 전달 받을 수 있게 되었다는 것이다.
|
|
앱에서 결제 관련 처리가 가능한 인터페이스가 생기게 되어서 기존 SE를 포함한 USIM과 통신할 수 있거나 상태 및 결과값을 받을 수 있는 방법이 있어야 하나, 현재로서는 안드로이드에서 이 부분에서는 공식적으로 지원하지 않는다.
또는
현재 계속 세계적으로 연구중인 다른방식의 USIM의 SE를 대체할 보안기술을 연구중이다. USIM의 SE를 사용하지 않고 안전하게 결제하는 방법을 연구하고 있다.
1.6 안드로이드 폰 지원
.....
특히 안드로이드의 NFC 기능 중 안드로이드 빔을 이용한 P2P 앱을 개발하고 싶다면 아이스크림 샌드위치(ICS) 버전을 지원하는 폰을 이용하길 바란다. 진저브레드는 안드로이드 빔을 지원하지 않고 NDEF Push Protocol을 이용해야 하므로 ICS가 설치되고 NFC을 지원하는 폰을 사용하길 권장한다.
'Wireless Network > NFC' 카테고리의 다른 글
NDEF란 무엇인가? (0) | 2014.09.20 |
---|---|
NFC 안테나에 대해서 (0) | 2014.09.20 |
근거리 자기장 통신 NFC 기술과 표준 동향@Embedded World(2012.03) (0) | 2014.09.20 |
NFC 기술 응용 분야와 모바일@마소 (0) | 2014.09.19 |
NFC 기술표준에 대한 고찰@마소 (0) | 2014.09.18 |