near field communication
DESCRIPTION
NFC에 대한 간략한 조사TRANSCRIPT
근거리 통신
What?
• NFC(Near Field Communication)는 2002년 소니와 NXP 세미컨덕터즈(구 필립스세미컨덕터즈)가 개발
• ISO/IEC 14443 proximity-card standard (비접촉카드 또는 RFID)를 확장한것
• 스마트카드와 리더기를 하나로 합쳐놓은것
• 기존의 ISO/IEEE 14443 리더기나 스마트카드와도 통신을 할 수 있다
Technically
• 13.56MHz의 ISM밴드에서 14KHz의 대역폭을 사용
• 최대 동작 거리: 20cm• 지원하는 통신 속도: 106, 212, 424, 848
Kbit/s• 동작모드: Passive(w/o battery), Active
NFC Core Capabilities
NFC Technology Architecture
Reader/Writer Mode
Peer-to-Peer Mode
Card Emulation Mode
For Example
• Mobile ticketing in public transport• Mobile Payment• Smart poster• Bluetooth pairing : BT 2.1 devcies with
NFC support will be as easy as bringing them close together and accepting the pairing.
SWP
• SWP = Single Wire Protocol, NFC functionality on the SIM
• The Single Wire Protocol (SWP) is a specification for a single-wire connection between the SIM card and a near field communication (NFC) chip in a cell phone. It is currently under final review by the European Telecommunications Standards Institute (ETSI)
SWP
Security
• NFC alone does not ensure secure communications
• Eavesdropping• Data Modification• Relay Attack
In Japan
• FeLiCa• 소니가 개발한 FeLiCa를 교통카드에서부터 신용카드와 멤버쉽카드와 핸드폰, 결제기능이 있는 손목시계 등, 다양한 곳에서이용
• 현재 일본의 FeLiCa기능을 가지고 있는 휴대폰의 경우 카드 에뮬레이션 모드로만 동작
• 가정용 USB리더기도 구매할 수 있다
Why?• Nokia는 지난 6월, 2011년에 출시되는 모든 스마트폰 라인업에 NFC 칩셋을 기본적으로 탑재할 것이라고 발표
• Broadcom이 대표적인 NFC IP(Intellectual Prorperty) 업체인Innovision을 인수
• Apple은 지난 8월, 미국의 모바일 지불 결제 업체인mFoundry에서 NFC 기술을 연구해 온 Benjamin Vigier를 영입
• Android 2.3 (Gingerbread) has NFC• Cheaper : 삼성전자 SHW-A170K나 구글 넥서스 S에 탑재된
NXP의 NFC 칩셋은 개당 1달러 수준이다.• 최근에는 모바일 결제 솔루션 업체인 Boku를 놓고 애플과 구글이 인수전
• 최근 NFC 칩 개발에 성공한 삼성전자는 내년 1분기에 본격양산
In Korea
• 삼성전자-KT, 국내 최초 NFC 휴대폰 출시http://www.bloter.net/archives/44342
• 모바일 업계 화두로 떠오른 ‘근거리통신’…제조사·통신사·금융권 각축http://www.bloter.net/archives/44360
• SK텔레콤, 코엑스에 모바일 커머스존 구축http://www.smartphonenow.kr/archives/4795
In Android 2.3 (Gingerbread)
• allowing applications to read NDEF message in NFC tags
NfcAdapter
+ACTION_TAG_DISCOVERED+EXTRA_ID+EXTRA_NDEF_MESSAGES
+getDefaultAdapter()+isEnabled()
NdefMessage
+CREATOR
+describeContents()+getRecords()+toByteArray()+writeToParcel()
NdefRecord
+CREATOR+RTD_ALTERNATIVE_CARRIER+RTD_HANDOVER_CARRIER+RTD_HANDOVER_REQUEST+RTD_HANDOVER_SELECT+RTD_SMART_POSTER+RTD_TEXT+RTD_URI+TNF_ABSOLUTE_URI+TNF_EMPTY+TNF_EXTERNAL_TYPE+TNF_MIME_MEDIA+TNF_UNCHANGED+TNF_UNKNOWN+TNF_WELL_KNOWN
+describeContents()+getId()+getPayload()+getTnf()+getType()+toByteArray()+writeToParcel()
In Android 2.3 (Gingerbread)
• In source codes– /external/libnfc-nxp– /packages/aps/Nfc– /frameworks/base/core/java/com/android/int
ernal/nfc– /frameworks/base/core/java/android/nfc– /frameworks/base/data/etc/android.hardware
.nfc.xml
/packages/aps/Nfc• ErrorCodes.java• NativeLlcpConnectionlessSock
et.java• NativeLlcpServiceSocket.java• NativeLlcpSocket.java• NativeNdefTag.java• NativeNfcManager.java• NativeNfcTag.java• NativeP2pDevice.java• NfcService.java• TagTarget.java
• com_android_nfc.cpp• com_android_nfc.h• com_android_nfc_NativeLlcpC
onnectionlessSocket.cpp• com_android_nfc_NativeLlcpS
erviceSocket.cpp• com_android_nfc_NativeLlcpS
ocket.cpp• com_android_nfc_NativeNdefT
ag.cpp• com_android_nfc_NativeNfcM
anager.cpp• com_android_nfc_NativeNfcTa
g.cpp• com_android_nfc_NativeP2pD
evice.cpp
/frameworks/base/core/java/com/android/internal/nfc
• LlcpConnectionlessSocket.java• LlcpException.java• LlcpServiceSocket.java• LlcpSocket.java• NfcException.java• P2pDevice.java• P2pInitiator.java• P2pTarget.java
/frameworks/base/core/java/android/nfc
• ILlcpConnectionlessSocket.aidl• ILlcpServiceSocket.aidl• ILlcpSocket.aidl• INdefTag.aidl• INfcAdapter.aidl• INfcTag.aidl• IP2pInitiator.aidl• IP2pTarget.aidl• LlcpPacket.aidl• NdefMessage.aidl• NdefRecord.aidl• NdefTag.aidl• Tag.aidl
• ErrorCodes.java• FormatException.java• LlcpPacket.java• NdefMessage.java• NdefRecord.java• NdefTag.java• NdefTagConnection.java• NfcAdapter.java• RawTagConnection.java• Tag.java
/frameworks/base/data/etc/android.hardware.nfc.xml
<!-- This is the standard feature indicating that the device can communicate
using Near-Field Communications (NFC). -->
<permissions><feature name="android.hardware.nfc"
/></permissions
References• http://techblog.textcube.com/141 about NFC• http://en.wikipedia.org/wiki/Near_field_communication NFC wikipedia• http://www.nfc-forum.org/specs : 스펙 무료 다운로드• http://www.libnfc.org/documentation/introduction : 오픈소스 NFC 라이브러리(리눅스,
Mac OS X, 윈도우)• http://www.open-nfc.org/opennfc_library/overview-summary.html : Open NFC for
Android• http://developer.android.com/reference/android/nfc/package-descr.html Android NFC
package• http://developer.android.com/resources/samples/NFCDemo/index.html Android NFC
Demo• http://www.touchatag.com/ 리더기와 tag 판매• http://www.sony.net/Products/felica/index.html FeliCa• http://en.wikipedia.org/wiki/FeliCa FeliCa wikipedia• http://www.nfc-forum.org/events/oulu_spotlight/Technical_Architecture.pdf NFC technical
architecture• http://www.nfc-forum.org/resources/presentations/Use_Case_Webinar_11_13.pdf NFC
user cases• http://www.slideshare.net/tdelazzari/architecture-and-development-of-nfc-applications