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