UNIVERSIDADE ANHEMBI MORUMBI
FÁBIO ROBERTO DA SILVA
APLICAÇÃO DE CRIPTOGRAFIA PARA SEGURANÇA DE MICROSD PARA
ANDROID
SÃO PAULO
2010
FÁBIO ROBERTO DA SILVA
APLICAÇÃO DE CRIPTOGRAFIA PARA SEGURANÇA DE MICROSD PARA
ANDROID
Trabalho de conclusão de curso apresentado como
exigência parcial para a obtenção de título de
Bacharel
em
Ciência
da
Computação
Universidade Anhembi Morumbi.
Orientadora: Profa. MsC Simone de Abreu
SÃO PAULO
2010
pela
FÁBIO ROBERTO DA SILVA
APLICAÇÃO DE CRIPTOGRAFIA PARA SEGURANÇA DE MICROSD PARA
ANDROID
Trabalho de conclusão de curso apresentado como
exigência parcial para a obtenção de título de
Bacharel
em
Ciência
da
Computação
pela
Universidade Anhembi Morumbi.
Aprovado em: 26/11/2010
____________________________________
Professora Simone Abreu
Universidade Anhembi Morumbi
____________________________________
Professor Carlos Magno Lopes
Universidade Anhembi Morumbi
____________________________________
Professor Silvio Rocha
Universidade Anhembi Morumbi
AGRADECIMENTOS
Para se ter sucesso nos dias atuais, às vezes devemos renunciar de coisas que julgamos
importantes e, para o desenvolvimento deste projeto não foi diferente. Agradeço
primeiramente minha namorada, pela paciência, força e confiança depositadas em mim.
Agradeço também a professora Simone, minha orientadora, que desde o começo apostou no
projeto, demonstrando interesse, dando importantes dicas sobre como desenvolvê-lo e me
guiando ao longo do projeto.
E, por fim, aos meus familiares e amigos que me entenderam quando não comparecia
nos eventos de reunião e lazer.
A todos, meus sinceros agradecimentos.
RESUMO
No atual cenário tecnológico, tem-se cada vez mais a inserção de dispositivos móveis na
área comercial. Existem vários sistemas operacionais para tais aparelhos e o sistema que está
se destacando é o Android. Dessa forma, inicia-se a preocupação com a segurança dos dados
contidos em tais aparelhos. Por tratarem, na maioria das vezes, com dados confidenciais as
empresas visam e buscam por arquiteturas que lhes ofereçam segurança. Com a facilidade
existente no transporte de dados graças a internet e os cartões de memória, criou-se a
necessidade de bloquear as informações para que sejam acessados somente por pessoas
autorizadas. Por isso foi criado um sistema capaz de aumentar a segurança de dados contido
no MicroSD usando criptografia. Para a realização deste sistema foi feita uma pesquisa sobre
algoritmos de criptografia e sobre desenvolvimento de aplicativos em dispositivos móveis
com Android.
Palavras-chave: Segurança, Android, MicroSD, Criptografia
ABSTRACT
In actual technology, it has been increasingly the insertion of mobile devices in the
commercial area . There are several operating systems for such devices and the system that is
emerging is the Android. Thus begins the concern for the safety of the data contained in such
devices. By addressing, in most cases, companies with sensitive data and aim for architectures
that seek to offer them security. With the existing facility to transport data through the internet
and memory cards, has created the need to block the information to be accessed only by
authorized persons. Thus was created a system capable of increasing the security of data
contained on the MicroSD using encryption. To realize this system was made a research on
encryption algorithms and developing applications on mobile devices with Android.
Keywords: Security, Android, MicroSD, Cryptography
LISTA DE FIGURAS
Figura 1 - Android Timeline..................................................................................................... 17
Figura 2 - Participação dos Sistemas Operacionais no mercado dos EUA. ............................. 18
Figura 3 - AdMob mobile metrics ............................................................................................ 19
Figura 4 - Arquitetura do Android ............................................................................................ 20
Figura 5 - Principais características do software para smartphone de uso comercial .............. 24
Figura 6 - Criação do MD5....................................................................................................... 27
Figura 7 - Arquitetura básica de um filtro de sistema de arquivo ............................................ 32
Figura 8 - Casos de Uso ............................................................................................................ 34
Figura 9 - Arquivo de Controle ................................................................................................ 38
Figura 10 - Tela de Login ......................................................................................................... 44
Figura 11 - Tela de Criação de Usuário. ................................................................................... 45
Figura 12 - Exemplo de encriptação de um arquivo ................................................................. 46
LISTA DE TABELAS
Tabela 1 - Vendas mundiais para usuários finais em milhões.................................................. 14
Tabela 2 - U.S. Mobile Subscriber Market Share .................................................................... 19
LISTA DE SIGLAS
2G: Second Generation
3D: Three dimensional
3DES: Triple Data Encryption Standard
3G: Third Generation
AAC: Advanced Audio Coding
AES: Advanced Encryption Standard
AMR: Adaptive Multi-Rate
API: Application Programming Interface
BSD: Berkeley Software Distribution
CDMA: Code Division Multiple Access
CPRM: Content Protection for Recordable Media
DES: Data Encryption Standard
GIF: Graphics Interchange Format
GPL: GNU Public License
GPRS: General Packet Radio Service
IPC: Inter Process Communication
LIBC: C Runtime Library
MD5: Message-Digest algorithm 5
MMC: Multimedia Card
NDK: Native Development Kit
NSA: National Security Agency
OS: Operational System
PC: Personal Computer
PNG: Portable Network Graphics
RSA: Rivest-Shamir-Adleman
SD: Secure digital
SDHC: Secure Digital High Capacity
SDK: Software Development Kit
SSL: Secure Sockets Layer
USB: Universal Serial Bus
SUMÁRIO
1
INTRODUÇÃO ............................................................................................................. 11
1.1 OBJETIVO ............................................................................................................. 11
1.2 JUSTIFICATIVA ................................................................................................... 12
1.3 ABRANGÊNCIA ................................................................................................... 12
1.4 ESTRUTURA DO TRABALHO ........................................................................... 12
2
DISPOSITIVOS MÓVEIS ........................................................................................... 13
2.1 TIPOS DE DISPOSITIVOS MÓVEIS .................................................................. 13
2.2 SISTEMAS OPERACIONAIS PARA DISPOSITIVOS MÓVEIS ...................... 13
2.2.1 PalmOS.................................................................................................. 14
2.2.2 Windows Mobile ................................................................................... 14
2.2.3 Symbian ................................................................................................. 15
2.2.4 BlackBerry ............................................................................................ 15
2.2.5 Android.................................................................................................. 15
3
ANDROID ...................................................................................................................... 17
3.1 HISTÓRIA ............................................................................................................. 17
3.2 ESTATÍSTICAS .................................................................................................... 18
3.3 ARQUITETURA INTERNA ................................................................................. 20
3.4 AMBIENTE DE DESENVOLVIMENTO ............................................................ 21
4
MICROSD ..................................................................................................................... 22
4.1 MODELOS EXISTENTES E SUAS PECULIARIDADES .................................. 22
4.2 VUNERABILIDADE ............................................................................................ 22
4.3 CRIPTOGRAFIA EXISTENTE ............................................................................ 22
5
SEGURANÇA ............................................................................................................... 24
5.1 CRIPTOGRAFIA ................................................................................................... 25
5.1.1 Criptografia Clássica ............................................................................. 25
5.1.2 Criptografia Moderna ............................................................................ 26
5.1.2.1 Chave Simétrica ..................................................................... 26
5.1.2.2 Chave Assimétrica .................................................................. 27
5.1.2.3 Criptografia Hash ................................................................... 27
5.1.2.4 Cifra de Bloco ........................................................................ 28
5.1.2.5 AES ........................................................................................ 28
5.1.3 Criptografia Quântica ............................................................................ 28
5.2 APLICAÇÕES JÁ EXISTENTES ......................................................................... 29
5.2.1 BlackBerry Java Application ................................................................ 29
5.2.2 Mobile Security Card SE 1.0................................................................. 29
6
O PROJETO .................................................................................................................. 31
6.1 MERCADO ............................................................................................................ 31
6.2 USABILIDADE DO ANDCRYPT........................................................................ 31
6.3 O ANDCRYPT ...................................................................................................... 33
6.4 CARACTERÍSTICAS FUNCIONAIS .................................................................. 33
7
MODELAGEM ............................................................................................................. 34
7.1 CASOS DE USO.................................................................................................... 34
7.1.1 Criar login ............................................................................................. 35
7.1.2 Logar Usuário ........................................................................................ 35
7.1.3 Listar Diretórios .................................................................................... 35
7.1.4 Encriptar Arquivo .................................................................................. 35
7.1.5 Decriptar Arquivo ................................................................................. 36
7.2 CAMADA DE DADOS ......................................................................................... 37
7.2.1 Implementação ...................................................................................... 37
7.3 CAMADA DE NEGÓCIOS .................................................................................. 38
7.3.1 Implementação ...................................................................................... 38
7.4 CAMADA DE APRESENTAÇÃO ....................................................................... 39
8
CONCLUSÃO ............................................................................................................... 40
8.1 TRABALHOS FUTUROS..................................................................................... 40
REFERÊNCIAS BIBLIOGRÁFICAS ................................................................................. 41
APÊNDICE A – TELAS DO ANDCRYPT .......................................................................... 44
A1 – LOGIN ............................................................................................................................ 44
A2 – CRIAÇÃO DE USUÁRIO ............................................................................................ 45
A3 – ENCRIPTAÇÃO ........................................................................................................... 46
APÊNDICE B – FLUXOGRAMAS ...................................................................................... 47
B1 – LOGIN ............................................................................................................................ 47
B2 – LISTAR DIRETÓRIOS ................................................................................................ 47
B3 – ENCRIPTAR .................................................................................................................. 48
B4 – DECRIPTAR .................................................................................................................. 49
11
1
INTRODUÇÃO
O crescimento do uso de smartphone é visível não só no Brasil como em todo mundo;
não só no uso pessoal, mas também dentro de corporações, independentemente de seu porte
ou segmento. Isso para que os funcionários tenham mais agilidade e mobilidade para tratar
dos negócios da empresa e sempre ter acesso as informações e e-mails corporativos.
Outro crescimento que pode ser observado é o do Sistema Operacional (SO) Android,
que vem ganhando mercado no ramo dos smartphones. Com isso, a chance deles tomarem boa
parte do mundo corporativo é cada vez maior.
Quando aparelhos com esse perfil são escolhidos por uma corporação para serem a
ferramenta de trabalho de seus funcionários, é extremamente comum que se tenha
informações ou arquivos sigilosos.
Alguns aparelhos com Android oferecem segurança para o acesso ao dispositivo, mas o
MicroSD uma vez fora do aparelho estará vulnerável ao acesso desde que o usuário tenha um
simples adaptador USB e um computador; tornando-se um problema devido às informações
que ele pode conter.
A pesquisa consiste em oferecer mais segurança aos dados do MicroSD mesmo que
esteja fora do dispositivo móvel. Isso será feito usando técnicas de criptografia de arquivos e
segurança controlada por senha.
Como o SO Android está em grande expansão no mercado, é open source (dando
liberdade de alteração no código do núcleo), muitas vezes não oferece segurança neste
aspecto.
Será analisada a viabilidade de se aplicar a criptografia no MicroSD através do
desenvolvimento de um aplicativo para o SO Android.
1.1
OBJETIVO
A proposta visa apresentar um estudo sobre segurança nos smartphones e o
desenvolvimento de um aplicativo que ofereça um mecanismo de fácil utilização, aumentando
a segurança dos dados no cartão de memória dentro ou fora do smartphone que usa como
plataforma o SO Android.
12
1.2
JUSTIFICATIVA
O grande crescimento do uso de aparelhos móveis, não só como acessório pessoal, mas
também profissional, acarretou um grande armazenamento de informações em MicroSD,
surgindo assim a preocupação com a segurança dos dados armazenados.
Aproveitando a evolução dos algoritmos de criptografia e a facilidade de criação de
aplicativos em um SO Android, foi verificada a possibilidade de unir tais funcionalidades para
buscar a segurança desejada.
1.3
ABRANGÊNCIA
Será realizada uma pesquisa a fim de levantar todos os dados necessários para
desenvolver o aplicativo, explicar e analisar a viabilidade do uso da criptografia de dados no
MicroSD dos aparelhos que usam Android como SO.
Sendo assim, será base para a pesquisa o SO em questão, a estrutura do MicroSD e o
grau de complexidade de criptografia a ser aplicado; bem como a compatibilidade e
viabilidade do uso da criptografia em dispositivos móveis com Android.
O desenvolvimento será realizado a partir da viabilidade encontrada na pesquisa.
1.4
ESTRUTURA DO TRABALHO
Este documento está organizado em oito capítulos, onde são apresentadas as formas de
segurança de dados existentes e sua importância no mercado atual de dispositivos móveis.
O segundo capítulo traz a história dos dispositivos móveis, focando dispositivos móveis
e sistemas operacionais para eles. O terceiro capítulo trata sobre o SO Android, que será
usado como foco no trabalho, e também mostra algumas justificativas desta escolha.
O quarto capítulo traz uma explicação sobre MicroSD, uma abordagem sobre a história
da criptografia e algumas aplicações de segurança para dispositivos móveis são expostas no
quinto capitulo.O sexto capítulo traz o projeto e qual seria sua visibilidade no mercado, a
modelagem do sistema como um todo. A eficácia da implementação é exposta no sétimo
capítulo. Por fim, no oitavo capítulo, apresentam-se as conclusões das pesquisas realizadas, os
resultados alcançados com a implementação e trabalhos futuros a serem desenvolvidos.
13
2
DISPOSITIVOS MÓVEIS
Um dispositivo móvel, designado popularmente em inglês por handheld é um
computador de bolso habitualmente equipado com uma pequena tela(output) e um teclado em
miniatura(input). Em alguns casos o output e o input combinam-se numa tela sensível ao
toque. Seguindo essa linha, aparelhos celulares e smartphones são considerados dispositivos
móveis (M-LEANING, 2007).
Como eles disponibilizam fácil acesso em qualquer momento e qualquer lugar, não só
despertam grande interesse, como estão se tornando essenciais para o dia-a-dia. (ANDREWS,
2008).
2.1
TIPOS DE DISPOSITIVOS MÓVEIS
Com o avanço da tecnologia, foi cada vez mais rápido o crescimento de dispositivos
móveis no mundo, podendo dividi-los em gerações. (MENDONÇA, 2007)
A primeira geração é aquela baseada em comunicação por voz e contando com celulares
analógicos; a segunda já apresenta a tecnologia 2G, que permite, além da comunicação por
voz, o envio de SMS, acesso à internet e transmissão de dados. Tem geração 2.5 que traz
novas tecnologias em transmissão de dados (CDMA - Code Division Multiple Access e
GPRS - General Packet Radio Service), com diferencial no aumento de velocidade. E
finalmente, a terceira geração (3G) que apresenta taxas ainda maiores de transmissão, maior
qualidade na transmissão de voz, vídeo, música, suporte a conteúdos multimídias.
(MENDONÇA, 2007; TELECO, 2008)
Para essa terceira geração foram aprimorados sistemas operacionais específicos para
dispositivos móveis.
2.2
SISTEMAS OPERACIONAIS PARA DISPOSITIVOS MÓVEIS
Ao pensar em um aplicativo para dispositivos móveis, logo se esbarra num grande
problema: a integração do aplicativo para os diversos SO existentes. Existe uma série de SO
para aparelhos móveis principalmente para os conhecidos como smartphones. Na tabela 1,
tem a ilustração dos SO mais vendidos. Neste capítulo aborda-se um breve resumo sobre a
história dos SO e sobre os mais conhecidos no mercado até os dias de hoje.
14
Tabela 1 - Vendas mundiais para usuários finais em milhões. Fonte: TELECO (2010)
OSs
2008
2009
1T10
Market Share
Symbian
72,9
80,9
24,1
44,3%
Research in Motion*
23,2
34,4
10,6
19,4%
iPhone OS**
11,4
24,9
8,4
15,4%
-
6,8
5,2
9,6%
Windows Mobile
16,5
15,0
3,7
6,8%
Linux
10,6
8,1
2,0
3,7%
Other OSs
4,0
1,1
404
0,7%
139,3
172,4
54,3
100%
Android
Total
*BlackBerry
**Apple
2.2.1 PalmOS
Foi o primeiro sistema desenvolvido para dispositivos móveis a chegar ao mercado, por
volta de 1996, e atualmente conta com cerca de 30.000 aplicativos desenvolvidos para ele. A
intenção da corporação ao criar tal sistema era auxiliar as pessoas a gerir suas atividades com
toda a mobilidade possível. Tal feito foi uma revolução quando chegou ao mercado. Vê-se
que seus pontos fracos são com requisitos mais sofisticados como segurança e multitarefa.
Porém, tem-se como ponto positivo o seu baixo custo. (PALM, 2010)
2.2.2 Windows Mobile
Foi primeiramente conhecido como Pocket PC e ganhou nome de Windows Mobile a
partir do momento em que a Microsoft lançou uma versão cujo kernel servia para palmtops e
smartphone.
Ganhou então vantagem por dar a possibilidade de criar aplicativos que funcionariam
em duas plataformas sem a necessidade de alterações.
Uma das vantagens dele é que, por ter suporte da Microsoft, mesmo sendo lançadas
novas versões, os aplicativos desenvolvidos devem ser compatíveis entre elas. Por ser um
15
sistema robusto, oferecer segurança e recursos diversos é um dos mais pedidos para
aplicações corporativas.
2.2.3 Symbian
A idéia, que posteriormente se tornou Symbian, começou como uma colaboração da
empresa de David Potter, que projetava jogos e software de produtividade de escritório, para
computadores pessoais Sinclair; uma parceria que se lançou com o nome “Psion”.
(SYMBIAN, 2010)
Esses programas ajudaram a dar à luz, em 1984, para o Psion Organizer, o primeiro
computador portátil.
O apoio e colaboração da indústria para o crescente poder da base de software Psion,
levou à formação histórica, em 1998, que foi renomeada como “Symbian”. A partir dai,
iniciaram-se parcerias entre Psion e fabricantes de aparelhos móveis, tais como: Ericsson,
Motorola e Nokia.
Ao longo de vários anos, o Symbian ajudou trazer a inovação de dispositivos móveis na
base de mais de 100 milhões de aparelhos em 2006.
Em 2008, a empresa finlandesa NOKIA, adquiriu o SO e desde então vem buscando a
melhor maneira de mobilizar a informática para ajudar as pessoas a fazerem as tarefas
melhores e mais rápidas. (SYMBIAN, 2010)
2.2.4 BlackBerry
A empresa por trás do smartphone BlackBerry é a Research In Motion que desenvolve
hardware integrado, software e serviços que suportem múltiplas redes sem fio.
A Research In Motion oferece soluções que permitem o acesso a informações sensíveis
ao tempo através de e-mail, linha telefônica, mensagens de texto, Internet e aplicativos. O
portfólio de produtos premiados da Research In Motion é utilizado por milhares de
organizações em todo o mundo. (RIM, 2010)
2.2.5 Android
O Android é um SO com o kernel baseado na versão 2.6 do kernel Linux, mantido pela
"Open Handset Alliance", um grupo de 47 empresas de tecnologias. Entre elas, operadoras de
16
telefonia móvel, fabricantes de celulares e componentes, e desenvolvedoras de software; que
tem como objetivo acelerar a inovação em tecnologias moveis e oferecer ao cliente final um
produto mais rico e de baixo custo, que atenda ao mercado. (HASHIMI, 2010).
17
3
ANDROID
Grande parte do código-fonte do Android está licenciado sob a Apache Software
License, que apesar de ser reconhecida pela Open Source Initiative como uma licença para
software open source, não obriga que as modificações feitas sejam disponibilizadas, ou seja,
qualquer empresa ou desenvolvedor pode alterar o código do Android, não sendo obrigados a
expor as alterações. Algumas partes da plataforma, como alguns patches do kernel Linux,
estão licenciadas sob a GNU Public License v2 (GPLv2) (ROGERS, 2009).
3.1
HISTÓRIA
A história do SO Android como ilustrada na Figura 1 demonstra que, ele foi idealizado
por uma empresa startup chamada Android Inc. Os principais representantes na época eram
Andy Rubin, Rich Miner, Nick Sears e Chris White. Esta empresa foi adquirida pela Google
em 2005 (HASHIMI, 2010).
Figura 1 - Android Timeline Fonte HASHIMI (2010)
No final de 2007, alguns líderes da indústria móvel se uniram em torno da Plataforma
Android para formar a Open Handset Aliance. Alguns membros proeminentes da aliança são
os seguintes: Sprint Nextel, T-Moblie, Motorola, Samsung, Sony Ericsson, Toshiba,
Vodafone, Google, Intel, Texas Instruments (HASHIMI, 2010).
Parte do objetivo da aliança é inovar rapidamente e responder melhor às necessidades
dos consumidores; e seu primeiro resultado importante foi a plataforma Android.
18
O Android foi concebido para atender às necessidades de operadoras de telefonia
móvel, fabricantes de aparelhos e desenvolvedores de aplicativos; já que fabricantes de
aparelhos não precisam pagar taxas de licenciamento para o Android em seus celulares ou
dispositivos. (HASHIMI, 2010)
O SDK (Software Development Kit) do Android foi emitido como uma pré-release,
lançada em Novembro de 2007. Em setembro de 2008, a T-Mobile anunciou a disponibilidade
da T-Mobile G1, o primeiro smartphone baseado na plataforma Android como ilustra a Figura
1. (HASHIMI, 2010)
Poucos dias depois, o Google tornou o código-fonte da plataforma Android disponível
sob licença Apache Software License. Em Abril de 2009 o SDK do Android já se encontrava
na versão 1.5, com um grande número de features cada vez mais avançadas, gravação de som,
widgets, entre outros (HASHIMI, 2010).
O SDK do Android encontra-se atualmente na versão 2.2 lançada em Maio de 2010, e
em constante desenvolvimento de novas funções. (ANDROID, 2010)
3.2
ESTATÍSTICAS
A plataforma Android mostra um forte crescimento, já que após meses do seu
lançamento, o T-Mobile G1 já havia vendido mais de um milhão de aparelhos (ZMOGINSKI,
2008) e em abril de 2009 já ocupava 6% do mercado de smartphones, como ilustra a Figura 2.
(ADMOD, 2009)
1%
4%
6%
Sistema Operacional nos EUA
Março 2009
6%
Iphone OS
11%
RIM OS
50%
Windows Mobile OS
Android OS
Palm OS
Hiptp OS
22%
Symbian OS
Figura 2 - Participação dos Sistemas Operacionais no mercado dos EUA. Fonte: ADMOB (2009)
19
O Android está entre as quatro plataformas mais usadas entre os 42,7 milhões de
americanos maiores de 13 anos que usam smartphones; com um crescimento de 4.3%
comparando o período de três meses encerrando em janeiro de 2010, com o mesmo período
encerando em outubro de 2009, como ilustra a tabela 2. (LIPSMAN, 2010)
Tabela 2 - U.S. Mobile Subscriber Market Share Fonte: LIPSMAN (2010)
Top das Platarfomas para Smatphones
Média de três meses encerrando em Janeiro de 2010 versus Média de três meses encerrando em
Outubro de 2009
Pesquisa realizada com americanos maiores de 13 anos
Fonte: comScore Mobilens
Parte (%) dos assinantes smartophones
out/09
jan/10 Variação
100,0%
100,0%
N/A
41,3%
43,0%
1,7
24,8%
25,1%
0,3
19,7%
15,7%
-4,0
2,8%
7,1%
4,3
7,8%
5,7%
-2,1
Total de proprietários de smartphones
RIM
Aplle
Microsoft
Google
Palm
O numero de desenvolvedores de aplicativos para Android também vem crescendo
muito. Conforme ilustra a figura 3, 70% dos desenvolvedores de aplicativos para iPhone
planejam desenvolver para Android enquanto apenas 48% dos desenvolvedores de aplicativos
para Android planejam desenvolver aplicativos para iPhone. (ADMOB, 2010)
Qual das seguintes plataformas você desenvolve atualmente ou tem planos para
desenvolver nos próximos 6 meses?
80%
70%
60%
50%
40%
30%
20%
10%
0%
68%
54%
48%
51%
15%
13%
9%11%
19%
17%
13%
7%
4%7%
19%
15%
Agora
6 meses
Figura 3 - AdMob mobile metrics Fonte: ADMOB (2010)
20
3.3
ARQUITETURA INTERNA
O exemplo da arquitetura interna do Android, como mostra a Figura 4, é separada por
camadas: kernel, Android Runtime, Bibliotecas Nativas, Java SDK e Aplicações.
O Android tem um kernel Linux baseado na versão 2.6.29. É responsável por drivers de
dispositivo de acesso a recursos, gerenciamento de energia, entre outros. Os drivers de
dispositivo fornecidos incluem: tela, câmera, teclado, WiFi, memória Flash, áudio e IPC.
Com o kernel Linux, os aplicativos em um dispositivo Android são desenvolvidos em
Java e executados através da máquina virtual Dalvik. A Dalvik foi especialmente
desenvolvida para utilizar o mínimo de memória, de modo que diversas máquinas virtuais
podem ser executadas ao mesmo tempo.
O nível seguinte, acima do kernel, tem um grande número de bibliotecas nativas em
C/C++ como OpenGL, WebKit, FreeType, SSL, LIBC, SQLite, e o Media. A biblioteca C do
sistema baseado em Berkeley Software Distribution (BSD) é sintetizada (a cerca de metade do
seu tamanho original) para dispositivos embarcados baseados em Linux. As bibliotecas de
mídia são baseadas em PacketVideo's e OpenCORE. Essas bibliotecas são responsáveis pela
gravação e reprodução de formatos de áudio e vídeo. A biblioteca chamada Surface Manager
controla o acesso ao sistema de visualização e suporte 2D e 3D.
Figura 4 - Arquitetura do Android Fonte: HASHIMI (2010)
21
As principais bibliotecas Java SDK para Android incluem telefonia, recursos locais, UI,
provedores de conteúdo (dados) e gerenciadores de pacotes (instalação, segurança, e assim
por diante). Programadores desenvolvem aplicações para o usuário final usando esta SDK.
Alguns exemplos de aplicações para usuário final do dispositivo incluem Home, contatos,
telefone, navegador, e assim por diante. (HASHIMI, 2010)
3.4
AMBIENTE DE DESENVOLVIMENTO
SDK é um pacote que permite elaborar aplicativos para uma plataforma específica. O
Android SDK permite que os desenvolvedores elaborem as aplicações para os aparelhos
celulares com o SO Android. Esse pacote SDK inclui API para manipulação de dados e
interface gráfica. Um bom exemplo de SDK disponibilizado é o Eclipse (IDE) na linguagem
Java, que é open source (de código-fonte aberto).
Dependendo do hardware, o sistema Android suporta tecnologias como touchscreen,
câmera, GPS, bússola, acelerômetro, Bluetooth, EDGE, 3G, e WiFi. Tem suporte também
para mídias de áudio, vídeo e imagem, nos formatos MPEG4, H.264, MP3, AAC, AMR, JPG,
PNG, GIF, bem como, acelerador gráfico 3D, baseados no OpenGL ES.
“O Android NDK é um conjunto de ferramentas que lhe permite inserir componentes
que fazem uso de código nativo em seus aplicativos Android”. (ANDROID DEVELOPER)
Ele possibilita ao desenvolvedor inserir parte de suas aplicações com código nativo (C, C++).
Isso é interessante para a reutilização de código, por exemplo. No caso do NDK Android, ele
foi projetado para uso somente em conjunto com o SDK do Android. (ANDROID, 2010 e
HASHIMI, 2010)
22
4
MICROSD
Um cartão de memória nada mais é do que um dispositivo de armazenamento de dados
utilizado em diversos aparelhos eletrônicos. Eles variam de tamanho e capacidade de
armazenamento. Tem como facilidade o fato de serem regravados diversas vezes sem que isso
prejudique o dispositivo, serem fáceis de carregar devido seu tamanho e também por não
precisar de energia para armazenar os dados.
Há diversos tipos de cartões de memória, como memory cards de vídeo game, cartões
de câmeras digitais e celulares. (SD ASSOCIATION, 2010)
4.1
MODELOS EXISTENTES E SUAS PECULIARIDADES
O atual SD Card (Secure Digital Card) é uma evolução do MMC (MultiMediaCard),
com o diferencial de possibilidade de criptografia para atender aos quesitos de qualidade
colocados pelas empresas e uma trava que impede a copia dos dados.
Já existem Mini e MicroSD, e eles variam o tamanho e capacidade de armazenamento.
Foi desenvolvido também um adaptador para facilitar o acesso aos dados de qualquer
cartão de memória. (SD ASSOCIATION, 2010)
4.2
VUNERABILIDADE
Por apresentar apenas uma trava que pode facilmente ser cancelada por qualquer
usuário, os cartões de memória não apresentam segurança de dados. Com o surgimento do
MicroSD veio à possibilidade de implementação de criptografia a fim de assegurar os dados
gravados no cartão. Mas, as aplicações ainda não foram replicadas para todos os aparelhos
que suportam tais cartões.
4.3
CRIPTOGRAFIA EXISTENTE
As diferenças mais relevantes entre o Micro SD e os demais cartões de armazenamento
são seu tamanho reduzido, facilitando o seu transporte, a existência de um adaptador, a
possibilidade de criptografia, sua grande expansão em questão de capacidade de
23
armazenamento e sua grande utilização em dispositivos móveis (principalmente aparelhos
móveis).
Pode ser encontrado em diversos padrões de armazenamento como 128MB, 256MB,
512MB, 1GB, 2GB. A partir de 4GB ele é chamado micro SDHC (Secure Digital High
Capacity).
Além disso, existe no MicroSD o CPRM (Content Protection for Recordable Media ou
Proteção de Conteúdo para Mídia Gravável), que é a Proteção de Copyright, uma tecnologia
de proteção contra distribuição de cópias ilegais.
24
5
SEGURANÇA
A principal preocupação para o uso comercial de smartphone é a segurança. Isso se dá
ao fato de o smartphone unir tráfego de internet a dados confidenciais das empresas.
Não há mais diferenças, quando se trata de tecnologia de segurança, entre PC e
smartphone, conforme apresenta a Figura 5. (MALYKHINA, 2007)
Além da chamada
quais as características do software são mais importantes
quando se considera os smartphones para uso comercial?
Segurança
68%
Manipuladores
administrador de TI
68%
Fácil integração com o
Microsoft Windows PCs
63%
Número e tipo de aplicações
disponíveis
46%
Suporte a vários serviços
wireless de e-mail
41%
39%
Suporte de celular 3G
37%
Suporte a Wi-Fi
APIs e ferramentas de
desenvolvimento
13%
Outros
12%
Recursos multimídia, como
players de música e vídeo
10%
Figura 5 - Principais características do software para smartphone de uso comercial. MALYKHINA (2007)
Recentemente, analistas de segurança americanos mostraram que possíveis aplicativos
espiões instalados em SO BlackBerry coletariam dados durante o uso normal do smartphone,
podendo coletar desde senhas a copias de SMS. (ASN, 2010)
25
Para contornar tal situação, empresas de SO estão desenvolvendo aplicativos utilizando
criptografia, para proteger o usuário.
5.1
CRIPTOGRAFIA
A base da criptografia vem de muito tempo, os próprios hieróglifos são considerados
por pesquisadores como formas de encriptar mensagens.
Após este período, o grande marco da criptografia se deu com gregos e romanos, no
auge das guerras, onde o homem não se sentiu mais seguro em caminhar com informações
diversas.
Em seguida teve a criação de máquinas que possuíam um mecanismo para cifrar e
decifrar as mensagens, e daí pra frente, junto com o avanço tecnológico, surgiram novos
modelos de criptografia buscando a segurança não só das mensagens, mas como o meio pelos
quais elas são enviadas.
Existe uma divisão básica que apresenta três tipos de criptografia: clássica, moderna e
quântica. Dentro desses três modelos tem-se uma divisão um pouco mais detalhada que
envolve a forma de decriptação da mensagem.
5.1.1 Criptografia Clássica
Há muitos anos o homem viu a necessidade de ter uma forma simples e segura de
transmitir seus dados, sem que um intruso tivesse acesso.
Não há registros que no início eram usados símbolos no lugar das letras e ambas as
partes (emissor e receptor) tinham a definição de cada símbolo. Recebendo a mensagem era
só substituí-los. Caso um inimigo enviasse uma tropa contra a caravana ou mensageiro do
emissor, ele jamais saberia o que estava escrito, já que não possuía a "chave".
Há um relato também do bastão de Licurgo e a Cifra de César, o bastão de Licurgo
consistia em enrolar um papel em um bastão e escrever uma letra em cada pedaço do papel.
Ao tirar do bastão as letras se embaralham e o intruso não consegue entender a mensagem. A
chave de decriptação nesse caso é outro bastão com mesma espessura, onde o receptor deve
enrolar o papel para que a mensagem seja refeita e a cifra de César consiste em substituir as
letras da mensagem uma pela outra com escala fixa. Se pega a palavra “exemplo” e aplica a
escala três o resultado seria algo como: “exemplo” = “emploex”. (TKOTZ, 2005)
26
5.1.2 Criptografia Moderna
Com o surgimento de máquinas computacionais, a criptografia teve um avanço em suas
técnicas.
A criptografia começa também a ser vista como secreta e seu trabalho é realizado por
profissionais em órgão como a NAZA, NSA, entre outros.
Em 1976, com a publicação do DES para o público teve o primeiro algoritmo aberto.
Após essa publicação, foi lançado também o artigo New Directions in Cryptography. Dai em
diante,
foram
iniciadas
várias
pesquisas
no
campo
de
chave
publica.
O marco dessas pesquisas foi o surgimento do algoritmo RSA.
Há uma divisão na forma de aplicar a criptografia, para saber o nível de segurança
aplicado por exemplo.
As chaves são responsáveis pela codificação e decodificação do texto em questão. Além
disso, são usadas na verificação de assinatura digital e funções de hash, e algumas vezes para
autenticação. Elas são geradas aleatoriamente para garantir que não serão quebradas
facilmente.
Na chave (tanto simétrica quanto assimétrica) o nível é medido no número de bits.
Dessa forma, quanto mais bits, mais difícil de utilizar a força bruta (tentativa e erro).
Já na função Hash o nível é dado pela dificuldade de seqüências, evitando que seqüências
iguais sejam apresentadas para dados diferentes. (KATZ, 2007)
5.1.2.1 Chave Simétrica
É a chave mais simples da criptografia, porque tanto o emissor quanto o receptor
possuem a mesma chave. Então, da mesma forma que é feia a criptação é feia a descriptração,
como por exemplos os símbolos que eram utilizados nas antiguidades.
Apesar de simples, esse método apresenta falhas graves, como a necessidade de troca
constante das chaves (já que uma vez que descoberta nenhuma mensagem será segura. Apesar
de ser mais rápida, não há segurança em utilizar essa chave em qualquer tipo de transação de
dados, já que uma vez em mãos erradas, todas as mensagens estarão expostas. (KATZ, 2010 e
NUNES, 2007)
27
5.1.2.2 Chave Assimétrica
Diferente da chave simétrica, a assimétrica utiliza duas chaves, uma pública e outra
privada, a chave pública é a que é criada e encaminhada ao receptor a quem se deseja manter
contato com mensagens encriptadas. Para encriptar a mensagem é utiliza a chave pública, para
decriptar são necessárias as duas chaves, a pública e a privada (que é secreta), essa forma
garante maior confiabilidade dos dados. (NUNES, 2007 e KATZ, 2010)
Rivest, Shamir e Adleman, foram os primeiros a descrever o algoritmo conhecido como
RSA que é um exemplo de algoritmo que utilizada chave assimétrica, como desvantagem tem
o fato de que por usar algoritmos reversos, pode levar certo tempo computacional. Dessa
forma se torna inviável em comunicações intensas. (NUNES, 2007 e ACM, 1978)
5.1.2.3 Criptografia Hash
A criptografia hash consiste em calcular um identificador digital de tamanho fixo para
uma string de qualquer tamanho.
As funções hash garantem uma probabilidade mínima de que dois strings diferentes
resultem no mesmo valor hash.
Há o exemplo do MD5, utilizado por softwares com protocolo par-a-par, que faz a
verificação de integridade. É criada uma string criptografada para cada arquivo e através
dessa string é verificada a necessidade de atualização, como ilustra a Figura 6. (SKRENTA,
2007)
Figura 6 - Criação do MD5 Fonte: SKRENTA (2007)
28
5.1.2.4 Cifra de Bloco
Cifra de bloco é uma criptografia aplicada em um bloco de strings a fim de operar com
um tamanho fixo de bloco para qualquer encriptação. Caso ultrapasse o tamanho do bloco,
são usados outros modos de operação a fim de contornar tal estado.
O intuito normalmente é para conferir confidencialidade, mas pode ser utilizado para
confidencialidade e autenticação.
O DES (Data Encryption Standard) é um algoritmo aprovado pelo governo dos EUA.
No início era considerado o mais seguro. Mas após tentativas de quebrá-lo, apareceram
suspeitas de backdoor por conta de seu criador (NSA). Pesquisas continuaram e foi verificado
que não era um algoritmo tão seguro. Após esse acontecimento foi criado o 3DES, que aplica
o mesmo conceito do DES, mas três vezes para cada bloco.
Mesmo assim, posteriormente, o DES foi substituído pelo AES. (LUBBE, 1997)
5.1.2.5 AES
O Advanced Encryption Standard (AES - Padrão de Criptografia Avançada) é outro
exemplo de cifra de bloco adotada pelo governo dos EUA. Foi apresentado em 2001 adotado
como padrão, substituindo o DES em 2002. O AES é um dos algoritmos usados para
criptografia de chave simétrica. O AES foi elaborado buscando maior segurança,
confiabilidade e rapidez, tanto comparado com o DES quanto com o 3DES.
Disponibiliza desenvolvimento em C e Java, é feito em quatro camadas (Byte
Substitution, Shift Rows, Mix Columns e Key Addition) e adaptado para processadores
modernos e smart cards. (KATZ, 2007)
5.1.3 Criptografia Quântica
A união da criptografia com a teoria quântica é mais antiga do que se imagina. Há
relatos que ela foi iniciada antes mesmo da Chave Pública.
Um estudo feito em 2005 para Revista Brasileira de Ensino de Física consiste em como
utilizar a teoria quântica para unir duas mensagens em uma transmissão, mas o receptor só
pode decodificar uma de cada vez.
29
Este estudo também mostra que umas das vantagens da Criptografia Quântica é o fato
de que as partes não precisariam ter contato prévio para a distribuição da chave. Outra
vantagem é a fácil percepção de intrusos. Já os pontos negativos são a taxa de erro de
transmissão de dados, já que a mesma seria feita através de transmissão de fótons por fibra
ótica ou via aérea, e o elevado custo de implementação. (RIGOLIN, 2005)
5.2
APLICAÇÕES JÁ EXISTENTES
Segurança em dispositivos móveis não é um tema novo. Conforme estudos realizados
para esse trabalho, já existem algumas aplicações para aumentar a segurança dos dados em
diversos modelos e marcas de aparelhos. Dessa forma, serão citadas aqui algumas destas
soluções.
5.2.1 BlackBerry Java Application
A BlackBerry possui uma plataforma de desenvolvimento que permite a criação de
aplicações com poder de encriptar e decriptar informações diretamente no MicroSD
Através de um aplicativo Java, a informação é acessada diretamente no cartão,
decriptada e transferida para a memória principal. O arquivo fica protegido por senha, não
sendo necessário que o dispositivo que lê seja bloqueado, ou mesmo que ele seja da
plataforma BlackBerry.
A criptografia é feita com uma chave mestra inserida no cartão, que criptografa os
arquivos e impede que o dispositivo que acessa os dados decripte ou encripte novamente os
dados quando a funcionalidade for desabilitada ou a senha alterada. (RIM, 2010)
5.2.2 Mobile Security Card SE 1.0
A Giesecke & Devrient (G&D), um dos líderes globais em smart cards, segurança e
telecomunicações, lança uma nova tecnologia em segurança de dados.
Essa tecnologia já oferece segurança para sistemas operacionais Windows ou Linux em
computadores, bem como Windows Mobile, BlackBerry, Symbian e Android.
30
O MobileSecurityCard SE 1.0 oferece segurança de dados sem precisar de um leitor de
cartões. O cartão permite autenticação diretamente do MicroSD sendo simplesmente
adequado em qualquer SO. (GIESECKE, 2010)
31
6
O PROJETO
Conforme apresentado nos capítulos anteriores, que afirma a popularização do
smartphone no meio corporativo e uma preocupação muito grande com a segurança dos dados
de uma empresa, nota-se uma evidente necessidade de criar um mecanismo de segurança para
os dados corporativos em um smartphone.
O presente projeto, intitulado AndCrypt, tem por objetivo apresentar uma solução que
aumenta a segurança dos dados em MicroSD para o SO Android.
6.1
MERCADO
Devido a falta de sistemas que visem a segurança de dados em um smartphone, há
grandes chances de o sistema ter uma boa visibilidade no mercado.
Existem algumas aplicações que trazem segurança para o usuário de smartphone, como
os já apresentados na seção 5.2, mas nenhum que oferece a segurança dos dados contidos no
MicroSD mesmo fora dos aparelhos com plataforma Android.
6.2
USABILIDADE DO ANDCRYPT
No início dos estudos havia intenção de fazer um sistema completamente transparente,
onde o usuário pudesse abrir, editar e salvar os arquivos encriptados. Para que isso seja
possível, a encriptação deve ser aplicada no momento em que o arquivo é escrito no sistema
de arquivos e a decriptação deve ser aplicada no momento em que o arquivo é lido do sistema
de arquivo. Isso deve ser feito ou pelo próprio sistema de arquivos ou por um filtro de sistema
de arquivos que atua quase em nível de hardware, antes das aplicações lerem ou escreverem o
arquivo. Assim, os aplicativos que abrem, editam e salvam os arquivos não precisam conhecer
o algoritmo de encriptação, para poder realizar a leitura ou escrita do arquivo em questão.
O estudo realizado mostrou que para desenvolver tal sistema deveria ser feito um
módulo que seria carregado pelo núcleo do SO. Este núcleo é conhecido como kernel é esta
parte do sistema que tem contato direto com o hardware do dispositivo. Este tipo de modulo é
conhecido como “filesystem filter” (filtro de sistema de arquivo) que deve ser carregado pelo
kernel e funciona como um filtro que fica entre a aplicação e o sistema de arquivos,
encriptando a escrita e decriptando a leitura, como ilustra a Figura 7. (ANDROID-KERNEL,
2010).
32
Figura 7 - Arquitetura básica de um filtro de sistema de arquivo (O AUTOR, 2010)
A instalação deste tipo de sistema no Android obriga o programador a compilar todo o
kernel para que as dependências do sistema fiquem mais confiáveis e para melhorar o
desempenho da solução. Este processo gera uma nova versão do kernel que deverá ser
instalada no aparelho a partir de uma ROM image (imagem ROM). Uma imagem ROM é um
arquivo que contém uma cópia do conteúdo de um chip de memória, como por exemplo, um
firmware de um sistema embarcado. Esta instalação é feita sobrescrevendo o conteúdo da
memória interna do dispositivo com o conteúdo da imagem ROM.
O processo de sobrescrita e a imagem ROM são diferentes para cada modelo de
dispositivo. Este processo pode ser confuso e tecnicamente complicado e mexer na ROM de
um smartphone implica a perda da garantia de fábrica do aparelho (XDA-FORUM, 2010)
Pelos motivos descritos anteriormente pode-se observar que seria inviável a
implementação deste sistema. Para solucionar este problema e transformar a idéia em um
sistema viável, foi necessário modificar a usabilidade. Para isso, a encriptação e decriptação
não serão aplicadas automaticamente, o usuário final deverá encriptar e decriptar o arquivo
sempre que necessário, usando o aplicativo proposto a seguir.
33
6.3
O ANDCRYPT
Supondo que um usuário proprietário de um aparelho Motorola Milestone (que utiliza
como SO o Android) e deseja adicionar mais segurança a alguns arquivos em seu MicroSD,
ele precisará fazer o download do AndCrypt na loja virtual do Android e instalá-la. Uma vez
que o aplicativo esteja instalado, o usuário poderá rodá-lo e o usuário irá criar um perfil com
senha que será armazenado, e logo em seguida poderá navegar pelos diretórios e arquivos de
seu cartão de memória. Encontrando o arquivo que deseja, ele poderá solicitar que o arquivo
seja encriptado, protegendo o seu conteúdo.
Se por ventura o aparelho for perdido, o cartão de memória for removido do smartphone
ou mesmo se estiver sendo acessado por algum outro meio, o arquivo protegido estará
encriptado, ocultando assim o seu verdadeiro conteúdo.
Quando o usuário tiver intenção de ler, carregar ou usar o arquivo encriptado ele deverá
solicitar que o arquivo seja decriptado. O usuário vai abrir o aplicativo, digitar sua senha,
selecionar o arquivo encriptado e solicitar então a decriptografia.
6.4
CARACTERÍSTICAS FUNCIONAIS
No projeto proposto, o arquivo protegido só poderá ser decriptado pelo usuário que o
encriptou. Será necessário que esteja em um aparelho com Android e com o aplicativo
presente e devidamente instalado.
Se por ventura o usuário perder ou esquecer a senha não será possível decriptar o
arquivo em questão, pois a senha será usada como parte da chave para fazer a decriptografia
do arquivo.
O arquivo protegido terá seu nome modificado para que o usuário identifique
visualmente se o arquivo está ou não protegido.
34
7
MODELAGEM
O AndCrypt foi desenvolvido usando o modelo de três camadas: a camada de dados
será responsável por encriptar e decriptar os arquivos do cartão de memória e gerar o MD5
dos arquivos encriptados; a camada de negócios será responsável por controlar os arquivos
encriptados e decriptados e a camada de apresentação será responsável navegar pelos
diretórios e mostrar os dados na tela.
7.1
CASOS DE USO
Na arquitetura proposta há cinco casos de uso, conforme mostrados na Figura 8; que
representam as funcionalidades disponíveis e a interação do usuário com o sistema.
O primeiro caso de uso, “Criar Usuário”, representa a criação de um login de usuário no
sistema.
No segundo caso de uso, “Logar Usuário”, o usuário informa seus dados já cadastrados,
para realizar a autenticação no sistema.
No terceiro caso de uso, “Listar Diretórios”, o usuário recebe do sistema a lista dos
arquivos existentes no MicroSD.
No quarto caso de uso, “Encriptar Arquivo”, será escolhido o arquivo a ser encriptado e
devolvido ao usuário seu novo nome, ou a mensagem de erro.
Figura 8 - Casos de Uso Fonte: O AUTOR (2010)
35
No quinto caso de uso, “Decriptar Arquivo”, será escolhido o arquivo a ser decriptado e
devolvido ao usuário seu novo nome, ou a mensagem de erro.
7.1.1 Criar login
A camada de apresentação solicitará login e senha ao usuário, depois de digitados, os
dados serão verificados para não haver dois usuários com o mesmo nome, após ter os dados
validados, os mesmo serão gravados pela camada de negócios em um arquivo de controle,
para garantir a segurança do usuário será gravado apenas o nome e o HASH da senha, e
retornará uma mensagem de sucesso para a camada de apresentação.
7.1.2 Logar Usuário
A camada de apresentação solicitará login e senha ao usuário, os dados digitados serão
validados pela camada de negócios a que responde para a camada de apresentação se o login é
válido, comparando o nome e o HASH da senha com as informações gravadas no arquivo de
controle. Se o login não for válido a camada de apresentação mostra uma mensagem de erro e
solicita o login novamente. Sendo válido, a camada de apresentação solicita a lista de
diretórios do MicroSD para a camada de dados. A camada de dados retorna a lista para a
camada de apresentação, que mostra a lista para o usuário.
7.1.3 Listar Diretórios
A camada de apresentação exige uma lista com os arquivos e diretórios do diretório
atual, se o usuário tocar em um diretório, uma nova lista será solicitada, se o usuário tocar em
um arquivo será mostrado um menu com opções de encriptar ou decriptar o arquivo em
questão.
7.1.4 Encriptar Arquivo
Após o AndCrypt mostrar a lista de arquivos o usuário deverá tocar em um arquivo para
que o menu seja mostrado com algumas opções. O usuário deverá escolher a opção
“Encriptar” e digitar a senha. A camada de apresentação enviará estes dados (nome do
36
arquivo com o caminho completo e a senha do usuário) para a camada de dados, que por sua
vez, fará uma chamada para a camada de negócios. A camada de negócio irá verificar a senha,
se a senha for confirmada, a chave de criptografia será gerada utilizando nome do usuário, o
HASH da senha e o tamanho do arquivo e retornada para a camada de dados.
A encriptação será feita pela camada de dados, o arquivo será renomeado, um MD5 do
arquivo encriptado será gerado, que por sua vez, será gravado no arquivo de controle pela
camada de negócios. Após a gravação do MD5, a camada de negócio retornará o resultado da
operação para camada de dados, que informará o novo nome do arquivo para a camada de
apresentação, que irá informar ao usuário com uma mensagem de sucesso o novo nome do
arquivo após a encriptação.
7.1.5 Decriptar Arquivo
Após o AndCrypt mostrar a lista de arquivos o usuário deverá tocar em um arquivo para
que o menu seja mostrado com algumas opções. O usuário deverá escolher a opção
“Encriptar” e digitar a senha. A camada de apresentação chama uma função da camada de
dados enviando os dados do arquivo e a senha, a camada de dados chama uma função da
camada de negócios, passando a senha do usuário, o tamanho e o MD5 do arquivo, que
verifica a existência deste MD5 no arquivo de controle.
Caso o MD5 seja encontrado no arquivo de controle a camada de negócios apaga o
MD5 do arquivo de controle, retorna sucesso e a chave para decriptação, e assim a camada de
dados efetua a decriptação e muda o nome do arquivo.
Após isso, a camada de dados retorna para a camada de apresentação o novo nome do
arquivo decriptado.
Caso o MD5 não esteja no arquivo de controle, a camada de dados envia uma
mensagem de erro para a camada de apresentação que mostra a mensagem ao usuário. O
usuário é alertado de que há riscos de corromper o arquivo caso a decriptação seja realizada,
porque existem três motivos para o MD5 não estar no arquivo de controle, ou arquivo não esta
encriptado, ou foi encriptado por outro usuário ou se foi encriptado pelo usuário logado foi
encriptado em outro celular. Após o usuário conhecer os riscos e suas razões, ele escolhe se
faz a decriptação ou não.
O usuário optando por fazer decriptação do arquivo, a camada de apresentação chama a
mesma função da camada de dados, enviando os mesmo dados da primeira chamada e um
37
parâmetro a mais que identifica que o usuário conhece os riscos e confirma a operação. A
camada de dados faz uma chamada para a camada de negócio que verifica a senha, gera e
retorna a chave de criptografia utilizando nome do usuário, o HASH da senha e o tamanho do
arquivo se a senha estiver correta.
A decriptação será feita pela camada de dados, o arquivo será renomeado e o novo
nome do arquivo é retornado para a camada de apresentação, que irá informar ao usuário com
uma mensagem de sucesso o novo nome do arquivo após a encriptação.
7.2
CAMADA DE DADOS
Esta camada foi desenvolvida usando a biblioteca de linguagem nativa do Android, o
NDK.
Ela é responsável por ler o conteúdo de um diretório e encriptar e/ou decriptar os
arquivos. Portanto, é nesta camada que será implementado o algoritmo de criptografia de
chave simétrica. Foi escolhida a criptografia de chave simétrica por ser mais simples, como já
foi explicado nos capítulos anteriores, poupando o processamento e a bateria do dispositivo.
A chave de criptografia é gerada pela camada de negócios a partir do nome e senha do
usuário e o tamanho do arquivo no momento que ele for encriptado. Esta chave não poderá ser
armazenada por questões de segurança, logo o algoritmo usado não poderá mudar o tamanho
do arquivo para que seja possível gerar a mesma chave na hora da decriptação.
O nome do arquivo encriptado é modificado logo após a encriptação, usando o seguinte
padrão: se o arquivo antes de encriptado tiver “meu documento.doc” como nome, depois da
encriptação ele será renomeado para “meu documento.crypt.doc”.
Isso será feito para que o usuário identifique que o arquivo está encriptado apenas lendo
o seu nome.
7.2.1 Implementação
A camada de dados foi desenvolvida exportando três funções: “cryptFile” e
“decryptFile”.
A função cryptFile recebe como parâmetro o caminho do diretório atual e o nome do
arquivo a ser encriptado. O arquivo será encriptado e terá o seu nome modificado. O retorno
38
será uma string com o novo nome do arquivo no caso de sucesso ou o código de erro no caso
de erro.
A função decryptFile recebe como parâmetro o caminho do diretório atual, o nome do
arquivo a ser decriptado e um terceiro parâmetro que informa a ciência do usuário sobre uma
possível corrupção do arquivo. O arquivo será decriptado e terá o seu nome modificado. O
retorno será uma string com o novo nome do arquivo no caso de sucesso ou o código de erro
no caso de erro.
7.3
CAMADA DE NEGÓCIOS
Esta camada também foi desenvolvida usando a Android NDK. É nesta camada que
dados como nome e senha do usuário e se o arquivo que deverá ou não ser encriptado, é
processado. A camada de negócios envia comandos para a camada de dados para ler conteúdo
de um diretório, encriptar ou decriptar um arquivo e salvar ou ler os dados do usuário.
A autenticação do usuário será feita nesta camada, solicitando nome e senha do usuário
para a camada de apresentação e solicitando também a mesma informação para a camada de
dados. Se estas informações coincidirem o usuário estará autenticado.
As informações sobre usuário e senha estarão em um arquivo de controle, que terá o
nome do usuário e o HASH de sua senha e uma lista de MD5 dos arquivos encriptado por ele,
como mostra a Figura 9.
Figura 9 - Arquivo de Controle Fonte: O AUTOR (2010)
7.3.1 Implementação
A camada de negócios foi desenvolvida exportando cinco funções: “createUser”,
“login”, “addFile”, “verifyFile” e “generateKey”.
39
A função createUser recebe como parâmetro o nome e a senha do novo usuário e
verifica se o este nome já existe, se já existir, retorna um erro de usuário existente, senão salva
o usuário e o HASH da senha no arquivo de controle.
A função login recebe como parâmetro o nome e senha de um usuário já cadastrado. Ela
procura no arquivo de controle o nome do usuário, depois compara o HASH da senha com o
conteúdo do arquivo de controle. Se for igual, a função retorna sucesso e o usuário é
autenticado. Senão,a função retornará erro.
A função addFile recebe como parâmetro o MD5 do arquivo encriptado e armazena
esta informação no arquivo de controle.
A função verifyFile recebe como parâmetro o MD5, a senha e o tamanho do arquivo.
Primeiro é verificado se o MD5 está no arquivo de controle; se estiver, a função irá comparar
o HASH da senha com o HASH armazenado no arquivo de controle. Coincidindo o HASH, a
função retorna sucesso e a chave de criptografia para este arquivo. Se o MD5 não estiver no
arquivo de controle, a função retornará um erro.
A função generateKey recebe como parâmetro a senha e o tamanho do arquivo em
questão. A função verifica a senha, gera um HASH da senha e compara com o HASH
existente no arquivo de controle. Se coincidirem será gerado um HASH com o nome, a senha
do usuário e o tamanho do arquivo. Assim será gerada uma chave diferente para cada arquivo,
que só poderá ser gerada mediante o nome e a senha do usuário. Se não coincidirem, a função
retorna erro.
7.4
CAMADA DE APRESENTAÇÃO
Esta camada foi desenvolvida usando o SDK do Android. Ela será responsável por
mostrar os dados na tela de forma intuitiva e amigável.
Esta camada interage diretamente com o usuário, solicitando login e senha, informando
se o usuário está ou não autenticado e mostrando a lista de arquivos de algum diretório para
que o usuário possa navegar pelos arquivos.
40
8
CONCLUSÃO
Conforme pesquisa e desenvolvimento durante o período de execução do trabalho, foi
verificado que é possível sugerir novas formas de manter os dados salvos através de
dispositivos móveis.
Foram encontradas dificuldades referentes a especificações do SO, como a necessidade
de recopilar o kernel. Sendo assim, para que a aplicação seja viável seria necessário um
contrato onde os dispositivos móveis viessem com o SO já modificado, incluindo o aplicativo.
Outra dificuldade encontrada foi a capacidade de processamento dos dispositivos
móveis, diminuindo a possibilidade de utilizar uma criptografia mais forte, devido o grande
processamento que seria dispensado para isso.
Isso impactou em alguns detalhes, como utilizar um banco de dados externo, onde o
usuário poderia recuperar sua senha caso ela fosse esquecida. Ou mesmo decriptar o arquivo
em outro aparelho sem ter que criar o seu login novamente com os dados exatamente iguais.
Os estudos mostraram que ainda há muito o que acontecer no ramo de segurança de
dados para dispositivos móveis.
Mas foi visto que há a possibilidade de aprimorar o aplicativo a fim de driblar esse
imprevistos encontrados. Contando também com o grande crescimento referente ao hardware
dos dispositivos móveis, há a possibilidade de aplicar uma criptografia mais forte
posteriormente.
8.1
TRABALHOS FUTUROS
Durante a idealização do projeto e seu desenvolvimento, algumas melhorias que trariam
maior valor agregado ao sistema e que ampliaria substancialmente a base de possíveis
usuários, puderam ser identificadas:

Estudar novas funcionalidades disponibilizadas pela SDK do Android

Desenvolvimento do mesmo aplicativo, mas multi-plataforma

Desenvolvimento do mesmo aplicativo, mas para desktop
41
REFERÊNCIAS BIBLIOGRÁFICAS
ACM. Communications of the ACM, ACM Homepage, 02 fev. 1978 Disponível em:
<http://portal.acm.org/citation.cfm?doid=359340.359342>. Acesso em: 05 abr. 2010
ADMOB. AdMob Mobile Metrics Report, AdMob Mobile Metrics, 23 abr. 2009. Disponível
em:
<http://metrics.admob.com/wp-content/uploads/2009/04/admob-mobile-metrics-march-
09.pdf>. Acesso em: 21 abr. 2010.
ADMOB. AdMob Mobile Metrics Report,AdMob Mobile Metrics, 23 mar. 2010. Disponível
em:
<http://metrics.admob.com/wp-content/uploads/2010/03/AdMob-Mobile-Metrics-Mar-
10-Publisher-Survey.pdf>. Acesso em 22 abr. 2010.
ANDROID,
Android
2.2
Plataform,
Android.com,
Disponível
em:
<http://developer.android.com/sdk/android-2.2.html>. Acesso em: 17 mai. 2010.
ANDROID-KERNEL, Android Linux Kernel Development, Google Groups, Disponível em:
< http://groups.google.com/group/android-kernel>. Acesso em: 02 out. 2010.
ASN. Smartphone também é alvo de ataques, Agência SEBRAE de notícias, 28 abr. 2010.
Disponivel
em:
<http://www.agenciasebrae.com.br/noticia.kmf?canal=36&cod=9900117&indice=90> Acesso
em 30 abr. 2010.
GIESECKE, The Mobile Security Card SE 1.0, Giesecke & Devrient, Disponível em:
<http://www.gd-sfs.com/the-mobile-security-card/mobile-security-card-se-1-0>. Acesso em
20 abr. 2010
HASHIMI, Sayed; KOMATINENI, Satya; MACLEAN, Dave. Pro Android, 2. ed. Nova
Iorque: Apress, 2010. 464p.
KATZ, Jonathan; LINDELL, Yehuda. Introduction to Modern Cryptography. Chapman &
Hall/CRC Press, August 2007. 185p
42
LIPSMAN, Andrew. comScore Reports January 2010 U.S. Mobile Subscriber Market Share.
comScore
Inc.,
Reston
-
VA,
10
mar.
2010.
Disponível
em:
<http://www.comscore.com/Press_Events/Press_Releases/2010/3/comScore_Reports_January
_2010_U.S._Mobile_Subscriber_Market_Share>. Acesso em: 25 mar. 2010.
LUBBE, Jan A. C. Van Der, Basic Methods of Cryptography, Cambridge Press, 1997.
MALYKHINA, Elena. Analysis: How Smartphone Platforms Compare, Information Week, 20
jan.
2007.
Disponível
em:
<http://www.informationweek.com/software/showArticle.jhtml?articleID=196902226>.
Acesso em: 05 abr. 2010
MENDONÇA, Aderval. Para onde vão os Sistemas Operacionais moveis, Amsyst Soluções
Móveis, 1 mar. 2007. Disponível em: <http://www.devmedia.com.br/articles/post-4568-Paraonde-vao-os-Sistemas-Operacionais-moveis.html>. Acesso em: 05 abr. 2010
M-LEANING. a educação com mobilidade. Senac, São Paulo, out. 2007. Disponível em:
<http://www.ead.sp.senac.br/newsletter/outubro07/ead.asp?nome=tecnologia>. Acesso em:
25 mar. 2010.
NUNES, Délio Silva, Criptografi, Universidade Federal do Rio de Janeiro, 4 nov. 2007.
Disponivel em:
<http://www.gta.ufrj.br/grad/07_2/delio/Criptografia.html> Acesso em 15
abr. 2010.
PALM.
About
Palm,Palm,
Inc.,
Disponível
em
<http://www.palm.com/us/company/about.html>. Acesso em 10 abr. 2010.
RIGOLIN, Gustavo; RIEZNIK, Andrés Anibal. Introdução à criptografia quântica, Instituto
de Física Gleb Wataghin, Universidade Estadual de Campinas, 16 jun 2005. Disponível em:
<http://www.scielo.br/pdf/rbef/v27n4/a04v27n4.pdf> Acesso em: 15 abr 2010.
RIM. About Research In Motion, Research In Motion Limited. Disponível em: <
http://na.blackberry.com/eng/company.jsp> Acesso em 15 abr. 2010.
43
RIM.
Stored
Data
Security,
Research
In
Motion
Limited.
Disponível
<http://na.blackberry.com/eng/ataglance/security/features.jsp#tab_tab_stored_data>
em:
Acesso
em 15 abr. 2010.
ROGERS, Rick; LOMBARDO, John. Android Application Development. 1ª ed. Cambridge:
O'Reilly Media, 2009. 336p.
SD ASSOCIATION. Developers - Standard Size SD Card, SD Association. Disponível em:
<http://www.sdcard.org/developers/tech/sdcard>. Acesso em 15 abr. 2010.
SKRENTA, Rich. We Worship MD5, The God of Hash, Skrentablog, 16 ago. 2007
Disponível em: <http://www.skrenta.com/2007/08/md5_tutorial.html>. Acesso em 10 abr.
2010.
SYMBIAM,
The
History
of
Symbian,
Symbian
Foundation,
Disponível
em:
<http://www.symbian.org/about-us/history-symbian> Acesso em 10 abr. 2010.
TELECO. Mercado mundial de smartphones e sistemas operacionais móveis. Teleco, 12 mar.
2010. Disponível em: <http://www.teleco.com.br/smartphone.asp>. Acesso em 12 mar. 2010.
TKOTZ, Viktoria. Criptografia - Segredos Embalados para Viagem, Novatec, 2005.
XDA-FORUM, Android Development and Hacking, XDA - Developers, Disponível em: <
http://forum.xda-developers.com/forumdisplay.php?f=564>. Acesso em: 02 out. 2010.
ZMOGINSKI, Felipe. HTC vende 1 milhão de celulares com Android,Info Plantão, São
Paulo,
01
dez.
2008.
Disponível
em:
<http://info.abril.com.br/aberto/infonews/122008/01122008-45.shl>. Acesso em: 21 abr.
2010.
44
APÊNDICE A – TELAS DO ANDCRYPT
A1 – LOGIN
A Figura 10 é a representação da tela de login utilizada para acessar a lista de arquivos
do MicroSD.
Figura 10 - Tela de Login. Fonte: O AUTOR (2010)
45
A2 – CRIAÇÃO DE USUÁRIO
A Figura 11 demonstra a tela de criação de um novo usuário do aplicativo.
Figura 11 - Tela de Criação de Usuário. Fonte: O AUTOR (2010)
46
A3 – ENCRIPTAÇÃO
A Figura 12 representa o processo de encriptação de um arquivo, pode se notar que o
arquivo selecionado antes do processo de encriptação teve o seu nome modificado de
“English Gramar In Use 3Rd Edition.pdf” para “English Gramar In Use 3Rd
Edition.crypt.pdf” após a encriptação, para que o usuário possa identificar quais arquivos
estão encriptados apenas observando o seu nome.
Figura 12 - Exemplo de encriptação de um arquivo. (O AUTOR, 2010)
47
APÊNDICE B – FLUXOGRAMAS
B1 – LOGIN
B2 – LISTAR DIRETÓRIOS
48
B3 – ENCRIPTAR
49
B4 – DECRIPTAR
Download

Aplicação de criptografia para segurança de microsd para android