Documente Academic
Documente Profesional
Documente Cultură
So Paulo
2012
apresentado
Presbiteriana
Mackenzie
parcial
para
Especialista
obteno
em
Universidade
como
do
requisito
ttulo
Projeto
Desenvolvimento de Sistemas
So Paulo
2012
de
e
apresentado
Presbiteriana
Mackenzie
parcial
para
Especialista
obteno
em
Universidade
como
do
requisito
ttulo
Projeto
Desenvolvimento de Sistemas
BANCA EXAMINADORA
_____________________________________________
Prof. Dr. Ismar Frango Silveira
Universidade Presbiteriana Mackenzie
_____________________________________________
Profa. Ms. Ana Cludia Rossi
Universidade Presbiteriana Mackenzie
de
e
AGRADECIMENTOS
Ao Dr. Ismar Frango Silveira, minha eterna gratido, por ter sido professor e orientador
que, com sua competncia, me fez concluir esta empreitada.
Ms. Ana Cludia Rossi, pelo constante acompanhamento do desenvolvimento deste
trabalho.
Ao Adrian Stabiszewski, pelo suporte prestado na utilizao de suas bibliotecas e apoio
no desenvolvimento deste trabalho.
Ao Michael Rafael Ruiz, pelo suporte ao desenvolvimento de software para leitores
NFC da ACS.
Ao Luiz Carlos Cotrim Guimares Junior, pelo apoio ao desenvolvimento do framework
para o SQLite da plataforma Android.
Ao Paulo Henrique Martins, grande amigo, pelo incentivo realizao deste trabalho.
RESUMO
ABSTRACT
The goal of this work is the study of Near-Field Communication technology to build an
application for mobile devices supporting payments of transport systems tariffs. A
system will be developed to support the use of mobile devices, tags and a NFC reader.
This system will be built with an integration architecture between the devices used and
will use peer-to-peer and read/write operating modes of NFC. The application will be
supported by a mobile device based on the Android platform by using its API for NFC,
a NFC reader connected to a computer and NFC tags. By the end of this study an
analysis will be in order to evaluate the deployment of the solution provided and the
advantages and disadvantages of the use of this technology.
Keywords: Near-Field Communication, NFC, contactless, mobile devices, Android
LISTA DE ILUSTRAES
LISTA DE ABREVIATURAS
AES
ARR
APDU
ABM
CSMA
ECDH
ECMA
ETSI
XML
GPS
GSM
HDLC
HC
HCI
HCP
IEC
ISO
IP
JIS
JCE
LLCP
NDK
NPP
NFC
NFCIP
NFC
NFC CLF
NDEF
NFC HAL
NFC-WI
ORM
OHA
OTA
PC/SC
PCD
PICC
QR Code
RFID
RF
RTD
SMC
SE
SDP
SNEP
SWP
SIM
TNF
UICC
VCD
VPN
SUMRIO
1.
INTRODUO ............................................................................................. 15
2.
NFC .............................................................................................................. 17
2.1.
HISTRICO ................................................................................................. 20
2.2.
PADRONIZAO ........................................................................................ 22
2.2.1.
NFCIP-1 ....................................................................................................... 24
2.2.2.
NFCIP-2 ....................................................................................................... 25
2.2.3.
NFC-SEC ..................................................................................................... 26
2.2.4.
2.3.
2.4.
2.4.1.
2.5.
ARQUITETURA ........................................................................................... 33
2.5.1.
2.5.2.
2.5.3.
2.5.4.
2.6.
2.6.1.
Leitura/Escrita .............................................................................................. 40
2.6.1.1.
2.6.1.2.
NDEF............................................................................................................ 42
2.6.2.
Peer-to-peer ................................................................................................. 48
2.6.2.1.
2.6.2.2.
2.6.2.3.
2.6.3.
2.7.
SEGURANA .............................................................................................. 55
2.8.
FRAMEWORKS NFC................................................................................... 57
2.8.1.
2.8.2.
LibNFC ......................................................................................................... 59
3.
3.1.
PLATAFORMA ANDROID........................................................................... 62
3.1.1.
3.1.2.
Arquitetura .................................................................................................... 64
3.1.2.1.
3.1.2.2.
3.1.2.3.
Android Runtime........................................................................................... 67
3.1.2.4.
3.1.2.5.
3.1.3.
3.1.4.
3.1.5.
Recursos ...................................................................................................... 75
3.1.6.
Segurana .................................................................................................... 75
3.1.7.
3.1.7.1.
4.
4.1.
AMBIENTE................................................................................................... 81
4.1.1.
4.1.1.1.
Comunicao ............................................................................................... 83
4.1.2.
4.1.3.
Tags ............................................................................................................. 85
4.1.4.
Bibliotecas .................................................................................................... 86
4.2.
O SISTEMA.................................................................................................. 88
4.2.1.
4.2.2.
4.3.
4.3.1.
4.3.2.
4.3.2.1.
4.3.2.2.
4.3.2.3.
4.3.2.4.
4.3.2.5.
5.
6.
15
1.
INTRODUO
Os dispositivos mveis esto cada vez mais presentes e com maior poder de
processamento. Os mais avanados j possuem um poder de processamento
semelhante ao de alguns computadores modernos, utilizam processadores de vrios
ncleos, processadores grficos dedicados e tambm possuem um grande espao de
armazenamento. Grande parte destes dispositivos possui sensores e outros elementos
para controle do aparelho que tambm podem ser utilizados para melhor interao do
usurio com o dispositivo, como por exemplo, sensor de proximidade, luminosidade,
acelermetro,
giroscpio,
Global
Positioning
System
(GPS)
Near-Field
16
Baseada no recurso NFC, uma aplicao para dispositivos mveis ser desenvolvida e
permitir pagamentos de tarifas associadas utilizao de meios de transporte
coletivos, como nibus ou trens. De maneira complementar, para comunicao com o
dispositivo mvel, ser desenvolvida outra aplicao com a utilizao de um leitor NFC
que representar uma catraca do meio de transporte. Um sistema com suporte
tecnologia NFC para realizao de pagamentos consequentemente utilizar mais de
um tipo de dispositivo em sua arquitetura, at porque o NFC compatvel com algumas
tecnologias de smartcards contactless. Esta caracterstica proporciona suporte s
infraestruturas de sistemas baseados em pagamentos com smartcards contactless ao
mesmo tempo em que a tecnologia NFC introduzida. Portanto, este ambiente
abrigar um sistema com uma arquitetura heterognea por parte dos dispositivos
utilizados, mas homognea quanto ao meio de comunicao.
Este trabalho resultar em um sistema com uma arquitetura de integrao entre
dispositivos com suporte a tecnologia NFC. Uma aplicao ser construda com base
na plataforma Android para dispositivos mveis, atravs da utilizao de sua API para
NFC. O leitor NFC estar conectado a um computador pessoal e tambm ter uma
aplicao de apoio utilizao do dispositivo mvel como forma de pagamento. Apesar
de integrar elementos como internet, servios de autenticao e tags NFC, este
trabalho no tem como objetivo estud-los especificamente. Estes elementos sero
utilizados apenas para analisar a viabilidade de sua utilizao na aplicao e seu
impacto na arquitetura do sistema.
Parte do desafio em desenvolver um sistema com base na tecnologia NFC est na
escassez de livros sobre o assunto. Como a especificao da tecnologia NFC est em
constante evoluo e o aumento de sua popularidade algo relativamente recente,
existem poucas publicaes sobre o assunto. Entretanto, h interesse de diversas
empresas do setor e uma ampla quantidade de estudos sobre o assunto.
Ao final deste estudo ser feita uma anlise de implantao da soluo desenvolvida
em transportes coletivos e das vantagens e desvantagens do emprego desta
tecnologia.
17
2.
NFC
18
recebida sem que haja interao do usurio com o dispositivo mvel. O usurio pode
aproximar o dispositivo mvel a outros dispositivos como tags NFC, leitores NFC ou at
mesmo outros dispositivos mveis NFC, e com base apenas nesta ao, obter o
resultado esperado, como realizar um pagamento por exemplo.
Esta praticidade proporciona a criao de diversas aplicaes, pois atravs do NFC,
uma interao especial entre o ser humano e o computador estabelecida. Esta
interao recebe o nome de computao ubqua. Segundo (COSKUN, 2012), o NFC
um dos caminhos para se atingir a computao ubqua.
Como esta tecnologia proporciona uma comunicao em pequenas distncias, o risco
de uma interceptao dos dados sendo transferidos, apesar de existir, relativamente
pequeno porque o dispositivo interceptador precisaria estar posicionado dentro do
alcance do outro dispositivo. Seu principal uso tende a ser em aplicaes que utilizem
informaes confidenciais, como pagamento atravs de dispositivos mveis, porm,
medida que novas aplicaes so desenvolvidas, novas interaes com esta tecnologia
podem ser estabelecidas. J possvel encontrar jogos que a utilizem, como o Angry
Birds produzido pela Rovio. De fato, o uso de um dispositivo NFC em um ambiente
habilitado para esta tecnologia pode facilitar vrias tarefas do cotidiano do usurio,
como por exemplo:
19
Do ponto de vista tcnico, o NFC pode ser visto como extenso da tecnologia Radio
Frequency Identification (RFID). O RFID tambm uma tecnologia de comunicao
sem contato, que combina um pequeno chip de identificao com um leitor em um
nico dispositivo e pode ter um alcance de muitos metros de distncia, desde que se
tenha uma fonte de energia externa, o que torna seu uso bastante diferenciado.
O NFC utiliza o conceito fsico de campo de induo magntica para fazer com que
dois dispositivos se comuniquem. Um dos principais objetivos desta tecnologia fazer
com que os benefcios da comunicao sem fio do RFID sejam estendidos s tarefas
do cotidiano do usurio, substituindo e buscando simplificar diversas interaes com o
meio fsico. Mesmo com o RFID sendo amplamente utilizado, principalmente em
tarefas como deteco ou rastreio de produtos, a introduo do NFC prope diversas
maneiras diferentes de utilizao por causa da distncia menor e pela possibilidade de
haver inteligncia e poder de processamento nos dois lados da comunicao.
Dispositivos NFC tambm podem substituir alguns tipos de smartcards que so
amplamente utilizados por sistemas de transporte, por exemplo. Alm disso, capaz
de prover segurana quanto transmisso e armazenamento de dados, conforme
especificao da tecnologia.
20
O NFC tambm pode ser utilizado em conjunto com outros protocolos para selecionar
dispositivos e automatizar os processos de configurao. Por exemplo, os parmetros
para estabelecimento de conexo com uma rede wireless podem ser transmitidos
atravs da comunicao com outro dispositivo NFC, como uma tag NFC. A
configurao de uma rede wireless normalmente exige uma interao razovel do
usurio, como busca de rede adequada e configurao de usurio e senha, e o uso da
tecnologia NFC permite que essa interao seja simplificada para uma simples
aproximao de dispositivos. Outro fator importante que o tempo gasto para
estabelecimento de conexo menor que 0,1s, ou seja, extremamente baixo em
comparao com o protocolo de comunicao Bluetooth, que pode atingir at 6s
(ATOJI, 2010).
2.1. HISTRICO
O NFC pode ser compreendido como uma extenso da tecnologia RFID que tambm
capaz de interagir com interfaces baseadas em smartcards. Em resumo, o NFC herda
um pouco do conceito de cada uma destas tecnologias, que sero brevemente
apresentadas a seguir. Quanto ao RFID, pode-se entender que o cdigo de barras foi
seu precursor enquanto o carto magntico foi o precursor dos smartcards (COSKUN,
2012).
O cdigo de barras nada mais do que uma representao visual de dados relativos
ao objeto em que ele est associado. Esta informao interpretada por leitores de
cdigos de barras e transferida para computadores, que a processam ou enviam para
outros dispositivos e sistemas. Inicialmente os cdigos de barras possuam apenas
uma dimenso, e eram representados por listras verticais paralelas que variaram sua
largura e espaamento. Em seguida, evoluiu para cdigos de barras bidimensionais,
como o Quick Response Code (QR Code), e passou a ter a capacidade de armazenar
mais informaes.
O RFID por sua vez, uma tecnologia que usa comunicao atravs de ondas de rdio
para trocar dados entre um leitor e uma tag RFID. A transmisso de dados resultado
das ondas eletromagnticas, cuja distncia varia de acordo com a frequncia e o
campo magntico. Suas tags so pequenos circuitos que podem conter aplicaes ou
21
dados. Nesta tecnologia existem tags passivas e ativas. As passivas tm um circuito
integrado e uma antena, mas no tem fonte prpria de energia e podem se comunicar
apenas atravs de um campo eletromagntico, em uma distncia que pode chegar at
alguns metros. As ativas tem sua prpria fonte de energia e podem atingir distncias
maiores. So consideradas mais confiveis pelo fato de poderem manter uma sesso
de comunicao com energia prpria. O uso da tecnologia RFID est mais relacionado
s aplicaes de controle de estoque, pedgios, transporte e at mesmo rastreio de
animais.
O carto magntico um carto que contm um espao para armazenamento de
informao em pequenas partculas magnticas ligadas a uma resina. Os dados so
lidos quando o carto deslizado pela interface de um dispositivo de leitura magntica.
A informao presente no carto gravada no momento de sua confeco e nunca
mais sobrescrita. Cartes bancrios so os maiores exemplos de uso desta
tecnologia.
J os smartcards contm um circuito integrado com memria embutida, e geralmente
possuem um micro controlador para segurana. Podem ser divididos em trs grupos:
de contato, contactless (sem contato) e hbrido. Um smartcard de contato se comunica
com um leitor de cartes atravs de contato fsico direto e o leitor que prov a energia
necessria para o funcionamento do carto. No caso dos smartcards contactless, a
comunicao ocorre quando o carto aproximado do dispositivo de leitura. Este leitor
emite um campo eletromagntico que serve como fonte de energia para o
funcionamento do carto. J um smartcard hbrido suporta os dois modos de
funcionamento anteriores, podendo variar o nvel de segurana requerido para algum
deles.
Com um breve conhecimento destas tecnologias possvel identificar diversas
caractersticas que foram aproveitadas no NFC. Dispositivos NFC tambm podem ter
fonte prpria de energia, assim como as tags RFID, e podem ter um chip dedicado para
segurana em sua arquitetura, como nos smartcards. Tanto na tecnologia RFID quanto
em smartcards contactless, existe o conceito de comunicao por proximidade,
presente em NFC. O NFC utiliza a mesma frequncia do RFID, que de 13.56MHz
22
com uma taxa de transferncia de dados de 106, 212 ou 424 kbit/s, que limita seu uso
para transferncia de informaes pequenas. Existem diferentes modos de
funcionamento para comunicao entre dispositivos mveis, tags e leitores compatveis
com NFC. Entretanto, as aplicaes desenvolvidas para NFC tendem a ter propsitos
diferentes por causa da caracterstica da distncia, que curta e principalmente, por
causa do suporte comunicao peer-to-peer.
2.2. PADRONIZAO
A tecnologia NFC foi desenvolvida pela Philips em conjunto com a Sony, no final de
2002, com a finalidade de estabelecer um padro para a comunicao do tipo
contactless. O termo contactless utilizado para designar a comunicao que ocorre
pela proximidade de dois dispositivos sem que haja algum toque fsico.
O final de 2002 representa o incio da padronizao da tecnologia, pois foi nesta data
que a European Computer Manufacturers Association (ECMA) adotou a tecnologia
como um padro. Ao final do ano seguinte, em dezembro de 2003, foi a vez da
International Organization of Standardization (ISO) e da International Electrotechnical
Comission (IEC) adotarem a tecnologia como um padro. Alm destas, a European
Telecommunications Standards Institute (ETSI) tambm reconhece o NFC. Para
promover a tecnologia, as empresas Nokia, Philips e Sony fundaram o NFC Forum em
2004.
O NFC o resultado da juno de vrias outras tecnologias (COSKUN, 2012).
Smartcards, dispositivos mveis, leitores de carto, comunicao de curto alcance,
segurana de comunicao, transaes e sistemas de pagamento esto entre as
motivaes para o surgimento do NFC. De fato, a tecnologia NFC depende de muitas
destas tecnologias para existir e por este motivo que diversas organizaes
diferentes esto envolvidas direta ou indiretamente na padronizao e na evoluo do
NFC.
Estas organizaes so responsveis por estabelecerem os padres de suas
respectivas tecnologias e o resultado da juno de todas essas tecnologias serve para
definir uma viso comum para o uso do NFC, de maneira segura e funcional. Estes
23
diversos padres devem ser interoperveis para que se estabelea um ecossistema
NFC com sucesso. Dentre estas organizaes, podemos destacar:
ETSI e ETSI Smart Card Platform: uma organizao sem fins lucrativos que
produz padres para tecnologias de informaes e comunicaes, incluindo
telefonia mvel e fixa, rdio e internet. Gerencia a especificao do carto
24
Subscriber Identity Module (SIM) e poderia permitir que cartes SIM
contivessem aplicaes NFC;
Vrios padres j foram definidos para a comunicao entre dois dispositivos NFC,
dentre eles o Near Field Communication Interface and Protocol (NFCIP), que contm
as especificaes mais importantes da tecnologia. Estes padres definem, na camada
fsica da arquitetura NFC, os modos de comunicao do campo eletromagntico e
outras questes tcnicas associadas.
O NFCIP subdividido em dois padres: o NFCIP-1 e o NFCIP-2. Os dispositivos NFC
precisam atender essas especificaes para serem compatveis com o padro
internacional para interoperabilidade com smartcards, cartes de proximidade (ISO/IEC
14443), cartes de vizinhana (ISO/IEC 15693) e tambm para os cartes contacless
Sony FeliCa (JIS X 6319). Sendo assim, com esta combinao de diferentes
tecnologias baseadas em comunicao contactless e smartcards, o NFC compatvel
com as tecnologias mais utilizadas no mercado, oferecendo compatibilidade com
infraestruturas e sistemas j em funcionamento (KORTVEDT, 2009).
2.2.1. NFCIP-1
Em NFCIP-1 esto definidos os modos de comunicao ativo e passivo, o campo
eletromagntico, os sinais de comunicao da interface do campo eletromagntico e o
fluxo geral do protocolo. Alm disso, define um protocolo de transporte que inclui
25
ativao do protocolo, troca de dados, deteco de erros e desativao do protocolo. O
NFCIP-1 est padronizado em ISO/IEC 18092, ECMA 340 e ETSI TS 102 190.
A pilha de protocolos presente nesta especificao baseada na ISO/IEC 14443 e a
diferena principal est nos protocolos de comando. Isto permite que os dispositivos
NFCIP-1 sejam capazes de se comunicar com algumas tags e smartcards, alm de
outros dispositivos em modo peer-to-peer.
Dentre as caractersticas da comunicao que esto especificadas neste padro,
podemos destacar os esquemas de modulao, a taxa de transferncia, a codificao
dos bits, a inicializao e a finalizao da comunicao, a representao dos bits, o
enquadramento dos dados, a deteco de erros, seleo de protocolos, seleo dos
parmetros e troca de dados.
As taxas de transferncia de dados tambm esto definidas neste padro. Durante
uma comunicao, a taxa de transferncia pode ser alterada pelos dispositivos
envolvidos, porm a classificao do modo de comunicao no pode ser alterada
durante uma comunicao, j que o ponto de partida para o incio da mesma.
2.2.2. NFCIP-2
Em NFCIP-2 est definido o mecanismo de seleo de modo de comunicao. Este
mecanismo foi projetado para no interromper alguma comunicao j existente na
frequncia de 13.56MHz para dispositivos que implementem o NFCIP-1, o Proximity
Coupling Device (PCD) e o Vicinity Coupling Device (VCD). O NFCIP-2 est
padronizado em ISO/IEC 21481, ECMA 352 e ETSI TS 102 312, enquanto o PCD est
padronizado em ISO/IEC 14443 e o VCD est padronizado em ISO/IEC 15693.
Dispositivos que seguem as especificaes de NFCIP-2 precisam implementar
algumas caractersticas de ISO/IEC 14443, ISO/IEC 15693 e tambm as funes de
iniciador e alvo definidas em ECMA 340. Isto faz com que este dispositivo seja
compatvel com aplicaes que utilizam tecnologia Sony FeliCa ou MIFARE.
Apesar de todos os padres com os quais o NFCIP-2 compatvel utilizarem a mesma
frequncia de comunicao, os modos de comunicao so diferentes. Portanto, esta
especificao utiliza o protocolo Carrier Sense Multiple Access (CSMA) para garantir
26
que um campo eletromagntico no seja iniciado se o dispositivo detectar uma
comunicao em andamento.
A comunicao segue um princpio de escutar antes de falar. Se um dispositivo
pretende se comunicar, ele deve se certificar que no existe nenhum campo
eletromagntico ao seu redor, para que no haja interferncia em outra comunicao
que esteja em andamento. O dispositivo permanecer parado enquanto detectar outro
campo eletromagntico e aguardar o trmino da comunicao. Se outros dois
dispositivos responderem a solicitao de comunicao enviada, o dispositivo iniciador
da comunicao detectar que houve uma coliso e no continuar a comunicao at
que haja apenas uma resposta em um perodo de tempo determinado com preciso.
2.2.3. NFC-SEC
O protocolo NFC-SEC foi desenvolvido para fornecer segurana em comunicaes
peer-to-peer. Como o NFCIP-1 no prov segurana, o protocolo NFC-SEC serve para
complementar este aspecto. Este padro define uma pilha de protocolos que
possibilitam o uso de funes de criptografia, definidas pela aplicao, na camada de
enlace.
O NFC-SEC constitudo por dois protocolos: NFC-SEC e NFC-SEC-01. O NFC-SEC
define os servios de segurana como proteo contra espionagem e alterao de
dados e est padronizado em ECMA 385. O NFC-SEC-01 est padronizado em ECMA
386 e define os servios de criptografia utilizando algoritmos como Elliptic Curve DiffieHellman (ECDH) e Advanced Encryption Standard (AES). Este protocolo define os
mecanismos de criptografia que definem o uso de protocolo ECDH para troca de
chaves e o algoritmo AES para criptografia de dados e integridade. O protocolo
tambm prev o uso de outros algoritmos de criptografia no futuro atravs de um
campo identificador.
2.2.4. ISO/IEC 14443
Este
padro
internacional
foi
desenvolvido
para
suportar
comunicao
por
27
um micro controlador e uma antena que opera na frequncia especificada. Desta
forma, este padro permite que a troca de informaes ocorra sem que haja contato
entre os dispositivos. Neste padro, as transaes acontecem entre um carto e um
leitor, que so representados como Proximity Integrated Circuit Card (PICC) e PCD,
respectivamente.
Esta especificao composta pelas quatro partes seguintes:
28
usado principalmente como cartes de dinheiro eletrnico. A Sony tentou lanar este
carto como ISO/IEC 14443 Tipo C, mas no obteve aprovao. Portanto, no se
tornou um padro ISO/IEC e apenas obedece ao padro japons X 6319, definido pela
entidade Japanese Industrial Standard (JIS), que especifica cartes de proximidade de
alta velocidade (COSKUN, 2012).
2.3. COMPARAO COM OUTRAS TECNOLOGIAS
Devido variedade de tecnologias baseadas em RF para estabelecer comunicao e
trocar informaes, foram criadas aplicaes para diversas funcionalidades, como
rastreio de animais e objetos, pagamento, identificao segura de pessoas, entre
outras. Entretanto, apesar de todas estas aplicaes utilizarem tecnologias que
dependam de ondas de rdio para transferncia de dados, a maneira como estas
ondas so utilizadas depende dos requisitos da aplicao. Isto significa que ainda que
existam vrias tecnologias baseadas em RF para troca de dados, cada uma tem sua
particularidade e por conta disso acabam sendo mais teis para um determinado tipo
de aplicao.
O RFID tem como elemento principal a tag RFID, que conhecida por ser simples, de
baixo custo e descartvel. Esta tag contm um circuito integrado com dados e uma
antena para enviar estes dados a um leitor. Assim que a tag entra no raio de ao de
um leitor, os dados armazenados so enviados para este leitor. No existe um
mecanismo de segurana ou autenticao nesta tecnologia, portanto qualquer leitor
compatvel capaz de obter o contedo presente na tag RFID.
Os smartcards do tipo contactless, por sua vez, tambm interagem com algum
dispositivo externo utilizando tecnologia RF. Porm, os smartcards tem um micro
controlador para segurana e uma memria interna, que so utilizados para gerenciar,
armazenar e fornecer acesso aos dados no carto. Alm disso, so capazes de realizar
tarefas computacionais mais complexas, como criptografia. A distncia para que o leitor
seja capaz de estabelecer uma comunicao com o carto de aproximadamente 10
cm, mas pode variar de acordo com o tipo de smartcard utilizado. Por causa disso,
estes smartcards costumam ser utilizados em aplicaes que exigem um alto nvel de
segurana, como documentos e solues de pagamento. O uso de smartcards
29
contactless em aplicaes implica em alta integridade e confidencialidade com relao
informao armazenada e transferida.
J o NFC tem como caractersticas mais importantes o pareamento automtico e a
segurana implcita devido pequena distncia com a qual se consegue comunicar
com outro dispositivo, que no precisa ser necessariamente um leitor. O NFC possui
baixas taxas de transferncia de dados na comunicao e atua sob distncias
pequenas. A comparao na imagem a seguir deixa mais clara o posicionamento da
tecnologia NFC perante outras tecnologias wireless (COSKUN, 2012):
30
este tipo de interao seria mais complexo, pois implicaria em busca de dispositivos,
pedido de pareamento e autorizao.
Enquanto o NFC estabelece apenas redes ponto-a-ponto, o Bluetooth capaz de
estabelecer redes ponto-a-multiponto, possui o maior alcance e maior taxa de
transferncia. Por isto, o NFC no pode ser considerado um substituto do Bluetooth,
pois ambos tm finalidades distintas. Ao utilizar Bluetooth, geralmente necessrio
estabelecer um pareamento entre os dispositivos envolvidos, o que no ocorre no NFC,
pois a curta distncia j significa que houve a inteno de realizar a comunicao. Alm
disso, o Bluetooth no capaz de oferecer um modo de operao passivo assim como
o NFC, e tambm no a melhor escolha para aplicaes que exigem um elevado
nvel de segurana.
2.4. TIPOS DE DISPOSITIVOS
As partes envolvidas na comunicao NFC so chamadas de dispositivos NFC, e so
divididas em trs grupos distintos, descritos a seguir:
Tags NFC: a tag NFC um dispositivo semelhante a uma tag RFID, onde no
h fonte de energia prpria, mas existe a capacidade de armazenamento
atravs de um pequeno circuito ativado por meio de campos eletromagnticos.
31
2.4.1. CLASSIFICAO DOS DISPOSITIVOS
Cada sesso de comunicao NFC composta por duas partes. Estas partes podem
ser classificadas sob duas perspectivas: uma delas baseada na capacidade de um
dispositivo NFC ter sua prpria fonte de energia e gerar seu prprio campo
eletromagntico e a outra baseada em um ponto de visto algortmico, ou seja, de
acordo com o papel que a parte exerce no contexto da comunicao.
De acordo com a classificao sob a perspectiva algortmica, a parte que realiza a
primeira etapa de comunicao, ou seja, a parte que inicia a comunicao chamada
de iniciadora. Esta parte tem a responsabilidade de gerenciar a comunicao e a troca
de dados. Em contrapartida, a parte que responde s requisies do iniciador
chamada de alvo. A configurao desta comunicao NFC semelhante arquitetura
cliente-servidor, onde a comunicao tambm iniciada com uma requisio do cliente
que respondida pelo servidor (COSKUN, 2012). Em um cenrio onde um dispositivo
participa ativamente da sesso de comunicao, realizando requisies sobre nmeros
de cartes de crdito, bilhetes, entre outros, ou enviando informaes com base em
clculos efetuados, este dispositivo considerado iniciador, enquanto o outro
dispositivo que recebe as requisies, processa as informaes e envia respostas
considerado o alvo.
De acordo com a classificao sob a perspectiva de fonte de energia, uma parte
considerada ativa se seu componente NFC tem sua prpria fonte de energia e gera o
seu prprio campo eletromagntico, podendo assim iniciar e gerenciar a comunicao.
Enquanto isso, a parte que no tem nenhuma fonte de energia e depende do campo
eletromagntico gerado pelo dispositivo ativo chamada de passiva e possui apenas a
capacidade de responder as requisies recebidas.
O relacionamento entre as classificaes pode ser visualizado na tabela a seguir:
Papel do Dispositivo
Dispositivo Ativo
Dispositivo Passivo
Iniciador
Possvel
No possvel
Alvo
Possvel
Possvel
32
Desta forma, possvel observar que o dispositivo iniciador sempre ser um dispositivo
ativo, pois ele precisa ter sua prpria fonte de energia para gerar o campo
eletromagntico necessrio para o incio da comunicao NFC. Por sua vez, o
dispositivo alvo pode ser tanto ativo quanto passivo na comunicao. O alvo pode ser
ativo, quando utilizar sua prpria fonte de energia para responder s requisies ou
pode ser passivo, quando depender do campo eletromagntico gerado pelo iniciador
para obter a energia necessria para a comunicao.
Uma tag NFC, por exemplo, como foi concebida para ser um dispositivo de baixo custo
e baixa capacidade de armazenamento, no contm nenhuma fonte de energia e
depende de uma fonte de energia externa para exercer sua funo. Portanto, uma tag
ser sempre um dispositivo alvo e passivo na comunicao, j que no capaz de
gerar seu prprio campo eletromagntico. Em outras palavras, ela foi concebida para
ser manipulada por um dispositivo ativo. Quando um dispositivo ativo aproximado de
uma tag, imediatamente a energia proveniente do seu campo eletromagntico
consumida pela tag NFC, que inicializada. Duas tags no podem se comunicar entre
si, pois no h energia para realizar essa inicializao.
Os leitores NFC so dispositivos que sempre participaro como dispositivos ativos na
comunicao, e so capazes de realizar transferncia de dados de forma bidirecional
com outro dispositivo NFC. J um dispositivo mvel NFC, tem a capacidade de
participar na comunicao NFC em qualquer configurao possvel apresentada na
tabela anterior. Ele pode ser um dispositivo iniciador e ativo ao ler o contedo de uma
tag NFC, por exemplo. Pode ser considerado um dispositivo alvo e ativo ao responder
uma requisio de outro dispositivo mvel NFC que seja iniciador da comunicao e,
alm disso, pode ser considerado alvo e passivo, no caso de emular o funcionamento
de um smartcard. Estas funcionalidades sero vistas com mais detalhes na abordagem
dos modos de operao.
Quando um dispositivo tem fonte de energia prpria, naturalmente ele ser utilizado
para iniciar e gerenciar a comunicao NFC, enquanto um dispositivo que no tem s
poder responder s requisies de um dispositivo ativo. Estes pontos de vista devem
33
ser considerados complementares e so muito importantes para o entendimento da
dinmica da tecnologia NFC e da comunicao entre os dispositivos.
2.5. ARQUITETURA
Um dispositivo mvel que contm tecnologia NFC composto por circuitos integrados,
Security Elements (SEs) e uma interface NFC. Esta interface NFC possui um
componente chamado de NFC Contactless Front-end (NFC CLF) que representa a
porta de entrada para comunicao. Alm disso, a interface possui uma antena NFC e
um chip denominado NFC Controller, que serve para gerenciar uma sesso de
comunicao. Em um dispositivo mvel sempre haver pelo menos um SE, que estar
ligado diretamente ao NFC Controller e poder ser utilizado para manter a segurana
em sesses de comunicao. Mais de um SE pode estar ligado ao mesmo NFC
Controller para oferecer ainda mais segurana comunicao.
Para o NFC Controller se comunicar com o SE, necessrio que uma interface comum
entre eles seja utilizada. Atualmente, as interfaces suportadas para estabelecer esta
ligao so Single Wire Protocol (SWP) e NFC Wired Interface (NFC-WI). Alm do NFC
Controller, o SE tambm pode ser acessado internamente pelo Host Controller (HC) ou
por outro dispositivo NFC presente no campo eletromagntico. Atravs dessas
interfaces o SE capaz de fornecer um ambiente seguro para dados e aplicativos, que
possibilitam o uso e armazenamento de informaes confidenciais.
O HC a parte principal de qualquer dispositivo mvel. Atravs da Host Controller
Interface (HCI) possvel estabelecer uma interface de comunicao entre o NFC
Controller e o HC. Adicionalmente, atravs do ISO/IEC 7816 estabelecida uma
interface entre os SEs e o HC. Assim, o HC tem a capacidade de configurar o modo de
operao do NFC Controller usando a interface HCI, processar os dados que so
enviados e recebidos e estabelecer uma conexo entre o NFC Controller e o SE. Alm
disso, o HC mantm todas as outras funes do dispositivo mvel. Uma ilustrao
desta arquitetura demonstrada na figura a seguir (COSKUN, 2012):
34
35
aplicaes, o carregamento seguro de aplicaes e o armazenamento seguro de dados
destas aplicaes.
Aplicaes NFC armazenadas e executadas na memria do HC de um dispositivo
mvel no esto protegidas contra manipulao dos dados salvos na memria, seja
intencional ou no. Aplicaes armazenadas desta maneira provavelmente tem seu
uso voltado para tarefas que no necessitam de segurana, como leitura de psteres,
por exemplo. J em solues de pagamento, a segurana imprescindvel, pois estas
aplicaes costumam trocar ou armazenar informaes confidenciais. Sendo assim,
para garantir a segurana, aplicaes crticas devem ser armazenadas e executadas
na memria do SE de um dispositivo mvel NFC. Uma variedade de componentes
pode ser utilizada como SEs, como Universal Integrated Circuit Cards (UICCs), cartes
de memria ou outro tipo de hardware integrado. A figura a seguir mostra a diferena
entre uma arquitetura NFC segura e no segura (COSKUN, 2012):
36
37
integridade e segurana para os dados destas aplicaes. Assim, estes cartes podem
armazenar aplicaes relacionadas telefonia ao mesmo tempo em que armazenam
aplicaes de pagamentos, por exemplo. Atualmente, este o cenrio considerado
ideal para a utilizao do SE em dispositivos mveis, pois so pessoais, seguros,
portveis e podem ser facilmente gerenciados atravs da tecnologia Over The Air
(OTA), por onde as operadoras de celular so capazes de manipular as aplicaes e os
dados das aplicaes presentes no SIM atravs dos prprios meios de comunicao.
2.5.2. INTERFACE NFC
A interface NFC composta por um front-end contactless chamado NFC CLF, uma
antena NFC e um NFC Controller. O NFC Controller torna possvel a comunicao NFC
em um dispositivo mvel. Funciona como um modulador e demodulador entre o sinal
analgico do campo eletromagntico e a antena NFC, que por sua vez, conectada ao
NFC Controller atravs de alguns componentes passivos, como capacitores, resistores
e indutores.
O NFC CLF o front-end analgico do NFC Controller. Possui uma interface lgica
com um protocolo definido acima da camada de enlace, que por onde as mensagens
so trocadas entre o SE e o NFC CLF.
Em toda arquitetura NFC que seja segura, h uma interface entre o SE e o NFC
Controller, alm de uma interface entre o HC e o NFC Controller. Assim, os dados que
so transmitidos atravs da interface contactless podem ser encaminhados diretamente
pelo NFC Controller at o SE, e vice-versa. Desta forma, o HC no envolvido na
comunicao.
2.5.3. INTERFACE ENTRE SE E NFC CONTROLLER
Existem vrias solues para estabelecer uma interface entre o SE e o NFC Controller,
porm as mais importantes so a NFC-WI e a SWP (COSKUN, 2012).
O NFC-WI uma interface digital de ligao padronizada por ECM 373, ISO/IEC 28361
e ETSI TS 102 541. Neste padro, o SE definido como um transceiver e o NFC
Controller como um front-end. O SE est conectado ao NFC Controller atravs de dois
fios. Estes fios so denominados Signal-In (SIGIN) e Signal-Out (SIGOUT),
38
respectivamente. Cada fio estabelece uma interface digital e carrega dois sinais
binrios que so definidos como HIGH e LOW. Os sinais transmitidos entre o NFC
Controller e o SE so modulados e digitalmente recebidos ou enviados pelo campo
eletromagntico. Neste padro, o transceiver a entidade que envia mensagens pelo
SIGIN e recebe pelo SIGOUT, enquanto o front-end a entidade que envia pelo
SIGOUT e recebe pelo SIGIN. O NFC-WI totalmente compatvel com todos os modos
de operao e todas as taxas de transferncia de dados definidas ISO/IEC 18092 e
ISO/IEC 14443.
J o SWP define uma conexo entre o SE e o NFC Controller com apenas um fio,
diferentemente do NFC-WI, e est padronizado em ETSI TS 102 613. O SWP um
protocolo full duplex e possui uma taxa de transferncia de 212 kbit/s at 1.6 Mbit/s
para distncias de at 10 cm. A interface SWP um protocolo ponto-a-ponto orientado
a bit que possui um princpio de funcionamento similar ao princpio de mestre e escravo
da computao. Neste caso o NFC Controller o mestre e o SE o escravo. O SWP foi
concebido com o propsito de ser utilizado por cartes UICC para dispositivos mveis,
pois apenas um contato est disponvel para ligao. Porm, h uma exceo onde a
energia do carto UICC fornecida pela interface NFC, ao invs do prprio dispositivo
mvel. Neste caso, mais contatos so utilizados pela interface NFC. Esta opo
possibilita que o dispositivo seja utilizado de maneira passiva quando a bateria est
descarregada.
Os dados transmitidos neste protocolo so representados por estados binrios de
voltagem e corrente no fio. A transmisso de dados entre a interface NFC e o SE
ocorre pela modulao do sinal da voltagem, e na direo oposta os dados so
transmitidos pela modulao do sinal da corrente. No topo da camada fsica, o
protocolo High-Level Data Link control (HDLC) utilizado para controlar a transmisso
de dados entre a interface NFC e o SE. Este protocolo padronizado em ISO/IEC
13239 e prov deteco e correo de erros, sincronizao de sinal e controle de fluxo.
O SWP carrega pacotes pequenos para a camada de aplicao e permite o roteamento
de mensagens para diferentes componentes dentro do dispositivo mvel.
39
2.5.4. HOST CONTROLLER E HCI
HCI uma interface lgica que permite a comunicao entre a interface NFC e um
processador e mltiplos SEs. O HCI utilizado em vrios dispositivos eletrnicos, como
dispositivos mveis, perifricos, entre outros, e est padronizado em ETSI TS 102 622.
Define uma interface entre entidades lgicas chamadas hosts que operam um ou mais
servios. Uma rede de dois ou mais hosts chamada de host network, e um dos hosts
desta rede tambm responsvel por gerenci-la. Este host chamado de host
controller.
Esta interface possui trs componentes: um conjunto de gates por onde so trocados
comandos, respostas e eventos, um mecanismo de mensagens Host Controller
Protocol (HCP) e um mecanismo de roteamento HCP que capaz de fracionar
mensagens quando necessrio.
2.6. MODOS DE OPERAO
Existem trs modos de operao especificados pelo NFC Forum e cada um deles foi
concebido com um propsito diferente. Nestes modos de operao, os dispositivos so
utilizados de maneiras diferentes e resultam em cenrios distintos. Cada um destes
modos possui suas prprias caractersticas, arquiteturas, protocolos e benefcios
associados. No entanto, no nvel fsico todos se baseiam nas mesmas especificaes,
e isto o que permite que todos os modos sejam associados tecnologia NFC.
A arquitetura padro dos protocolos utilizados nestes modos composta por uma
camada de protocolos analgicos e uma camada logo acima, associada a protocolos
digitais. Em outras palavras, na camada analgica encontra-se a especificao para a
parte fsica da tecnologia enquanto na camada digital encontra-se a especificao para
a parte lgica da tecnologia.
O protocolo analgico est relacionado com as caractersticas de RF dos dispositivos
NFC e, entre outras caractersticas, determina a distncia de comunicao dos
dispositivos. J o digital est relacionado ao ISO/IEC 18092 e ao ISO/IEC 14443 e
contm
diretrizes
para
comunicao,
como
atividades
responsveis
pelo
40
2.6.1. LEITURA/ESCRITA
Este modo de comunicao define o cenrio onde um dispositivo mvel NFC inicia a
comunicao com uma tag NFC com a finalidade de ler ou escrever dados nesta tag.
Internamente, subdividido em modo de leitura e modo de escrita.
No modo de leitura, o iniciador comunica-se com a tag NFC a fim de obter os dados
armazenados na tag. Nesta tag est armazenada a informao requisitada pelo
iniciador e o programa responsvel por retornar estes dados para o iniciador. J no
modo de escrita, o iniciador grava informaes na tag NFC. No caso de a tag NFC j
possuir dados armazenados, estes sero sobrescritos durante o processo de gravao.
Um dispositivo mvel ou um leitor NFC deve ser capaz de ler todos os tipos de tags
suportadas pelo NFC Forum para realizar operaes de leitura e escrita.
Quando o dispositivo mvel l uma tag NFC, diferentes aes podem ocorrer de acordo
com o contedo da tag. Uma tag NFC pode armazenar, por exemplo, um endereo de
um site. Neste caso, ao ler a tag, o dispositivo mvel pode abrir o navegador
automaticamente para acessar o site. Tambm podem existir tags com uma instruo
de execuo de aplicao armazenada, que ao ser lida faz com que uma aplicao
seja executada no dispositivo mvel.
As caractersticas de dispositivos mveis como poder de
processamento, reproduo de udio e vdeo e acesso internet,
quando utilizadas com este modo de operao NFC proporcionam
muitas possibilidades de aplicaes interessantes tanto para usurios
quanto para desenvolvedores. Um bom exemplo disso uma aplicao
onde possvel comprar bilhetes de cinema ao aproximar o dispositivo
mvel de um cartaz. Aplicaes com este modo de operao so
numerosas e podem ser muito inovadoras. (COSKUN, 2012)
41
Aplicaes NDEF
Aplicaes sem
NDEF
Protocolo Digital
Analgico
TAGS SUPORTADAS
O NFC Forum definiu quatro tipos de tags para utilizao neste modo, numerando-as
de 1 a 4. Cada tipo de tag tem um formato e uma capacidade diferente, e so
baseados nas especificaes suportadas pela tecnologia NFC, ISO/IEC 14443 Tipo A,
ISO/IEC 14443 Tipo B e Sony FeliCa. Segundo (COSKUN, 2012), as caractersticas
mais comuns destes tipos de tags so:
42
caso
seja
necessrio.
Possui
kb
de
espao
para
2.6.1.2.
NDEF
NDEF um formato especificado pelo NFC Forum para as mensagens trocadas entre
dois dispositivos durante uma comunicao NFC. Esse formato consiste em uma
mensagem leve em formato binrio, concebida para encapsular um ou mais payloads
em uma nica mensagem. Um payload, tambm chamado de carga til, definido pela
aplicao e contm informaes relevantes para o processamento da mesma.
Uma mensagem NDEF pode conter um ou mais registros NDEF, cada um carregando
um payload de um determinado tipo e com tamanho de at 232-1 octetos. Octetos so
bytes onde cada um dos 8 bits modifica seu significado dentro de um determinado
contexto. Estes registros podem ser encadeados para que um tamanho maior de
43
payload seja suportado (NDEF, 2006). Em uma mensgem NDEF, o primeiro registro
sempre ser marcado com uma flag Message Begin (MB) e o ltimo ser marcado com
uma flag Message End (ME), como na representao de uma mensagem NDEF a
seguir:
O NFC Forum define vrios tipos de registros NDEF com diferentes propsitos atravs
da especificao RTD. Os principais tipos definidos em RTDs so:
URI RTD: define um registro que representa um URI e que pode ser
armazenado em uma tag ou compartilhado entre dispositivos mveis, por
exemplo;
Smart Poster RTD: define um tipo capaz de armazenar URLs, SMSs e nmeros
de telefone em uma tag e tambm seu compartilhamento entre os dispositivos.
Foi especificado especialmente para utilizao em objetos como psteres e
cartazes, para armazenar dados relativos propaganda e aes de marketing.
44
O payload de uma mensagem desse tipo consiste em outra mensagem NDEF
com o seguinte formato: um registro NDEF para o ttulo, um registro para
armazenar um URI, um registro de ao que define como a mensagem deve ser
tratada, um registro para armazenar um cone, um registro para informar o
tamanho dos dados referenciados pelo URI e um registro para informar o tipo
destes dados;
Text RTD: este tipo de registro contm texto puro. Geralmente utilizado em um
registro dentro de uma mensagem com vrios outros registros, para fornecer
descries, por exemplo. Quando aparece em uma mensagem de um nico
registro no possvel determinar um comportamento padro para esta
mensagem dentro da aplicao.
Um registro NDEF tem tamanho varivel e pode ser analisado mais detalhadamente no
modelo a seguir, conforme definido em sua especificao (NDEF, 2006).
45
Neste modelo, cada linha representada por pelo menos um byte e os traos verticais
so utilizados para demarcao dos bits, conforme indicado acima do modelo com a
utilizao da numerao dos bits de 7 a 0. Os campos apresentados tem a seguinte
funcionalidade:
MB: uma flag de um bit que indica o comeo de uma mensagem NDEF;
ME: uma flag de um bit que indica o fim de uma mensagem NDEF;
Chunk Flag (CF): uma flag de um bit que indica se este registro o primeiro de
um payload segmentado ou no;
Short Record (SR): uma flag de um bit, que se for ativada indica que o campo
PAYLOAD_LENGTH pode ser representado por um nico octeto. Isto serve para
que os registros se tornem mais compactos e permite que pequenos payloads
sejam utilizados com tamanho entre 0 e 255 bytes. Uma mensagem NDEF pode
conter registros normais e pequenos, e qualquer interpretador deve suportar
ambos os formatos;
46
ID Length (IL): uma flag de um bit, que se for ativada indica que o campo
ID_LENGTH est presente no cabealho e pode ser representado por um nico
octeto. Caso contrrio, o campo ID_LENGTH e o ID so omitidos do registro;
Type Name Format (TNF): o valor deste campo de 3 bits indica a estrutura
utilizada para a representao do campo TYPE. No h valor padro para este
campo e valores no especificados esto reservados para tipos que sero
criados no futuro. Qualquer interpretador que receber um valor no presente na
especificao deve trat-lo como desconhecido;
TYPE: um identificar que descreve o tipo do payload. Este tipo deve seguir a
estrutura definida pelo campo TNF e muito importante para a semntica da
mensagem;
47
Atualmente a especificao NDEF prov os seguintes valores para utilizao no campo
TNF:
Well-Known Record (0x01): indica que o campo TYPE utiliza o formato RTD.
Este tipo de registro utilizado para armazenar qualquer registro definido na
especificao RTD, como texto, URIs, entre outros;
MIME Media Record (0x02): indica que o campo TYPE contm um valor que
segue a formatao media-type BNF definida por RFC 2046;
Absolute URI Record (0x03): indica que o campo TYPE contm um valor que
segue a formatao absolute-URI BNF definida por RFC 3986;
External Record (0x04): indica que o campo TYPE contm um valor que segue a
especificao definida em RTD para nomes de tipos externos;
48
Tambm importante notar que apesar de entidades MIME serem suportadas, no h
pressuposies de que um payload de um registro NDEF do tipo MIME, pois o NDEF
no pressupe nada referente aos tipos de payload carregados em uma mensagem.
Em outras palavras, um interpretador NDEF no precisa inspecionar o tipo do registro
NDEF tampouco inspecionar o contedo dentro do registro para processar a
mensagem NDEF.
2.6.2. PEER-TO-PEER
No modo peer-to-peer, dois dispositivos podem estabelecer uma conexo entre si para
troca de dados de forma bidirecional. Este modo de operao s pode ser utilizado
entre dispositivos mveis e leitores NFC e serve para trocar qualquer tipo de dado,
como contatos, fotos e mensagens de texto.
Foram definidas duas especificaes para este modo de operao, o NFCIP-1 e o
LLCP. O LLCP foi construdo em uma camada acima do NFCIP-1 na pilha de
protocolos e depende dele para funcionar. Enquanto no NFCIP-1, o iniciador e o alvo
so definidos antes da comunicao comear, no LLCP podem ser definidos pela
aplicao, que est uma camada acima na pilha de protocolos. Este recurso concede
maior flexibilidade no s para o desenvolvimento, mas tambm para a interao do
usurio com os dispositivos.
Neste modo, ambos os dispositivos possuem fonte de energia prpria e so
considerados ativos. A comunicao utiliza um canal bidirecional half duplex, pois
quando um dispositivo est transmitindo informao, o outro precisa esperar a
transmisso terminar para que possa, em seguida, transmitir dados tambm. A
interface de comunicao por RF est padronizada em ISO/IEC 18092 para este modo
de operao e a taxa de transferncia mxima de 424bkps.
O modo de operao peer-to-peer apresenta a seguinte pilha de protocolos:
49
Aplicaes
Protocolos do NFC Forum
Ligaes de protocolos
Os protocolos analgicos e digitais nas camadas mais baixas, assim como no modo de
operao leitura/escrita, esto especificados em NFCIP-1. Na camada acima existe o
protocolo LLCP, que viabiliza a transferncia de unidades de informao para as
camadas superiores presentes nos dois dispositivos da comunicao. As ligaes de
protocolos provm bindings para os protocolos do NFC Forum e permitem uso de
protocolos registrados. Os protocolos do NFC Forum so aqueles utilizados para
estabelecer um vnculo com o LLCP, como Internet Protocol (IP), por exemplo. De
outro lado, existe o Simple NDEF Exchange Protocol (SNEP) que permite a troca de
mensagens NDEF entre os dispositivos, mas tambm possvel utilizar outros
protocolos sobre a camada de enlace fornecida pelo LLCP. Acima da pilha esto as
aplicaes, que podem funcionar com base no protocolo SNEP, protocolos do NFC
Forum ou outros protocolos.
2.6.2.1.
O LLCP define uma camada de enlace para oferecer suporte comunicao peer-topeer entre dois dispositivos NFC e essencial para qualquer aplicao NFC que
envolve comunicao bidirecional.
O LLCP uma base slida, segundo (LLCP, 2011), para quaisquer aplicaes NFC
que funcionem no modo peer-to-peer. O LLCP baseado em funcionalidades bsicas
especificadas pelo protocolo NFCIP-1. No protocolo NFCIP-1 existe a capacidade
segmentao e montagem de dados de servio, assim como controle do fluxo de
50
dados, comum em protocolos half duplex. Alm disso, o protocolo NFCIP-1 estabelece
um fluxo de dados ordenado e permite o gerenciamento de erros. Em outras palavras,
fornece uma camada de enlace que pode ser considerada confivel e livre de erros.
No LLCP esto definidos servios para transporte sem conexo ou no orientado
conexo, transporte orientado conexo, ativao, superviso e desativao de
enlace, comunicao balanceada assncrona e protocolo para multiplexao.
O transporte sem conexo ou no orientado conexo prov um servio de
transmisso de dados sem reconhecimento. Este modo de transporte pode ser utilizado
se os protocolos de camadas superiores implementarem seus prprios mecanismos de
controle de fluxo. Desta forma, estas camadas no dependem do controle de fluxo
fornecido pela camada de enlace.
O transporte orientado conexo prov um servio de transmisso de dados de
maneira sequencial e com garantia de entrega de unidades de dados de servio. A
transmisso dos dados gerenciada atravs de um protocolo do tipo sliding window.
Os servios de ativao, superviso e desativao do enlace definem como dois
dispositivos NFC que estejam dentro de um campo eletromagntico reconhecem a
compatibilidade do protocolo LLCP, estabelecem uma ligao, supervisionam a
conexo com o dispositivo remoto e desativam a ligao, quando solicitado.
Dispositivos NFC possuem MACs que podem operar em modo de respostas normal,
onde existe apenas um iniciador, que possui a habilidade de enviar dados para o alvo
ou podem solicitar dados de uma tag. No LLCP, o servio de comunicao balanceada
assncrona habilita o Asynchronous Balanced Mode (ABM) em ambos dispositivos
atravs do uso de um mecanismo de simetria. Usando o ABM, os pontos de acesso de
servios LLCP podem inicializar, supervisionar, recuperar erros e mandar informaes
a qualquer momento.
J o servio de multiplexao permite que o LLCP suporte diversas instncias de
outros protocolos em camadas superiores da aplicao. Em outras palavras, todos os
dados de camadas superiores da aplicao, como dados do protocolo SNEP, so
convertidos em unidades de servio LLCP antes de serem enviados.
51
2.6.2.2.
52
sendo recebida. Desta forma, o receptor capaz de avaliar, ao receber o primeiro
fragmento, se a mensagem estar fragmentada. Aps o recebimento do primeiro
fragmento, o receptor deve indicar origem que pode receber mensagens
fragmentadas e s ento a mensagem transmitida at o final.
A troca de mensagens SNEP precisa de um protocolo de transporte que seja seguro e
capaz de aceitar unidades de dados de servio de 6 octetos ou mais, para que seja
possvel adicionar, pelo menos, todas as informaes do cabealho de uma
mensagem. O protocolo tambm precisa suportar conexes simultneas, separadas
logicamente, pois mais de um canal de comunicao pode ser aberto entre o cliente e o
servidor.
Na arquitetura proposta pelo NFC Forum, SNEP um protocolo construdo em uma
camada acima do protocolo LLCP. Mensagens SNEP devem ser transmitidas com o
uso de conexes de enlace de dados do protocolo LLCP. Um servidor SNEP ativo deve
aguardar requisies de conexo em um servio de ponto de acesso LLCP. O
endereo desse servio de ponto de acesso especificado na requisio de conexo
enviada pelo cliente. Tambm possvel estabelecer uma conexo de enlace
especificando o nome do servio em uma requisio, que deve ser enviada para um
componente de descoberta de servios. O NFC Forum reserva o endereo 4 para o
servio de ponto de acesso e o nome de servio urn:nfc:sn:snep para o servidor
SNEP padro.
Uma vez que a conexo de enlace de dados estabelecida, o cliente deve enviar
apenas mensagens de requisies e o servidor deve apenas responder mensagens de
respostas. Ao final, o cliente finaliza a conexo de enlace de dados quando a
comunicao encerrada. O servidor SNEP padro prov uma espcie de caixa de
entrada lgica, onde um cliente que est conectado pode inserir mensagens NDEF
atravs de requisies do tipo put. Requisies do tipo get no so aceitas.
2.6.2.3.
O protocolo NDEF Push Protocol (NPP) foi desenvolvido pelo Google para utilizao no
sistema Android e utilizado para trocar mensagens NDEF entre dispositivos mveis.
53
um protocolo simples que funciona com base no protocolo LLCP. As mensagens
NDEF neste protocolo so enviadas em um nico sentido, ou seja, sempre so
enviadas por um dispositivo cliente e tem um dispositivo servidor como destino. Um
dispositivo que suporta NPP deve sempre manter um servidor NPP em execuo e
deve executar um cliente NPP caso existam mensagens para envio.
Neste protocolo o servidor deve registrar um servio com o nome de com.android.npp
e deve ser disponibilizado para descoberta atravs do protocolo Service Discovery
Protocol (SDP). Assim que uma mensagem recebida de outro dispositivo, o servidor
deve processar todas as mensagens NDEF de acordo com seu cdigo de ao, na
ordem em que foram recebidas. Quando a ltima mensagem for recebida e a conexo
foi fechada, o servidor tem a transao completada.
O cliente, por sua vez, deve enviar as mensagens NDEF disponveis assim que uma
conexo com o servidor for estabelecida. A conexo estabelecida atravs do
protocolo LLCP para que mensagens NDEF sejam enviadas, encapsuladas em um
pacote NPP. O cliente deve ser capaz de reconhecer uma falha em qualquer etapa da
comunicao para indicar que houve erro, pois no h mecanismos para deteco de
erros ou novas tentativas neste protocolo.
Um pacote NPP composto por um cabealho que contm a verso do protocolo e o
nmero de entradas NDEF, seguido pelas entradas NDEF. Cada entrada NDEF
contm um cdigo de ao, o tamanho da mensagem NDEF e a mensagem NDEF.
Atualmente s existe um cdigo de ao definido na especificao, que indica que a
mensagem NDEF deve ser processada como se fosse recebida de uma tag passiva.
2.6.3. EMULAO DE CARTES
O modo de emulao de cartes permite que um dispositivo mvel NFC funcione como
um smartcard contactless. Uma vantagem da utilizao do dispositivo mvel como um
smartcard a possibilidade de armazenamento de diversas aplicaes de smartcards
simultaneamente. Desta forma, possvel utilizar o dispositivo mvel para substituir
cartes de crdito e dbito, por exemplo. Aplicaes de pagamento, bilheteria, cartes
54
de fidelidade, controle de acesso e servios de identificao so exemplos em que este
modo de operao pode ser utilizado.
Neste modo de operao, o dispositivo mvel NFC no responsvel por gerar seu
prprio campo eletromagntico, e por isso, deixa de atuar como um dispositivo ativo. O
leitor NFC ser responsvel pela criao deste campo e por isso, possvel que o
dispositivo mvel NFC se comunique mesmo sem bateria. Este leitor pode estar
conectado internet, servindo como um proxy para o dispositivo mvel. Desta forma, a
aplicao elimina a dependncia de acesso internet por parte do dispositivo mvel e
abstrai a complexidade envolvida no processamento, podendo consumir servios
terceiros totalmente isolados do dispositivo.
As interfaces de comunicao RF suportadas por este modo so ISO/IEC 14443 Tipo
A, ISO/IEC 14443 Tipo B e Sony FeliCa. A emulao pode ocorrer de duas formas: um
dispositivo mvel pode emular um smartcard ISO/IEC 14443 atravs do hardware NFC
ou um chip de smartcard integrado ao dispositivo mvel e conectado diretamente na
antena do hardware NFC. Neste modo, o dispositivo mvel, apesar de ter fonte de
energia prpria, atua apenas como alvo na comunicao com um leitor NFC. Este
modo de operao importante, pois oferece compatibilidade com infraestruturas
existentes de algumas tecnologias de smartcards.
Um dispositivo NFC que est operando neste modo usa protocolos analgicos e
digitais similares aos smartcards e so totalmente compatveis com sua especificao.
Aplicaes
Protocolo Digital
Analgico
Figura 11 - Pilha de protocolos do modo emulao de cartes
Quanto um dispositivo mvel se comunica com um leitor NFC, seu comportamento ser
idntico ao de um smartcard. Desta maneira, o leitor pode interagir com aplicaes
presentes no SE, como aplicaes proprietrias para pagamento, por exemplo.
Portanto, este o modo de comunicao em que o SE utilizado de maneira mais
55
segura e eficiente, j que no envolve processamento de alguma aplicao no
dispositivo mvel, mas sim no SE.
2.7. SEGURANA
O uso de um dispositivo mvel geralmente implica em um risco de segurana, se
comparado a um computador pessoal. Apesar de um dispositivo mvel muitas vezes
apresentar as mesmas capacidades computacionais de um PC, ele difere quanto ao
uso. O celular um dispositivo mvel que foi concebido para ser sempre carregado
pelo usurio no seu dia-a-dia, e exatamente por isto que ele est mais exposto a
ataques fsicos, como roubo e ataques wireless atravs de tecnologias de comunicao
como o Bluetooth. Quando a funcionalidade NFC adicionada a um dispositivo mvel,
mais uma porta de entrada para possveis ataques criada.
Como na tecnologia NFC cada modo de operao possui uma arquitetura diferente, a
estratgia de ataque e o mecanismo de defesa esto associados s forma de uso da
tecnologia, ou seja, so cenrios completamente diferentes. Assim, a segurana na
tecnologia NFC deve ser analisada separadamente para as tags, leitores, smartcards,
comunicao e sistemas.
O uso de tags est associado ao modo de operao leitura/escrita, onde um dispositivo
NFC interage com uma tag escrevendo ou lendo dados. Nesta configurao, os dados
trafegados na comunicao e armazenados na tag precisam ser protegidos para que
se satisfaa o requisito de segurana da tecnologia. Os principais ataques so:
Clonagem de tags: neste cenrio algum pode tentar criar uma cpia idntica e
vlida da tag. Criar um mecanismo de preveno no sistema quase invivel,
pois
implica
em
uma
alta
capacidade
de
processamento,
que
Mudana de contedo das tags: neste caso, algum pode modificar o contedo
da tag para prover informaes falsas ou simplesmente tornar a tag inoperante;
Troca de tag ou tag escondida: uma tag pode ter simplesmente trocada por
outra, com contedo malicioso. Tambm possvel posicionar uma tag por cima
da outra, escondendo-a.
56
Como um dispositivo mvel pode ser utilizado para emular um smartcard, a segurana
do leitor tambm uma preocupao. Os leitores NFC esto sujeitos aos seguintes
tipos de ataques:
57
58
computadores e cada fabricante prov uma biblioteca de desenvolvimento para seus
dispositivos. Em outras palavras, isto significa que cada fabricante possui uma
biblioteca diferente e o desenvolvimento do back-end acaba sendo voltado para a API
especfica do leitor.
Procurando resolver estes problemas, algumas bibliotecas NFC foram criadas, como o
Open NFC e o LibNFC. Estes frameworks destacam-se por ter cdigo aberto, o que
tem um papel muito importante para a propagao da tecnologia NFC.
2.8.1. OPEN NFC
Open NFC um pacote de software que implementa as funcionalidades da tecnologia
NFC para um hardware dedicado. um software de cdigo aberto, que patrocinado
pela empresa Inside Secure. Este pacote, tambm chamado de pilha, fornece uma API
de alto nvel para controle do circuito integrado e dos componentes NFC deste
hardware (OPENNFC, 2012). A pilha Open NFC composta por um mdulo central,
por um componente de ligao entre as chamadas nativas da plataforma e a API, alm
de um componente para abstrao do hardware.
O componente de ligao utilizado em edies especficas do Open NFC, como a
verso para Android. A verso para Android baseada em Java e possui classes que
implementam chamadas nativas da API da plataforma em questo e que precisam ser
convertidas a partir de chamadas da API Open NFC.
O mdulo central da pilha Open NFC portvel, independente de hardware e
desenvolvido na linguagem C. Este modulo contm a lgica necessria para manipular
os diferentes protocolos e modos de operao presentes na tecnologia NFC. Este
mdulo independente do hardware NFC utilizado (OPENNFC, 2012).
O mdulo de abstrao de hardware, tambm conhecido como NFC Hardware
Abstraction Layer (NFC HAL), estabelece uma ponte de comunicao entre a API Open
NFC e o hardware NFC. Representa uma camada de software do mais baixo nvel na
pilha Open NFC, responsvel por gerenciar o hardware especfico da plataforma em
questo. Todos os componentes envolvidos na comunicao NFC so gerenciados por
59
esta camada. Oferece a possibilidade de extenso atravs da API NFC HAL, que pode
ser utilizada adicionar suporte a novos hardwares NFC.
O Open NFC tambm disponibiliza uma ferramenta para auxiliar o desenvolvimento,
denominada Connection Center Tool. Esta ferramenta capaz de simular o
funcionamento de um hardware NFC e prov uma interface grfica onde possvel
configurar seu funcionamento e executar tarefas associadas tecnologia, como a
aproximao entre uma tag e um leitor. Para isto, existe uma camada de abstrao de
hardware especfica, que faz com que a API Open NFC se comunique com o simulador
da mesma forma com que se comunica com dispositivos NFC. Existe tambm a opo
de manipular um dispositivo NFC remotamente atravs de uma conexo TCP/IP.
2.8.2. LIBNFC
LibNFC uma biblioteca de cdigo livre que oferece suporte tecnologia NFC para
alguns leitores NFC. A biblioteca foi desenvolvida em C e mantida por uma
comunidade ativa de desenvolvedores independentes (LIBNFC, 2012). Esta biblioteca
oferece a possibilidade de desenvolvimento de aplicaes NFC para computadores
atravs da utilizao de leitores compatveis. Alm disso, oferece suporte a todos os
modos de operao suportados pela tecnologia NFC, apesar de no implementar todos
os protocolos presentes na especificao.
Segundo (LIBNFC, 2012), foi a primeira biblioteca para desenvolvimento de aplicaes
NFC lanada sob o modelo de licena GNU. Atravs do uso desta biblioteca, possvel
minimizar as dificuldades de desenvolvimento para dispositivos NFC, pois elimina a
necessidade de desenvolvimento em baixo nvel. Diversas especificaes de tags so
suportadas, como ISO/IEC 14443 Tipo A, ISO/IEC 14443 Tipo B e Sony FeliCa. Alm
disso, esta biblioteca tambm oferece suporte tecnologia RFID.
60
3.
61
desenvolvimento, como capacidade de processamento, consumo de bateria ou at
mesmo recursos disponveis em um dispositivo que podem no estar presentes em
outro. A tecnologia NFC um exemplo de recurso que no est presente na maioria
dos dispositivos e plataformas at o momento (GSMARENA, 2012).
Existem frameworks de desenvolvimento multi-plataforma, que visam facilitar a
construo de aplicaes para as principais plataformas de dispositivos mveis com a
utilizao do mesmo cdigo-fonte. Um exemplo desse tipo de framework o PhoneGap
da Adobe, que utiliza HTML, CSS e Javascript para gerar aplicaes para as principais
plataformas. Outra opo o Monocross desenvolvido pela ITR Mobility que prope o
uso da linguagem C# com o framework Mono para o desenvolvimento sobre as
plataformas Android, iOS e Windows Phone.
Entretanto, tais frameworks solucionam apenas uma parte dos problemas, pois existem
algumas aplicaes que no podem ser construdas com a utilizao de uma API
genrica, como aplicaes que utilizam chamadas de baixo nvel dentro do sistema
operacional, aplicaes que precisam de alto desempenho ou que necessitem de
partes muito especficas do SDK nativo da plataforma, como utilizao de componentes
ou perifricos proprietrios.
Dentre as principais plataformas para dispositivos mveis, apenas as plataformas
Android e BlackBerry possuem suporte tecnologia NFC. As outras plataformas, iOS e
Windows Phone, ainda no possuem suporte oficial esta tecnologia at a data de
concluso deste trabalho. A presena da tecnologia NFC em algumas das principais
plataformas refora sua importncia.
Dentre as plataformas que j suportam a tecnologia NFC, o Android alm de ter o
cdigo-fonte aberto, tem um nmero de dispositivos mveis compatveis maior se
comparado ao Blackberry. Isto se deve pela prpria concepo da plataforma, que no
provm de uma nica empresa, mas sim de vrias. Por causa destas caractersticas, a
plataforma Android ser abordada com mais detalhes neste trabalho.
62
3.1. PLATAFORMA ANDROID
Android uma plataforma de cdigo aberto para dispositivos mveis que foi criada pelo
Google e pela OHA. Seu sistema operacional baseado em uma verso modificada do
Linux e inicialmente foi desenvolvido por uma empresa de mesmo nome, chamada
Android Inc (LEE, 2011). Posteriormente, em 2005, foi comprada pelo Google, que
continuou o seu desenvolvimento em conjunto com a OHA.
O objetivo do Google que o Android tivesse cdigo aberto e livre de custos (LEE,
2011). Por isso a maior parte do cdigo do Android foi lanada sob o modelo de licena
Apache para cdigo aberto. Isto significa que qualquer um pode baixar seu cdigo fonte
e reproduz-lo. Desta maneira, fabricantes de dispositivos mveis podem adicionar
suas prprias customizaes na plataforma para diferenciar seus produtos. Algumas
empresas como Sony Ericsson e Motorola, que por muitos anos desenvolveram seus
dispositivos com seus prprios sistemas operacionais, passaram a utilizar o sistema
operacional Android para operar o hardware de seus dispositivos.
Parte do sucesso dos dispositivos mveis se deve s aplicaes que so oferecidas
para a plataforma e que complementam sua funcionalidade. A plataforma Android
oferece uma abordagem unificada para desenvolvimento de aplicaes, que possibilita
que uma aplicao desenvolvida para a plataforma Android seja compatvel com
inmeros dispositivos mveis diferentes.
Segundo (BURNETTE, 2009), apesar de j existirem muitas plataformas para
dispositivos mveis, o Android a primeira plataforma a combinar as seguintes
caractersticas:
63
baseado na localizao do dispositivo. Alm disso, possui banco de dados SQL
para facilitar o armazenamento de informaes, componentes para visualizao
de mapas e sites, entre outros. Todos estes servios podem ser utilizados
diretamente pelas aplicaes e ajudam a aumentar suas funcionalidades e
diminuir o esforo necessrio para desenvolvimento;
64
comercializao. Alguns exemplos de empresas envolvidas nesta aliana so HTC,
Motorola, T-Mobile, Sony Ericsson e Qualcomm.
Esta aliana responsvel pelo desenvolvimento da plataforma Android, que foi a
primeira plataforma livre e de cdigo aberto para dispositivos mveis. Tambm so
responsveis por fazer com que a plataforma obtenha sucesso atravs do lanamento
de solues comerciais baseadas nesta plataforma. Para fornecer sempre uma melhor
experincia com o software, a aliana se compromete a continuar desenvolvendo a
plataforma, oferecendo inovao rpida e de qualidade sem que desenvolvedores e
fabricantes tenham custos com licenciamento (OHA, 2012).
Um comprometimento com a abertura da plataforma, uma viso compartilhada para o
futuro e planos concretos para fazer com que esta viso se torne uma realidade.
(MEIER, 2011)
Uma plataforma aberta como o Android, permite que componentes de software sejam
integrados mais facilmente e minimiza o custo de aquisio da plataforma,
possibilitando que os fabricantes invistam mais em outros componentes.
O sucesso da plataforma Android depende do sucesso dos membros desta aliana em
lanar solues baseadas nesta plataforma. Sendo assim, estas empresas visam
facilitar o trabalho dos desenvolvedores, permitindo que a comercializao de
aplicativos seja fcil e tenha baixo custo (OHA, 2012). O fato de a plataforma possuir
cdigo fonte aberto permite que os desenvolvedores tenham uma melhor compreenso
do sistema e possam aperfeioar suas aplicaes. Alm disso, as empresas tem o
compromisso de disponibilizar uma API compreensiva para as funcionalidades dos
dispositivos.
3.1.2. ARQUITETURA
A arquitetura da plataforma Android est dividida em cinco partes, que so organizadas
em quatro camadas. Estas camadas compem a pilha de software do Android.
Algumas partes so mais comuns por fazerem parte de outras arquiteturas, como o
kernel Linux, o OpenGL e o banco de dados SQL. Entretanto, algumas partes so bem
diferentes e envolvem conceitos especficos do Android, como o ciclo de vida de uma
65
aplicao. Para construir uma aplicao Android necessrio conhecer estes aspectos
bsicos da plataforma.
O modelo de arquitetura na figura a seguir (LEE, 2011) representa a plataforma
Android e deve ser compreendido da seguinte maneira: cada camada da arquitetura
utiliza os servios fornecidos pelas camadas abaixo dela. Em seguida, sero
apresentadas as principais caractersticas de cada camada, comeando da mais baixa
at a mais alta.
3.1.2.1.
LINUX KERNEL
No nvel mais baixo da arquitetura est o kernel Linux. O Android construdo com
base neste kernel, que foi criado por Linux Torvalds em 1991. O kernel Linux
atualmente pode ser encontrado em qualquer tipo de dispositivo eletrnico, desde
relgios de pulso a supercomputadores. O Linux prov todos os drivers de baixo nvel
necessrios para manipular os componentes de hardware do dispositivo Android.
Esta camada tem a capacidade de abstrair a complexidade da manipulao do
hardware para as camadas superiores do Android, permitindo que o sistema seja
portvel para uma variedade de plataformas. Internamente, o Android utiliza o kernel
66
Linux para o gerenciamento de memria, gerenciamento de processos, comunicao
de rede e outros servios do sistema. Em um dispositivo Android convencional as
aplicaes no so capazes de fazer chamadas diretas ao kernel.
Entretanto, o kit de desenvolvimento fornece algumas ferramentas que so capazes de
interagir diretamente com o kernel. A ferramenta abd shell command, por exemplo,
fornece um terminal de linha de comando onde possvel enviar comandos
diretamente ao kernel Linux do dispositivo.
3.1.2.2.
BIBLIOTECAS NATIVAS
A camada logo acima do kernel Linux contm as bibliotecas nativas do sistema Android
que oferecem as principais funcionalidades do dispositivo. Essas bibliotecas so
desenvolvidas com a linguagem C ou C++ e compiladas para o hardware especfico da
arquitetura utilizada pelo dispositivo. Estas bibliotecas so instaladas pelo fabricante e
compartilhadas com as camadas acima na arquitetura.
importante ressaltar que estas bibliotecas no so aplicaes. Elas so apenas
disponibilizadas para chamadas em nveis mais altos da arquitetura da plataforma.
Tambm possvel criar novas bibliotecas nativas atravs do Native Development Kit
(NDK). Algumas das bibliotecas nativas mais importantes so:
67
3.1.2.3.
ANDROID RUNTIME
Logo acima da camada do kernel Linux e na mesma camada das bibliotecas nativas,
est o Android Runtime. Nele esto uma srie de bibliotecas importantes que permitem
aos desenvolvedores a utilizao da linguagem de programao Java. Aqui tambm
esto as principais bibliotecas Java e a mquina virtual Dalvik.
A mquina virtual Dalvik uma implementao do Java criada pelo Google e otimizada
para dispositivos mveis. Toda aplicao para Android desenvolvida em Java e
executada por esta mquina virtual. O cdigo da aplicao compilado para se tornar
um conjunto de instrues independentes de hardware, que so chamadas bytecodes,
e em seguida so executados pela mquina virtual do dispositivo. Esta mquina virtual
otimizada para dispositivos que precisam de baixo consumo de energia e possuem
pouca memria ou poder de processamento. Alm disso, vrias instncias dessa
mquina virtual podem ser executadas para isolar aplicaes ao mesmo tempo em que
utiliza recursos do kernel para garantir a segurana e o isolamento dos processos.
As principais diferenas da mquina virtual Dalvik com relao a uma mquina virtual
Java tradicional so:
68
So arquivos mais compactos e eficientes, ou seja, mais adequados para
utilizao em dispositivos mveis;
3.1.2.4.
FRAMEWORK DE APLICAO
3.1.2.5.
APLICAES E WIDGETS
69
posicionados na tela principal do sistema Android, denominada home. Geralmente os
dispositivos mveis tm aplicaes pr-instaladas com recursos bsicos, como
discadores, leitores de e-mail, gerenciadores de contatos, navegadores, entre outros.
No sistema Android, a maioria das funcionalidades fornecida atravs de algum
aplicativo especfico. Todas as aplicaes, at mesmo aplicaes de sistema, so
desenvolvidas com a utilizao da API do sistema. Desta forma, possvel que
qualquer aplicao seja substituda por outra que realize as mesmas funes. Por
exemplo, possvel trocar o gerenciador de janelas do sistema ou at mesmo o
discador, por aplicaes proprietrias. Esta qualidade do sistema permite que o mesmo
seja altamente personalizvel.
3.1.3. CICLO DE VIDA DA APLICAO
As aplicaes Android funcionam de maneira diferente de aplicaes para
computadores pessoais, e por isso tem seu ciclo de vida diferente tambm. Em
computadores pessoais, possvel ter vrias aplicaes rodando e visveis ao mesmo
tempo, em diferentes janelas. Apenas uma aplicao ter o foco dos dispositivos de
entrada e responsabilidade do usurio controlar as aplicaes que esto abertas e
fechar as aplicaes que no esto mais sendo utilizadas (BURNETTE, 2009).
Enquanto isso, nos sistemas Android, existe apenas uma aplicao visvel por vez, que
geralmente ocupa todo o espao da tela abaixo da barra de notificao, apesar de
tambm ser possvel ocultar essa barra e deixar a aplicao ocupar a tela inteira. Ao
ligar o dispositivo, a primeira aplicao visvel para o usurio a home. Esta aplicao
geralmente exibe uma imagem como fundo de tela, alguns widgets e atalhos para
outras aplicaes que possam ser abertas. Quando uma destas outras aplicaes
aberta pelo usurio, o sistema executa-a e exibe sua janela na frente de todas as
outras. A partir dessa aplicao, vrias outras aes podem ser realizadas, como
abertura de outras aplicaes ou visualizaes de outras telas da mesma aplicao.
Todas essas aes so armazenadas em uma pilha que possibilita que ao pressionar o
boto voltar de um dispositivo mvel, a tela anterior da pilha seja exibida novamente.
70
Cada tela do sistema Android representada por uma atividade. Portanto, uma
aplicao Android composta por uma ou mais atividades agrupadas dentro de um
processo. Neste sistema operacional, uma aplicao pode continuar viva mesmo que
seu processo tenha sido finalizado. Isto acontece porque cada atividade possui seu
prprio ciclo de vida, e este ciclo no est relacionado com o ciclo de vida do processo,
j que no Android, processos so apenas contineres para atividades. O diagrama a
seguir mostra o ciclo de vida de uma atividade, onde cada retngulo representa um
evento gerado para transio entre os estados (ACTIVITY, 2012):
71
As atividades do sistema so gerenciadas atravs de uma pilha de atividades do
Gerenciador de atividades. Quando uma nova atividade iniciada, ela colocada no
topo da pilha e se torna a atividade corrente. Qualquer outra atividade da pilha no se
tornar a atividade corrente at que todas as atividades acima dela na pilha sejam
finalizadas e desempilhadas. Uma atividade pode ter os seguintes estados:
Pausada: se a atividade perdeu o foco, mas ainda est visvel. Isto acontece se
outra atividade que no ocupe toda a tela est posicionada logo acima desta, e
detm o foco. Uma atividade neste estado ainda est completamente viva, mas
pode ser finalizada se o sistema enfrentar problemas de memria baixa;
72
onRestart(): ocorre aps uma atividade ter sido parada e iniciada novamente. O
prximo evento o onStart();
onStop(): ocorre quando a atividade no est mais visvel para o usurio. Pode
acontecer por causa da inicializao de uma nova atividade, por causa da
continuao de uma atividade anterior ou porque a atividade est sendo
finalizada. O prximo evento onRestart() caso a atividade volte para execuo
ou onDestroy() caso seja realmente destruda;
onDestroy(): o ltimo evento que ocorre antes da atividade ser finalizada. Pode
acontecer por uma chamada proposital da aplicao ou porque o sistema est
temporariamente finalizando a instncia da atividade para economizar memria;
Assim como as atividades, os processos que as contm tambm tem seu prprio ciclo
de vida. O Android se preocupa em manter os processos das aplicaes pela maior
73
quantidade de tempo possvel, porm quando o sistema fica com pouca memria
disponvel, os processos mais antigos so removidos. O sistema finaliza os processos
menos importantes primeiro, e caso no seja o suficiente, finaliza processos mais
importantes at que recupere a estabilidade. Existem quatro estados em que os
processos podem estar, baseados nas atividades que existam dentro deles. Estes
processos, em ordem de importncia, so:
Atividade visvel: quando a atividade est visvel para o usurio, mas no est
em primeiro plano. Ocorre por exemplo, quando uma caixa de dilogo est
visvel na tela. Esta atividade no ser finalizada at que seja extremamente
necessrio para continuar a execuo da atividade em primeiro plano;
74
3.1.4. BLOCOS DE CONSTRUO
Os blocos de construo so elementos definidos no SDK do Android que devem ser
utilizados para a composio de uma aplicao. Existem quatro blocos de construo
bsicos, mas nem todas as aplicaes utilizam todos os blocos de construo
disponveis. Estes blocos so representados pelas atividades, pelas intenes, servios
e provedores de contedo.
Uma atividade uma tela de interface com o usurio. As aplicaes podem usar uma
ou mais atividades para controlar diferentes partes da mesma. Cada aplicao
responsvel por salvar seu prprio estado, para que possa ser reiniciada
posteriormente, conforme demonstrao do ciclo de vida da aplicao no item anterior.
Em verses mais recentes do Android, atividades podem ser segmentadas em blocos
menores denominados fragmentos. Cada fragmento tambm possui seu prprio ciclo
de vida dentro de uma atividade e responsvel por gerenciar uma parte da interface.
Uma inteno um mecanismo para descrever uma ao especfica do sistema. No
Android a maioria das aes executada com a utilizao de intenes. Desta forma,
possvel substituir ou reutilizar componentes. Selecionar uma foto, abrir o discador,
informar inicializao do sistema e enviar um e-mail so exemplos de aes
especificadas com intenes. possvel criar aplicaes que escutem por
determinadas aes, a fim de substituir o mecanismo padro do dispositivo para aquela
ao, por exemplo. Tambm possvel fazer com que uma aplicao execute a ao
de selecionar uma foto atravs de uma inteno, fazendo com que o programa
responsvel por selecionar uma foto seja aberto, independentemente de qual seja.
Servios so tarefas que executam em segundo plano e no possuem interao direta
com o usurio. Por exemplo, uma msica pode ser executada atravs de uma atividade
do tocador de msica, porm, para que ela continue tocando mesmo aps o usurio
trocar de tela ou at mesmo abrir outra aplicao, necessrio que um servio seja
utilizado. Desta forma, o cdigo responsvel por gerar a sada de udio deve ser
inserido no servio. Com esta estrutura possvel fazer com que outras atividades se
conectem ao servio e enviem comandos de troca de msica ou alterao de volume,
75
por exemplo. O Android possui diversos servios embutidos, que podem ser acessados
atravs da API, para funcionalidades mais comuns.
Um provedor de contedo um conjunto de dados reunidos em uma API customizada
para leitura e escrita destes dados. Esta a melhor maneira que o sistema prov para
troca de dados entre as aplicaes. Por exemplo, o Google oferece um provedor de
contedo para contatos. Ento, toda a informao dos contatos pode ser compartilhada
com qualquer outra aplicao que necessite.
3.1.5. RECURSOS
Um recurso um elemento localizvel, como um texto, um bitmap ou qualquer outro
elemento que no seja cdigo e que seja necessrio para a aplicao. A plataforma
Android prov um mecanismo para localizao de recursos atravs de nomenclatura de
pastas. Durante a compilao estes recursos so embutidos na aplicao. Para que
isso acontea, todos os recursos devem ser armazenados dentro da pasta res de um
projeto Android.
Durante a compilao, um compilador de recursos tambm executado, e processa os
recursos de acordo com o tipo de arquivo e subpasta em que esto. Por exemplo,
arquivos bitmap devem ser armazenados na subpasta drawable enquanto arquivos
XML que descrevem os layouts devem ser armazenados na subpasta layout. O
compilador ento comprime e armazena todos os recursos, gerando uma classe
chamada R, que contm identificadores estticos que referenciam os recursos da
aplicao.
Para
utilizao
dos
recursos
estes
identificadores
precisam
ser
76
Outro fator importante da segurana no ambiente Android que operaes crticas
necessitam de permisso do usurio para serem utilizadas pela aplicao. Para isto, a
aplicao deve conter em seu arquivo de manifesto, denominado Android-Manifest.xml,
a lista de permisses necessrias para sua execuo. Assim, quando a aplicao for
instalada pelo usurio, o gerenciador de pacotes do sistema operacional se
encarregar de perguntar se o usurio concede ou no o acesso s funcionalidades
requisitadas pela aplicao. Alguns exemplos de permisses mais comuns so:
77
O sistema disponibiliza ainda uma funcionalidade denominada Android Beam que
permite que um dispositivo envie uma mensagem NDEF para outro dispositivo atravs
do gesto de aproximao dos dispositivos. possvel utilizar o Android Beam para
compartilhar contatos, sites e vdeos com outros dispositivos. A aplicao que pretende
enviar os dados para outro dispositivo atravs do modo peer-to-peer do NFC deve
estar em primeiro plano e o dispositivo alvo no deve estar travado. Ento, quando os
dispositivos so aproximados, o dispositivo iniciador exibe a interface do Android Beam
onde o usurio deve escolher se vai enviar a mensagem para o dispositivo alvo ou no.
Este recurso deve ser habilitado na aplicao atravs dos seguintes mtodos:
setNdefPushMessageCallback():
recebe
um
callback
que
contm
um
tem
precedncia
sobre
mtodo
78
que possa ser realizado o download da mesma. Estes registros so teis para prevenir
que outras aplicaes utilizem as mesmas intenes e manipulem mensagens
especificas da aplicao original. Se uma mensagem contm um registro ARR, o envio
funciona da seguinte maneira (NFCAPI, 2012):
3.1.7.1.
79
tipo de tag, e o payload da mensagem so encapsulados em uma inteno
denominada ACTION_TECH_DISCOVERED.
Aps a identificao e o encapsulamento da tag NFC, o sistema envia a inteno para
a aplicao vinculada ao tipo de inteno determinado. Caso mais de uma aplicao
esteja vinculada, um seletor de aplicao oferecido ao usurio, para que ele escolha
com qual deseja prosseguir. O sistema de despacho de mensagens define trs tipos de
intenes, que sero descritas por ordem de prioridade:
80
O sistema tenta iniciar uma atividade com a inteno que foi criada pelo sistema
de despacho de mensagens quando interpretou a tag NFC, que pode ser
ACTION_NDEF_DISCOVERED ou ACTION_TECH_DISCOVERED;
81
4.
DESENVOLVIMENTO DA APLICAO
82
4.1.1. LEITOR NFC
O leitor NFC utilizado neste trabalho o ACR122U, fabricado pela Advanced Card
Systems, empresa especializada em tecnologias relacionadas a smartcards e
dispositivos leitores para tais tecnologias. Este leitor possui interface USB para
conexo com um computador e prov comunicao para tecnologias contactless
baseadas na frequncia 13.56 MHz, dentre elas o NFC e alguns tipos de tags RFID.
Alm de leitura, este dispositivo tambm capaz de realizar operaes de escrita em
tags e smartcards.
O dispositivo compatvel com a especificao ISO/IEC 18092 da tecnologia NFC e
suporta cartes ISO/IEC 14443 Tipo A, ISO/IEC 14443 Tipo B e tambm os quatro
tipos de tags especificadas pelo NFC Forum. Para a comunicao com um
computador, o dispositivo utiliza a especificao Personal Computer/Smart Card
(PC/SC), que serve para padronizar a comunicao de leitores e smartcards em
ambientes com computadores. Este leitor possui suporte a taxas de comunicao de
at 424 kbps e sua antena interna capaz de se comunicar com smartcards a uma
distncia de at 5 cm, dependendo da tecnologia utilizada. Alm disso, possui recurso
anti-coliso que garante que apenas uma tag acessada por vez, LED para
monitorao do seu estado e alertas sonoros.
O kit de desenvolvimento deste leitor fornece um SDK que contm ferramentas de
apoio para comunicao com o dispositivo e exemplos de utilizao em linguagens
como Java, C# e C++. Porm, estes exemplos apresentam cdigo de baixo nvel, com
instrues que so montadas e enviadas diretamente para o leitor, ou seja, no h
nenhuma camada de software que fornea abstrao da complexidade dessa
comunicao para camadas mais altas da arquitetura de um software.
O leitor capaz de se comunicar com outros dispositivos contactless, porm, para que
uma aplicao NFC seja construda necessrio que haja uma camada de software
que fornea suporte s suas especificaes e seus principais protocolos, como o
NFCIP e o LLCP, entre outros. O SDK fornecido pela empresa no fornece tais
bibliotecas e, portanto, a construo de um framework prprio ou o uso de bibliotecas
83
de terceiros imprescindvel. Para o desenvolvimento com este leitor foi utilizada a
biblioteca NFCTools, que ser descrita neste captulo.
4.1.1.1.
COMUNICAO
84
0xCA 0x00 0x00 0x00. Neste exemplo, o ltimo nmero representa o byte do tamanho
do corpo e os campos restantes so omitidos.
J a resposta esperada tambm possui campos opcionais e obrigatrios, assim como
acontece no comando. O modelo de uma resposta representado na figura a seguir:
No modelo da resposta possvel observar que o corpo, cujo tamanho pode ou no ter
sido especificado no comando, opcional e os campos subsequentes so obrigatrios.
Os campos SW1 e SW2 possuem 1 byte cada e representam um cdigo de status
relativo ao comando enviado. Uma resposta com os valores hexadecimais 0x90 0x00,
por exemplo, representa sucesso na execuo do comando.
Para a construo dos comandos e interpretao de respostas relativas comunicao
entre o leitor e outro dispositivo, o fabricante disponibiliza um documento que descreve
sua API e fornece alguns exemplos de utilizao. Atravs de uma ferramenta utilitria
fornecida no SDK possvel testar o envio de comandos e recepo de respostas.
4.1.2. DISPOSITIVO MVEL
O dispositivo mvel utilizado neste trabalho o Galaxy SIII, fabricado pela Samsung e
lanado no primeiro semestre de 2012. Os motivos pelos quais este dispositivo foi
escolhido para utilizao neste trabalho foram o seu sistema operacional Android e a
presena da tecnologia NFC. A verso mais recente do Android para este dispositivo,
at a realizao deste trabalho, a 4.0.4. Este sistema possui suporte comunicao
com tags NFC para operaes de leitura e escrita, alm de suporte comunicao
peer-to-peer atravs dos protocolos NPP e SNEP. O protocolo SNEP foi introduzido a
85
partir da verso 4.0 do sistema e o NPP foi criado junto com o incio do suporte
tecnologia NFC no Android, em sua verso 2.3.3.
O chip NFC utilizado por este dispositivo um PN65, produzido pela NXP
Semiconductors. Este chip possui suporte a todos os modos de operao da tecnologia
NFC, alm de possuir um SE. Este SE proporciona um ambiente seguro para execuo
de aplicaes onde um alto nvel de segurana necessrio.
O suporte NFC em dispositivos que utilizam o Android, apesar de existir desde a
verso 2.3.3 do sistema, ainda est amadurecendo. Isto se deve, em partes,
utilizao do servio Android Beam para comunicao no modo peer-to-peer da
tecnologia NFC. Alm disso, no h suporte para uso do SE e nem mesmo ao modo de
emulao de cartes previsto na especificao NFC. Entretanto, possvel enviar
comandos APDU diretamente para o controlador NFC desde que se tenha acesso total
ao sistema operacional do dispositivo. A interao direta com o chip NFC do dispositivo
no foi explorada neste trabalho por se tratar de algo semelhante com a interao que
j acontece entre o leitor e o computador, alm de ser bastante intrusiva para o
dispositivo. Portanto, a prpria API NFC fornecida pelo Android foi utilizada.
O fato de o Android possuir cdigo aberto tambm importante na escolha do
dispositivo, independentemente das customizaes do fabricante que so introduzidas
na plataforma e que no possuem cdigo aberto. As modificaes do sistema esto,
em sua maior parte, concentradas na parte visual e na incluso de funcionalidades. O
cdigo aberto do sistema original auxilia no entendimento de certos recursos. Neste
trabalho foi possvel verificar o funcionamento dos servios que monitoram a presena
de dispositivos NFC e despacham notificaes para outras aplicaes atravs da
anlise do cdigo fonte.
4.1.3. TAGS
Algumas tags NFC foram utilizadas neste trabalho, com o propsito de construir uma
arquitetura que seja funcional tanto com dispositivos ativos quanto com dispositivos
passivos. As tags NFC so dispositivos passivos que possuem custo baixo e tambm
inferior aos dispositivos mveis que suportam NFC e, por isso, possuem um papel
86
importante no sistema, pois podem fornecer retro compatibilidade com sistemas j
existentes para a realizao de pagamentos ou simplesmente serem utilizadas por
usurios que no possuam dispositivos mveis habilitados com a tecnologia NFC.
A principal tag utilizada possui a tecnologia Mifare Ultralight C com capacidade para
144 bytes de informao, uma tag NFC de tipo 2, compatvel com a especificao
ISO/IEC 14443 Tipo A. Esta tag fornecida em dois formatos diferentes, um chaveiro e
um adesivo. Em ambos os formatos as tags possuem as mesmas caractersticas de
funcionamento, mas tem finalidades diferentes. Estas caractersticas garantem a
versatilidade da tecnologia NFC.
Alm das tags, um carto de tecnologia contactless Mifare Classic 1K foi utilizado. Este
carto tambm opera a 13.56 MHz e compatvel com a especificao ISO/IEC 14443
Tipo A e possui 756 bytes de capacidade de armazenamento.
4.1.4. BIBLIOTECAS
Para o desenvolvimento do sistema foi utilizada uma biblioteca denominada NFCTools,
que possui cdigo fonte aberto e mantida pela empresa alem GrundID GmbH, que a
disponibiliza sob o licenciamento Apache e habilita sua utilizao para criao de
software livre ou proprietrio. Esta biblioteca foi desenvolvida sob a plataforma Java e
seu propsito estabelecer uma comunicao entre o dispositivo leitor e outro
dispositivo NFC, como um dispositivo mvel ou at mesmo uma tag. Dentre os leitores
suportados por esta biblioteca, est o ACR122U. Bibliotecas como Open NFC e
LibNFC foram descartadas neste projeto pois a Open NFC no oferece suporte ao
leitor utilizado e a LibNFC no implementa todas as especificaes necessrias para o
modo peer-to-peer da tecnologia NFC.
A biblioteca NFCTools tem carter experimental e foi testada apenas em tags e
smartcards com tecnologia Mifare Classic 1k, Mifare Classic 4k e Mifare Ultralight C,
alm de um dispositivo mvel Nexus S, produzido em uma parceria entre Google e
Samsung. Alm disso, a biblioteca foi desenvolvida com a utilizao do Android 4.0 no
dispositivo. Em verses mais recentes do Android uma pequena instabilidade
87
apresentada pela biblioteca, segundo relatos em seu frum de discusso (NFCTOOLS,
2012).
Para a comunicao com o leitor, esta biblioteca faz uso da API Java Smart Card I/O
especificada por JSR 268. Esta API define a comunicao com smartcards atravs de
APDUs enviados pelo leitor e, portanto, utilizada para abstrair o acesso ao leitor NFC.
O pacote definido por esta API o javax.smartcardio e est disponvel na instalao
padro do JDK.
A biblioteca NFCTools est divida em 4 pacotes:
nfctools-api: este pacote expe uma interface comum utilizada por todos os
outros pacotes. Possui as implementaes bsicas dos padres relacionados
tecnologia NFC e comunicao com leitores;
88
utilizado como mecanismo de log na biblioteca NFCTools e tambm no sistema para
monitorao e identificao de problemas de maneira prtica e flexvel, j que permite
diferentes configuraes de log para pacotes e at mesmo classes atravs de um nico
arquivo de configurao. J o Action Bar Sherlock uma biblioteca que fornece
componentes de tela para verses do Android superiores a 2.0. Esta biblioteca tem
como objetivo padronizar o visual e a interao com o usurio de aplicaes Android,
levando em considerao os conceitos de interface estabelecidos na ltima verso do
sistema.
4.2. O SISTEMA
O sistema desenvolvido neste trabalho apresenta uma soluo para aplicao da
tecnologia NFC para o transporte coletivo, como por exemplo, nibus, trens, entre
outros. Para que isto seja possvel, elementos do sistema esto presentes em mais de
um tipo de dispositivo. Nesta arquitetura, um leitor NFC representa uma catraca e tem
a funo de intermediar o pagamento da tarifa relacionada ao transporte enquanto o
dispositivo mvel ou uma tag tem a funo de identificar o usurio. As funcionalidades
do sistema esto representadas atravs do diagrama de casos de uso a seguir:
89
O principal caso de uso estudado ser o Solicitar Pagamento, pois nele que a
tecnologia NFC est diretamente envolvida. Os demais so complementares para
viabilizar a utilizao do sistema. Este caso de uso iniciado com o gesto de aproximar
o dispositivo mvel ou a tag ao leitor. Este gesto indica que o usurio deseja se
identificar e realizar o pagamento. Esta interao pode ser caracterizada como
computao ubqua, j que o ato de realizar o pagamento com o dispositivo mvel no
difere do mesmo ato quando realizado com a utilizao de uma tag, que um
procedimento mais natural. Ambos consistem na aproximao do dispositivo em
direo ao leitor. Quando a distncia mnima para estabelecimento de comunicao
NFC atingida, a comunicao iniciada.
Os elementos presentes neste sistema compem a arquitetura de um sistema
distribudo, onde cada um responsvel por uma funcionalidade ou uma etapa do
processamento. Neste trabalho o foco foi dado ao desenvolvimento da comunicao
entre o leitor e o dispositivo mvel atravs do modo peer-to-peer da tecnologia NFC.
Entretanto,
modo
leitura/escrita
tambm
foi
desenvolvido
para
avaliar
90
91
usurio possua crditos em sua conta, que podem ser adquiridos atravs do prprio
aplicativo. Para as funcionalidades de configurao de conta e compra de crditos, o
dispositivo mvel precisaria estar conectado internet. A configurao da conta feita
uma nica vez enquanto a compra de crditos realizada de maneira mais frequente.
No entanto, a utilizao de tags no teria pr-condies, pois obrigatoriamente j
seriam entregues pr-configuradas aos usurios do transporte e precisariam ser
recarregadas em postos de recarga compatveis com o sistema.
A utilizao do dispositivo mvel para realizar o pagamento desencadeia um processo
que passa por diversos elementos da arquitetura, at que o acesso ao transporte seja
liberado por uma catraca. O diagrama de atividades a seguir demonstra a comunicao
realizada para o caso de uso Solicitar Pagamento:
92
secundrios esto o servio de gerenciamento de contas de usurio e o servio de
pagamentos.
O servio de gerenciamento de contas de usurio ficaria disponvel para interao com
a aplicao dos dispositivos mveis atravs da internet, e realizaria a validao de
contas de usurios e intermediao da compra de crditos. A validao das contas de
usurios seria realizada com a utilizao de um protocolo como o OAuth, que
possibilita que a aplicao do dispositivo interaja com outros elementos da arquitetura
em nome do usurio, sem que seja necessrio o armazenamento da senha do mesmo.
O protocolo OAuth fornece um token de acesso que utilizado em aes posteriores
da aplicao, como compra de crditos e solicitaes de pagamentos. Este mtodo
mais vantajoso do que a utilizao da senha do usurio nas operaes, pois desta
forma seria possvel bloquear a utilizao do dispositivo a qualquer momento apenas
invalidando o token de acesso a partir do site de manuteno de contas. J a compra
de crditos dependeria de configuraes de pagamentos associadas conta e que
tambm seriam cadastradas atravs do site.
O servio de pagamentos seria disponibilizado atravs da internet, possivelmente com
a utilizao de alguma tecnologia para segurana de redes, como Virtual Private
Network (VPN) e Firewalls, por exemplo. O computador com o leitor NFC seria o
elemento
responsvel
por
estabelecer
uma
conexo
com
este
servio
93
No arquivo de manifesto, que descreve os recursos necessrios e a estrutura da
aplicao, esto definidas as permisses, bibliotecas e atividades necessrias para sua
execuo. Para o uso da tecnologia NFC necessrio que a aplicao tenha uma
permisso para acessar o hardware NFC do dispositivo, que deve ser requisitada
atravs da incluso da seguinte entrada no arquivo de manifesto:
<uses-permission android:name="android.permission.NFC" />
Alm da permisso, o aplicativo precisa ter alguma atividade que tenha a capacidade
de processar informaes relativas ao NFC. No caso desta aplicao, a tela principal
uma atividade capaz de processar estas informaes. Esta capacidade adicionada
atravs da utilizao de intenes NFC presentes na plataforma, que so configuradas
com as seguintes entradas no arquivo de manifesto:
<intent-filter>
<action android:name=android.nfc.action.NDEF_DISCOVERED />
<data android:mimeType=application/org.nfc.mackenzie />
<category android:name=android.intent.category.DEFAULT />
</intent-filter>
94
no estar em execuo, o sistema automaticamente se encarregar de inici-la para
despachar a mensagem.
Alm de receber mensagens NDEF, a aplicao tambm capaz de enviar uma
mensagem NDEF para outro dispositivo atravs de uma conexo estabelecida no
modo peer-to-peer pelo protocolo SNEP. Porm, o Android, utiliza o servio Android
Beam para realizar o envio e esta caracterstica limita a aplicao a enviar apenas uma
mensagem por vez. Alm disso, a comunicao NFC s ocorre se o dispositivo mvel
estiver com a tela destravada no momento de sua utilizao. Assim que o outro
dispositivo NFC detectado, o Android automaticamente exibe uma tela de
confirmao de envio para o usurio, conforme a figura a seguir:
Figura 21 - Tela gerada pelo Android para permitir o envio da mensagem NDEF
95
dispositivo mvel do outro dispositivo NFC. Este recurso do Android limita a ubiquidade
da tecnologia NFC, que no mais to intuitiva quanto a utilizao de uma tag.
Alm de ser o ponto de partida para a comunicao NFC, a tela principal apresenta as
informaes da conta que est sendo utilizada para os pagamentos, como saldo,
identificao e histrico de utilizao. A tela est dividida em duas abas, que
possibilitam uma consulta rpida a estas informaes e podem ser alternadas por um
toque no ttulo da aba ou um gesto de deslizar os dedos horizontalmente na tela. As
duas abas da tela principal so demonstradas na figura a seguir:
96
97
Tambm foi criada uma tela de configuraes para a aplicao, que possibilita a
configurao de opes relacionadas s contas e notificaes da aplicao. Atravs
desta tela possvel gerenciar as contas, escolher uma conta padro a ser utilizada
para pagamentos, habilitar a opo de troca automtica de contas e habilitar alertas
vibratrios no dispositivo. A aplicao permite que vrias contas sejam adicionadas
pois desta forma contempla cenrios onde existam mais de um provedor de servios de
pagamentos deste tipo, ou at mesmo diferentes tarifas de utilizao de transporte. J
a opo de troca automtica de contas, permite que a conta padro seja trocada
automaticamente assim que seja detectado o saldo do usurio insuficiente para
realizar pagamentos, desde que existam mais contas cadastradas. Neste caso, a conta
com maior saldo selecionada. Enquanto isso, o alerta vibratrio serve para avisar o
usurio de que o pagamento foi efetuado com sucesso.
98
Alm disso, tambm foi criada uma tela para visualizao do mapa da localizao atual
do dispositivo. Esta tela pode ser acessada atravs da barra superior da tela principal e
tem o intuito de auxiliar o usurio a identificar mais rapidamente sua localizao atual e
acompanhar seu percurso. Para o funcionamento desta tela, foi utilizado um tipo
especfico de atividade presenta na API Google Maps do SDK. Para utilizao desta
API, necessrio que as seguintes entradas sejam adicionadas no arquivo de
manifesto:
<uses-library
android:name="com.google.android.maps"
android:required="true">
</uses-library>
Esta tela utiliza, alm do GPS do dispositivo, o acesso internet. Isso acontece porque
os mapas fornecidos pelo Google esto disponveis apenas atravs da internet. Porm,
existem alternativas para esta soluo que incluem utilizao de cache de mapas e
utilizao de solues de mapas off-line de outras fontes para dispositivos com acesso
restrito Internet. Tambm possvel que as coordenadas da localizao atual sejam
99
recebidas atravs de um registro de geolocalizao dentro de uma mensagem NDEF
recebida de outro dispositivo. Esta alternativa interessante pois elimina o tempo de
estabelecimento de sinal GPS e possibilita a visualizao imediata do mapa da regio.
Neste caso, o dispositivo que enviar a mensagem para esta aplicao deve manter
conhecimento de sua localizao atual, e enviar as coordenadas como um registro
secundrio dentro da mensagem NDEF. Para esta aplicao, apenas a localizao
atual detectada pelo GPS do dispositivo utilizada. A figura a seguir mostra a tela de
localizao e o ponto azul marca a localizao atual do dispositivo:
Figura 26 - Tela gerada a partir dos dados fornecidos pelo GPS do dispositivo
100
elementos mais flexveis com relao aos frameworks utilizados. Alm disso, como
esta parte se comunica diretamente com os servios relacionados ao pagamento,
mais seguro que no haja influncia externa que modifique seu comportamento. Para
que isto acontea, esta aplicao deve estar permanentemente conectada Internet.
Assim que um dispositivo aproximado do leitor NFC, a comunicao iniciada. O
primeiro passo executado por esta aplicao identificar o tipo de dispositivo que est
no campo eletromagntico de seu leitor. De acordo com o tipo de dispositivo, uma
estratgia de comunicao diferente adotada. Em ambos os casos as informaes do
usurio so recebidas e repassadas para o servio de pagamento, que responsvel
por validar essas informaes e efetivar o pagamento. A comunicao com estes dois
tipos de dispositivos s possvel quando a aplicao executada com o leitor NFC
ativado no modo iniciador.
No caso de um dispositivo mvel, uma conexo peer-to-peer estabelecida e so
trocadas mensagens NDEF atravs do protocolo SNEP da especificao NFC.
Primeiramente a aplicao envia uma mensagem NDEF do tipo AAR para o dispositivo
mvel. Este tipo de mensagem tem apenas a funcionalidade de abrir a aplicao
necessria para comunicao no dispositivo mvel. Caso a aplicao j esteja aberta,
a mensagem automaticamente descartada pelo Android. Se a aplicao ainda no
estiver instalada, o Android se encarrega de abrir a pgina para download da aplicao
dentro do seu respectivo mercado de aplicaes. Aps o envio desta mensagem, esta
aplicao reestabelece a conexo e espera por mensagens do dispositivo mvel. A
mensagem recebida pelo dispositivo mvel funcionar como uma solicitao de
pagamento por parte do usurio. A solicitao ser processada e uma resposta ser
enviada para o dispositivo mvel, para confirmar ou informar se aconteceu um erro
durante o processamento do pagamento.
Caso o dispositivo seja uma tag NFC, a comunicao ocorre atravs de operaes de
leitura e escrita. A aplicao se encarregar apenas de ler os dados do usurio
presentes no carto e processar o pagamento. Caso o pagamento seja efetivado, o
carto ter suas informaes de saldo atualizadas.
101
Tanto dispositivos mveis quanto tags carregam em sua memria informaes relativas
ao saldo, que servem apenas para consulta e so sincronizadas toda vez que o
dispositivo utilizado para pagamento. Os valores reais que so utilizados durante a
efetivao do pagamento so armazenados em um servidor externo a estas aplicaes
e consultados pelo servio de pagamento durante a transao, para garantir a
integridade dos dados e prevenir fraudes. O servio de pagamento tambm
responsvel por decidir o valor da tarifa que ser deduzida do saldo da conta do
usurio, tornando esta aplicao apenas uma intermediadora de pagamentos.
Esta aplicao no possui interface grfica e para monitorar seu funcionamento foi
utilizada a biblioteca log4j para gerao de logs. Como a biblioteca NFCTools j utiliza
essa ferramenta, tambm possvel monitorar os comandos APDUs e suas respostas
atravs do mesmo log. Portanto, o log gerado composto por chamadas da aplicao,
mensagens NDEF, mensagens de inicializao de protocolos e APDUs que esto
representados por cadeias de valores hexadecimais, como podemos visualizar na
figura a seguir:
4.3. DESENVOLVIMENTO
O desenvolvimento do sistema foi feito com a utilizao linguagem Java em todos as
partes da sua arquitetura. Entretanto, como a comunicao NFC realizada atravs de
protocolos definidos em sua prpria especificao, possvel utilizar qualquer
102
linguagem nas partes envolvidas. Portanto, em termos de linguagem de programao
possvel ter uma arquitetura heterognea.
Primeiramente foi desenvolvida a troca de mensagens NDEF entre o leitor e o
dispositivo mvel. Apesar de a biblioteca NFCTools j possuir suporte operaes
deste tipo, alguns problemas foram encontrados dado que seu estado ainda
experimental. Entre estes problemas podemos citar o reconhecimento errneo do
dispositivo mvel, que possui o mesmo cdigo de identificao de uma tag, e que foi
corrigido atravs da desativao do suporte tags Sony FeliCa. Outro problema
encontrado foi a decodificao de mensagens NDEF do tipo MIME quando o leitor NFC
inicializado no modo alvo. Neste problema, a mensagem descartada e um novo
ciclo de comunicao iniciado. Este problema foi evitado com a utilizao do modo
iniciador, que funciona de maneira satisfatria, pois o modo iniciador o nico que
permite a comunicao com tags e dispositivos mveis se maneira alternada. No modo
alvo, apenas o tipo do primeiro dispositivo a iniciar uma comunicao suportado em
comunicaes posteriores.
A comunicao NFC com o dispositivo mvel tambm apresentou alguns problemas,
desta vez conceituais, durante sua utilizao e precisou ser contornada. O problema
acontece porque o Android realiza a comunicao peer-to-peer da tecnologia NFC
atravs do servio Android Beam. O Android Beam possibilita que apenas uma
mensagem seja enviada ao outro dispositivo em cada conexo estabelecida, desde
que o dispositivo mvel seja o primeiro a enviar uma mensagem. Isto acontece pois a
API do sistema proporciona apenas um callback para criao de uma mensagem
NDEF para uma atividade. Este callback acionado pelo sistema assim que uma
conexo NFC for estabelecida, e, portanto, este o nico momento em que a aplicao
do dispositivo mvel tem a oportunidade de enviar uma mensagem NDEF. Alm disso
se o dispositivo mvel receber uma mensagem NDEF primeiro, ele no ser capaz de
respond-la na mesma conexo, pois a atividade j foi iniciada e o momento de
chamada deste callback de criao de mensagem ignorado.
A inteno inicial do sistema era que a aplicao do leitor NFC enviasse uma
mensagem para iniciar a aplicao no dispositivo mvel, que por sua vez responde-se
103
com uma solicitao de pagamento e recebesse uma resposta do leitor. Porm, com as
limitaes do Android para comunicao NFC isto no possvel. A soluo
encontrada foi finalizar a conexo assim que a primeira mensagem enviada pelo
leitor. Desta forma, automaticamente uma nova conexo estabelecida, pois os
dispositivos permanecem no mesmo campo eletromagntico, e desta vez o dispositivo
mvel capaz de enviar a solicitao ao leitor e receber uma resposta. Esta
necessidade gerou mais alteraes na biblioteca NFCTools para criao de um
mecanismo de fechamento de conexo e s foi possvel pois a biblioteca possui cdigo
aberto. Se a comunicao fosse entre dois dispositivos mveis com sistema Android
esta alterao precisaria ser feita diretamente no cdigo fonte do sistema operacional.
Este problema tambm poderia ser contornado com a utilizao de mais de um gesto
de aproximao entre os dispositivos. Neste caso dois gestos seriam necessrios e
seria mais interessante eliminar a abertura automtica da aplicao e substitu-la por
uma ao do usurio diretamente no dispositivo. Em qualquer uma destas solues o
tempo para realizar um pagamento atravs da comunicao NFC acaba sendo maior
do que se o prprio sistema tivesse um suporte mais completo ao modo peer-to-peer
em sua API.
Com o ncleo desenvolvido, o resto do sistema foi construdo e envolveu a criao de
pacotes para abstrao da comunicao NFC na aplicao do leitor, pacotes para
facilitar a persistncia de dados no Android, interfaces grficas da plataforma Android,
um protocolo de comunicao para representao das operaes de pagamento e
outros elementos.
Os principais elementos desenvolvidos para este sistema esto representados no
diagrama de componentes a seguir:
104
105
protocolo de transmisso de mensagens. Para comunicao com tags, apenas o
protocolo NDEF utilizado. J para a comunicao com dispositivos mveis, o
protocolo LLCP utilizado para estabelecimento de conexo enquanto o protocolo
SNEP utilizado para transmisso de mensagens NDEF.
Para um modelo de
Protocolo de Pagamentos
NDEF
SNEP
LLCP
Protocolo Digital
Analgico
Figura 29 - Pilha de protocolos para o modo peer-to-peer do sistema de pagamentos
Todos os dispositivos NFC envolvidos trocam mensagens NDEF do tipo MIME entre si,
que contm mensagens de pagamento armazenadas em formato binrio. Isto significa
que as mensagens do protocolo de pagamento so armazenadas no payload da
mensagem NDEF do tipo MIME. Como o protocolo NDEF um padro estabelecido
para troca de mensagens da tecnologia NFC, qualquer dispositivo com suporte NFC
ser capaz de receber a mensagem, porm s ser capaz de interpret-la caso possua
suporte a este protocolo de pagamentos.
Uma mensagem de pagamento composta por um ou mais registros de pagamento.
Cada registro de pagamento carrega, entre outras informaes, a identificao do
usurio que necessria para validao de um pagamento. O mecanismo para
codificao destas mensagens similar ao mecanismo j utilizado para codificao de
mensagens NDEF, onde todos os valores de tipos primitivos so convertidos para
vetores de bytes, que so organizados de maneira posicional em um nico vetor
resultante da codificao. Este vetor ento armazenado no payload da mensagem
NDEF, que transmitida ao seu destino. A mensagem de pagamento codificada
desta maneira para evitar que se atinja um tamanho em bytes muito grande, como
106
aconteceria em um processo de serializao binrio ou principalmente por uso de
XMLs. A comunicao NFC possui taxas de transferncia baixas e, portanto, quanto
menor o contedo trafegado, mais rapidamente acontecer a comunicao e mais
eficaz ela ser. Um modelo de mensagem solicitao de pagamento representado na
figura a seguir:
Payload
Verso
Tipo
1 byte
1 byte
Tamanho do
Tamanho do Tamanho
ID
Token
ID
Payload
do Token
4 bytes
4 bytes
4 bytes
Figura 30 - Formato de uma mensagem de pagamento
Saldo
8 bytes
107
108
4.3.2. APRESENTAO DOS PACOTES
Os pacotes desenvolvidos para este sistema esto organizados em trs bibliotecas
distintas: uma para a aplicao do dispositivo mvel, uma para a aplicao do servidor
e outra para o protocolo de pagamento, que utilizada pelas duas aplicaes.
4.3.2.1.
PACOTE ORG.MACKENZIE.PROTOCOL
109
nica mensagem. Internamente, os registros e as mensagens de pagamento so
representados pelas classes PaymentMessage e PaymentRecord. Estas classes so
utilizadas para mapear a estrutura de bytes em que a mensagem codificada e
decodificada e possuem classes respectivas para estas tarefas: no caso da mensagem
so as classes PaymentMessageEncoder e PaymentMessageDecoder, enquanto no
caso do registro so as classes PaymentRecordEncoder e PaymentRecordDecoder.
A classe utilizada para representar o registro de pagamento agnstica operao de
pagamento que realizada e contm apenas um payload que representa esta
informao. Para representar a informao da operao, foi criada a classe abstrata
Record, interfaces e outras classes abstratas que definem como deve ser o
comportamento da codificao e decodificao dos registros. Esta estrutura est no
pacote org.mackenzie.protocol.message.
So definidas as interfaces RecordEncoder e RecordDecoder para codificao e
decodificao dos registros e tambm uma implementao bsica destas interfaces
atravs
das
classes
AbstractRecordEncoder
AbstractRecordDecoder.
Estas
tipos
de
registro
utilizados
ResponsePaymentRecord,
pelo
protocolo
so
RequestPaymentRecord,
110
suas respectivas classes para codificao e decodificao de suas informaes, que
em geral estendem AbstractRecordEncoder e AbstractRecordDecoder.
Como a classe PaymentRecordEncoder tem a responsabilidade transformar o
contedo do registro em um vetor de bytes e ao mesmo tempo agnstica este
contedo, foi utilizado um mecanismo onde a primeira classe capaz de processar a
informao da mensagem utilizada. possvel identificar o tipo de mensagem para
tomar esta deciso atravs do campo que define o tipo da mensagem e no
criptografado. Portanto, esta classe conhece todas as implementaes possveis para
codificao de registro e atravs do mtodo canDecode() destas classes, verifica se
responsabilidade da mesma realizar esta tarefa. O mesmo processo vlido para
decodificao de registros.
4.3.2.2.
PACOTE ORG.MACKENZIE.CRYPTO
111
112
por interferir na funcionalidade da aplicao, pois adicionaria mais uma etapa para a
realizao do pagamento e a proposta desta aplicao ser minimalista o suficiente
para atingir a computao ubqua, intimamente relacionada com NFC.
4.3.2.3.
PACOTE ORG.NFC.MACKENZIE.CONTEXT
113
O protocolo SNEP foi utilizado para comunicao peer-to-peer e a biblioteca NFCTools
prov classes para criao de um servio e um cliente SNEP, como definidos na
especificao. Neste pacote, essas classes foram estendidas para customizao do
tratamento de alguns eventos da comunicao NFC. Para isto, as classes
NfcSnepServer e NfcSnepClient foram criadas. A classe NfcSnepServer estabelece um
mecanismo para monitoramento de mensagens atravs da interface MessageListener
enquanto a classe NfcSnepClient estabelece um mecanismo semelhante para o
monitoramento
de
conexes
com
outros
dispositivos
atravs
da
interface
DeviceListener.
A classe NfcSnepServer utiliza a classe NfcSneplet para recepcionar mensagens, de
acordo com a interface Sneplet definida pela biblioteca NFCTools. Enquanto isso, a
classe NfcSnepClient utiliza a classe NfcAgent para enviar mensagens, de acordo com
a interface SnepAgentListener da biblioteca. A classe NfcAgent bastante importante
na comunicao, pois interfere diretamente no ciclo de vida da conexo SNEP. Assim
que todas as mensagens so enviadas, a biblioteca NFCTools se encarrega de fechar
a conexo do cliente e descartar a instncia de NfcAgent, mas mantm a conexo
LLCP aberta. Toda vez que novas mensagens forem enviadas pela aplicao, uma
nova instncia de NfcAgent ser criada para esta tarefa.
A classe NfcGateway, por sua vez, utiliza as classes designadas para servio e cliente
SNEP, e tambm as classes nativas da biblioteca NFCTools para manipulao de tags.
Esta classe tambm expe para outras camadas um mecanismo de monitoramento
atravs da interface ConnectionListener, que permite que as decises relativas s
regras de negcio sejam definidas em camadas superiores.
4.3.2.4.
PACOTE ORG.NFC.MACKENZIE.BACKEND
114
As
classes
DeviceCommunicationState,
TicketCommunicationState
de
mensagens
de
pagamento
com
auxlio
da
classe
115
4.3.2.5.
PACOTE ORG.NFC.MACKENZIE
dados
SQLite
da
aplicao.
extenso
desta
classe,
denominada
116
117
118
principalmente relacionadas formatao de valores monetrios, atravs da classe
BalanceFormatter.
A classe TransactionController tem papel crucial na arquitetura desta aplicao e rene
todas as funcionalidades relativas ao pagamento e gesto de contas de usurio. Esta
classe responsvel por gerar mensagens de solicitao de pagamento e por
processar respostas destas mensagens, de acordo com a especificao do protocolo
de pagamento deste sistema. A classe utiliza o padro singleton para garantir apenas
uma instncia de si mesma, j que apenas uma operao de pagamento pode ocorrer
por vez.
Alm disso, a classe TransactionController utiliza o servio de contas de usurio,
representado pela interface AccountService, para funcionalidades como configurao
de conta de usurio e compra de crditos, que demandam informaes de servidores
externos. Para esta aplicao, uma implementao padro deste servio est presente
na classe AccountServiceStub e consiste em aceitar quaisquer alteraes na conta.
Na camada de apresentao esto as classes responsveis pelo controle das
interaes com o usurio que acontecem atravs de toques na tela ou de conectividade
NFC. Estas classes tambm so responsveis pela configurao e exibio dos
elementos visuais da aplicao, como layouts XML, cones e listas.
119
Nesta camada esto definidos alguns tipos bsicos de elementos visuais, como a
classe BaseActivity que estabelece uma base para criao de atividades com suporte a
fragmentos, a classe BaseSectionFragment que oferece suporte aos fragmentos destas
atividades e a classe NfcAtivity que oferece suporte comunicao NFC em uma
atividade. A partir destas classes bsicas esto definidas todas as outras atividades do
sistema.
Algumas telas que exibem listagens, como a atividade de gerenciamento de contas de
usurio e at mesmo o fragmento que exibe o histrico de utilizao da conta, utilizam
extenses da classe ArrayAdapter<T> do Android para a customizao do layout de
cada item da lista. Estas classes so responsveis por configurar o layout e apresentar
as informaes de um determinado item da lista.
Dentre todas as telas desta aplicao, a mais importante a tela inicial, definida pela
classe MainAcitivity, que estende NfcActivity. A classe NfcActivity possui dois mtodos
abstratos chamados sendMessageCallback e receiveMessageCallback que so
chamados toda vez que uma mensagem NDEF precisa ser enviada ou que uma
mensagem NDEF recebida. Esta tela implementa estes mtodos e adiciona suporte
comunicao NFC, utilizando a classe TransactionController para criao das
mensagens de pagamento a serem enviadas e interpretao das respostas recebidas.
A classe NfcManager utilizada pela NfcActivity para a deteco de hardware NFC no
dispositivo mesmo em verses do Android que no possuam suporte tecnologia e
configurao de sua utilizao caso a tecnologia esteja presente. Alm de detectar o
hardware NFC a classe NfcManager tambm detecta se o mesmo est habilitado antes
de configurar a utilizao do NFC na aplicao.
120
5.
121
A aplicao que controla o leitor NFC tambm bastante prejudicada pela falta de um
SDK de alto nvel com abstrao de todos os comandos do leitor. Alm disso, no
fornecida uma implementao de protocolos relativos especificao NFC e que sem
eles, no possvel realizar uma comunicao peer-to-peer. Para resolver este
problema, a biblioteca NFCTools foi utilizada, mas uma biblioteca que ainda no
estvel o suficiente para utilizao em cenrios reais. At mesmo em cenrios de teste
deste sistema a biblioteca apresentou pequenas falhas, como a perda de conexo com
o dispositivo. Isto no impossibilitou o sucesso da aplicao, j que a biblioteca foi
capaz de se recuperar de estados de erro automaticamente. Para identificar se estas
falhas so provenientes de problemas na biblioteca ou no prprio firmware do leitor
uma anlise bastante detalhada necessria.
A utilizao do dispositivo mvel tambm bastante afetada pelo servio Android
Beam do sistema, que exige o desbloqueio da tela do dispositivo mvel e um toque na
tela para transmisso da mensagem. Este problema pode ser resolvido atravs da
alterao e substituio do servio que monitora o estado do hardware NFC, j que o
Android possui cdigo aberto. Esta alterao, no entanto, mais vivel em laboratrio
do que em um cenrio real de utilizao, pois exige acesso total ao dispositivo, ou seja,
acesso root ao kernel do sistema.
A tecnologia NFC abre um leque de possibilidades muito grande de aplicaes,
principalmente pela influncia da computao ubqua. Apesar do interesse em
pagamentos e segurana, com a tecnologia NFC tambm possvel desenvolver jogos
e outras aplicaes. A tecnologia NFC tambm serve como complemento para diversas
operaes de aplicaes j existentes, como troca de contatos e fotos, por exemplo.
Alm disso, h um bom espao para desenvolvimento de bibliotecas de cdigo aberto
para suporte ao leitor NFC devido escassez de opes. Existem diversas empresas
com solues comerciais baseadas em NFC e pouqussimas disponibilizam suas
bibliotecas, tanto como cdigo aberto ou fechado. Uma possibilidade interessante para
continuidade deste trabalho a utilizao do SE presente no dispositivo mvel para
aumentar a segurana em pagamentos.
122
6.
REFERNCIAS BIBLIOGRFICAS
ACTIVITY:
Android
Activity
API.
2012.
Disponvel
em:
<http://developer.android.com/reference/android/app/Activity.html>. Acesso em: 20 set.
2012.
BARBOSA, Jorge Luis Victria; DA COSTA, Cristiano Andr; ROEHRS, Alex. Uma
Proposta de Modelo de Pagamento Mvel para o Comrcio Ubquo. Simpsio Brasileiro
de Computao Ubqua e Pervasiva, Natal, RN, jul. 2011.
BREITFU, Klemens; HASELSTEINER, Ernst. Security in Near Field Communication:
Strengths and Weaknesses. Gratkorn, ustria: [s.n.], [2006?].
BURNETTE, Ed. Hello, Android: Introducing Googles Mobile Development Platform. 2.
ed. The Pragmatic Programmers, 2009.
COSKUN, Vedat; OK, Kerem; OZDENIZCI, Busra. Near Field Communication: From
Theory to Practice. 1. ed. Wiley, 2012.
ECMA-340: Near Field Communication - Interface and Protocol (NFCIP-1). Geneva,
Sua, 2. ed., 2004.
ECMA-352: Near Field Communication - Interface and Protocol 2 (NFCIP-2). Geneva,
Sua, 2. ed., 2010.
ELENKOV, Nikolay. Using Password-based Encryption on Android: Why passwordbased
encryption
is
needed.
2012.
Disponvel
em:
<http://nelenkov.blogspot.com.br/2012/04/using-password-based-encryption-on.html>.
Acesso em: 1 out. 2012.
GRUNTZ, Dominik. Near Field Communication with Android. International Conference
on the Modern Art of Software, Zurich, Suca, jun. 2011.
HACKETT, Conor. MobiCash: A System for Cashless Payments using Near Field
Communication Enabled Smartphones. Trabalho de Concluso de Curso (Graduao
em Cincia da Computao) - Griffith College Dublin, Dublin, Irlanda, 2012.
ISO/IEC 18092: Near Field Communication - Interface and Protocol (NFCIP-1). 1. ed.,
2004.
ISO/IEC 14443-4: Identification cards - Contactless integrated circuit cards - Proximity
cards - Part 4: Transmission protocol. 2000.
JSR268: Java Smart Card I/O API. Java Community Process , 2006. Disponvel em:
<http://jcp.org/en/jsr/detail?id=268>. Acesso em: 20 ago. 2012.
123
KORTVEDT, Henning Siitonen. Securing Near Field Communication. 2009. Dissertao
(Mestrado em Tecnologia da Comunicao) - Norwegian University of Science and
Technology, Trondheim, Noruega, 2009.
LEE, Wei-Meng. Beginning Android Application Development. Wrox Programmer to
Programmer, 2011.
LIBNFC: Public platform independent Near Field Communication library. Disponvel em:
<http://www.libnfc.org/documentation/introduction>. Acesso em: 10 set. 2012.
LLCP: Logical Link Control Protocol Technical Specification. NFC Forum, v. 1.1., 2011.
LOTITO, Antonio. ISMB-SNEP: open-source library to enable P2P over NFC. The 5th
NFC Congress, Hagenberg, Austria, set. 2012.
LOTITO, Antonio, Mazzocchi, D. OPEN-NPP: An Open Source Library to Enable P2P
over NFC. 4th International Workshop on IEEE Near Field Communication, p. 57-62,
mar. 2012.
LYYTINEN, Kalle; ONDRUS, Jan. Mobile Payments Market: Towards Another Clash of
the Titans? In: International Conference on Mobile Business, 10., 2011, Como. Trabalho
apresentado durante o evento. Itlia, 2011.
MEDNIEKS, Zigurd et al. Programming Android. 2. ed. OReilly, 2012.
MEIER, Reto. Professional Android Application Development. Wrox Programmer to
Programmer, 2011.
NDEF: NFC Data Exchange Format Technical Specification. NFC Forum, v. 1., 2006.
NFCAPI: Android Near Field Communication API. 2012. Disponvel em:
<http://developer.android.com/guide/topics/nfc/index.html>. Acesso em: 26 mai. 2012.
NFCTOOLS.
NFC
Developers
Group.
2012.
Disponvel
em:
<https://groups.google.com/forum/?fromgroups#!forum/nfc-developers>. Acesso em: 30
mai. 2012.
NPP: Android NDEF Push Protocol Specification. Google, v. 1., 2011.
OHA: Open Handset Alliance. Disponvel em: <http://www.openhandsetalliance.com>.
Acesso em: 19 set. 2012.
OPENNFC: The Open NFC Developer Site. Disponvel em: <http://open-nfc.org>.
Acesso em: 10 set. 2012.
124
ORTIZ, Enrique. An Introduction to Java Card Technology. Oracle, 2003. Disponvel
em:
<http://www.oracle.com/technetwork/java/javacard/javacard1-139251.html>.
Acesso em: 10 out. 2012.
RTD: NFC Record Type Definition Protocol Technical Specification. NFC Forum, v. 1.,
2006.
SNEP: Simple NDEF Exchange Protocol Technical Specification. NFC Forum, v. 1.,
2011.
BIBLIOGRAFIA COMPLEMENTAR
AQUINO, Juliana Frana Santos. Plataformas de Desenvolvimento para Dispositivos
Mveis. 2007. Trabalho de Concluso de Curso (Ps Graduao em Informtica) Pontifcia Universidade Catlica do Rio de Janeiro, RJ, 2007.
ATOJI, Rodolpho Iemini. Bluetooth e NFC: estudo de caso. 2010. Trabalho de
Concluso de Curso - Universidade de So Paulo, So Paulo, 2010.
ISO/IEC 14443-1: Identification cards - Contactless integrated circuit cards - Proximity
cards - Part 1: Physical characteristics. 1997.
ISO/IEC 14443-2: Identification cards - Contactless integrated circuit cards - Proximity
cards - Part 2: Radio frequency power and signal interface. 1999.
ISO/IEC 14443-3: Identification cards - Contactless integrated circuit cards - Proximity
cards - Part 3: Initialization and anti-collision. 1999.
KUMAR, Anurag. Near Field Communication. 2010. Trabalho de Concluso de Curso
(Graduao em Cincia da Computao e Engenharia) - Cochin University of Science
& Technology, Kochi, ndia, 2010.
ROVIO: Rovio Entertainment Ltd. Disponvel em: <http://www.rovio.com>. Acesso em:
10 mai. 2012.
125
126
elas utilizem, mas sim o contrrio: os dispositivos que mudam suas formas de
operao para se ajustarem s necessidades das pessoas. O objetivo principal de
que as pessoas no precisem mudar seus hbitos para que possam usar dispositivos
computacionais, mas sim que estes se adaptem s necessidades das pessoas.
Neste cenrio, a tecnologia NFC se encaixa perfeitamente como um elemento que
coloca em prtica o conceito de computao ubqua. Um bom exemplo o ato de
realizar um pagamento com um dispositivo mvel NFC atravs de um simples gesto de
aproximar o celular de um dispositivo leitor. Estudos recentes, como o (BARBOSA,
2011), j tratam de assuntos derivados da computao ubqua, como o caso do ucommerce, que um comrcio eletrnico baseado em computao ubqua.
127
128
Modified Miller: representa o bit 1 quando comea com um pulso alto e um pulso
baixo ocorre logo aps a metade da durao de um bit. Representa o bit 0
quando um pulso baixo ocorre no comeo da durao de um bit. E se bit 0 vem
depois do bit 1, nenhum pulso ocorre no bit 0, portanto o sinal permanece alto.
129
Na codificao Miller, o bit 0 codificado com pausa no primeiro meio-bit e sem pausa
no segundo meio-bit enquanto o bit 1 codificado sem pausa no primeiro meio-bit e
com pausa no segundo meio-bit. O Modified Miller aperfeioou esta codificao criando
algumas regras adicionais para a codificao dos zeros. No Miller, se o bit 1 fosse
seguido de um bit 0, os dois meio-bits subsequentes teriam uma pausa. O Modified
Miller evita isso codificando esse mesmo bit 0 com dois meio-bits sem pausa. Na
codificao Manchester a situao parecida, mas ao invs de ter uma pausa no
primeiro ou no segundo meio-bit, o prprio meio-bit pausado ou modulado.
Alm do esquema de codificao, a intensidade da modulao tambm depende da
taxa de transferncia. Para uma taxa de 106 kbit/s, a modulao de 100%
empregada. Isto significa que em uma pausa, o sinal de RF zero, ou seja, nenhum
sinal enviado. Para taxas acima de 106 kbit/s, uma modulao de 10% utilizada.
Esta variao na intensidade da modulao muito importante para a segurana da
aplicao NFC.
Cartes ISO/IEC 14443 Tipo A usam modulao ASK 100% com codificao Modified
Miller para comunicao do leitor para o carto. Para comunicao do carto para o
leitor utiliza modulao por carga com codificao Manchester. Cartes ISO/IEC 14443
Tipo B usam modulao ASK 10% com codificao NRZ-L para comunicao do leitor
para o carto. Para comunicao do carto para o leitor utiliza modulao por carga
com NRZ-L. O NFCIP-1 no define codificao e modulao para o Tipo A em taxas de
transferncia maiores do que 106 kbit/s. Para velocidades maiores, o Tipo B utilizado.
130
131