Prévia do material em texto
Universidade Paulista Ciência da Computação Atividade Prática Supervisionada ALGORITMOS DE CRIPTOGRAFIA Enrico Beltrame Lara R.A.- N84701-8 Marcos Augusto dos Santos R.A.- G4619A-1 Matheus Luiz Silva Rossi R.A.- G51GBD-8 Murilo Canela do Nascimento R.A.- G45CAC-4 Bauru 2022/10 Sumário 1. Introdução 3 1.2. Objetivo do Trabalho 4 2. Referencial Teórico 6 3. Desenvolvimento 21 4. Resultados e discussão 25 5. Considerações finais 26 Referências bibliográficas 27 Código fonte 28 P A G E 1 0 1 Introdução Criptografia (Do Grego kryptós, "escondido", e gráphein, "escrita") é o estudo dos princípios e técnicas pelas quais a informação pode ser transformada da sua forma original para outra ilegível, de forma que possa ser conhecida apenas por seu destinatário (detentor da "chave secreta"), o que a torna difícil de ser lida por alguém não autorizado. Assim sendo, só o receptor da mensagem pode ler a informação com facilidade. Há dois tipos de chaves criptográficas: chaves simétricas e chaves assimétricas. Uma informação não-cifrada que é enviada de uma pessoa (ou organização) para outra é chamada de "texto claro" (plaintext). Cifragem é o processo de conversão de um texto claro para um código cifrado e decifragem é o processo contrário, de recuperar o texto original a partir de um texto cifrado. A criptografia é um ramo especializado da teoria da informação com muitas contribuições de outros campos da matemática e do conhecimento, incluindo autores como Maquiavel, Sun Tzu e Karl von Clausewitz. A criptografia moderna é basicamente formada pelo estudo dos algoritmos criptográficos que podem ser implementados em computadores. Antigamente, a cifragem era utilizada na troca de mensagens, sobretudo em assuntos ligados à guerra (no intuito de o inimigo não descobrir a estratégia do emissor da mensagem, caso se apoderasse dela), ao amor (para que os segredos amorosos não fossem descobertos pelos familiares) e à diplomacia (para que facções rivais não estragassem os planos de acordos diplomáticos entre nações). O primeiro uso documentado da criptografia foi em torno de 1900 a.c., no Egito, quando um escriba usou hieróglifos fora do padrão numa inscrição. Desde os primórdios passando depois pelo criptoanalistas britânicos na quebra dos códigos e cifras alemãs durante a I Guerra Mundial, depois na II Guerra Mundial, com as máquinas de codificação mecânica e eletromecânica, como a famosa Máquina de Enigma entre vários outros exemplos. P A G E 1 0 Desde a Segunda Guerra Mundial o uso da matemática em criptografia e criptoanálise tem avançado, porém, a utilização mais eficaz da criptografia para diversas aplicações usuais, só foi possível como uso dos computadores e da Internet como um meio de comunicação. Antes a criptografia era utilizada apenas por governos ou grandes empresas. Atualmente, com o avanço da tecnologia e o aumento do compartilhamento de informações a criptografia é extremamente necessária como uma forma de segurança de informação, por exemplo para: proteger arquivos, contra fraudes e tentativas de invasão, enviar e-mail de forma mais segura, proteger senhas, etc. Garantindo assim que apenas o real destinatário da informação possa ter o acesso permitido. Hoje existem diversas técnicas e algoritmos específicos de criptografia, e seu estudo é constantemente incentivado pelos governos em diversos países e também por outras diversas empresas de segurança de informação. 1.1 Objetivo do trabalho O objetivo deste trabalho consiste em estudar os algoritmos de criptografia e toda teoria computacional envolvida, entendendo o processo de conversão de um texto claro para um código cifrado e a decifragem que é o processo contrário, de recuperar o texto original a partir de um texto cifrado. Entender também a aplicação e desempenho de cada algoritmo e técnicas envolvidas, bem como as vantagens e desvantagens dos algoritmos pesquisados. Após pesquisa bibliográfica sobre o assunto em questão o grupo escolherá dois algoritmos de criptografia para implementar e testar o desempenho dos algoritmos escolhidos. Dentre os vários algoritmos de criptografia existentes como os de chaves simétricas e chaves assimétricas, especificamente neste trabalho foram escolhidos os algoritmos cesar e o algoritmo vigenere Os algoritmos serão implementados na linguagem Python a fim de permitir maior prática nesta linguagem juntamente com a ampliação do P A G E 1 0 raciocínio em lógica de programação. 2 Referencial Teórico Este capítulo aborda a histórica e conceitos principais sobre criptografia e os algoritmos de criptografia escolhidos pelo grupo e toda teoria computacional envolvida nos mesmos. 2.1 História da Criptografia A história da criptografia começa há milhares de anos. Até décadas recentes, ela havia sido a história do que poderia ser chamado de criptografia clássica — isto é, de métodos de criptografia que usam caneta e papel, ou talvez auxílios mecânicos simples. No começo do século XX, a invenção de complexas máquinas mecânicas e electro-mecânicas, tais como a máquina com rotores Enigma, providenciou meios mais sofisticados e eficientes de encriptação; e a posterior introdução da eletrônica e computação permitiu elaborar esquemas de ainda maior complexidade, muitos completamente inadequáveis ao papel e caneta. O desenvolvimento da criptografia foi acompanhado pelo desenvolvimento da criptoanálise - a "quebra" de códigos e cifras. A descoberta e aplicação, desde cedo, de análise de frequência para a leitura de comunicações criptografadas, muitas vezes, alterou o curso da história. Portanto, o Telegrama Zimmermann que motivou a entrada dos Estados Unidos na Primeira Guerra Mundial e o fato de que os Aliados conseguiram decifrar as cifras da Alemanha Nazista, encurtou a Segunda Guerra Mundial, em algumas avaliações, em até dois anos. Até à década de 1970, a criptografia segura foi amplamente utilizada para a proteção de governos. Dois eventos trouxeram-a diretamente para o domínio público: a criação de um padrão de criptografia de chave simétrica (DES), e a invenção da criptografia de chave pública. https://pt.wikipedia.org/wiki/Cifra https://pt.wikipedia.org/wiki/Cifra https://pt.wikipedia.org/wiki/Criptografia https://pt.wikipedia.org/wiki/S%C3%A9culo_XX https://pt.wikipedia.org/wiki/Enigma_(m%C3%A1quina) https://pt.wikipedia.org/wiki/Eletr%C3%B4nica https://pt.wikipedia.org/wiki/Computa%C3%A7%C3%A3o https://pt.wikipedia.org/wiki/Criptografia https://pt.wikipedia.org/wiki/Criptoan%C3%A1lise https://pt.wikipedia.org/wiki/Cifra https://pt.wikipedia.org/wiki/An%C3%A1lise_de_frequ%C3%AAncia https://pt.wikipedia.org/wiki/Telegrama_Zimmermann https://pt.wikipedia.org/wiki/Telegrama_Zimmermann https://pt.wikipedia.org/wiki/Aliados https://pt.wikipedia.org/wiki/Alemanha_Nazista https://pt.wikipedia.org/wiki/Alemanha_Nazista https://pt.wikipedia.org/wiki/DES https://pt.wikipedia.org/wiki/Criptografia_de_chave_p%C3%BAblica P A G E 1 0 Na criptografia, a criptografia é o processo de criptografar uma mensagem ou informação para que apenas pessoas autorizadas possam acessá-la. O processo de criptografia não está livre de interferências, mas impede que os intrusos visualizem seu conteúdo. É formado por quatro princípios principais: confidencialidade, autenticação, não repúdio e integridade da informação (para que o remetente não possa recusar o envio da informação. Na criptografia há também a descriptografia, que é o processo inverso da criptografia, onde apenas criadores de plataforma e pessoas com alto nível de conhecimento no assunto podem fazê-lo, embora sejam necessários grandes recursos computacionaise conhecimento, além de tempo. Dedicado a esta atividade, seja intenso. É importante notar que nenhuma forma de criptografia é completamente segura. Assim, podemos destacar o seguinte: Assimétrica (pública): a chave é pública e é gerada em cada acesso. É mais aconselhável usá-lo nos casos em que será usado por várias pessoas e a localização de cada usuário for distante. Simétrico (privado): As chaves utilizadas são mesmas tanto pelo provedor quanto pelo destinatário. Este método é melhor usar nos casos em que podemos enviar a chave manualmente porque a partir do momento em que a repassamos. Através da web pode ser desvendado. Costumava ser amplamente utilizado pelos militares e pelo governo como meio de facilitar as comunicações secretas, isso diminuiu ao longo do tempo. Hoje, é muito mais amplamente utilizado para proteção de informações em vários tipos de sistemas civis. Atualmente, o uso desta ferramenta tornou-se essencial para qualquer usuário. Com a evolução das formas de intrusões, houve a evolução da criptografia, tendo assim codificações de 256 a 1024 bits. P A G E 1 0 2.2 Cifras e Códigos CIFRA Em criptografia, uma cifra de substituição é um método de criptografia que opera de acordo com um sistema pré-definido de substituição. Para criptografar uma mensagem, unidades do texto - que podem ser letras isoladas, pares ou outros grupos de letras - são substituídas para formar a cifra. As cifras de substituição são decifradas pela substituição inversa. Todavia, se a unidade de substituição estiver ao nível de palavras inteiras ou frases, como PORTA-AVIÕES ou ATAQUE ÀS 06H20M, o sistema é habitualmente dito ser um código, não uma cifra. Uma cifra de substituição contrasta com uma cifra de transposição. Nestas últimas, as unidades do texto a cifrar são rearranjadas numa ordem diferente e habitualmente complexa, mas não modificadas. Por contraste, numa cifra de substituição, as unidades do texto são mantidas na mesma ordem, mas elas próprias são alteradas. Existem diversos tipos de cifras de substituição. Se a cifra opera com letras isoladas, é denominada cifra de substituição simples. Se opera com grupos de letras chama-se cifra de substituição poligráfica. Uma cifra monoalfabética usa uma só substituição fixa na mensagem inteira, enquanto uma cifra polialfabética usa mais que uma. Uma cifra pode ainda recorrer a homófonos quando uma unidade de texto pode mapeada em mais que uma possibilidade distinta. CODIGO Existem vários tipos de códigos de criptografia, cada um com suas https://pt.wikipedia.org/wiki/Criptografia https://pt.wikipedia.org/wiki/Criptografia https://pt.wikipedia.org/w/index.php?title=C%C3%B3digo_(criptografia)&action=edit&redlink=1 https://pt.wikipedia.org/wiki/Cifra_de_transposi%C3%A7%C3%A3o P A G E 1 0 próprias especificidades e funções direcionadas. Podemos combinar a origem desses códigos criptográficos com a transformação digital incremental pela qual estamos passando e a necessidade de segurança dos dados. Embora seja um campo importante hoje, a criptografia deu seus primeiros passos na década de 1940. Os avanços tecnológicos trouxeram alguns malefícios e, para proteger nossas informações pessoais, a criptografia pode minimizar os perigos do uso da Internet. Afinal, quem nunca sentiu um pingo de insegurança na hora de incluir seus dados pessoais em uma página de identificação, certo? Essa hesitação não é à toa, os golpes e crimes virtuais existem desde os primórdios da internet. Dessa maneira, a criptografia serve para proteger os dados confidenciais para que estes não sejam fraudados. Dando um contexto mais histórico, a criptografia surgiu, de forma mais concreta, na Segundo Guerra Mundial, junto a urgência dos países de proteger as informações de guerra. Além de discorrer sobre os tipos de códigos de criptografia mais utilizados, nesta publicação, vamos entender como funciona a criptografia na prática e para que servem esses códigos no nosso cotidiano, exemplo como ,DES , DES-X,AES 2.3 Chave Criptográfica Uma chave é uma informação que controla a operação de um algoritmo de criptografia. Na criptografia, uma chave especifica a conversão de texto simples em texto cifrado e vice-versa durante a descriptografia. As chaves também são usadas em outros algoritmos de criptografia, como esquemas de assinatura digital e funções de hash (também conhecidas como MAC) e, às vezes, para autenticação. Para um algoritmo bem projetado, criptografar o mesmo texto com chaves diferentes deve produzir textos cifrados completamente diferentes. Da mesma forma, descriptografar o texto cifrado com a chave errada produz um texto aleatório incompreensível. Se a chave de descriptografia for perdida, os dados criptografados não poderão ser recuperados pelo mesmo algoritmo de criptografia. As chaves usadas na criptografia de chave pública têm uma P A G E 1 0 certa estrutura matemática. Por exemplo, a chave pública usada no sistema RSA é o produto de dois números primos. Portanto, os sistemas de chave pública exigem chaves maiores do que os sistemas simétricos para atingir o mesmo nível de segurança. 3072 bits é o tamanho de chave recomendado para sistemas baseados em fatoração e algoritmos de números inteiros discretos e foi projetado para ter segurança equivalente a uma cifra simétrica de 128 bits. A Criptografia de Curva Elíptica (ECC) pode permitir o uso de chaves de tamanho menor para segurança equivalente, mas esses algoritmos são conhecidos há pouco tempo e, com base nas estimativas atuais da dificuldade de encontrar suas chaves, é improvável que existam. Recentemente, uma mensagem codificada com uma chave de algoritmo de curva elíptica de 109 bits foi forçada por força bruta. A regra atual é usar uma chave CCE com o dobro da segurança de uma chave simétrica para atingir o nível necessário. Além de senhas de uso único aleatórias, a segurança desses sistemas não foi matematicamente comprovada. Portanto, um ponto fraco teórico poderia fazer de tudo que você codificou um livro aberto. Esta é uma outra razão para se valorizar a escolha de chaves longas 2.4 Criptografia Simétrica O antigo modelo de criptografia onde a chave que é o elemento que permite o acesso à mensagem oculta trocada entre duas partes, é comum (simétrica) a ambas as partes e deve permanecer secreta (privada). Normalmente, essa chave é personificada como uma senha que o remetente usa para criptografar a mensagem em uma extremidade e o receptor para descriptografar a mensagem na outra extremidade. Basicamente, quando a fonte (ALFA) codifica a mensagem Ele usa algoritmos de criptografia para converter o conteúdo explícito do texto em texto criptografado. Quando o destino (CORAJOSO) descriptografa a mensagem Um algoritmo de descriptografia apropriado é usado para converter a mensagem criptografada de volta ao texto não criptografado. Se um intruso (CHARLIE) conhecesse o algoritmo de criptografia, ele poder descriptografar uma P A G E 1 0 mensagem criptografada tão facilmente quanto o alvo (RAIVOSA). A decisão de usar a criptografia de chave privada é assumida quando a fonte (ALFA) criptografa a mensagem Ele usa algoritmos de criptografia e chaves secretas para converter texto simples em texto criptografado. O alvo (AUDACIOSO), por sua vez, durante a descriptografia da mensagem utiliza o algoritmo de descriptografia apropriado e a mesma chave para converter o texto criptografado em uma mensagem clara. Um invasor (CHARLIE) sem uma chave secreta, mesmo conhecendo o algoritmo, não seria capaz de descriptografar a mensagem. A segurança do sistema não está mais no algorítmo, mas na chave utilizada. Em vez de um algoritmo, é ele a chave privada) que deve ser mantido em segredo pela fonte (ALFA) e pelo destinatário(DESTEMIDO). A principal vantagem é a simplicidade, esta técnica possui facilidade de uso e velocidade de execução dos processos criptográficos. Entenda que se a chave usada for intrincada Desenvolver um algorítmo de chave privada é comparativamente fácil. Mas a capacidade de interceptação está relacionada aos recursos aplicados, porém o uso de chaves é importante no processo de proteção dos dados Por causa do algorítmo mais simples Quanto mais rápida a velocidade de processamento e facilidade de uso, melhor. O principal problema do uso desse sistema de criptografia é que quando a chave de criptografia é a mesma usada para descriptografia, ou esta pode ser facilmente obtida conhecendo a primeira, ambas devem ser previamente compartilhadas entre origem e destino, antes da criptografia. um canal é estabelecido e, durante o processo de compartilhamento, a senha pode ser interceptada, por isso é imprescindível a utilização de um canal seguro durante a troca, separado daquele destinado à comunicação confidencial, pois qualquer pessoa com acesso à senha pode descobrir o segredo conteúdo da mensagem. Outros espaços são levados para este sistema: • Como cada peer precisa de uma chave para se comunicar com segurança, para uma rede de n usuários requeremos de algo da ordem de n2 chaves, uma quantidade que dificulta o gerenciamento de chaves P A G E 1 0 • A chave deve ser trocada entre as partes e guardada de forma segura, o que nem sempre é fácil de garantir; • A criptografia simétrica não garante os princípios de autenticidade e não- repudiação 2.5 Criptografia Assimétrica Um modelo de criptografia criado na decada de 1970, pelo matemático Clifford Cocks, que trabalhou para o serviço secreto inglês, GCHQ, em que cada parte envolvida na comunicação utiliza duas chaves diferentes (assimétricas) e complementares, uma privada e outra público. Nesse caso, a chave não é apenas uma senha, mas um arquivo digital mais complexo (que pode até eventualmente estar associado à senha). As chaves públicas podem ser compartilhadas com qualquer pessoa que queira se comunicar com diferentes métodos de segurança. Mas cada proprietário deve ter apenas 4 chaves privadas. Com a chave privada, o destinatário pode descriptografar a mensagem criptografada com a chave pública correspondente. Para entender o conceito basta pensar em um cadeado comum para proteger um determinado bem. A mensagem é tão boa e o cadeado desbloqueável é a chave pública. As mensagens só podem ser acessadas por pessoas com uma chave fechada (privada) que possa abrir a fechadura. A principal vantagem desse método é sua segurança, pois não é necessário (e não deve) compartilhar a chave privada. Por outro lado, o tempo de processamento de mensagens com criptografia assimétrica é muitas vezes maior do que com criptografia simétrica, o que pode limitar seu uso em alguns casos. Basicamente, o endpoint (CORAJOSO) e qualquer pessoa que queira se comunicar com segurança gera a chave de criptografia e descriptografia associada. Ele armazena o segredo da chave de descriptografia. que é chamada de chave privada. Ele tornou a chave de criptografia pública. que é chamado de sua chave pública. A chave pública realmente corresponde ao seu nome. Qualquer pessoa pode obter uma cópia. Destiny (ARROJADO) também é incentivado enviando-o a um amigo ou publicando-o na internet. Assim, The Intruder (CHARLIE) não tem problemas P A G E 1 0 para obtê-lo. Quando uma fonte (ALFA) deseja enviar uma mensagem a um destinatário (RAIVOSA), deve primeiro procurar a chave pública dessa fonte. Quando terminado Ele criptografa sua mensagem com a chave pública do destinatário (IRADO) e a envia. Quando o destino (RAIVOSA) recebe a mensagem ele simplesmente a descriptografa com sua chave privada. O intruso (CHARLIE) que interceptou a mensagem em trânsito não conhece a chave privada do alvo (ZANGADO), embora conheça sua chave pública. Mas esse conhecimento não o ajudará a descriptografar a mensagem. Mesmo a fonte (ALPHA), que foi quem criptografou a mensagem com a chave pública do destino (ARROJADO), agora não consegue descriptografá-la. A grande vantagem desse sistema é que ele permite que qualquer pessoa envie uma mensagem secreta, bastando usar a chave pública de quem vai recebê-la. Como a chave pública está amplamente disponível, não há necessidade de enviar chaves como no modelo simétrico. A confidencialidade da mensagem é garantida desde que a chave privada seja segura. Ocorrência contrário, qualquer pessoa com acesso à sua chave privada poderá acessar suas mensagens. O obstáculo deste sistema é a complexidade utilizada no desenvolvimento de algoritmos que devem ser capazes de reconhecer o par de chaves existentes e relacioná-las no momento certo, o que implica um grande poder computacional. P A G E 1 0 2.6 Criptografia Moderna A criptografia moderna é baseada no estudo de algoritmos criptográficos que podem ser implementados em computadores. A criptografia interessou agências de inteligência e aplicação da lei, bem como defensores dos direitos civis. Há uma longa história de questões legais controversas, especialmente desde que o barateamento da computação possibilitou o acesso generalizado à criptografia de alta qualidade 2.7 Criptografia Quântica A criptografia quântica é um novo ramo da criptografia que usa os princípios da mecânica quântica para fornecer comunicação segura. Remetentes e destinatários podem criar e compartilhar códigos secretos para criptografar e descriptografar suas mensagens. A criptografia quântica difere de outros métodos criptográficos, pois não requer comunicação secreta prévia, permite a detecção de um invasor e é segura, mesmo que o invasor tenha poder de computação ilimitado. Na verdade, é totalmente seguro, exceto em situações em que o invasor pode remover e inserir mensagens do canal de transmissão (para que possa ler e excluir a mensagem criar uma fotocópia e encaminhá-la). Portanto, essa técnica criptográfica seria mais segura do que as atualmente utilizadas, pois é baseada nas leis da física, enquanto as atuais protegem apenas os dados baseados em funções secretas devido à limitação do poder computacional. É importante notar que a criptografia quântica é usada apenas para gerar e distribuir chaves, não para enviar mensagens. A chave gerada pode ser usada com qualquer algoritmo de criptografia escolhido. O algoritmo mais comumente associado à criptografia quântica é o one-time pad, pois provou fornecer segurança perfeita quando usado com uma chave aleatória e um tamanho de mensagem. P A G E 1 0 2.8 Assinatura Digital Uma assinatura digital é um recurso que usa criptografia para verificar documentos em formato digital de forma segura e confiável. É a chave privada e a chave privada. Apenas para cada pessoa Isso está associado a um certificado digital que atua como registro de credenciais. Sua validade legal equivale a uma assinatura manuscrita em papel físico, e essa validade é certificada pela Infra-Estrutura de Chaves Públicas Brasileira (ICP-Brasil), que faz parte do instituto Nacional de Tecnologia da informação (ITI). usando mecanismos de criptografia modernos A assinatura digital é uma ferramenta totalmente segura. E tem sido admitido por muitos tribunais, governos e empresas com total respaldo legal. 2.9 Algoritmos de Criptografia Um algoritmo é uma sequência finita de passos bem definidas para se executar uma tarefa e atingir um determinado objetivo. Podem ser executadas mecânica ou eletronicamente ou mesmo por um ser humano, e não precisam necessariamente de um programa de computador. Porém, como o uso dos computadores, algoritmos mais complexos podem ser executados num tempo bem menor. Diferentes algoritmos podem realizara mesma tarefa usando um conjunto diferente de instruções em mais ou menos tempo, espaço ou esforço do que outros. Essa diferença é devido à complexidade computacional envolvida, a qual depende de estruturas de dados adequadas ao algoritmo, entre outros fatores computacionais. (CRUZ, 2017). Existem vários algoritmos de criptografia desde os mais simples e antigos, até os atuais e mais complexos como: Cifra de César, Cifra de Vigenère, Máquina de Enigma, ROT13, RSA, DES, SSL, RC4, RC5, Curvas Elípticas, e https://pt.wikipedia.org/wiki/Cifra_de_Vigen%C3%A8re P A G E 1 0 muitos outros. 2.9.1 Cifra de César Cifra de César, também conhecida como cifra de troca, código de César ou troca de César, é uma das mais simples e conhecidas técnicas de criptografia. É um tipo de cifra de substituição na qual cada letra do texto é substituída por outra, que se apresenta no alfabeto abaixo dela um número fixo de vezes. Por exemplo, com uma troca de três posições, A seria substituído por D, B se tornaria E, e assim por diante (WIKIPEDIA, 2017). O nome do método é em homenagem a Júlio César, que o usou para se comunicar com os seus generais (CRACKINK THE CODE, 2017). 2.9.2 Cifra de Vigenère A cifra de Vigenère é um metodo de criptografia que usa várias cifras de César diferentes com base nas letras de uma senha. É uma versão simplificada de uma cifra de substituição polialfabética mais comum inventada por Leon Battista Alberti por volta de 1465. A invenção da cifra de Vigenère é erroneamente atribuída a Blaise de Vigenère e foi originalmente descrita por Giovan Battista Bellaso em seu livro de 1553 intitulado La Escritasecreta del Sig. Giovanni Battista Bellaso. https://pt.wikipedia.org/wiki/Criptografia https://pt.wikipedia.org/wiki/Cifra_de_substitui%C3%A7%C3%A3o https://pt.wikipedia.org/wiki/Alfabeto https://pt.wikipedia.org/wiki/J%C3%BAlio_C%C3%A9sar https://pt.wikipedia.org/wiki/General https://pt.wikipedia.org/wiki/Cifra_de_Vigen%C3%A8re P A G E 1 0 Essa cifra é conhecida por ser fácil de entender e colocar em prática, para quem tem pouca prática parece ser indecifrável (indecifrável). Portanto, muitos programadores usam um esquema criptográfico em suas utilizações que é a cifra de Vigenère e pode ser facilmente descriptografada por qualquer criptógrafo. 2.9.3 Máquina de Enigma Durante as guerras Mundiais e, em particular, a Segunda Guerra Mundial, o desenvolvimento de tecnologia para fins militares tornou-se parte fundamental: desde o aumento do armamento o uso de aeroplanos e submarinos até o uso de dispositivos de comunicação e vigilância como o rádio. transmissor e radares. Esses dispositivos foram associados o máquinas de criptografia, ou seja, máquinas que produzem códigos combinatórios, equipadas com rotores criptográficos, cujo representante mais significativo foi a máquina Enigma, incorporada às forças armadas germânicos na decada de 1920. A Guerra Mundial foi um fator determinante na muito dinâmica da guerra mas também resultou na invenção do primeiro computador do mundo. A história da máquina Enigma remonta à invenção do holandês Hugo Alexander Koch. A invenção de Koch foi um prototipo de máquina com rotores eletromecânicos capazes de produzir mensagens secretas. No entanto, embora tenha patenteado a invenção, Koch não a desenvolveu. Esse papel ficou ao encargo da dupla Scherbius & Ritter.Em 1918, o engenheiro elétrico Arthur Sherbius e seu amigo Richard Ritter montaram uma fábrica para desenvolver e produzir máquinas criptográficas em massa. Scherbius e Ritters P A G E 1 0 fizeram várias tentativas de vender o modelo para a marinha Alemão. Ao dizer que esta tecnologia irá beneficiar os militares. A máquina foi comprada pela armada na década de 1920 e começou a ser utilizada, inclusive em submarinos. Na década de 1930, durante a era nazista, o modelo Enigma foi aprimorado e seu uso começou a se alastrar também no exército germânico. O uso da máquina exigia muitos cuidados, desde a configuração da chave que acionava a máquina até a utilização do código do manual. A chave utilizada para configurar a máquina deve mudar seu código diariamente, sob pena de ser rastreada por tecnologia semelhante e ver suas mensagens descriptografadas. Durante a Segunda Guerra Mundial, quando as máquinas Enigma foram amplamente utilizadas pela inteligência militar germânica, um grupo de matemáticos e engenheiros polacos, juntamente com a inteligência militar britânica, conseguiu desenvolver um modelo ainda mais avançado que os alemães. Este modelo foi o primeiro a ser capaz de decifrar códigos Enigma. A operação organizada pelas tropas polaco-britânicas foi chamada de "Ultra". Como o historiador Norman Davies aponta em seu trabalho Europe at War, O Projeto Ultra foi fundado no final de 1939 em Bletchley Park, no centro da Inglaterra. Descobriu-se que alguns operadores de rádio germânicos, em particular um homem chamado Walter, ignoravam as formações e usavam a mesma chave para telefonar seus carros todos os dias. Calcularam, acertadamente, que as unidades alemãs espalhadas por toda a Europa transmitiriam mensagens idênticas pelo aniversário do Führer, em abril de 1940. E eles possuíam uma máquina Enigma atualizada que a armada Britânica recebeu de um navio meteorológico alemão capturado na costa da Gronelandia. A partir dessas “lacunas” dos alemães os britânicos conseguiram desmontar a estrutura dos códigos aplicados pelos nazistas. Em uma segunda etapa, os alemães passaram a desenvolver um modelo mais sofisticado, apelidado de B-schreiber, em 1944. Para capturar os códigos desse novo modelo, foi preciso colaborar com o homem que hoje é reverenciado como o P A G E 1 0 "pai da ciência da computação." Alan Turing. A invenção de Turing da famosa calculadora eletromecânica conhecida como bomba expandiu a capacitância de decifrar o código Enigma. E esta invenção levou à criação de gigantes. qual foi o primeiro computador. Norman Davies explica isso no livro acima: Então a Turing Pump, uma calculadora elétrica, foi capaz de calcular a álgebra e descobrir a resposta. No segundo ano da guerra Bletcheley Park leu todas as transmissões do enigma três horas após o início de cada dia. Eles acompanham todas as atualizações feitas pelos alemães. E em 1944, para competir com o B-schreiber, eles inventar o primeiro computador eletrónico do mundo o Colossus. 2.9.4 RSA RSA (Rivest-Shamir-Adleman) é um dos primeiros sistemas criptográficos de chave pública e é frequentemente usado para transmissão segura de dados. Neste sistema de encriptação, a chave de encriptação é pública e é diferente da chave de desencriptação que é secreta (privada). No RSA, essa assimetria se baseia na dificuldade prática de fatorar o produto de dois grandes números primos, o "problema de fatoração". RSA consiste primeiras letras dos apelidos de Ron Rivest, Adi Shamir e Leonard Adleman, os fundadores da atual empresa, RSA Data Security, Inc., que foram os primeiros a descrever o algoritmo em 1978. Clifford Cocks, um matemático inglês que trabalhava para a agência de P A G E 1 0 inteligência britânica Government Communications Headquarters (GCHQ), desenvolveu um sistema equivalente em 1973, mas não foi revelado até 1997. [ 1 ] É considerado o mais seguro, pois destroça todas as tentativas de destruí-lo. Foi também o primeiro algoritmo a permitir criptografia e assinaturas digitais, e uma das maiores inovações em criptografia de chave pública. Um usuário RSA cria e publica uma chave com base em dois números primos grandes, juntamente com um valor auxiliar. Os números primos devem ser mantidos em segredo. Qualquer um pode usar a chave pública para criptografar a mensagem mas com os métodospublicados atualmente, e se a chave pública for muito grande, somente alguém que conheça os primos poderá decodificar a mensagem. A violação de criptografia RSA é conhecida como um problema RSA. Se é tão difícil quanto o problema de fatoração continua a ser cabido. RSA é um algoritmo relativamente lento. Consequentemente, é menos usado para criptografia direta de dados do usuário. Com mais frequência, o RSA alterna a chave de criptografia compartilhada para criptografia de chave simétrica, permitindo que as operações de criptografia para descriptografia em lote sejam realizadas o taxas muito mais velozes. 2.9.5 DES Criptografia O algoritmo Data Encryption Standard (DES) é um algoritmo ferramenta de criptografia simétrica que criptografa blocos de texto simples de 64 bits e usa chave de 64 bits. P A G E 1 0 A primeira etapa no processo de criptografia ocorre na permutação inicial. Nesta etapa, é realizada uma operação de transposição de bits. Esta transposição é feita em pedaços de 64 bits da mensagem de texto simples. Nesta fase, você vai realizando muitas operações lógicas de substituição e transposição e será executado em 16 rodadas. Em seguida, uma operação de transposição é a inversão realizada no arranjo inicial. Eles existem alguns sucessores do DES, como: Triple DES, G-DES, DES-X,LOKI89. 2.9.6 Desenvolvimento Cifra de Cesar (figura 1, fonte: autoral) Primeiramente, ele considera a sua decisão se quer criptografar a frase ou descriptografar, dependendo da sua escolha o input “opção” “selecionará https://pt.wikipedia.org/wiki/Cifra_de_Vigen%C3%A8re P A G E 1 0 qual dos ifs será acionado, caso selecionada a opção 1, dará como início o processo de criptografia da frase. (figura 2, fonte: autoral) Na opção 1 ele cria um “def” (função) para a criptografia da frase chamada “def cripto(frase)”, diante disso, nessa função o programa receberá uma frase que será traduzidada utilizando a Cifra de Cesar. Foi criado um “for” para cada letra da citação, portanto hospedará e transformará ela em outra. A variável “tradutor” vai adicionando letra a letra até consumar a expressão. (figura 3, fonte: autoral) P A G E 1 0 (figura 4, fonte: autoral) Na opção 2, a função de descriptografar a frase, repete o mesmo processo da criptografia, invertendo os valores de cada letra, no qual realizará o processo inverso da opção 1, dando como resultado descriptografia da frase que vai ser consebida no input. (figura 5, fonte: autoral) P A G E 1 0 Cifra de Vigenere (figura 6, fonte: autoral) O codigo inicia-se com uma variavel “a” e uma lista chamada “abcedario”, a qual contém todas as letras do alfabeto. (figura 7, fonte: autoral) Após o código iniciar, ele irá transpostar o print, pedindo uma escolha entre criptografar e descriptografar e receberá o texto que será criptografado ou descriptografado, a chave que ira ser usada na criptografia ou descriptografia do programa. P A G E 1 0 (figura 8, fonte: autoral) (figura 9, fonte: autoral) Após o programa receber o texto e a chave, se a chave acabar sendo maior que a frase, aparecerá um print dizendo “A chave é maior que a frase”, porém se a chave for menor que a frase, o programa irá equiparar o tamanho da chave para o tamanho da frase. Após isso será o processo de criptografia, que vai embaralhar as letras de acordo com a cifra de vigenere, usando em base a cifra de cesar, depois retornará com a frase criptografada. P A G E 1 0 (figura 10, fonte: autoral) O mesmo processo é feito para descriptografar a frase. ( figura 11, fonte: autoral) 3 Resultados e Discussão Ao realizar as atividades práticas de supervisionadas (APS), observamos que, as cifras empregadas em discussão apresentam desvantagens e vantagens, que precisam ser colocadas em evidências antes de executá-la. Os benefícios de se usar a Cifra de Cesar, englobam vários fatores. A cifra, é um dos métodos mais fáceis de utilizar a criptografia, tal qual fornece o mínimo de segurança, além disso emprega uma tecla curta para concluir o processo inteiro, aliás é o melhor a ser manipulado, na qual o quesito não ordena usar um sistema de codificação complicada e para melhor experiência, exige pouco recurso de computação. As desvantagens englobam por si, só três fatores principais, a qual diz respeito o uso de uma estrutura simples, portanto limita seus empenhos. Outro fator, exala um nível mínimo de P A G E 1 0 segurança às informações, sendo assim, resulta, às vezes, um perigo a ser temido. Por final, o último infortúnio a ser descrito, tal como a frequência do padrão da letra que fornece uma grande pista para decifrar todas as mensagens, vindo à tona mais uma vez a problemática segurança, por consequência deve ser observado com atenção. A cifra de Vigenère é um sistema de cifra de substituição polialfabética, porém a mesma letra da mensagem simples pode, dependendo de sua posição nela, ser substituída por letras diferentes, ao contrário de um sistema de cifra monoalfabética como a cifra de César (que ela usa no entanto como Um componente). 4 Considerações Finais No término desta pesquisa, obtivemos a percepção e a certeza de que falta muita coisa para se pensar em concluí-lo. Observamos também o quanto temos que aprender diante do assunto fornecido para este trabalho em um curto espaço de tempo, porém admitimos que foi enriquecedor o conhecimento obtido através do trabalho. Porém desafios e dificuldades são necessários para um bom aprendizado. Agradecemos o apoio da Professora Luciana. P A G E 1 0 Referências Bibliográficas CRACKINK THE CODE (em inglês). Central Intelligence Agency. Diponível em: < https://www.cia.gov/news-information/featured-story-archive/2007-featured-story- archive/cracking-the-code.html > Acessado em Agosto de 2017. CRUZ, ADRIANO JOAQUIM DE OLIVEIRA. Algoritmos. Núcleo de Computação Eletrônica da Universidade Federal do Rio de Janeiro. Disponível em < http://equipe.nce.ufrj.br/adriano/c/apostila/algoritmos.htm> Acessado em Agosto de 2017. FIARRESGA, Victor Manuel Calhabrês; Jorge Nuno Oliveira e SILVA (2010). Teses de Mestrado. Repositório aberto da Universidade de Lisboa. Disponível em: < http://repositorio.ul.pt/handle/10451/3647> Acessado em Agosto de 2017. GTA. Assinatura Digital. Disponível em <https://www.gta.ufrj.br/grad/07_1/ass- dig/TiposdeCriptografia.html>, Acessado em Agosto de 2017. Mello, R.S. Ordenação de Dados, 2002. Disponível em: http://www.inf.uri.com.br/neilor/apostila-ED2.pdf. Acessado em: Jun/2012. PETSI. Grupo PET-Sistemas de Informação - USP/EACH (2018). Disponível em <http://www.each.usp.br/petsi/jornal/?p=1545>, Acessado em julho de 2018. WIKIPÉDIA. Desenvolvido pela Wikimedia Foundation. Apresenta conteúdo enciclopédico. Disponível em:<http://pt.wikipedia.org/w/index.php?title=Wikip%C3%A9dia&oldid=15762238 >. Acesso em: 23 Ago 2017. WIKIPÉDIA. Desenvolvido pela Wikimedia Foundation. Apresenta conteúdo enciclopédico. Disponível em:< https://pt.wikipedia.org/wiki/Hist%C3%B3ria_da_criptografia >. Acesso em: 20 Out 2022. CLICKSIGN. Desenvolvido pela Clicksign. Disponível em:< https://www.clicksign.com/blog/tipos-de-codigos-de-criptografia/>.Acesso em: 20 Out 2022 WIKIPÉDIA. Desenvolvido pela Wikimedia Foundation. Apresenta conteúdo enciclopédico. Disponível em:< https://pt.wikipedia.org/wiki/RSA_(sistema_criptogr%C3%A1fico)>. Acesso em: 20 Out 2022. FAP. Disponivel em:<https://www.fap.com.br/fap-ciencia/edicao_2009_3/004.pdf >. Acesso em: 26 Out 2022 http://www.cia.gov/news-information/featured-story-archive/2007-featured-story- http://equipe.nce.ufrj.br/adriano/c/apostila/algoritmos.htmhttp://repositorio.ul.pt/handle/10451/3647 http://www.gta.ufrj.br/grad/07_1/ass- http://www.gta.ufrj.br/grad/07_1/ass- http://www.inf.uri.com.br/neilor/apostila-ED2.pdf http://www.inf.uri.com.br/neilor/apostila-ED2.pdf http://www.each.usp.br/petsi/jornal/?p=1545 http://pt.wikipedia.org/w/index.php?title=Wikip%C3%A9dia&oldid=15762238 https://www.fap.com.br/fap-ciencia/edicao_2009_3/004.pdf P A G E 1 0 ANEXOS - Código Fonte • CRIPTOGRAFIA DE CESAR print("Digite uma opção") print("1-Criptografar") print("2-Descriptografar") opcao = int(input("Sua Escolha:")) if opcao == 1: def cripto(frase) : tradutor = "" for letra in frase: if letra in "Aa": tradutor = tradutor + "d" elif letra in "Bb": tradutor = tradutor + "e" elif letra in "Cc": tradutor = tradutor + "f" elif letra in "Dd": tradutor = tradutor + "g" elif letra in "Ee": tradutor = tradutor + "h" elif letra in "Ff": tradutor = tradutor + "i" elif letra in "Gg": tradutor = tradutor + "j" elif letra in "Hh": tradutor = tradutor + "k" elif letra in "Ii": tradutor = tradutor + "l" elif letra in "Jj": tradutor = tradutor + "m" elif letra in "Kk": tradutor = tradutor + "n" elif letra in "Ll": tradutor = tradutor + "o" elif letra in "Mm": tradutor = tradutor + "p" elif letra in "Nn": tradutor = tradutor + "q" elif letra in "Oo": tradutor = tradutor + "r" elif letra in "Pp": tradutor = tradutor + "s" elif letra in "Qq": tradutor = tradutor + "t" elif letra in "Rr": tradutor = tradutor + "u" elif letra in "Ss": tradutor = tradutor + "v" elif letra in "Tt": tradutor = tradutor + "w" elif letra in "Uu": tradutor = tradutor + "x" elif letra in "Vv": tradutor = tradutor + "y" elif letra in "Ww": P A G E 1 0 tradutor = tradutor + "z" elif letra in "Xx": tradutor = tradutor + "a" elif letra in "Yy": tradutor = tradutor + "b" elif letra in "Zz": tradutor = tradutor + "c" else: tradutor = tradutor + letra return tradutor print(cripto(input("Digite sua frase: "))) if opcao == 2: def descripto(frase) : tradutor = "" for letra in frase: if letra in "Aa": tradutor = tradutor + "x" elif letra in "Bb": tradutor = tradutor + "y" elif letra in "Cc": tradutor = tradutor + "z" elif letra in "Dd": tradutor = tradutor + "a" elif letra in "Ee": tradutor = tradutor + "b" elif letra in "Ff": tradutor = tradutor + "c" elif letra in "Gg": tradutor = tradutor + "d" elif letra in "Hh": tradutor = tradutor + "e" elif letra in "Ii": tradutor = tradutor + "f" elif letra in "Jj": tradutor = tradutor + "g" elif letra in "Kk": tradutor = tradutor + "g" elif letra in "Ll": tradutor = tradutor + "i" elif letra in "Mm": tradutor = tradutor + "j" elif letra in "Nn": tradutor = tradutor + "k" elif letra in "Oo": tradutor = tradutor + "l" elif letra in "Pp": tradutor = tradutor + "m" elif letra in "Qq": tradutor = tradutor + "n" elif letra in "Rr": tradutor = tradutor + "o" elif letra in "Ss": tradutor = tradutor + "p" elif letra in "Tt": tradutor = tradutor + "q" elif letra in "Uu": tradutor = tradutor + "r" elif letra in "Vv": tradutor = tradutor + "s" elif letra in "Ww": P A G E 1 0 tradutor = tradutor + "t" elif letra in "Xx": tradutor = tradutor + "u" elif letra in "Yy": tradutor = tradutor + "v" elif letra in "Zz": tradutor = tradutor + "w" else: tradutor = tradutor + letra return tradutor print(descripto(input("Digite sua frase: "))) P A G E 1 0 • CIFRA DE VIGENERE a = 10 abcdario = ['A','B','C','D','E','F','G','H','I','J','K','L','M','N','O','P','Q','R','S',' T','U','V','W','X','Y','Z'] while a!=0: TextoFinal = "" print("Digite uma opção") print("1-Criptografar") print("2-Descriptografar") opcao = int(input("Sua Escolha:")) texto = ''.join(str(input("Digite o Texto: ")).upper().split()) key = str(input("Digite sua chave: ")).upper() keyFinal = "" if(len(key)>len(texto)): print("A chave é maior que a frasel") else: i = int(0) while (len(keyFinal) < len(texto)): keyFinal += key[i] i +=1 if(i == len (key)): i = 0 for i in range(len(texto)): if(texto[i]) != ' ': posicao_letra_frase = int(abcdario.index(texto[i])) posicao_letra_chave = int(abcdario.index (keyFinal[i])) if(opcao == 1): TextoFinal += str(abcdario[(posicao_letra_frase+posicao_letra_chave) % len (abcdario)]) else: TextoFinal += str(abcdario[(posicao_letra_frase- posicao_letra_chave) % len (abcdario)]) else: TextoFinal += ' ' print("Frase final: {}".format(TextoFinal)) input() pass P A G E 1 0 P A G E 1 0 P A G E 1 0 P A G E 1 0 Atividade Prática Supervisionada 1 Introdução 1.1 Objetivo do trabalho 2 Referencial Teórico 2.1 História da Criptografia 2.2 Cifras e Códigos 2.3 Chave Criptográfica 2.4 Criptografia Simétrica 2.5 Criptografia Assimétrica Um modelo de criptografia criado na decada de 1970, pelo matemático Clifford Cocks, que trabalhou para o serviço secreto inglês, GCHQ, em que cada parte envolvida na comunicação utiliza duas chaves diferentes (assimétricas) e complementares, uma priv... As mensagens só podem ser acessadas por pessoas com uma chave fechada (privada) que possa abrir a fechadura. A principal vantagem desse método é sua segurança, pois não é necessário (e não deve) compartilhar a chave privada. Por outro lado, o tempo ... Quando terminado Ele criptografa sua mensagem com a chave pública do destinatário (IRADO) e a envia. Quando o destino (RAIVOSA) recebe a mensagem ele simplesmente a descriptografa com sua chave privada. O intruso (CHARLIE) que interceptou a mensagem ... Como a chave pública está amplamente disponível, não há necessidade de enviar chaves como no modelo simétrico. A confidencialidade da mensagem é garantida desde que a chave privada seja segura. Ocorrência contrário, qualquer pessoa comacesso à sua c... 2.6 Criptografia Moderna 2.7 Criptografia Quântica 2.8 Assinatura Digital 2.9.1 Cifra de César Cifra de César, também conhecida como cifra de troca, código de César ou troca de César, é uma das mais simples e conhecidas técnicas de criptografia. É um tipo de cifra de substituição na qual cada letra do texto é substituída por outra, que se apre... 2.9.2 Cifra de Vigenère 2.9.3 Máquina de Enigma 2.9.4 RSA 2.9.5 DES Criptografia 2.9.6 Desenvolvimento Cifra de Cesar 3 Resultados e Discussão 4 Considerações Finais Referências Bibliográficas