tecnologia em seguranÇa da informaÇÃo athyla...

55
TECNOLOGIA EM SEGURANÇA DA INFORMAÇÃO ATHYLA DUARTE NEGREIROS ESDRAS PINHEIRO DA SILVA SYSCRYPT: Programa para utilização de criptografia simétrica BRASÍLIA DF 2014

Upload: ledung

Post on 24-Jan-2019

214 views

Category:

Documents


0 download

TRANSCRIPT

TECNOLOGIA EM SEGURANÇA DA INFORMAÇÃO

ATHYLA DUARTE NEGREIROS

ESDRAS PINHEIRO DA SILVA

SYSCRYPT: Programa para utilização de criptografia simétrica

BRASÍLIA – DF

2014

ATHYLA DUARTE NEGREIROS

ESDRAS PINHEIRO DA SILVA

SYSCRYPT: Programa para utilização de criptografia simétrica

BRASÍLIA – DF

2014

Trabalho de Conclusão de Curso apresentado às Faculdades Integradas Promove de Brasília como requisito parcial para obtenção do título de tecnólogo no Curso de Tecnologia em Segurança da Informação.

Orientador: Prof. MSc. Cid Bendaham Coelho Cintra

ATHYLA DUARTE NEGREIROS

ESDRAS PINHEIRO DA SILVA

SYSCRYPT: Programa para utilização de criptografia simétrica

Trabalho de Conclusão de Curso

apresentado às Faculdades Promove

de Brasília, como requisito parcial para

obtenção do título de tecnólogo no curso

de Tecnologia em Segurança da

Informação.

Aprovado em:____/_____/_____ por:

Orientador: Prof. MSc. Cid Bendaham

Coelho Cintra

Avaliador: Prof. Dra. Maria José de Oliveira

Avaliador: Prof. Dr. Fernando Fernandes

DEDICATÓRIA

Dedicamos este trabalho a Deus, aos

nossos familiares e a todos que

contribuíram de forma direta ou indireta

para sua conclusão.

RESUMO

Este trabalho apresenta o desenvolvimento de uma aplicação web que

tem como função principal manter a confidencialidade da informação usando um

método confiável e que vem sendo usado a muito tempo, a criptografia que é a

arte de tornar a informação ininteligível para quem não está autorizado a ter

acesso a ela. Para a elaboração do trabalho foram realizados vários estudos na

área de desenvolvimento de aplicações web, além da elaboração do documento

de visão, requisitos funcionais e casos de uso. Os resultados finais foram um

referencial teórico especificando todas as pesquisas que foram realizadas para

o desenvolvimento da aplicação, uma documentação detalhando as

funcionalidades do sistema e a conclusão do desenvolvimento do sistema.

Palavras-chave: Criptografia, confidencialidade, informação, ininteligível,

aplicação.

ABSTRACT

This paper presents the development of a web application whose main

function is to maintain the confidentiality of information using a reliable method

that has been used a long time: the encryption that is the art of makes

unintelligible information for those who are not authorized to have access to it. In

preparing the work were carried out several studies in web application

development area, besides preparing the vision document, functional

requirements and use cases. The final results were a theoretical framework

specifying all the research that has been carried out for application development,

documentation detailing the system's features and the completion of the system

development.

Keywords: encryption, confidentiality, information, unintelligible and

application.

LISTA DE FIGURAS Página

Figura 1: Estruturada x Orientação à Objeito ................................................... 16

Figura 2: Classe, Objeto ................................................................................... 17

Figura 3: Modelagem de Classe ....................................................................... 18

Figura 4: Herança ............................................................................................. 18

Figura 5: Agregação ......................................................................................... 19

Figura 6: Composição ...................................................................................... 20

Figura 7: Dependência ..................................................................................... 20

Figura 8: Exemplo de Multiplicidade ................................................................. 21

Figura 9: Polimorfismo Estático ........................................................................ 21

Figura 10: Polimorfismo Dinâmico .................................................................... 22

Figura 11: Encapsulamento.............................................................................. 23

Figura 12: Abstração ........................................................................................ 24

Figura 13: Diagrama de Caso de Uso .............................................................. 25

Figura 14: Caso de Uso Incluída ...................................................................... 26

Figura 15: Caso de Uso Estendida ................................................................... 26

Figura 16: Derivação Entre Caso de Uso ......................................................... 27

Figura 17: Diagrama de Sequência .................................................................. 28

Figura 18: Modelo de Estrutura de Banco de Dados ........................................ 30

Figura 19: Criptografia Simétrica ...................................................................... 32

Figura 20: Criptografia Assimétrica .................................................................. 32

Figura 21: Hash ................................................................................................ 33

Figura 22: Triade de Segurança da Informação ............................................... 34

Figura 23: Diagrama de Caso de Uso Geral .................................................... 42

Figura 24: Diagrama de Sequência do Caso de Uso Criptografar ................... 45

Figura 25: Diagrama de Sequência do Caso de Uso Descriptografar .............. 46

Figura 26: Diagrama de Sequência do Caso de Uso Gerar e Verificar Hash ... 46

Figura 27: Diagrama de Sequência do Caso de Uso Gerar e Verificar Hash

(Exceção) ......................................................................................................... 47

LISTA DE QUADROS Página

Quadro 1: Quadro de Especificação de Requisito ERaF.1 .............................. 39

Quadro 2: Quadro de Especificação de Requisito ERaF.2 .............................. 40

Quadro 3: Quadro de Especificação de Requisito ERaF.3 .............................. 40

Quadro 4: Quadro de Especificação de Requisito ERaF.4 .............................. 41

Quadro 5: Quadro de Especificação de Requisito ERaF.5 .............................. 41

Quadro 6: Fluxo de Evento do Caso de Uso Inserir Senha .............................. 43

Quadro 7: Fluxo de Evento do Caso de Uso Criptografar ................................ 43

Quadro 8: Fluxo de Evento do Caso de Uso Descriptografar .......................... 44

Quadro 9: Fluxo de Evento do Caso de Uso Gerar Hash ................................ 44

Quadro 10: Fluxo de Evento do Caso de Uso Verificar Hash........................... 45

SUMÁRIO

1 INTRODUÇÃO .................................................................................................... 13

1.1 JUSTIFICATIVA ....................................................................................................... 14

1.2 OBJETIVOS .............................................................................................................. 14

1.2.1 Geral ...................................................................................................................... 14

1.2.2 Específico ............................................................................................................ 14

1.3 PROCEDIMENTOS METODOLÓGICOS............................................................. 15

1.3.1 Pesquisar métodos de criptografia e hash para garantir a

confidencialidade e a integridade dos arquivos .................................................... 15

1.3.2 Realizar levantamento de dados para a elaboração dos requisitos .... 15

1.3.3 Elaborar a documentação do aplicativo ...................................................... 15

1.3.4 Desenvolver o aplicativo ................................................................................. 15

2 REFERENCIAL TEÓRICO .................................................................................. 16

2.1 Orientação à Objeto ............................................................................................... 16

2.1.1 Definição .............................................................................................................. 16

2.1.2 Classes, objetos e instancias ......................................................................... 17

2.1.3 Atributos e operações ...................................................................................... 17

2.1.4 Relacionamentos ............................................................................................... 18

2.1.5 Polimorfismo ....................................................................................................... 21

2.1.6 Encapsulamento ................................................................................................ 22

2.1.7 Abstração ............................................................................................................. 23

2.2 UML ............................................................................................................................ 24

2.2.1 Definição .............................................................................................................. 24

2.2.2 Caso de Uso ........................................................................................................ 25

2.2.3 Diagrama de Caso de uso ............................................................................... 25

2.2.4 Classes de análise ............................................................................................. 27

2.2.5 Diagrama de sequência .................................................................................... 28

2.3 Engenharia de Software ....................................................................................... 28

2.4 Java ............................................................................................................................ 29

2.5 Sistema de Gerenciamento de Banco de Dados (SGBD) ............................ 30

2.6 Java Server Faces (JSF) ....................................................................................... 31

2.7 Criptografia .............................................................................................................. 31

2.7.1 Criptografia Simétrica....................................................................................... 31

2.7.2 Criptografia Assimétrica .................................................................................. 32

2.8 Função HASH .......................................................................................................... 33

2.9 Princípios de Segurança da Informação .......................................................... 34

3 DOCUMENTOS DE ANÁLISE DO APLICATIVO ................................................ 35

3.1 Documento de Visão ............................................................................................. 35

3.1.1 Introdução ............................................................................................................ 35

3.1.2 Objetivo ................................................................................................................ 35

3.1.3 Referencias .......................................................................................................... 35

3.1.4 Visão geral ........................................................................................................... 35

3.1.5 Posicionamento ................................................................................................. 36

3.1.6 Descrição dos envolvidos e usuários .......................................................... 37

3.1.7 Restrições ............................................................................................................ 39

3.2 Especificação dos Requisitos ............................................................................ 39

3.2.1 ERaF.1 SysCrypt.1 Inserir Senha de Encriptação e Decriptação ......... 39

3.2.2 ERaF.2 SysCrypt.2 Efetuar Criptografia ...................................................... 40

3.2.3 ERaF.3 SysCrypt.3 Efetuar Decriptação ...................................................... 40

3.2.4 ERaF.4 SysCrypt.4 Gerar HASH ..................................................................... 41

3.2.5 ERaF.5 SysCrypt.5 Verificar HASH ............................................................... 41

4 Descrição dos Casos de Uso e Atores ............................................................. 41

4.1 Casos de Uso .......................................................................................................... 41

4.1.1 Inserir Senha ....................................................................................................... 42

4.1.2 Encriptar Arquivo............................................................................................... 42

4.1.3 Desencriptar Arquivo ........................................................................................ 42

4.1.4 Gerar Hash ........................................................................................................... 42

4.1.5 Verificar Hash ..................................................................................................... 42

4.2 Atores ........................................................................................................................ 43

4.2.1 Usuário Final ....................................................................................................... 43

4.3 Detalhamento de Caso de Uso ........................................................................... 43

4.3.1 UC01 – Inserir Senha ........................................................................................ 43

4.3.2 UC02 – Criptografar........................................................................................... 43

4.3.3 UC03 – Descriptografar .................................................................................... 44

4.3.4 UC04 – Gerar Hash ............................................................................................ 44

4.3.5 UC05 – Verificar Hash ....................................................................................... 45

5 Diagrama de Sequência .................................................................................... 45

5.1 Diagrama de Sequência Criptografar ................................................................ 45

5.2 Diagrama de Sequência Descriptografar ......................................................... 46

5.3 Diagrama de Sequência Gerar e Verificar Hash ............................................. 46

5.4 Diagrama de Sequência Gerar e Verificar Hash (exceção) ......................... 47

6 CONCLUSÃO ..................................................................................................... 48

7 REFERÊNCIAS ................................................................................................... 49

APENDICE A – TELAS DO PROTOTIPO .................................................................. 53

13

CAPÍTULO I – APRESENTAÇÃO

1 INTRODUÇÃO

Atualmente, as empresas, organizações e corporações têm adotado a

postura de que a informação é, sem dúvidas, um patrimônio de valor

imprescindível para os negócios. Sendo assim, não há possibilidade alguma de

deixar que essas informações sejam interceptadas, alteradas ou modificadas

sem a devida autorização.

Com a evolução da tecnologia e o aumento na quantidade de usuários de

tecnologia, faz-se necessário a aplicação de regras, definição de níveis de

acesso à informação e principalmente a autorização de utilização, visualização

e modificação de uma informação considerada importante por seu detentor.

Ao se falar de segurança da informação, não pode-se deixar de citar a

criptografia, que é uma das principais ferramentas utilizadas neste ramo. A

evolução dos métodos criptográficos acompanha a evolução tecnológica e a

necessidade de cada vez mais, assegurar-se da maior obtenção de segurança

possível, garantindo assim, que os usuários possam fazer uso de todas as

tecnologias possíveis, sem o inconveniente de ser surpreendido tendo suas

informações perdidas ou roubadas.

Este trabalho mostra o desenvolvimento de uma aplicação web

desenvolvida em Java (com base na criptografia de arquivos), e tem como

diretrizes principais, manter a confidencialidade das informações inseridas na

aplicação, além de disponibilizar ao usuário a possibilidade de verificação da

integridade dessas informações de forma simples, rápida e segura.

14

1.1 JUSTIFICATIVA

Com o avanço tecnológico e a facilidade de acesso à tecnologia da

informação, os usuários de serviços, plataformas e aplicações de TI necessitam

de conhecimento e ferramentas que os auxiliem quanto à proteção de seus

ativos. Devem salvaguardá-los. Mas o que fazer para manter seguras as

informações que estão sob sua custódia?

Respondendo a esta pergunta, se faz necessário o desenvolvimento de

um aplicativo que traga consigo a seguridade de criptografar informações

consideradas importantes por seus detentores originais. O SysCrypt tem como

principal diretriz a encriptação de arquivos, fazendo assim, com que o usuário

tenha total convicção da não visualização de sua informação, transformando o

sistema proposto (SysCrypt) em uma ferramenta de grande valia.

Justifica-se, então, o desenvolvimento deste aplicativo através da

necessidade de garantir tecnologicamente a segurança de dados importantes

para os usuários aplicar em conceitos básicos de segurança da informação.

1.2 OBJETIVOS

1.2.1 Geral

Desenvolver um programa que seja capaz de criptografar arquivos e

realizar a conferência do hash para garantir a confidencialidade e a integridade

do arquivo criptografado.

1.2.2 Específico

Pesquisar métodos de criptografia e hash para garantir a

confidencialidade e a integridade dos arquivos;

Realizar levantamento de dados para a elaboração dos requisitos;

Elaborar a documentação do aplicativo;

Desenvolver o aplicativo.

15

1.3 PROCEDIMENTOS METODOLÓGICOS

1.3.1 Pesquisar métodos de criptografia e hash para garantir a

confidencialidade e a integridade dos arquivos

Fase de realização de pesquisas para avaliar qual algoritmo de

criptografia simétrica se adequasse melhor ao sistema. Dentre eles o que melhor

se adequou foi o Tripledes, pois além de ter uma boa segurança, não aumenta

o tamanho da informação.

Realização de pesquisa para avaliar qual o algoritmo de hash. O algoritmo

selecionado foi o Sha256 que proporciona uma maior segurança e é bastante

usado pelas corporações atuais.

1.3.2 Realizar levantamento de dados para a elaboração dos requisitos

Fase de levantamento de requisitos necessários para o entendimento e

elaboração da documentação do aplicativo.

1.3.3 Elaborar a documentação do aplicativo

Fase de elaboração dos documentos do aplicativo como, documento de

visão onde é definido uma visão geral do aplicativo, requisitos funcionais onde é

descrito as necessidades funcionais do aplicativo, descrição dos casos de uso e

atores onde é feita uma descrição mais detalhada dos casos de uso e a função

de cada ator que atua no sistema além do desenvolvimento dos diagramas de

caso de uso e de sequência.

1.3.4 Desenvolver o aplicativo

Fase onde o desenvolvedor analisa a documentação do aplicativo e inicia

o seu desenvolvimento. Nesta fase também são feitos testes do sistema para

verificar se cada método está funcionando de acordo com o diagrama de

sequência. Nesta fase foi utilizado a ferramenta de desenvolvimento Netbeans,

juntamente com os Frameworks Hibernate, Primefaces e o sistema de

gerenciamento de banco de dados PostgreSQL.

16

CAPITULO II - REFERENCIAL TEÓRICO

2 REFERENCIAL TEÓRICO

2.1 Orientação à Objeto

2.1.1 Definição

“O desenvolvimento de software sofreu evoluções que marcaram os

rumos e geraram correntes como o desenvolvimento estruturado, que ainda hoje

é utilizado, principalmente para sistemas embarcados.” (CARDOSO, 2003 p.5.).

O desenvolvimento estruturado, por utilizar uma metodologia de

desenvolvimento muito difícil acaba dificultando correções e/ou evoluções do

sistema. Segundo Cardoso (2003 p.5.)

Uma das correntes mais importantes e que tem evoluído muito com o passar dos tempos é o desenvolvimento orientado à objeto, que se apresenta de forma mais natural, onde as responsabilidades são divididas entre objetos que se relacionam e se comunicam. [...].

Para David (2007) A Programação Orientada à Objeto (POO) foi

desenvolvida para tentar aproximar o mundo real do virtual: a ideia fundamental

é tentar simular o mundo real dentro do computador. Para isso, nada mais natural

do que utilizar Objetos, pois o nosso mundo é composto deles. Abaixo figura 1,

que explica a diferença entre programação estruturada e orientada à objeto.

Figura 1: Estruturada X Orientação a Objeto

Fonte: Gasparotto (s.d)

17

2.1.2 Classes, objetos e instancias

Segundo David (2007), uma classe é uma abstração que define um tipo

de objeto e o que objetos deste determinado tipo tem dentro deles que são seus

atributos e também define que tipo de ações esse tipo de objeto é capaz de

realizar que são os métodos.

Objeto ou instância de Classe, “[...] é tudo aquilo com que podemos nos

relacionar ou que se relacionam entre si, de uma agulha a um vaso, de uma

nuvem a uma vaca, o mundo real é repleto de objetos diferentes e com diferentes

formas de relacionamentos.” (CARDOSO, 2003, p.6.)

“Nota que uma classe não tem vida, é só um conceito. Mas os objetos

(animais, seres-humanos, pássaros, etc.) possuem vida.” (DAVID, 2007). A

figura 2 apresenta exemplo de Classe.

Figura 2: Classe, Objeto

Fonte: Fernandes (2011)

2.1.3 Atributos e operações

“Um conceito associado a uma classe ou a um objeto é a propriedade ou

um conjunto de propriedades que uma classe possui.” (CARDOSO, 2003, p.7.).

“A propriedade de uma classe em desenvolvimento de software pode ser

dividida em duas partes:” (CARDOSO, 2003, p.7.)

Atributos: é aonde são armazenados os dados do objeto, sua

característica ou seu tipo primitivo.

18

Operações: define as ações dos objetos, conhecidos também de

métodos da classe.

Figura 3: Modelagem de Classe

Fonte: Pontes (s.d)

2.1.4 Relacionamentos

Segundo Cardoso (2003, p.7.) os objetos se relacionam e, como o que se

faz é modelar os objetos, é muito importante que estes possuam operações que

permitem o relacionamento. Os tipos de relacionamentos considerados por este

autor, são: a herança, agregação, composição, dependência e a multiplicidades.

Herança: Quando uma classe mais fraca, ou classe filha, herda

traços da classe mãe que tem características mais genéricas. A

representação de um relacionamento de herança é feita através de

uma seta que vai da classe filha para a classe mãe.

Figura 4: Herança

Fonte: Mabesi (2010)

19

Agregação, composição e dependência: Esses relacionamentos

são muito semelhantes, a diferença entre eles são suas

intensidades de relacionamento.

“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”; é o caso, por exemplo, de uma vaca ser composta por chifres, cascos, rabo, úbere, entre outras coisas e se retirarmos algumas destas partes, elas não fariam sentido sem o todo. A agregação é semelhante, porém a parte vive sem o todo, ou seja, se não existir o todo, a parte continuará existindo. É o caso da vaca e o fazendeiro. [...]. Já uma dependência é quando uma classe depende de outra, porém isto ocorre esporadicamente durante a vida dos objetos. É o exemplo da vaca e da vacina que ela recebe do veterinário, ou o próprio veterinário.” (CARDOSO, 2003, p.8-9.).

A seguir, um exemplo de agregação (figura 5), composição (figura

6) e dependência (figura 7).

Figura 5: Agregação

Fonte: Guimarães; Cascarrolho (2009)

20

Figura 6: Composição

Fonte: Guimarães; Cascarrolho (2009)

Figura 7: Dependência

Fonte: Guimarães; Cascarrolho (2009)

Multiplicidade: “No relacionamento entre duas classes existe

uma determinada multiplicidade. Por exemplo, um fazendeiro

pode possuir várias vacas.” (CARDOSO, 2003, p.9.) Existem três

tipos de multiplicidade, que são: um-para-um, um-para-muitos, e

muitos-para-muitos, continuando o raciocínio deste mesmo autor,

o relacionamento ordenhar citado a cima é do tipo um-para-

muitos, pois o fazendeiro terá que ordenhar uma certa quantidade

de vacas que ele não sabe ao certo quantas são. Abaixo segue

um exemplo de multiplicidade (figura 8).

21

Figura 8: Exemplo de Multiplicidade

Fonte: Guimarães; Cascarrolho (2009)

2.1.5 Polimorfismo

É a capacidade de ter mais de um método com o mesmo nome mas que

executam ações diferentes, segundo Cardoso (2003, p.10.), é uma das

características mais potentes da orientação objetos. Existem dois tipos de

polimorfismo: o estático e o dinâmico.

Polimorfismo estático: pode se dizer que são métodos que tem o

mesmo nome, porem recebem parâmetros diferentes mas que

ambos executam somente as ações que lhes foram

implementadas. (figura 9)

Figura 9: Polimorfismo Estático

Fonte: Cardoso (2003, p. 10).

22

Polimorfismo dinâmico: são métodos que não executam uma

ação, mas que não se sabe ao certo qual tipo de operação ele irá

executar, segundo Cardoso (2003, p.11.) este tipo de operação é

chamado de abstrata, ela não é implementada, serve apenas de

referência para as classes filhas que serão responsáveis pela

implementação deste método. Abaixo segue um exemplo de

polimorfismo dinâmico (figura 10).

Figura 10: Polimorfismo Dinâmico

Fonte: Cardoso (2003, p. 11)

2.1.6 Encapsulamento

É uma característica que consiste em ocultar as informações de uma

classe de outras para que essas não tenham acesso.

“O encapsulamento, ou ocultação de informação, é uma técnica que consiste em separar aspectos externos dos internos da implementação de um objeto, isto é, determinados detalhes ficam ocultos aos demais objetos e dizem respeito apenas ao próprio projeto.” (LIMA, 2009, p.26.).

A seguir uma imagem explicando o modelo de encapsulamento. (figura 11).

23

Figura 11: Encapsulamento

Fonte: Cardelli (s.d)

2.1.7 Abstração

“Abstração é o princípio de ignorar os aspectos de um assunto não

relevante para o propósito em questão, tornando possível uma concentração

maior nos assuntos principais” (COOD, 1991. Apud NOGUEIRA).

Segundo Sbrocco (2011, p.37.) as abstrações têm sido muito usadas, já

que pessoas geralmente tentam entender o mundo em sua volta através de

construções de modelos mentais de partes dele. Sendo assim, muito mais fácil

de compreender o que se deseja, pois somente os elementos mais importantes

estão sendo colocados em consideração.

“Portanto, modelos mentais se mostram mais simples do que complexos

sistemas que eles modelam.” (SBROCCO, 2011, p.37.).

A seguir um exemplo mais comum de abstração encontrada no cotidiano

(figura 12).

24

Figura 12: Abstração

Fonte: Bezerra e Woszezenki (s,d).

2.2 UML

2.2.1 Definição

Segundo a Object Management Group (OMG) (apud LIMA, 2009, p.32.),

a UML é uma linguagem para especificação, construção, visualização e

documentação de artefatos de um sistema de software intensivo. A UML foi

criada por não existir um modelo padrão de modelagem que fosse utilizado.

De acordo com Cardoso (2003, p.2.) com a aceitação do modelo pelo por

empresas de grande porte e nome do mercado, foi criada a versão 1.0 da UML,

padronizada pela OMG, em janeiro de 1997.

Para Lima (2009, p.32.) a UML é uma linguagem completa, que nos

permite capturar as informações necessárias para o desenvolvimento do

25

software além de possibilitar uma forma mais clara e objetiva de expressar as

informações obtidas.

2.2.2 Caso de Uso

Segundo Jacobson (apud Macoratti, s.d), o caso de uso é um documento

narrativo que serve para descrever a sequência de eventos de um ator que usa

um sistema para completar um processo.

Para Cardoso (2003, p.20.) um use case ou caso de uso é um conjunto

de funcionalidades de um sistema, representado por fluxos de eventos iniciados

por um ator que apresenta um resultado de valor a um ator.

O caso de uso é desenvolvido para facilitar o entendimento do sistema,

tanto para o desenvolvedor quanto para o cliente, “é um processo interativo no

qual as discussões entre o cliente e os desenvolvedores do sistema conduzem

e uma especificação do sistema da qual todos estão de acordo.” (MACORATTI,

s.d).

2.2.3 Diagrama de Caso de uso

O diagrama de caso de uso é um complemento do caso de uso definido

pela UML. De acordo com Cardoso (2003, p.25.) um caso de uso é representado

por uma elipse e relacionamentos com os atores envolvidos no sistema.

Figura 13: Diagrama de caso de uso

Fonte: Madeira (2007)

26

Esses relacionamentos podem ser de inclusão (<<include>>), extensão

(<<extend>>) e derivação. (figura 13).

Inclusão: segundo Lima (2009, p.61.) um relacionamento de

inclusão (include) indica que uma instancia de um caso de uso

conterá o comportamento do caso de uso que ele está relacionado.

(figura 14).

Figura 14: Caso de uso incluída

Fonte: Madeira (2007)

Extensão: “um relacionamento de extensão (extend) de um caso

de uso para outro indica que a instancia do primeiro pode ser

acrescentada [...] pelo comportamento definido no segundo caso

de uso.” (LIMA, 2009, p.60.). (figura 15).

Figura 15: Caso de uso estendida

Fonte: Madeira (2007)

Derivação: segundo Cardoso (2003, p.27.) a derivação entre caso

de uso é semelhante à derivação em classe, como foi visto

anteriormente uma classe filha herda traços da classe mãe, o

mesmo ocorre no relacionamento entre caso de uso.

27

Figura 16: Derivação entre caso de uso

Fonte: Euclézio (s.d)

2.2.4 Classes de análise

“As classes de análise representam o comportamento relacionado aos

requisitos funcionais no início da análise e vão adquirindo novas funcionalidades

com a sequência do projeto.” (CARDOSO, 2003, p.29.).

De acordo com Cardoso (2003, p.29.) existem três tipos de classes de

análise, que são: classes de fronteira, classes de controle e classes de entidade.

Classes de fronteira: Ela é responsável pela representação

entre o caso de uso e o ator e por ela ter esta responsabilidade

existe uma regra que “determina que cada relação entre o autor

e o caso de uso gera uma classe de fronteira e este

relacionamento envolve receber ou apresentar informações do

sistema para o autor.

Classes de entidade: Estas classes são usadas para modelar

classes que são duradouras e persistem durante a execução do

programa ou sistema.

Classes de controle: modela o controle entre os objetos do

caso de uso, também representam ações complexas do

sistema, como por exemplo, a lógica de negócio.

28

2.2.5 Diagrama de sequência

O diagrama de sequência é onde o analista define a sequência de

eventos que o sistema deve seguir. “Neste diagrama são apresentados os atores

e as classes de análise na parte superior do diagrama e as linhas que se seguem

abaixo de cada um deles representam a linha de vida do objeto ou da ação do

ator ou objeto sobre outro objeto.” (CARDOSO, 2003, p.35.).

Abaixo segue um exemplo de diagrama de sequência. (figura 17).

Figura 17: Diagrama de sequência

Fonte: Editthis.info (2007)

2.3 Engenharia de Software

A engenharia de software pode ser considerada como um estudo para

encontrar meios que melhorem o desenvolvimento do software, mas antes, não

se deve confundir que engenharia de software esteja relacionada somente com

a programação do sistema, mas sim com todas as partes que envolvem o

desenvolvimento de um sistema. “A engenharia de software propõe métodos

sistemáticos com o uso adequado de ferramentas e técnicas, que levam em

consideração o problema a ser resolvido, as necessidades e os recursos

disponíveis.” (ROBDEN, s.d).

Segundo Falbo (apud Robden, s.d), a engenharia de software é

classificada de acordo com o seu propósito em:

29

Atividades de desenvolvimento, que estão diretamente

relacionadas com o processo de desenvolvimento.

Atividades de gerência, estão relacionadas com o planejamento

do projeto, como o nome já diz, faz parte da gerencia como as

funções de realizar cronogramas, estimativas entre outras.

Atividade de garantia da qualidade, garante a qualidade do

projeto, desde o levantamento de requisitos até a entrega do

sistema.

As características citadas anteriormente servem para garantir a qualidade

e o bom desenvolvimento do sistema, no entanto para Robden (s.d), é

necessário seguir algumas normas, regras comuns a todos aqueles que

pretendem ter um certificado de qualidade do seu sistema.

O processo de software é definido, por Macoratti.net, como um conjunto de atividades uniformizadas a serem aplicadas sistematicamente que se encontram agrupadas em fases, cada uma das quais com os seus intervenientes com responsabilidades, que possui diversas entradas e produz diversas saídas. Isto é, define quem faz o quê, quando e como para garantir certo objetivo. (ROBDEN, s.d).

2.4 Java

Criada pela Sun Microsystems, é uma linguagem de programação

orientada a objeto, hoje em dia muito utilizada por diversos tipos equipamentos

eletrônicos, como computadores, televisões, celulares, entre outros, deste que

estes aparelhos estejam dotados de uma Java Virtual Machine (JVM).

Uma JVM, segundo Schützer e Massago (2008), é um programa capaz de

interpretar os bytecodes, códigos de máquina de um processador virtual,

produzidos pelo compilador.

“Possui uma estrutura muito semelhante à da linguagem C, da qual

descende imediatamente.” SCHÜTZER e MASSAGO (2008). Segundo Indrusiak

(s.d), é uma linguagem muito completa e adequada para o desenvolvimento de

aplicativos de internet e programas stand–alone, foi desenvolvida com o objetivo

30

de ser bem simples e eficiente do que suas predecessoras e tinha como alvo

inicial a produção de softwares para produtos eletrônicos.

Com o crescimento e a popularização da internet a Sun Microsystems viu

ai uma oportunidade de colocar sua nova linguagem nesse mundo, segundo

Indrusiak (s.d), foi ai que a linguagem criou força, está até hoje no mercado e se

popularizando cada vez mais.

2.5 Sistema de Gerenciamento de Banco de Dados (SGBD)

“Em muitos sistemas informatizados é necessário armazenar informações

em bancos de dados.” (FURTADO, 2013). O SGBD serve para isso, no entanto,

um SGBD não armazena a informação, ele é um Sistema de Gerenciamento de

Banco de Dados, o que muitos confundem com Banco de Dados, que é onde as

informações realmente são armazenadas.

Segundo Batista (s.d), SGBD é um software que nos permite construir e

manipular um banco de dados, além disso, esta ferramenta permite controlar

redundância, compartilhamento de dados, independência de dados, segurança,

backup e recuperação à falha, forçar restrições de integridade, aumentar a

produtividade e disponibilidade, flexibilidade e padronização.

A baixo, figura 18 com o modelo de estrutura de dados.

Figura 18: Modelo de Estrutura de Banco de Dados

Fonte: Carvalho (2013)

31

2.6 Java Server Faces (JSF)

Java Server Faces (JSF) é um framework de interface com o usuário,

porém, sua finalidade é facilitar o desenvolvimento de aplicações web, tornando-

a mais prática e dinâmica.

Segundo a Caelum (s.d) esta tecnologia permite criar aplicações Java

para Web utilizando componentes prontos. O uso desses componentes prontos

faz com que o desenvolvedor não se preocupe com JavaScript e HTML.

2.7 Criptografia

“O termo Criptografia surgiu da fusão das palavras gregas “Kryptós” e

“gráphein”, que significam “oculto” e “escrever”, respectivamente. Trata-se de um

conjunto de regras que visa codificar a informação de forma que só o emissor e

o receptor consiga decifrá-la.” (ROMAGNOLO, 2007).

Basicamente o que define a segurança de uma criptografia computacional é a quantidade de bits aplicados a ela. Por exemplo, uma chave de 8 bits gera apenas 256 combinações diferentes, pois este é o resultado de 2 elevado a 8. Isto prova que a criptografia de 8 bits não é de fato segura pois qualquer um que contar com tempo suficiente é capaz de resolvê-la. Imagine agora quantas combinações diferentes existem para uma chave de 128 bits, para quebrar uma chave destas no método da tentativa e erro seria necessária uma década e centenas de milhares de computadores. (PRADA, 2009).

2.7.1 Criptografia Simétrica

“A criptografia simétrica é também conhecida por criptografia de chave

secreta. Algoritmos que usam criptografia simétrica tendem a ser mais rápidos”.

(PINTO, 2010). Nesta criptografia, a chave que é utilizada para criptografar é a

mesma utilizada para descriptografar. (figura 19)

32

Figura 19: Criptografia Simétrica

Fonte: Pinto (2009)

Um grave problema da criptografia simétrica é a necessidade constante

de trocas de chaves.

2.7.2 Criptografia Assimétrica

Este método utilizado o sistema de par de chaves, sendo uma pública

(compartilhável), e outra privada para uso restrito de seu detentor. (figura 20)

Esse esquema de chaves pública e privada atuando em conjunto funciona muito bem, principalmente quando queremos garantir a confiabilidade nos dados, já que somente o proprietário da chave privada será capaz de descriptografar a mensagem e vice-versa (nem mesmo o dono da chave pode descriptografar a mensagem que ele criptografou, a não ser que ele possua a outra chave), ou seja, mesmo que ela caia em “mãos erradas”, essa pessoa não será capaz de lê-la. (CASTELLÓ e VAZ,).

Figura 20: Criptografia Assimétrica

Fonte: Pinto (2009)

33

2.8 Função HASH

Esta função tem como foco principal garantir a integridade, autenticidade

e a ininteligibilidade da informação através da utilização de algoritmos

criptográficos. Os principais algoritmos utilizados como função hash são: MD5,

SHA1, SHA256 e SHA512.

“A função hash é qualquer algoritmo que mapeie dados grandes e de

tamanho variável para pequenos dados de tamanho fixo. A principal aplicação

dessas funções é a comparação de dados grandes ou secretos.” (PISA, 2012).

Outra forte característica da função hash é o fato de ser “One-Way”, que

traduzido ao pé da letra significa “Caminho único”. Infere-se desta tradução que

ao transformar o ativo em hash, o detentor do hash não poderá retornar à

informação original.

Ainda neste contexto, existe o termo “Colisão de Hash”. Uma colisão

ocorre quando duas ou mais informações diferentes são processadas

(criptograficamente) e geram o mesmo número de hash. Para resolução ou

diminuição da possibilidade de colisões, são utilizadas as técnicas de

Encadeamento Separado e Encadeamento Aberto. Logo abaixo segue um

exemplo de como funciona o hash. (figura 21).

Figura 21: Hash

Fonte: Leocádio (s.d)

34

2.9 Princípios de Segurança da Informação

A segurança da informação tem como principal diretriz, proteger o bem

mais precioso de uma organização, suas informações (ativos de valor). Dentre

os vários profissionais envolvido nesta missão de proteção, “O Gestor de

Segurança da Informação (Security Officer), deve estar atento a itens como:

ambiente, tecnologia, processos e pessoas” (MAIA, 2013).

É impossível falar de segurança da informação sem mencionar a sua

tríade com os seus conceitos básicos. São eles: Confidencialidade, Integridade

e Disponibilidade.

Segundo Maia (2013), estes conceitos são definidos da seguinte maneira:

Confidencialidade: “Diferente de ser um segredo ou algo inacessível, é um conceito no qual o acesso à informação deve ser concedido a quem de direito, ou seja, apenas para as entidades autorizadas pelo proprietário ou dono da informação”.

Integridade: “Está ligado à propriedade de manter a informação armazenada com todas as suas características originais estabelecidas pelo dono da informação, tendo atenção com o seu ciclo de vida (criação, manutenção e descarte)”.

Disponibilidade: “Deve garantir que a informação esteja sempre disponível para uso quando usuários autorizados necessitarem”.

Figura 22: Tríade de Segurança da Informação

Fonte: Maia (2013)

35

CAPITULO III – DOCUMENTOS DE ANÁLISE DO APLICATIVO

3 DOCUMENTOS DE ANÁLISE DO APLICATIVO

3.1 Documento de Visão

3.1.1 Introdução

A finalidade deste documento é definir uma visão geral do sistema em

termos de suas necessidades e das funcionalidades para atendê-las, contendo

os requisitos mais importantes para o desenvolvimento do projeto.

3.1.2 Objetivo

O objetivo deste documento é coletar, analisar e definir as características

e necessidades de alto nível do SysCrypt. O foco está nas capacidades

necessárias para os envolvidos e usuários finais, e porque estas necessidades

existem. Os detalhes de como o SysCrypt atende estas necessidades estão

detalhados nos casos de usos e demais artefatos de apoio.

3.1.3 Referencias

CARDOSO, Caíque. UML na prática: do problema ao sistema. Rio de

Janeiro: Ciência Moderna, 2013. 132p.

3.1.4 Visão geral

Este documento tem a finalidade de descrever os aspectos do sistema

que devem ser considerados pelos responsáveis no momento do detalhamento.

36

3.1.5 Posicionamento

3.1.5.1 Oportunidade de negócio

Não se tem o conhecimento de um sistema que possibilite ao usuário

criptografar e posteriormente descriptografar um arquivo que o mesmo deseja

manter de forma ininteligível e confiável, além de possibilitar a verificação de

integridade do arquivo utilizando o cálculo de hash.

O problema Acesso não autorizado a informações de

grande valia.

Afeta Dono ou responsável do ativo.

Impactando Confidencialidade e integridade do ativos

comprometidos.

Uma solução de sucesso

deveria

Desenvolver um aplicativo que possibilite ao

usuário criptografar e descriptografar um ativo

de valor.

3.1.5.2 Descrição do problema

3.1.5.3 Escopo

O SysCript será desenvolvido para manter a confidencialidade e averiguar

a integridade dos ativos de valor do usuário.

Contém:

Inserir Senha de Encriptação e Decriptação;

Efetuar Encriptação;

Efetuar Decriptação;

Efetuar Averiguação da Integridade do Arquivo através da

utilização de HASH;

37

3.1.5.4 Sentença de posição do produto

Para Qualquer usuário.

Quem

Necessitar armazenar seus ativos de forma

segura mantendo a confidencialidade e

integridade do mesmo.

SysCrypt É uma aplicação web

Que Encripta e desencripta ativos de valor para o

usuário.

Diferente de

Sistemas de armazenamento de arquivos que

não garantem a confidencialidade e a

integridade do arquivo

Nosso Sistema Possibilita ao usuário criptografar e

descriptografar ativos de valor.

3.1.6 Descrição dos envolvidos e usuários

Para efetivamente fornecer produtos e serviços que atendam as reais

necessidades dos envolvidos e usuários, é necessário identificar e envolver

todos no processo de modelagem de requisitos. Os itens a seguir promovem a

identificação dos usuários do sistema para garantir que a comunidade de

pessoas envolvidas represente seus interesses e pontos de vista de forma

adequada. Esta seção provê um perfil dos usuários e demais envolvidos no

projeto.

3.1.6.1 Segmentação do mercado

O público – alvo deste sistema, são usuários que desejam manter suas

informações seguras em seus computadores.

38

3.1.6.2 Resumo dos Envolvidos

3.1.6.3 Resumo dos Usuários

3.1.6.3.1 Usuário Final

Nome Descrição Responsabilidades

Usuário Final Usuário da

Aplicação

Responsável por manipular a

aplicação usufruindo de suas

funcionalidades.

Desenvolvedor

Levanta os

requisitos,

desenvolve e

realiza a

documentação do

sistema.

Faz a coleta das informações

relevantes referentes ao

desenvolvimento do sistema de

forma a atender suas

necessidades.

Descrição Pessoa que utiliza a aplicação

Tipo Usuário primário.

Responsabilidade Inserir ativos a fim de efetuar a Encriptação e

ou Desencriptação.

Critério de Sucesso Não se aplica

Envolvimento Não se aplica

Comentários/Problemas Não se aplica

39

3.1.6.3.2 Desenvolvedor

Descrição Pessoa responsável por coletar as

informações e desenvolver o sistema.

Tipo Usuário avançado.

Responsabilidade

Coletar as informações necessárias para o

desenvolvimento do sistema, realizar a

documentação e posteriormente dar suporte

ao sistema, como por exemplo manutenção e

atualizações.

Critério de Sucesso

Obter o maior número de informações

possíveis para o levantamento de requisitos,

para facilitar e melhorar o desenvolvimento do

sistema.

Envolvimento

Analisa as informações obtidas nas pesquisas

ou entrevistas e atuar na documentação e

desenvolvimento do sistema.

Comentários/Problemas Não se aplica

3.1.7 Restrições

O projeto deverá estar completo até o dia 01/12/2014.

A aplicação deverá conter todas as funcionalidades que possibilitem ao

usuário usufruir de 100% do sistema sem nenhuma objeção.

3.2 Especificação dos Requisitos

3.2.1 ERaF.1 SysCrypt.1 Inserir Senha de Encriptação e Decriptação

1. ERaF.1 Inserir Senha de Encriptação e Decriptação

Descrição

A aplicação deverá ser capaz de aceitar qualquer tipo de

caractere para a criação da senha que será usada para a

encriptação e decriptação dos ativos.

40

Quadro 1: Quadro de Especificação do Requisito ERaF.1

3.2.2 ERaF.2 SysCrypt.2 Efetuar Criptografia

2. ERaF.2 Efetuar Criptografia

Descrição O sistema deverá ser capaz de efetuar a encriptação do

arquivo.

Descrição do risco Risco Prioridade

Usuário não ter inserido a senha antes de

efetuar a criptografia do arquivo. Altíssimo Altíssima

Usuário

Envolvido Pessoa que utiliza aplicação.

Quadro 2: Quadro de Especificação do Requisito ERaF.2

3.2.3 ERaF.3 SysCrypt.3 Efetuar Decriptação

3. ERaF.3 Efetuar Decriptação

Descrição A aplicação deverá ser capaz de efetuar a decriptação do

arquivo.

Descrição do risco Risco Prioridade

Usuário não ter inserido a senha antes de

efetuar a decriptação do arquivo. Senha pode

ser inserida incorretamente, por isso deve se

ter uma validação da senha caso isso ocorra.

Altíssimo Altíssima

Usuário

Envolvido Pessoal que utiliza a aplicação

Quadro 3: Quadro de Especificação do Requisito ERaF.3

Descrição do risco Risco Prioridade

Não se aplica. Altíssimo Altíssima

Usuário

Envolvido

Nenhum, a encriptação é feita sem nenhuma intervenção

do usuário

41

3.2.4 ERaF.4 SysCrypt.4 Gerar HASH

4. ERaF.4 Gerar HASH

Descrição A aplicação deverá ser capaz de gerar um HASH de

qualquer arquivo e salvá-lo no banco de dados.

Descrição do risco Risco Prioridade

Não se aplica Baixo Baixa

Usuário

Envolvido Pessoa que utiliza a aplicação

Quadro 4: Quadro de Especificação do Requisito ERaF.4

3.2.5 ERaF.5 SysCrypt.5 Verificar HASH

5. ERaF.5 Verificar HASH

Descrição

A aplicação deverá ser capaz de gerar um HASH de um

arquivo selecionado pelo usuário e verificar com as

informações do banco de dados e enviar uma mensagem

para o usuário informando se o arquivo está integro ou

não.

Descrição do risco Risco Prioridade

Não se aplica Baixo Baixa

Usuário

Envolvido Pessoa que utiliza a aplicação

Quadro 5: Quadro de Especificação do Requisito ERaF.5

4 Descrição dos Casos de Uso e Atores

4.1 Casos de Uso

42

Figura 23: Diagrama de Caso de Uso Geral

4.1.1 Inserir Senha: consiste em inserir uma senha para o sistema poder

efetuar a encriptação ou decriptação do arquivo selecionado pelo usuário.

4.1.2 Encriptar Arquivo: consiste em efetuar a criptografia do arquivo

selecionado pelo usuário do sistema. É necessário antes inserir a senha.

4.1.3 Desencriptar Arquivo: consiste em efetuar a desencriptação do arquivo

selecionado pelo usuário do sistema, porem deve se inserir a senha que foi

usada para encriptar o mesmo e o arquivo deve ter sido criptografado.

4.1.4 Gerar Hash: consiste em gerar o hash do arquivo selecionado pelo o

usuário do sistema, o sistema deve registrar esse hash em um banco de dados.

4.1.5 Verificar Hash: consiste em gerar o hash do arquivo selecionado pelo

usuário do sistema e fazer a verificação com o banco de dados, para verificar

se o hash existe caso contrário o mesmo não foi gerado ou o arquivo não está

integro.

43

4.2 Atores

4.2.1 Usuário Final: Este ator é qualquer pessoa que deseje utilizar a

aplicação, ele será responsável por inserir os dados pra que o sistema possa

efetuar suas funções, afim de responder às necessidades do usuário.

4.3 Detalhamento de Caso de Uso

4.3.1 UC01 – Inserir Senha

Nome da Use Case Inserir Senha

Descrição Recebe a senha do usuário que será utilizada para criptografar ou descriptografar o arquivo selecionado

Requisitos Associados

ERaF.2 SysCrypt. 2 Efetuar Encriptação

ERaF.3 SysCrypt. 3 Efetuar Decriptação

Pré Condições Estar com o sistema aberto

Pós Condições Criptografar ou Descriptografar um arquivo

Atores Qualquer usuário

Fluxo Principal – Inserir Senha

Ações Recebidas (Ator) Ações Realizadas (Sistema)

1. O ator inserir a senha; 2. O sistema gera o hash da senha que deverá ser usada para a criptografar e descriptografar o arquivo.

Quadro 6: Fluxo de evento do caso de uso Inserir Senha

4.3.2 UC02 – Criptografar

Nome da Use Case Criptografar

Descrição Recebe o arquivo e a senha inserida pelo usuário para efetuar a criptografia do arquivo.

Requisitos Associados

ERaF.1 SysCrypt. 1 Inserir Senha

Pré Condições Inserir a Senha e adicionar arquivo para ser efetuada a

criptografia.

Pós Condições Arquivo criptografado

Atores Qualquer usuário

Fluxo Principal – Criptografar

Ações Recebidas (Ator) Ações Realizadas (Sistema)

1. Inserir arquivo puro para ser criptografado;

2. Criptografa o arquivo usando o hash da senha e envia o arquivo criptografado para a pasta de download ou outra pasta configurada pelo Browser.

Quadro 7: Fluxo de evento do caso de uso Criptografar

44

4.3.3 UC03 – Descriptografar

Nome da Use Case Descriptografar

Descrição Recebe o arquivo criptografado e a senha inserida pelo usuário para efetuar a desencriptação do arquivo.

Requisitos Associados

ERaF.1 SysCrypt. 1 Inserir Senha

Pré Condições Inserir Senha e adicionar arquivo criptografado para ser efetuada a decriptação.

Pós Condições Arquivo descriptografado

Atores Qualquer usuário

Fluxo Principal – Descriptografar

Ações Recebidas (Ator) Ações Realizadas (Sistema)

1. Inserir arquivo criptografado para ser desencriptado;

2. Descriptografa o arquivo usando o hash da senha e envia o arquivo descriptografado para a pasta (download), ou outra pasta configurada pelo Browser.

Quadro 8: Fluxo de evento do caso de uso Descriptografar

4.3.4 UC04 – Gerar Hash

Nome da Use Case Gera Hash

Descrição Gera o hash do arquivo selecionado pelo usuário e salva no banco de dados.

Requisitos Associados

Não se aplica.

Pré Condições Inserir um arquivo para ser gerado o hash do mesmo.

Pós Condições Hash gerado

Atores Qualquer usuário

Fluxo Principal – Gerar Hash

Ações Recebidas (Ator) Ações Realizadas (Sistema)

1. Inserir um arquivo para gerar o hash. 2. Gera o hash do arquivo selecionado pelo usuário e salva no banco de dados.

Quadro 9: Fluxo de evento do caso de uso Gerar Hash

45

4.3.5 UC05 – Verificar Hash

Nome da Use Case Verificar Hash

Descrição Gera o hash do arquivo selecionado pelo usuário e compara com o banco de dados para verificar se o hash existe.

Requisitos Associados

Ter gerado o hash do mesmo arquivo que se deseja verificar a integridade.

Pré Condições Inserir um arquivo para ser gerado o hash do mesmo.

Pós Condições Verifica hash

Atores Qualquer usuário

Fluxo Principal – Gerar Hash

Ações Recebidas (Ator) Ações Realizadas (Sistema)

1. Inserir arquivo para fazer a averiguação de integridade.

2. Gera o hash do arquivo selecionado pelo usuário; 3. Consulta o banco de dados para fazer a comparação do hash.

Quadro 10: Fluxo de evento do caso de uso Verificar Hash

5 Diagrama de Sequência

5.1 Diagrama de Sequência Criptografar

Figura 24: Diagrama de Sequência do Caso de Uso Criptografar

46

5.2 Diagrama de Sequência Descriptografar

Figura 25: Diagrama de Sequência do Caso de Uso Descriptografar Arquivo

5.3 Diagrama de Sequência Gerar e Verificar Hash

Figura 26: Diagrama de Sequência do Caso de Uso Gerar e Verificar Hash

47

5.4 Diagrama de Sequência Gerar e Verificar Hash (exceção)

Figura 27: Diagrama de Sequência do Caso de Uso Gerar e Verificar Hash (exceção)

48

6 CONCLUSÃO

A informação é comumente tratada de forma secundária quanto a seu

valor e importância, a maioria dos usuários não sabem ou não se interessam em

mantê-las armazenadas de forma segura, deixando-as expostas a quaisquer

tipos de ameaças e/ou interceptações.

Com isso, observa-se a real necessidade de um aplicativo que forneça ao

usuário a oportunidade de proteger os seus dados, averiguar se houve qualquer

tipo de alteração não autorizada, fazendo isso de forma rápida e visualmente

confortável.

Conclui-se, então, que o SysCrypt é o aplicativo ideal para realizar todas

essas atividades supracitadas.

49

7 REFERÊNCIAS

BAPTISTA, Cláudio. Banco de Dados Capítulo 1: Introdução. Disponível em:

<http://www.dsc.ufcg.edu.br/~baptista/cursos/BDadosI/Capitulo1.pdf>.

Acessado em 08 de Novembro de 2014 às 20:48.

BEZERRA, Eduardo Augusto; WOSZEZENKI, Cristiane. Linguagem de

Programação C++: abstração. Disponível em:

<http://gse.ufsc.br/~bezerra/disciplinas/cpp/aulas/dia2_3.html >. Acessado em

20 de novembro de 2014 às 15:03.

BLOGNET.PROFISSIONAL. Polimorfismo – jan 2009. Disponível em:

<http://blognet.profissional.ws/blog/?p=74>. Acessado em 21 de Novembro de

2014 às 00:40.

CAELUM. Introdução ao JSF e Primefaces. Disponível em:

<http://www.caelum.com.br/apostila-java-testes-jsf-web-services-design-

patterns/introducao-ao-jsf-e-primefaces/#7-2-caracteristicas-do-jsf>. Acessado

em 08 de Novembro de 2014 às 22:45.

CARCARROLHO e GUIMARÃES, Rodrigo. UML – Criando Diagramas

Eficientes – mar 2009. Disponível em: <http://pt.slideshare.net/rodrigocasca/uml-

criando-diagramas-eficientes>. Acessado em 21 de nov de 2011 às 00:30.

CARDELLI, Gabriel. [Java/Slides] Encapsulamento por Tiago Eugenio.

Disponível em: <http://www.ebah.com.br/content/ABAAAAOnMAC/java-slides-

encapsulamento-por-tiago-eugenio>. Acessado em 20 de novembro de 2014 às

14:49.

CARDOSO, Caíque. UML na prática: do problema ao sistema. Rio de Janeiro:

Ciência Moderna, 2003. 132 p.

CARVALHO, Mauricio de. SGBD (Sistema Gerenciador de Banco de Dados)

– jun 2013. Disponível em: <http://mauriciocarvalho.wordpress.com/>. Acessado

em 08 de Novembro de 2014 às 21:40.

50

CASTELLÓ e VAZ. Tipos de Criptografia. Disponível em:

<http://www.gta.ufrj.br/grad/07_1/ass-dig/TiposdeCriptografia.html>. Acessado

em 06 de Novembro de 2014 às 00:39.

DAVID, Marcio Frayze. Programação Orientada a Objetos: uma introdução –

out 2007. Disponível em: <http://www.hardware.com.br/artigos/programacao-

orientada-objetos>. Acessado em 05 de Novembro de 2014 às 20:18.

EDITTHIS.INFO. Diagramas de Sequência de Sistema – jun 2007. Disponível

em: <http://editthis.info/ceuclarsi200705/Diagramas_de_Seq%C3%BC%C3%A

Ancia _de_Sistema>. Acessado em 06 de Novembro de 2014 às 00:54.

EUCLÉZIO. Casos de uso: diferenças entre include, extend e generalização –

UML. Disponível em: <http://euclezio.blogspot.com.br/2013/08/casos-de-uso-

diferencas-entre-include.html>. Acessado em 06 de Novembro de 2014 às 00:26.

FERNANDES, Felipe Teixeira. Sistemas SCADA – Criando Classes – jul 2011.

Disponível em: <http://www.automacaoind.com/2011_07_01_archive.html>.

Acessado em 03 de Novembro de 2014 às 21:46.

FURTADO, Gustavo. O que é um SGBD? – abr 2013. Disponível em:

<http://www.dicasdeprogramacao.com.br/o-que-e-um-sgbd/>. Acessado em 08

de Novembro de 2014 às 19:58.

GASPAROTTO, Henrique Machado. Os 4 pilares da Programação Orientada

a Objetos. Disponível em: <http://www.devmedia.com.br/os-4-pilares-da-

programacao-orientada-a-objetos/9264>. Acessado em 03 de Novembro de

2014 às 21:29.

INDRUSIAK, Leandro Soares. Linguagem Java – 2009. Disponível em:

<http://www.cin.ufpe.br/~arfs/introjava.pdf>. Acessado em 08 de Novembro de

2014 às 19:15.

LEOCÁDIO. Criptografia, assinatura digital e alguns outros conceitos.

Disponível em: <https://eltiger.wordpress.com/2008/10/12/ciptografia-

assinatura-digital-e-alguns-outros-conceitos/>. Acessado em 06 de Novembro

de 2014 às 01:01.

51

LIMA, Adilson da Silva. UML 2.2: do Requisito à Solução. 4. Ed. São Paulo:

Érica, 2009. 326 p.

MABESI, Plinio. Utilizando Classe no Access – Orientação a Objetos – mai

2010. Disponível em: <http://www.usandoaccess.com.br/tutoriais/classe-no-

access-orientacao-a-objetos.asp?id=1>. Acessado em 05 de Novembro de 2014

às 23:05.

MACORATTI, José Carlos. Modelando Sistemas em UML – Casos de Uso.

Disponível em: <http://www.macoratti.net/net_uml2.htm>. Acessado em 06 de

Novembro de 2014 às 01:57.

MADEIRA, Marcelo. Entendendo o Diagrama de Casos de Uso – mar 2007.

Disponível em: <https://celodemelo.wordpress.com/category/uml/>. Acessado

em 05 de Novembro de 2014 às 23:53.

MAIA, Marco Aurélio. O que é Segurança da informação – ago 2013.

Disponível em: <http://segurancadainformacao.modulo.com.br/seguranca-da-

informacao#>. Acessado em 05 de Novembro de 2014 às 18:53.

NOGUEIRA, Admilson. UML – Unified Modeling Language – Introdução e

Histórico. Disponível em: <http://www.linhadecodigo.com.br/artigo/763/uml-

unified-modeling-language-introducao-e-historico.aspx>. Acessado em 06 de

Novembro de 2014 às 02:26.

PINTO, Pedro. Criptografia simétrica e assimétrica. Sabe a diferença? – dez

2010. Disponível em: <http://pplware.sapo.pt/tutoriais/networking/criptografia-

simetrica-e-assimetrica-sabe-a-diferenca/>. Acessado em 03 de Novembro de

2014 às 22:27.

PISA, Pedro. O que é Hash? – jul 2012. Disponível em: <http://www.

techtudo.com.br/artigos/noticia/2012/07/o-que-e-hash.html/>. Acessado em 05

de Novembro de 2014 às 19:37.

PONTES, Guilherme. Aula 1 – Mundo Java e Abstração. Disponível em:

<http://www.linu.com.br/papers/paper070.html>. Acessado em 03 de Novembro

de 2014 às 22:17.

52

PRADA, Rodrigo. O que é Criptografia? – jan 2009. Disponível em:

<http://www.tecmundo.com.br/seguranca/1334-o-que-e-criptografia-.htm/>.

Acessado em 03 de Novembro de 2014 às 22:14.

ROHDEN, Rafael Barasuol. Importância da Engenharia de Software.

Disponível em: <http://pt.scribd.com/doc/22742746/Artigo-Importancia-da-

Engenharia-de-Software>. Acessado em 06 de Novembro de 2014 às 01:31.

ROMAGNOLO, Cesar Augusto. O que é Criptografia? Leia e aprenda sobre o

termo – jan 2014. Disponível em: <http://www.oficinadanet.com.br/

artigo/443/o_que_e_criptografia/>. Acessado em 03 de Novembro de 2014 às

22:10.

SBROCCO, José Henrique Teixeira de Carvalho. UML 2.3: teoria e prática. 1 ed.

São Paulo: Érica, 2011.

SCHÜTZER, Waldeck; MASSAGO, Sadao. Tutorial de Java. Disponível

em:<http://www.dm.ufscar.br/~waldeck/curso/java/introd.html>. Acessado em 06

de Novembro de 2014 às 02:39.

53

APENDICE A – TELAS DO PROTOTIPO

Figura 28: Tela Inicial

Figura 29: Inserir Senha Criptografar

Figura 30: Criptografar Arquivo

54

Figura 31: Inserir Senha Descriptografar

Figura 32: Descriptografar Arquivo

Figura 33: Gerar Hash

55

Figura 34: Verificar Hash