Baixe o app para aproveitar ainda mais
Prévia do material em texto
CIENCIA DA COMPUTAÇÃO ****** ***** Sumário 1. Objetivo.............................................................................................................. 2. Introdução........................................................................................................... 3. Criptografia ........................................................................................................ 4. Técnicas criptográficas mais usadas e conhecidas....................................... 5. Dissertação ......................................................................................................... 6. Estruturação, Conceitos e Fundamentação..................................................... 7. Benefícios em relação as técnicas anteriores.................................................. 8. Aplicações que fazem ou fizeram uso da técnica............................................ 9. Discussão comparativa entre as técnicas mais usadas.................................. 10. Vulnerabilidades e Falhas................................................................................ 11. Melhorias e propostas de implementações................................................... 1.OBJETIVO Objetivos gerais Pesquisar e expor os conceitos e aplicações de criptografia para que uma Pessoa leiga e interessada no assunto possa compreender de forma clara e assim Futuramente aplicar de alguma forma seus conhecimentos adquiridos através deste Trabalho. Desenvolver um software em linguagem C aplicando e melhorando a técnica Escolhida Objetivos específicos • Pesquisar e compreender os métodos e usos da criptografia. • Avaliar as técnicas e selecionar uma. • Mostrar uso e aplicações da técnica selecionada. • Encontrar os benefícios da técnica. • Expor aplicações que fazem ou fizeram uso da técnica. • Mostrar as falhas da técnica selecionada. • Desenvolver um software em linguagem C, implantando melhorias baseadas na técnica original. • Explicar e apresentar o funcionamento do software. 2. INTRODUÇÃO Criptografia, derivado do grego “escrita oculta”, é o estudo das técnicas de ocultação de informações. Esta é uma área tradicionalmente ligada à segurança da informação, remontando a um passado de milhares de anos. A criptografia atual está fortemente ligada à Ciência da Computação, dada a enorme quantidade de cálculos e manipulações realizadas a cada operação de codificação e decodificação. De forma recíproca, a segurança de algumas técnicas criptográficas se baseiam na computabilidade dos algoritmos aplicados – dado um computador, ou grupo de computadores, com poder suficiente, algumas técnicas passam a ser quebradas com facilidade. Durante o trabalho serão citados diversos autores especialistas na área para tentar mostrar e esclarecer aos leigos e interessados no assunto os conceitos básicos, funções e aplicações das técnicas criptográficas. Apresentando as técnicas mais utilizadas e conhecidas atualmente, expondo também suas vulnerabilidades e falhas assim como suas vantagens. Escolhemos uma das técnicas, e desenvolvemos um software, em linguagem C, como exemplo. Durante a terceira etapa do nosso trabalho, explicamos os conceitos gerais da criptografia, baseados em especialista que serão citados ao longo do trabalho. Durante a quarta etapa, são apresentadas as técnicas mais utilizadas, explicando seus conceitos e aplicações. Durante a quinta etapa iremos expor a estrutura, fundamentos e conceitos da técnica escolhida, assim como iremos falar sobre suas falha e vulnerabilidades benefícios. E por fim mostrar as aplicações que fizeram uso da técnica e compará-la com as demais. Durante a sexta etapa, explicaremos o funcionamento do software desenvolvido como exemplo. Durante a sétima etapa, mostrarem através de prints o funcionamento do software em um computador. E por fim, durante a oitava etapa, deixaremos as nossas conclusões sobre todo o trabalho. 3.CRIPTOGRAFIA O que é a criptografia Segundo Tanenbaum e Wetherall (2011, p . 481 ) a palavra criptografia vem do grego kryptos (escondido) + grafo (escrita). É um conjunto de técnicas que permitem tornar incompreensível uma mensagem originalmente escrita com clareza, de forma a permitir normalmente que apenas o destinatário a decifre e compreenda. O que faz a criptografia Fred (2011) em sua entre vista para o boletim OUCH! explica que a criptografia funciona utilizando um a cifra e uma chave para converter um texto simples em um texto criptografado. A cifra é a receita geral da criptografia e sua chave torna seu dado encriptado único – somente as pessoas com a sua chave única e a mesma cifra podem decifrá-lo. Fred (2011) completa dizendo que as chaves são normalmente uma longa sequência de números protegidos por um mecanismo comum de autenticação como senhas, “tokens”, ou biometria como sua impressão digital. Propriedades fundamentais da criptografia Disponibilidade Propriedade de que a informação esteja acessível e utilizável sob demanda por uma pessoa física ou determinado sistema, órgão ou entidade Integridade Propriedade de que a informação não foi modificada, inclusive quanto à origem e ao destino, ou destruída Confidencialidade Propriedade de que a informação não esteja disponível ou revelada a pessoa física, sistema, órgão ou entidade não autorizado e credenciado. Autenticidade Propriedade de que a informação foi produzida, expedida, modificada ou destruída por determinada pessoa física, ou por determinado sistema, órgão ou entidade. A importância da criptografia Segundo Peixinho, Fonseca e Lima (2013, p. 142) a criptografia, desde a sua existência, teve um papel muito importante para a sociedade, pois nos tempos antigos. Com o fim da Primeira Guerra Mundial, foi preciso criar mensagens criptografadas para caso o inimigo pegue a mensagem de alguma forma eles não conseguirão ler a mensagem devido a sua codificação Stallings (2007, p . 15) relata que atualmente a criptografia é a ferramenta mais importante para a segurança de redes e das comunicações. Se não existisse a criptografia, a internet não seria tanto segura quanto ela é, pois se mesmo com os avanços da criptografia, milhares de dados pessoais dos usuários são roubados diariamente, e é por isso que há a necessidade da criptografia evoluir cada vez mais, para estar sempre dificultando o roubo de dados. Criptoanálise Tâmega (2003, p. 3 6) explica que a criptoanálise consiste em estratégias matemáticas com o objetivo de quebrar um algoritmo de criptografia. Como não há um meio matemático de se provar que esse algoritmo é o u não seguro, então, ele é seguro até que alguém consiga quebrá-lo. Tâmega (2003, p. 36) fala que a maior dificuldade que um criptoanalista possui ao tentar quebrar um algoritmo está no número de chaves que este utiliza, pois quanto maior o número de chaves, maior a dificuldade de se conseguir obter sucesso na criptoanálise de um determinado sistema. Tâmega (2003, p. 36) ainda completa dizendo que um sistema que seja impossível de se quebrar fica conhecido como sistema de segurança perfeita. E para isso é necessário que o número de chave seja m aior do que o tamanho do comprimento do texto legível e que a probabilidade de ocorrência entre elas seja a mesma. Tâmega (2003, p. 37) ainda descreve alguns tipos de ataques a texto criptografados. Ataque por texto ilegível Ocorre quando um criptoanalistaconsegue obter o texto legível somente estudando o texto criptografado. Esse tipo de ataque geralmente serve para quebrar algoritmos baseados em monossubstituição. O criptoanalista verifica a frequência em que as letras aparecem no texto criptografado e deduz qual seriam elas no texto original. Ataque por combinação Ocorre quando o criptoanalista possui um a parte do texto criptografado e um a parte do texto original, por meio disso ele consegue chegar ao método utilizado para criptografar o texto. Ataque por encriptação O criptoanalista tem acesso a chave de codificação, criptografa um texto qualquer e utiliza o método da combinação para tentar achar algum texto criptografado. Ou então usa o método da comparação, que consiste em criptografar vários textos e os compara. 4.TÉCNICAS CRIPTOGRÁFICAS MAIS UTILIZADAS DES Data Encryption Standard (DES) é uma das primeiras criptografias utilizadas e é considerada uma proteção básica de poucos bits (cerca de 56 ). O seu algoritmo é o mais difundido mundialmente e realiza 16 ciclos de codificação para proteger uma informação. A complexidade e o tamanho das chaves de criptografia são medidos em bits. Quando uma criptografia é feita com 128 bits, significa que 21 28 é o número de chaves possíveis para decifrá-la. Atualmente, essa quantidade de bits é considerada segura, mas quanto maior o número, mais elevada será a segurança Quando dizemos que um bloco foi criptografado em bits, significa que um conjunto de informações passou pelo mesmo processo da chave, tornando-se ilegível para terceiros O DES pode ser decifrado com a técnica de força bruta (o programa testa as possibilidades de chave automaticamente durante horas). Por essa razão, os desenvolvedores precisam buscar alternativas de proteção mais complexas além do DES. 3DES O Triple DES foi originalmente desenvolvido para substituir o DES, já que os hackers aprenderam a superá-lo com relativa facilidade. Houve um tempo em que o 3DES era o padrão recomendado para segurança Essa criptografia recebe esse nome pelo fato de trabalhar com três chaves de 56 bits cada, o que gera uma chave com o total de 168 bits. Especialistas no tema argumentam que uma chave de 112 bits é suficiente para proteger os dados DESX Essa é outra variante do DES e trata-se de uma solução bastante simples do algoritmo, mas que aumenta exponencialmente a resistência contra ataques de força bruta sem elevar a sua complexidade computacional Basicamente, adicionam-se 64 bits antes da encriptação, o que aumenta a proteção de 120 bits contra força bruta. Atualmente, essa tecnologia não é mais imune contra ataques mais sofisticados, como criptoanálises (O programa evolui acada tentativa de decifração). AES Advanced Encryption Standard (AES) — ou Padrão de Criptografia Avançada, em português — é o algoritmo padrão do governo dos Estados Unidos e de várias outras organizações. Ele é confiável e excepcionalmente eficiente na sua forma em 128 bits, mas também é possível usar chaves e 192 e 25 6 bits para informações que precisam de proteção maior. O AES é amplamente considerado imune a todos os ataques, exceto aos ataques de força bruta, que tentam decifrar o código em todas as combinações possíveis em 128, 192 e 256 bits, o que é imensamente difícil na atualidade CAMELLIA Desenvolvido em 2000, Camellia é uma criptografia que decifra blocos de informações. Trata-se de uma tecnologia com níveis de segurança bastante semelhantes ao AES, já que pode ser processada em 128, 192 e 256 bits. Camellia pode ser implementada tanto em softwares (programas) quanto hardwares (peças físicas de computador). Também é compatível com tecnologias mais econômicas de 8 bits (smartcards, sistemas de operação em tempo real etc.)até com processadores mais potentes de 32 bits (computadores de mesa) RSA Rivest-Shamir-Adleman (RSA) foi um dos pioneiros em relação a criptografia de chave pública, seu nome é composto pelos sobrenomes de seus criadores, que também são fundadores da companhia RSA Data Security. Esse é considerado um dos algoritmos mais seguros do mercado, po ressa razão também foi o primeiro a possibilitar a criptografia na assinatura digital. O RSA funciona da seguinte forma: Ele cria duas chaves diferentes, uma pública e outra privada (que deve ser mantida em sigilo). Todas as mensagens podem ser cifradas pela pública, mas somente decifradas pela privada. Atualmente, essa tecnologia é utilizada em operações rotineiras, como envio de e- mails, compras online, assinatura digital, entre outras atividades. Blowfish Esse é outro algoritmo desenvolvido para substituir o DES. É uma cifra simétrica que divide as informações em blocos de 64 bits e criptografa cada um deles individualmente. O Blowfish é conhecido por sua velocidade de encriptação e efetividade em geral. Trata-se de uma tecnologia bastante segura, pois há estudiosos no assunto que afirmam que o código não pode ser quebrado. Ele é completamente grátis, e qualquer indivíduo pode conseguir uma cópia de seu código-fonte, alterar e utilizá-lo em diferentes programas. De forma geral, o Blowfish é usado em plataformas de e-commerce para garantir segurança nos pagamentos e proteger senha de acesso dos usuários. Twofish O Twofish é uma variação do Blowfish e também consiste na cifração de blocos simétricos. A diferença é que ele é formado por blocos de 128 bits e chaves de até 256 bits. A tecnologia é considerada uma das mais rápidas de seu tipo e é ideal para prover segurança de softwares e hardwares. Seu código-fonte também é gratuito, podendo ser manipulado e utilizado por qualquer programador. Existe outra variação da mesma criptografia chamada Threefish, a diferença é que os tamanhos dos blocos são de 256, 512 e 1024 bits, com chaves do mesmo tamanho. SAFER SAFER (“mais seguro” em português) é uma sigla para Secure and FastEncryption Routine. Consiste na criptografia de blocos em 64 bits, por isso é conhecido como SAFER SK-64. Entretanto, foram encontradas fraquezas nesse código, o que resultou no desenvolvimento de novas versões com diferentes tamanhos de chave, como a SK- 40, SK-64 e a SK-128 bits. IDEA O Internacional Encryption Algorithm (IDEA) é uma chave simétrica desenvolvida em 1991, que opera blocos de informações de 64 bits e usa chaves de 128 bits. O algoritmo utilizado atua de forma diferente, pois usa a confusão e difusão para cifrar o texto. Na prática, ele utiliza três grupos algébricos com operações misturadas, e é dessa forma que o IDEA consegue proteger as informações. Existem diferentes tipos de criptografia e entendê-los é relevante para que o usuário saiba exatamente como suas informações são protegidas ao utilizar a internet e manusear certificados digitais. 5.Dissertação Para podermos descrever o processo e o aplicativo podemos começar com sua base, ela é a parte principal para termos uma criptografia sem problemas e que possa dar a devida segurança ao usuário, além de que possa reconhecer diferentes alfabetos. Neste trabalho usamos como base dois tipos de criptografia: -Cifra Linear de César: Utiliza apenas o método comum de adicionar o valor da chave e percorrer a tabela de caracteres “UTF-8”, caso ultrapasse o número de caracteres existentes na “UTF-8” o código iras ler a tabela desde o início. Uma fraqueza deste tipo de código seria os caracteres especiais, pois quando criptografados eles são mostrados em caracteres únicos, como a barra de espaço que ira sempre aparecer com o valor de “%” - Cifra NãoLinear de César: Este método utiliza-se uma coordenação personalizada onde é baseada em pegar a mensagem escrita, pegar seu Key value, cria uma lista, randomiza o valor-chave e adiciona este valor ao texto. Por conta dos valores sempre serem aleatórios os resultados nunca serão os mesmos. Por exemplo: Se escrevermos uma mensagem qualquer e definirmos o valor da chave como cinco, assim o programa adicionara mais cinco valores para cada caractere do texto escrito, como exemplo usaremos a frase “Hello Word” com o valor de chave cinco o resultado seria “Mjqqt% \ twqi% &.”. Decidimos aplicar estes métodos no nosso trabalho pois vimos a chance de podermos implementar coisas novas em um estilo de criptografia, podemos juntar o que há de mais antigo na humanidade com a programação. Já a interface gráfica usamos “Tkinter” apesar de ser algo simples, pudemos usar de uma maneira em que seja interativa e de fácil uso do usuário, onde ele possa saber exatamente o que quer fazer e consiga ver o resultado esperado. Esperamos com resultado final com que o usuário sinta-se seguro de poder confiar alguma mensagem ou código para ser criptografado, além de contar com o reconhecimento de alfabetos que aumenta ainda mais a criatividade e segurança de quem estará utilizando esta aplicação para que seja a melhor possível dentro dessa área imensa que é o mundo da criptografia e todos os seus derivados. Nesta amostra podemos ver como ficaria se fizéssemos uma mensagem em japonês com três chaves. Nesta imagem fizemos um teste com mais letras do que o alfabeto mais utilizado no Japão (Hiragana e Katakana os dois possuem 45 caracteres ). Após feitos os testes confirmamos que estava funcionando corretamente com outros alfabetos. Aqui pode-se ver a interface da aplicação e o posicionamento das caixas de texto e dos botões, decidimos por usar o “Tkinter” por ser mais simples porém bonita e de fácil compreensão do usuário. Colocamos este botão para o próprio usuário decidir o tipo de criptografia que será usado no momento, achamos ser uma idéia interessante porque se for algo mais simples e que não seja de segredo maior poderá facilmente usar a criptografia linear porem poderá escolher a não linear também. 6.Estruturação, Conceitos e Fundamentação Esse programa para criptografar o texto usando caesar chyper e uma versão customizada dele. Basicamente, você escreve uma mensagem de texto e escolhe uma chave entre 1 e 55,294 e na optionBox o tipo de criptografia entre Linear Caesar Cypher e Não linear Caesar Cypher . Cifra Linear de César O Linear Caesar Cypher usa o método normal apenas usa o valor definido Key para adicionar este número na Mensagem e percorrer a Tabela UTF-8 (Se chegar ao final da tabela o código começa novamente do início). A principal fraqueza desse método é que todo carachter tem um valor e esse valor se repete como o espaço no exemplo usa o valor %, então em cada espaço em branco é um % com auxílio de software pode facilmente descobrir o segredo. Cifra Não Linear de César O Non Linear Caesar Cypher usa um método personalizado que pega a mensagem e usando o Key value ele cria uma lista e randomiza um valor-chave e adiciona este valor ao texto, por causa dos valores aleatórios o resultado sempre será aleatório. Por exemplo: Eu escrevo a mensagem Hello World! e escolhe o Linear Cypher com o valor de chave 5, então o programa adiciona + 5 para cada carachter no texto. Olá Mundo! + 5 -> Mjqqt% \ twqi% &. Eu escrevo a mensagem Hello World! e escolhe o Non Linear Cypher com o valor de chave 5, então o programa adiciona + 5 para cada carachter no texto. Olá Mundo! + 5 -> ifjgjQkvsy)] yyvm &. Obs: O crip.py é o programa principal e cryptography.py é onde estão as funções. 1 - DES 2 - 3DES 3 - DESX 4 - AES 5 - CAMELIA 6 - RSA 7 - BLOWFISH 8 - TWOFISH 9 - SAFER 10 - IDEA 7.Beneficios em Relação as Tecnicas Anteriores. A Criptografia consiste em técnicas para codificar dados e informações. Nisso, só a que envia e recebe a mensagem tem a capacidade, com uma chave, abrir esse conteúdo. E possível dizer que para funcionar consiste da seguinte forma : a pessoa envia a mensagem e usa o código para bloquear . A pessoa precisa ter a chave para dês criptografar a mensagem. Os Benefícios da Criptografia tem seus benefícios e suas vantagens como , Proteção de Dados, Segunda de Backups , Transações na Web. Proteção de Dados Tem possibilidade de dados confidenciais em aparelhos, como senhas. Para isso, e possível, criar uma parte em que todas as informações armazenadas serão criptografadas automaticamente. Seguranca de Backups Hoje em dia, e comum acontecer alguns ataques cibernético como Hacker ,que acessa backups de usuários, por isso, usar a Criptografia e uma maneira de aumentar a Segurança. Dessa maneira ,se algum hacker tenta acessar os dados do usuário ele terá que decifrar e mesmo assim tera dificuldades de acessar os dados do usuário. A Criptografia Cifra de Cesar. Ele usa o códigos nas mensagens enviadas generais, com um sistema de substituição, no qual cada letra de mensagem original e trocada pela letra que situa três posições a sua frente. Qualquer código que tem esse padrão e considerado código de cesar. 8.Aplicações que fazem/fizeram uso da técnica A Cifra de César foi utilizada usada pelo Império Romano para enganar seus inimigos e por líderes militares por centenas de anos depois de César. Ela consistia em escrever frases com o alfabeto normal, mas usando sempre três letras adiante. Ele vigorou por algum tempo, mas perdeu a utilidade após ser “quebrado”. Com o surgimento dos meios digitais, como rádio, telefone e, posterior mente , a internet, os métodos de criptografia precisaram se tornar mais avançados a fim de serem mais eficazes. 9. Discussão comparativa entre as técnicas mais usadas DES (Data Encryption Standard) é baseado no algoritmo de Feistel. Ele usa um bloco de criptografia DES de 64 bits e o divide em dois blocos de 32 bits. Em seguida, o bloco direito é movido para a próxima rodada e se torna o bloco da esquerda sem qualquer processamento. Agora O bloco à esquerda inicia a operação definitiva do bloco à direita e aplica a função de criptografia DES para processamento, e então a envia para a próxima rodada como o bloco à direita. Repita várias vezes até obter o texto criptografado (Uma rodada na criptografia é repetir o mesmo cálculo, ou seja, a mesma fórmula é várias vezes no número de rodadas. Isso é feito para aumentar a entropia da senha, embaralhando ainda mais os dados. Se eu criptografar um bloco de texto por vez, terei uma saída e, em seguida, criptografarei a mesma saída novamente em outro ROUND, vou criar mais confusão no texto, tornando mais difícil invertê-lo. ) Cmellia: A criptografia denominada de “Camellia” seria basicamente um método de sigilo de comunicações, ela pode ser descrita como uma criptografia com o algoritmo de chave simétrica e o de codificação de bloco, com o tamanho de bloco de 128 bits de e tamanhos de chaves de 128, 192 e 256 bits . Ela foi criada para ser adequada tanto para hardware e software, com isto criava-se uma gigantesca lista de possibilidades e usar equipamentos mais acessíveis, como foram usados cartões inteligentes de baixo custo para redes de sistema de grande velocidade. https://piffaretti.files.wordpress.com/2020/10/4b9f1d5e-2492-4250-b800- ea603ab38254.png DES (Data Encryption Standard) é baseado no algoritmo de Feistel. Ele usa um bloco de criptografia DES de 64 bits e o divide em dois blocosde 32 bits. Em seguida, o bloco direito é movido para a próxima rodada e se torna o bloco da esquerda sem qualquer processamento. Agora O bloco à esquerda inicia a operação definitiva do bloco à direita e aplica a função de criptografia DES para processamento, e então a envia para a próxima rodada como o bloco à direita. Repita várias vezes até obter o texto criptografado (Uma rodada na criptografia é repetir o mesmo cálculo, ou seja, a mesma fórmula é várias vezes no número de rodadas. Isso é feito para aumentar a entropia da senha, embaralhando ainda mais os dados. Se eu criptografar um bloco de texto por vez, terei uma saída e, em seguida, criptografarei a mesma saída novamente em outro ROUND, vou criar mais confusão no texto, tornando mais difícil invertê-lo.). https://tecnologiadarede.webnode.com.br/news/noticia-aos-visitantes/ (Algoritmo do DES) IDEA: É um tipo de chave baseadas em uma chave 128 bits, onde esta chave e criptografa e decripta a mensagem, ela é considerada uma criptografia complexa pois se utiliza de funções matemáticas junto da chave de 128 bits, dentre as funções vai desde multiplicação básica até álgebra avançada. Aqui está um exemplo de como a IDEA interpreta as chaves e suas sub-chaves SAFER (Secure and Faster Ecryption Routine): Esta é um tipo de criptografia de 64 bits que também pode ser encontrada pelo nome de “SAFER SK-64”, ela funciona basicamente com o embaralhamento das chaves, outro embaralhamento, substituição de camada, outro embaralhamento das chaves e no processo final a difusão da camada. https://en.wikipedia.org/wiki/SAFER#/media/File:SAFER.png Esta imagem mostra como é feita cada etapa descrita a cima 10. Vulnerabilidades e Falhas O estudo que leve a descoberta de vulnerabilidades de falhas se da pela criptoanálise uma ciência que foca em descobrir vulnerabilidades e falhas em códigos e erros lógicos. O sucesso que um criptoanalista se da quando é descoberta a chave de criptografia ou consiga recuperar os dados originais. Existem algumas formas de ataque para poder descobrir tais chaves. 1. Ataque por texto cifrado: O ataque consistem em vários textos cifrados com o mesmo algoritmo. Ele tenta deduzir os textos planos ou a chave, comparando varias mensagens cifradas com a mesma chave. 2. Ataque por Texto Plano: O criptoanalista tem acesso a várias mensagens e seus respectivos textos cifrados. Ele tem como meta deduzir as chaves ou um algoritmo que quebre a codificação de outras mensagens cifradas com as chaves usadas nos textos cifrados de sua posse. 3. Ataque por Texto plano: O criptoanalista tem acesso a um conjunto de textos cifrado se seus respectivos textos planos, mas também escolhe quais textos planos deseja cifrar. 4. Ataque por texto plano escolhido: É um caso especial, pois pode subdividir a escolha dos pares de textos cifrados e planos, desta forma a escolha de um subconjunto destes textos é baseada no resultado da cifra obtida de um subconjunto anterior. 5. Ataque por texto cifrado escolhido: É um ataque obscuro que depende da quantidade e qualidade das informações que o criptoanalista tem sobre as chaves, Não é um ataque prático. 6. Ataque por texto plano escolhido e adaptado: O criptoanalista pode escolher diferentes textos cifrado se ter acesso a seus respectivos textos planos. Seu trabalho é deduzir à chave. Esse tipo de ataque é comumente aplicado em cifradores de chave pública e algumas vezes efetivo contra cifradores simétricos. 7. Ataque por Intimidação: Conhecido como engenharia social, usa de métodos como suborno, ameaças ou tortura para se conseguir a chave. Vulnerabilidade. Criptografia de César: 1. Para que houvesse a compreensão da mensagem pelo receptor, era preciso que a chave de criptografia fosse previamente combinada entre o emissor e o receptor. 2. A regra combinada pelo emissor e pelo receptor é simétrica, no sentido de que as operações realizadas pelo emissor para cifrar uma mensagem são feitas de maneira inversa pelo receptor para decifrá-la. 2. A regra combinada pelo emissor e pelo receptor é simétrica, no sentido de que as operações realizadas pelo emissor para cifrar uma mensagem são feitas de maneira inversa pelo receptor para decifrá-la. Esses problemas tornam qualquer forma de criptografia muito difícil e der implantada para utilizações em larga escala, pois demanda uma grande operação logística de distribuição das chaves de criptografia em diferentes locais onde os receptores estariam, e se eventualmente a chave fosse descoberta, uma nova distribuição de chaves deveria ser realizada. 11.Melhorias e propostas de implementação Melhorias sempre podem ser acrescentadas quando se fala em criptografia, sempre existe um jeito de poder “quebrar” os códigos, por isso este tema é muito sensível quando falamos de melhorias, um exemplo de melhoria seria sobre os aspectos visuais onde teria maior interação com o usuário ou até mesmo maior facilidade de encontrar as funções do programa. Outra melhoria seria criar um banco de dados com o login e senha do usuário, pois assim para poder ir ao texto criptografado o invasor primeiramente teria de decifrar o usuário e senha para tentar entrar no programa, podemos criar diversas melhorias pois esta área é imensamente vasta. Já as implementações podem ser um pouco mis complexas de serem feitas porém são uma das partes mais importantes, pois podemos colocar muitas coisas novas, Uma delas seria fazer toda vez que alguém criptografa algo esta criptografia sempre vai ser diferente, porém seria necessário criar um servidor onde apenas os desenvolvedores tenham acesso para poder garantir a segurança do usuário e do sistema. Podemos citar inúmeras melhorias e implementações, porém temos de ter cuidado pois se não forem feitas corretamente ou com a devida atenção pode criar problemas estruturais, ou seja, problemas que geram outros problemas, dependendo da gravidade do erro pode-se deixar muito vulnerável o banco de dados ou até mesmo a criptografia em si, por isso implementações e melhorias internas muitas vezes são demoradas devido a este fato. As melhorias visuais já é um caso mais acessível, pois não terá de mexer com códigos e estruturas internas, apenas melhorar a interface e a interação com o usuário, mas também precisa ser feita com muita cautela, alguns erros podem deixar o aplicativo com nenhum entendimento ou ilegível dependendo da formatação feita. Neste tema de melhorias e implementações o este aplicativo é algo que representa muito bem, pois novos tipos de criptografia estão sendo descobertos e inúmeras formas já existentes, é uma área muito extensa no quesito, o esperado sempre será melhorar e ser o mais seguro possível para que apenas um ataque de força bruta não consiga decifrar e que não seja sempre uma transferências de letras um exemplo seria: 12.Projeto import random from tkinter import * import tkinter.ttk as ttk import criptografia as cript #Funções def plus_click(): global key if key < 55294: key += 1 else: key = key keylabel['text'] = key def minus_click(): global key if key > 1: key -= 1 else: key = key keylabel['text'] = key def plus_click1(): global key1 if key1 < 55294: key1 += 1 else: key1 = key1 keylabel1['text'] = key1 def minus_click1(): global key1 if key1 > 1: key1 -= 1 else: key1 = key1 keylabel1['text'] = key1 def encrypt(): if(variable.get() == 'Criptografia não linear'): texto = cript.non_linear_cypher(get_text(crip1),key) render_text(result1, texto) else: texto = cript.ceasar_cypher(get_text(crip1), key) render_text(result1, texto) def decrypt(): if(variable.get() == 'Criptografia não linear'): texto1: str = cript.reverse_non_linear_cypher(get_text(crip2), key1) render_text(result2, texto1) else: texto1: str = cript.ceasar_cypher(get_text(crip2), key1*-1) render_text(result2, texto1) def get_text(reference: object) -> str: return reference.get('1.0', END).strip() def render_text(reference: object, value: str) -> None: reference.delete('1.0', END) reference.insert('1.0', value) #Main window root = Tk() root.geometry('720x650') root.resizable(False,False) root.title('Joséfa Criptografias') #Variáveis texto = ' ' texto1 = ' ' final_message = '' key = 3 key1 = 3 options = ['Criptografia linear', 'Criptografia não linear', 'Criptografia linear'] #Abas abas = ttk.Notebook() aba1 = Frame(abas) aba2 = Frame(abas) aba1.configure(background = '#add8e6') aba2.configure(background = '#add8e6') abas.add(aba1, text = 'Criptografar') abas.add(aba2, text = 'Descriptografar') abas.place(relx=0, rely=0,relwidth=0.98, relheight=0.98) """Editar Chave """ #Button + mButton = ttk.Button(aba1, width = 10, text = "+", command = plus_click, cursor = 'hand2') mButton.place(x = 205, y = 320) #Texto Chave keylabelM = Label(aba1, width = 10, height = 1, text = "Chave", bg = '#add8e6') keylabelM.place(x = 115, y = 280) keylabel = Label(aba1, width = 10, height = 1, text = key, relief = 'solid', bg = 'white') keylabel.place(x = 115, y = 300) #Button - pButton = ttk.Button(aba1, width = 10, text = "-", command = minus_click, cursor = 'hand2') pButton.place(x = 30, y = 320) """Editar Chave Aba 2""" #Button + mButton1 = ttk.Button(aba2, width = 10, text = "+", command = plus_click1, cursor = 'hand2') mButton1.place(x = 205, y = 320) #Texto Chave keylabelM1 = Label(aba2, width = 10, height = 1, text = "Chave", bg = '#add8e6') keylabelM1.place(x = 115, y = 280) keylabel1 = Label(aba2, width = 10, height = 1, text = key1, relief = 'solid', bg = 'white') keylabel1.place(x = 115, y = 300) #Button - pButton = ttk.Button(aba2, width = 10, text = "-", command = minus_click1, cursor = 'hand2') pButton.place(x = 30, y = 320) """Criptografar""" #Title title = Label (aba1, text = "Joséfa Criptografias", bg = '#add8e6') title.place(bordermode = OUTSIDE, height = 60, x = 30, y = 1) title.config(font=("Courier", 40)) #Label label1 = Label(aba1, text = "Criptografar Texto", bg = '#add8e6') label1.place(bordermode = OUTSIDE, height = 30, x = 320, y = 75 ) #Text crip1 = Text(aba1, width = 40, height = 15) crip1.place(bordermode = OUTSIDE, height = 150, width = 550, x = 80, y = 120) #Botão button1 = ttk.Button(aba1, text = 'Criptografar', command = encrypt, cursor = 'hand2') button1.place(bordermode = INSIDE, height = 30, width = 100, x = 510, y = 320) #Label label2 = Label(aba1, text = 'Texto Criptografado', bg = '#add8e6') label2.place(bordermode = INSIDE, height = 30, x = 308, y = 360) #Resultado result1 = Text(aba1, width = 40, height = 15) result1.place(bordermode = INSIDE, height = 150, width = 550, x = 80, y = 400) #Seleção de Criptografia variable = StringVar(aba1) variable.set('Criptografia Não Linear') select = ttk.OptionMenu(aba1, variable, *options) select.place(x = 315, y = 320) """Descriptografar""" #Title title1 = Label (aba2, text = "Joséfa Criptografias", bg = '#add8e6') title1.place(bordermode = OUTSIDE, height = 60, x = 30, y = 1) title1.config(font=("Courier", 40)) #Label label3 = Label(aba2, text = "Descriptografar Texto", bg = '#add8e6') label3.place(bordermode = INSIDE,height = 30 , x = 310, y = 75) #Text crip2 = Text(aba2, width=40, height=15) crip2.place(bordermode = INSIDE, height = 150, width = 550, x = 80, y = 120) #Button button2 = ttk.Button(aba2, text='Descriptografar', command = decrypt, cursor = 'hand2') button2.place(bordermode = INSIDE, height = 30, width = 100, x = 510, y = 320) #Label label4 = Label(aba2, text = 'Texto Descriptografado', bg = '#add8e6') label4.place(bordermode = INSIDE, height = 30, x = 308, y = 360) #Resultado result2 = Text(aba2, width = 40, height = 15) result2.place(bordermode = INSIDE, height = 150, width = 550, x = 80, y = 400) #Seleção de Criptografia variable1 = StringVar(aba2) variable1.set('Criptografia Não Linear') select1 = ttk.OptionMenu(aba2, variable, *options) select1.place(x = 315, y = 320) """Runs main window""" root.mainloop()
Compartilhar