UNIVERSIDADE FEDERAL FLUMINENSE SIDNEY LOYOLA DE SÁ ASSINATURA DE DOCUMENTOS ELETRÔNICOS UTILIZANDO ANDROID

Tamanho: px
Começar a partir da página:

Download "UNIVERSIDADE FEDERAL FLUMINENSE SIDNEY LOYOLA DE SÁ ASSINATURA DE DOCUMENTOS ELETRÔNICOS UTILIZANDO ANDROID"

Transcrição

1 UNIVERSIDADE FEDERAL FLUMINENSE SIDNEY LOYOLA DE SÁ ASSINATURA DE DOCUMENTOS ELETRÔNICOS UTILIZANDO ANDROID Niterói 2012

2 SIDNEY LOYOLA DE SÁ ASSINATURA DE DOCUMENTOS ELETRÔNICOS UTILIZANDO ANDROID Trabalho de Conclusão de Curso submetido ao Curso de Tecnologia em Sistemas de Computação da Universidade Federal Fluminense como requisito parcial para obtenção do título de Tecnólogo em Sistemas de Computação. Orientador: Jacques Alves da Silva NITERÓI 2012

3 SIDNEY LOYOLA DE SÁ ASSINATURA DE DOCUMENTOS ELETRÔNICOS UTILIZANDO ANDROID Trabalho de Conclusão de Curso submetido ao Curso de Tecnologia em Sistemas de Computação da Universidade Federal Fluminense como requisito parcial para obtenção do título de Tecnólogo em Sistemas de Computação. Niterói, de de Banca Examinadora : Prof. Jacques Alves da Silva, Dsc. Orientador UFF Universidade Federal Fluminense Prof. Eyder Franco Sousa Rios, Msc. Avaliador UFF Universidade Federal Fluminense

4 Dedico este trabalho a minha mãe que sonhou com esse dia e essa realização. Conseguimos.

5 AGRADECIMENTOS A minha esposa que permaneceu paciente, carinhosa e compreensiva durante toda essa jornada. A meu Orientador Jacques da Silva pela atenção que me concedeu durante esse trabalho. Aos Colegas de curso pelo incentivo e troca de experiências. Ao CEDERJ por me proporcionar um curso de excelente qualidade.

6 A máquina pode fazer a tarefa de 50 homens comuns. Máquina nenhuma é capaz de fazer o trabalho de um homem extraordinário. Elbert Hubbard

7 RESUMO Atualmente o poder computacional dos dispositivos móveis permite aplicações sofisticadas e complexas, assim já é possível utiliza-los para aplicações criptográficas. O objetivo deste trabalho é desenvolver um aplicativo para Android que permita a realização de assinaturas digitais, bem como um estudo sobre criptografia e sobre as técnicas criptográficas necessárias para a realização da Assinatura Digital. O Android foi escolhido por ser uma plataforma livre e de código aberto, ideal para o aprendizado e para a pesquisa. No final do trabalho apresentamos nossas conclusões e sugestões para trabalhos futuros. Palavras-chaves: Android, Criptografia e Assinatura Digital.

8 ABSTRACT Currently the computational power of mobile devices allows sophisticated and complex applications, so it is possible to use them for cryptographic applications. The objective of this work is to develop an application for Android that allows digital signatures and a study on encryption and cryptographic techniques necessary for the Digital Signature. The Android was chosen because it is a free platform and open source, ideal for learning and research. At the end of the paper we present our conclusions and suggestions for future work. Key words: Android, Encryption and Digital Signature.

9 LISTA DE ILUSTRAÇÕES Figura 1: Esquema de Criptografia Simétrica Figura 2: Esquema de Criptografia Assimétrica Figura 3 : Visão Alto Nível da Pilha de Software Android [5] Figura 4 : Tela de configuração AVD Figura 5 : Visão da Estrutura de um Projeto Android Figura 6: Diagrama Casos de Uso Figura 7 : Diagrama de Atividades do Processo de Assinatura Figura 8 : Diagrama de Atividades do Processo de Verificação de Assinatura Figura 9 : Diagrama de Sequência do Processo de Assinatura Figura 10 : Diagrama de Sequência do Processo de verificação da Assinatura Figura 11 : Telas do Aplicativo Desenvolvido... 49

10 LISTA DE TABELAS Tabela 1: Exemplo de Cifra utilizando Chave Tabela 2: Exemplo de CriptoAnálise Tabela 3: Tempo médio para busca de chave [12]... 22

11 LISTA DE ABREVIATURAS E SIGLAS AC - Autoridade Certificadora ADT Android Development Tools (Ferramentas de Desenvolvimento Android) AES Advanced Data Encryption Standard (Padrão de Criptografia de Dados Avançada) AVD Android Virtual Device (Dispositivo Virtual Android) API - Application Programming Interface (Interface de Programação de Aplicativos) DES - Data Encryption Standard (Padrão de Criptografia de Dados) 3-DES - Triple Data Encryption Standard (Padrão de Criptogtafia de Dados Triplo) GPS Global Positioning System (Sistema de Posicionamento Global) IDE Integrated Development Environment (Ambiente de Desenvolvimento Integrado) MAC Message Authentication Code (Codigo de Autenticação de Mensagem) PKCS - Public-Key Cryptography Standards (Padrões de Criptografia de Chave Pública) PKI Public Key-Infrastructure (Infra Estrutura de Chave Pública) SDK Software Development Kit (Conjunto de Desenvolvimento de Software) UML Unified Modeling Language (Linguagem de Modelagem Unificada) XML Extensible Markup Language (Linguagem de Marcação Extensivel)

12 SUMÁRIO RESUMO 7 ABSTRACT 8 LISTA DE ILUSTRAÇÕES 9 LISTA DE TABELAS 10 LISTA DE ABREVIATURAS E SIGLAS 11 1INTRODUÇÃO MOTIVAÇÃO OBJETIVO ORGANIZAÇÃO DO TRABALHO 15 2 CRIPTOGRAFIA DEFINIÇÃO CRIPTOGRAFIA SIMÉTRICA FUNCIONAMENTO CRIPTOGRAFIA ASSIMÉTRICA FUNCIONAMENTO ALGORITMO RSA AUTENTICAÇÃO DE MENSAGENS E FUNÇÕES HASH FUNCIONAMENTO DA AUTENTICAÇÃO DE MENSAGEM FUNCIONAMENTO DA FUNÇÃO HASH ASSINATURA DIGITAL INFRA ESTRUTURA DE CHAVE PÚBLICA ANDROID DESCRIÇÃO DA ARQUITETURA AMBIENTE DE DESENVOLVIMENTO 35

13 3.2.1 INSTALANDO O AMBIENTE DE DESENVOLVIMENTO ANDROID VIRTUAL DEVICE VISÃO DE UM APLICATIVO 38 4 ASSINADOR DIGITAL LEVANTAMENTO DOS REQUISITOS Requisitos Funcionais Requisitos Não Funcionais MODELAGEM DO SISTEMA IMPLEMENTAÇÃO TESTES REALIZADOS 49 5 CONCLUSÕES E TRABALHOS FUTUROS 51 REFERÊNCIAS BIBLIOGRÁFICAS 52 APÊNDICE Código Fonte Assinador Digital 54

14 14 1 INTRODUÇÃO Em um mundo cada vez mais interconectado através de sistemas computacionais ninguém duvida de que a segurança de computadores é importante, mas o que muitas vezes passa despercebido é que técnicas de segurança possam facilitar o nosso dia a dia e aumentar a nossa produtividade. Uma técnica de segurança computacional capaz de incrementar a produtividade é a Assinatura Digital, pois garante a autenticidade e a integridade do documento, além de acelerar o processo de obtenção da assinatura. Um exemplo seria uma empresa que necessita da assinatura de um gerente de operações para fechar um contrato, supondo que este estava sendo negociado há meses pode ocorrer de, exatamente neste período, o gerente encontrar-se viajando. A solução para esse problema através do processo convencional seria enviar esse documento ao gerente que receberia, assinaria e retornaria o documento, possivelmente através do correio, levando alguns dias para que o negócio pudesse ser concretizado. Utilizando a Assinatura Digital o gerente receberia o documento e o assinaria digitalmente, retornando-o através de , dessa forma o negócio seria fechado no mesmo dia e possivelmente na mesma hora. 1.1 MOTIVAÇÃO Atualmente, o poder computacional dos dispositivos móveis como tablets, celulares e até mesmo televisões permitem aplicações extremamente avançadas e complexas. Procurando no principal local para aplicativos Android, o Google Play,

15 15 foram encontrados poucos aplicativos relacionados com a Assinatura Digital e os poucos encontrados não utilizam técnicas criptográficas, sendo apenas uma espécie de scanner da assinatura manuscrita. O desenvolvimento de um aplicativo para Android de Assinaturas digitais irá proporcionar segurança e mobilidade para aqueles que o utilizarem. 1.2 OBJETIVO O objetivo deste trabalho é estudar e apresentar as técnicas utilizadas para a realização de assinatura digital de documentos eletrônicos, bem como implementar um assinador digital utilizando o sistema Android de dispositivos móveis. Idealizar e projetar um assinador que tenha as principais características de segurança e a simplicidade necessárias para a utilização por um usuário leigo. 1.3 ORGANIZAÇÃO DO TRABALHO O trabalho foi organizado da seguinte forma. O capítulo 2 apresenta a teoria necessária para o entendimento da criptografia utilizada no processo de assinatura digital. O capítulo 3 apresenta o Android, sua organização e as ferramentas necessárias para o desenvolvimento de um aplicativo. O capítulo 4 apresenta o software desenvolvido como objetivo deste trabalho. No capítulo 5 são apresentadas as conclusões e indicações para trabalhos futuros.

16 16 2 CRIPTOGRAFIA A Criptografia existe há milhares de anos, mas com o avanço dos computadores e principalmente da Internet adquiriu importância vital para a vida cotidiana. Mesmo pessoas comuns já ouviram algo a respeito de Criptografia, hackers, vírus, ameaças e fraudes na Internet. Mesmo com tanta divulgação sobre segurança e criptografia, poucas pessoas conhecem o seu verdadeiro significado, por isso ainda existe tanto receio em transações efetuadas na Internet. Neste capítulo será apresentado o conhecimento teórico necessário para o entendimento da criptografia e, principalmente, para o entendimento da assinatura digital. 2.1 DEFINIÇÃO Criptografia é a ciência que estuda a transformação de uma mensagem legível em uma ininteligível, permitindo que somente os destinatários dessa mensagem tenham acesso à mesma. A palavra criptografia deriva das palavras gregas kryptos e graphos que significa secreto e grafia, respectivamente. Com o advento do computador a Criptografia passou, principalmente, a estudar os sistemas criptográficos que pudessem ser implementados por essas máquinas, como exemplo tem-se o DES (Data Encryption Standard) [13], 3-DES (Triple Data Encryption Standard) [14], AES (Advanced Encryption Standard) [15] e outros algoritmos que necessitam de um computador para serem implementados. O objetivo da criptografia, de acordo com Stallings [12], é proporcionar alguns mecanismos de segurança como :

17 17 Confidencialidade apenas pessoas ou entidades autorizadas podem ter acesso a mensagem ou aos dados; Autenticação as entidades que participam de uma comunicação são quem elas afirmam ser. Integridade garante que a mensagem ou os dados não foram alterados, ou seja, o destinatário tem certeza de que recebeu a mensagem original. Não-repúdio garante que uma entidade participou de uma determinada comunicação, por exemplo: um cliente utiliza um sistema home broker para compra de ações e após ver o preço das ações despencarem ele nega ter efetuado tal compra, precisando-se do mecanismo de não-repúdio para provar que ele efetivamente comprou as ações. 2.2 CRIPTOGRAFIA SIMÉTRICA A criptografia simétrica [12] também é conhecida como criptografia de chave privada, pois se utiliza de uma chave secreta para criptografar a mensagem e esta mesma chave precisa ser usada para decriptografar a mensagem. Como a chave privada precisa ser compartilhada entre o emissor e o destinatário, manter esta chave segura é imprescindível para o sucesso da criptografia FUNCIONAMENTO A criptografia simétrica utiliza um algoritmo reversível, ou seja, permite a criptografia e esse mesmo algoritmo aplicado de forma inversa à mensagem cifrada irá decriptografá-la fornecendo o texto claro. Além do algoritmo para criptografar a mensagem precisamos de uma chave secreta que será compartilhada pelo emissor e destinatário. Este sistema está representado na Figura 1.

18 18 Figura 1: Esquema de Criptografia Simétrica Para exemplificar o funcionamento da criptografia simétrica será utilizada a Cifra de César [16]. Esta cifra é muito simples e era utilizada pelos romanos para ocultar as suas mensagens, a cifra consiste em deslocar as letras em três posições, no lugar do A tem-se o D, do B coloca-se o E e assim por diante. No lugar do Z usase o C para completar a cifra, como exemplo o texto claro Roma vai invadir o Egito ficaria urpd ydl lqydglu r hjlwr. Para decriptografar essa mensagem usa-se a mesma ideia só que deslocando as letras para o lado inverso, assim no lugar do D tem-se o A e no lugar do A tem-se o X. Sendo associado um número a cada letra, por exemplo A = 1, B = 2,...,Z = 26, pode-se representar essa cifra de forma matemática da seguinte maneira: ( ), e ( ) Onde: C = texto cifrado T = texto claro

19 19 Para obter-se o texto claro usa-se a função inversa da utilizada para cifrar o texto. Como a Cifra de César usa sempre a mesma substituição (o número 3 que representa o deslocamento) o mesmo texto será cifrado sempre da mesma maneira, assim fica fácil descobrir a mensagem original. Para aumentar a segurança da cifra pode-se introduzir uma chave, que nesse caso será o número de deslocamentos, assim matematicamente temos: ( ), e ( ), Onde: C = texto cifrado T = texto claro k = chave Esse processo de utilizar uma chave aumenta a segurança da cifra, pois existem agora 26 maneiras diferentes de se criptografar a mesma mensagem dependendo da chave utilizada. A Tabela 1 mostra todas as formas cifradas do mesmo texto dependendo da chave. O adversário que quiser tentar adivinhar a cifra, agora terá que descobrir a chave utilizada para a criptografia.

20 20 Texto Claro Chave Texto Cifrado Roma vai invadir o Egito 1 spnb wbj jowbejs p fhjup Roma vai invadir o Egito 2 tqoc xck kpxcfkt q gikvq Roma vai invadir o Egito 3 urpd ydl lqydglu r hjlwr Roma vai invadir o Egito 4 vsqe zem mrzehmv s ikmxs Roma vai invadir o Egito 5 wtrf afn nsafinw t jlnyt Roma vai invadir o Egito 6 xusg bgo otbgjox u kmozu Roma vai invadir o Egito 7 yvth chp puchkpy v lnpav Roma vai invadir o Egito 8 zwui diq qvdilqz w moqbw Roma vai invadir o Egito 9 axvj ejr rwejmra x nprcx Roma vai invadir o Egito 10 bywk fks sxfknsb y oqsdy Roma vai invadir o Egito 11 czxl glt tyglotc z prtez Roma vai invadir o Egito 12 daym hmu uzhmpud a qsufa Roma vai invadir o Egito 13 ebzn inv vainqve b rtvgb Roma vai invadir o Egito 14 fcao jow wbjorwf c suwhc Roma vai invadir o Egito 15 gdbp kpx xckpsxg d tvxid Roma vai invadir o Egito 16 hecq lqy ydlqtyh e uwyje Roma vai invadir o Egito 17 ifdr mrz zemruzi f vxzkf Roma vai invadir o Egito 18 jges nsa afnsvaj g wyalg Roma vai invadir o Egito 19 khft otb bgotwbk h xzbmh Roma vai invadir o Egito 20 ligu puc chpuxcl i yacni Roma vai invadir o Egito 21 mjhv qvd diqvydm j zbdoj Roma vai invadir o Egito 22 nkiw rwe ejrwzen k acepk Roma vai invadir o Egito 23 oljx sxf fksxafo l bdfql Roma vai invadir o Egito 24 pmky tyg gltybgp m cegrm Roma vai invadir o Egito 25 qnlz uzh hmuzchq n dfhsn Roma vai invadir o Egito 26 roma vai invadir o egito Tabela 1: Exemplo de Cifra utilizando Chave

21 21 Texto Cifrado Chave Possível Texto Claro bywk fks sxfknsb y oqsdy 1 axvj ejr rwejmra x nprcx bywk fks sxfknsb y oqsdy 2 zwui diq qvdilqz w moqbw bywk fks sxfknsb y oqsdy 3 yvth chp puchkpy v lnpav bywk fks sxfknsb y oqsdy 4 xusg bgo otbgjox u kmozu bywk fks sxfknsb y oqsdy 5 wtrf afn nsafinw t jlnyt bywk fks sxfknsb y oqsdy 6 vsqe zem mrzehmv s ikmxs bywk fks sxfknsb y oqsdy 7 urpd ydl lqydglu r hjlwr bywk fks sxfknsb y oqsdy 8 tqoc xck kpxcfkt q gikvq bywk fks sxfknsb y oqsdy 9 spnb wbj jowbejs p fhjup bywk fks sxfknsb y oqsdy 10 roma vai invadir o egito bywk fks sxfknsb y oqsdy 11 qnlz uzh hmuzchq n dfhsn bywk fks sxfknsb y oqsdy 12 pmky tyg gltybgp m cegrm bywk fks sxfknsb y oqsdy 13 oljx sxf fksxafo l bdfql bywk fks sxfknsb y oqsdy 14 nkiw rwe ejrwzen k acepk bywk fks sxfknsb y oqsdy 15 mjhv qvd diqvydm j zbdoj bywk fks sxfknsb y oqsdy 16 ligu puc chpuxcl i yacni bywk fks sxfknsb y oqsdy 17 hft otb bgotwbk h xzbmh bywk fks sxfknsb y oqsdy 18 jges nsa afnsvaj g wyalg bywk fks sxfknsb y oqsdy 19 ifdr mrz zemruzi f vxzkf bywk fks sxfknsb y oqsdy 20 hecq lqy ydlqtyh e uwyje bywk fks sxfknsb y oqsdy 21 gdbp kpx xckpsxg d tvxid bywk fks sxfknsb y oqsdy 22 fcao jow wbjorwf c suwhc bywk fks sxfknsb y oqsdy 23 ebzn inv vainqve b rtvgb bywk fks sxfknsb y oqsdy 24 daym hmu uzhmpud a qsufa bywk fks sxfknsb y oqsdy 25 czxl glt tyglotc z prtez bywk fks sxfknsb y oqsdy 26 bywk fks sxfknsb y oqsdy Tabela 2: Exemplo de CriptoAnálise

22 22 Uma possível forma de descobrir o texto original é tentar todas as chaves possíveis até se obter um texto claro. Utilizando como exemplo o texto cifrado obtido com a chave = 10 e tentando decriptografá-lo com todas as chaves possíveis obtémse a Tabela 2. Então conhecendo o algoritmo utilizado na criptografia podem-se tentar todas as chaves para obter um resultado provável para o texto claro, essa técnica é conhecida como ataque de força bruta. Para aumentar a segurança utilizam-se chaves maiores, com isso o tempo para utilizar todas as chaves possíveis acaba ficando inviável. A tabela abaixo fornece o tempo médio para se descobrir uma chave levando em consideração que cada tentativa leva 1 e depois que cada tentativas levará 1. Tamanho da chave(bits) Nº de chaves Tempo médio 1 tentativa / Tempo médio tentativas / 32 35,8 minutos 2,15 milisegundos anos 10,01 horas Tabela 3: Tempo médio para busca de chave [12] O aumento do número de tentativas por microssegundo está relacionado com o aumento da capacidade de processamento dos computadores, então quando se escolhe um sistema criptográfico não se acredita que ele é inquebrável e sim que ele é computacionalmente seguro. Para um sistema criptográfico ser computacionalmente seguro, ele precisa ter um custo para quebrar a cifra superior ao valor da informação protegida ou que o tempo exigido para obter a informação seja superior a vida útil da informação. A cifra de César apresenta um método conhecido por substituição [12]. Observando o texto claro e o cifrado de chave = 10 vê-se que todas as letras A foram substituídas pela letra K, apesar desse processo ter sido utilizado por bastante tempo é muito fácil descobrir o texto claro utilizando a frequência das letras. Isto é feito da seguinte forma:

23 23 1º descobrindo as frequências das letras num texto na linguagem desejada, no nosso caso o português; 2º realizando uma contagem de frequência no texto cifrado; 3º comparando os dois padrões e obtendo prováveis textos claros; 4º decidindo qual texto claro pode ser a informação desejada. Para evitar este tipo de ataque utiliza-se outra técnica de criptografia, conhecida como transposição [12], que consiste em permutar as letras da mensagem. Assim, por exemplo, a palavra touca poderia ficar : touac, otuca, catou e assim por diante. Ainda pode-se aplicar a análise de frequência, mas se teria mais dificuldade de encontrar o texto claro. Os sistemas criptográficos atuais utilizam combinações dessas duas técnicas para aumentar a eficácia [12]. Outra mudança foi com relação ao segredo dos algoritmos, como visto com o exemplo do tamanho da chave, se as chaves forem suficientemente grandes pode-se deixar o algoritmo conhecido. Essa atitude apresenta como vantagem permitir que a comunidade de criptoanalistas estude e ataque o algoritmo, divulgando informações sobre falhas e possíveis melhorias mantendo o algoritmo seguro, sendo o ataque de força bruta a única maneira de quebrá-lo. A criptografia simétrica é ideal para manter a confidencialidade de arquivos e dados, a grande questão é como manter a chave secreta e principalmente como compartilhá-la de uma forma segura. 2.3 CRIPTOGRAFIA ASSIMÉTRICA Também conhecida como criptografia de chave pública, é caracterizada por utilizar uma chave para criptografia e uma chave diferente para decriptografia [12]. Com a criptografia assimétrica além da confidencialidade pode-se conseguir a autenticação do emissor, podendo esse sistema ser utilizado para assinaturas digitais. Como requisito para o funcionamento da criptografia assimétrica faz-se necessário encontrar uma função unidirecional com segredo, ou seja:

24 24 ( ) ( ) Como visto no esquema acima, a resolução de uma função deve ser computacionalmente fácil, mas a função inversa tem de ser computacionalmente difícil. Um exemplo dessa função unidirecional é a multiplicação de dois números primos grandes, o que é computacionalmente fácil de obter. Já a função inversa que seria a fatoração de um número grande em seus fatores primos, também grandes, exige grande esforço computacional. Por essa razão, esta é a função utilizada no algoritmo de criptografia assimétrica mais conhecido FUNCIONAMENTO O funcionamento básico da criptografia assimétrica está descrito nos passos que seguem e pode ser observado na Figura 2: 1- Cada usuário gera um par de chaves 2- Cada usuário torna uma chave pública e permanece com outra privada 3- Para o emissor enviar uma mensagem confidencial, ele criptografa a mensagem com a chave pública do destinatário. 4- Somente o destinatário pode decriptografar a mensagem usando a sua chave privada.

25 25 Figura 2: Esquema de Criptografia Assimétrica Este é o funcionamento básico que fornece a mesma função da criptografia simétrica. Pode-se estender a funcionalidade da criptografia assimétrica fornecendo a possibilidade de utilizar autenticação. Se um emissor criptografar uma mensagem com a sua chave privada, qualquer um poderá ler essa mensagem utilizando a sua chave pública, mas o destinatário terá certeza de quem enviou a mensagem desde que o emissor mantenha a sua chave privada segura. O problema dessa abordagem é que essa mensagem não possui confidencialidade, pois qualquer pessoa poderia ler a mensagem. A solução para este problema está em realizar uma criptografia dupla, primeiro o emissor criptografa a mensagem com a sua chave privada e depois com a chave pública do destinatário. Agora somente o destinatário terá acesso ao conteúdo da mensagem decriptografando-a com a sua chave privada, e a seguir ele continua a decriptografar com a chave pública do emissor para confirmar a origem da mensagem. O algoritmo de criptografia assimétrica também fornece a integridade de uma mensagem, ou seja, o destinatário pode ter certeza de que a mensagem não foi alterada. Essa característica é obtida através da assinatura digital que se utiliza dos conceitos apresentados anteriormente com mais alguns detalhes que serão apresentados nas Seções 2.4 e 2.5.

26 ALGORITMO RSA O método de criptografia assimétrica foi apresentado pela primeira vez em 1976 por Whitfield Diffie e Martin Hellman [2], eles apresentaram apenas a base teórica deste método faltando apresentar um algoritmo com aplicação prática. Assim, em 1978, três professores do Instituto MIT, Ronald Rivest, Adi Shamir e Leonard Adleman apresentaram um algoritmo conhecido como RSA [12] devido as iniciais de seus sobrenomes. Este foi o primeiro algoritmo a ser utilizado para a criptografia assimétrica e ainda hoje é o mais famoso e o mais utilizado DESCRIÇÃO A criptografia e a decriptografia é realizada em blocos, ou seja, se o tamanho da mensagem for maior que o do bloco, essa mensagem é dividida em vários blocos e cada bloco vai sendo cifrado até termos a mensagem completamente cifrada [12]. A criptografia tem a seguinte forma: ( ) Onde: C = texto cifrado, M = texto claro, n = número escolhido,

27 27 e = expoente conhecido pelo emissor, d = expoente conhecido pelo receptor. O valor de n é conhecido pelo emissor e pelo receptor, assim a chave pública será PU = {e,n e a chave privada PR = {d,n. Para que esse algoritmo funcione deve ser possível encontrar valores de e, d e n que satisfaçam a última equação apresentada. Consegue-se isso usando a função totiente de Euler ( ) [12] e de acordo com a teoria dos números para que, para todo M < n, d e e tem que ser inversos multiplicativos mod ( ), então : ( ). Da teoria dos números sabe-se também que ( ) ( )( ), sendo p e q números primos, assim o nosso n passa a ser pq, onde lembrando da descrição de criptografia assimétrica sobre função unidirecional sabe-se que calcular n = pq é computacionalmente fácil, mas dado um n grande encontrar p e q é computacionalmente difícil. O algoritmo utilizado para a geração de chaves é o seguinte: 1. Selecione p e q primos 2. Calcule n = p x q 3. Calcule ( ) ( )( ) 4. Selecione o inteiro e tal que ( ( ) ) ( ) 5. Calcule d, ( ) 6. Chave pública será PU = {e,n 7. Chave privada será PR = {d,n

28 AUTENTICAÇÃO DE MENSAGENS E FUNÇÕES HASH A autenticação de mensagens e as funções de hash são técnicas utilizadas para garantir a integridade dos dados da mensagem transmitida, ou seja, que a mensagem recebida é a mensagem original, garantindo que ela não foi alterada de nenhuma forma [12]. Além disso, essas técnicas ainda permitem a autenticação da origem. Para entender a importância da integridade de dados vamos usar como exemplo a Cifra de César com k = 3, então a mensagem Roma vai dominar o mundo será criptografada como urpd ydl grplqdu r pxqgr. Decriptografando essa mensagem, recupera-se a mensagem original, mas o que aconteceria se um oponente interceptasse a mensagem e enviasse uma mensagem aleatória em seu lugar. Como exemplo, o texto aleatório xrta hfgrad lsoms fr gadhjs seria decriptografado como uoqx ecdoxa ipljp co dxaegp, usando o português fica fácil de ver que esta mensagem não tem nenhum significado. Muitas vezes as mensagens criptografadas são apenas padrões de bits e o reconhecimento se uma mensagem tem significado ou não é difícil de ser automatizado. Utilizando uma função de autenticação de mensagem ou uma função hash tem-se a confiança necessária de que a mensagem recebida foi a mensagem enviada, como será visto nas Seções e FUNCIONAMENTO DA AUTENTICAÇÃO DE MENSAGEM A autenticação de mensagem usa uma função de comprimento fixo, chamada MAC (código de autenticação de mensagem), também conhecida como soma de verificação criptográfica, que se utiliza de uma chave para gerar um pequeno bloco de dados [12]. Este bloco é anexado junto à mensagem, então bloco e mensagem são criptografados e enviados ao destinatário.

29 29 Após decriptografar a mensagem, o destinatário separa a mensagem do MAC. Utilizando a mesma chave, ele calcula o MAC da mensagem recebida e, se este for igual ao MAC recebido, a mensagem não foi alterada. A chave da função MAC precisa permanecer secreta, sendo do conhecimento apenas do emissor e do destinatário. Dessa maneira, se um oponente interceptar a mensagem e gerar uma mensagem aleatória, não conseguirá gerar o MAC correto por desconhecer a chave. Como a função MAC será calculada novamente no destino, esta função não precisa ser reversível. Utilizada dessa forma, a mensagem agora possui confidencialidade, fornecida pela criptografia, autenticação, somente o emissor que possua a chave k pode gerar um MAC correto, e integridade da mensagem, nos garantindo que ela não foi alterada FUNCIONAMENTO DA FUNÇÃO HASH A função hash, também conhecida como síntese de mensagem ou valor de hash, é uma função de todos os bits da mensagem, ou seja, se um bit for alterado irá mudar o código hash. A principal diferença da função hash e a função MAC está no fato da função hash não utilizar uma chave, o hash é calculado apenas utilizando a mensagem como entrada [12]. Calcula-se o valor de hash de uma mensagem, esse hash é anexado a mensagem, e após isso, a mensagem é criptografada e enviada ao destinatário. A autenticação obtida é similar a que consegue-se usando a função MAC. Outra forma de se autenticar uma mensagem seria apenas criptografar o valor de hash, note-se que dessa forma não existe a confidencialidade, mas o custo computacional é reduzido. O principio da assinatura digital consiste em criptografar o valor de hash com a chave privada do emissor usando criptografia assimétrica. Utilizando a função hash, dessa forma, garante-se a integridade do documento e que apenas o emissor poderia ter criptografado aquele hash, note-se que para uma assinatura digital não é necessário que o documento esteja criptografado.

30 ASSINATURA DIGITAL A assinatura digital [12] foi desenvolvida pensando-se em substituir a assinatura de papel e como forma de resolver uma disputa entre duas partes envolvidas, Stallings afirma: Uma assinatura digital é uma técnica de autenticação que também inclui medidas para impedir a retratação pela origem. [12,p.227]. Possuindo um formato digital ela apresenta algumas características intrínsecas a esse formato. Os requisitos para uma assinatura digital [12] é que ela seja capaz de: Verificar o autor. Autenticar o conteúdo no momento da assinatura, fornecendo a confiança da integridade do documento. Permitir que terceiros consigam verificá-la para resolução de disputas. Garantir a irretratabilidade da assinatura, ou seja, o assinante não pode negar que efetuou a mesma (não-repúdio). O princípio da assinatura digital é, basicamente, calcular um valor de hash, criptografá-lo com a chave privada do emissor e anexar esse valor ao documento eletrônico. Este processo garante a integridade do documento e verifica a identidade do autor, mas em alguns casos onde a tempestividade é importante utiliza-se um carimbo de tempo [9]. Terceiros podem verificar a assinatura utilizando a chave pública do emissor de acordo com o processo a seguir: I. A calcula o hash de uma mensagem que ele deseja assinar; II. A criptografa esse hash com a sua chave privada e anexa a mensagem; III. A envia a mensagem assinada para B; IV. B utiliza a chave pública de A para decriptografar o hash anexado; V. B calcula o valor hash da mensagem e compara com o valor hash recebido;

31 31 VI. Se os valores forem iguais, a assinatura é válida e somente A poderia ter assinado, pois somente A possui a chave privada. O processo apresentado não garante a confidencialidade da informação e ainda apresenta o problema de que A pode negar ter enviado a mensagem afirmando que a sua chave privada foi comprometida. Visando garantir a irretratabilidade utiliza-se o princípio do terceiro confiável, ou seja, uma entidade neutra que será o arbitro da disputa. Para esse fim foi desenvolvido a Infra-Estrutura de Chaves Públicas INFRA ESTRUTURA DE CHAVE PÚBLICA Stallings [12] afirma que: A RFC 2822 (Internet Security Glossary) define a infra-estrutura de chave pública (PKI Public Key-Infrastructure) como o conjunto de hardware, software, pessoas, políticas e procedimentos necessários para criar, gerenciar, armazenar, distribuir e revogar certificados digitais com base na criptografia assimétrica. Apesar dessa definição ser bastante completa é preciso entender o significado de certificado digital para uma melhor compreensão do que vem a ser uma Infra-Estrutura de chave pública. O certificado digital é um arquivo eletrônico que apresenta a identificação do seu proprietário e a sua chave pública, e é utilizado para divulgar a chave pública do usuário a todos que necessitem verificar as assinaturas digitais realizadas por esse usuário [12]. É utilizado como garantia de que a chave pública utilizada na verificação da assinatura não foi alterada por terceiros. Um exemplo de aplicação desse conceito seria um documento de doação de A para C, onde esse documento tem de ser apresentado a B para que tenha eficácia. Se C gerar um par de chaves qualquer assinando o documento, C poderia informar a B que aquela chave pública gerada pertence a A, falsificando o documento. Para evitar esse tipo de falsificação utilizam-se os certificados digitais. Como visto no exemplo anterior, a distribuição de chave pública tem de ser feita de uma maneira confiável. Para resolver este problema e o problema da

32 32 irretratabilidade é utilizada uma Autoridade Certificadora (AC). Esta Autoridade tem como responsabilidade emitir os certificados digitais utilizados por seus usuários, garantindo que eles sejam válidos. Voltando ao exemplo da doação, B recorreria a Autoridade Certificadora para saber qual é a chave pública de A e se esta é válida, assim A não pode negar que tenha assinado o documento e este também não pode ser falsificado. Caso a chave privada de A seja comprometida, A irá informar a Autoridade Certificadora que será responsável por revogar o certificado de A. Para que não seja necessário entrar em contato com a Autoridade Certificadora toda vez que uma assinatura seja efetuada, os certificados são assinados com a chave privada da AC. Assim, basta utilizar a chave pública da AC para verificar que um certificado é válido.

33 33 3 ANDROID Android é uma plataforma de desenvolvimento para aplicativos móveis, criada pelo Google e mantida e desenvolvida atualmente pela Open HandSet Alliance. Utiliza sistema operacional Linux e a linguagem JAVA para desenvolvimento. O objetivo da Open HandSet Alliance é criar uma plataforma única para diversos dispositivos móveis permitindo que os aplicativos possam ser criados uma única vez e distribuídos para o maior número de equipamentos e modelos [7]. 3.1 DESCRIÇÃO DA ARQUITETURA Android é construído como uma pilha de softwares com várias camadas uma sobre a outra com as camadas dos níveis inferiores fornecendo serviços para as camadas superiores. Uma visão de alto nível desta pilha é vista na Figura 3, a camada que está na base é o núcleo do sistema operacional Linux, acima desta encontra-se as bibliotecas C e a máquina virtual Dalvik, as duas camadas seguintes são as bibliotecas JAVA e a camada no topo que possui as aplicações utilizadas pelos usuários [11]. O Kernel 2.6 do Linux foi utilizado como sistema operacional, ele é responsável pelo gerenciamento do hardware, memória, processos e todas as outras atividades que são delegadas ao sistema operacional. Assim o desenvolvedor não precisa se preocupar em como acessar e gerenciar dispositivos, bastando solicitar ao sistema operacional os dispositivos prontos para uso. A utilização do kernel do Linux permite aos fabricantes produzir drivers para um ambiente conhecido [11].

34 34 Figura 3 : Visão Alto Nível da Pilha de Software Android [5] As bibliotecas C/C++ são OpenGL, WebKit, FreeType, Secure Sockets Layer (SSL) entre outras. Essas bibliotecas são construídas com base na Berkeley Software Distribution (BSD) e otimizadas para funcionar com sistemas embarcados que utilizam Linux [7]. O Android não possui uma máquina virtual JAVA e sim uma máquina virtual otimizada que requer pouca memória chamada DALVIK. O desenvolvedor escreve um programa JAVA normalmente, mas após gerar o bytecode (.class) ele precisa ser convertido para o formato.dex (Dalvik Executable). Por fim, reúne-se os arquivos.dex com outros recursos, como imagens e áudios, em um único pacote.apk (Android Package File) [13]. As bibliotecas JAVA que se encontram na camada acima da máquina virtual Dalvik fornecem os serviços necessários para o desenvolvimento das aplicações

35 35 Android como acesso a internet, banco de dados, câmera, GPS, interfaces gráficas e outros. No topo da pilha encontram-se as aplicações que o usuário pode utilizar e é nesta camada que o aplicativo desenvolvido neste trabalho irá se localizar. Um diferencial do Android para outras plataformas de dispositivos móveis é que não há diferença entre uma aplicação nativa do sistema e outra produzida por desenvolvedores independentes, isso garante que uma aplicação independente pode utilizar todo o poder computacional do dispositivo. 3.2 AMBIENTE DE DESENVOLVIMENTO Neste trabalho foi utilizado a IDE (Integrated Development Environment) Eclipse [18], pois existem plugins desenvolvidos pelo Google para este ambiente, além de uma documentação extensa de como desenvolver aplicativos com este IDE. O Eclipse pode ser obtido em [18], o Google recomenda que se utilize a última versão classic. Neste trabalho foi utilizado o Eclipse classic O Eclipse foi desenvolvido para se escrever aplicações JAVA, para desenvolver aplicativos Android é necessário o Android SDK (Software Development Kit) que pode ser obtido em [19] e do ADT (Android Development Tools) plugin que é desenvolvido pelo Google para aproveitar todas as funcionalidades do Eclipse, bem como oferecer novas funcionalidades necessárias para o desenvolvimento de aplicativos Android [5]. Entre as funcionalidades oferecidas pelo ADT está a possibilidade de executar o emulador de dispositivos Android diretamente do Eclipse, permitindo utilizar o debug e a visualização de logs. Outra funcionalidade interessante é a criação automática do arquivo em extensão.apk (Android Package File) permitindo que este arquivo seja assinado digitalmente possibilitando a instalação em um dispositivo real [7].

36 INSTALANDO O AMBIENTE DE DESENVOLVIMENTO Para o desenvolvimento deste trabalho foi utilizado o sistema operacional Windows 7 Professional de 64 bits, por isso o Eclipse para Windows 64 bits foi escolhido. Após isso foi feito o download do Android SDK com o instalador para o Windows. Esse processo é simples e totalmente automático apenas tendo que seguir o instalador. Para instalar o plugin ADT é necessário inicializar o Eclipse e selecionar o menu Help > Install New Software. Na tela que irá se abrir digita-se ADT e o Eclipse irá mostrar os repositórios existentes, caso isso não aconteça pode-se adicionar um repositório com a seguinte URL : https://dl-ssl.google.com/android/eclipse/. Após selecionar os repositórios clica-se em Next e o assistente irá instalar o ADT, quando a instalação estiver concluída clica-se em Finish e recomenda-se que o Eclipse seja reiniciado. Após instalar o ADT é necessário informar ao Eclipse a localização do SDK, para isso basta acessar o menu Window>Preferences e selecionar a opção Android. Na tela que irá aparecer digita-se o caminho correto para o SDK e concluise a configuração do ambiente de desenvolvimento ANDROID VIRTUAL DEVICE Android Virtual Device (AVD) é uma configuração virtual de um dispositivo móvel, a partir desta configuração o emulador criará uma simulação com a mesma configuração de hardware de um dispositivo real [5]. Ao definir um AVD além de se criar a definição de hardware é necessário determinar a versão alvo do Android. Para este trabalho foi definido um AVD com o Android 2.2 como alvo, 512MB o tamanho do cartão de memória e uma tela WQVGA400, esta configuração é apresentada na Figura 4. Cada versão do Android tem um código identificador, no nosso caso o Android 2.2 é identificado pela API level 8.

37 Figura 4 : Tela de configuração AVD 37

38 VISÃO DE UM APLICATIVO Ao se criar um projeto Android é necessário especificar o nome do projeto, o nome do pacote, o nome da classe que será criada, a versão alvo do Android e a versão mínima do SDK necessário para executar o aplicativo. Uma estrutura de diretórios pré-definida será criada como mostrado na Figura 5, bem como alguns arquivos essenciais a um aplicativo Android. Apesar de se utilizar a linguagem JAVA no desenvolvimento de aplicativos Android, existem pequenas diferenças e alguns conceitos novos necessários para a criação desses programas. Uma diferença essencial está na aplicação do paradigma MVC (Modelo Visão Controle ) [1]. Todo aplicativo Android possui um arquivo XML responsável pela apresentação visual, uma Activity que é a classe responsável por captar as interações com o usuário e as outras classes JAVA que correspondem ao modelo da aplicação. A classe Activity criada por padrão no Eclipse exibe o clássico texto Hello World e o nome do projeto. Todo o layout de uma tela é feito através de um arquivo XML, quais componentes serão utilizados, seu posicionamento, as cores da tela, as imagens e todos os detalhes do layout estão nesse arquivo. Para que esta tela seja exibida necessitase de uma Activity que é a classe responsável por definir qual View será desenhada na tela e por controlar os eventos desta [7].

39 39 Figura 5 : Visão da Estrutura de um Projeto Android são: Na estrutura vista na Figura 5 os diretórios e arquivos mais importantes src Esta pasta contém todas as classes utilizadas no projeto. gen Esta pasta possui uma classe, R.java, gerada automaticamente com a finalidade de permitir o acesso das classes dos projetos aos recursos como arquivos e imagens. res Esta pasta possui os recursos do aplicativo. As subpastas drawable armazenam as imagens separadas pela resolução da tela, a subpasta layout armazena os arquivos responsáveis pela interface gráfica e a subpasta values contém os arquivos XML responsáveis pela internacionalização. AndroidManifest.xml é o arquivo responsável pelas configurações principais da aplicação.

40 40 4 ASSINADOR DIGITAL O aplicativo desenvolvido possibilita a assinatura digital, bem como a verificação de uma assinatura utilizando dispositivos móveis que possuam o sistema Android, essa verificação garante a integridade e a autenticidade do documento. A assinatura é efetuada utilizando o hash SHA1 com o algoritmo de chave assimétrica RSA. Este capítulo aborda tanto a modelagem e análise do software, bem como a sua implementação. Dois casos de uso foram descritos e utilizados para a elicitação dos requisitos funcionais, já os requisitos não funcionais foram obtidos após diversos testes e pesquisas. Os diagramas UML foram utilizados para um melhor entendimento do sistema. 4.1 LEVANTAMENTO DOS REQUISITOS O aplicativo desenvolvido deve permitir a Assinatura de documentos eletrônicos e deve ser capaz de verificar a validade de tais Assinaturas. É interessante notar que documento eletrônico pode ser qualquer arquivo digital, como arquivos de texto, imagens, áudio, vídeos, etc. Para a realização da Assinatura é necessário que o usuário possua uma chave privada e o documento a ser assinado, esta chave privada deve estar armazenada num arquivo PKCS#12. PKCS é o acrônimo de Public-Key Cryptography Standards [4] e PKCS#12 é um formato de arquivo utilizado para armazenar chaves privadas com os seus respectivos certificados de chave pública. O PKCS#12 também pode armazenar apenas certificados e é o padrão utilizado neste trabalho por ser o mais utilizado em softwares de Assinatura Digital..

41 41 As assinaturas geradas são salvas com a extensão.p7s que corresponde ao padrão PKCS#7, este padrão é o mais utilizado para assinaturas digitais [4]. Para verificar as Assinaturas digitais precisamos do certificado com a chave pública do autor da Assinatura, o documento original e a Assinatura propriamente dita. Os certificados devem estar armazenados num arquivo PKCS#12 e a Assinatura deve possuir a extensão.p7s Requisitos Funcionais O aplicativo deve assinar digitalmente qualquer tipo de arquivo. O aplicativo deve verificar as assinaturas geradas confirmando a integridade e a autenticidade dos documentos. O aplicativo deve ser capaz de recuperar as chaves públicas dos certificados para a verificação das assinaturas. O aplicativo deve ser capaz de recuperar as chaves privadas dos arquivos PKCS#12 para efetuar as assinaturas. As assinaturas digitais devem ser geradas utilizando o algoritmo RSA e função hash SHA Requisitos Não Funcionais O Assinador Digital precisa de um dispositivo móvel com sistema Android 2.2 ou superior. O Assinador Digital deve ser capaz de ler e utilizar arquivos no formato PKCS#12. As assinaturas geradas devem utilizar a extensão.p7s e não devem estar encapsuladas com o documento original.

42 MODELAGEM DO SISTEMA A Linguagem de Modelagem Unificada(UML) é uma linguagem visual para especificar, construir e documentar os artefatos dos sistemas [6,p.39]. Larman ainda afirma UML é a notação diagramática padrão, de fato, para desenhar ou apresentar figuras relacionadas a software [6,p.39]. Os diagramas UML foram utilizados para facilitar a modelagem e o entendimento do aplicativo desenvolvido. Foram criados 4 diagramas, 2 diagramas de atividades e 2 diagramas de sequência, para modelar o processo de assinatura e de verificação de assinaturas. Casos de uso são narrativas em texto, amplamente utilizadas para descobrir e registrar requisitos [6, p. 87]. Foram descritos dois casos de uso que representam as funcionalidades do aplicativo desenvolvido, assinar e verificar assinaturas de documentos eletrônicos. Baseando-se nesses casos de uso foram enumerados os requisitos funcionais e criados diagramas de atividade para facilitar o entendimento do fluxo de acontecimentos. Figura 6: Diagrama Casos de Uso Caso de Uso : Assinar Documento 1. O Usuário seleciona o arquivo pkcs O aplicativo solicita a senha do arquivo pkcs12.

43 43 3. O Usuário digita a senha do arquivo pkcs O Aplicativo exibe todas as chaves privadas e solicita que o usuário selecione uma. 5. O usuário seleciona a chave privada. 6. O aplicativo solicita a senha da chave privada. 7. O usuário digita a senha da chave privada. 8. O usuário seleciona o documento a ser assinado. 9. O usuário solicita que a assinatura seja efetuada. 10. O aplicativo assina o documento e salva a assinatura com a extensão.p7s no mesmo diretório do documento. Fluxo Alternativo : 1a. Arquivo PKCS#12 inválido : 1. Aplicativo informa que o arquivo é inválido. 2. Aplicativo solicita que o Usuário selecione outro arquivo. 3a. Senha Incorreta. 1. Aplicativo informa ao Usuário e aguarda que o mesmo digite nova senha. 7a. Senha Incorreta. 1. Aplicativo informa ao Usuário e aguarda que o mesmo digite nova senha. Para este caso de uso foi desenhado um diagrama de atividades apresentado na figura 7. No diagrama está representado apenas o fluxo principal do caso de uso.

44 Figura 7 : Diagrama de Atividades do Processo de Assinatura 44

45 45 Caso de Uso: Verificar Assinatura 1. O usuário seleciona a assinatura que deseja verificar. 2. O usuário seleciona o arquivo pkcs O aplicativo solicita a senha do arquivo pkcs O Usuário digita a senha do arquivo pkcs O Aplicativo exibe todos os certificados e solicita que o usuário selecione um. 6. O usuário seleciona o certificado. 7. O usuário seleciona o documento original. 8. O usuário solicita que a assinatura seja verificada. 9. O aplicativo verifica a assinatura e apresenta a mensagem da verificação. Fluxo Alternativo : 2a. Arquivo PKCS#12 inválido : 1. Aplicativo informa que o arquivo é inválido. 2. Aplicativo solicita que o Usuário selecione outro arquivo. 4a. Senha Incorreta. 1. Aplicativo informa ao Usuário e aguarda que o mesmo digite nova senha. Para o caso de uso Verificar Assinatura foi desenhado o diagrama de atividades da figura 8, como no caso de uso anterior foi representado apenas o fluxo principal.

46 Figura 8 : Diagrama de Atividades do Processo de Verificação de Assinatura 46

47 IMPLEMENTAÇÃO O aplicativo desenvolvido apresenta duas funções básicas: Assinatura e Verificação de Assinaturas digitais. Estas operações são realizadas pela classe Assinador.java utilizando a biblioteca java.security para implementar o algoritmo RSA com o hash SHA 1. Utilizando o modelo MVC imposto pela arquitetura Android foi criado um arquivo XML para cada tela do aplicativo, bem como uma classe que estende a classe Activity para funcionar como o controlador de cada tela. Uma classe Ferramentas.java foi criada para cuidar da leitura e escrita dos arquivos, nesta classe há três métodos. Um método irá escrever, outro irá ler e um terceiro transforma um arquivo File do JAVA em um array de bytes. O Android não possui biblioteca para disponibilizar visualização dos documentos armazenados, por isso foi utilizado um projeto android-filechooser [17], que teve a classe FileChooser modificada para atender as necessidades do aplicativo. A classe Assinador.java é a classe principal do aplicativo, ela possui dois métodos um para assinar documentos e outro para verificar as assinaturas. Figura 9 : Diagrama de Sequência do Processo de Assinatura

48 48 O método assinar() está representado no diagrama de sequência da Figura 9. A classe Signature utiliza o método getinstance( Sha1WithRSA, BC ) para obter uma instância que irá utilizar o algoritmo de assinatura RSA com o hash SHA 1 utilizando o provider do BouncyCastle.. Após isso, esta instância de Signature é inicializada para realizar assinaturas com a chave privada escolhida, utilizando o método initsign(chave). O método update(message) informa o documento que será assinado e, por fim, o método sign() produz um array de bytes que é a assinatura digital. Figura 10 : Diagrama de Sequência do Processo de verificação da Assinatura O método verificar() está representado no diagrama de sequência da Figura 10 e uma instância de Signature é criada da mesma forma que no método assinar(). A inicialização foi feita com o método initverify(certificado) utilizando o certificado que possui a chave pública do autor da assinatura. O método update(message) funciona da mesma forma que no método assinar() e, por fim, a verificação é realizada utilizando-se o método verify(assinatura).

49 49 Figura 11 : Telas do Aplicativo Desenvolvido 4.4 TESTES REALIZADOS Para a verificação do Assinador foi utilizado o seguinte roteiro: 1. Criou-se três arquivos com os seguintes textos Sidney, SidneyLoyola e Sidney Loyola. 2. Esses arquivos foram salvos em três formatos diferentes pdf, Word e txt: a. Sidney.txt,Sidney.docx,Sidney.pdf b. SidneyLoyola.txt, SidneyLoyola.docx, SidneyLoyola.pdf c. Sidney Loyola.txt, Sidney Loyola.docx, Sidney Loyola.pdf 3. Todos os arquivos foram assinados digitalmente com o aplicativo, gerando assinaturas com o mesmo nome do arquivo e extensão p7s. 4. Foram realizadas diversas verificações com as assinaturas e seus respectivos documentos originais. Além disso, realizaram-se verificações com uma assinatura e um documento que não a originou.

Segurança da Informação

Segurança da Informação Segurança da Informação (Extraído da apostila de Segurança da Informação do Professor Carlos C. Mello) 1. Conceito A Segurança da Informação busca reduzir os riscos de vazamentos, fraudes, erros, uso indevido,

Leia mais

Desenvolvimento Android. http://www.larback.com.br

Desenvolvimento Android. http://www.larback.com.br Desenvolvimento Android http://www.larback.com.br Introdução ao Android O Android é a resposta da Google ao mercado crescente de dispositivos móveis. É uma nova plataforma de desenvolvimento baseado no

Leia mais

Aula 1 - Introdução e configuração de ambiente de desenvolvimento

Aula 1 - Introdução e configuração de ambiente de desenvolvimento Aula 1 - Introdução e configuração de ambiente de desenvolvimento Olá, seja bem-vindo à primeira aula do curso para desenvolvedor de Android, neste curso você irá aprender a criar aplicativos para dispositivos

Leia mais

Criptografia e Segurança em Redes Capítulo 9. Quarta Edição William Stallings

Criptografia e Segurança em Redes Capítulo 9. Quarta Edição William Stallings Criptografia e Segurança em Redes Capítulo 9 Quarta Edição William Stallings Capítulo 9 - Public Key Cryptography e RSA Cada egípicio recebia dois nomes que eram conhecidos respectivamente como o nome

Leia mais

Criptografia. 1. Introdução. 2. Conceitos e Terminologias. 2.1. Criptografia. 2.2. Criptoanálise e Criptologia. 2.3. Cifragem, Decifragem e Algoritmo

Criptografia. 1. Introdução. 2. Conceitos e Terminologias. 2.1. Criptografia. 2.2. Criptoanálise e Criptologia. 2.3. Cifragem, Decifragem e Algoritmo 1. Introdução O envio e o recebimento de informações são uma necessidade antiga, proveniente de centenas de anos. Nos últimos tempos, o surgimento da Internet e de tantas outras tecnologias trouxe muitas

Leia mais

Programação para Android

Programação para Android Programação para Android Aula 01: Visão geral do android, instalação e configuração do ambiente de desenvolvimento, estrutura básica de uma aplicação para Android Objetivos Configurar o ambiente de trabalho

Leia mais

Criptografia e Certificação Digital

Criptografia e Certificação Digital Criptografia e Certificação Digital Conheça os nossos produtos em criptografia e certificação digital. Um deles irá atender às necessidades de sua instituição. Criptografia e Certificação Digital Conheça

Leia mais

Auditoria e Segurança da Informação GSI536. Prof. Rodrigo Sanches Miani FACOM/UFU

Auditoria e Segurança da Informação GSI536. Prof. Rodrigo Sanches Miani FACOM/UFU Auditoria e Segurança da Informação GSI536 Prof. Rodrigo Sanches Miani FACOM/UFU Princípios de Criptografia Tópicos O papel da criptografia na segurança das redes de comunicação; Criptografia de chave

Leia mais

WatchKey. WatchKey USB PKI Token. Versão Windows. Manual de Instalação e Operação

WatchKey. WatchKey USB PKI Token. Versão Windows. Manual de Instalação e Operação WatchKey WatchKey USB PKI Token Manual de Instalação e Operação Versão Windows Copyright 2011 Watchdata Technologies. Todos os direitos reservados. É expressamente proibido copiar e distribuir o conteúdo

Leia mais

Referências. Criptografia e Segurança de Dados. Outras Referências. Alguns tipos de ataques. Alguns tipos de ataques. Alguns tipos de ataques

Referências. Criptografia e Segurança de Dados. Outras Referências. Alguns tipos de ataques. Alguns tipos de ataques. Alguns tipos de ataques Criptografia e Segurança de Dados Aula 1: Introdução à Criptografia Referências Criptografia em Software e Hardware Autores: Edward D. Moreno Fábio D. Pereira Rodolfo B. Chiaramonte Rodolfo Barros Chiaramonte

Leia mais

Auditoria e Segurança da Informação GSI536. Prof. Rodrigo Sanches Miani FACOM/UFU

Auditoria e Segurança da Informação GSI536. Prof. Rodrigo Sanches Miani FACOM/UFU Auditoria e Segurança da Informação GSI536 Prof. Rodrigo Sanches Miani FACOM/UFU Revisão Criptografia de chave simétrica; Criptografia de chave pública; Modelo híbrido de criptografia. Criptografia Definições

Leia mais

Desenvolvimento de um aplicativo básico usando o Google Android

Desenvolvimento de um aplicativo básico usando o Google Android Desenvolvimento de um aplicativo básico usando o Google Android (Organização do Ambiente) Programação de Dispositivos Móveis Mauro Lopes Carvalho Silva Professor EBTT DAI Departamento de Informática Campus

Leia mais

Conceitos de Segurança em Sistemas Distribuídos

Conceitos de Segurança em Sistemas Distribuídos Conceitos de Segurança em Sistemas Distribuídos Francisco José da Silva e Silva Laboratório de Sistemas Distribuídos (LSD) Departamento de Informática / UFMA http://www.lsd.ufma.br 30 de novembro de 2011

Leia mais

Criptografia de chaves públicas

Criptografia de chaves públicas Marcelo Augusto Rauh Schmitt Maio de 2001 RNP/REF/0236 Criptografia 2001 RNP de chaves públicas Criptografia Introdução Conceito É a transformação de um texto original em um texto ininteligível (texto

Leia mais

Sistemas Distribuídos Introdução a Segurança em Sistemas Distribuídos

Sistemas Distribuídos Introdução a Segurança em Sistemas Distribuídos Sistemas Distribuídos Introdução a Segurança em Sistemas Distribuídos Departamento de Informática, UFMA Graduação em Ciência da Computação Francisco José da Silva e Silva 1 Introdução Segurança em sistemas

Leia mais

www.projetoderedes.com.br Gestão da Segurança da Informação Professor: Maurício AULA 06 Criptografia e Esteganografia

www.projetoderedes.com.br Gestão da Segurança da Informação Professor: Maurício AULA 06 Criptografia e Esteganografia Gestão da Segurança da Informação Professor: Maurício Criptografia A forma mais utilizada para prover a segurança em pontos vulneráveis de uma rede de computadores é a utilização da criptografia. A criptografia

Leia mais

MANUAL DE INSTALAÇÃO CONFIGURAÇÃO IDE ECLIPSE

MANUAL DE INSTALAÇÃO CONFIGURAÇÃO IDE ECLIPSE MANUAL DE INSTALAÇÃO E CONFIGURAÇÃO IDE ECLIPSE T1011 GUILHERME RODRIGUES Ano 2015 MANUAL DE INSTALAÇÃO E CONFIGURAÇÃO DA IDE ECLIPSE. Neste documento aborda como instalar e configurar a IDE eclipse para

Leia mais

Introdução. Iremos procurar ver aqui alguns mecanismos de proteção mais utilizados como: criptografia e SSL. 1.0 Criptografia

Introdução. Iremos procurar ver aqui alguns mecanismos de proteção mais utilizados como: criptografia e SSL. 1.0 Criptografia Introdução Atualmente no mundo internacional das redes e com o comércio eletrônico, todo sistema de computador se tornou um alvo em potencial para intrusos. O problema é que não há como saber os motivos

Leia mais

PLATAFORMA ANDROID. Ariel Soares Teles arielsoaresteles@gmail.com

PLATAFORMA ANDROID. Ariel Soares Teles arielsoaresteles@gmail.com Universidade Federal do Maranhão UFMA Programa de Pós-graduação em Engenharia de Eletricidade PPGEE Área de Concentração: Ciência da Computação Disciplina: Introdução a Computação Móvel Professor: Dr.

Leia mais

CRIPFTOGRAFIA ASSIMÉTRICA DE IMAGENS UTILIZANDO ALGORITMO RSA

CRIPFTOGRAFIA ASSIMÉTRICA DE IMAGENS UTILIZANDO ALGORITMO RSA CRIPFTOGRAFIA ASSIMÉTRICA DE IMAGENS UTILIZANDO ALGORITMO RSA Bruno da Silva *, Humberto Pessoa Almeida *, Cintia Carvalho Oliveira e Daniele Carvalho Oliveira * Universidade de Uberaba Engenharia de Computação,

Leia mais

Criptografia Digital. Prof. Flávio Humberto Cabral Nunes

Criptografia Digital. Prof. Flávio Humberto Cabral Nunes Criptografia Digital Prof. Flávio Humberto Cabral Nunes Conteúdo 1. Introdução 2. Aplicações 3. Criptografia e seus Conceitos 4. Tipos de Criptografia em Relação ao Uso de Chaves 5. Autenticação Comum

Leia mais

Android Básico Hello World!

Android Básico Hello World! Android Básico Hello World! Instrutor Programador desde 2000 Aluno de doutorado Mestre em informática pelo ICOMP/UFAM Especialista em aplicações WEB FUCAPI marcio.palheta@gmail.com sites.google.com/site/marcio

Leia mais

EA998/MC933 Guido Araujo e Sandro Rigo

EA998/MC933 Guido Araujo e Sandro Rigo EA998/MC933 Guido Araujo e Sandro Rigo 1 Introdução Livros adotados (e-books) Learning Android, Marco Gargenta, O Reilly Media (livro texto) Professional Android Application, Reto Meier, Wrox Abordagem

Leia mais

fonte: http://www.nit10.com.br/dicas_tutoriais_ver.php?id=68&pg=0

fonte: http://www.nit10.com.br/dicas_tutoriais_ver.php?id=68&pg=0 Entenda o que é um certificado digital SSL (OPENSSL) fonte: http://www.nit10.com.br/dicas_tutoriais_ver.php?id=68&pg=0 1. O que é "Certificado Digital"? É um documento criptografado que contém informações

Leia mais

Atributos de segurança. TOCI-08: Segurança de Redes. Ataques a canais de comunicação. Confidencialidade

Atributos de segurança. TOCI-08: Segurança de Redes. Ataques a canais de comunicação. Confidencialidade Atributos de segurança TOCI-08: Segurança de Redes Prof. Rafael Obelheiro rro@joinville.udesc.br Aula 9: Segurança de Comunicações Fundamentais confidencialidade integridade disponibilidade Derivados autenticação

Leia mais

Capítulo 8. Segurança de redes

Capítulo 8. Segurança de redes Capítulo 8 Segurança de redes slide 1 2011 Pearson Prentice Hall. Todos os direitos reservados. Computer Networks, Fifth Edition by Andrew Tanenbaum and David Wetherall, Pearson Education-Prentice Hall,

Leia mais

Criptografia de Chave Pública

Criptografia de Chave Pública Criptografia de Chave Pública Aplicações Privacidade, Autenticação: RSA, Curva Elíptica Intercâmbio de chave secreta: Diffie-Hellman Assinatura digital: DSS (DSA) Vantagens Não compartilha segredo Provê

Leia mais

Segurança da Informação e Proteção ao Conhecimento. Douglas Farias Cordeiro

Segurança da Informação e Proteção ao Conhecimento. Douglas Farias Cordeiro Segurança da Informação e Proteção ao Conhecimento Douglas Farias Cordeiro Criptografia Revisando A criptografia trata da escrita de um texto em códigos de forma a torná-lo incompreensível; A informação

Leia mais

A plataforma Android: Uma Introdução

A plataforma Android: Uma Introdução A plataforma Android: Uma Introdução Android Iniciativa da Google de prover uma plataforma aberta para Web móvel Open Handset Alliance Associação de um grupo bastante heterogêneo de empresas (operadoras,

Leia mais

Visão geral Estrutura do sistema Ferramentas de desenvolvimento Uma aplicação. Android. Universidade Federal de Santa Catarina. 17 de dezembro de 2008

Visão geral Estrutura do sistema Ferramentas de desenvolvimento Uma aplicação. Android. Universidade Federal de Santa Catarina. 17 de dezembro de 2008 Android José João Junior Universidade Federal de Santa Catarina 17 de dezembro de 2008 Agenda 1 Visão geral 2 Estrutura do sistema 3 Ferramentas de desenvolvimento 4 Uma aplicação Visão geral Histórico

Leia mais

Introdução ao Android

Introdução ao Android Introdução ao Android André Gustavo Duarte de Almeida docente.ifrn.edu.br/andrealmeida Parte 1 Conhecendo o Sistema e Primeiro Programa Roteiro Pré-requisitos Conceitos Básicos Configurando o Ambiente

Leia mais

Segurança da Informação

Segurança da Informação INF-108 Segurança da Informação Criptografia assimétrica Prof. João Henrique Kleinschmidt Santo André, junho de 2013 Problema de distribuição de chaves A criptografia de chave simétrica pode manter seguros

Leia mais

Programação para Dispositivos Móveis

Programação para Dispositivos Móveis Programação para Dispositivos Móveis Fatec Ipiranga Análise e Desenvolvimento de Sistemas Aula 03 Introdução ao ambiente de desenvolvimento: Eclipse e Android SDK Dalton Martins dmartins@gmail.com São

Leia mais

PROGRAMANDO ANDROID NA IDE ECLIPSE GABRIEL NUNES, JEAN CARVALHO TURMA TI7

PROGRAMANDO ANDROID NA IDE ECLIPSE GABRIEL NUNES, JEAN CARVALHO TURMA TI7 Serviço Nacional de Aprendizagem Comercial do Rio Grande do Sul Informação e Comunicação: Habilitação Técnica de Nível Médio Técnico em Informática Programação Android na IDE Eclipse PROGRAMANDO ANDROID

Leia mais

Conceitos de Criptografia e o protocolo SSL

Conceitos de Criptografia e o protocolo SSL Conceitos de Criptografia e o protocolo SSL TchêLinux Ulbra Gravataí http://tchelinux.org/gravatai Elgio Schlemer Ulbra Gravatai http://gravatai.ulbra.tche.br/~elgio 31 de Maio de 2008 Introdução Início

Leia mais

M3D4 - Certificados Digitais Aula 2 Certificado Digital e suas aplicações

M3D4 - Certificados Digitais Aula 2 Certificado Digital e suas aplicações M3D4 - Certificados Digitais Aula 2 Certificado Digital e suas aplicações Prof. Fernando Augusto Teixeira 1 2 Agenda da Disciplina Certificado Digital e suas aplicações Segurança Criptografia Simétrica

Leia mais

INTRODUÇÃO AO DESENVOLVIMENTO DE JOGOS COM LIBGDX. Vinícius Barreto de Sousa Neto

INTRODUÇÃO AO DESENVOLVIMENTO DE JOGOS COM LIBGDX. Vinícius Barreto de Sousa Neto INTRODUÇÃO AO DESENVOLVIMENTO DE JOGOS COM LIBGDX Vinícius Barreto de Sousa Neto Libgdx é um framework multi plataforma de visualização e desenvolvimento de jogos. Atualmente ele suporta Windows, Linux,

Leia mais

Segurança de Redes. Criptografia. Requisitos da seg. da informação. Garantir que a informação seja legível somente por pessoas autorizadas

Segurança de Redes. Criptografia. Requisitos da seg. da informação. Garantir que a informação seja legível somente por pessoas autorizadas Segurança de Redes Criptografia Prof. Rodrigo Rocha rodrigor@santanna.g12.br Requisitos da seg. da informação Confidencialidade Garantir que a informação seja legível somente por pessoas autorizadas Integridade

Leia mais

Certificação Digital Automação na Assinatura de Documentos de Compras

Certificação Digital Automação na Assinatura de Documentos de Compras XVIII Seminário Nacional de Distribuição de Energia Elétrica SENDI 2008-06 a 10 de outubro Olinda - Pernambuco - Brasil Certificação Digital Automação na Assinatura de Documentos de Compras Eder Soares

Leia mais

Android. Marcelo Quinta @mrquinta

Android. Marcelo Quinta @mrquinta Android Marcelo Quinta @mrquinta Oi, eu sou o Marcelo Quinta Pública Público-privada Privada Próprio negócio Voluntariado Parabéns à organização do GO-GTUG Tablets 160% de aumento em 2011 Smartphones

Leia mais

Segurança da Informação

Segurança da Informação INF-108 Segurança da Informação Autenticação Prof. João Henrique Kleinschmidt Santo André, junho de 2013 Resumos de mensagem (hash) Algoritmo Hash são usados quando a autenticação é necessária, mas o sigilo,

Leia mais

67 das 88 vagas no AFRF no PR/SC 150 das 190 vagas no TRF no PR/SC 150 das 190 vagas no TRF Conquiste sua vitória ao nosso lado

67 das 88 vagas no AFRF no PR/SC 150 das 190 vagas no TRF no PR/SC 150 das 190 vagas no TRF Conquiste sua vitória ao nosso lado Carreira Policial Mais de 360 aprovados na Receita Federal em 2006 67 das 88 vagas no AFRF no PR/SC 150 das 190 vagas no TRF no PR/SC 150 das 190 vagas no TRF Conquiste sua vitória ao nosso lado Apostila

Leia mais

Introdução ao Android. SECAP 2014 Prof. Rone Ilídio - UFSJ

Introdução ao Android. SECAP 2014 Prof. Rone Ilídio - UFSJ Introdução ao Android SECAP 2014 Prof. Rone Ilídio - UFSJ O que é o Android? Sistema operacional móvel, baseado numa versão modificada do Linux. Código aberto: qualquer pessoa pode baixar e modificar Máquina

Leia mais

Manual de instalação e configuração da Ferramenta Android SDK

Manual de instalação e configuração da Ferramenta Android SDK Trabalho de Programação para Dispositivos Móveis Turma: 1011 Camila Botelho camilacunhabotelho@gmail.com Manual de instalação e configuração da Ferramenta Android SDK Introdução O Android é uma ferramenta

Leia mais

1.1 Sistemas criptográficos

1.1 Sistemas criptográficos I 1.1 Sistemas criptográficos A criptografia é a base de inúmeros mecanismos de segurança, por este motivo esta seção apresenta inicialmente os dois principais modelos criptografia existentes (TERADA;

Leia mais

CERTIFICAÇÃO DIGITAL

CERTIFICAÇÃO DIGITAL Autenticidade Digital CERTIFICAÇÃO DIGITAL Certificação Digital 1 Políticas de Segurança Regras que baseiam toda a confiança em um determinado sistema; Dizem o que precisamos e o que não precisamos proteger;

Leia mais

Administração de Sistemas (ASIST)

Administração de Sistemas (ASIST) Administração de Sistemas (ASIST) Criptografia Outubro de 2014 1 Criptografia kryptós (escondido) + gráphein (escrita) A criptografia utiliza algoritmos (funções) que recebem informação e produzem resultados

Leia mais

Assinatura Digital: problema

Assinatura Digital: problema Assinatura Digital Assinatura Digital Assinatura Digital: problema A autenticidade de muitos documentos, é determinada pela presença de uma assinatura autorizada. Para que os sistemas de mensagens computacionais

Leia mais

Segurança. Sistemas Distribuídos. ic-sod@mega.ist.utl.pt 09/05/2005 1

Segurança. Sistemas Distribuídos. ic-sod@mega.ist.utl.pt 09/05/2005 1 Segurança Sistemas Distribuídos ic-sod@mega.ist.utl.pt 1 Tópicos abordados I - Mecanismos criptográficos Cifra simétrica, cifra assimétrica, resumo (digest) Assinatura digital Geração de números aleatórios

Leia mais

INFRA-ESTRUTURA EM CHAVES PÚBLICAS TEMPORAL

INFRA-ESTRUTURA EM CHAVES PÚBLICAS TEMPORAL UNIVERSIDADE FEDERAL DE SANTA CATARINA BACHARELADO EM CIÊNCIA DA COMPUTAÇÃO Geovani Ferreira da Cruz Guilherme Steinmann INFRA-ESTRUTURA EM CHAVES PÚBLICAS TEMPORAL Florianópolis, fevereiro de 2007 INFRA-ESTRUTURA

Leia mais

Programação para Dispositivos Móveis

Programação para Dispositivos Móveis Programação para Dispositivos Móveis Fatec Ipiranga Análise e Desenvolvimento de Sistemas Aula 02 História do desenvolvimento de software para dispositivos móveis Dalton Martins dmartins@gmail.com São

Leia mais

Tudo que você precisa saber sobre Criptografia

Tudo que você precisa saber sobre Criptografia Tudo que você precisa saber sobre Criptografia...e tinha medo de perguntar Criptografia vem do grego e significa escrita escondida. Bem, ainda não temos a tecnologia dos filmes de fantasia onde um pergaminho

Leia mais

PROGRAMAÇÃO COM ANDROID NA ÁREA DA ENGENHARIA CARTOGRÁFICA: ALGUNS EXEMPLOS

PROGRAMAÇÃO COM ANDROID NA ÁREA DA ENGENHARIA CARTOGRÁFICA: ALGUNS EXEMPLOS PROGRAMAÇÃO COM ANDROID NA ÁREA DA ENGENHARIA CARTOGRÁFICA: ALGUNS EXEMPLOS GLAUCO LEITE DE FREITAS ANA LÚCIA BEZERRA CANDEIAS Universidade Federal de Pernambuco - UFPE Centro de Tecnologia e Geociências

Leia mais

Certificação digital para agente de registro e aplicações

Certificação digital para agente de registro e aplicações Certificação digital para agente de registro e aplicações Resumo de minicurso realizado no 15º Seminário RNP de Capacitação e Inovação Italo Valcy Ponto de Presença da RNP na Bahia

Leia mais

Segurança da Informação

Segurança da Informação INF-108 Segurança da Informação ICP e Certificados Digitais Prof. João Henrique Kleinschmidt Santo André, junho de 2013 Criptografia de chave pública Oferece criptografia e também uma maneira de identificar

Leia mais

Desenvolvimento de aplicações na plataforma Google Android

Desenvolvimento de aplicações na plataforma Google Android Desenvolvimento de aplicações na plataforma Google Android Rafael M. Lins Manoel Taenan Prof. Dr. Fábio Gomes Design by Rafael M. Lins Autores Rafael Madureira Lins de Araújo Bla bla bla Manoel Taenan

Leia mais

Protocolos Básicos e Aplicações. Segurança e SSL

Protocolos Básicos e Aplicações. Segurança e SSL Segurança e SSL O que é segurança na rede? Confidencialidade: apenas remetente e destinatário pretendido devem entender conteúdo da mensagem remetente criptografa mensagem destinatário decripta mensagem

Leia mais

SISTEMAS DISTRIBUIDOS. Prof. Marcelo de Sá Barbosa

SISTEMAS DISTRIBUIDOS. Prof. Marcelo de Sá Barbosa Prof. Marcelo de Sá Barbosa Introdução Visão geral das técnicas de segurança Algoritmos de criptografia Assinaturas digitais Criptografia na prática Introdução A necessidade de proteger a integridade e

Leia mais

Programação para Dispositivos Móveis

Programação para Dispositivos Móveis Programação para Dispositivos Móveis Fatec Ipiranga Análise e Desenvolvimento de Sistemas Aula 05 Programando formularios, activities e intents. Dalton Martins dmartins@gmail.com São Paulo, Março, 2012

Leia mais

C.I.A. Segurança de Informação. Carlos Serrão (MSc., PhD.) IUL-ISCTE, DCTI, Adetti/NetMuST. carlos.serrao@iscte.pt carlos.j.serrao@gmail.

C.I.A. Segurança de Informação. Carlos Serrão (MSc., PhD.) IUL-ISCTE, DCTI, Adetti/NetMuST. carlos.serrao@iscte.pt carlos.j.serrao@gmail. C.I.A. Segurança de Informação Carlos Serrão (MSc., PhD.) IUL-ISCTE, DCTI, Adetti/NetMuST carlos.serrao@iscte.pt carlos.j.serrao@gmail.com http://www.carlosserrao.net http://blog.carlosserrao.net http://www.iscte.pt

Leia mais

Introdução ao Android. Programação Orientada a Objetos Prof. Rone Ilídio - UFSJ

Introdução ao Android. Programação Orientada a Objetos Prof. Rone Ilídio - UFSJ Introdução ao Android Programação Orientada a Objetos Prof. Rone Ilídio - UFSJ O que é o Android? Sistema operacional móvel, baseado numa versão modificada do Linux. Código aberto: qualquer pessoa pode

Leia mais

Desenvolvimento para Android Prá9ca 1. Prof. Markus Endler

Desenvolvimento para Android Prá9ca 1. Prof. Markus Endler Desenvolvimento para Android Prá9ca 1 Prof. Markus Endler Pré- requisitos Para desenvolver para plataforma Android, é necessário fazer o download e instalar: Android SDK Tools: necessário para gerenciamento

Leia mais

Prof. Roberto Franciscatto 4º Semestre - TSI - CAFW. Free Powerpoint Templates Page 1

Prof. Roberto Franciscatto 4º Semestre - TSI - CAFW. Free Powerpoint Templates Page 1 Segurança na Web Cap. 4: Protocolos de Segurança Prof. Roberto Franciscatto 4º Semestre - TSI - CAFW Page 1 é definido como um procedimento seguro para se regular a transmissão de dados entre computadores

Leia mais

Desenvolvimento para Android Prá9ca 2. Prof. Markus Endler

Desenvolvimento para Android Prá9ca 2. Prof. Markus Endler Desenvolvimento para Android Prá9ca 2 Prof. Markus Endler Criando o primeiro projeto Android Com o ambiente de desenvolvimento preparado, vá em File - > New - > Project... Na janela que abrir, selecione

Leia mais

Computação II Orientação a Objetos

Computação II Orientação a Objetos Computação II Orientação a Objetos Fabio Mascarenhas - 2014.1 http://www.dcc.ufrj.br/~fabiom/java Android Android é um sistema operacional para dispositivos móveis Kernel Linux, drivers e bibliotecas do

Leia mais

Sumário. Parte I Introdução... 19. Capítulo 1 Fundamentos da infra-estrutura de chave pública... 21. Capítulo 2 Conceitos necessários...

Sumário. Parte I Introdução... 19. Capítulo 1 Fundamentos da infra-estrutura de chave pública... 21. Capítulo 2 Conceitos necessários... Agradecimentos... 7 O autor... 8 Prefácio... 15 Objetivos do livro... 17 Parte I Introdução... 19 Capítulo 1 Fundamentos da infra-estrutura de chave pública... 21 Introdução à ICP... 21 Serviços oferecidos

Leia mais

Tutorial 1.0. Instalação

Tutorial 1.0. Instalação Tutorial 1.0 Instalação Índice Requisitos Instalando Android SDK Instalando Eclipse Instalando Plugin ADT no Eclipse Requisitos Para a instalação do SDK é necessário ter no minímo versão Java 6 (Standard

Leia mais

ASSINATURAS DIGITAIS NO OPENOFFICE.ORG

ASSINATURAS DIGITAIS NO OPENOFFICE.ORG Revista Eletrônica da Faculdade Metodista Granbery http://re.granbery.edu.br - ISSN 1981 0377 Curso de Sistemas de Informação - N. 5, JUL/DEZ 2008 ASSINATURAS DIGITAIS NO OPENOFFICE.ORG Flávio Alexandre

Leia mais

Entendendo a Certificação Digital

Entendendo a Certificação Digital Entendendo a Certificação Digital Novembro 2010 1 Sumário 1. Introdução... 3 2. O que é certificação digital?... 3 3. Como funciona a certificação digital?... 3 6. Obtendo certificados digitais... 6 8.

Leia mais

TRABALHO BIBLIOTECA MD5

TRABALHO BIBLIOTECA MD5 FACULDADE DE TECNOLOGIA SENAC PELOTAS TRABALHO BIBLIOTECA MD5 Linguagens de Programação Eduardo Orestes Brum Análise e Desenvolvimento de Sistemas - 2013 Sumário 1 Introdução 31 2 Criptografia MD5 4 2.

Leia mais

Dispositivos móveis e o mercado Android Open Handset Alliance Informações sobre Android Arquitetura

Dispositivos móveis e o mercado Android Open Handset Alliance Informações sobre Android Arquitetura Dispositivos móveis e o mercado Android Open Handset Alliance Informações sobre Android Arquitetura Dispositivos móveis e o mercado Mercado cresce a cada ano Muitos recursos Múltiplas plataforma Symbian

Leia mais

Segurança na Web. Programação para a Internet. Prof. Vilson Heck Junior

Segurança na Web. Programação para a Internet. Prof. Vilson Heck Junior Segurança na Web Programação para a Internet Prof. Vilson Heck Junior Males São inúmeros os males existentes no universo online: Vírus; Trojan; Spyware; Adware; Invasão; Keyloggers; Phishing; Golpes; Spam;

Leia mais

Criptografia. Prof. Ricardo José Martins ricardo.martins@muz.ifsuldeminas.edu.br. IFSULDEMINAS, campus Muzambinho Curso de Ciência da Computação

Criptografia. Prof. Ricardo José Martins ricardo.martins@muz.ifsuldeminas.edu.br. IFSULDEMINAS, campus Muzambinho Curso de Ciência da Computação IFSULDEMINAS, campus Muzambinho Curso de Ciência da Computação Criptografia Prof. Ricardo José Martins ricardo.martins@muz.ifsuldeminas.edu.br Curso de Bacharelado em Ciência da Computação AED III Algoritmo

Leia mais

Software de Telecomunicações. Introdução à Cifra

Software de Telecomunicações. Introdução à Cifra Software de Telecomunicações Introdução à Cifra Prof RG Crespo Software de Telecomunicações Introdução : 1/21 Plano de estudos Parte I Definições básicas Cifras clássicas: Substituição: monoalfabética

Leia mais

1. A quebra de sistemas criptográficos simétricos sempre depende da descoberta da chave secreta utilizada no processo criptográfico.

1. A quebra de sistemas criptográficos simétricos sempre depende da descoberta da chave secreta utilizada no processo criptográfico. Exercícios da Parte II: Segurança da Informação Walter Cunha Criptografia (CESPE/PCF-PF 03 2002) 1. A quebra de sistemas criptográficos simétricos sempre depende da descoberta da chave secreta utilizada

Leia mais

INFRA-ESTRUTURA EM CHAVES PÚBLICAS TEMPORAL

INFRA-ESTRUTURA EM CHAVES PÚBLICAS TEMPORAL UNIVERSIDADE FEDERAL DE SANTA CATARINA BACHARELADO EM CIÊNCIA DA COMPUTAÇÃO Geovani Ferreira da Cruz Guilherme Steinmann INFRA-ESTRUTURA EM CHAVES PÚBLICAS TEMPORAL Florianópolis, julho de 2007 Resumo

Leia mais

Um framework para prover comunicação segura em aplicativos de TV Digital

Um framework para prover comunicação segura em aplicativos de TV Digital Um framework para prover comunicação segura em aplicativos de TV Digital Alexandro Bordignon, Valter Roesler Centro de Ciências Exatas e Tecnológicas Universidade do Vale do Rio dos Sinos (UNISINOS). São

Leia mais

OMT-G Design. Instalação por pacotes

OMT-G Design. Instalação por pacotes OMT-G Design A plataforma Eclipse OMT-G Design não é um software independente, é um plug-in que se utiliza dos mecanismos de extensão do Eclipse que por sua vez é um ambiente de desenvolvimento de software.

Leia mais

MAPEAMENTO E LOCALIZAÇÃO DE REGIÕES DE INTERESSE UTILIZANDO REALIDADE AUMENTADA EM DISPOSITIVOS MÓVEIS COM PLATAFORMA ANDROID

MAPEAMENTO E LOCALIZAÇÃO DE REGIÕES DE INTERESSE UTILIZANDO REALIDADE AUMENTADA EM DISPOSITIVOS MÓVEIS COM PLATAFORMA ANDROID MAPEAMENTO E LOCALIZAÇÃO DE REGIÕES DE INTERESSE UTILIZANDO REALIDADE AUMENTADA EM DISPOSITIVOS MÓVEIS COM PLATAFORMA ANDROID Alessandro Teixeira de Andrade¹; Geazy Menezes² UFGD/FACET Caixa Postal 533,

Leia mais

TRANSMISSÃO DE DADOS Prof. Ricardo Rodrigues Barcelar http://www.ricardobarcelar.com

TRANSMISSÃO DE DADOS Prof. Ricardo Rodrigues Barcelar http://www.ricardobarcelar.com - Aula 7 1. A CAMADA DE APLICAÇÃO Parte 1 Depois de estudar todas as camadas preliminares, chegamos à camada onde são encontradas todas as aplicações. As camadas situadas abaixo da camada de aplicação

Leia mais

Preparando um ambiente de desenvolvimento para a plataforma android

Preparando um ambiente de desenvolvimento para a plataforma android Preparando um ambiente de desenvolvimento para a plataforma android Setting up a development environment for android platform Felipe Pires de Oliveira¹, Bruno Morais Lemos². Resumo Como citar esse artigo.

Leia mais

Introdução ao Android. Prof. Fellipe Aleixo (fellipe.aleixo@ifrn.edu.br)

Introdução ao Android. Prof. Fellipe Aleixo (fellipe.aleixo@ifrn.edu.br) Introdução ao Android Prof. Fellipe Aleixo (fellipe.aleixo@ifrn.edu.br) Conteúdo Introdução Mercado Versões Ambiente de Desenvolvimento Configuração das Máquinas Virtuais Referências Introdução Android

Leia mais

Introdução à Criptografia. Segurança da Informação Prof. João Bosco M. Sobral

Introdução à Criptografia. Segurança da Informação Prof. João Bosco M. Sobral Introdução à Criptografia Segurança da Informação Prof. João Bosco M. Sobral 1 O que é Segurança da Informação Segurança de Informação relaciona-se com vários e diferentes aspectos referentes à: confidencialidade

Leia mais

Programa de Dispositivos Móveis

Programa de Dispositivos Móveis Aula 02 Programa de Dispositivos Móveis A Classe Activity A classe Actvity é similar a classe JFrame do Swing representa basicamente uma tela. Quase todas as atividades interagem com o usuário, então ela

Leia mais

PROJETO PEDAGÓGICO DE CURSOS

PROJETO PEDAGÓGICO DE CURSOS 1 de 5 PROJETO PEDAGÓGICO DE CURSOS BURITREINAMENTOS MANAUS-AM DEZEMBRO / 2014 2 de 5 PACOTES DE TREINAMENTOS BURITECH A Buritech desenvolveu um grupo de pacotes de treinamentos, aqui chamados de BuriPacks,

Leia mais

Lógica de Programação

Lógica de Programação Lógica de Programação Unidade 4 Ambiente de desenvolvimento Java QI ESCOLAS E FACULDADES Curso Técnico em Informática SUMÁRIO A LINGUAGEM JAVA... 3 JVM, JRE, JDK... 3 BYTECODE... 3 PREPARANDO O AMBIENTE

Leia mais

MA14 - Aritmética Unidade 24 Resumo

MA14 - Aritmética Unidade 24 Resumo MA14 - Aritmética Unidade 24 Resumo Introdução à Criptografia Abramo Hefez PROFMAT - SBM Aviso Este material é apenas um resumo de parte do conteúdo da disciplina e o seu estudo não garante o domínio do

Leia mais

Sigilo Autenticação Assinatura e Controle de integridade

Sigilo Autenticação Assinatura e Controle de integridade 1 Sigilo Autenticação Assinatura e Controle de integridade Segurança em Redes Introdução No início da utilização da Internet, a questão sobre segurança tinha pouca importância devido a dimensão pequena

Leia mais

Pré-Projeto do Trabalho de Conclusão de Curso Tiago Garcia Pereira 1. INTRODUÇÃO

Pré-Projeto do Trabalho de Conclusão de Curso Tiago Garcia Pereira 1. INTRODUÇÃO UM PADRÃO ABERTO DE SOFTWARE PARA COMPUTAÇÃO MÓVEL: UM ESTUDO SOBRE GOOGLE ANDROID 1. INTRODUÇÃO O aumento do número usuários de dispositivos móveis atrai cada vez os desenvolvedores a produzir aplicações

Leia mais

INFORMÁTICA PROF. RAFAEL ARAÚJO

INFORMÁTICA PROF. RAFAEL ARAÚJO INFORMÁTICA PROF. RAFAEL ARAÚJO CERTIFICADO DIGITAL O certificado digital é um arquivo eletrônico que contém dados de uma pessoa ou instituição, utilizados para comprovar sua identidade. Este arquivo pode

Leia mais

Desenvolvimento de Aplicações. Android. Rick Rogers, John Lombardo, Zigurd Mednieks e Blake Meike. Novatec

Desenvolvimento de Aplicações. Android. Rick Rogers, John Lombardo, Zigurd Mednieks e Blake Meike. Novatec Desenvolvimento de Aplicações Android Rick Rogers, John Lombardo, Zigurd Mednieks e Blake Meike Novatec Sumário Prefácio... xi Público-alvo...xi Organização do livro...xii Convenções adotadas neste livro...xiii

Leia mais

Introdução Dalvik Linux 2.6. Android. Diogo de Campos, João Paulo Pizani Flor, Maurício Oliveira Haensch, Pedro Covolan Bachiega

Introdução Dalvik Linux 2.6. Android. Diogo de Campos, João Paulo Pizani Flor, Maurício Oliveira Haensch, Pedro Covolan Bachiega Android Diogo de Campos, João Paulo Pizani Flor, Maurício Oliveira Haensch, Pedro Covolan Bachiega Universidade Federal de Santa Catarina November 18, 2008 Agenda 1 Introdução 2 Dalvik 3 Linux 2.6 Introdução

Leia mais

Engenharia de Software I

Engenharia de Software I Engenharia de Software I Rogério Eduardo Garcia (rogerio@fct.unesp.br) Bacharelado em Ciência da Computação Aula 05 Material preparado por Fernanda Madeiral Delfim Tópicos Aula 5 Contextualização UML Astah

Leia mais

Apostila. Noções Básicas de Certificação Digital (Aula 2)

Apostila. Noções Básicas de Certificação Digital (Aula 2) Apostila Noções Básicas de Certificação Digital (Aula 2) Diretoria de Pessoas (DPE) Departamento de Gestão de Carreira (DECR) Divisão de Gestão de Treinamento e Desenvolvimento (DIGT) Coordenação Geral

Leia mais

4758 LINUX PROJECT. - Disponível para os ambientes Windows NT, Windows 2000, AIX, OS/400, z/os, e usuários de sistemas OS/390 ;

4758 LINUX PROJECT. - Disponível para os ambientes Windows NT, Windows 2000, AIX, OS/400, z/os, e usuários de sistemas OS/390 ; UNIVERSIDADE FEDERAL DO MARANHÃO CENTRO DE CIÊNCIAS EXATAS E TECNOLOGIA PROGRAMA DE PÓS-GRADUAÇÃO EM ENGENHARIA DA ELETRICIDADE HABILITAÇÃO: CIÊNCIA DA COMPUTAÇÃO DISCIPLINA: SISTEMAS OPERACIONAIS DISTRIBUÍDOS

Leia mais

Universidade Federal de Goiás Centro de Recursos Computacionais - CERCOMP Divisão de Sistemas. Criação de uma Serviço de Geração de Relatórios

Universidade Federal de Goiás Centro de Recursos Computacionais - CERCOMP Divisão de Sistemas. Criação de uma Serviço de Geração de Relatórios Universidade Federal de Goiás Centro de Recursos Computacionais - CERCOMP Divisão de Sistemas Criação de uma Serviço de Geração de Relatórios Goiânia 12/2011 Versionamento 12/12/2011 Hugo Marciano... 1.0

Leia mais

João Bosco Beraldo - 014 9726-4389 jberaldo@bcinfo.com.br. José F. F. de Camargo - 14 8112-1001 jffcamargo@bcinfo.com.br

João Bosco Beraldo - 014 9726-4389 jberaldo@bcinfo.com.br. José F. F. de Camargo - 14 8112-1001 jffcamargo@bcinfo.com.br João Bosco Beraldo - 014 9726-4389 jberaldo@bcinfo.com.br José F. F. de Camargo - 14 8112-1001 jffcamargo@bcinfo.com.br BCInfo Consultoria e Informática 14 3882-8276 WWW.BCINFO.COM.BR Princípios básicos

Leia mais

Segurança Internet. Fernando Albuquerque. fernando@cic.unb.br www.cic.unb.br/docentes/fernando (061) 273-3589

Segurança Internet. Fernando Albuquerque. fernando@cic.unb.br www.cic.unb.br/docentes/fernando (061) 273-3589 Segurança Internet Fernando Albuquerque fernando@cic.unb.br www.cic.unb.br/docentes/fernando (061) 273-3589 Tópicos Introdução Autenticação Controle da configuração Registro dos acessos Firewalls Backups

Leia mais

CONCEITOS MATEMÁTICOS ENVOLVIDOS NO FUNCIONAMENTO DA CRIPTOGRAFIA RSA

CONCEITOS MATEMÁTICOS ENVOLVIDOS NO FUNCIONAMENTO DA CRIPTOGRAFIA RSA CONCEITOS MATEMÁTICOS ENVOLVIDOS NO FUNCIONAMENTO DA CRIPTOGRAFIA RSA Cristiane Moro 1 Raquel Cerbaro 2 Andréia Beatriz Schmid 3 Resumo: A criptografia visa garantir que somente pessoas autorizadas tenham

Leia mais

Criptografia e PGP. Fernando J. Carmo, Pedro A. Lemes, Tiago H. Freitas. Faculdade de Tecnologia de Guaratinguetá Guaratinguetá SP Brasil

Criptografia e PGP. Fernando J. Carmo, Pedro A. Lemes, Tiago H. Freitas. Faculdade de Tecnologia de Guaratinguetá Guaratinguetá SP Brasil Criptografia e PGP Fernando J. Carmo, Pedro A. Lemes, Tiago H. Freitas Faculdade de Tecnologia de Guaratinguetá Guaratinguetá SP Brasil fdesenvolvedor@hotmail.com, pedro.lemes@gmail.com tiagofreitas12@gmail.com

Leia mais