Upload
others
View
1
Download
0
Embed Size (px)
Citation preview
Simp.TCC/Sem.IC.2017(12); 2725-2745 2725
TSI
MSEG - MENSAGEIRO SECRETO
RODRIGO DE LIMA VALENTE CID BENDAHAN COELHO CINTRA
RESUMO O objetivo deste trabalho é implementar um sistema para envio e troca de mensagens criptografadas entre dois usuários, garantindo a integridade, a autenticidade e a confidencialidade da informação enviada. O sistema foi desenvolvido na linguagem Python, e utiliza algoritmos criptográficos RSA e Blowfish em conjunto com a função Hash SHA256. Durante o desenvolvimento, foram realizados diversos testes afim de atestar a qualidade do software, dos processos de criptografia e descriptografia e envio/recebimento de mensagens, resultando assim em um sistema com interface web que permite ao usuários se comunicarem entre si de forma segura. Palavras-chave: Criptografia, Decriptografia, Mensagem, Informação ABSTRACT The purpose of this work is to implement a system for sending and exchanging encrypted messages between two users, guaranteeing the integrity, authenticity and confidentiality of the information sent. The system was developed in the Python language, and uses RSA and Blowfish cryptographic algorithms together with a SHA-256 Hash function. During the development, several tests were carried out in order to attest the quality of the software, the processes of encryption and description and sending / receiving of messages, resulting in a system with the web interface that allows users to communicate with each other in a secure way. Keywords: Cryptography, Decryptography, Message, Information. INTRODUÇÃO A informação é o ativo de grande valia para qualquer pessoa ou empresa, portanto o uso da criptografia para trocar informações de forma segura e garantir a sua proteção é uma necessidade nos dias atuais. Devido a alta demanda de troca de informações, houve a necessidade da evolução dos meios de comunicação, e atualmente a internet é o meio com maior tráfego de informações, e um dos mais inseguros. Portanto fez-se necessário a utilização de métodos de proteção das informações, afim de garantir a confidencialidade, a integridade e a disponibilidade da informação trafegada e evitar que pessoas e empresas tenham tenhas informações importantes vazadas. Devido as necessidades do cenário elencado, esse trabalho apresenta um sistema que propõe ao seu usuário efetuar a troca de informações segura entre seus contatos, garantindo a confidencialidade e integridade das informações, garantindo o armazenamento seguro e acesso com autenticação. Desta forma, este trabalho pretende atender essas necessidades com o desenvolvimento de um sistema de troca de mensagens entre usuários, utilizando algoritmos de criptografia e verificação de hash, garantindo a confidencialidade e a integridade da informação enviada e recebida. JUSTIFICATIVA Devido a importância da trocas de informações importantes de forma segura, se faz necessário desenvolvimento do software Mensageiro Secreto (MSeg), que utiliza recursos como as criptografias simétrica e assimétrica e validação de integridade de dados com hash. O sistema vai garantir o envio e o armazenamento de informações importantes de forma segura.
OBJETIVOS OBJETIVO GERAL Desenvolver um sistema de criptografia para o envio de informações, que utiliza a algoritmo de função hash para checar a integridade da mensagem. OBJETIVO ESPECÍFICO • Realizar a pesquisa para a fundamentação teórica do tema. • Confeccionar documentação necessária para o desenvolvimento do sistema. • Desenvolver o sistema. • Testar o sistemas METODOLOGIA Foi realizado o aprofundamento no tema e o desenvolvimento do sistema utilizando pesquisas e consultas em livros e documentações na internet. Após efetuada a pesquisa, foi iniciada a descrição das teorias e métodos à serem utilizados para responder aos questionamentos e fundamentar o desenvolvimento do sistema. Para o desenvolvimento do sistema, foram utilizadas a linguagem de programação Python, a ferramenta de desenvolvimento PyCharm, da empresa JetBrains, e a aplicação de banco de dados MongoDB para o armazenamento de dados e informações. REFERENCIAL TEÓRICO
INFORMAÇÃO De acordo com a norma ABNT NRB ISO/IEC 27002(2005), a informação é um ativo que, como qualquer outro ativo importante, é essencial para os negócios de uma organização e consequentemente necessita ser adequadamente protegida.
Simp.TCC/Sem.IC.2017(12); 2725-2745 2726
A informação e os processos de apoio, sistemas e redes são importantes ativos para os negócios. Definir, alcançar, manter e melhorar a segurança da informação podem ser atividades essenciais para assegurar a competitividade, o fluxo de caixa, a lucratividade, o atendimento aos requisitos legais e a imagem da organização junto ao mercado. (ABNT NBR ISO/IEC 27002, 2005, p.X) SEGURANÇA DA INFORMAÇÃO De acordo com a norma ABNT NRB ISO/IEC 27002(2005), segurança da informação é a proteção da informação de vários tipos de ameaças para garantir a continuidade do negócio, minimizar o risco ao negocio, maximizar o retorno sobre os investimentos e as oportunidades de negócio. A segurança da informação é obtida a partir da implementação de um conjunto de controles adequados, incluindo políticas, processos, procedimentos, estruturas organizacionais e funções de software e hardware. Estes controles precisam ser estabelecidos, implementados, monitorados, analisados criticamente e melhorados, onde necessário, para garantir que os objetivos do negócio e de segurança da organização sejam atendidos. Convém que isto seja feito em conjunto com outros processos de gestão do negócio. (ABNT NBR ISO/IEC 27002, 2005, p.X)
PRINCÍPIOS DA SEGURANÇA DA INFORMAÇÃO Segundo Fontes (2015), a segurança da informação existe para proteger os recursos de informação, que possibilitam a organização atingir os seus objetivos institucionais e de negócio. De acordo com Coelho, Araújo e Bezerra (2015), os princípios da segurança da informação são: • Confidencialidade: compreende a proteção de dados transmitidos contra ataques passivos, isto é, contra acessos não autorizados; • Integridade: trata da garantia contra ataques ativos por meio de alterações ou remoções não autorizadas; • Disponibilidade: determina que recursos estejam disponíveis para acesso por entidades autorizadas, sempre que solicitados, representando a proteção contra perdas ou degradações; • Autenticação: está preocupada em garantir que uma comunicação é autêntica, ou seja, origem e destino podem verificar a identidade da outra parte envolvida na comunicação, com o objetivo de confirmar que a outra parte é realmente quem alega ser; • Não repúdio: compreende o serviço que previne uma origem ou destino de negar a transmissão de mensagens, isto é, quando dada mensagem é
enviada, o destino pode provar que esta foi realmente enviada por determinada origem, e vice-versa; • Conformidade: trata de limitar e controlar o acesso lógico/físico aos ativos de uma organização por meio dos processos de identificação, autenticação e autorização, com o objetivo de proteger os recursos contra acessos não autorizados; • Controle de Acesso: O uso da informação e dos recursos de informação deve estar de acordo com a legislação vigente, com as regras corporativas, com as exigências contratuais e com os demais regulamentos e normativos com os quais a organização precisa estar em conformidade. ORIENTAÇÃO A OBJETOS Ehgholm Junior (2013) entende o paradigma orientado a objetos como um paradigma avançado, já que ele representa uma nova forma de descrever a visão (modelagem) da realidade, de visualizar a organização de informações dentro de um sistema de computador e de realizar cálculos. Ainda segundo Ehgholm Junior (2013), a programação orientada a objetos possui como foco os objetos que existem na aplicação em desenvolvimento, já que eles formam um elemento natural para o modelo do problema que está sendo resolvido. (Ehgholm Junior, 2013, p.X) OBJETO Segundo Ehgholm Junior (2013), objetos são entidades da modelagem de sistemas que podem armazenar estados utilizando seus atributos e interagir com outros objetos por meio da troca de mensagens. Ainda segundo Ehgholm Junior (2013), os objetos são considerados a chave para o entendimento do paradigma orientado a objetos e são modelados como objetos da vida real, pois eles possuem estados/ atributos e prestam serviço.
Figura 1: Objeto
Fonte: Nogueira (2015)
CLASSE Segundo Ehgholm Junior (2013), as classes são considerados a chave para o entendimento do paradigma orientado a objetos e
Simp.TCC/Sem.IC.2017(12); 2725-2745 2727
são modelados como objetos da vida real, pois eles possuem estados/ atributos e prestam serviço. Ela pode ser vista como um template que representa um conjunto de objetos que compartilham os mesmos atributos, as operações e os relacionamentos, facilitando a implementação e os testes dos programas complexos, além da reutilização de código.
Figura 2: Classe
Fonte: UFCG (2015)
RELACIONAMENTO Segundo Ehgholm Junior (2013), relacionamento é a denominação dada às interdependências entre objetos que os unem para que utilizem uns os serviços dos outros. Assim como no mundo real, podemos ter que implementar em nossos sistemas o relacionamento entre os objetos que o compõe. Por exemplo, o objeto conta de restaurante é composto de objetos itens de consumo, sendo que cada item de consumo é a representação de um objeto consumível no restaurante, associado a uma quantidade de consumo. Ainda segundo ao Ehgholm Junior (2013) para representar o relacionamento entre objetos de nossos sistemas, o paradigma sugere relacionamentos, tais como associação, agregação, vínculo, generalização e especialização. UML Segundo Ehgholm Junior (2013), a linguagem unificada de modelagem (Unified Modeling Language – UML) foi criada na tentativa de disponibilizar ao mercado uma nova linguagem de modelagem orientada a objetos que pudesse ser adotada como novo padrão de linguagem de modelagem. A UML fornece diagramas de modelagem que podem ser utilizados nos processos do ciclo de desenvolvimento de software, documentando e especificando o sistema. É uma linguagem utilizada para documentar, especificar e até construir softwares, caso sejam utilizadas ferramentas
adequadas para tal como Enterprise Architect da Sparx Systems.
DIAGRAMA DE CASO DE USO Segundo Ehgholm Junior (2013), os diagramas de caso de uso mostram as funcionalidades do sistema e seus usuários, conhecidos na UML como atores do sistema, e são utilizados nas fases de levantamento de requisitos, análise e design. Devido ao fato de os diagramas de casos de uso mostrarem graficamente todas as funcionalidades a serem contempladas no sistema, eles podem ser considerados como um contrato com o cliente. Depois de devidamente aprovados por eles, tudo o que não estiver representado nesses diagramas não faz parte do escopo do projeto, devendo ser tratado como mudança de escopo, impactando, portanto, nos prazos, custos e riscos do projeto.
Figura 3: Diagrama de casos de uso de um
sistema de restaurante
Fonte: Ehgholm Junior (2013)
DIAGRAMA DE CLASSE Segundo Ehgholm Junior (2013), o diagrama de classes é um dos mais importantes do paradigma orientado a objetos e pode ter sua definição iniciada já na fase de análise, apenas identificando as classes candidatas. Ainda conforme Ehgholm Junior (2013), esse diagrama registra o modelo de domínio da aplicação, especificamente o relacionamento dos objetos de dados com o sistema, o relacionamento entre eles e as operações que cada um deles pode executar. De acordo com Ehgholm Junior (2013), as classes podem ser vistas como templates de objetos similares, possuindo os dados e as ações dos objetos que elas representam. Desse modo, as classes capturam os objetos em detalhes. Figura 4: Diagrama de classes candidatas de um
sistema de restaurante.
Fonte: Ehgholm Junior (2013)
Simp.TCC/Sem.IC.2017(12); 2725-2745 2728
DIAGRAMA DE SEQUENCIA Segundo Ehgholm Junior (2013), o diagrama de sequencia é algumas vezes utilizado na fase de levantamento de requisitos, mas normalmente é produzido na fase de design para mostrar objetos em movimento e a interação entre eles.
Ainda segundo Ehgholm Junior (2013), esse diagrama pode ser muito útil na disciplina de testes ao se criar planos de teste e executar testes no sistema. Como todo diagrama UML, ele pode ser tão completo ou tão simplificado quanto se julgue necessário.
Figura 5: Diagrama de sequencia de caso de uso Encerrar conta de restaurante.
Fonte: Ehgholm Junior (2013) DIAGRAMA DE ESTADO Segundo Pressman (2011), o diagrama de estado modela os estados de um objeto, as ações executadas dependendo daqueles estados e as transições entre os estados do objeto. O comportamento de um objeto em determinado instante frequentemente depende do estado do objeto, ou seja, os valores de suas variáveis naquele instante. Como um exemplo trivial, considere um objeto com uma variável de instancia
booleana. Quando solicitado a executar uma operação, o objeto pode realizar algo se a variável for verdadeira (true) e realizar outra coisa se for falsa (false). Conforme Pressman (2011), um diagrama de estado o ajudará a descobrir situações perdidas ou inesperadas. Com um diagrama de estado, é relativamente fácil garantir que todos os eventos possíveis para todos os estados possíveis foram levados em conta.
Figura 6: Diagrama de estado Espera telefônica.
Fonte: Pressman (2011)
Simp.TCC/Sem.IC.2017(12); 2725-2745 2729
LINGUAGEM PYTHON Segundo Neil Anuskiewicz(2016), Python é uma linguagem de programação orientada a objeto clara e poderosa. Segue alguns dos notáveis recursos do Python: • Usa uma sintaxe elegante, tornando programas que você escreve fácil de ler; • É uma linguagem fácil de usar e que torna simples o trabalho do seu programa. Isso torna o Python ideal para o desenvolvimento de protótipos e outras tarefas de programação ad hoc, sem comprometer a manutenção. • Vem com uma grande biblioteca que suporta várias tarefas de linguagens de programação, • O modo interativo do Python torna fácil testar pequenos trechos de código. Há também um ambiente de desenvolvimento agrupado chamado IDLE. • É facilmente estendido adicionando novos módulos implementados em uma linguagem compilada, tal como C ou C++. • Também pode ser incorporado a uma aplicação para fornecer uma interface programável. • Roda em qualquer sistema, incluindo Mac OS X, Windows, Linux e Unix. • É software livre em dois sentidos. Não custa nada pra baixar ou usar o Python, ou para inclui-lo em seu aplicativo. O Python também pode ser livremente modificado e redistribuído, porque enquanto a linguagem está protegida por direitos autorais, ela está disponível sob licença de código aberto. Conforme Menezes(2014), Python vem crescendo em varias áreas da computação, como inteligencia artificial, banco de dados, biotecnologia, animação 3D, aplicativos móveis (celulares), jogos e mesmo como plataforma WEB. FLASK Segundo Copperwaite e Leifer (2015), Flask é um framework web leve escrito em Python. O Flask começou como uma piada de 1º de abril que se tornou um “azarão” no mundo dos frameworks web em Python. Atualmente, é um dos frameworks web em Python mais utilizadas para criação de empresas e está se tornando comumente aceita como ferramenta perfeita para soluções rápidas e simples na maioria das empresas. Na figura 7 tem-se um exemplo de uma aplicação Flask.
Figura 7: Exemplo HelloWorld em Flask
Fonte: Grinberg MONGODB Conforme Chodorow (2013), o MongoDB é um banco de dados poderoso, flexivel, escalavel e para propositos gerais. Ele combina a capacidade de dimensionar recursos como índices secundários, consultas de intervalo, classificação, agregações e índices geoespaciais. Ainda de acordo com Chodorow (2013), o MongoDB é um banco de dados orientado à documentos, não relacional. O banco de dados orientado a documentos substitui o conceito de “linha” por um modelo mais flexível, o “documento”. Ao permitir documentos e array incorporados, a abordagem orientada a documentos permite representar relacionamentos hierárquicos complexos com um único registro. Isso se encaixa naturalmente na forma como os desenvolvedores em linguagens orientadas a objetos modernos pensam sobre seus dados. CRIPTOGRAFIA SIMÉTRICA Segundo Starllings (2008), é uma forma de criptossistema em que a criptografia e a decriptografia são realizadas usando a mesma chave. Ela também é conhecida como criptografia convencional. A criptografia simétrica, também chamada de criptografia convencional ou criptografia de chave única, era o único tipo de criptografia em uso antes do desenvolvimento da criptografia por chave pública na década de 1970. Esse continua sendo, de longe, o mais usado dos dois tipos de criptografia.
Figura 8: Funcionamento simples da criptografia simétrica
Simp.TCC/Sem.IC.2017(12); 2725-2745 2730
Fonte: Starllings
CRIPTOGRAFIA ASSIMÉTRICA Segundo Starllings (2008), a criptografia assimétrica é uma forma de criptossistema em que a criptografia e a decriptografia são realizadas usando diferentes chaves – uma chave pública e uma chave privada. Ela também é conhecida como criptografia de chave pública. A criptografia de chave pública oferece uma mudança radical em relação a tudo o que havia sido
feito. Por um lado, os algoritmos de chave publica são baseados em funções matemáticas, em vez de na substituição e permutação. Mais importante, a criptografia de chave pública é assimétrica, envolvendo o uso de duas chaves separadas, diferentemente da criptografia simétrica, que usa apenas uma chave. O uso das duas chaves tem profundas consequências nas áreas de confidencialidade, distribuição de chaves e autenticação.
Figura 9: Criptografia de chave pública.
Fonte: Starllings FUNÇÃO HASH Segundo Starllings (2008), uma função hash mapeia a mensagem de tamanho variável em um valor de hash de tamanho fixo, ou um resumo de mensagem (message digest). Ainda segundo Starllings (2008), o código hash é uma função de todos os bits da mensagem e oferece uma capacidade de detecção de erros: uma mudança em qualquer bit ou bits na mensagem resulta em uma mudança no código hash. ALGORITMO BLOWFISH
Segundo Schneier (1995), o Blowfish uma cifra de bloco que criptografa dados em blocos de 8 bytes. Ainda segundo Schneier (1995), O algoritmo consiste em duas partes: uma parte de expansão de chave e uma parte de criptografia de dados. A expansão da chave converte uma chave de comprimento variável de no máximo 56 bytes (448 bits) em vários arrays de sub-chaves totalizando 4168 bytes.
Figura 10: Encriptação Blowfish.
Simp.TCC/Sem.IC.2017(12); 2725-2745 2731
Fonte: Study
ALGORITMO RSA Segundo Starllings (2008), o RSA, esquema desenvolvido por Ron Rivest, Adi Shamir e Len Adleman, é uma cifra de blocos em que o texto claro e o texto cifrado são inteiros entre 0 e n-1, para algum n. Ainda segundo Starllings (2008), o RSA é uma criptografia de chave pública, com uma chave pública PU = {e, n} e uma chave privada PR = {d, n}. Para que esse algoritmo seja satisfatório para a criptografia de chave pública, o seguintes requisitos precisam ser atendidos: • Ser possível encontrar valores de e, d, n tais que Med mod n = M, para todo M < n; • Ser relativamente fácil de calcular Me mod n e Cd mod n para todos os valores de M < n; • Ser inviável determinar d dados e e n.
Figura 11: Geração de chaves RSA.
Fonte: Starllings ALGORITMO SHA256 Segundo Lamberger e Mendel (2011), SHA-256 é uma função de hash iterada que processa blocos de mensagens de entrada de 512 bits e produz um valor de hash de 256 bits. Ele basicamente consiste em duas partes: a expansão da mensagem e a transformação de atualização do estado. Conforme Nxtwiki, a hash SHA256 tem sempre 64 caracteres, independentemente de quão grande são os dados originais. Cada carácter é ou um dígito ou uma letra de A a F, e representa 4 bits de informação. Então, todo o hash representa 64x4=256 bits de informação, de onde vem o 256 em SHA256. DOCUMENTAÇÃO DE ANALISE DE SISTEMA
DOCUMENTO DE VISÃO FINALIDADE Esse documento tem por finalidade coletar, analisar e definir as necessidades e características do sistema Mensageiro Secreto, focando principalmente nos recursos necessários para os desenvolvedores e usuário final e como esses requisitos foram utilizados no sistema. POSICIONAMENTO OPORTUNIDADE DE NEGÓCIO Durante a troca de informações entre usuário, existe a possibilidade a interceptação e coleta da informação por terceiros. O sistema “Mensageiro Secreto” foi desenvolvido visando resolver esse problema, adicionando segurança e confiabilidade na troca de mensagens. Os usuários do sistema poderão trocar informações sigilosas entre si sem se preocupar com roubos ou perda de informações pois as mensagem são criptografadas e comparadas com HASH.
DESCRIÇÃO DO PROBLEMA
Quadro 1. Descrição do problema
O problema Interceptação e roubo de mensagens trocadas entre usuários. afeta Os usuários envolvidos na troca da mensagem. cujo impacto é Roubo de informações sigilosas, utilização indevida da
informação interceptada, comprometimento do negócio. uma boa solução seria Garantir o sigilo da informação trocada e que somente os
usuários possam ter acesso a informação. Fonte: Autor
SENTENÇA DE POSIÇÃO DO PRODUTO
Quadro 2. Posição do produto.
Simp.TCC/Sem.IC.2017(12); 2725-2745 2732
Para Usuário que desejam trocar informações sigilosas Quem Necessitar de canal seguro para troca de informações. O Mensageiro Secreto É um sistema web de criptografia. Que Oferece uma interface amigável, criptografia, verificação de
integridade e canal seguro para troca de informações. Diferente de Outros sites e sistemas com criptografia não confiáveis e passiveis
de falhas e perda de informações. Nosso produto Garante a troca de informações com sigilo, confiança e
integridade, por meio de uma interface amigável.
Fonte: Autor ESCOPO DO PRODUTO O sistema funciona no modelo cliente/servidor, é acessado via navegador, e funciona em qualquer navegador atual. Não é necessário efetuar instalação na máquina do usuário. O processo de criptografia e armazenamento das mensagens é todo realizado no servidor do sistema, bem como o processo de
envio e acesso às informações enviadas e recebidas. DESCRIÇÃO DOS ENVOLVIDOS E DOS CLIENTES DEMOGRAFIA DO MERCADO O mercado-alvo do sistema compreende de qualquer pessoa ou empresas com informações sigilosas, de qualquer ramo.
RESUMO DOS ENVOLVIDOS
Quadro 3. Resumo dos Envolvidos Nome Descrição Responsabilidades Usuário Comum Usuário final do sistema
Mensageiro Secreto Criar perfil, enviar mensagens.
Fonte: Autor RESUMO DOS CLIENTES
Quadro 4. Resumo dos Clientes. Nome Descrição Envolvido Usuário Comum Pessoas interessadas em enviar e
receber mensagens com segurança e confiabilidade.
Auto-representado.
Fonte: Autor AMBIENTE DOS CLIENTES O usuário poderá utilizar o sistema do seu computador, de qualquer local com acesso a Internet, utilizando seu login e senha. O navegador deverá atender os requisitos para carregar a interface gráfica e executar os scripts web. PERFIS DOS ENVOLVIDOS USUÁRIO COMUM
Quadro 5. Usuário Comum. Descrição Pessoa devidamente cadastrada, interessada no serviço de envio de
informação de forma segura e confiável. Tipo Usuário primário Responsabilidades Utilizar os serviços oferecidos no sistema “Mensageiro Secreto” Critérios de Sucesso Concretizar o envio e o recebimento de informações de forma segura. Envolvimento Fornecer feedback regular da utilização do sistema. Produtos Liberados Comentários/Problemas Nenhum
Fonte: Autor
Simp.TCC/Sem.IC.2017(12); 2725-2745 2733
PRINCIPAIS NECESSIDADES DOS ENVOLVIDOS OU DOS CLIEN TES
Quadro 6. Principais necessidades dos envolvidos ou dos clientes. Necessidade Prioridade Preocupações Solução Atual Soluções Propostas Cadastrar perfil Media Dados incorretos e
vazamento de dados Nenhuma Permitir apenas um perfil
por usuário Adicionar contatos
Media Dados incorretos Nenhuma Permitir adicionar usuários verdadeiros
Enviar informação criptografada
Alta Criptografia, autenticidade e entrega
Nenhum Fornecer criptografia segura e autenticidade na informação e
Ler de informação criptografada
Alta Criptografia, autenticidade e entrega
Nenhuma Fornecer criptografia segura e autenticidade na informação e
Fonte: Autor ALTERNATIVAS E CONCORRÊNCIA No momento, não existem empresas que garantam o envio, armazenamento e acesso de informações de forma confidencial. RESTRIÇÕES Nenhuma restrição. ESPECIFICAÇÃO DE REQUISITOS ER aFI Mseg.001
Quadro 7. Especificação de Requisito – Criptografar ER aFI MSeg.001 Criptografar Descrição O sistema deve ser capaz de realizar a criptografia a mensagem
informada pelo usuário. Descrição do risco Risco Prioridade
O sistema não realizar a criptografia. Alto Alto Usuário
envolvido Usuário
Fonte: Autor ER aFI Mseg.002
Quadro 8. Especificação de Requisito – Decriptografar ER aFI MSeg.002 Decriptografar Descrição O sistema deve ser capaz de realizar a decriptação da mensagem
recebida pelo usuário. Descrição do risco Risco Prioridade
O sistema não realizar a descriptografia. Alto Alto Usuário
envolvido Usuário
Fonte: Autor ER aFI Mseg.003
Quadro 9. Especificação de Requisito – Acessar ER aFI MSeg.003 Acessar Descrição O sistema deve permitir autenticação do usuário.
Descrição do risco Risco Prioridade O sistema não realizar a autenticação. Alto Alto
Usuário envolvido
Usuário
Fonte: Autor
Simp.TCC/Sem.IC.2017(12); 2725-2745 2734
ER aFI Mseg.004
Quadro 10. Especificação de Requisito – Cadastrar Usuário ER aFI MSeg.004 Cadastrar Usuário Descrição O sistema deve ser capaz de permitir o cadastro de novos usuários
Descrição do risco Risco Prioridade O sistema não realizar a o cadastro. Alto Alto
Usuário envolvido
Usuário
Fonte: Autor ER aFI Mseg.005
Quadro 11. Especificação de Requisito – Selecionar Contato ER aFI MSeg.005 Selecionar Contato Descrição O sistema deve ser capaz de permitir que o usuário selecione ou
adicione um contato. Descrição do risco Risco Prioridade
O sistema não permitir selecionar o contato. Alto Alto Usuário
envolvido Usuário
Fonte: Autor ER aFI Mseg.006
Quadro 12. Especificação de Requisito – Enviar Mensagem ER aFI MSeg.006 Enviar Mensagem Descrição O sistema deve permitir o envio da mensagem criptografada.
Descrição do risco Risco Prioridade O sistema não efetuar o envio da mensagem. Alto Alto
Usuário envolvido
Usuário
Fonte: Autor ER aFI Mseg.007
Quadro 13. Especificação De Requisito – Acessar Caixa De Mensagens ER aFI MSeg.007 Acessar Caixa de Mensagens Descrição O sistema deve ser capaz de prover o acesso a caixa de mensagens
recebidas e enviadas. Descrição do risco Risco Prioridade
O sistema não permitir a escrita da mensagem. Alto Alto Usuário
envolvido Usuário
Fonte: Autor ER aFI MSeg.008
Quadro 14. Especificação De Requisito – Visualizar Mensagem ER aFI MSeg.008 Visualizar Mensagem Descrição O sistema deve ser capaz de permitir a visualização da mensagem
selecionada. Descrição do risco Risco Prioridade
O sistema não permitir a escrita da mensagem. Alto Alto Usuário
envolvido Usuário
Fonte: Autor DESCRIÇÃO DOS CASOS DE USO E ATORES CASOS DE USO Criptografar
Caso de uso responsável por realizar a criptografia da mensagem à ser enviada pelo usuário.
Simp.TCC/Sem.IC.2017(12); 2725-2745 2735
Decriptografar Caso de uso responsável por realizar a decriptação da mensagem recebida pelo usuário. Acessar Caso de uso responsável que permite o usuário efetuar a autenticação no sistema. Cadastrar Usuário Caso de uso responsável por permitir o cadastro do usuários no sistema. Selecionar Contato Caso de uso responsável por realizar a adição/seleção do contato no sistema. Enviar Mensagem
Caso de uso responsável por efetuar o envio da mensagem da mensagem. Acessar Caixa de Mensagens Caso de uso responsável por permitir o acesso às mensagens recebidas Visualizar Mensagem Caso de uso responsável por permitir a leitura da mensagem selecionada. DESCRIÇÃO DOS ATORES Usuário Este ator é uma pessoa que atua no sistema para enviar e receber as mensagens criptografadas. Deve efetuar o cadastro e o login no sistema para a sua utilização
DIAGRAMA GERAL DE CASOS DE USO
Figura 12: Diagrama Geral de Casos de Uso.
Fonte: Autor
Simp.TCC/Sem.IC.2017(12); 2725-2745 2736
DETALHAMENTO DOS CASOS DE USO UC[01] – Criptografar
Figura 13: Detalhamento de Caso de Uso - Criptografar
Fonte: Autor
Quadro 15. Fluxo de Eventos do Use Case UC[01] – Criptografar. Nome da Use Case UC[01] – CRIPTOGRAFAR MENSAGEM Descrição O sistema deve ser capaz de criptografar a mensagem. Requisitos Associados ER aFI MSeg.001; ER aFI MSeg.003; ER aFI MSeg.005; ER aFI
MSeg.006; ER aFI MSeg.007 Pré Condições Usuário cadastrado; Usuário autenticado; Chave Publica do contato;
Mensagem fornecida. Pós Condições Mensagem criptografada Atores Usuário
Fluxo Principal Ações Recebidas Ações Realizadas
1. O usuário efetua o cadastro no sistema. 3. O usuário efetua o acesso no sistema. 5. O usuário seleciona um contato para enviar a mensagem. 7. O usuário escreve a mensagem e pressiona enviar.
2. O sistema grava as informações do usuário, hash de autenticação e gera as chaves publica e privada. 4. O sistema carrega a tela principal do sistema. 6. O sistema carrega a tela de escrita de mensagem. 8. O sistema criptografa a mensagem e envia para o contato selecionado.
Fonte: Autor UC[02] – Decriptografar
Figura 14: Detalhamento de Caso de Uso – Decriptografar
Simp.TCC/Sem.IC.2017(12); 2725-2745 2737
Fonte: Autor
Quadro 16. Fluxo de Eventos do Use Case UC[02] – Decriptografar Nome da Use Case UC[02] – DECRIPTOGRAFAR Descrição O sistema deve ser capaz de decriptografar a mensagem. Requisitos Associados ER aFI MSeg.002; ER aFI MSeg.003; ER aFI MSeg.008; ER aFI
MSeg.009 Pré Condições Usuário cadastrado; Usuário autenticado; Chave Privada do Usuário;
Mensagem Recebida. Pós Condições Mensagem decriptada Atores Usuário
Fluxo Principal Ações Recebidas Ações Realizadas
1. O usuário efetua o acesso no sistema. 3. O usuário seleciona a opção “Caixa de Mensagens”. 5. O usuário seleciona a mensagem para leitura.
2. O sistema carrega a tela principal do sistema. 4. O sistema carrega a tela de “Caixa de Mensagens” 6. O sistema carrega a tela de visualização da mensagem selecionada.
Fonte: Autor
Simp.TCC/Sem.IC.2017(12); 2725-2745 2738
DIAGRAMA DE ESTADO Diagrama de Estado – Enviar Mensagem
Figura 15: Diagrama de Estado – Enviar Mensagem
Fonte: Autor
Simp.TCC/Sem.IC.2017(12); 2725-2745 2739
Diagrama de Estado – Ler Mensagem
Figura 16: Diagrama de Estado – Ler Mensagem
Fonte: Autor
Simp.TCC/Sem.IC.2017(12); 2725-2745 2740
DIAGRAMA DE CLASSE
Figura 17: Diagrama de Classe Fonte: Autor
Simp.TCC/Sem.IC.2017(12); 2725-2745 2741
DIAGRAMA DE SEQUÊNCIA Diagrama de Sequencia – Acesso
Figura 18: Diagrama de Sequencia - Acesso
Fonte: Autor
Simp.TCC/Sem.IC.2017(12); 2725-2745 2742
Diagrama de Sequencia – Adicionar Contato Observação: Este diagrama de sequencia tem como requisito o Diagrama de Sequencia – Acesso
Figura 19: Diagrama de Sequencia – Adicionar Contato
Fonte: Autor
Simp.TCC/Sem.IC.2017(12); 2725-2745 2743
Diagrama de Sequencia – Enviar Mensagem Observação: Este diagrama de sequencia tem como requisito o Diagrama de Sequencia – Acesso e Diagrama de Sequência – Adicionar Contato
Figura 20: Diagrama de Sequencia – Enviar Mensagem
Fonte: Autor
Simp.TCC/Sem.IC.2017(12); 2725-2745 2744
Diagrama de Sequencia – Ler Mensagem Observação: Este diagrama de sequencia tem como requisito o Diagrama de Sequencia – Acesso, Diagrama de Sequência – Adicionar Contato e Diagrama de Sequencia – Enviar Mensagem.
Figura 21: Diagrama de Sequencia – Ler Mensagem
Fonte: Autor
Simp.TCC/Sem.IC.2017(12); 2725-2745 2745
CONCLUSÃO Esse trabalho teve como objetivo utilizar a criptografia afim de mostrar a sua importância na troca de informações entre usuários ou empresas por meios digitais, levando em conta a quantidade de ataques cibernéticos afim de interceptar e roubar informações. Para tal, foi criado um sistema onde o usuário pode enviar e receber mensagens criptografadas, onde é necessário informar a sua senha para o acesso a informação de forma clara, evitando assim que terceiros não autorizados tenham acesso a informação. Conclui-se que o sistema cumpriu o seu objetivo de proteger a informação dos usuários, mostrando a importância da criptografia na troca de informações em meio digital. REFERÊNCIAS BIBLIOGRÁFICAS ASSOCIAÇÃO BRASILEIRA DE NORMAS TECNICAS. ABNT NBR ISO/IEC 27002: Tecnologia da Informação - Técnicas de Segurança - Código de prática para a gestão da segurança da informação - Requisitos. Rio de Janeiro, 2005. FONTES, Edison luiz Gonçalves. Políticas de Segurança da Informação - 1 Ed. Rio de Janeiro: RNP/ESR, 2015. COELHO, Flavia E. S.; ARAÚJO, Luiz Geraldo S.; BEZERRA, Edson, K. Gestão da Segurança da Informação - NBR 27001 e NBR 27002 - 2 Ed. Rio de Janeiro: RNP/ESR, 2014. ENGHOLM JR., Helio. Análise e Design - Orietados a Objetos. 1 Ed. São Paulo: Novatec, 2013. PRESSMAN, Roger S. Engenharia de Software - Uma abordagem Profissional. Tradução: Ariovaldo Griesi, Mario Moro Fecchio. 7 Ed. Porto Alegre/RS: AMGH Editora, 2011. ANUSKIEWICZ, Neil. Beginners Guide/Overview. Disponivel em: . Acesso em 08/dez. 2017. MENEZES, Nilo Ney Coutinho. Introdução à Programação com Python - Algoritmos e lógica de programação para iniciantes. 2 Ed. São Paulo/SP: Novatec, 2014. COPPERWAITE, Matt; LEIFER, Charles. Learning Flask Framework - Build dynamic, data-driven websites and modern web applications with Flask. Tradução: Autor. 1 Ed. Birmingham/UK: Packt Publishing, 2015.
CHODOROW, Kristina. MongoDB - The Definitive Guide. Tradução: Autor. 2 Ed. Sebastopol/CA: O’Reilly Media, 2013. STALLING, William. Criptografia e Segurança de Redes - Princípios e Práticas. 4 Ed. Tradução: Daniel Vieira. São Paulo/SP: 2008 LAMBERGER, Mario; Mendel, Florian. Higher-Order Differential Attack on Reduced SHA-256. Tradução: Autor. Disponivel em: . Acesso em 09/dez, 2017. SCHNEIER, Bruce. The Blowfish Encryption Algorithm - One Year Later. Tradução: Autor. Disponivel em: . Acesso em 09/dez, 2017.