tsi desenvolvimento de software zero one...
TRANSCRIPT
Simpósio de TCC e Seminário de IC , 2016 / 1º 1865
TSI DESENVOLVIMENTO DE SOFTWARE CRIPTOGRÁFICO (ZERO ONE ENCRYPT)
CAMILA ALVES DE OLIVEIRA RODRIGO ARRUDA GOMES
CID BENDAHAN COELHO CINTRA
RESUMO Este trabalho tem como objetivo o desenvolvimento de um software de criptografia, que visa garantir a confidencialidade de arquivos e pastas por meio da encriptação de dados, assim como garantir a integridade dos mesmos fazendo uso da função Hash. Para o desenvolvimento deste trabalho, foram realizados estudos relacionados à segurança da informação e desenvolvimento de software. As principais atividades realizadas com base nesses estudos foram: levantamento, análise e documentação dos requisitos do software, desenvolvimento do software na linguagem JAVA baseado no conceito de Orientação a Objetos, finalização e testes do software. O resultado atingido através desse trabalho foi um software funcional de criptografia e hash com o propósito de manter arquivos e pastas armazenadas com segurança, colocando em relevância a segurança da informação. Palavras Chaves: Criptografia, Desenvolvimento de Software, Segurança da Informação. ABSTRACT This work aims at the development of encryption software, which aims to guarantee the confidentiality of files and folders through data encryption, as well as ensure the integrity of the making use of the hash function. For the development of this work were carried out studies related to information security and software development. The main activities based on these studies were: survey, analysis and documentation of software requirements software development in Java- based Guidance concept Object, completion and testing of the product. The result achieved by this work was a functional software encryption and hash with the purpose of keeping files and folders stored securely, putting in relevant security information. Keywords: Cryptography, Software Development, Information Security. INTRODUÇÃO
Nos últimos anos, a informação vem sendo tratada de maneira mais valiosa do que há algum tempo atrás, tanto no âmbito organizacional como no pessoal. Portanto, é de suma importância que esta seja tratada de forma segura, garantindo assim sua integridade, confidencialidade e disponibilidade.
Devido ao crescimento da quantidade de
informações que tramitam em sistemas computacionais, é de fundamental necessidade que a mesma esteja livre de acessos não autorizados. Garantir que isso não aconteça é uma responsabilidade não somente do profissional de segurança da informação, mas de todos que tratam com essa informação. Tais riscos podem ser evitados fazendo-se uso de políticas de segurança e softwares criptográficos.
Este trabalho enfatiza a importância do uso de um software criptográfico para garantir ao usuário maior segurança de suas informações, seja ele um usuário comum sem pretensões comerciais ou até mesmo organizações comerciais que necessitam de uma maneira segura para armazenar informações importantes.
A elaboração deste trabalho tem por
objetivo o desenvolvimento de um software criptográfico que visa garantir a confidencialidade, integridade e disponibilidade das informações. Justificativa
No âmbito tecnológico atual, faz-se uso de inúmeras ferramentas de segurança, entretanto a garantia de que as informações transmitidas atenderão os pilares da segurança da informação nem sempre é atendida.
Enfatizando a segurança da informação com base em seus pilares (confidencialidade, integridade e disponibilidade), justifica-se a elaboração deste trabalho, visando proteger informações, mitigando os riscos de alterações não autorizadas da mesma. Valendo-se de recursos criptográficos e função Hash, o Zero One Encrypt é um software de grande relevância para a segurança dos dados pessoais ou profissionais do usuário.
Objetivos Objetivo Geral
Desenvolver um aplicativo que
criptografa, decriptografa e verifica hash de arquivos e pastas, garantindo assim, a confidencialidade e integridade dos mesmos. Objetivos Específicos Pesquisar a bibliografia pertinente, os conceitos e definições.
Simpósio de TCC e Seminário de IC , 2016 / 1º 1866
Levantar as necessidades do usuário. Elaborar a documentação de análise do aplicativo. Elaborar uma solução segura para encriptação e decriptação de arquivos e pastas, bem como comparar o hash dos mesmos. Desenvolver o protótipo do aplicativo. Metodologia
Para a elaboração deste trabalho,
diversos estudos foram realizados, o que proporcionou um aprimoramento da idéia de desenvolver um software criptográfico que atendesse às expectativas do usuário.
Na fase de desenvolvimento do projeto,
as atividades executadas foram: pesquisa bibliográfica sobre assuntos pertinentes à segurança da informação e desenvolvimento de software, análise, desenvolvimento e documentação dos requisitos, codificação e testes. A documentação foi baseada nos modelos UML e PRISM. Na codificação foi utilizada a ferramenta de desenvolvimento NetBeans IDE e linguagem de programação JAVA.
Por fim, o Zero One Encrypt foi testado e
apresentou resultados dentro das conformidades esperadas. REFERENCIAL TEÓRICO Informação
De acordo com norma a ABNT NBR ISO/ IEC 27002 (2005, p. X): “A informação é um ativo que, como qualquer outro ativo importante, é essencial para os negócios de uma organização e consequentemente necessita ser adequadamente protegida”.
Segundo a norma ABNT NBR ISO/ IEC
27002 (2005) a informação pode ser impressa, escrita em papel ou falada, armazenada em drivers ou transmitida por meios eletrônicos. Ela pode existir de diversas formas, e independente da forma que será transmitida, é recomendado que ela seja protegida adequadamente. Segurança da Informação
A norma ABNT NBR ISO/ IEC 27002 (2005, p. X), ao abordar segurança da informação, afirma que: “A segurança da informação é obtida a partir da implementação de um conjunto de controles adequados, incluindo políticas, processos, procedimentos, estruturas organizacionais e funções de software e hardware. Estes controles precisam ser estabelecidos, implementados, monitorados, analisados criticamente e melhorados, onde necessário, para garantir que os objetivos do negócio e de segurança da organização sejam atendidos. Convém que isto
seja feito em conjunto com outros processos de gestão de negócio.”
A segurança da informação sustenta-se
em alguns pilares. Conforme afirma a norma ABNT NBR ISO/IEC 27001 (2006), os pilares são: Confidencialidade: propriedade que garante que somente pessoas autorizadas tenham acesso à informação. Disponibilidade: propriedade que garante que a informação estará acessível e utilizável sempre que solicitada por pessoas com a devida autorização. Integridade: propriedade que garante que a informação não sofrerá modificações sem a devida autorização.
Oliveira (2012) ressalta outros princípios de igual importância:
Não-repudiação: propriedade que garante a prevenção de que alguém negue o envio e/ou recebimento de uma informação. Privacidade: propriedade que garante que apenas a origem e o destino tenham conhecimento da informação. Autenticidade: propriedade que garante a identidade de quem está enviando a mensagem. Criptografia
Segundo Simon (1999 apud Moreno et. al2005, p. 11), a criptografia pode ser entendida como um conjunto de regras e técnicas usadas para tornar uma informação legível em outra totalmente ilegível, por meio de algoritmos criptográficos, sendo possível através do processo inverso recuperar as informações originais.
Conforme Moreno et. al (2005), as informações podem ser criptografadas basicamente através de códigos ou de cifras. Segundo eles, os códigos protegem as informações alterando partes da informação por códigos predefinidos, sendo que as pessoas autorizadas a ter acesso a essa informação criptografada tenha conhecimento desses códigos utilizados a fim de que o processo reverso seja possível.
Conforme expresso pela CERT.BR (2012), a criptografia pode ser usada para diversos fins, entre eles: Proteger dados sigilosos armazenados no computador.
Simpósio de TCC e Seminário de IC , 2016 / 1º 1867
Fazer backups contra acessos não autorizados. Proteger as comunicações realizadas na Internet, como e-mails enviados/recebidos e as transições bancárias e comerciais realizadas.
Segundo Oliveira (2012), a criptografia se subdivide em dois tipos básicos: a criptografia
simétrica, ou chave privada, e a criptografia assimétrica ou chave pública. Criptografia Simétrica
“Criptografia de chave simétrica, também chamada de chave secreta ou única, utiliza uma mesma chave tanto para codificar como para decodificar informações, sendo usada principalmente para garantir a confidencialidade dos dados.” (CERT.BR,2012)
A figura 1 mostra o funcionamento da criptografia simétrica.
Figura 1 – Criptografia Simétrica
Fonte: Pinto (2010)
Segundo Pinto (2010), os algoritmos que
utilizam a criptografia simétrica tendem a serem mais rápidos, porém são menos seguros do que os que usam criptografia assimétrica, uma vez que a chave usada para cifrar a informação é partilhada entre várias máquinas.
Dentre os algoritmos criptográficos que usam chave simétrica, os mais conhecidos são: 3DES, IDEA, AES, RC4, Blowfish. Criptografia Assimétrica
Ainda de acordo com a CERT.BR (2002): Criptografia de chaves assimétricas, também conhecida como criptografia de chave pública, utiliza duas chaves distintas: uma pública, que pode ser livremente divulgada, e uma privada, que deve ser mantida em segredo por seu dono. Quando uma informação é codificada com uma das chaves, somente a outra chave do par pode decodificá-la.
A figura 2 mostra o funcionamento da criptografia assimétrica.
Figura 2 – Criptografia Assimétrica
Fonte: Pinto (2010)
Os algoritmos criptográficos mais conhecidos que utilizam criptografia assimétrica são: RSA, DAS, ECC e Diffie-Hellman. Advanced Encryption Standard (AES)
Alvarenga (2011) afirma que, o algoritmo
AES foi desenvolvido por Vicent Rijmen e Joan Daemen em uma competição promovida por uma
agência americana, o NIST (National Institute of Standards and Tecnology), que tinha por finalidade o desenvolvimento de um algoritmo de criptografia simétrica que viria a substituir o algoritmo DES.
Segundo Alvarenga (2011), o AES tem
um tamanho de bloco fixo de 128 bits e uma
Simpósio de TCC e Seminário de IC , 2016 / 1º 1868
chave que pode ser no tamanho de 128, 192 ou 256 bits.
Alvarenga (2011) afirma ainda que, o
AES é um algoritmo seguro, fácil de implementar, flexível, não exige muito poder de processamento.
Função Hash
Segundo a CERT.BR (2002) a função Hash: “ é um método criptográfico que, quando aplicado sobre uma informação, independente do tamanho que ela tenha, gera um resultado único e de tamanho fixo, chamado Hash.”
É considerado relativamente fácil
descobrir o hash a partir da mensagem, mas matematicamente impossível fazer o processo inverso.
Conforme a CERT.BR (2002), a função hash pode ser utilizada para: Verificar a integridade de um arquivo armazenado no seu computador; Gerar assinaturas digitais; Verificar a integridade de arquivos obtidos da Internet;
Message – Digest Algorithm 5 (MD5)
Segundo Vale (2007), o Message-Digest Algorith5 (MD5) é um algoritmo de hash de 128 bits que foi desenvolvido pela RSA Data Security, com a finalidade de substituir o algoritmo MD4 que apresentou falhas de segurança. O MD5 é utilizado basicamente para verificação de integridade e logins.
Ainda de acordo com Vale (2007), o MD5
é um algoritmo unidirecional no qual através de uma saída não é possível identificar o conteúdo de entrada. Portanto, segundo Vale (2007), o método de verificação de hash é dado pela comparação entre dois hash, um armazenado na base de dados e outro gerado a partir da tentativa de login.
Vale (2007) ressalta ainda que,
independente da mensagem de entrada, o MD5 gera um valor hash de tamanho fixo de 128 bits. Orientação a Objeto
“A Orientação a Objetos é uma tecnologia que enxerga os sistemas como sendo coleção de objetos integrantes. Ela permite melhorar a reusabilidade e extensibilidade dos softwares.” (FARINELLI, 2007).
Farinelli (2007) afirma ainda que, a
proposta da Orientação a Objetos é representar as situações do mundo real nos sistemas computacionais da maneira mais fiel possível a realidade. A Orientação a Objetos considera os sistemas computacionais como uma coleção de objetos que interagem entre si. Classes, Objetos Atributos e Métodos
“As classes de programação são receitas
de um objeto, aonde têm características e comportamentos, permitindo assim armazenar propriedades e métodos dentro dela.” (GARCIA, 2015).
“Um objeto é um elemento computacional
que representa, no domínio da solução, alguma entidade (abstrata ou concreta) do domínio de interesse do problema sob análise. Objetos similares são agrupados em classes.” (RICARTE, 2002).
A figura 3 mostra um exemplo de objeto.
Figura 3 – Objeto
Fonte:Palmeira(s.d.)
“Atributos são as características de um objeto, essas características também são conhecidas como variáveis.” (GARCIA, 2015).
“Métodos são as ações que os objetos
podem exercer quando solicitados, onde podem interagir e se comunicarem com outros objetos.” (GARCIA, 2015).
A figura 4 mostra a representação de uma classe com atributos e métodos.
Figura 4 – Representação de uma Classe
Simpósio de TCC e Seminário de IC , 2016 / 1º 1869
Fonte: Os autores
Pilares da Orientação a Objetos
Segundo a Scriptcase Brasil (2013), a programação Orientada a Objetos é caracterizada em quatro pilares: Abstração: esse pilar tem como objetivo trazer algo do mundo real (com suas propriedades, identidade e métodos) e transformá-lo em um objeto na programação.
A figura 5 mostra um exemplo de abstração.
Figura 5 – Abstração
Fonte: Palmeira (S. d.)
Ainda de acordo com a Scriptcase Brasil (2013):
Encapsulamento: esse pilar permite ocultar dados que não podem ser manipulados diretamente dentro de uma classe manipulável. A figura 6 mostra um exemplo de encapsulamento.
Figura 6 – Encapsulamento
Fonte: Aniche (2012)
Ainda de acordo com a Scriptcase Brasil (2013):
Herança: esse pilar permite que classes com propriedades comuns entre si sejam abstraídas e reunidas em uma classe base.
Simpósio de TCC e Seminário de IC , 2016 / 1º 1870
A figura 7 mostra um exemplo de herança entre classes. Figura 7 – Herança entre Classes
Fonte: Palmeira(S. d.)
Ainda de acordo com a Scriptcase Brasil (2013): Polimorfismo: esse pilar permite que um método existente em mais de uma classe seja trabalhado de forma diferente em outras classes. A figura 8 mostra um exemplo de polimorfismo.
Figura 8 – Polimorfismo
Fonte: Macoratti (s.d.)
Java
De acordo com Braz (s.d.), a linguagem Java foi criada em 1995 pela Sun Microsystems devido o advento da Internet e a necessidade da existência de uma tecnologia onde computadores de diferentes plataformas pudessem conversar entre si já que a linguagem C++ (utilizada até então por eles) não permitia realizar tudo o que o grupo desejava.
Braz (s.d.) cita algumas características da
linguagem Java, são elas:
Orientada a Objetos: é o paradigma mais utilizado atualmente no desenvolvimento de softwares. Uma das suas principais vantagens está na reusabilidade do código usado em sistemas já desenvolvidos. Simples e Robusta: Java apresenta aspectos mais aprimorados que a linguagem C++, inclusive rapidez na criação de softwares.
Gerenciamento Automático de Memória: na linguagem Java, o procedimento de separação e liberação da memória é feito de forma automática. Independência de Plataforma: um programa desenvolvido em Java pode ser aplicado em outra plataforma diferente da plataforma original, isso se deve a utilização de Java Virtual Machine (JVM) que funciona como um interpretador Java. Multi-theading: um programa Java pode realizar várias tarefas paralelamente em múltiplos threads. Engenharia de Software
Em relação à Engenharia de Software, Sommerville (2011, p. 5) afirma que:
“Engenharia de software é uma disciplina de engenharia cujo foco está em todos os aspectos da produção de software, desde os estágios iniciais da especificação do sistema até sua
Simpósio de TCC e Seminário de IC , 2016 / 1º 1871
manutenção, quando o sistema já está sendo usado.”
Sommerville (2011, p. 5) ressalta que a Engenharia de Software é importante por dois motivos:
Cada vez mais a sociedade depende dos sistemas de softwares avançados e que devemos ser capazes de produzir sistemas de forma econômica, confiáveis e com um preço relevante. Na maioria das vezes é mais barato, a longo prazo, usar técnicas da engenharia de software para produzir um sistema do que fazê-lo com um projeto pessoal. Filho (2011) enfatiza que, o processo de desenvolvimento de um software (assim como qualquer outro produto), é dividido em três fases: Definição: nesta fase do processo define-se “o que” será desenvolvido. Desenvolvimento: define-se basicamente as técnicas que serão utilizadas, e a implementação do projeto. Manutenção: nesta fase são consideradas as modificações e/ou correções que podem ocorrer quando o software entrar em produção. Modelo Prático para o Desenvolvimento de Software (PRISM)
O Modelo Prático para o Desenvolvimento de Software idealizado por Cardoso (2003) apresenta uma maneira relativamente simples da elaboração da
arquitetura e engenharia de um software com base em diagramas da UML. Unified Modeling Language (UML) – Linguagem Unificada de Modelagem
Terra (2009) define Unified Modeling
Language (UML) como um grupo de representações gráficas, que ajudam na descrição e no projeto de sistemas de software, sobretudo de projetos que fazem uso da Orientação a Objetos.
Segundo Pimentel (2015), a UML foi
criada com o intuito de visualizar, especificar, construir e documentar as ferramentas de um sistema de software.
Silva, Videira (2001, p. 166) enfatizam
que, a especificação da estrutura de um sistema de software depende de alguns elementos: classes, relações, interfaces e objetos.
De acordo com Silva, Videira (2001, p.
169), uma relação em UML é representada por um tipo diferente de linha e representa a ligação entre elementos dos sistemas. Ambos ressaltam ainda que, os três tipos de relações mais importantes são:
Relação de Dependência: está relacionada à utilização. Indica que se um elemento for alterado na sua especificação, isso pode afetar outro item que a usa, mas o oposto nem sempre acontece. Na UML, a dependência é representada por uma linha tracejada e dirigida.
A figura 9 demonstra um exemplo de dependência entre classes.
Figura 9 – Dependências entre classes
Fonte: Silva, Videira (2001, p. 169)
Relação de Generalização: é a relação entre itens gerais (superclasse) e itens específicos (subclasse). Utilizam-se generalizações para ilustrar relações de herança. É representada em UML por uma linha dirigida a cheio com um triângulo branco no seu extremo. A figura 10 demonstra um exemplo de generalização entre classes.
Figura 10 – Generalização entre Classes
Simpósio de TCC e Seminário de IC , 2016 / 1º 1872
Fonte: Silva, Videira (2001, p. 171)
Relação de Associação: é uma relação estrutural que especifica um objeto de uma determinada classe ligado a objeto de outra classe. Em UML, a associação é representada por uma linha a cheio.
A figura 11 demonstra um exemplo de associação entre classes.
Figura 11 – Associação entre Classes
Fonte: Silva, Videira (2001, p. 172)
Pimentel (2015) ressalta que, a UML 2.1 se organiza em conjuntos de diagramas, todos com comportamento bem definido e que a mesma descreve 13 tipos de diagramas.
A figura 12 mostra os tipos de diagramas.
Figura 12 – Diagramas
Fonte: Pimentel (2015)
Simpósio de TCC e Seminário de IC , 2016 / 1º 1873
Diagrama de Caso de Uso Segundo Madeira (2007), o Diagrama de
Casos de Uso tem como finalidade representar um requisito do sistema que será automatizado. Ele é representado por dois elementos básicos:
Caso de Uso: representa o requisito que será
automatizado. Atores: são usados para representar as
entidades que interagem com o sistema. A figura 13 mostra os elementos básicos
do diagrama de caso de uso.
Figura 13 – Elementos Básicos do Diagrama de Caso de Uso
Fonte: Os autores
Madeira (2007) ressalta ainda que, há duas formas de relacionamento entre os casos de uso, são elas:
Include: acontece quando em dois casos de uso “A e B”, ao executar o caso de uso “A”, também executará o “B”. Extends: ao executar o caso de uso “A” não necessariamente será executado em “B”. Diagrama de Classe
Segundo Terra (2009), um diagrama de classes descreve basicamente os objetos existentes em um sistema e seus diversos tipos de relacionamentos.
Ainda segundo Terra (2009), “os
diagramas de classe também mostram as propriedades e operações de uma classe e as restrições que se aplicam à maneira como os objetos estão conectados”.
A figura 14 mostra um exemplo de Diagrama de Classe.
Figura 14 - Diagrama de Classe
Fonte: Os autores
Diagrama de Sequência
De acordo com Guedes (2014), o
Diagrama de Sequência está relacionado à ordem temporal em que as mensagens dos objetos envolvidos no processo são trocadas.
Guedes (2014) ressalta ainda que:
“Um Diagrama de Sequência costuma identificar o evento gerador do processo modelador, bem como o ator responsável por este evento, e determina como o processo deve se desenrolar e ser concluído por meio do envio de mensagens que em geral disparam métodos entre os objetos.”
A figura 15 mostra um diagrama de sequência.
Simpósio de TCC e Seminário de IC , 2016 / 1º 1874
Figura 15- Diagrama de Sequência
Fonte: Os autores
ANÁLISE DO APLICATIVO
Documento de Visão Introdução Finalidade
A finalidade deste documento é coletar,
analisar e definir as características do software de criptografia "Zero One Encrypt". Serão abordadas as maneiras de como o "Zero One Encrypt" irá agir em suas especificações. Definições, Acrônimos e Abreviações
a. RUP – Rational Unified Process. b. ZOE – Programa criptográfico desenvolvido. c. JRE – Java Runtime Environment.
Referências
a. RUP – Rational Unified Process.
b. Notas de aula.
Posicionamento Oportunidade de Negócios
O alvo desse aplicativo está diretamente ligado a uma parcela da sociedade que faz uso da tecnologia, mas que necessitam de um método seguro para troca de informações, bem como guardá-las, onde somente as pessoas com devida autorização serão capazes de acessá-las.
No processo de troca de informações,
existe o risco de pessoas não autorizadas apoderarem-se dessas informações legíveis e causar possíveis transtornos aos envolvidos.
Com intuito de evitar estes possíveis
transtornos, esse projeto apresenta o desenvolvimento do Zero One Encrypt, que oferece a criptografia e decriptografia de arquivos e pastas de forma segura, garantido sua integridade e confidencialidade.
Descrição do Problema
Simpósio de TCC e Seminário de IC , 2016 / 1º 1875
Quadro 1 – Descrição do Problema O problema de Pessoas não autorizadas terem acesso às informações
sigilosas e possa alterá-las e/ou destruí-las. Afeta Dono da informação. Cujo impacto é Possíveis constrangimentos com a publicação dessas
informações, fraudes, sabotagem. Uma boa solução seria Um software que garanta a integridade e
confidencialidade dessas informações.
Fonte: Os autores. Sentença de Posição do Produto
Quadro 2 – Sentença de Posição do Produto. Para Qualquer usuário. Quem Desejar tornar inteligíveis suas informações.
O Zero One Encrypt É um software.
Que Criptografa e decriptografa arquivos e pastas de forma segura e prática.
Diferente de Softwares atuais que não garantem total confidencialidade e integridade das informações.
Nosso produto Garante sigilo total dos arquivos e pastas por ele criptografado e integridade das informações por meio do hash.
Fonte: Os autores. Escopo do Produto
A finalidade do Zero One Encrypt é
criptografar e decriptografar arquivos e pastas por meio da criptografia.
Para verificação da integridade dos dados
será usado a função hash e o uso de senhas para criptografar e decriptografar dados.
O programa será utilizado em qualquer
computador que tenha instalado o Java Runtime Environment (JRE).
Descrições dos Envolvidos e dos Clientes Demografia do Mercado
A tecnologia está crescendo
gradativamente e muitas são as pessoas que a acompanham.
A grande maioria não se preocupa com a
segurança de suas informações. O mercado está precisando de softwares que atendam as suas necessidades de forma rápida e segura.
Resumo dos Envolvidos Quadro 3 – Resumo dos Envolvidos
Nome Descrição Responsabilidades
Analista e Desenvolvedor
Responsáveis pelo escopo e desenvolvimento do projeto.
- Analisar as necessidades do usuário. - Desenvolver o software seguro. - Realizar manutenção do software garantindo seu bom funcionamento.
Fonte: Os autores. Resumo dos Clientes
Quadro 4 – Resumo dos clientes.
Nome Descrição Responsabilidades Envolvido
Usuário Usuário final do Zero One Encrypt.
Usar o aplicativo. Não se aplica.
Fonte: Os autores.
Ambiente dos Clientes Computador do usuário ou computador da empresa que tenha o JRE instalado.
Perfis dos Envolvidos
Simpósio de TCC e Seminário de IC , 2016 / 1º 1876
As principais pessoas envolvidas nesse projeto estão listadas abaixo. Desenvolvedor e Analista
Quadro 5 – Perfil do envolvido Desenvolvedor e Analista. Descrição Pessoas responsáveis pelo desenvolvimento do
software. Tipo Especialista. Responsabilidades Desenvolver um software que atenda às
necessidades do usuário, pesquisando novas tecnologias e garantindo a qualidade do seu produto.
Critérios de Sucesso Segurança e integridade da informação.
Envolvimento Revisor de Requisitos. Produtos Liberados O software. Comentários/Problemas Informações colocadas de maneira incorreta.
Fonte: Os autores. Usuário
Quadro 6 – Perfil do usuário Descrição Pessoa que utiliza o software.
Tipo Usuário primário. Responsabilidades Fazer uso dos benefícios oferecidos pelo software. Critérios de Sucesso Inserção de um único arquivo ou pasta por vez no
sistema. Envolvimento Contato direto com o software. Produtos Liberados Nenhum. Comentários/Problemas Seleção de mais de um arquivo ou pasta por vez.
Fonte: Os autores. Principais Necessidades dos Envolvidos ou dos Clientes
Quadro 7 - Principais Necessidades dos Envolvidos ou dos Clientes.
Fonte: Os autores. Restrições
O programa será compatível com Java Runtime Environment (JRE). O software deverá está pronto até dia 20/06/2016.
Especificação dos Requisitos ER aF. ZOE.001
Quadro 8 – Quadro de Especificação do Requisito ER aF.ZOE.001 ER aF. ZOE.001 Criptografar
Descrição O software deverá criptografar o arquivo ou pasta requerida pelo ator.
Descrição do risco Risco Prioridade Não seleção do arquivo ou pasta. Médio Médio Seleção de mais de um arquivo ou pasta por vez Médio Alta Não gerar a senha para criptografia do arquivo ou pasta.
Baixo Baixa
Não criptografar o arquivo ou pasta.
Alto Alta
Usuário envolvido
Qualquer usuário.
Fonte: Os autores.
Necessidade Prioridade Preocupações Solução Atual Soluções Propostas
Mensagens de difusão.
Alta Disponibilidade, confidencialidade e
integridade das informações.
Não existe. O uso da criptografia para proteger as informações contra pessoas não autorizadas.
Simpósio de TCC e Seminário de IC , 2016 / 1º 1877
ER aF. ZOE.002
Quadro 9 – Quadro de Especificação do Requisito ER aF.ZOE.002 ER aF. ZOE.002 Decriptografar
Descrição O software deverá decriptografar o arquivo ou pasta requerida pelo ator.
Descrição do risco Risco Prioridade Não seleção do arquivo ou pasta a ser decriptografada.
Baixo Baixa
Inserir a senha errada ou não inserir a senha para decriptografar o arquivo ou pasta.
Médio Baixa
Não encontrar o arquivo ou pasta. Alto Alta Usuário
envolvido Qualquer usuário.
Fonte: Os autores. ER aF. ZOE.003
Quadro 10 – Quadro de Especificação do ER aF.ZOE.003 ER aF.ZOE.003
Selecionar Arquivo
Descrição O software deverá permitir que o ator escolha o arquivo a ser criptografado ou decriptografado.
Descrição do risco Risco Prioridade Não escolher um arquivo. Médio Médio
Selecionar mais de um arquivo por vez Médio Médio
Usuário envolvido
Qualquer usuário.
Fonte: Os autores. ER aF. ZOE.004
Quadro 11 – Quadro de Especificação do Requisito ER aF.ZOE.004 ER aF.ZOE.004 Selecionar Pasta
Descrição O software deverá permitir que o ator escolha a pasta a ser criptografada ou decriptografada.
Descrição do risco Risco Prioridade Não seleção da pasta. Baixo Baixa
Seleção de mais de uma pasta por vez. Alto Alta Usuário
envolvido Qualquer usuário.
Fonte: Os autores. ER aF.ZOE.005
Quadro 12 – Quadro de Especificação do RequisitoER aF.ZOE.005 ER aF. ZOE.005 Definir Senha
Descrição O software deve permite o usuário definir uma senha para efetuar a criptografia e decriptografia do arquivo ou pasta.
Descrição do risco Risco Prioridade Inserção de senha incorreta. Médio Baixa
Esquecimento da senha. Alto Alto Usuário envolvido Qualquer usuário.
Fonte: Os autores. ER aF. ZOE.006
Quadro 13 – Quadro de Especificação do Requisito ER aF. ZOE.006 ER aF. ZOE.006 Gerar Hash
Descrição O software deverá gerar o hash de um arquivo ou pasta. Descrição do risco Risco Prioridade
Não se aplica -- -- Usuário envolvido Qualquer usuário.
Fonte: Os autores.
Simpósio de TCC e Seminário de IC , 2016 / 1º 1878
Descrição dos Casos de Uso e Atores
Casos de Usos Criptografar arquivo
Este caso de uso é responsável por
efetuar a criptografia no arquivo selecionado pelo usuário.
Criptografar pasta
Este caso de uso é responsável por
efetuar a criptografia na pasta selecionada pelo usuário.
Decriptografar Este caso de uso é responsável por
decriptografar o arquivo ou pasta gerado pelo processo de criptografia. Descrição Atores Usuário
Este ator é qualquer pessoa que fará uso do aplicativo, será responsável pela seleção do arquivo ou pasta que será criptografado e decriptografado. Diagrama Geral de Caso de Uso
Figura 16 – Diagrama Geral de Caso de Uso
Fonte: Os autores.
Detalhamento dos Casos de Uso UC [01] – Criptografar Arquivo
Quadro 14 - Fluxo de Eventos do Caso de Uso Criptografar Arquivo Nome da Use Case Criptografar arquivo
Descrição O software recebe o arquivo e senha definida pelo usuário e efetua a criptografia.
Requisitos Associados
ER aF. ZOE.001
Pré Condições Software inicializado. O usuário ter selecionado a opção “Criptografar Arquivo”.
Pós Condições Arquivo criptografado. Atores Usuário
Fluxo Principal [FP01]
Simpósio de TCC e Seminário de IC , 2016 / 1º 1879
Ações Recebidas Ações Realizadas 1. O software exibe a tela para seleção do
arquivo a ser criptografado. 2. O usuário informa um único arquivo por
vez. 3. O software exibe uma janela para inserção da senha.
4. O usuário insere a senha. 5. O software gera uma chave com o hash da senha. 6. O software associa a chave gerada ao arquivo selecionado. 7. O software realiza o processo de criptografia do arquivo. 9. “O software salva o arquivo criptografado com a extensão ”.cript” na mesma pasta do arquivo original 8. O software exibe a informação que o arquivo foi criptografado com sucesso.
Fluxo Exceção [FE01] 1. O software exibe a tela para seleção do
arquivo a ser criptografado. 2. O usuário seleciona mais de um arquivo por vez.
3. O software volta ao passo 1 do fluxo principal.
Fonte: Os autores. UC [02] – Criptografar Pasta
Quadro 15 - Fluxo de Eventos do Caso de Uso Criptografar Pasta
Nome da Use Case Criptografar Pasta
Descrição O software recebe a pasta e senha definida pelo usuário e efetua a criptografia.
Requisitos Associados
ER aF. ZOE.002
Pré Condições Software inicializado. O usuário ter selecionado a opção “Criptografar Pasta”.
Pós Condições Pasta criptografada. Atores Usuário
Fluxo Principal [02] Ações Recebidas Ações Realizadas
1. O software exibe a tela seleção da pasta a ser criptografada.
2. O usuário informa uma única pasta por vez.
3. O software exibe a tela para inserção da senha.
4. O usuário insere a senha. 5. O software gera uma chave com o hash da senha. 6. O software associa a chave gerada à pasta selecionada. 7. O software compacta a pasta. 8. O software realiza o processo de criptografia da pasta. 9. “O software gera um arquivo com a extensão ”.cript” no mesmo local da pasta original. 10. O software exibe a informação que a pasta foi criptografada com sucesso.
Fluxo Exceção [FE02] 1. O software exibe a tela para seleção da pasta
a ser criptografada. 2. O usuário seleciona mais de uma pasta 3. O software volta ao passo 1 do fluxo principal.
Fonte: Os autores. UC [03] – Decriptografar Arquivo
Quadro 16 - Fluxo de Eventos do Caso de Uso Decriptografar Arquivo
Simpósio de TCC e Seminário de IC , 2016 / 1º 1880
Nome da Use Case Decriptografar. Descrição O software decriptografa o arquivo para sua recuperação e
verifica hash. Requisitos Associados
ER aF. ZOE.001; ER aF. ZOE.003;
Pré Condições Software inicializado. Ter um arquivo previamente criptografado. Senha disponível.
Pós Condições O software deverá decriptografar o arquivo selecionado. Atores Usuário
Fluxo Principal [FP03] Ações Recebidas Ações Realizadas
1. O usuário seleciona a opção “decriptografar arquivo ou pasta”.
2. O software exibe a tela para seleção do arquivo.
5. O usuário seleciona o arquivo criptografado. 6. O software exibe a tela para inserção da senha (já definida pelo usuário e associado ao arquivo).
7. O usuário fornece a senha e clica em “OK”. 8. O software valida a senha 9. O software compara as informações de hash. 10. O software cria uma pasta no mesmo local do arquivo criptografado nomeada com o mesmo nome do arquivo original, acrescido da palavra “DEC” com o arquivo decriptografado salvo nela. 11. O software exibe a informação que o arquivo foi decriptografado com sucesso. 12. O software exibe a informação que as informações de hash do arquivo coincidem.
Fluxo Exceção [FE03] Ações Recebidas Ações Realizadas
1. O usuário fornece uma senha inválida. 2. O software valida a senha. 3. O software compara as informações de hash. 4. O software exibe a informação que a senha é inválida. 5. O software informa que os hash são inválidos. 6. O software volta ao passo 6 do fluxo principal.
Fonte: Os autores. UC [04] – Decriptografar Pasta
Quadro 17 - Fluxo de Eventos do Caso de Uso Decriptografar Pasta Nome da Use Case Decriptografar Pasta.
Descrição O software decriptografa a pasta para sua recuperação e verifica hash.
Requisitos Associados
ER aF. ZOE.001; ER aF. ZOE.004;
Pré Condições Software inicializado. Ter uma pasta previamente criptografada. Senha disponível.
Pós Condições O software deverá decriptografar a pasta selecionada. Atores Usuário
Fluxo Principal [FP04]
Ações Recebidas Ações Realizadas 1. O usuário seleciona a opção “decriptografar pasta ou arquivo”.
2. O software exibe a tela para seleção da pasta.
3. O usuário seleciona a pasta criptografada. 4. O software exibe a tela para inserção da senha (já definida pelo usuário e associado à pasta).
5. O usuário fornece a senha. 6. O software valida a senha. 7. O software compara as informações de hash. 8. O software cria uma nova pasta no mesmo local da pasta criptografada nomeada com o mesmo nome da pasta original, acrescida da palavra “DEC”.
Simpósio de TCC e Seminário de IC , 2016 / 1º 1881
9. O software exibe a informação que a pasta foi decriptografada com sucesso. 10. O software exibe a informação que as informações de hash da pasta coincidem.
Fluxo Exceção [FE04] Ações Recebidas Ações Realizadas
1. O usuário fornece a senha uma senha inválida e clica em “OK”.
2. O software valida a senha. 3. O software compara as informações de hash. 4. O software exibe a informação que a senha é inválida. 5. O software informa que os hash são inválidos. 6.O software volta ao passo 6 do fluxo principal.
Fonte: Os autores. Diagrama Geral de Estados
Figura 17 – Diagrama Geral de Estado de Arquivo
Fonte: Os autores.
Simpósio de TCC e Seminário de IC , 2016 / 1º 1882
Figura 18 – Diagrama Geral de Estado de Pasta
Fonte: Os autores.
Classes de Análise
Detalhamento das Classes de Análise Classe de Fronteira – Tela Principal
Simpósio de TCC e Seminário de IC , 2016 / 1º 1883
Interação do sistema com os atores. Responsável por apresentar as opções de criptografar arquivo, criptografar pasta e decriptografar arquivo ou pasta. Classe de Controle de Arquivo
Responsável por todo controle lógico de execução do aplicativo realizando os processos de criptografar arquivo, criptografar pasta e decriptografar. Diagrama Geral de Classe
Figura 19 – Diagrama Geral de Classe
Fonte: Os autores
Diagrama de Classe com Fronteira e Entidade Figura 20 – Diagrama de Classe com Fronteira e Entidade
Fonte: Os autores.
Simpósio de TCC e Seminário de IC , 2016 / 1º 1884
Diagrama de Sequência Criptografar Arquivo
Figura 21 – Diagrama de Sequência Criptografar Arquivo
Fonte: Os autores.
Diagrama de Sequência Criptografar Pasta
Figura 22 – Diagrama de Sequência Criptografar Pasta
Simpósio de TCC e Seminário de IC , 2016 / 1º 1885
Fonte: Os autores
Diagrama de Sequência Decriptografar
Simpósio de TCC e Seminário de IC , 2016 / 1º 1886
Figura 23 – Diagrama de Sequência Decriptografar
Fonte: Os autores
CONCLUSÃO Nos últimos anos, o valor da segurança
da informação vem sendo tratado com mais freqüência e preocupação que anos atrás, tanto para empresas que lidam com informações valiosas, comércios ou ate mesmo a informação pessoal.
Além de apresentar uma visão ampla
sobre a importância da segurança de dados, este
trabalho apresenta também uma alternativa para manter esses dados em segurança. Tem-se aqui a oportunidade de fixar e abordar vários termos a respeito de segurança da informação, assim como seus pilares (confidencialidade, integridade e disponibilidade). A experiência obtida vai muito além do uso de um software de criptografia, agregou conhecimento acerca do ciclo de desenvolvimento de um produto, documentação do mesmo, análise das necessidades do usuário
Simpósio de TCC e Seminário de IC , 2016 / 1º 1887
e a importância de uma ferramenta para a maior segurança das informações.
Abordando importância da segurança da informação de maneira simples e coerente, o trabalho reforça a necessidade da segurança nos dias atuais e proteção dos dados do usuário, através do software de criptografia Zero One Encrypt.
O software gerado dispõe de funções para criptografar e decriptografar arquivos e pastas, fazendo uso da criptografia simétrica, garantindo assim a confidencialidade e disponibilidade das informações. Apresenta também a função de verificação de hash, garantindo a integridade das informações. DEDICATÓRIA
Dedico este trabalho a Deus, que me manteve firme durante toda essa jornada. Dedico também à minha mãe, Raimunda, e à minha avó, Maria (in memorian) que, por mais difícil que fossem as circunstâncias, sempre me deram todo apoio e força necessária para seguir em frente. (Camila) Dedico aos meus pais, que sempre me apoiaram, nunca deixando faltar nada. Também dedico a Deus que sempre me deu forças para não desistir, e um agradecimento especial a todos aqueles que acreditaram em mim. (Rodrigo) REFERÊNCIAS ALVARENGA, Luiz Gonzaga. Criptografia Clássica e Moderna. 1 ed. 2010. Disponível em: <https://issuu.com/marcioalvesdelima/docs/criptografia_cl__ssica_e_moderna_-_>. Acesso em: 13 Abr. 2016, 14:33.
ANICHE, Maurício. Revisando a Orientação a Objetos: encapsulamento no Java, 2012.Disponível em: <http://blog.caelum.com.br/revisitando-a-orientacao-a-objetos-encapsulamento-no-java/>. Acesso em: 04 Mar. 2016, 17:25.
ASSOCIAÇÃO BRASILEIRA DE NORMAS TÉCNICAS. ABNT NBR ISSO/IEC 27001: Tecnologia da Informação: Técnicas de Segurança: sistema de gestão da informação: requisitos. Rio de Janeiro, 2006.
ASSOCIAÇÃO BRASILEIRA DE NORMAS TÉCNICAS. ABNT NBR ISSO/IEC 27002: Tecnologia da Informação: Técnicas de Segurança: código de prática para a gestão de segurança da informação. Rio de Janeiro, 2005.
BRAZ, Christian Cleber Masdeval. Introdução à Linguagem Java. Disponível em: <http://www-
usr.inf.ufsm.br/~cassel/minicursos/java/java.pdf>.Acesso em: 27 Abr. 2016 13:24.
CARDOSO, Caique: UML na prática: do problema ao sistema. Rio de Janeiro: Ciência Moderna, 2003.
CARTILHA DE ESTUDOS, RESPOSTA E TRATAMENTO DE INCIDENTES DE SEGURANÇA NO BRASIL, CERT.BR. Cartilha de Segurança para Internet. São Paulo, 2012. Disponível em: <http://cartilha.cert.br/criptografia/>Acesso em: 03 Mar. 2016, 11:31.
CHIARAMONTE, R. Barros; MORENO, E. Dawid; PEREIRA, F. Dacêncio. Criptografia em Software e Hardware. São Paulo: Novatec, 2005. Disponível em: <http://pt.slideshare.net/edmoreno/livro-criptografia-em-hw-e-sw-isbn-8575220691>. Acesso em: 03 Mar. 2016, 12:12
FARINELLI, Fernanda. Conceitos Básicos de Programação Orientada a Objetos, 2007. Disponível em: <http://www.marcelohsantos.com.br/aulas/downloads/apostilas/Apostila_Java_B.pdf>. Acesso em: 04 Mar. 2016, 8:35.
FILHO, Antonio Mendes da Silva. Engenharia de Software – Essencial para próximas décadas. Disponível em:<http://www.periodicos.uem.br/ojs/index.php/EspacoAcademico/article/view/13587/7061 25/05>. Acesso em 25 Mar. 2016, 20:26.
GARCIA, Vagner Gonçalves de Almeida. Classes, Objetos, Atributos e Métodos em Java. Disponível em: <http://fabrica.ms.senac.br/2015/03/classes-objetos-atributos-e-metodos-em-java/>. Acesso em: 04 Mar. 2016, 16:30.
GUEDES, Gilleanes T. A. UML 2 – Guia Prático, 2ª Ed. São Paulo: Novatec Editora Ltda, 2014. Disponível em: <https://issuu.com/novateceditora/docs/capitulo9788575223857>. Acesso em: 13 Abr. 2016, 12:33.
MACORATTI, José Carlos. Polimorfismo – Conceitos e utilização. Disponível em: <http://imasters.com.br/desenvolvimento/visual-basic/programacao-orientada-objetos-em-10-licoes-praticas-parte-08/?trace=1519021197&source=single>. Acesso em: 04 Mar. 2016, 17:17.
MADEIRA, Marcelo de Melo. ENTENDENDO O DIAGRAMA DE CASOS DE USO, 2007. Disponível em: <https://celodemelo.wordpress.com/2007/03/17/e
Simpósio de TCC e Seminário de IC , 2016 / 1º 1888
ntendedo-o-diagrama-de-casos-de-uso/>. Acesso em: 13 Abr. 2016, 09:21. OLIVEIRA, Ronielton Rezende. Criptografia simétrica e assimétrica: os principais algoritmos de cifragem. Disponível em: <http://www.ronielton.eti.br/publicacoes/artigorevistasegurancadigital2012.pdf> Acesso em:02 Mar. 2016, 12:21.
PALMEIRA, Thiago Vinícius Varallo. Abstração, Encapsulamento e Herança: Pilares da POO em Java Disponível em: <http://www.devmedia.com.br/abstracao-encapsulamento-e-heranca-pilares-da-poo-em-java/26366>. Acesso em: 05 Mar. 2016, 11:20. PIMENTEL, Andrey Ricardo. PROJETO DE SOFTWARE USANDO A UML, 2015. Disponível em: <http://www.inf.ufpr.br/andrey/ci167/apostilaUml.pdf> Acesso em: 09 Abr. 2016, 10:50.
PINTO, Pedro. Criptografia simétrica e assimétrica. Sabe a diferença? Disponível em:<http://pplware.sapo.pt/tutoriais/networking/criptografia-simetrica-e-assimetrica-sabe-a-diferenca/>. Acesso em: 04 Mar. 2016, 10:17. RICARTE,Ivan Luiz Marques. O que é um objeto?Disponível em:<http://www.dca.fee.unicamp.br/cursos/PooJa
va/objetos/conceito.html>. Acesso em: 04 Mar. 2016, 16:40. SCRIPTCASE BRASIL. Os 4 Pilares da programação Orientada a Objetos. Disponível em:<http://www.scriptcase.com.br/blog/4-pilares-programacao-orientada-a-objetos/>. Acesso em 04 Mar. 2016,16:52.
SILVA, Alberto M. R. da Silva; VIDEIRA, Carlos A. Escaleira. UML – Metodologias e Ferramentas CASE, 1ª Ed. Portugal: Centro Atlântico, 2001. Disponível em: <http://www.cesarkallas.net/arquivos/livros/informatica/UML_Metodologias_e_Ferramentas_CASE_portugues_.pdf>. Acesso em: 12 Abr. 2016, 16:04.
SOMMERVILLE, Ian. Engenharia de Software. 9.ed. São Paulo: Pearson Prentice Hall, 2011.
TERRA, Ricardo. UML, 2009. Disponível em:<http://professores.dcc.ufla.br/~terra/public_files/2009_apostila_uml.pdf>. Acessoem: 09 Abr. 2016, 10:44.
VALE, Christiano Rodarte. Criptografia MD5. Disponível em: <http://www.devmedia.com.br/criptografia-md5/2944>.Acesso em: 26 Abr. 2016, 15:07.
APÊNDICE - A
Na tela principal do Zero One Encrypt é disponibilizado as funções Criptografar Arquivo, Criptografar Pasta e Decriptografar Arquivo ou Pasta.
Figura 24 – Tela Principal
Fonte: Os autores.
Simpósio de TCC e Seminário de IC , 2016 / 1º 1889
Após selecionar uma das funções, criptografar arquivo, criptografar pasta, decriptografar arquivo ou pasta, o software apresenta uma tela para seleção do arquivo ou pasta.
Figura 25 – Tela de Seleção de Arquivo e Pasta.
Fonte: Os autores.
Após a seleção do arquivo ou pasta a ser criptografada ou decriptografada, o software apresenta a
tela para inserção da senha.
Figura 26 – Tela Inserir Senha
Fonte: Os autores.
As telas a seguir informam ao usuário se o arquivo ou pasta foram criptografados e decriptografados
com sucesso.
Figura 27 – Mensagem arquivo criptografado com sucesso
Fonte: Os autores.
Simpósio de TCC e Seminário de IC , 2016 / 1º 1890
Figura 28 – Mensagem arquivo decriptografado com sucesso
Fonte: Os autores.
A tela a seguir informa ao usuário que o hash corresponde ao arquvo.
Figura 29 – Mensagem hash compatível.
Fonte: Os autores
As próximas telas são apresentadas ao usuário quando a senha inserida para decriptografar é inválida e quando o hash não corresponde ao arquivo original.
Figura 30 – Senha Inválida
Fonte: Os autores.
Figura 31 – Informações de hash incompatíveis
Fonte: Os autores.