tecnologia em seguranÇa da informaÇÃo athyla...
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