curso de tecnologia em seguranÇa da...
TRANSCRIPT
CURSO DE TECNOLOGIA EM SEGURANÇA DA INFORMAÇÃO
JOSÉ PEREIRA DE SOUZA NETO
RODRIGO LICAR GOIS
CriptoSis – DESENVOLVIMENTO DE SOFTWARE PARA
CRIPTOGRAFIA SIMÉTRICA
BRASÍLIA
2015
JOSÉ PEREIRA DE SOUZA NETO
RODRIGO LICAR GOIS
CriptoSis – DESENVOLVIMENTO DE SOFTWARE PARA
CRIPTOGRAFIA SIMÉTRICA
Trabalho de Conclusão de Curso apresentado a Faculdade Icesp Promove de Brasília como requisito parcial para obtenção do título de Tecnólogo em Segurança da Informação.
BRASÍLIA
2015
JOSÉ PEREIRA DE SOUZA NETO
RODRIGO LICAR GOIS
CriptoSis – DESENVOLVIMENTO DE SOFTWARE PARA
CRIPTOGRAFIA SIMÉTRICA
Trabalho de Conclusão de Curso apresentado a Faculdade Icesp Promove de Brasília como requisito parcial para obtenção do título de Tecnólogo em Segurança da Informação.
Aprovado em: _____/_____/_____ por:
________________________________
Orientador: Prof. MSc. Cid Bendaham
________________________________
Avaliador:
________________________________
Avaliador:
RESUMO
Este trabalho tem como objetivo o desenvolvimento de um software de criptografia, que é um método confiável para tornar uma informação legível em um texto cifrado, visando garantir a confidencialidade, e a geração de um código hash para garantir a integridade da informação. Para o desenvolvimento do trabalho foram utilizadas diversas fontes bibliográficas e artigos da internet. As atividades realizadas a partir dos estudos foram a análise, documentação do software, implementação do software na linguagem de programação Java baseado em orientação à objetos, finalização e testes do sistema. O resultado obtido foi um software com recurso funcionais como criptografia e hash, atendendo assim aos objetivos e colocando em relevância a segurança da informação.
Palavras-chave: criptografia, confidencialidade, integridade, informação, hash.
ABSTRACT
This study aims to develop an encryption software, which is a reliable method to make a readable information in an encrypted text in order to ensure confidentiality, and to generate a hash code to ensure integrity of the information. To develop the study, we used various literature sources and articles from internet. The activities carried out from the studies were analysis, software documentation, software implementation of the Java programming language based on object orientation, completion and testing of the system. The result was a software with functional feature like encryption and hashing, thus meeting the goals and putting in relevance to information security. Keywords: encryption, confidentiality, integrity, information, hash.
Lista de ilustrações.
Figura 1 - Classe e objetos .......................................................................................14
Figura 2 - Atributos e Operações...............................................................................14
Figura 3 – Herança entre classes..............................................................................15
Figura 4 - Composição e agregação entre classes .................................................. 16
Figura 5 - Multiplicidade ............................................................................................16
Figura 6 - Etapas da Engenharia de Software ..........................................................17
Figura 7 - Etapas da compilação do código Java através da JVM ...........................19
Figura 8 – Dependência ............................................................................................19
Figura 9 - Generalização Normal ..............................................................................20
Figura 10 – Associação .............................................................................................20
Figura 11 - Diagrama de Caso de Uso ......................................................................22
Figura 12 - Diagrama de Classe ...............................................................................23
Figura 13 - Exemplo de Diagrama de sequencia.......................................................23
Figura 14 - Modelo convencional de criptografia simétrica .......................................24
Figura 15 - Modelo convencional de criptografia assimétrica ...................................25
Figura 16 - Funcionamento da função hash ..............................................................26
Figura 17 - Diagrama geral de caso de uso ..............................................................38
Figura 18 - Diagrama geral de classe .......................................................................46
Figura 19 - Diagrama de Classe Arquivo ..................................................................47
Figura 20 - Diagrama de Classe de Análise com Fronteira e Entidade ....................48
Figura 21 - Diagrama de Sequencia Selecionar Arquivo ................................................48
Figura 22 - Diagrama de Sequencia Inserir Senha ........................................................49
Figura 23 - Diagrama de Sequencia Criptografar Arquivo ...................................................49
Figura 24 - Diagrama de Sequencia Gerar Hash............................................................50
Figura 25 - Diagrama de Sequência Descriptografar Arquivo ......................................50
Figura 26 - Diagrama de Sequencia Conferir Hash (Fluxo Principal) ..........................51
Figura 27: Diagrama de Sequencia Conferir Hash (Fluxo alternativo) ......................51
Figura 28: Tela principal ............................................................................................55
Figura 29: Tela de seleção de arquivos ....................................................................55
Figura 30: Tela inserir senha .....................................................................................56
Figura 31: Tela conferir hash .....................................................................................56
Figura 32: Mensagem de arquivo criptografado com sucesso ..................................57
Figura 33: Mensagem de falha ao criptografar ..........................................................57
Figura 34: Mensagem de arquivo descriptografado com sucesso ............................57
Figura 35: Tela de falha ao Descriptografar .............................................................58
Figura 36: Tela de confirmação da geração do hash ................................................58
Figura 37: Tela conferir hash .....................................................................................59
Figura 38: Mensagem de arquivo integro ..................................................................59
Figura 39: Mensagem de arquivo não confiável ........................................................60
Lista de quadros.
Quadro 1 – Descrição do problema ............................................................................29
Quadro 2 – Sentença de posição do produto ..............................................................29
Quadro 3 – Resumo dos envolvidos ...........................................................................31
Quadro 4 – Resumo dos clientes ................................................................................31
Quadro 5 – Perfil do desenvolvedor e analista ............................................................32
Quadro 6 – Perfil do usuário .......................................................................................32
Quadro 7 – Especificação de requisito ERaF.CriptoSis.001 .....................................33
Quadro 8 – Especificação de requisito ERaF.CriptoSis.002 .....................................34
Quadro 9 – Especificação de requisito ERaF.CriptoSis.003 .....................................34
Quadro 10 – Especificação de requisito ERaF.CriptoSis.004 ...................................35
Quadro 11 – Especificação de requisito ERaF.CriptoSis.005 ...................................35
Quadro 12 – Especificação de requisito ERaF.CriptoSis.006 ....................................36
Quadro 13 – Fluxo de Eventos do Caso de Uso Selecionar Arquivo ........................39
Quadro 14 – Fluxo de Eventos do Caso de Uso Inserir Senha .................................40
Quadro 15 – Fluxo de Eventos do Caso de Uso Criptografar Arquivo ......................41
Quadro 16 – Fluxo de Eventos do Caso de Uso Gerar Hash ....................................42
Quadro 17 – Fluxo de Eventos do Caso de Uso Descriptografar Arquivo ...................43
Quadro 18 – Fluxo de Eventos do Caso de Uso Conferir Hash ................................44
Sumário
CAPITULO I – APRESENTAÇÃO ....................................................................................... 10
1 INTRODUÇÃO .......................................................................................................... 10
1.1 Justificativa ........................................................................................................ 11
1.2 Objetivos ............................................................................................................ 11
CAPITULO II – REFERÊNCIAL TEÓRICO ......................................................................... 12
2 REFERÊNCIAL TEÓRICO ........................................................................................ 12
2.1 Informação ......................................................................................................... 12
2.2 Segurança da informação .................................................................................. 12
2.3 Orientação a objetos .......................................................................................... 13
2.4 Engenharia de software ..................................................................................... 17
2.5 Java ................................................................................................................... 18
2.6 UML ................................................................................................................... 19
2.7 Criptografia ........................................................................................................ 24
2.8 Hash .................................................................................................................. 26
CAPITULO III – ANÁLISE DO SISTEMA ............................................................................ 29
3 DOCUMENTOS DE VISÃO ....................................................................................... 29
3.1 Finalidade .......................................................................................................... 29
3.2 Posicionamento ..................................................................................................... 29
3.3 Descrições dos Envolvidos e dos Clientes ............................................................. 31
3.4 Descrição dos Casos de Uso e Atores ................................................................... 37
3.4.1 Casos de Uso ..................................................................................................... 37
3.5 Diagrama Geral de Caso de Uso ............................................................................ 39
3.6 Detalhamento dos Casos de Uso ............................................................................ 40
3.7 Diagrama Geral de Classe ...................................................................................... 47
3.8 Classes de Análise ................................................................................................. 48
CAPITULO IV – CONCLUSÃO ........................................................................................... 53
REFERENCIAS ................................................................................................................... 54
APÊNDICE – A .................................................................................................................... 56
10
CAPITULO I – APRESENTAÇÃO
1 INTRODUÇÃO
Nas últimas décadas a informação vem sendo tratada como o principal ativo
das organizações e indivíduos. A sua proteção garante que o valor dessa
informação continue íntegro e que as tomadas de decisões sejam garantidas.
O aumento da manipulação de grandes quantidades de informações também
aumentou o risco de perda das mesmas. Garantir que isso não aconteça é uma
preocupação não só do profissional de segurança da informação, mas de todos.
Com as políticas de segurança e uso de softwares de segurança, com recursos
criptográficos, é possível administrar as informações evitando que os riscos sejam
explorados por um agente atacante.
O objetivo deste trabalho é o desenvolvimento de um software de criptografia
simétrica que visa garantir a confidencialidade e a integridade das informações
transmitidas de um emissor para um receptor.
11
1.1 Justificativa
A utilização de ferramentas de segurança são uma constante no âmbito da
segurança da informação, porém nem sempre há garantia de que os dados
transmitidos de um usuário para outro atendem aos pilares da segurança da
informação: integridade, disponibilidade e confiabilidade.
Colocando a questão da segurança em foco, justifica-se então a elaboração do
software, visando assim diminuir os riscos de alterações da informação. Com os seus
recursos criptográficos e métodos de geração de hash para garantir a integridade, o
CriptoSis se torna um protótipo de grande importância.
1.2 Objetivos
1.2.1 Objetivo geral
Desenvolver um software capaz de criptografar e descriptografar arquivos,
visando garantir a confidencialidade e a integridade dos mesmos.
1.2.2 Objetivos Específicos
Realizar o levantamento dos requisitos para dar lógica ao sistema.
Pesquisar algoritmos criptográficos e hash para implementar no
desenvolvimento do software.
Elaborar a documentação do software.
Desenvolver e testar o software.
12
CAPITULO II – REFERÊNCIAL TEÓRICO
2 REFERÊNCIA TEÓRICO
2.1 Informação
“A informação é um ativo que, como qualquer outro ativo importante, tem um
valor para a organização e, consequentemente, necessita ser adequado e protegido.”
(FERREIRA, 2003, p. 1).
A ABNT NBR ISO/IEC 27002 (2005, p. X), destaca que:
“A informação pode existir de diversas formas. Ela pode ser impressa ou
escrita em papel, armazenadas eletronicamente, transmitida pelos correios
ou por meios eletrônicos, apresentada em filmes ou falada em conversas.
Seja qual for a forma apresentada ou o meio através do qual a informação é
compartilhada ou armazenada, é recomendado que seja sempre protegida
adequadamente. ”
Afirmando isso, Ferreira (2003) define a informação como o principal ativo das
organizações e como ponto focal de competitividade. Por conta disso, o bom
gerenciamento da informação se torna bastante importante na tomada de decisões
estratégicas.
2.2 Segurança da informação
Segundo a ABNT NBR ISO/IEC 27002 (2005, p. X), “segurança da informação
é a proteção da informação de vários tipos de ameaças para garantir a continuidade
dos negócios, minimizar o risco ao negócio, maximizar o retorno sobre os
investimentos e as oportunidades de negócio.”
A norma ABNT NBR ISO/IEC 27001 (2006, p. 2-3) cita várias técnicas para
garantir o controle das informações, porém existem três pilares fundamentais que
sustentam a teoria da segurança da informação, são elas:
A confidencialidade visa garantir que a informação seja adquirida
somente a quem tenha direito a ela.
13
A integridade visa garantir que informação seja adquirida sem
nenhuma modificação por terceiros.
A disponibilidade visa garantir que uma informação esteja sempre
disponível a quem tenha direito de acesso a ela.
Além desses pilares, a norma ABNT NBR ISO/IEC 27001 (2006, p. 2) cita
outras características de grande importância, como:
Autenticidade
Não repúdio
Confiabilidade
Responsabilidade
Por fim a ABNT NBR ISO/IEC 27002 (2005, p. X) ressalta 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 do negócio.”
2.3 Orientação a objetos
“A orientação a objetos é uma abordagem para desenvolvimento de software
que organiza os problemas e suas soluções como um conjunto de objetos distintos.
(PFLEEGER, 2004, p.210). “
2.3.1 Objetos, classes, atributos e operações
A seguir as definições dos principais elementos da orientação a objeto,
conforme definidos por Cardoso (2003):
“Objeto é um conceito que existe no mundo real, ou seja, objeto é tudo aquilo
com que podemos nos relacionar ou que se relacionam entre si. ” (CARDOSO,2003,
p.6).
14
“Classe é uma descrição de um conjunto de objetos com propriedades,
comportamento, relacionamento e semânticas comuns. Uma classe pode ser vista
como um esqueleto/modelo para criar objetos. “ (CARDOSO, 2003, p.7).
A figura 1 ilustra a representação de Classe e Objetos.
Figura 1 – Classe e objetos
CLASSE OBJETOS
Fonte: Os autores.
“Atributo é uma propriedade identificada de uma classe onde são armazenados
os dados, caracterizando o estado e as relações do objeto. ” (CARDOSO, 2003, p.7).
“Operações identifica o comportamento do objeto, também chamado de
serviço, método ou atividade. Na classe Pessoa, temos as seguintes operações:
Cadastrar, Consultar, Listar, entre outras. ” (CARDOSO, 2003, p.7).
A figura 2 ilustra a descrição de atributos e operações ou métodos da classe pessoa.
Figura 2 – Atributos e Operações
Fonte: os autores.
15
2.3.2 Relacionamentos
Segundo Cardoso (2003), na modelagem de objetos são identificadas as
operações que permitam identificar todos os relacionamentos do objeto no contexto
do sistema, seguindo os principais relacionamentos entre classes, apresentados a
seguir:
2.3.2.1 Herança
“Uma classe pode possuir um relacionamento de herança com outra classe,
quando incorpora os atributos e métodos de uma classe mãe que tem características.”
(CARDOSO, 2003, p. 8)
A figura 3 exemplifica um modelo com uso de herança.
Figura 3 – Herança entre classes.
Fonte: os autores.
2.3.2.2 Agregação, composição e dependência
Estes relacionamentos são semelhantes, diferenciando em relação à
intensidade. Um relacionamento de composição existe quando uma classe é
composta por outra, de tal forma que a parte que compõe não existe, se não
existir o todo, ou seja, “a parte não vive sem o todo”. (CARDOSO, 2003, p.8).
“A agregação é semelhante, porém, a parte vive sem o todo, ou seja, se não
existir o todo, a parte continuará existindo. “ (CARDOSO, 2003, p.8)
“A dependência é quando uma classe depende de outra, porém isto ocorre
esporadicamente durante a vida dos objetos. “ (CARDOSO, 2003, p.9)
16
A figura 4 exemplifica um modelo de composição e agregação entre classes.
Figura 4 – Composição e agregação entre classes
Fonte: Os autores.
2.3.2.3 Multiplicidade
Cardoso (2003), define a multiplicidade como um relacionamento estrutural que
especifica objetos de um item conectados a objetos de outro item. No exemplo, o
relacionamento entre o Estudante (1) e a Disciplina (n).
A figura 5 exemplifica um modelo de multiplicidade.
Figura 5 – Exemplo de Multiplicidade
Fonte: Os autores.
17
2.4 Engenharia de software
Pfleeger (2004), define a engenharia de software como uma área voltada para
a abstração, métodos e notação da análise e projeto, modularidade e arquitetura, ciclo
de vida do software, reutilização, medição, ferramentas e ambientes integrados,
interface com o usuário e prototipagem, tudo isso dentro do ambiente da computação.
Segundo Gamma, Helm, Johnson e Vlissides (2000), a Engenharia de Software
baseada na integração de componentes reutilizáveis é essencial para o
desenvolvimento rápido do sistema reduzindo custos e riscos, é o modelo que sempre
busca as soluções reutilizáveis de padrões de projetos consagradas pelo uso,
exigindo dos profissionais maior atenção nas adaptações desses componentes.
A figura 6 exemplifica as etapas da engenharia de software.
Figura 6 – Etapas da Engenharia de Software com reutilização de componentes
Fonte: Victorino, Bräscher (2009)
18
2.4.1 Modelo prático para o Desenvolvimento de Software orientado a
objetos (PRISM)
Cardoso (2003) define o PRISM como um modelo prático que permite o avanço
dos requisitos do sistema, facilitando a elaboração de arquitetura e engenharia de
software, uma vez que mostra o caminho e permite o acompanhamento do projeto em
cada fase.
2.5 Java
O Java foi a linguagem de programação utilizada para o desenvolvimento do software CriptoSis, o uso de bibliotecas padrões facilitou a implementação do algoritmo de hash e de criptografia simétrica.
“Java é uma linguagem de programação e plataforma computacional lançada pela primeira vez pela Sun Microsystems em 1995. Existem muitas aplicações e sites que não funcionarão, a menos que você tenha o Java instalado, e mais desses são criados todos os dias. O Java é rápido, seguro e confiável. De laptops a datacenters, consoles de games a supercomputadores científicos, telefones celulares à Internet, o Java está em todos os lugares. ” (ORACLE, 2015).
Para compilação dos programas em Java é necessária uma JVM (Java Virtual
Machine) que faz a ponte entre a linguagem de programação e o sistema operacional,
conforme citado por Frota (2013), JVM é uma máquina virtual, como seu próprio nome
já diz. E uma das funcionalidades dele é de servir como interpretador para o Java.
Resumindo, o funcionamento é bem simples. Escreve-se o código em um arquivo
Java, compila, e é gerado um arquivo .class, esse arquivo .class é conhecido como
bytecode. A JVM irá ler/interpretar esse bytecode e executá-lo.
19
A figura 7 abaixo representa o fluxo da compilação do código Java.
Figura 7 – Etapas da compilação do código Java através da JVM
Fonte: Os autores
2.6 UML
De acordo com Pfleeger (2004), a Unified Modeling Language (UML) é uma
linguagem gráfica para visualizar, especificar, ou documentar os artefatos de um
sistema de software.
Pfleeger (2004) ressalta três tipos de relacionamentos:
Dependência: é um relacionamento entre elementos, um independente e outro
dependente. Uma modificação em elemento independente afetará diretamente
elementos dependentes do anterior.
A figura 8 exemplifica um modelo de dependência.
Figura 8 - Dependência
Fonte: Fonte: Os autores
20
Generalização: É um relacionamento de um elemento mais geral e outo mais
específico. Uma instância do elemento mais especifica pode ser usada onde o
elemento mais geral seja permitido.
A figura 9 exemplifica um modelo de generalização normal.
Figura 9 – Generalização Normal
Fonte: Fonte: Os autores.
Associação: É uma associação entre classes/objetos. Uma associação é
definida como um relacionamento que descreve uma série de ligações, onde a
ligação é definida com a semâtica entre as duplas de objetos ligados.
A figura 10 exemplifica um modelo de associação
Figura 10 – Associação
Fonte: Os autores.
21
Segundo Pfleeger (2004), os diagramas que são um dos pilares da UML,
possibilita visualizar os detalhes do sistema de maneira estatica e tambem dinâmica,
são:
1. Diagramas estáticos
Diagrama de classes;
Diagrama de objeto;
Diagrama de componente;
Diagrama de implantação;
Diagrama de pacote.
2. Diagramas dinâmicos
Diagrama de caso de uso;
Diagrama de sequência;
Diagrama de colaboração;
Diagrama de atividade;
Diagrama de estado.
2.6.1 Diagrama de Caso de Uso
O Diagrama de Caso de Uso, segundo Pfleeger (2004), “são uma descrição
de um conjunto de sequência de ações, que o sistema executa para produzir um
resultado de valor observável”.
Ainda segundo Pfleeger (2004), os atores representam um conjunto coerente
de papeis, tipicamente pode representar um ser humano, um dispositivo de hardware
ou outro sistema.
22
A figura 11 exemplifica um modelo de diagrama de caso de uso.
Figura 11 – Diagrama de Caso de Uso
Fonte: Os autores
Pfleeger (2004) cita dois estereótipos aplicados aos relacionamentos de
dependências existentes entre os casos de uso, a saber:
<< Extend>>: especifica que o caso de uso de destino estende o
comportamento da origem.
<<Include>>: especifica que o caso de uso incorpora explicitamente o
comportamento de outro caso de uso em um local especificado pela
origem.
2.6.2 Diagrama de Classe
Conforme Pfleeger (2004), um diagrama de classe “mostra um conjunto de
classes, interfaces, colaboradores e seus relacionamentos”.
23
A figura 12 exemplifica um modelo de diagrama de classe.
Figura 12 – Diagrama de Classe
Fonte: Os autores
2.6.3 Diagrama de Sequência
Conforme Pfleeger (2004), um diagrama de sequência: “mostra um conjunto
de papéis e as mensagens enviadas e recebidas pelas instâncias que representam os
papéis”.
A figura 13 exemplifica um diagrama de sequência.
Figura 13 – Exemplo de Diagrama de sequencia
Fonte: Os autores.
24
2.7 Criptografia
Para Simon (1999 apud Moreno; Pereira; Chiaramonte, s.d., p. 21) a
criptografia pode ser entendida como um conjunto de métodos e técnicas para cifrar
ou codificar informações legíveis por meio de um algoritmo, convertendo um texto
original em um texto ilegível, sendo possível mediante o processo inverso recuperar
as informações originais.
2.7.1 Criptografia simétrica ou chave privada
Para Stallings (2006, p.17), “A criptografia simétrica é uma forma de
criptossistema em que a criptografia e a decriptografia são realizadas utilizando a
mesma chave. Ela também é conhecida como criptografia convencional”.
A figura 14 exemplifica o processo de criptografia simétrica.
Figura 14: Modelo convencional de criptografia simétrica.
Fonte: PINTO, (2010).
O uso seguro da criptografia simétrica, segundo Stallings (2006, p.18) é
destacado da seguinte forma:
“1. Precisamos de um algoritmo de criptografia forte. No mínimo queremos que um oponente que conheça o algoritmo e tenha acesso a um ou mais textos cifrados seja incapaz de decifrar o texto cifrado ou descobrir a chave. Esse requisito normalmente é indicado em uma forma mais forte: o oponente deverá ser incapaz de descriptografar o texto cifrado ou descobrir a chave mesmo que possua diversos textos cifrados juntamente com o texto claro que produziu cada texto cifrado 2. Emissor e receptor precisam ter cópias da chave secreta de uma forma segura e precisam manter a chave protegida. Se alguém puder descobrir a chave e souber o algoritmo, toda comunicação usando essa chave poderá ser lida. ”
25
Para o desenvolvimento do software CriptoSis, foi utilizado o algoritmo 3DES para
criptografia simétrica. A Cedet (2009) explica que:
“3DES é a sigla para Triple Data Encryption Standard e se refere a um algoritmo de criptografia. Este cifrador é de chave simétrica, implementando uma criptografia de bloco e foi baseado no algoritmo DES (Data Encryption Standard) desenvolvido pela IBM em 1974. O3DES utiliza três chaves, K1, K2 e K3, de 64 bits (56 bits compõem cada uma das chaves e 8 bits são de paridade) em três estágios de codificação em cascata. Note que com isto, o algoritmo pode ter chaves de até 192 bits. “
Segundo Soares (2012 p.6) as vantagens da utilização 3DES são:
Fácil implementação comparado com outros algoritmos.
Baseado no DES que é um algoritmo confiável.
Mais rápido se comparado com métodos que utilizam chaves públicas.
Com base nisso, foi feito a escolha do algoritmo criptográfico 3DES para a
implementação no software.
Existem diversos algoritmos de criptografia simétrica que viabilizam a proteção da
informação, dentre eles pode-se citar:
DES – Data Encryption Standart, agoritmo simétrico.
IDEA – International Data Encryption Algorithm, agoritmo simétrico
AES – Advanced Encryption Standard, agoritmo simétrico.
2.7.2 Criptografia Assimétrica
Segundo Galvão (2007), “A criptografia assimétrica usa duas chaves diferentes,
porém matematicamente relacionadas, para criptografar e descriptografar dados.
Essas chaves são conhecidas como chaves privadas e chaves públicas”.
26
Moreno, Pereira e Chiaramonte (s.d., p. 37) ressaltam que:
“A criptografia assimétrica contorna o problema da distribuição de chaves mediante o uso de chaves públicas. A criptografia de chaves públicas foi inventada em 1976 por Whitfield Diffie e Martin Hellman, a fim de resolver o problema da distribuição de chaves. Neste novo sistema, cada pessoa tem um par de chaves denominado chave pública e chave privada. A chave pública é divulgada, enquanto a chave privada é mantida em segredo. Para mandar uma mensagem privada, o transmissor cifra a mensagem usando a chave pública do destinatário pretendido, que deverá usar a sua respectiva chave privada para conseguir recuperar a mensagem original. “
A figura 15 mostra o funcionamento da criptografia assimétrica.
Figura 15: Modelo convencional de criptografia assimétrica
Fonte: PINTO, (2010)
Existem diversos algoritmos de criptografia assimétrica que viabilizam a proteção
da informação, dentre eles pode-se citar:
RSA – Rivest, Shamir e Adleman.
Diffie-Hellman.
ECC – Criptografia de curvas elípticas.
DSA – Digital Signature Algorithm.
2.8 Hash
Segundo Pisa (2012) a função hash é um algoritmo matemático unidirecional,
que recebe dados grandes e de tamanhos distintos gerando pequenos dados de
tamanho fixo. A principal função do hash é a comparação de dados grandes ou
secretos.
27
A figura abaixo exemplifica o funcionamento do hash.
Figura 16: Exemplo do funcionamento da função hash.
Leocádio(2008)
Pisa (2012), cita as seguintes características do hash:
A entrada geradora do hash pode ser de qualquer tamanho
O resultado da função pode ser de qualquer tamanho, desde que pré-definido
no algoritmo
Por ser rápida é mais eficiente quanto a velocidade para ser computada
Impossibilita a obtenção do texto através do código hash.
2.8.1 Hash utilizado na prática
Abaixo estão algumas das utilidades do hash na prática, segundo Pisa (2012).
1. Integridade de arquivos
O código hash gerado pelo emissor da informação é comparado com o hash
gerado pelo destinatário, caso não haja divergência no hash o documento não foi
violado por terceiros, garantindo assim a integridade.
2. Segurança de senhas
O armazenamento de senhas no banco de dados é uma vulnerabilidade a ser
explorada, com a utilização do hash ao invés da senha em texto puro essa
vulnerabilidade é descartada.
28
O algoritmo usado para gerar o hash do arquivo e para tratamento da senha
inserida pelo usuário foi o MD5, a Symantec(2015) diz que:
“MD5 Message-Digest Algorithm: Uma função de sentido único que produz um valor de 128 bits exclusivo. O hashing MD5 transforma as informações e produz um valor que não pode ser alterado de novo para sua forma original. Este método é usado para a autenticação criptografada (por exemplo, verificação de senhas ou autenticação de aplicativos). “
O hash foi utilizado também para gerar um código unidirecional da senha que
o usuário irá digitar para criptografar ou descriptografar, após a geração do código foi
utilizado o método substring para cortar o hash em um tamanho padrão definido pelo
algoritmo criptográfico, tornando o hash da senha de 32 caracteres para 24
caracteres. Todo esse processo tem como objetivo tornar uma senha fraca em uma
senha forte.
3. Assinaturas digitais
A assinatura digital tem como objetivo criptografar o hash que foi gerado pela
informação, sendo assim mais um recurso de segurança na sua transmissão.
29
CAPITULO III – ANÁLISE DO SISTEMA
3 DOCUMENTOS DE VISÃO
3.1 Finalidade
A finalidade deste documento é coletar, analisar e definir as características e
necessidades de alto nível do CriptoSis - Sistema de Criptografia Simétrica. Ele se
concentra nos recursos necessários aos envolvidos e nas razões que levam a essas
necessidades. Os detalhes de como o CriptoSis - Sistema de Criptografia Simétrica
atinge essas necessidades são descritos no caso de uso e nas especificações
suplementares.
3.1.1 Definições, Acrônimos e Abreviações
RUP – Rational Unifield Process
CriptoSis - Sistema de Criptografia Simétrica
PRISM – Pratical Software Developmente Model
3.1.2 Referências
a. Notas de aula;
b. CAIQUE, Cardoso. UML na Prática: do problema ao sistema. Rio de Janeiro: Editora Ciência
Moderna, 2003.
3.2 Posicionamento
3.2.1 Oportunidade de Negócios
O principal foco do sistema é atender as pessoas ou empresas que utilizam de
meios tecnológicos para o armazenamento de informações confidenciais. A utilização
do sistema visa garantir o armazenamento seguro desses dados, utilizando os
recursos da criptografia simétrica e função hash.
No armazenamento ou transmissão de mensagens entre duas pessoas ou
empresas existe a possibilidade da interceptação dessa mensagem por pessoas não
30
autorizadas. Este documento demonstra o desenvolvimento de uma aplicação que
garante a confidencialidade e integridade dos dados, evitando assim a leitura em texto
claro das informações contidas na mensagem.
3.2.2 Descrição do Problema
Quadro 1 – Descrição do problema
Fonte: os autores
3.2.3 Sentença de Posição do Produto
Quadro 2 - Sentença de Posição do Produto
Fonte: os autores
O problema Captura e acesso das mensagens por terceiros.
Afeta O receptor da mensagem.
Cujo impacto é Fraude, roubo, uso indevido, perda de mercado e vazamento de informações, podendo comprometer a continuidade dos negócios.
Uma boa solução seria A utilização de métodos criptográficos e hash para garantir que a mensagem será lida somente por quem tenha direito.
Para Pessoas que desejam proteger uma ou mais informações
Quem Necessita da confidencialidade e integridade
das informações
O CriptoSis É um software
Que Possibilita a encriptação e decifração de
arquivos
Diferente de Programas convencionais que apenas
armazenam os dados sem nenhum tipo de
proteção contra terceiros
Nosso produto Tem foco em garantir a confidencialidade e
integridade dos dados
31
3.2.4 Escopo do Produto
O objetivo do software é proteger arquivos por meio da codificação por
criptografia e verificação de integridade, utilizando as funções de criptografar,
descriptografar, gerar hash e verificar integridade do hash.
Para criptografar e descriptografar será utilizado uma senha, após isso será
utilizado função de hash para garantir a integridade dos dados.
O pré-requisito para utilizar o programa é somente a instalação do JDK (java
Developement Kit).
3.3 Descrições dos Envolvidos e dos Clientes
3.3.1 Demografia do Mercado
Com o constante crescimento das tecnologias, cresce também a quantidade de
informações importantes. Com isso, é necessário a preocupação em proteger com
eficácia essas informações.
3.3.2 Resumo dos Envolvidos
A seguir são identificados os principais interessados, representantes das áreas
diretamente envolvidas na definição dos processos para o sistema, bem como sua
participação no projeto de desenvolvimento do sistema, como fornecedores de
insumos para o desenvolvimento e a manutenção do mesmo.
32
Quadro 3 – Resumo dos envolvidos
Fonte: os autores
3.3.3 Resumo dos Clientes
Quadro 4 – Resumo dos clientes.
Fonte: os autores.
3.3.4 Ambiente dos Clientes
O requisito básico para funcionamento do software é o sistema operacional
com o JDK (Java Development Kit) instalado, sem necessidade de interação com
outro sistema.
Nome Descrição Responsabilidades
Desenvolvedores e analistas.
São os responsáveis pelo levantamento de requisitos, documentação, implementação e continuidade do software.
- Levantar requisitos, visando atender as necessidades do cliente.
- Implementar e documentar o software.
- Garantir a continuidade projeto.
Nome Descrição Responsabilidades Envolvido
Usuário
Será o consumidor final do sistema CriptoSis
- Selecionar arquivo para criptografar ou descriptografar
- Gerar e verificar hash para garantir a integridade.
Não se aplica.
33
Considerando que o usuário irá executar o processo em cinco etapas, a
saber:
1 – Selecionar arquivo;
2 – Inserir senha;
3 – Criptografar ou descriptografar;
4 – Gerar Hash;
5 – Conferir Integridade do arquivo.
Devido à simplicidade para execução do processo, o cliente poderá criar e
modelar seu ambiente de trabalho de acordo com suas regras de negócio.
3.3.5 Perfis dos Envolvidos
3.3.5.1 Desenvolvedor e analista
Quadro 5 – Perfil do desenvolvedor e analista
Fonte: os autores
Descrição Quem analisa os requisitos, documenta, desenvolve e monitora o projeto.
Tipo Especialista.
Responsabilidades Ter conhecimento suficiente para analisar, documentar, desenvolver e garantir seu funcionamento.
Critérios de Sucesso Cifração e decifração de arquivos para garantir a segurança da informação.
Envolvimento Levantamento de requisitos.
Produtos Liberados O software
Comentários/Problemas Interpretação errada dos requisitos
34
3.3.5.2 Usuário
Quadro 6 – Perfil do usuário.
Descrição Usuário final, aquele que realmente irá aplicar as funções descritas no levantamento de requisitos, ou seja, criptografar, descriptograr gerar hash e verificar a integridade do hash
Tipo Usuário comum
Responsabilidades Ter conhecimento da importância da proteção da informação e das funcionalidades do sistema.
Critérios de Sucesso Capacidade de atender as expectativas que o sistema oferece
Envolvimento Bom conhecimento do software
Produtos Liberados Nenhum
Comentários/Problemas Falta de treinamento e inserção de dados errados.
Fonte: os autores.
3.3.6 Restrições
O programa será compatível com JDK(Java Development Kit).
O programa deverá estar completo até o dia 01/12/2015
3.3.7 Especificação de requisitos
3.3.7.1 ERaF.CriptoSis.001
Quadro 7 – Especificação de requisito ERaF.CriptoSis.001
ERaF.CriptoSis.001 Selecionar arquivo para criptografar ou descriptografar
Descrição O software deve permitir ao usuário selecionar o arquivo para criptografar ou descriptografar
Descrição do risco Risco Prioridade
Arquivo não selecionado Baixo Baixo
35
Usuário
Envolvido
Usuário em geral.
Fonte: os autores.
3.3.7.2 ERaF.CriptoSis.002
Quadro 8 – Especificação de requisito ERaF.CriptoSis.002
ERaF.CriptoSis.002 Inserir Senha para criptografar ou descriptograr arquivo.
Descrição O software deve permitir o usuário inserir caracteres para criação de uma senha que será usada para
criptografar e descriptografar arquivo.
Descrição do risco Risco Prioridade
Não escolher um arquivo
Médio Baixa
Usuário
Envolvido
Usuário em geral.
Fonte: os autores.
3.3.7.3 ERaF.CriptoSis.003
Quadro 9 – Especificação de requisito ERaF.CriptoSis.003
ERaF.CriptoSis.003 Criptografar arquivo.
Descrição O software deve ser capaz de criptografar o arquivo selecionado.
Descrição do risco Risco Prioridade
Não selecionar arquivo Baixo Baixa
Não inserir a senha antes de criptografar
Media Media
Usuário (s)
envolvido (s)
Usuário em geral
Fonte: os autores.
36
3.3.7.4 ERaF.CriptoSis.004
Quadro 10 – Especificação de requisito ERaF.CriptoSis.004
ERaF.CriptoSis.004 Gerar Hash do arquivo selecionado
Descrição O software deve ser capaz de gerar o hash do arquivo criptografado.
Descrição do risco Risco Prioridade
Arquivo criptografado deve estar disponível
Médio Médio
Usuário
Envolvido
Usuário em geral.
Fonte: os autores.
3.3.7.5 ERaF.CriptoSis.005
Quadro 11 – Especificação de requisito ERaF.CriptoSis.005
ERaF.CriptoSis.005 Descriptografar arquivo.
Descrição O software deve ser capaz de decifrar o arquivo cifrado pelo emissor.
Descrição do risco Risco Prioridade
Não selecionar arquivo correto a ser
decifrado
Baixo Baixa
Não inserir a senha ou inserir a senha errada antes de
decifrar
Médio Baixa
Não encontrar o arquivo.
Alto Alta
Usuário (s)
envolvido (s)
Usuário receptor
Fonte: os autores.
37
3.3.7.6 ERaF.CriptoSis.006
Quadro 12 – Especificação de requisito ERaF.CriptoSis.006
ERaF.CriptoSis.006 Conferir Hash
Descrição O software deve ser capaz de conferir a integridade do arquivo através do hash recebido pelo emissor com o novo hash gerado no receptor do arquivo.
Descrição do risco Risco Prioridade
Inserir o hash do arquivo errado
Médio Médio
Usuário (
s)
Envolvido (s)
Usuário receptor
Fonte: os autores.
3.4 Descrição dos Casos de Uso e Atores
3.4.1 Casos de Uso
3.4.1.1 Selecionar arquivo
Este caso de uso é responsável pelo recebimento do arquivo, o qual será
criptografado, descriptografado ou gerado o hash.
3.4.1.2 Inserir senha
Este caso de uso é responsável pela inserção de uma senha pelo usuário,
obedecendo o algoritmo criptográfico usado. A chave criptográfica é transformada na
senha, que será usada para criptografar ou descriptografar arquivo.
3.4.1.3 Criptografar Arquivo
Este caso de uso é responsável por criptografar o arquivo selecionado pelo
usuário
38
3.4.1.4 Gerar Hash
Este caso de uso é responsável pela geração de um código unidirecional a
partir dos bits do arquivo, tem como finalidade garantir a integridade.
3.4.1.5 Descriptografar Arquivo
Este caso de uso é responsável por tornar um texto ilegível em um texto claro,
através do processo de decifração.
3.4.1.6 Verificar Hash
Este caso de uso tem como objetivo verificar a integridade do arquivo através
da comparação do código hash gerado no emissor e no receptor.
3.4.2 Descrições dos Atores
3.4.2.1 Operador Emissor
Este ator é uma pessoa que atua no sistema para operacionalizar as
funcionalidades: Selecionar o arquivo, inserir senha, criptografar arquivo e gerar hash.
3.4.2.2 Operador Receptor
Este ator é uma pessoa que atua no sistema para operacionalizar as
funcionalidades: Inserir senha, descriptografar arquivo, e conferir integridade do
arquivo recebido.
40
3.6 Detalhamento dos Casos de Uso
3.6.1 UC01- Selecionar Arquivo
Quadro 13 – Fluxo de Eventos do Caso de Uso Selecionar Arquivo
Nome da Use Case Selecionar arquivo
Descrição Seleciona um único arquivo para realizar o processo
inicial de criptografia, descriptografia ou geração de
hash.
Requisitos
Associados
ERaF. ERaF.CriptoSis.003, ERaF.CriptoSis.004,
ERaF.CriptoSis.005, ERaF.CriptoSis.006
Pré Condições O programa deve estar iniciado e o arquivo disponível.
Pós Condições Armazenar o arquivo na memória sem falhas.
Atores Operador Emissor.
Fluxo Principal
Ações Recebidas (Ator) Ações Realizadas (Sistema)
1. O usuário inicializa o sistema. 2. O sistema apresenta as funções
existentes criptografar, descriptografar,
gerar hash e conferir hash.
3. O usuário escolhe a função
desejada.
4. O sistema apresenta a tela para
selecionar o arquivo.
5. O usuário seleciona o arquivo. 6- O arquivo é salvo na memória
Fonte: Os autores.
41
3.6.2 UC02 - Inserir Senha
Quadro 14 – Fluxo de Eventos do Caso de Uso Inserir Senha
Nome da Use Case Inserir senha
Descrição Recebe a senha que será usada para criptografar ou
descriptografar o arquivo.
Requisitos
Associados
ERaF.CriptoSis.001, ERaF.CriptoSis.003,
ERaF.CriptoSis.005.
Pré Condições O arquivo ter sido selecionado.
Pós Condições Criptografar ou descriptografar com a senha informada.
Atores Operador Emissor.
Fluxo Principal
Ações Recebidas (Ator) Ações Realizadas (Sistema)
1- O usuário inicializa o programa. 2- O programa exibe as funções
criptografar, descriptografar, gerar
hash e conferir hash
3- O usuário seleciona opção
criptografar.
4- O sistema disponibiliza a tela para
selecionar o arquivo
5- O usuário seleciona o arquivo
6- O sistema disponibiliza a tela para
inserção da senha.
7- O usuário insere a senha 8 – Criptografa arquivo.
Fonte: Os autores.
42
3.6.3 UC03 - Criptografar Arquivo
Quadro 15 – Fluxo de Eventos do Caso de Uso Criptografar Arquivo
Nome da Use Case Criptografar Arquivo
Descrição O sistema recebe o arquivo e a senha, após isso efetua
a cifração do arquivo.
Requisitos
Associados
ERaF.CriptoSis.001, ERaF.CriptoSis.002 e
ERaF.CriptoSis.005.
Pré Condições Programa instalado e disponível.
Arquivo a ser criptografado disponível.
Pós Condições Arquivo criptografado.
Atores Operador Emissor
Fluxo Principal
Ações Recebidas (Ator) Ações Realizadas (Sistema)
1- O usuário inicializa o programa. 2- O programa exibe as funções
criptografar, descriptografar, gerar hash
e conferir hash.
3- O usuário seleciona opção
criptografar.
4- O sistema disponibiliza a tela para
selecionar o arquivo
5- O usuário seleciona o arquivo
6- O sistema disponibiliza o campo
“inserir senha”.
7- O usuário insere a senha 8- O algoritmo recebe a senha e
criptografa o arquivo
Fluxo de exceção
Ações Recebidas Ações Realizadas
1- O usuário não insere a senha
esperada pelo sistema.
2- O sistema não criptografa o arquivo.
3- Mostra a mensagem “Insira uma senha!”
Fonte: Os autores.
43
3.6.4 UC04 - Gerar Hash
Quadro 16 – Fluxo de Eventos do Caso de Uso Gerar Hash
Nome da Use Case Gerar Hash
Descrição Gera o hash do arquivo selecionado pelo usuário e salva
em um arquivo dentro de um diretório especifico.
Requisitos
Associados
ERaF.CriptoSis.001, ERaF.CriptoSis.003 e
ERaF.CriptoSis.006.
Pré Condições O arquivo criptografado ter sido selecionado pelo usuário
e estar disponível.
Pós Condições O sistema grava e disponibiliza o código Hash gerado.
Atores Operador Emissor
Fluxo Principal
Ações Recebidas (Ator) Ações Realizadas (Sistema)
Ações Recebidas Ações Realizadas
1- O usuário inicializa o programa. 2- O programa exibe as funções
criptografar, descriptografar, gerar
hash e conferir hash.
3- O usuário seleciona opção gerar
hash.
4- O sistema disponibiliza a tela para
selecionar o arquivo.
5- O usuário seleciona o arquivo
6- O sistema gera um arquivo do hash
com o mesmo nome do arquivo
selecionado.
Fonte: Os autores.
44
3.6.5 UC05 - Descriptografar arquivo
Quadro 17 – Fluxo de Eventos do Caso de Uso Descriptografar Arquivo
Nome da Use Case Descriptografar arquivo
Descrição Realiza o processamento inverso da criptografia,
tornando o texto claro novamente.
Requisitos
Associados
ERaF.CriptoSis.001, ERaF.CriptoSis.002 e
ERaF.CriptoSis.003.
Pré Condições Programa iniciado.
Arquivo criptografado disponível.
Senha disponível.
Pós Condições Arquivo descriptografado
Atores Operador Receptor
Fluxo Principal
Ações Recebidas (Ator) Ações Realizadas (Sistema)
1- O usuário inicializa o programa.
2- O programa exibe as funções
criptografar, descriptografar, gerar hash
e conferir hash.
3- O usuário seleciona opção
descriptografar.
4- O sistema disponibiliza a tela para
selecionar o arquivo.
5- O usuário seleciona o arquivo
criptografado.
6- O sistema exibe o campo “inserir
senha”.
7- O usuário informa a senha. 8- O sistema valida a senha.
9- O sistema realiza a descriptografia.
Fluxo de exceção
1- O usuário informa a senha. 2- O sistema não descriptografa o
arquivo, gerando um novo arquivo
ilegível.
45
3- O sistema volta ao passo 2 do fluxo
principal.
Fonte: Os autores.
3.6.6 UC06 - Conferir Hash
Quadro 18 – Fluxo de Eventos do Caso de Uso Conferir Hash
Nome da Use Case Conferir Hash
Descrição Gera o hash do arquivo selecionado pelo usuário e
compara com o hash recebido pelo emissor da
mensagem.
Requisitos
Associados
ERaF.CriptoSis.001, ERaF.CriptoSis.003 e
ERaF.CriptoSis.004.
Pré Condições Ter gerado um hash anteriormente.
Pós Condições O sistema informa ao usuário receptor se o arquivo é
integro ou não.
Atores Operador Receptor
Fluxo Principal
Ações Recebidas (Ator) Ações Realizadas (Sistema)
Ações Recebidas Ações Realizadas
1- O usuário inicia o programa. 2- O programa exibe as funções,
criptografar, descriptografar, gerar hash
e conferir hash.
3- O usuário seleciona a opção
verificar hash.
4- O programa exibe a tela para
inserir o hash que será comparado e
o botão selecionar arquivo para gerar
um novo hash do arquivo recebido.
46
5- O usuário insere o hash e clica no
botão selecionar o arquivo.
6- O programa exibe a tela selecionar
arquivo
7- O usuário selecionar o arquivo para
gerar o hash.
8- O programa gera o hash e compara
com o inserido anteriormente
9- O programa exibe uma mensagem
informando que o arquivo é integro.
Fluxo de exceção
1- O usuário selecionar o arquivo para
gerar o hash.
2- O programa gera o hash e compara
com o inserido anteriormente.
3- O programa exibe uma mensagem
informando que o arquivo não é confiável
e volta para o passo 2 do fluxo principal.
Fonte: Os autores.
48
3.8 Classes de Análise
3.8.1 Detalhamento das Classes de Análise
3.8.1.1 Classe de Fronteira – Tela Principal do CriptoSis
Interface principal de comunicação com os atores para apresentar as opções:
Selecionar Arquivo, inserir senha, criptografar arquivo, Gerar Hash, Descriptografar
arquivo e conferir Hash.
3.8.1.2 Classe Controle Arquivo
Responsável por controlar a lógica de execução do programa realizando os
processos criptografar, descriptografar, gerar hash e verificar hash.
3.8.2 Diagrama Geral de Classe
Figura 19 - Diagrama de Classe Arquivo
Fonte: Os autores
49
3.8.3 Classe de Fronteira – Tela Principal
Interface principal de comunicação com os atores para apresentar as opções:
Selecionar Arquivo, gerar Hash, criptografar arquivo, gerar senha, inserir senha,
Descriptografar arquivo, Gerar Novo Hash e conferir Integridade do arquivo.
Figura 20 - Diagrama de Classe de Análise com Fronteira e Entidade.
Fonte: Os autores.
3.8.4 Diagrama de Sequencia
3.8.4.1 – Diagrama de Sequencia Selecionar Arquivo
Figura 21: Diagrama de Sequencia Selecionar Arquivo
Fonte: Os autores.
50
3.8.4.2 – Diagrama de Sequencia Inserir Senha
Figura 22: Diagrama de Sequencia Inserir Senha
Fonte: Os autores.
3.8.4.3 – Diagrama de Sequencia Criptografar Arquivo
Figura 23: Diagrama de Sequencia Criptografar Arquivo
Fonte: Os autores
51
3.8.4.4 – Diagrama de Sequencia Gerar Hash
Figura 24: Diagrama de Sequencia Gerar Hash
Fonte: Os autores.
3.8.4.5 – Diagrama de Sequência Descriptografar Arquivo
Figura 25: Diagrama de Sequência Descriptografar Arquivo
52
Fonte: Os autores.
3.8.4.6 – Diagrama de Sequencia Conferir Hash (Fluxo Principal)
Figura 26: Diagrama de Sequencia Conferir Hash (Fluxo Principal)
Fonte: Os autores.
3.8.4.7 – Diagrama de Sequencia Conferir Hash (Fluxo alternativo)
Figura 27: Diagrama de Sequencia Conferir Hash (Fluxo alternativo)
Fonte: Os autores.
53
CAPITULO IV – CONCLUSÃO
Diante da realidade cada vez mais evidente de crescimento tecnológico e de
transações complexas com novas tecnologias na web, a segurança da informação se
tornou um dos pilares de sustentação dessas transações, visando sempre garantir a
integridade, confidencialidade e disponibilidade das informações.
O trabalho proporcionou vivenciar os desafios para se manter os pilares da
segurança da informação, e também um sentimento de dever cumprido ao
implementar os conhecimentos adquiridos de forma satisfatória, utilizando as
ferramentas de desenvolvimento em ambiente integrado, algoritmos criptográficos e
linguagem padrão para desenvolver as soluções necessárias, com foco na segurança
das informações.
O software desenvolvido (CriptoSis) e agora apresentado, dispõe de recursos
para executar a criptografia e descriptografia simétrica para manter a
confidencialidade e gerar hash para garantir a integridade do arquivo criptografado,
com isso o CriptoSis se torna um sistema alternativo para aqueles que buscam
garantir a segurança da informação.
54
REFERENCIAS
ASSOCIAÇÃO BRASILEIRA DE NORMAS TÉCNICAS. ABNT NBR ISSO/IEC 27001: Tecnologia da informação — Técnicas de segurança — Sistemas de gestão de segurança 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 gestão de segurança da informação . Rio de janeiro, 2005.
CAIQUE, Cardoso. UML na Prática: do problema ao sistema. Rio de Janeiro: Editora Ciência Moderna. 2003.
CEDET. 3DES - Triple Data Encryption Standard. Disponível em: < http://www.cedet.com.br/index.php?/O-que-e/Seguranca-de-Redes/3des-triple-data-encryption-standard.html> Acesso em 21 de dezembro de 2015 FERREIRA, Fernando Nicolau Freitas. Segurança da informação. Rio de Janeiro: Ciência moderna, 2003.1p.
FROTA, Handerson. Introdução a JVM. Disponível em: < http://www.handersonfrota.com.br/introducao-a-jvm-java-virtual-machine/ > Acesso em 25 de outubro de 2015 LEOCÁDIO, Antônio Ricardo Gomes. Criptografia, assinatura digital e outros conceitos. Disponível em: < https://pedrogalvaojunior.wordpress.com/2007/11/16/diferencas-entre-chaves-simetrica-e-assimetrica-para-criptografia/ >. Acesso em 24 de novembro de 2015. GAMMA, Erich; HELM Richard; JOHNSON Ralph; VLISSIDES, John. Padrões de Projetos: Soluções reutilizáveis de software orientado a objetos. Porto Alegre. Editora Bookman. 2000. GALVÃO, Junior. Diferenças entre chaves simétrica e assimétrica para criptografia. Disponível em: < https://eltiger.wordpress.com/2008/10/12/ciptografia-assinatura-digital-e-alguns-outros-conceitos/ >. Acesso em 05 de setembro de 2015. MORENO, Edward David; PEREIRA, Fábio Decêncio; CHIARAMONTE, Rodolfo Barros. Criptografia em software e hardware. Disponível em: <http://www.martinsfontespaulista.com.br/anexos/produtos/capitulos/143116.pdf>. Acesso em: 05 de setembro de 2015. ORACLE. O que é o Java e porque preciso dele? Disponível em: < https://www.java.com/pt_BR/download/faq/whatis_java.xml >. Acesso em: 25 de agosto de 2015.
PFLEEGER, Shari Lawrence. Engenharia de Software: Teoria e Prática. Tradução Dino Franklin – 2ª Ed. São Paulo: Prentice Hall, 2004. 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: 25 de agosto de 2015.
55
PISA, Pedro. O que é hash? Disponível em: < http://www.techtudo.com.br/artigos/noticia/2012/07/o-que-e-hash.html >. Acesso em 08 de setembro de 2015. SOARES, Salomão. Criptografia. Disponível em: < http://www.ceap.br/material/MAT15032012194445.pdf>. Acesso em 21 de dezembro de 2015. STALLINGS, William. Criptografia e segurança de redes: Principios e práticas. Disponível em: < http://www.ebah.com.br/content/ABAAAfMKQAK/criptografia-seguranca-redes-william-stalings >. Acesso em: 05 de setembro de 2015.
SYMANTEC. MD5 hash (hash md5) Disponível em: < https://www.symantec.com/pt/br/security_response/glossary/define.jsp?letter=m&word=md5-hash > Acesso em: 21 de dezembro de 2015. VICTORINO, Marcio; BRÄSCHER, Marisa. Organização da Informação e do Conhecimento, Engenharia de Software e Arquitetura Orientada a Serviços: uma Abordagem Holística para o Desenvolvimento de Sistemas de Informação Disponível em: < http://www.dgz.org.br/jun09/Art_03.htm > Acesso em 21 de outubro de 2015.
56
APÊNDICE – A
A tela principal do sistema disponibiliza as funções criptografar arquivo,
descriptografar arquivo, gerar hash do arquivo e conferir integridade do arquivo.
Figura 28: Tela principal
Fonte: Os autores.
Ao selecionar uma das opções, criptografar, descriptografar, gerar hash e
conferir hash o sistema disponibiliza a tela de seleção dos arquivos.
Figura 29: Tela de seleção de arquivos.
Fonte: Os autores.
57
Após selecionar a opção criptografar ou descriptografar, o sistema exibirá a
tela para inserção de senha.
Figura 30: Tela inserir senha.
Fonte: Os autores.
Ao selecionar a opção conferir hash o sistema exibirá a tela para comparar o
hash recebido do usuários emissor com o hash gerado no usuário receptor
Figura 31: Tela conferir hash.
Fonte: Os autores.
58
As telas abaixo informam ao usuário se o processo de criptografar ou descriptografar
foi finalizado com sucesso ou não.
Figura 32: Mensagem de arquivo criptografado com sucesso.
.
Fonte: Os autores.
Figura 33: Mensagem de falha ao criptografar.
.
Fonte: Os autores.
Figura 34: Mensagem de arquivo descriptografado com sucesso.
Fonte: Os autores.
59
Figura 35: Tela de falha ao descriptografar.
Fonte: Os autores.
Ao selecionar a opção gerar hash o sitema exibe uma mensagem de
confirmação, conforme abaixo.
Figura 36: Tela de confirmação da geração do hash
.
Fonte: Os autores.
60
Após selecionar a opção conferir hash o sistema apresenta a tela para inserir o hash
do emissor e gerar o novo hash para comparação.
Figura 37: Tela conferir hash.
Fonte: Os autores.
Ao conferir a integridade do arquivo o sistema poderá apresentar uma das telas
abaixo.
Figura 38: Mensagem de arquivo integro.
Fonte: Os autores.