21
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.

2 RODRIGO DE LIMA VALENTEnippromove.hospedagemdesites.ws/anais_simposio/... · SEGURANÇA DA INFORMAÇÃO De acordo com a norma ABNT NRB ISO/IEC 27002(2005), segurança da informação

  • 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.