curso de tecnologia em seguranÇa da...

61
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

Upload: vongoc

Post on 15-Dec-2018

213 views

Category:

Documents


0 download

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.

39

3.5 Diagrama Geral de Caso de Uso

Figura 17: Diagrama geral de caso de uso

Fonte: Os autores

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.

47

3.7 Diagrama Geral de Classe

Figura 18 - Diagrama Geral de Classe

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.

61

Figura 39: Mensagem de arquivo não confiável.

Fonte: Os autores.