CURSO DE TECNOLOGIA EM SEGURANÇA DA INFORMAÇÃO ELI DE FARIA JUNIOR CAIO MONTURIL DESENVOLVIMENTO DE APLICATIVO ESTEGANOGRÁFICO PARA DISPOSITIVOS MÓVEIS (EstegApp) BRASÍLIA – DF 2014 ELI DE FARIA JUNIOR CAIO MONTURIL DESENVOLVIMENTO DE APLICATIVO ESTEGANOGRÁFICO PARA DISPOSITIVOS MÓVEIS (EstegApp) Trabalho de Conclusão de Curso apresentado a Faculdades Integradas Promove de Brasília como requisito parcial para obtenção do título de Tecnólogo em Segurança da Informação. Orientador: Prof. MSc Cid Bendahan Cintra. BRASÍLIA – DF 2014 Autores: ELI BATISTA DE FARIA JUNIOR CAIO MONTURIL RÊGO CAVALCANTI Título do Trabalho: DESENVOLVIMENTO DE APLICATIVO ESTEGANOGRÁFICO PARA DISPOSITIVOS MÓVEIS (EstegApp) Trabalho de Conclusão de Curso apresentado a Faculdades Integradas Promove de Brasília como requisito parcial para obtenção do título de Tecnólogo em Segurança da Informação. Aprovado em __/__/____: _______________________________________ Orientador Prof. MSc. Cid Bendahan Coelho Cintra Faculdades Integradas Promove de Brasília _______________________________________ Avaliadora Prof. ª Dr.ª Maria José de Oliveira Faculdades Integradas Promove de Brasília _______________________________________ Avaliador Prof. MSc. Fernando Antônio Brito Fernandes Miranda Faculdades Integradas Promove de Brasília Dedicatória A nossas famílias e todos que um dia contribuíram com nossa formação. EPÍGRAFE “O homem que remove uma montanha começa carregando as pequenas pedras”. (William Harrison Faulkner) RESUMO As mídias digitais estão cada vez mais presentes na vida social, resultando num considerável aumento na troca de informações. As tecnologias móveis facilitaram esta popularização, e cada vez mais pessoas necessitam de proteção para o envio informações dentre os meios eletrônicos. A esteganografia digital, um dos ramos da criptologia, é uma das técnicas que podem oferecer tal segurança. O foco deste trabalho é o desenvolvimento de um produto de software esteganográfico capaz de permitir o envio de informações sigilosas de forma imperceptível, e possa ser utilizado com rapidez e praticidade tanto pelo remetente quanto pelo destinatário. Para isso apresenta a pesquisa teórica referentes a todos os temas abordados, a documentação e modelagem do sistema, e por fim o produto resultante; um aplicativo para plataforma Android, que faça uso da técnica de esteganografia digital, permitindo que o usuário possa enviar mensagens escondidas em imagens, sem que as mesmas sejam percebidas. O desenvolvimento de uma aplicação esteganográfica móvel, destaca-se, pois se encontra no contexto das principais importantes tendências atuais, a segurança da informação e a nova tecnologia dos dispositivos móveis. Palavras chaves: esteganografia, criptologia, segurança da informação, Android. ABSTRACT The digital media are becoming increasingly present in our social life, resulting in a considerable increase in the information exchange. The mobile technologies made this increase easier, and increasingly people need protection when sending information through electronic channels. The digital steganography, a branch from the cryptology, is a technique that can offer such security. The main focus of this work is the development of a steganographic software product capable of sending confidential information seamlessly and which can be used in a fast and practical way by both the sender and the receiver. In order to do that, the work presents the theoretical research referring to all mentioned subjects, the documentation, the system model, and, lastly, the resulting product; an application for the Android platform which uses the digital steganography, allowing the user to send hidden messages through images, without them being perceived in any way. The development of a mobile steganography application stand out because it finds itself in context of an important trend in the present day, the information security and the new technology of mobile devices. Keywords: steganography, cryptology, information security, Android. Lista de Ilustrações Figura 1 – Classe em notação UML............................................................................19 Figura 2 – Objeto em notação UML.............................................................................19 Figura 3 – Atributos em notação UML.........................................................................20 Figura 4 – Métodos em notação UML..........................................................................20 Figura 5 – Diagrama de Classes.................................................................................23 Figura 6 – Diagrama de Sequência.............................................................................24 Figura 7 – Diagrama de Caso de Uso..........................................................................24 Figura 8 – Diagrama de Máquina de Estado...............................................................25 Figura 09 – Exemplo de código XML...........................................................................30 Figura 10 – As divisões de software do Android..........................................................32 Figura 11 – Diferenças entre Dalvik e ART..................................................................34 Figura 12 – Exemplo de tela........................................................................................35 Figura 13 – Exemplo de código XML em um aplicativo................................................36 Figura 14 – Diagrama Geral de Casos de Uso............................................................55 Figura 15 – Diagrama de Caso de Uso Esteganografar..............................................56 Figura 16 – Diagrama de Caso de Uso Deseteganografar..........................................62 Figura 17 – Diagrama Geral de Estados.....................................................................66 Figura 18 – Diagrama Geral de Classes de Análise....................................................68 Figura 19 – Diagrama de Classes de Análise com fronteiras e entidade.....................68 Figura 20 – Diagrama de sequência Fluxo Esteganografar.........................................69 Figura 21 – Diagrama de sequência Fluxo Desesteganografar...................................69 Figura 22 – Tela de opções iniciais.............................................................................74 Figura 23 – Primeira tela Esteganografar....................................................................75 Figura 24 – Segunda tela Esteganografar...................................................................76 Figura 25 – Terceira tela Esteganografar....................................................................77 Figura 26 – Tela Desesteganografar...........................................................................78 Lista de Quadros Quadro 1 – Descrição do problema ............................................................................44 Quadro 2 – Sentença de posição do produto..............................................................44 Quadro 3 – Resumo dos Envolvidos...........................................................................46 Quadro 4 – Resumo dos Clientes................................................................................46 Quadro 5 – Perfil do Envolvido Desenvolvedor e Analista...........................................47 Quadro 6 – Perfil do Envolvido Usuário.......................................................................48 Quadro 7 – Principais Necessidades dos Envolvidos ou dos Clientes.........................48 Quadro 8 – Quadro de Especificação do Requisito ER aF EstegApp.001...................50 Quadro 9 – Quadro de Especificação do Requisito ER aF EstegApp.002...................50 Quadro 10 – Quadro de Especificação do Requisito ER aF EstegApp.003.................51 Quadro 11 – Quadro de Especificação do Requisito ER aF EstegApp.004.................51 Quadro 12 – Quadro de Especificação do Requisito ER aF EstegApp.005.................52 Quadro 13 – Quadro de Especificação do Requisito ER aF EstegApp.006.................52 Quadro 14 – Quadro de Especificação do Requisito ER aF EstegApp.007.................53 Quadro 15 – Quadro de Especificação do Requisito ER aF EstegApp.008.................53 Quadro 16 – Fluxo de Eventos do Caso de Uso Esteganografar.................................56 Quadro 17 – Fluxo de Eventos do Caso de Uso Selecionar imagem...........................58 Quadro 18 – Fluxo de Eventos do Caso de Uso Inserir mensagem.............................60 Quadro 19 – Fluxo de Eventos do Caso de Uso Inserir senha.....................................61 Quadro 20 – Fluxo de Eventos do Caso de Uso Desesteganografar...........................62 Quadro 21 – Fluxo de Eventos do Caso de Uso Selecionar imagem esteganografada.........................................................................................................64 Quadro 22 – Fluxo de Eventos do Caso de Uso Autenticar senha...............................65 SUMÁRIO 1. APRESENTAÇÃO ......................................................................................................... 13 1.1. Introdução ................................................................................................................................ 13 1.2. Justificativa .............................................................................................................................. 13 1.3. Objetivos .................................................................................................................................. 14 1.3.1. Objetivo Geral .................................................................................................................. 14 1.3.2. Objetivos Específicos ..................................................................................................... 14 1.4. Metodologia ............................................................................................................................. 14 2. REFERENCIAL TEÓRICO ........................................................................................... 16 2.1. Informação ............................................................................................................................... 16 2.2. Segurança da Informação ...................................................................................................... 17 2.3. Orientação a Objetos .............................................................................................................. 18 2.3.1. The Unified Modeling Language (UML) ......................................................................... 21 2.3.1.1. Os Diagramas da UML .............................................................................................. 22 2.4. Processo de Desenvolvimento de Software ......................................................................... 26 2.5. Modelo Prático para Desenvolvimento de Software ............................................................ 26 2.6. A linguagem de programação Java ....................................................................................... 27 2.7. Extensible Markup Language (XML)...................................................................................... 29 2.8. O Sistema Operacional Android ............................................................................................ 31 2.9. O Java no Android................................................................................................................... 33 2.10. O XML no Android ............................................................................................................... 34 2.11. Desenvolvendo para Android ............................................................................................ 37 2.11.1. Software Development Kit – SDK .................................................................................. 37 2.11.2. Eclipse .............................................................................................................................. 37 2.11.3. Android Development Tools – ADT ............................................................................... 37 2.11.4. Android Virtual Device – AVD ........................................................................................ 37 2.12. Esteganografia ..................................................................................................................... 38 2.12.1. Esteganografia Digital..................................................................................................... 39 2.13. RGB – O sistema aditivo ..................................................................................................... 41 3. ANÁLISE DO APLICATIVO ......................................................................................... 42 3.1. Documento de Visão ............................................................................................................... 42 3.1.1. Introdução ...................................................................................................................... 42 3.1.1.1. Finalidade .................................................................................................................. 42 3.1.1.2. Definições, Acrônimos e Abreviações ....................................................................... 42 3.1.1.3. Referências ............................................................................................................... 42 3.1.2. Posicionamento ............................................................................................................. 43 3.1.2.1. Oportunidade de Negócios........................................................................................ 43 3.1.2.2. Descrição do Problema ............................................................................................. 44 3.1.2.3. Sentença de Posição do Produto .............................................................................. 44 3.1.2.4. Escopo do Produto .................................................................................................... 45 3.1.3. Descrições dos Envolvidos e dos Clientes.................................................................... 45 3.1.3.1. Demografia do Mercado ............................................................................................ 45 3.1.3.2. Resumo dos Envolvidos ............................................................................................ 46 3.1.3.3. Resumo dos Clientes ................................................................................................ 46 3.1.3.4. Ambiente dos Clientes .............................................................................................. 47 3.1.3.5. Perfis dos Envolvidos ................................................................................................ 47 3.1.3.6. Principais Necessidades dos Envolvidos ou dos Clientes ........................................ 48 3.1.3.7. Alternativas e Concorrência ...................................................................................... 49 3.1.4. Restrições ...................................................................................................................... 49 3.2. Especificações de Requisitos ................................................................................................ 50 3.2.1. ER aF EstegApp.001 ........................................................................................................ 50 3.2.2. ER aF EstegApp.002 ........................................................................................................ 50 3.2.3. ER aF EstegApp.003 ........................................................................................................ 51 3.2.4. ER aF EstegApp.004 ........................................................................................................ 51 3.2.5. ER aF EstegApp.005 ........................................................................................................ 52 3.2.6. ER aF EstegApp.006 ........................................................................................................ 52 3.2.7. ER aF EstegApp.007 ........................................................................................................ 53 3.2.8. ER aF EstegApp.008 ........................................................................................................ 53 3.3. Descrição dos Casos de Uso e Atores ................................................................................. 54 3.3.1. Casos de Uso ................................................................................................................... 54 3.3.1.1. Selecionar Imagem.................................................................................................... 54 3.3.1.2. Inserir mensagem ...................................................................................................... 54 3.3.1.3. Inserir senha .............................................................................................................. 54 3.3.1.4. Capturar imagem fotográfica ..................................................................................... 54 3.3.1.5. Esteganografar .......................................................................................................... 54 3.3.1.6. Desesteganografar .................................................................................................... 55 3.3.1.7. Selecionar imagem esteganografada ........................................................................ 55 3.3.1.8. Autenticar senha ........................................................................................................ 55 3.3.2. Descrição dos Atores...................................................................................................... 55 3.3.2.1. Usuário ...................................................................................................................... 55 3.4. Diagrama Geral de Casos de Uso .......................................................................................... 55 3.5. Detalhamento dos Casos de Uso .......................................................................................... 56 3.5.1. UC[01] - ESTEGANOGRAFAR ............................................................................................... 56 3.5.2. UC[02] - SELECIONAR IMAGEM ............................................................................................ 58 3.5.3. UC[03] - INSERIR MENSAGEM .............................................................................................. 60 3.5.4. UC[04] - INSERIR SENHA ..................................................................................................... 61 3.5.5. UC[05] - DESESTEGANOGRAFAR ......................................................................................... 62 3.5.6. UC[06] - SELECIONAR IMAGEM ESTEGANOGRAFADA ............................................................ 64 3.5.7. UC[07] - AUTENTICAR SENHA .............................................................................................. 65 3.6. Diagrama Geral de Estados .................................................................................................... 66 3.7. Classes de Análise .................................................................................................................. 67 3.7.1. Detalhamento das Classes de Análise .......................................................................... 67 3.7.1.1. Classe de Fronteira 1 - Tela Opções ........................................................................ 67 3.7.1.2. Classe de Fronteira 2 - Tela Esteganografar ............................................................ 67 3.7.1.3. Classe de Fronteira 2 - Tela Desesteganografar ...................................................... 67 3.7.1.4. Classe de Controle Esteganografia ........................................................................... 67 3.7.1.5. Classe de Entidade Imagem ..................................................................................... 68 3.7.2. Diagrama Geral de Classes ............................................................................................ 68 3.7.3. Diagrama de Classes com fronteiras e entidade ......................................................... 68 3.8. Diagrama de Sequência .......................................................................................................... 69 3.8.1. Diagrama de sequência Fluxo Esteganografar ............................................................ 69 3.8.2. Diagrama de sequência Fluxo Desesteganografar ...................................................... 69 4. CONCLUSÃO ................................................................................................................. 70 REFERENCIAS ..................................................................................................................... 71 APÊNDICES ........................................................................................................................... 74 13 CAPÍTULO I 1. APRESENTAÇÃO 1.1. Introdução Com a popularização do uso dos meios de comunicação digital, surgiu uma grande demanda por maneiras de garantir o sigilo das informações trocadas. A esteganografia, uma das áreas de estudo da criptologia, pode ser definida como o estudo das técnicas de escrita escondida. Foi utilizada por milênios até ser adaptada para sua versão digital, considerada a mais segura e confiável. A utilização de um sistema baseado em computadores que realize a esteganografia digital de maneira rápida e portátil é preferível uma vez que comunicações instantâneas são praticamente exigidas nos dias de hoje. Diante desse contexto, este trabalho apresenta a análise e o desenvolvimento de um aplicativo que faça a esteganografia digital, escondendo informações de texto em imagens. Projetado para o Android, o principal sistema operacional para dispositivos móveis, permite o envio das informações ocultas na imagem. 1.2. Justificativa É de suma importância a preocupação em se manter o sigilo das informações através dos meios de comunicação. Essa necessidade agrava-se nos tempos atuais devido a popularização das comunicações eletrônicas. O ato de ocultar informações em imagens, utilizando esteganografia digital, possibilita uma transmissão de dados imperceptível e relativamente confiável. 14 Destaca-se, a comodidade de ser feito num sistema operacional de dispositivos móveis, que dá ao usuário a opção de fotografar em tempo real a imagem que será utilizada no processo esteganográfico. Além das outras praticidades e facilidades oferecidas pelo mesmo, que geralmente funciona num aparelho portátil, com câmera de alta resolução, conexão móvel a internet e armazenamento interno. 1.3. Objetivos 1.3.1. Objetivo Geral Desenvolver um aplicativo que realize a técnica de esteganografia digital em plataforma Android. 1.3.2. Objetivos Específicos Pesquisar sobre o desenvolvimento de aplicação na plataforma Android. Elaborar a documentação necessária para a análise do aplicativo; Desenvolver e testar o protótipo do EstegApp. 1.4. Metodologia Primeiramente foi feita uma pesquisa, e depois o levantamento de todo material bibliográfico, sítios da internet, livros e conteúdo acadêmico sobre: esteganografia, Java, XML, Android, o padrão de cores RGB, UML e Segurança da Informação. Tudo com a finalidade de alicerçar teoricamente o trabalho. Em seguida, produziu-se a documentação do aplicativo baseado no Modelo Prático para Desenvolvimento de Software (PRISM), que segue alguns dos conceitos e diagramas de modelagem padronizados pela UML. A documentação do aplicativo facilitou sua implementação. Para tanto utilizouse a técnica LSB de esteganografia digital, conhecimentos da linguagem de 15 programação Java e desenvolvimento orientado a objetos, e por fim, as particularidades da plataforma Android. O que resultou no protótipo do software EstegApp, que encontra-se publicado de forma gratuita na Play Store, loja de aplicativos do Google. 16 CAPÍTULO II 2. REFERENCIAL TEÓRICO 2.1. Informação Hoje o cuidado que se tem com a informação é compreendido como extremamente necessário em todos os níveis de uma instituição, uma vez que é tida como um dos mais importantes ativos financeiros. Sendov (1994, pg. 30), dá uma visão de como deve ser interpretado o que venha ser a informação, que possui “[...] diferentes significados em diferentes contextos. Por um lado, é o termo geral para um tipo fundamental de substância, que é armazenada, processada, transmitida e pode ter diferentes graus de estruturação”. É transmitida de forma “[...] epimaterial. É sempre transportada por um meio material, mas não é idêntica ao transportador”. A norma ABNT NBR ISO/IEC 27002 (2005, p. x), define informação como “[...] um ativo que, como qualquer outro ativo importante, é essencial para os negócios de uma organização e consequentemente necessita de ser adequadamente protegida”. E que pode existir de qualquer forma “[...] impressa ou escrita em papel, armazenada eletronicamente, transmitida pelo correio ou por meios eletrônicos, apresentada em filmes ou falada em conversas”. “Eras” é como são chamadas as épocas dos diferentes estados em que se encontravam o desenvolvimento e o conhecimento humano. Sendov (1994), explica porque atualmente a humanidade está na era da informação: É evidente que estamos em uma nova fase do desenvolvimento humano, que deve ser chamada Era da Informação. Não porque nas eras anteriores a informação deixasse de desempenhar seu papel na 17 sociedade, pelo contrário. Seres humanos sempre precisaram e consumiram informação. A necessidade de informação para o desenvolvimento do ser humano é tão importante quanto alimento e água. Mas na era da informação, está se tornou um dos mais importantes recursos econômicos. (SENDOV, 1994, p. 32) Logo, é simples entender por que a segurança da informação é crucial em todas as organizações, uma vez que pode-se definir informação como sendo o conhecimento produzido por ela. O “[...] conhecimento é um tipo de informação na qual diferentes partes estão conectadas entre si, ou seja, informação suprida de estrutura” (SENDOV, 1994, p. 31). 2.2. Segurança da Informação Trata-se de um termo abrangente que diz respeito à proteção de dados e informação, tanto institucionais como pessoais. A Assessoria de Informática da Secretaria de Estado da Defesa Civil (ASSINFO), diz que segurança da informação possui relação com “[...] proteção de um conjunto de dados, no sentido de preservar o valor que possuem para um indivíduo ou uma organização”. Define as características básicas como sendo “confidencialidade, integridade, disponibilidade e autenticidade”, e esclarece que não está “[..] restrita somente a sistemas computacionais, informações eletrônicas ou sistemas de armazenamento”. Apesar da ASSINFO adicionar como básico o atributo “autenticidade”, é comum encontrar autores que incluem apenas os três primeiros elementos da lista, o que são chamados de “a tríade da Segurança da Informação”. Definidos por Lyra (2008, p. 3 e 4) como: Confidencialidade: capacidade de um sistema de permitir que alguns usuários acessem determinadas informações ao mesmo tempo em que impede que outros, não autorizados, a vejam. Integridade: a informação deve estar correta, ser verdadeira e não estar corrompida. 18 Disponibilidade: a informação deve estar disponível para todos que precisarem dela para a realização dos objetivos empresarias. Vários outros atributos secundários são acrescentados como características básicas da segurança da informação, também definidos por Lyra (2008, p. 4) como: Autenticação: garantir que um usuário é de fato quem alega ser. Legalidade: garantir que o sistema esteja aderente à legislação pertinente Privacidade: capacidade de um sistema de manter anônimo um usuário e suas ações [...]. Auditoria: capacidade do sistema de auditar tudo o que foi realizado pelos usuários, detectando fraudes ou tentativas de ataque. A ABNT NBR ISO/IEC 27002 (2005) adiciona como pertencente aos atributos básicos, um quarto elemento chamado irretratabilidade ou não-repúdio, e o define como a “propriedade que garante a impossibilidade de negar a autoria em relação a uma transação anteriormente feita”. 2.3. Orientação a Objetos O modelo de análise orientado a objetos é hoje largamente utilizado. Poder analisar e especificar um sistema baseado em computadores, visando os objetos e não as ações, é descrito por vários autores como a principal vantagem em relação aos paradigmas anteriormente utilizados, como, por exemplo, o estrutural e o funcional. Furlan (1998, p. 15), afirma que esta forma de análise proporciona “modularidade de seus elementos podendo-se tomar um subconjunto existente e integrá-lo de maneira diferente em outra parte do sistema”. Esta facilidade de reuso de estruturas, é um dos motivos que fundamenta a atual grande aceitação deste paradigma. 19 Algumas características básicas da análise orientada a objetos, todas definidas por Sbrocco (2011) são: Classes: O termo classe é utilizado [...] para descrever uma estrutura modular que contém propriedades estáticas e dinâmicas de elementos que podem ser manipulados por um software1. A figura 1 representa uma Classe em notação UML. Figura 1 – Classe em notação UML. Fonte: Sbrocco (2011). Objetos: Sob o ponto de vista da computação, objeto pode ser definido como um conjunto de operações encapsuladas (métodos) somadas a um estado (atributos). A figura 2 trata de uma representação de Objeto em notação UML. Figura 2 – Objeto em notação UML. Fonte: Sbrocco (2011). 1 Programa de computador. 20 Atributos: [...] a maioria dos objetos físicos [...] possuem características próprias, tais como forma, peso, cor, tipo de material etc. Ao transportar essa percepção para o paradigma orientado a objetos, pode-se também reconhecer tais características, que são denominadas “atributos”. [...] Assim, atributos são também considerados elementos que diferenciam objetos presentes em uma classe, representados por dados ou informações de estado. A figura 3 exemplifica os atributos em notação UML. Figura 3 – Atributos em notação UML. Fonte: Sbrocco (2011). Métodos: Os métodos (ou funções) correspondem às descrições de operações que um objeto executa quando recebe uma mensagem. [...] Devido às suas características, os métodos indicam comportamentos dinâmicos de uma classe ou objeto, sendo responsáveis pelo controle ou acesso aos atributos existentes. A figura 4 exemplifica os métodos em notação UML. Figura 4 – Métodos em notação UML. Fonte: Sbrocco (2011). 21 Um objeto trata de uma representação especifica de algo. Uma classe é a estrutura que este objeto deve ter, ou seja, um objeto é a especificação de uma classe. Furlan (1998), exemplifica um objeto como: [...] uma ocorrência específica (instância) de uma classe e é similar a uma entidade/tabela no modelo relacional somente até o ponto onde representa uma coleção de dados relacionados com um tema em comum. [...] Um objeto possui tudo o que é necessário para conhecer a si próprio – há o encapsulamento de operações e atributos atribuindo-lhe vida própria. (FURLAN, 1998, p. 16 e 17) 2.3.1. The Unified Modeling Language (UML) Hoje, a principal forma utilizada para análise, modelagem e documentação de um sistema orientado a objetos é a Unified Modeling Language (UML) em português Linguagem de Modelagem Unificada. Furlan (1998) explica que a UML foi idealizada por Grady Booch, James Rumbaugh e Ivar Jacobson através da Rational Corporation. A primeira versão foi desenvolvida por um grande esforço em conjunto, que compôs mais de 30 importantes instituições entre elas: Microsoft, Hewlett-Packard, Oracle, IBM, Texas Instruments Software. Tendo sua primeira versão lançada em janeiro de 1997 é totalmente livre e não proprietária. Por fim, Furlan (1998, p. 33) acrescenta que não se trata de “[...] uma simples padronização em busca de uma notação unificada,” e sim uma forma de linguagem padrão para especificar, visualizar, documentar e construir artefatos de um sistema e poder ser utilizada com todos os processos ao longo do ciclo de desenvolvimento e através de diferentes tecnologias de implementação. Buscou-se unificar as perspectivas entre os diversos tipos de sistemas e fases de desenvolvimento de forma que permitisse levar adiante determinado projetos que antes não eram possíveis pelos métodos existentes. (FURLAN, 1998, p. 33) 22 Por tanto, compreende-se que a UML não se trata de um modelo conceitual para análises, e sim uma linguagem que utiliza vários tipos de padronização e notações para documentar e criar diagramas gráficos que segue o modelo orientado a objetos. 2.3.1.1. Os Diagramas da UML Atualmente a última versão oficial, lançada em agosto de 2011, é a 2.4.1. Por manter-se em desenvolvimento constante, algumas versões descrevem certos tipos de diagramas que não são usadas em outras, a atual por exemplo, possui alguns diagramas introduzidos na versão 2.4, são eles: Modelo, Manifestação e Arquitetura de Rede. Estes não fazem parte da versão base, chamada de UML Superestrutura versão 2.0. Como dito por Fowler (2005), a UML 2.0 descreve uma lista com apenas 13 tipos de diagramas oficias. Afirma também que “embora esses tipos de diagramas sejam a maneira como muitas pessoas encaram a UML, os autores não veem os diagramas como parte central da UML” (FOWLER, 2005, p. 33). Abaixo segue a definição de quatro deles. Diagrama de Classes: É um diagrama que mostra um conjunto de classes, interfaces e colaborações e seus relacionamentos (BOOCH, 2012 p. 117). Descreve os tipos de objetos presentes no sistema e os vários tipos de relacionamentos estáticos existentes entre eles. Também mostram como as propriedades e as operações de uma classe e as restrições que se aplicam à maneira como os objetos estão conectados (FOWLER, 2005, p. 52). A figura 5 trata de um exemplo de diagrama de Classes. 23 Figura 5 – Diagrama de Classes Fonte: uml-diagrams.org Diagrama de Sequência ou Interação: Um diagrama de interação mostra uma interação formada por um conjunto de objetos e seus relacionamentos, incluindo as mensagens que poderão ser trocadas entre eles. Um diagrama de sequências é um diagrama de interação que dá ênfase à ordenação temporal de mensagens (BOOCH, 2012 p. 275). Descrevem como grupos de objetos colaboram em algum comportamento. Demonstram a interação, exibindo cada participante com uma linha de vida, que ocorre verticalmente na página e a ordem das mensagens, lendo a página de cima para baixo (FOWLER, 2005, p. 67). A figura 6 mostra um diagrama de Sequência. 24 Figura 6 – Diagrama de Sequência. Fonte: uml-diagrams.org Diagrama de Casos de Uso: Um diagrama de caso de uso é um diagrama que mostra um conjunto que mostra um conjunto de casos de uso e atores e seus relacionamentos (BOOCH, 2012 p. 264). [...] São importantes para visualizar, especificar e documentar o comportamento de um elemento (BOOCH, 2012 p. 263). Casos de uso representam uma visão externa do sistema. Descrevem as interações típicas entre os usuários e o próprio sistema, fornecendo uma narrativa sobre como o sistema é utilizado (FOWLER, 2005, p. 118). A figura 7 mostra um diagrama de Caso de Uso de Negócio. Figura 7 – Diagrama de Caso de Uso. Fonte: uml-diagrams.org 25 Diagrama de Máquina de Estado: Uma máquina de estados é um comportamento que especifica as sequências de estados pelas quais um objeto passa durante seu tempo de vida em resposta a esses eventos (BOOCH, 2012 p. 331). Começa com o pseudo-estado inicial do objeto controlador, logo mais segue com movimentos de transição entre os diferentes estados (FOWLER, 2005, p. 110). A figura 8 exemplifica um diagrama de Máquina de Estado. Figura 8 – Diagrama de Máquina de Estado. Fonte: publib.boulder.ibm.com Com uma diversidade de maneiras e padrões para se analisar e documentar, somados com todos os diferentes tipos de diagramas, a UML proporciona aos analistas a possibilidade de criar especificações com alta qualidade e organização, mesmo tratando-se de sistemas grandes e complexos. 26 2.4. Processo de Desenvolvimento de Software Um processo de desenvolvimento de software ou simplesmente processo de software “é um conjunto de atividades relacionadas que levam à produção de um produto de software. Essas atividades podem envolver o desenvolvimento [...] a partir do zero em uma linguagem padrão de programação [...]” (SOMMERVILLE, 2011, p. 18). Dentre os vários tipos de processos existentes, Sommerville (2011, p. 18) afirma que apesar de diferentes, “todos devem incluir quatro atividades fundamentais para a engenharia de software”. Abaixo segue a lista destas atividades descritas por Sommerville (2011, p. 18). Especificações de software. A funcionalidade do software e as restrições a seu funcionamento devem ser definidas. Projeto e implementação de software. O software deve ser produzido para atender às especificações. Validação de software. O software deve ser validado para garantir que atenda às demandas do cliente. Evolução de software. O software deve evoluir para atender às necessidades de mudança dos clientes. 2.5. Modelo Prático para Desenvolvimento de Software O Modelo Prático para Desenvolvimento de Software (PRISM) – trata-se de um processo de desenvolvimento de software interativo, idealizado por Cardoso (2003). O autor explica, que o modelo, visualiza os diferentes tipos de diagramas da UML como base central do desenvolvimento, utilizando-os como ferramentas de implementação e não apenas como documentação de projeto, além de facilitar o trabalho da engenharia de software, pois encaminha e monitora cada fase de desenvolvimento. Como afirma Cardoso (2003), 27 o PRISM propõe uma forma de desenvolvimento criada principalmente do prisma do desenvolvedor, apresentando, de forma clara, a sequência do trabalho a ser desenvolvido, ou seja, onde começa e onde termina o trabalho e quais são as etapas a serem seguidas. (CARDOSO, 2003, p. 71) As 12 etapas, em ordem, propostas por Cardoso (2003) como uma sequência de desenvolvimento – que se seguida “permite identificar o(s) problema(s) que suscitou(ram) a necessidade de uma solução e desenvolver um sistema com prazo, custo e qualidade adequados” (CARDOSO, 2003, p. 71) – são: Problema Levantamento e análise de requisitos Modelagem de use case Escolha da(s) use case(s) a ser(em) trabalhada(s) Modelagem de classes de análise Modelagem dinâmica utilizando o diagrama de sequência Modelagem de classes de projeto Geração de código Testes Sistema Modelagem de sistemas de tempo real Modelagem de pacotes/componentes Com isso, o PRISM se revela um método simples e interativo, geralmente recomendado a pequenos grupos ou empresas. 2.6. A linguagem de programação Java Java, é uma linguagem de programação criada com base em outra linguagem, chamada C++, que por sua vez se desenvolveu a partir da linguagem C. Surgiu numa 28 época de plena ascensão da orientação à objetos e da disseminação da Internet, por consequência, implementa todos os conceitos e características relacionados a esses. Schildt (2013, pg. XIV) diz que atualmente Java “é uma das mais importantes e amplamente usadas linguagens de programação de computadores do mundo, porque é a linguagem predominante na Internet”. Diz também, o autor que “ela revolucionou a programação, mudando a maneira de pensarmos tanto sobre a forma, quanto sobre a função de um programa”. (SCHILDT, 2013, p. 2). No website2 oficial da linguagem Java encontra-se algumas estatísticas sobre a massiva adoção desta linguagem. 97% dos Desktops3 Corporativos executam o Java. 89% dos Desktops (ou Computadores) nos EUA Executam Java. 3 Bilhões de Telefones Celulares Executam o Java. 9 Milhões de Desenvolvedores de Java em Todo o Mundo. “Concebida por James Gosling, Patrick Naughton, Chris Warth, Ed Frank e Mike Sheridan na Sun Microsystems, em 1991. Inicialmente, a linguagem chamava “Oak”, mas foi renomeada como “Java” em 1995” (SCHILDT, 2013, p. 3). A Sun Microsystems – incluindo Java - foi comprada pela Oracle em janeiro de 2010. O fato de ser lançado na mesma época em que a Internet se popularizava e necessitava cada vez mais de tecnologias para dinamizar seu conteúdo, é um dos motivos da rápida adoção da linguagem em suas versões desktop e web. Uma das características que ajudou a dinamizar os conteúdos da Internet, é chamado de Java Applets. Outras duas características sempre lembradas por vários autores são a portabilidade e a segurança, ambas possíveis graças ao uso do bytecode4. 2 Java Applets: Um applet é um tipo especial de programa Java projetado para ser transmitido pela Internet e executado automaticamente por um navegador Web compatível com Página na internet. Computador tradicional (de mesa). 4 Código Java pronto para ser interpretado. 3 29 Java. [...] Ele é baixado sob demanda, sem nenhuma interação com o usuário. Se o usuário clicar em um link que contém um applet, esse será automaticamente baixado e executado no navegador. (SCHILDT, 2013, p. 5) Segurança: [...] um vírus pode coletar informações privadas, como números de cartão de crédito, saldos de conta bancária e senhas, pesquisando o conteúdo do sistema local de arquivos do computador. Para Java permitir que o applet fosse seguramente baixado e executado no computador cliente, era necessário impedir que ele iniciasse esse tipo de ataque. A linguagem conseguiu fornecer essa proteção confinando o applet ao ambiente de execução Java e negando acesso a outras partes do computador. (SCHILDT, 2013, p. 5) Portabilidade: O bytecode é um conjunto de instruções altamente otimizado projetado para ser executado pelo sistema de tempo de execução Java, que se chama Máquina Virtual Java (JVM, Java Virtual Machine). [...] Converter um programa Java em bytecode facilita muito a execução de um programa em uma variedade de ambientes, porque só a JVM tem que ser implementada para cada plataforma. Uma vez que o pacote de tempo de execução estiver presente em um determinado sistema, qualquer programa Java poderá ser executado nele. (SCHILDT, 2013, p. 6) 2.7. Extensible Markup Language (XML) Em português, Linguagem de Marcação Extensível, surgiu na década de 1990 e permanece muito utilizada até hoje. “Apesar do seu nome, XML não é uma linguagem de marcação; em vez disso, é um kit de ferramentas para criação, a modelagem e o uso de linguagens de marcação” (RAY, 2001, p. VII). A necessidade de uma padronização da grande quantidade de informação gerada naquela época – e sabidamente também de épocas futuras – incentivou a pesquisa e criação de linguagens de marcação. Ray (2001, p. 2) conceitua uma linguagem de marcação como “um conjunto de símbolos que pode ser colocado no texto de um documento para demarcar e rotular as partes desse documento”. Diz também que a marcação é importante para os documentos eletrônicos porque eles são processados por programas de computador. Se um documento não tiver rótulos ou limites, então um programa não saberá como tratar 30 uma parte do texto para distingui-la de qualquer outra parte. (RAY, 2001, p. 2) Abaixo, a figura 09, demonstra um exemplo da utilização de um código com marcações especificas, e que segue o estilo XML: Figura 09 – Exemplo de código XML <?xml version="1.0" encoding="UTF-8"?> <note> <to>Tove</to> <from>Jani</from> <heading>Reminder</heading> <body>Don't forget me this weekend!</body> </note> Fonte: w3schools (2014) Algumas características e benefícios do uso da XML, são descritas por Ray (2011, p. 1): A XML pode armazenar e organizar praticamente qualquer tipo de informação em um formato adequado. Como um padrão aberto, a XML não está ligada [...] a qualquer empresa isolada, e nem acoplada a qualquer software em particular. Com o Unicode como seu conjunto de caracteres padrão, a XML aceita um número incrível de sistemas escritos (scripts) e símbolos, desde caracteres rúnicos escandinavos até ideógrafos han chineses. A XML oferece muitas maneiras de verificar a qualidade de um documento, com regras para sintaxe, verificação de vínculo interno, comparação com modelos de documentos e tipos de dados. Com sua sintaxe clara e simples e sua estrutura sem ambiguidades, a XML é fácil de ler e analisar por seres humanos e programas. 31 A XML é facilmente combinada com folhas de estilo para criar documentos formatados em qualquer estilo que você desejar. A pureza da estrutura da informação não atrapalha as conversões de formato. 2.8. O Sistema Operacional Android O sistema operacional Android foi desenvolvido pela Android Inc., adquirida pelo Google5 em julho de 2005. Em novembro de 2007, foi formada a Open Handset Alliance™ - um consórcio composto inicialmente de 34 empresas [...] – para desenvolver o Android, impulsionando a inovação na tecnologia móvel, melhorando a experiência do usuário e reduzindo os custos. (DEITEL, 2013, p. 4) Atualmente se mantém como sistema operacional mais utilizado do mundo, como dito no website oficial do Google: “Os poderosos Androids estão em centenas de milhões de dispositivos móveis em mais de 190 países ao redor do mundo. É a maior base de dispositivos entre todas as plataformas móveis, e ainda continua crescendo [...]”. A facilidade de se adaptar a vários tipos de smartphones6 e tables7 com diferentes níveis de desempenho de hardware8, junto com a grande quantidade de aplicativos9 disponíveis, explica a atual popularidade deste sistema. A estrutura geral do funcionamento do Android, fundamenta-se basicamente na divisão de cinco grandes módulos, são eles: Linux Kernel, Libraries, Android Runtime, Application Framework, Applications. A imagem 10 descreve, com detalhes, todas estas divisões e o que compõe cada uma. 5 Uma das empresas líderes do ramo da tecnologia. Em português, celulares inteligentes. O termo é utilizado para descrever a atual geração de celulares. 7 Dispositivo computacional portátil em forma de prancheta. Atende as necessidades tecnológicas pessoais. 8 Termo que se refere ao equipamento físico (peças ou outros aparelhos) que compõem um computador. 9 Refere-se aos softwares desenvolvidos especificamente para os dispositivos móveis. 6 32 Figura 10 – As divisões de software do Android. Fonte: source.android.com O website oficial do Android na seção em que se dispõem a responder algumas perguntas frequentes, esclarece que o uso do termo "Android Open Source Project" ou "AOSP" serve para “se referir a todas as pessoas, os processos e o código-fonte que compõem o Android”. Sendo este, composto por várias bibliotecas que já eram disponíveis no meio Open Source. Devido à utilização destas bibliotecas e também outros tipos de diferentes tecnologias aplicadas a todos os módulos, tem-se dificuldades para especificar a licença de uso de software que vigora sobre o projeto como um todo. A licença preferida para o Projeto Android Open Source é a Apache Software License, versão 2.0 ("Apache 2.0"), e a maioria do software Android é licenciado com Apache 2.0. Enquanto o projeto vai se esforçando para aderir totalmente à licença preferida, pode haver exceções que são tratadas individualmente. Por exemplo, os patches do kernel do Linux estão sob a licença GPLv2 com outras exceções de sistema, que podem ser encontrados no kernel.org. (ANDROID SOURCE, 2014) 33 O uso do Linux como a base operativa, o Java e o XML, como base de escrita para os softwares adicionais, resumem de forma geral o funcionamento deste sistema. Porém uma notável especificidade, diz respeito a interpretação e execução do código dos aplicativos escritos em Java. Para isso não é utilizado a JVM tradicional e sim uma máquina virtual baseada em registradores própria do Android chamada Dalvik VM. 2.9. O Java no Android Responsável pela interpretação do código Java, “o Dalvik Virtual Machine é o coração do Android. É uma máquina virtual rápida, com compilação em tempo de execução e com bytecode otimizado. Os aplicativos do Android são compilados para Dalvik bytecode e executados na Dalvik VM.” (ANDROID SOURCE, 2014) Basicamente, trata-se de um software criado para executar a tarefa que seria realizada pela JVM na versão tradicional do Java. A máquina virtual Dalvik foi totalmente reescrita e adaptada para funcionar exclusivamente no Android. Apesar de ter sido utilizada desde o início, sabe-se que o mesmo possui perda de desempenho e um considerável consumo desnecessário de recursos, isso incentivou que a atual versão – Android 4.4 "KitKat" – fosse lançada com uma nova opção para execução dos aplicativos, chamado Android Runtime (ART), que ainda encontra-se na versão beta. Android Source (2014) explica que com uma pré-compilação parcial dos aplicativos na hora da instalação – termo em inglês ahead-of-time (AOT) - o ART consegue melhor desempenho na execução dos aplicativos em relação ao Dalvik VM, que compila apenas em tempo de execução – termo em inglês just-in-time (JIT). A figura 11 compara e diferencia a execução das duas versões. 34 Figura 11 – Diferenças entre Dalvik e ART. Fonte: wikipedia Além de uma máquina virtual própria, a versão adaptada do Java para o Android, comumente referida como Android API, possui várias modificações feitas pelo próprio Google (FRIESEN, 2013). Quando empregada estas adaptações, o resultado assemelha-se ao atual Java SE. 2.10. O XML no Android Tudo que for visual, de componentes ou certos tipos de comportamentos, ou seja, tudo que precise ser configurado e não esteja no código Java, estará no código XML. O que for visual entende-se por layout – em português tela – botões, campos de texto etc. 35 O site oficial do Android explica que um aplicativo é composto por mais do que apenas o código - isso requer recursos que são separados do código fonte, como imagens, arquivos de áudio e qualquer coisa relativa à apresentação visual do app. Deve-se definir animações, menus, estilos, cores e layout de interfaces de usuário de atividade com arquivos XML (ANDROID SOURCE, 2014). A imagem 12 exemplifica a tela de um aplicativo Android. Figura 12 – Exemplo de tela. Fonte: Os autores Esta tela é representada pelo código XML, apresentado na figura 13: 36 Figura 13 – Exemplo de código XML em um aplicativo. <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" xmlns:tools="http://schemas.android.com/tools" android:id="@+id/LinearLayout1" android:layout_width="match_parent" android:layout_height="match_parent" android:gravity="center" android:orientation="vertical" android:paddingBottom="@dimen/activity_vertical_margin" android:paddingLeft="@dimen/activity_horizontal_margin" android:paddingRight="@dimen/activity_horizontal_margin" android:paddingTop="@dimen/activity_vertical_margin" tools:context="com.example.teste.MainActivity" > <android.support.v7.widget.Space android:id="@+id/space1" android:layout_width="wrap_content" android:layout_height="wrap_content" /> <android.support.v7.widget.Space android:id="@+id/space2" android:layout_width="wrap_content" android:layout_height="wrap_content" /> <LinearLayout android:layout_width="match_parent" android:layout_height="wrap_content" android:gravity="center" > <Button android:id="@+id/button1" android:layout_width="wrap_content" android:layout_height="wrap_content" android:text="Hello World!" /> </LinearLayout> </LinearLayout> Fonte: Os autores 37 2.11. Desenvolvendo para Android 2.11.1. Software Development Kit – SDK O Software Development Kit – SDK do Android, trata-se de um conjunto de ferramentas que são necessárias para desenvolver nessa plataforma. O kit é disponibilizado completo, já configurado, e com poucas personalizações está pronto para o uso. A versão mais recente pode ser adquirida gratuitamente no website oficial do Android Developers. 2.11.2. Eclipse “O Eclipse é o ambiente de desenvolvimento integrado (IDE – Integrated Development Environment) recomendado para o desenvolvimento para o Android” (DEITEL, 2013, p. 19). “O Eclipse aceita o desenvolvimento em muitas linguagens de programação” (DEITEL, 2013, p. 70), e “permite gerenciar, editar, compilar, executar e depurar aplicativos” (DEITEL, 2013, p. 70). É uma das IDEs mais utilizadas para programação em Java e possui versões para Windows, Mac OS X e Linux. 2.11.3. Android Development Tools – ADT O Plugin ADT (Android Development Tools) para Eclipse – uma extensão para o IDE Eclipse – permite criar, executar e depurar aplicativos Android, exportá-los para distribuição (por exemplo, carrega-los no Android Market) e muito mais. O ADT também contém uma ferramenta de projeto visual de interface gráfica do usuário [...]. (DEITEL, 2013, p. 19) 2.11.4. Android Virtual Device – AVD “O emulador do Android, incluído no SDK do Android, permite executar aplicativos [...] em um ambiente simulado [...]. O emulador exibe uma janela de interface de usuário realista” (DEITEL, 2013, p. 19). Para executar um aplicativo no emulador é necessário antes criar um AVD – em português Dispositivo Virtual do 38 Android – “o qual define as características do dispositivo em que [...] deseja fazer o teste, incluindo hardware, a imagem do sistema, o tamanho da tela, o armazenamento de dados” (DEITEL, 2013, p. 19) etc. 2.12. Esteganografia Uma das formas de se comunicar secretamente é escondendo ou disfarçando a mensagem que se pretende enviar. “Alguns dos primeiros relatos sobre escritas secretas datam de Herótodo, “o pai da história”, de acordo com o filósofo estadista romano Cícero” (SINGH, 2001, p. 20). É possível encontrar relatos de ocultamento de mensagem, em praticamente todos os períodos da história humana. “A comunicação secreta, quando é obtida através da ocultação da mensagem, é conhecida como esteganografia, nome derivado das palavras gregas steganos, que significa coberto, e graphein, que significa escrever” (SINGH, 2001, p. 20). Ao citar utilizações históricas do uso da esteganografia Singh (2001) explica que Nos dois mil anos que se passaram desde Heródoto, várias formas de esteganografia foram usadas no mundo. Por exemplo, os antigos chineses escreviam mensagens em seda fina, que era então amassada até formar uma pequena bola e coberta com cera. O mensageiro engolia a bolinha de cera. No século XVI o cientista italiano Giovanni Porta descreveu como esconder uma mensagem dentro de um ovo cozido fazendo uma tinta com uma onça de alume e um quartilho de vinagre e então escrevendo na casca do ovo. A solução penetra na casca porosa e deixa mensagem sobre a clara endurecida do ovo. Para ler basta retirar a casca do ovo. (SINGH, 2001, p. 21 e 22) Outros exemplos de uso da esteganografia na antiguidade, seria o de Plínio, o velho, que no século I depois de Cristo, “já explicava como o “leite” da planta titímalo podia ser usado como tinta invisível. Embora fique transparente depois de seca, um aquecimento suave queima a tinta, tornando-a marrom” (SINGH, 2001, p. 22). Também alguns reis que ordenavam que suas mensagens fossem escritas nas cabeças raspadas de seus mensageiros, espera-se o cabelo crescer e manda-os ao 39 destinatário, que raspava novamente o cabelo, lia a mensagem, e se fosse o caso respondia. Quando o cabelo tornava a crescer, o mensageiro retorna ao remetente (SINGH, 2001). Em épocas mais recentes – no século passado – o exemplo mais citado de uso da esteganografia é o microponto. Que “durante a Segunda Guerra Mundial. Agentes alemães, [...] reduziam fotograficamente uma página de texto até transformá-la num ponto com menos de um milímetro de diâmetro” (SINGH, 2001, pg. 23). “O microponto era então oculto sobre o ponto final de uma carta aparentemente inofensiva” (SINGH, 2001, p. 23). A esteganografia se manteve muito utilizada por séculos, e sua “longevidade [...] demonstra que [...] certamente oferece uma certa segurança, embora sofra de uma fraqueza fundamental” (SINGH, 2001, p. 22). Por mais cuidadoso que se podia ser, apenas esconder a existência da mensagem não é suficiente. “Se o mensageiro for revistado e a mensagem descoberta, então o conteúdo da comunicação secreta é imediatamente revelado” (SINGH, 2001, p. 22). 2.12.1. Esteganografia Digital Com o advento na tecnologia, o surgimento dos computadores, e logo depois a internet, as técnicas esteganográficas foram adaptadas para as mídias digitais e tornaram-se mais sofisticadas e imperceptíveis. Uma das primeiras e mais conhecidas técnica de esteganografia em meios digitais é chamada Least Significant Bit – LSB, em português Bit Menos Significativo. (JULIO; BRAZIL; ALBUQUERQUE, 2007) explicam que está técnica é baseada na modificação dos bits menos significativos (Least Significant Bit) dos valores de pixel no domínio espacial. Em uma implementação básica, estes pixels substituem o plano LSB inteiro com o stego-dados. Com 40 esquemas mais sofisticados em que locais de inclusão são adaptativamente selecionados, dependendo de características da visão humana, até uma pequena distorção é aceitável. Em geral, a inclusão de LSB simples é suscetível a processamento de imagem, especialmente a compressão sem perda. O motivo da escolha do último bit é simples. Como detalhado por Trassante (2009) a mudança do primeiro bit do número binário 1111 (15), resulta em 0111 (7). Porém modificando o último bit tem-se como resultado 1110 (14), “o que implica em uma mudança do valor resultante, muito menor que o primeiro exemplo, e desta forma facilitando sua passagem despercebida.” (TRASSANTE, 2009, p. 26) Técnicas baseadas em LSB podem ser aplicadas a cada pixel de uma imagem codificada em 32bits por pixel. Estas imagens possuem seus pixels codificados em quatro bytes. Um para o canal alfa (alpha transparency), outro para o vermelho (red), outro para o verde (green) e outro para o azul (blue). Seguramente, pode-se selecionar um bit (o menos significativo) em cada byte do pixel para representar o bit a ser escondido sem causar alterações perceptíveis na imagem. Estas técnicas constituem a forma de mascaramento em imagens mais difícil de ser detectada pois podem inserir dados em pixels não sequenciais, tornando complexa a detecção. (JULIO; BRAZIL; ALBUQUERQUE, 2007, pg. 104) A modificação causada pela alteração do bit menos significativo, é praticamente imperceptível para o olho humano, apesar de ser vulnerável a analises computadorizadas. Por isso “recomenda-se a escolha de imagens que sejam impossíveis de serem obtidas em meios públicos, como fotos pessoais ou desenhos artísticos não publicados” (TRASSANTE, 2009, p. 25) com o intuito de evitar a alguém que possua a imagem original, fazer uma comparação bit-a-bit entre ela e a imagem esteganografada. 41 2.13. RGB – O sistema aditivo “A resolução espacial da visão é o parâmetro que mede quantos pontos diferentes o olho pode distinguir em uma imagem. A cada ponto dá-se o nome pixel (picture element)” (PAULA FILHO, 2013, p. 154). “A quantidade de bits requerida por pixel depende principalmente de representação adotada para as cores, além de outras propriedades da imagem” (PAULA FILHO, 2013, p. 154). “Os modelos de cores mais utilizados são baseados na decomposição das cores na mistura equivalente de cores básicas” (PAULA FILHO, 2013, p. 155). Um dos modelos de cores [...] é baseado na existência dos três picos de sensibilidade situados no vermelho, no verde e no azul. O vermelho e o azul marcam os extremos do espectro, e o verde, o meio. [...] Elas formam as primárias aditivas, usadas no sistema RGB (red-greenblue), ou sistema aditivo de cores. (PAULA FILHO, 2013, p. 155) 42 CAPÍTULO III 3. ANÁLISE DO APLICATIVO 3.1. Documento de Visão 3.1.1. Introdução 3.1.1.1. Finalidade A finalidade deste documento é coletar, analisar e definir as características e necessidades de alto nível do aplicativo esteganográfico (EstegApp). Os detalhes de como este atinge essas necessidades são descritos nos casos de uso e nas especificações suplementares. 3.1.1.2. Definições, Acrônimos e Abreviações a. RUP - Rational Unified Process. b. PRISM – Pratical Software Development Model c. Software – Um programa de computador. d. EstegApp – Aplicativo Esteganográfico. 3.1.1.3. Referências a. Notas de aula; b. UML DIAGRAMS: UML 2.5 Diagrams Overview. Disponível em: <http://www.uml-diagrams.org/uml-25-diagrams.html> Acesso em: 15 out. 2014. c. CARDOSO, Caique: UML na prática: do problema ao sistema. Rio de Janeiro: Ciência Moderna, 2003 43 3.1.2. Posicionamento 3.1.2.1. Oportunidade de Negócios Com o avanço da tecnologia da informação, a questão da privacidade, anonimato e segurança de transmissões de dados aumentou a importância de assegurar ao usuário que ele esteja protegido dos riscos envolvidos no uso da Internet. O fato de muitos usuários não saberem que seus dados estão seguros ou não, implica que há riscos em sua privacidade, por isso, métodos de segurança devem estar presentes, para que as informações não sejam visualizadas ou lidas por pessoas não autorizadas. A atual arquitetura da Internet permite desenvolver novas ferramentas sobre o controle dessas informações, alterando a forma de como cada pessoa vê a privacidade. Dentre diversos meios para o sigilo de dados, é possível utilizar métodos que possam transmitir informações deixando-as ocultas e tornando-as imperceptíveis aos olhos de outras pessoas. Nos casos de espionagem, por exemplo, tornam-se uma forma viável de esconder tais informações para enganar pessoas. No meio digital, um ramo da criptologia que atua na questão de ocultar dados é conhecido como a esteganografia que faz uso de arquivos como imagens, vídeos e sons, como um canal para passar as informações. 44 Esse método esteganográfico pode ser bastante eficiente, pois mesmo no caso do atacante ter em mãos o arquivo original, dificilmente perceberá que o mesmo foi usado para transmitir uma mensagem. 3.1.2.2. Descrição do Problema Quadro 1 – Descrição do problema O problema de Ter dificuldades em transmitir informações sem que outras pessoas saibam. Afeta Pessoas que trocam informações sigilosas. Cujo impacto é Perda de privacidade e confidencialidade das informações. Uma boa solução seria Desenvolver um sistema para transmitir a informação por um meio que seja seguro e imperceptível a olhos externos. Fonte: Os autores. 3.1.2.3. Sentença de Posição do Produto Quadro 2 – Sentença de posição do produto Para Pessoas que trocam informações. Quem Necessita de sigilo e privacidade nesse fluxo. O EstegApp É um software. Que Permitirá inserir mensagens em figuras, tornandoas ocultas. Diferente de Ter seus dados expostos ou espionados por pessoas indevidas. Nosso produto Atuará na privacidade e confidencialidade da informação. Fonte: Os autores 45 3.1.2.4. Escopo do Produto O produto proposto é voltado para o sigilo na transmissão dos dados. Contemplará funcionalidades que ocultarão as informações para haver privacidade. O aplicativo realizará métodos esteganográficos que farão a inclusão de dados do usuário, por meio de inserção textual, em uma imagem definida pelo mesmo. O sistema processará o produto esteganografado escondendo a informação garantindo a privacidade e confidencialidade da informação. O aplicativo fará de uso exclusivo da plataforma Android. 3.1.3. Descrições dos Envolvidos e dos Clientes 3.1.3.1. Demografia do Mercado Com a necessidade crescente da segurança da informação em ambientes tecnológicos, meios seguros na transmissão de dados tornam-se cada vez mais importantes. Hackers mal intencionados, além de espiões, estão crescendo junto a essa evolução tecnológica dificultando a confidencialidade, integridade e privacidade das informações. O produto procura evitar e dificultar incidentes de tais eventos de segurança. Com a tecnologia, a portabilidade também está cada vez mais presente. Atuando como um facilitador para muitas pessoas e atingindo diversas áreas. O aplicativo trabalhado utiliza um ambiente móvel, provendo auxílio na utilização em inúmeros ambientes. 46 3.1.3.2. Resumo dos Envolvidos Quadro 3 – Resumo dos Envolvidos Nome Descrição Responsabilidades Desenvolvedor e Responsável pelo - Manter o sigilo da transmissão Analista desenvolvimento e análise das informações, ocultando os sobre o sistema e dos dados; métodos de ocultamento de - Documenta as metodologias dados para manter sigilo da utilizadas e o fluxo do sistema. comunicação sobre as informações inseridas no sistema. Usuário Responsável pela interação - Alimentará o sistema inserindo com o sistema. os dados; - Associará o tipo de arquivo proposto, com qual o produto será gerado. Fonte: Os autores. 3.1.3.3. Resumo dos Clientes Quadro 4 – Resumo dos Clientes Nome Descrição Desenvolvedor e Mantem o bom Analista Responsabilidades -Atualiza o sistema, nas suas Envolvido Não se aplica. funcionamento do funcionalidades e parte gráfica. sistema. Usuário Interage com o -Alimentará o sistema sistema. inserindo os dados; -Associará o tipo de arquivo Não se aplica. 47 proposto, com qual o produto será gerado. Fonte: Os autores. 3.1.3.4. Ambiente dos Clientes Será utilizado o sistema operacional Android, uma plataforma móvel para o usuário usufruir em diversos ambientes como ônibus, metro, escritório dentre outros. 3.1.3.5. Perfis dos Envolvidos 3.1.3.5.1. Desenvolvedor e Analista Quadro 5 – Perfil do Envolvido Desenvolvedor e Analista Representante Desenvolvedores e analistas do sistema. Descrição Analisam, documentam, criam e desenvolvem as funcionalidades do sistema. Tipo Representantes do produto. Responsabilidades -Criar a parte sistemática do sistema para manter o sigilo da transmissão dos dados, alimentados pelo usuário; -Documentar o fluxo onde os dados serão transformados no produto final do uso do software; -Analisar o bom funcionamento do sistema para cumprir o proposto exigido do sistema. Critérios de Sucesso A ocultação da informação que garantirá a sua privacidade, confidencialidade e integridade. Envolvimento Total com a parte sistemática e com a entrega do projeto 48 e produto. Produtos Liberados Não se aplica. Comentários/Problemas Inserção de dados inválidos para o sistema. Fonte: Os autores. 3.1.3.5.2. Usuário Quadro 6 – Perfil do Envolvido Usuário Representante Utilizadores do sistema. Descrição Entidade que irá interagir com o aplicativo. Tipo Usuário do sistema. Responsabilidades Alimentar o sistema com as informações. Critérios de Sucesso Capacidade de inserir dados válidos para com o sistema. Envolvimento Interatividade com o sistema. Produtos Liberados Não se aplica. Comentários/Problemas Inserção de dados inválidos. Fonte: Os autores. 3.1.3.6. Principais Necessidades dos Envolvidos ou dos Clientes Quadro 7 – Principais Necessidades dos Envolvidos ou dos Clientes Necessidade Prioridade Preocupações Sigilo na transmissão dos dados a Alta A privacidade, Solução Atual Uso de meios Soluções Propostas Uso da confidencialidade de comunicação esteganografia para seguros. dificultar a ação de 49 fim de passar a e integridade dos espiões e pessoas informação dados violados. não autorizadas, despercebida. ocultando as informações. Fonte: Os autores. 3.1.3.7. Alternativas e Concorrência Ao estudar o mercado sobre técnicas de omissão de dados, se encontra diversos meios que podem vir a ser úteis. Dentro da esteganografia, existe uma grande variedade de arquivos onde se pode ocultar a informação. O aplicativo apresentado neste documento, utilizará imagens para sua realização pelo fato de ser mais imperceptível que os métodos de vídeos e sons com o uso da esteganografia. 3.1.4. Restrições O padrão de imagem será o PNG; A inserção dos dados será em formato textual; Somente será utilizada a plataforma Android. 50 3.2. Especificações de Requisitos 3.2.1. ER aF EstegApp.001 Quadro 8 – Quadro de Especificação do Requisito ER aF EstegApp.001 ER aF EstegApp.001 Selecionar imagem Descrição O sistema deverá permitir ao usuário escolher um arquivo de imagem PNG para o processamento. Descrição do risco Risco Prioridade Alto Alta Baixo Baixa - Escolher imagem diferente do formato PNG. - Não escolher um arquivo. Usuário Usuário/Desenvolvedor Envolvido Fonte: Os autores. 3.2.2. ER aF EstegApp.002 Quadro 9 – Quadro de Especificação do Requisito ER aF EstegApp.002 ER aF EstegApp.002 Capturar imagem fotográfica Descrição O sistema deverá permitir a captura de imagem, utilizando a câmera fotográfica contida no aparelho, para ser utilizada no processamento. Descrição do risco - Não ter câmera no aparelho. Risco Prioridade Médio Baixa Usuário Usuário/Desenvolvedor Envolvido Fonte: Os autores. 51 3.2.3. ER aF EstegApp.003 Quadro 10 – Quadro de Especificação do Requisito ER aF EstegApp.003 ER aF EstegApp.003 Inserir mensagem Descrição O sistema deverá permitir a inserção de um texto para o processamento do arquivo. Descrição do risco Risco Prioridade - Não conseguir inserir a mensagem. Médio Baixa - Arquivo de texto no formato errado. Alto Média Usuário Usuário/Desenvolvedor Envolvido Fonte: Os autores. 3.2.4. ER aF EstegApp.004 Quadro 11 – Quadro de Especificação do Requisito ER aF EstegApp.004 ER aF EstegApp.004 Inserir senha Descrição O sistema deverá permitir a inserção de uma senha para ser processada junto com o arquivo. Descrição do risco - Não conseguir inserir a senha. Risco Prioridade Médio Baixa Usuário Usuário/Desenvolvedor Envolvido Fonte: Os autores. 52 3.2.5. ER aF EstegApp.005 Quadro 12 – Quadro de Especificação do Requisito ER aF EstegApp.005 ER aF EstegApp.005 Esteganografar Descrição O sistema processará os dados inseridos para a geração do produto final. Descrição do risco Risco Prioridade Médio Baixa - Processar com dados inválidos. Alto Alta - Não gerar o produto final. Alto Alta - Gerar o produto final defeituoso. Alto Alta - Escolher nenhuma imagem e não capturar nenhuma pela câmera. Usuário Usuário/Desenvolvedor Envolvido Fonte: Os autores. 3.2.6. ER aF EstegApp.006 Quadro 13 – Quadro de Especificação do Requisito ER aF EstegApp.006 ER aF EstegApp.006 Desesteganografar Descrição O sistema deverá processar a recuperação da mensagem que foi inserida na imagem. Descrição do risco - Não encontrar a mensagem. Risco Prioridade Alto Alta Usuário Usuário/Desenvolvedor Envolvido Fonte: Os autores. 53 3.2.7. ER aF EstegApp.007 Quadro 14 – Quadro de Especificação do Requisito ER aF EstegApp.007 ER aF EstegApp.007 Selecionar imagem esteganografada Descrição O sistema deverá permitir ao usuário escolher um arquivo de imagem PNG para o processamento. Descrição do risco - Escolher imagem diferente do formato PNG. - Não escolher um arquivo. Risco Prioridade Alto Alta Baixo Baixa Usuário Usuário/Desenvolvedor Envolvido Fonte: Os autores. 3.2.8. ER aF EstegApp.008 Quadro 15 – Quadro de Especificação do Requisito ER aF EstegApp.008 ER aF EstegApp.008 Autenticar senha Descrição O sistema deverá permitir a autenticação de senha para extrair a informação escondida da imagem. Descrição do risco - Não conseguir autenticar com a senha correta. Risco Prioridade Alto Alta Usuário Usuário/Desenvolvedor Envolvido Fonte: Os autores. 54 3.3. Descrição dos Casos de Uso e Atores 3.3.1. Casos de Uso 3.3.1.1. Selecionar Imagem Este caso de uso é responsável pelo recebimento da imagem, onde será escondida ou extraída uma informação, por meio de uma seleção de arquivo no formato PNG. 3.3.1.2. Inserir mensagem Este caso de uso é responsável pela inserção da mensagem, com um campo para inserir um texto e que será processado no produto. 3.3.1.3. Inserir senha Este caso de uso é responsável pela inserção de uma senha, com um campo para inserir uma senha que será processada juntamente com o texto no produto. 3.3.1.4. Capturar imagem fotográfica Este caso de uso é responsável pelo recebimento alternativo da imagem, utilizando recurso de câmera do aparelho, caso o possua. 3.3.1.5. Esteganografar Este caso de uso é responsável pelo o processamento dos dados obtidos, realizando metodologias e funções esteganográficas para gerar o produto final e o armazenando no aparelho no formato PNG. 55 3.3.1.6. Desesteganografar Este caso de uso é responsável, pelo processo inverso da esteganografia para obtenção da mensagem escondida no produto. 3.3.1.7. Selecionar imagem esteganografada Este caso de uso é responsável pelo recebimento da imagem, onde será extraída uma informação, por meio de uma seleção de arquivo no formato PNG. 3.3.1.8. Autenticar senha Este caso de uso é responsável pela autenticação de senha, com um campo para inserir uma senha para a extração da informação. 3.3.2. Descrição dos Atores 3.3.2.1. Usuário Este ator é uma pessoa que atua no sistema inserindo a imagem, a mensagem e a senha para o processo de esteganografia. 3.4. Diagrama Geral de Casos de Uso Figura 14 – Diagrama Geral de Casos de Uso Fonte: Os autores 56 3.5. Detalhamento dos Casos de Uso 3.5.1. UC[01] - ESTEGANOGRAFAR Figura 15 – Diagrama de Caso de Uso Esteganografar Fonte: Os autores Quadro 16 - Fluxo de Eventos do Caso de Uso Esteganografar Nome do Caso de Esteganografar Uso Executado após o recebimento da inserção da imagem, Descrição da mensagem e da senha, para a realização da esteganografia. ER aF EstegApp.001, ER aF EstegApp.002, ER aF Requisitos EstegApp.003, ER aF EstegApp.004, ER aF Associados EstegApp.005, ER aF EstegApp.006, ER aF EstegApp.007 e ER aF EstegApp.008. Pré Condições Pós Condições Atores Os dados utilizados deverão estar validamente preenchidos. O aplicativo deve processar os dados inseridos e indicar que o produto foi gerado com sucesso. Usuário Fluxo Principal Ações Recebidas Ações Realizadas 57 1. O usuário inicia o aplicativo. 2. O aplicativo exibe as opções de esteganografar e desesteganografar. 3. O usuário opta por esteganografar. 4. O aplicativo exibe os campos selecionar imagem, inserir mensagem e inserir senha. 5. O usuário preenche os campos. 7. O aplicativo verifica se as informações 6. O usuário inicia a esteganografia. são válidas. 8. O aplicativo realiza o processamento. 9. O aplicativo emite uma mensagem na tela, indicando que a esteganografia foi realizada com sucesso. 10. O aplicativo volta ao estado inicial. Fluxo de Exceção Ações Recebidas 1. O usuário inicia o aplicativo. Ações Realizadas 2. O aplicativo exibe as opções de esteganografar e desesteganografar. 3. O usuário opta por esteganografar. 4. O aplicativo exibe os campos selecionar imagem, inserir mensagem e inserir senha. 5. O usuário preenche os campos. 7. O aplicativo verifica se as informações 6. O usuário inicia a esteganografia. são válidas. 8. O aplicativo exibe na tela, informando que as informações inseridas são inválidas ou vazias. 9. O aplicativo retorna à ação 5. Fonte: Os autores 58 3.5.2. UC[02] - SELECIONAR IMAGEM Quadro 17 - Fluxo de Eventos do Casos de Uso Selecionar imagem Nome do Caso de Selecionar imagem Uso Descrição Seleciona uma única imagem pelo usuário para realizar o processamento do produto. Requisitos ER aF EstegApp.001, ER aF EstegApp.002 e ER aF Associados EstegApp.005. Pré Condições A imagem selecionada deverá ser PNG. Pós Condições Atores O aplicativo deverá gerar o produto sem falhas a partir da imagem escolhida. Usuário Fluxo Principal Ações Recebidas Ações Realizadas 1. O usuário inicia o aplicativo. 2. O aplicativo exibe as opções de esteganografar e desesteganografar. 3. O usuário opta por esteganografar. 4. O aplicativo exibe os campos selecionar imagem e capturar imagem fotográfica. 5. O usuário seleciona uma imagem 6. O aplicativo valida a imagem a ser no formato PNG. processada. Fluxo Alternativo Ações Recebidas 1. O usuário inicia o aplicativo. Ações Realizadas 2. O aplicativo exibe as opções de esteganografar e desesteganografar. 3. O usuário opta por esteganografar. 4. O aplicativo exibe os campos selecionar imagem e capturar imagem fotográfica. 59 5. O usuário captura uma imagem 6. O aplicativo valida a imagem a ser fotográfica pelo aparelho. processada. Fluxo de Exceção 01 Ações Recebidas Ações Realizadas 1. O usuário inicia o aplicativo. 2. O aplicativo exibe as opções de esteganografar e desesteganografar. 3. O usuário opta por esteganografar. 4. O aplicativo exibe os campos selecionar imagem e capturar imagem fotográfica. 5. O usuário seleciona uma imagem 6. O aplicativo valida a imagem a ser no formato PNG. processada. 7. O aplicativo exibe na tela, informando que o arquivo de imagem é inválido. 8. O aplicativo limpa o campo e retorna à ação 5. Fluxo de Exceção 02 Ações Recebidas 1. O usuário inicia o aplicativo. Ações Realizadas 2. O aplicativo exibe as opções de esteganografar e desesteganografar. 3. O usuário opta por esteganografar. 4. O aplicativo exibe os campos selecionar imagem e capturar imagem fotográfica. 5. O usuário captura uma imagem 6. O aplicativo valida a imagem a ser fotográfica pelo aparelho. processada. 7. O aplicativo exibe na tela, informando que o arquivo de imagem é inválido. 8. O aplicativo limpa o campo e retorna à ação 5. Fonte: Os autores 60 3.5.3. UC[03] - INSERIR MENSAGEM Quadro 18 - Fluxo de Eventos do Caso de Uso Inserir mensagem Nome do Caso de Inserir mensagem Uso Descrição Inclui a mensagem informada pelo usuário para realizar o processamento do produto. Requisitos ER aF EstegApp.003, ER aF EstegApp.005 e ER aF Associados EstegApp.006. Pré Condições Informar uma mensagem textual. Pós Condições Atores O aplicativo deverá conseguir realizar o processamento com a mensagem informada. Usuário Fluxo Principal Ações Recebidas Ações Realizadas 1. O usuário inicia o aplicativo. 2. O aplicativo exibe as opções de esteganografar e desesteganografar. 3. O usuário opta por esteganografar. 4. O aplicativo exibe o campo inserir mensagem. 5. O usuário insere a mensagem. 6. O aplicativo valida a mensagem a ser processada. Fluxo de Exceção Ações Recebidas 1. O usuário inicia o aplicativo. Ações Realizadas 2. O aplicativo exibe as opções de esteganografar e desesteganografar. 3. O usuário opta por esteganografar. 4. O aplicativo exibe o campo inserir mensagem. 5. O usuário insere a mensagem. 6. O aplicativo valida a mensagem a ser processada. 61 7. O aplicativo exibe na tela, informando que a mensagem inserida é inválida. 8. O aplicativo limpa o campo e retorna à ação 5. Fonte: Os autores 3.5.4. UC[04] - INSERIR SENHA Quadro 19 - Fluxo de Eventos do Caso de Uso Inserir senha Nome do Caso de Inserir senha Uso Inclui a senha informada na imagem selecionada ou Descrição capturada pelo usuário para realizar a autenticação do produto. Requisitos ER aF EstegApp.004, ER aF EstegApp.005, ER aF Associados EstegApp.006 e ER aF EstegApp.008. Pré Condições Informar uma senha. Pós Condições Atores O aplicativo deverá conseguir realizar o processamento com a senha informada. Usuário Fluxo Principal Ações Recebidas 1. O usuário inicia o aplicativo. Ações Realizadas 2. O aplicativo exibe as opções de esteganografar e desesteganografar. 3. O usuário opta por esteganografar. 4. O aplicativo exibe o campo inserir senha. 5. O usuário insere a senha. 6. O aplicativo valida a senha a ser processada. Fluxo de Exceção Ações Recebidas 1. O usuário inicia o aplicativo. Ações Realizadas 2. O aplicativo exibe as opções de esteganografar e desesteganografar. 62 3. O usuário opta por esteganografar. 4. O aplicativo exibe o campo inserir senha. 5. O usuário insere a senha. 6. O aplicativo valida a senha a ser processada. 7. O aplicativo exibe na tela, informando que a senha inserida é inválida. 8. O aplicativo limpa o campo e retorna à ação 5. Fonte: Os autores. 3.5.5. UC[05] - DESESTEGANOGRAFAR Figura 16 – Diagrama de Caso de Uso Desesteganografar Fonte: Os autores Quadro 20 - Fluxo de Eventos do Use Case Desesteganografar Nome do Caso de Desesteganografar Uso Executado após a geração do produto, onde realiza Descrição processamento inverso da esteganografia para recuperar a mensagem inserida. Requisitos ER aF EstegApp.005, ER aF EstegApp.006, ER aF Associados EstegApp.007 e ER aF EstegApp.008. Pré Condições Ter uma imagem esteganografada pelo aplicativo. 63 Pós Condições O aplicativo deve apresentar a mensagem escondida. Atores Usuário Fluxo Principal Ações Recebidas Ações Realizadas 1. O usuário inicia o aplicativo. 2. O aplicativo exibe as opções de esteganografar e desesteganografar. 3. O usuário opta por desesteganografar. 4. O aplicativo exibe os campos selecionar imagem esteganografada e autenticar senha. 5. O usuário preenche os campos. 7. O aplicativo verifica se as informações 6. O usuário inicia a são válidas. desesteganografia. 8. O aplicativo realiza o processamento. 9. O aplicativo retorna a mensagem escondida. 10. O aplicativo volta ao estado inicial. Fluxo de Exceção Ações Recebidas Ações Realizadas 1. O usuário inicia o aplicativo. 2. O aplicativo exibe as opções de esteganografar e desesteganografar. 3. O usuário opta por desesteganografar. 4. O aplicativo exibe os campos selecionar imagem esteganografada e autenticar senha. 5. O usuário preenche os campos. 7. O aplicativo verifica se as informações 6. O usuário inicia a são válidas. desesteganografia. 8. O aplicativo exibe na tela, informando que não foi encontrado a mensagem escondida na imagem. 9. O aplicativo retorna à ação 5. Fonte: Os autores 64 3.5.6. UC[06] - SELECIONAR IMAGEM ESTEGANOGRAFADA Quadro 21 - Fluxo de Eventos do Caso de Uso Selecionar imagem esteganografada Nome do Caso de Selecionar imagem esteganografada Uso Descrição Seleciona uma única imagem pelo usuário para realizar o processamento do produto. Requisitos ER aF EstegApp.005, ER aF EstegApp.006 e ER aF Associados EstegApp.007. Pré Condições Deverá selecionar uma imagem esteganografada pelo aplicativo. Pós Condições O aplicativo deverá conseguir recuperar a mensagem com a imagem escolhida. Atores Usuário Fluxo Principal Ações Recebidas Ações Realizadas 1. O usuário inicia o aplicativo. 2. O aplicativo exibe as opções de esteganografar e desesteganografar. 3. O usuário opta por desesteganografar. 4. O aplicativo exibe o campo selecionar imagem esteganografada. 5. O usuário seleciona uma imagem 6. O aplicativo valida a imagem a ser no formato PNG. processada. Fluxo de Exceção Ações Recebidas Ações Realizadas 1. O usuário inicia o aplicativo. 2. O aplicativo exibe as opções de esteganografar e desesteganografar. 3. O usuário opta por desesteganografar. 4. O aplicativo exibe o campo selecionar imagem esteganografada. 5. O usuário seleciona uma imagem 6. O aplicativo valida a imagem a ser no formato PNG. processada. 7. O aplicativo exibe na tela, informando que o arquivo de imagem é inválido. 65 8. O aplicativo limpa o campo e retorna à ação 5. Fonte: Os autores. 3.5.7. UC[07] - AUTENTICAR SENHA Quadro 22 - Fluxo de Eventos do Caso de Uso Autenticar senha Nome do Caso de Autenticar senha Uso Descrição Autentica a senha informada com a que foi inserida anteriormente na imagem esteganografada. Requisitos ER aF EstegApp.004, ER aF EstegApp.005, ER aF Associados EstegApp.006 e ER aF EstegApp.008. Pré Condições Informar a senha inserida anteriormente no processo de esteganografia. Pós Condições O aplicativo deverá autenticar a senha informada. Atores Usuário Fluxo Principal Ações Recebidas Ações Realizadas 1. O usuário inicia o aplicativo. 2. O aplicativo exibe as opções de esteganografar e desesteganografar. 3. O usuário opta por desesteganografar. 4. O aplicativo exibe o campo autenticar senha. 5. O usuário informa a senha. 6. O aplicativo valida a senha a ser processada. Fluxo de Exceção Ações Recebidas Ações Realizadas 1. O usuário inicia o aplicativo. 2. O aplicativo exibe as opções de esteganografar e desesteganografar. 3. O usuário opta por 4. O aplicativo exibe o campo autenticar senha. desesteganografar. 66 5. O usuário informa a senha. 6. O aplicativo valida a senha a ser processada. 7. O aplicativo exibe na tela, informando que a senha inserida é inválida. 8. O aplicativo limpa o campo e retorna à ação 5. Fonte: Os autores. 3.6. Diagrama Geral de Estados Figura 17 – Diagrama Geral de Estados Fonte: Os autores 67 3.7. Classes de Análise 3.7.1. Detalhamento das Classes de Análise 3.7.1.1. Classe de Fronteira 1 - Tela Opções Responsável por apresentar as opções esteganografia e desesteganografia, que exibem as telas de esteganografar e desesteganografar. 3.7.1.2. Classe de Fronteira 2 - Tela Esteganografar Responsável por obter as informações inseridas pelo usuário que serão processadas pelo aplicativo, como também obter e apresentar a mensagem de geração do produto esteganografado. 3.7.1.3. Classe de Fronteira 2 - Tela Desesteganografar Responsável por obter as informações inseridas pelo usuário que serão processadas pelo aplicativo, como também obter e apresentar a mensagem que foi escondida na imagem. 3.7.1.4. Classe de Controle Esteganografia Responsável pela lógica de controle total do aplicativo realizando os processos de esteganografar e de desesteganografar. 68 3.7.1.5. Classe de Entidade Imagem Responsável por armazenar as informações durante o tempo de processamento do aplicativo e informar os valores de seus atributos para a classe de controle Esteganografia. 3.7.2. Diagrama Geral de Classes Figura 18 – Diagrama Geral de Classes de Análise Fonte: Os autores 3.7.3. Diagrama de Classes com fronteiras e entidade Figura 19 – Diagrama de Classes de Análise com fronteiras e entidade Fonte: Os autores 69 3.8. Diagrama de Sequência 3.8.1. Diagrama de sequência Fluxo Esteganografar Figura 20 – Diagrama de sequência Fluxo Esteganografar Fonte: Os autores 3.8.2. Diagrama de sequência Fluxo Desesteganografar Figura 21 – Diagrama de sequência Fluxo Desesteganografar Fonte: Os autores 70 CAPÍTULO IV 4. CONCLUSÃO A segurança da informação é de extrema importância nesta era digital, visto que cada vez mais diferentes tipos de tecnologias estão presentes no cotidiano de todos, e as informações pessoais e sigilosas estão inseridas nesse meio. A esteganografia é apenas uma das ferramentas existentes para a proteção de dados, porém o estudo e o uso deste método proporcionam esclarecimento sobre o grau da necessidade do sigilo das informações. A implementação do aplicativo possibilitou compreender a adaptação digital desta técnica, os conceitos de orientação a objetos, e a análise e documentação de sistemas, além de proporcionar um sólido entendimento sobre segurança da informação e das várias especificidades da plataforma alvo utilizada. Conhecimento este, que hoje, já se qualifica como essencial para profissionais da Tecnologia da Informação. Conclui-se então, que o uso de um aplicativo esteganográfico, além de extremamente prático, é uma maneira relativamente eficiente para proteger informações contra uma pessoa comum não autorizada. A esteganografia sempre foi historicamente utilizada, porem sua adaptação digital é consideravelmente mais confiável, pois além de possuir a imagem esteganografada, o interessado em descobrir a mensagem deveria desconfiar que informações poderiam estar escondidas ali e por fim possuir a senha necessária para se reverter o processo. 71 REFERENCIAS ANDROID SOURCE. The android source code. Disponível <http://source.android.com/devices/tech/security/#android-platform-securityarchitecture>. Acesso em: 3 nov. 2014. em: ASSESSORIA DE INFORMÁTICA DA SECRETARIA DE ESTADO DA DEFESA CIVIL DO CORPO DE BOMBEIROS MILITAR DO ESTADO DO RIO DE JANEIRO – ASSINFO: Segurança da Info. Rio de Janeiro, 2012. Disponível em: <http://assinfo.cbmerj.rj.gov.br/index.php?option=com_content&view=article&id=208 0%27&Itemid=41>. Acesso em: 30 out. 2014. ASSOCIAÇÃO BRASILEIRA DE NORMAS E TÉCNICAS: ABNT. NBR ISO/IEC 27002:2005 - Tecnologia da informação - Técnicas de segurança – Código de prática para a gestão da segurança da Informação. Rio de Janeiro: ABNT, 2005. BOOCH, Grady; UML: guia do usuário. Rio de Janeiro: Elsevier, 2012. BORGES, Roberto C. M.; WINCKLER, Marco A. A.; BASSO, Karen. Considerações sobre o uso de cores em interfaces WWW. Porto Alegre. UFRGS. Disponível em:<http://www.lbd.dcc.ufmg.br/colecoes/ihc/2000/0017.pdf>. Acesso em: 3 nov. 2014. CARDOSO, Caique: UML na prática: do problema ao sistema. Rio de Janeiro: Ciência Moderna, 2003. DEITEL, Paul et al. Android para programadores: uma abordagem baseada em aplicativos. Porto Alegre: Bookman, 2013. FOWLER, Martim UML Essencial: um breve guia a linguagem-padrão de modelagem de objetos; Trad. João Tortello. 3. ed. Porto Alegre: Bookman, 2005. FRIESEN, Jeff: Learn Java for Android Development. Second Edition. New York: 2013. 72 FURLAN, José Davi: Modelagem de objetos através da UML – The Unified Modeling Language. São Paulo: Makron Books, 1998. INTERNATIONAL BUSINESS MACHINES. WebSphere integration developer: Máquinas de Estado. 2006. Disponível em: <http://publib.boulder.ibm.com/infocenter/dmndhelp/v6rxmx/index.jsp?topic=/com.ib m.wbit.help.prodovr.doc/topics/cadaptivebo.html>. Acesso em: 4 out. 2014. JULIO, E. P.; BRAZIL, W.; ALBUQUERQUE, C. Esteganografia e suas aplicações. Em: Livro de Minicursos do SBSEG. Rio de Janeiro: Sociedade Brasileira de Computação, 2007, v. VII, p. 54-102. LYRA, Maurício Rocha Segurança e auditoria em sistemas de informação. Rio de Janeiro: Ciência Moderna, 2008. MELO, Natã. Diagrama de máquina de estados. UFCG, Campina Grande, 2011. Disponível em: <http://www.dsc.ufcg.edu.br/~pet/jornal/julho2011/materias/recapitulando.html> Acesso em: 4 out. 2014. PAULA FILHO, Wilson de Pádua: Multimídia: conceitos e aplicações. 2. ed. Rio de Janeiro: LTC, 2013. RAY, Erick T.: Aprendendo XML. Tradução Daniel Vieira. Rio de Janeiro: Campos, 2001. SBROCCO, José Henrique Teixeira de Carvalho: UML 2.3: teoria e prática. 1. ed. São Paulo: Érica, 2011. SCHACH, Stephen R.; Engenharia de software: os paradigmas clássicos & orientado a objetos. São Paulo: McGraw-Hill, 2009. SCHILD, Herbert; Java para iniciantes. 5. ed. Porto Alegre: Bookman, 2013. 73 SENDOV, Blagovest. Entrando na era da informação. Estud. av. [online]. 1994, vol.8, n.20, pp. 28-32. ISSN 0103-4014. Disponível em: <http://www.scielo.br/pdf/ea/v8n20/v8n20a08.pdf>. Acesso em: 3 nov. 2014. SINGH, Simon: O livro dos códigos; Tradução de Jorge Calife. Rio de Janeiro: Record, 2001. SOMMERVILLE, Ian; Engenharia de software. São Paulo: Pearson Prentice Hall, 2011. STALLINGS, William. Criptografia e segurança de redes. 4. ed. São Paulo: Pearson Prentice Hall, 2008. TRASSANTE, Bruno Nunes. Esteganografia em imagens digitais. 2009. 49 f. Trabalho de conclusão de curso (Ciência Da Computação). Universidade Federal Do Rio Grande Do Sul, Porto Alegre, 2009. UML DIAGRAMS: UML 2.5 Diagrams Overview. Disponível em: <http://www.umldiagrams.org/uml-25-diagrams.html> Acesso em: 15 out. 2014. W3SCHOOLS: XML Tutorial. Disponível em: <http://www.w3schools.com/xml> Acesso em: 10 out. 2014. WIKIPEDIA: Dalvik (software). Disponível <http://en.wikipedia.org/wiki/Dalvik_(software)> Acesso em: 10 out.2014. em: 74 APÊNDICE A - Tela Opções Figura 22 – Tela de opções iniciais A Tela de Opções, prove ao usuário as duas opções para utilização do sistema: Esteganografar e Desesteganografar. 75 APÊNDICE B - Esteganografar Figura 23 – Primeira tela Esteganografar A primeira tela, pertencente a funcionalidade Esteganografar, contém a funcionalidade inserir imagem, seja manualmente entre os arquivos salvos na memória do aparelho ou fotografando em tempo real. Confere se a imagem escolhida é do tipo PNG. 76 APÊNDICE C - Esteganografar Figura 24 – Segunda tela Esteganografar A segunda tela pertencente a funcionalidade Esteganografar, possui uma única funcionalidade; o campo para entrada do texto a ser processado. 77 APÊNDICE D - Esteganografar Figura 25 – Terceira tela Esteganografar A segunda tela pertencente a funcionalidade Esteganografar é responsável por receber e autenticar a senha, além de mostrar a mensagem e a imagem para conferência. Por fim, realiza o procedimento esteganográfico. 78 APÊNDICE E - Desesteganografar Figura 26 – Tela Desesteganografar A única tela que compõem a opção Desesteganografar, consiste em receber e conferir, tanto a imagem quanto a senha, para realizar o procedimento desesteganográfico e por fim mostrar o texto recuperado.