Baixe o app para aproveitar ainda mais
Prévia do material em texto
UNIVERSIDADE PAULISTA – UNIP CIÊNCIA DA COMPUTAÇÃO CRIPTOGRAFIA DE SUBSTITUIÇÃO GABRIEL NOGUEIRA SHIOTA R.A N181842 IGOR CORREIA SOARES R.A N1399C-4 IGOR HENRIQUE GOMES R.A D42IIH-4 JUAN PAULO PINTO RODRÍGUEZ R.A T2796J-4 PAULO CESAR NUNES DA SILVA R.A N175BG-9 SÃO PAULO – SP 2017 UNIVERSIDADE PAULISTA – UNIP CIÊNCIA DA COMPUTAÇÃO CRIPTOGRAFIA DE SUBSTITUIÇÃO Atividade Pratica Supervisionada tem como proposta informar que criptografia são conceitos técnicos usados para codificar uma informação, de tal forma que somente o seu destinatário e o emissor da mensagem consigam acessá-la orientado pelo prof. Roberto Leminsk. SÃO PAULO – SP 2017 SUMÁRIO 3 OBJETIVO DO TRABALHO ................................................................................... 5 4 INTRODUÇÃO ........................................................................................................ 6 5 CRIPTOGRAFIA: CONCEITOS GERAIS ............................................................... 8 6 TÉCNICAS CRIPTOGRÁFICAS MAIS UTILIZADAS E CONHECIDAS............... 11 6.1 Cifra de César .................................................................................................... 11 6.2 Crifra de Vigenère .............................................................................................. 12 6.2.1 Funcionamento da cifra ................................................................................... 12 6.3 Enigma ............................................................................................................... 13 6.4 Criptografia Simétrica ......................................................................................... 14 6.5 Criptografia Assimétrica...................................................................................... 15 6.6 Criptografia nas redes sem fio ............................................................................ 18 6.7 WEP ( Wired Equivalent Privacy) ....................................................................... 18 6.8 WPA e WPA2 ..................................................................................................... 19 6.9 Assinatura digital ................................................................................................ 19 6.10 Criptografia quântica......................................................................................... 20 6.11 Monogrâmicas .................................................................................................. 20 6.12 Poligrâmicas ..................................................................................................... 21 6.13 Homofônicas ..................................................................................................... 21 6.14 Tomográficas .................................................................................................... 21 6.15 Criptografia Hash .............................................................................................. 21 6.16 Combinaçâo dos tipos ...................................................................................... 22 7 DISSERTAÇÃO .................................................................................................... 23 7.1 Estruturação, conceitos e fundamentação.......................................................... 23 7.2 Benefícios em relação às técnicas anteriores. ................................................... 24 7.3 Aplicações que fazem ou fizeram uso da técnica. .............................................. 26 7.4 Discussão comparativa entre esta técnica e outras conhecidas ........................ 27 7.5 Vulnerabilidades e falhas .................................................................................... 27 7.6 Melhorias propostas e/ou implementadas .......................................................... 28 8 PROJETO DO PROGRAMA ................................................................................. 29 9 RELATÓRIO DE LINHAS DE CÓDIGOS ............................................................. 33 10 APRESENTAÇÃO DO PROGRAMA .................................................................. 35 BIBLIOGRAFIA ................................................................................................... 36 FICHA DE ATIVIDADES PRÁTICAS SUPERVISIONADAS .............................. 37 LISTA DE ILUSTRAÇÕES Imagem 1 - Esteganografia ........................................................................................ 8 Imagem 2 - Criptografia por transposição .................................................................. 9 Imagem 3 - Criptografia por substituição .................................................................. 10 Imagem 4 - Criptografia de César ............................................................................ 11 Imagem 5 - Exemplo aplicando criptografia de César .............................................. 12 Imagem 6 - Régua de Saint-Cyr ............................................................................... 13 Imagem 7 - Máquina Enigma e 3 rotores usados para criptografar .......................... 14 Imagem 8 - Linhas de código incrementam a posição ............................................. 23 Imagem 9 - Linhas de código que calculam a posição inicial ................................... 24 Imagem 10 - Frequência de caracteres na língua portuguesa ................................. 25 Imagem 11 - Texto criptografado pelo programa desenvolvido ................................ 25 Imagem 12 – Sequência de execução do programa de criptografia ......................... 30 Imagem 13 – Linha de código para inserção do texto claro em vetor ...................... 30 Imagem 14 – Fragmento da tabela ASCII ................................................................ 31 Imagem 15 – Linhas de código que apresentam o texto decodificado ..................... 32 Imagem 16 – Programa em execução solicitando texto para criptografar ................ 35 Imagem 17 - Programa em execução apresentando texto criptografado ................. 35 Imagem 18 - Programa em execução apresentando texto decodificado .................. 35 5 3 OBJETIVO DO TRABALHO Ambientes físicos podem ser restringidos mediante barreiras físicas como cordões de isolamento, distanciamento de segurança e controlado por demarcações visíveis, vigilância constante ou uso de objetos que isolem de alguma forma aquilo que se quer restringir, como no exemplo de caso descrito inicialmente para desenvolver o presente trabalho, um navio contaminado com lixo tóxico apreendido deve ter o acesso controlado para evitar contaminação mediante uso de roupas especiais, distanciamento específico e acesso apenas por helicóptero por pessoas autorizadas. Porém, mesmo barreiras físicas podem tornar-se mais seguras com a utilização de senhas de acesso. Há casos em que o controle de acesso é dirigido à informação propriamente dita, independentemente de como ela se apresente, fisicamente, impressa em papel, ou mais abstratamente no meio digital trafegando em uma rede de internet ou intranet. Voltado a aumentar a segurança, objetiva-se desenvolver um sistema de criptografia que restrinja o acesso a informações confidenciais ou até mesmo locais em que seja necessário o controle de acesso mediante a codificação de textos de forma que fiquem ocultos o significado e a escrita originais, para desenvolver o sistema de criptografia torna-se necessário atender a um objetivo secundário, porém não menos importante, de pesquisar e levantar os processos de criptografia existentes e descrever previamentesuas formas de implementação e possíveis falhas na proteção das informações. 6 4 INTRODUÇÃO A Criptografia moderna se ocupa muito menos de sigilo do que aproximadamente trinta anos atrás, quando justificava plenamente a etimologia da palavra criptografia, cuja origem grega significa escrita oculta. Hoje, técnicas criptográficas são empregadas na prevenção de incidentes de segurança. No decorrer deste trabalho será possível ter uma visão panorâmica de algumas técnicas criptográficas atuais mais importantes para a consecução de requisitos fundamentais da segurança da informação, como sigilo, autenticação e integridade, dos quais dependem, direta ou indiretamente, outros requisitos de segurança. Um requisito muito em voga é a disponibilidade de sistemas servidores, alvos constantes de ataques de negação de serviço: embora os métodos usuais para tratamento e recuperação de incidentes de segurança não usem técnicas criptográficas, protocolos de autenticação podem prevenir danos pelo abuso do sistema por usuários mal-intencionados. O sigilo de mensagens, ou de identidades, pode ser necessário a uma aplicação (correio eletrônico, telefonia, mensageria em geral, compras com moeda eletrônica em que anonimato é desejável), ou auxiliar a consecução de outro requisito, como a autenticação. Por exemplo, quando um usuário faz um login, sua senha deve ser transmitida em sigilo, sob pena de sua captura e uso por um usuário não autorizado. A segurança da informação é um dos objetivos básicos da criptografia. A informação tornou-se um elemento fundamental na vida das pessoas e das empresas. Hoje, utiliza-se cada vez mais recursos computacionais para armazenar, produzir e distribuir informações. Com isso, aumenta-se também a preocupação com a segurança desta informação e com a vulnerabilidade dos sistemas computacionais que as gerenciam. Pode-se definir segurança em rede como o processo de prevenir e detectar qualquer uso não autorizado de uma rede de computadores. Prevenir tem o sentido de tomar medidas que impeçam ou, pelo menos, dificultem ao máximo, o acesso de pessoas não autorizadas (chamadas de “intrusos”) a qualquer parte de uma rede de computadores. 7 Detectar significa afirmar que alguém tentou acessar o sistema, como foi a tentativa de acesso (o chamado “ataque”), se foi ou não bem-sucedida, nesses casos afirmativo, é possível perceber exatamente o que o intruso fez. Os sistemas que aparentam despertar pouco interesse aos hackers, como os de uma universidade ou os domésticos ligados à internet, são constantemente alvos de ataques. Detectar estas investidas e os métodos utilizados é muito importante para uma política de segurança. Atualmente, a criptografia é comumente usada na internet, principalmente na proteção de transações financeiras, em segurança e acesso em comunicação. A criptografia quântica também é um tema que tem ganhado atenção nos laboratórios de pesquisa, ela se destaca por não correr um alto risco de interceptação ao necessitar de uma comunicação secreta prévia para envio de chaves, pois esta técnica criptográfica não se baseia em funções, mas nas leis da física. A criptografia, ao contrário do que muitos pensam, não é um recurso que passou a ser usado recentemente, mas segundo a história, vem se aprimorando desde épocas clássicas, iremos aprofundar no assunto no decorrer desta pesquisa. 8 5 CRIPTOGRAFIA: CONCEITOS GERAIS Primeiramente é fundamental compreender o significado da palavra criptografia com origem em duas palavras gregas: cryptos, que significa oculto ou secreto e graphein, que significa grafia ou escrita, então o termo criptografia pode ser compreendido como escrita secreta ou escrita oculta, este último significado pode levar a algum tipo de confusão com a esteganografia como sendo uma das formas de critografia, apesar das palavras serem bem diferentes em português, possuem um significados muito similares, esteganografia é formada inicialmente pela palavra grega steganos, que significa esconder, camuflar ou mascarar. A diferença principal entre esteganografia e criptografia está na forma ou sistema para tornar a mensagem oculta à leitores indesejáveis, na criptografia a mensagem permanece escrita de forma visível e geralmente utiliza o alfabeto corrente apenas transpondo ou substituindo caracteres de forma a tornar a mensagem indecifrável àqueles que não tenham permissão para a leitura da mensagem. Por outro lado, a esteganografia oculta a mensagem seja um texto ou até mesmo imagens em outras imagens ou sons em materiais fonográficos de forma que olhos e ouvidos humanos não possam perceber. Imagem 1 - Esteganografia Fonte: Banco Central do Brasil, 2017. Outro aspecto importante a ser bem compreendido é o da classificação da mensagem, pois uma vez que ela será codificada se tornará em um outro tipo de mensagem, a mensagem escrita original, usualmente é classificada ou denominada como mensagem clara ou texto plano, e a mensagem resultante do processo criptográfico é identificada como mensagem codificada ou cifrada, já o processo de codificação de um texto pode ser chamado de encriptação ou cifragem. 9 É comum nas técnicas de cifragem haver a fragmentação do texto claro em valores unitários que são identificados como caracteres, os caracteres podem ser letras, números, símbolos como arroba, cifrão, entre outros, cada caractere deve ser transformado em um novo para evitar a quebra do código de encriptação. Em consequência à criptografia ou codificação de textos desenvolveu-se a criptoanálise que busca decifrar mensagens, em algumas bibliografias o termo decifrar assume significado diferente do termo decodificar ou dedriptar, pois em um processo de comunicação por mensagens criptografadas, tanto o emissor quanto o receptor são capazes de decodificar mensagens de forma geralmente simples e pré-definida por conhecerem o processo que cifra a mensagem e o processo que o torna claro novamente, decifrar pode implicar em descobrir a cifra utilizada na codificação da mensagem ignorando previamente qualquer tipo de senha, chave ou fórmula utilizada para cifragem. Existem inúmeros processos de criptografia que foram sendo desenvolvidos de acordo com a necessidade de obter mais segurança ou até mesmo pela quebra do sistema de cifragem tornando-a obsoleta, esses processos são agrupados em alguns tipos básicos, os mais comuns são: simétrico, assimétrico, transposição e substituição. A criptografia por transposição consiste no deslocamento dos caracteres de um determinado texto claro ou plano, há diversos meios de fazer este tipo de cifra que foram implementados gradualmente para dificultar a quebra da cifra e serão abordados mais detalhadamente no capítulo sobre técnicas de criptografia. Imagem 2 - Criptografia por transposição Fonte: autoral As técnicas de criptografia por substituição utilizam caracteres externos ao texto claro ou plano, geralmente as formulas atribuem um caractere determinado para cada letra, o que torna esse tipo de cifra, em sua forma mais básica, um pouco mais simples de ser quebrada do ponto de vista da criptoanálise, isso se torna possível por 10 contagens de letras mais frequentes no idioma em que o texto claro foi escrito, por este motivo também foram implementadas várias técnicas para tornar a quebra da cifra mais difícil, essas técnicas serão vistas adiante no capítulo de técnicas de criptografia. Imagem 3 - Criptografia por substituição Fonte: autoral A criptografia simétrica, grosso modo, utiliza uma senha que faz com que o texto plano seja cifrado, a senha é única e por este motivo pode ser mais vulnerável aquebras, por outro lado, os tipos de criptografia assimétrica possuem duas chaves, uma chamada de pública e outra privada, a pública é compartilhada eletronicamente sem que haja uma preocupação de mantê-la em total segredo, já a chave privada é de conhecimento exclusivo de emissor e receptor obtida por cálculos matemáticos que serão detalhados um pouco melhor em técnicas de criptografia. 11 6 TÉCNICAS CRIPTOGRÁFICAS MAIS UTILIZADAS E CONHECIDAS 6.1 Cifra de César Historicamente, um dos primeiros registros que se tem de um processo de criptografia de textos é a chamada cifra de César, tornou-se assim conhecida por seu uso para comunicação entre Júlio César e seus soldados de alta patente ou políticos de forma que o teor das mensagens não pudesse ser compreendido caso alguém fizesse a interceptação delas no caminho. O funcionamento é bastante simples, isso porque a escrita por si só já é um tipo de código e na época do império romano, não era tão comum que todos soubesse ler e escrever como nos dias de hoje, além disso, os processos de criptoanálise para quebrar os códigos de cifragem forçaram a evolução das técnicas pois a cada quebra elas tornaram-se obsoletas e uma nova forma deveria ser criada para aumentar a dificuldade de descoberta do conteúdo das mensagens. Pode-se definir o código de cifragem como Texto Cifrado=Texto clato+3, ou seja, cada caractere era substituído por um correspondente no alfabeto em 3 letras consecutivas, conforme demonstrado na imagem a seguir, o caractere “B” foi substituído pelo caractere “E”. Imagem 4 - Criptografia de César Fonte: ZOCHIO, 2016. Além de ser considerada um tipo de cifra de substituição por usar caracteres externos ao texto claro para cifragem, pode ser classificada como monoalfabética ou 12 simples, pois utiliza apenas um correspondente fixo para cifrar cada caractere do texto claro, como se um novo alfabeto fosse usado que inicia na letra D, ou seja: Alfabeto claro: ABCDEFGHIJKLMNOPQRSTUVWXYZ Alfabeto cifrado: DEFGHIJKLMNOPQRSTUVWXYZABC Imagem 5 - Exemplo aplicando criptografia de César Fonte: autoral. 6.2 Crifra de Vigenère A cifra de Vigenère é uma técnica de criptografia por substituição poli alfabética que utiliza uma série de cifras de César diferentes, baseadas nas letras de uma palavra-chave. 6.2.1 Funcionamento da cifra Essa cifra consiste em várias cifras de César utilizadas em sequência, com valores de deslocamento diferentes obtidos a partir de uma palavra-chave (uma espécie de "senha"). Entre as cifras de substituição, a cifra de Vigenère se assemelha às técnicas de transposição geométricas pois utiliza a distribuição de caracteres em forma de matriz, porém ela é pré-definida pela ordem alfabética horizontalmente e verticalmente, é tida como polialfabética pois o alfabeto inicia sempre em uma letra subsequente, além disso, assim como técnicas de transposição que usam chave numérica obtida por uma palavra, a cifra de Vigenère usa uma palavra ou texto chave posicionado horizontalmente no topo das colunas combinado ao texto claro que é posicionado na primeira coluna à esquerda e como num diagrama ou como coordenadas em um plano cartesiano a letra substituta é definida conforme pode-se observar na régua de Saint-Cyr adotada para facilitar na codificação e decodificação 13 de textos, um texto claro “U” é cifrado utilizando a chave “H” e como saída a letra “C”, o nome da cifra refere a autoria de Blaise de Vigenère nascido em 1523, há registros de que sua cifra tenha sido quebrada somente em 1854 pelo matemático Charles Babbage, porém nenhum documento oficial foi publicado para notificar a quebra da cifra, somente em 1863 tal registro foi formalmente registrado por Kaisiski. Imagem 6 - Régua de Saint-Cyr Fonte: Ufscar, 2017. 6.3 Enigma Enigma é uma máquina desenvolvida pelo alemão Arthur Scherbius por volta de 1918, a invenção teve a finalidade de criptografar mensagens com instruções para movimentações das tropas alemãs, locais que seriam atacados, entre outras 14 informações pertinentes para o avanço do exército nazista, foi utilizada principalmente durante a segunda guerra mundial. O sistema de cifra, que pode ser classificado como de substituição, proporcionou grande segurança à criptografia pelo número de variações possíveis provenientes dos rotores que se movimentavam simultaneamente a cada letra digitada em seu teclado similar ao de uma máquina de escrever, um modelo de 3 rotores poderia ser ajustado em cerca de 1,07*10^23 maneiras diferentes, algo comparável com uma chave de 77bits (ZOCHIO, 2016, p.43), para quebrar a criptografia e tentar barrar o progresso dos nazistas, o exército inglês recrutou uma equipe de matemáticos e linguistas e resultou no desenvolvimento da máquina conhecida como a Bomba de Turing, Alan Turing e Gordon Welchman foram os responsáveis pela construção da máquina e também pela forma de operação de modo a decriptar os textos alemães que tinham a troca de senha diariamente. Imagem 7 - Máquina Enigma e 3 rotores usados para criptografar Fonte: Enigma, 2017. 6.4 Criptografia Simétrica Desde a década de 70 já eram utilizadas técnicas de criptografia simétricas, a principal característica dessas técnicas é a utilização de uma mesma chave para 15 criptografar e para decodificar, seu tamanho é determinado em bits e quanto mais bits, maior a possibilidade de combinações e segurança, uma chave de 3 bits tem 2^3 combinações possíveis, ou seja, 8 combinações possíveis, desta forma, uma chave de 128 bits pode ter milhões e milhões de combinações. DES é uma das cifras simétricas mais usadas e conhecidas e foi desenvolvida com base na cifra de Feistel que dividia caracteres no formato binário em duas partes R e L, desta forma a cifra DES trabalha alterando os caracteres na forma binária em grupos de 64 bits utilizando bits verificadores em cada um dos 8 bytes gerando uma chave de 56 bits. Mesmo com todo o processo para elaborar as chaves e também o tamanho em bits gerando as combinações, a substituição é feita de forma monoalfabética e as chaves são iguais para cifrar e decodificar, o que contribuiu para que com o auxílio de computação em grande escala possa quebrar a cifra por tentativa e erro. 6.5 Criptografia Assimétrica A principal característica de funcionamento da criptografia assimétrica é a utilização de uma chave pública para fazer a cifragem e outra privada para fazer a decodificação, resumidamente, essas chaves são relacionadas por operações matemáticas que tornam possível a utilização de números diferentes não compartilhados publicamente, que por meio dessas operações matemáticas compartilhadas publicamente, geram uma chave única em comum para emissor e receptor, tal chave torna-se privada pois ela insere os números privados escolhidos por emissor e receptor nas operações matemáticas compartilhadas publicamente gerando um novo número comum para os dois sem que emissor conheça o número inserido pelo receptor nas operações matemáticas e vice e versa, o algoritmo inicial utilizando esse sistema foi desenvolvido Whitfield Diffie e Martin Hellman (ZOCHIO, 2016, p.111) e é conhecido como algoritmo de Diffie-Hellman. De forma simplificada, as operações matemáticas são potência e módulo em uma fórmula de ((base^potência)mod(módulo), os passos para se obter uma chave privada por meio do algoritmo Diffie-Hellman podem ser compreendidos com o uso de números pequenos conforme a seguir: 16 1 – Emissor e receptor escolhem publicamente números primos base=3 e módulo=7; 2 – Emissor escolhe um número secreto que nem mesmo o receptor saiba que é usado para a potênciae efetuar o cálculo e enviar o resultado que é o resto da divisão ao receptor. Potência=4. Então 3^4mod7=4. 3 – Receptor também escolhe um número secreto para usá-lo como potência e realizar o cálculo na mesma fórmula básica para ser enviado ao emissor. Potência=11. Então 3^11mod7=5. 4 – Emissor utiliza o número enviado pelo receptor na mesma fórmula, porém substituindo a base pelo número enviado pelo emissor, ou seja, 5^4mod7=2. 5 – Receptor utiliza o número enviado pelo emissor na mesma fórmula, porém substituindo a base pelo número enviado pelo receptor, ou seja, 4^11mod7=2. No final do processo do algoritmo Diffie-Hellman, a chave privada comum para emissor e receptor cifrarem e decodificarem mensagens é 2, este método serviu de fundamento para que, por volta de 1976, R.S. Rivest, A. Shamir e L. Adleman (COUTINHO, 2005, p.3) desenvolvessem, no Instituto de Tecnologia de Massachusetts (MIT), o algoritmo RSA que tem o nome formado pelas iniciais de seus desenvolvedores. Os passos envolvendo operações matemáticas são um pouco mais complexos que no algoritmo Diffie-Hellman, mas é possível que uma chave pública seja distribuída para cifragem de mensagens e a chave que decodifica as mensagens, que é privada, é diferente da pública, o que pode tornar a criptografia mais segura. Assim como no algoritmo de Diffie-Helmman, são utilizados números primos, para ilustrar os passos serão utilizados números pequenos, mas quanto maiores os números escolhidos para compor as chaves, maior a segurança pois para que seja descoberta a chave privada o número de combinações é muito maior, a seguir os passos resumidos para obter as chaves pública e privada pelo algoritmo RSA: 1 – Com dois números primos iniciais é calculada a chave pública, primeiramente o que será usado como módulo que será representado neste exemplo pela letra M, como já foi dito anteriormente, quanto maiores os números, mais segurança a chave terá, neste caso os números serão A=3 e B=7, números primos pequenos apenas para ilustrar os passos e facilitar os cálculos. 17 M = A*B --- M = 3*7 --- M=21 2 – Em seguida é calculada a potência que comporá a chave pública, como a chave privada usará um valor diferente como potência, serão diferenciadas P1 e P2 para as chaves pública e privada respectivamente, para calcular P1 é necessário fatorar um número obtido pelo produto entre A-1 e B-1 ou seja (3-1 e 7-1) que é 12. 12 = 2*2*3 Para se definir um número para P1 de forma que M=21 e P1 sejam primos entre si, ou seja, P1 não necessariamente deve ser primo, mas deve-se evitar que seja divisível por 2 ou 3, então P1=17. 3 – Para se definir a potência da chave privada (P2) deve-se primeiro encontrar o máximo divisor comum entre (A-1*B-1) e P1 analisando o resto para que posteriormente aplique-se no algoritmo estendido de Euclides. P1/(A-1*B-1) 17/12 = 1 --- resto 5; 12/5 = 2 --- resto 2; 5/2 = 2 --- resto 1; 2/1 = 2 --- resto 0; Aplicando o resto no algoritmo estendido de Euclides 5 = (1*17) – (1*12) 2 = (1*12) – (2*5) 1 = (1*5) – (2*2) || (1*5) – 2*((1*12) + (2*5)) || (1*5) – (2*12) + (4*5) || (5*5) – (2*12) P2 = 5 Chave Pública – M=21 e P1=17 Chave Privada – M=21 e P2=5 4 – Para que a mensagem seja cifrada utiliza-se a chave pública, digamos que um texto seja cadastrado em um vetor e corresponda a 2 e um outro a 11, o caractere cadastrado na posição 2 poderá ser substituído pelo cadastrado na posição 11, o 18 mesmo pode ser aplicado utilizando a tabela ASCII convertendo cada caractere do texto claro por um valor decimal e aplicando-o à fórmula para criptografá-lo utilizando o resultado decimal para localizar o correspondente na tabela ASCII. Texto Cifrado = 2^17 mod21 = 11 Texto Decodificado = 11^5 mod21 = 2 Uma característica relevante e diferencial do algoritmo RSA em relação às técnicas de substituição com uma fórmula fixa que relaciona um caractere a outro é que a modularidade pode relacionar números diferentes a um número resultante igual, por exemplo: 49 (mod 21) = 7 e 70 (mod 21) = 7, nesse caso dois caracteres correspondentes aos valores decimais 49 e 70 seriam substituídos pelo novo caractere correspondente a 7. 6.6 Criptografia nas redes sem fio Com o avanço da internet e das conexões das redes surgiu a necessidade de desenvolvimento de mecanismos de segurança que atendessem aos novos desafios, uma rede com fios, se comparada a uma rede sem fios, é mais segura pois sua conexão à LAN (ponto de acesso à rede), que anteriormente eram feitas em roteadores com conexões por cabo, atualmente são acessados por ondas em equipamentos que combinam modem e roteador por wi-fi, ou seja, por frequências de ondas e não por cabo, é exatamente neste ponto que foi aberta uma porta aparentemente sem muito controle para qualquer tipo de ataque, pois qualquer um com acesso à frequência de conexão wi-fi pode interceptar o tráfego das informações sem um mecanismo de segurança que previna esse tipo de ação. 6.7 WEP ( Wired Equivalent Privacy) Essa técnica usa chave secreta compartilhada e o algoritmo de criptografia RC4. O roteador wireless ou ponto de acesso, bem como todas as estações que se conectam a ele devem usar a mesma chave compartilhada. 19 Basicamente o sistema envolve um “desafio” (STALLINGS, 2015, p.463) que implica na troca de informações ou pacotes entre o ponto de acesso e o equipamento que deseja se conectar à rede wi-fi, este equipamento, que pode ser um notebook, desktop, celular, tablet, entre outros, solicita a conexão por meio de autenticação que por sua vez recebe uma chave de 128 bits do equipamento de ponto de acesso, essa chave é um texto claro que deve ser devolvido ao ponto de acesso como um texto cifrado, o ponto de acesso confere se a chave (texto claro) foi devidamente encriptada fazendo a decodificação e comparando com o texto claro enviado ao equipamento que solicita a conexão, se estiverem iguais a conexão é liberada. Embora soluções como a combinação das chaves com os endereços dos equipamentos de ponto de acesso e do usuário tenham aumentado a segurança, o fato de a chave usar apenas 128 bits e os avanços subsequentes da computação a tornaram pouco segura, o que levou ao desenvolvimento da WPA e WPA2. 6.8 WPA e WPA2 Esses dois certificados de segurança são baseados no padrão da Wi-Fi Alliance para redes locais sem fio e utilizados por muitas empresas e até em redes domésticas. Eles permitem autenticação mútua para verificação de usuários individuais e criptografia avançada. A WPA fornece criptografia para empresas, e a WPA2 – considerada a próxima geração de segurança Wi-Fi, vem sendo usada por muitos órgãos governamentais em todo o mundo. 6.9 Assinatura digital Um recurso conhecido por Assinatura Digital é muito usado com chaves públicas. Trata-se de um meio que permite provar que um determinado documento eletrônico é de procedência verdadeira. A pessoa que recebe um documento assinado digitalmente usa a chave pública fornecida pelo emissor para se certificar da origem. Além disso, a chave é integrada 20 ao documento, isso implica que qualquer alteração realizada nas Informações vai invalidar o documento. 6.10 Criptografia quântica Tem se apresentado como uma técnica criptográfica inquebrável devido a seu tipo de implementação baseada na mecânica quântica e a viabilidade de troca de chaves secretas sem contato prévio entre emissor e receptor. As características provenientes da mecânica quântica são em relação ao fenômeno de polarização da luz e a análise dos fótons que a compõem, essa análise consiste no posicionamento da polarização dos fótons e a leitura deles entre emissor e receptor, a polarização é feita em ângulose a leitura também, ambos podem coincidir ou não, porém, quando há uma angulação de diferença próxima de 45 graus pode ser que o fóton passe ou não passe pelo filtro de leitura, então ele é desconsiderado na geração das chaves, são considerados apenas os que tenham angulação consideradas iguais ou diferentes, as iguais assumem valor 1 e as diferentes assumem valor 0, a segurança pode ser conferida também pela publicação dos resultados, o receptor dos fótons publica o grau da leitura de cada fóton, desta forma, emissor e receptor podem gerar uma única chave sem precisar publicá-la, pois o emissor pode conferir pelo ângulo de leitura publicado quais foram os fótons corretos, incorretos e quais foram desconsiderados e obter a mesma chave que o receptor. Apesar de os estudos de implementação dessa técnica de criptografia serem da década de 80, ainda há problemas de infraestrutura para sua implementação em escala, pois o envio dos fótons gera muitos erros e depende de um tipo de fibra óptica de alta qualidade e custo elevado. 6.11 Monogrâmicas Como cada um dos caracteres do texto claro é substituído por um outro, o comprimento da mensagem cifrada é igual ao comprimento da mensagem original e 21 a frequência de ocorrência das letras (números ou símbolos) do criptograma é a mesma que a frequência de ocorrência das letras da língua usada no texto claro. 6.12 Poligrâmicas A substituição monoalfabética poligrâmica tem as mesmas características da substituição simples, com a diferença de que se substitui grupos de caracteres do texto original por um ou mais caracteres. Portanto, o comprimento da mensagem cifrada nem sempre é o mesmo da mensagem original. 6.13 Homofônicas Na criptologia, é uma cifra que substitui cada um dos caracteres do texto claro por um de vários símbolos possíveis, todos com o mesmo significado. Apesar de vários substitutos para cada um dos caracteres, o comprimento do texto cifrado é igual ao do texto claro. Um exemplo de substituição homofônica é a cifra de Babou. 6.14 Tomográficas Sistemas tomográficos, também conhecidos como tomogrâmicos, são aqueles nos quais cada caractere é substituído por um grupo de duas ou mais letras ou números. O comprimento do criptograma é maior do que o do texto original. Exemplos clássicos do método tomográfico são o Código de Políbio e a cifra de Bacon. 6.15 Criptografia Hash A técnica de criptografia chamada Hash faz uma redução de determinada informação, independente de seu tamanho, após criptografada assumirá um tamanho padronizado de acordo com o tipo, informações de 1 Mb ou de 1 Tb, por exemplo, assumem o mesmo tamanho de saída com 16 bytes se submetidas a um Hash do tipo 22 MD5 ou 512 Bytes se submetidas a um Hash Wrilpool ou SHA 512, ou seja, independente do tamanho original da informação, a saída sempre terá o mesmo tamanho. Seja uma função HASH H, e x uma string qualquer, teremos que H(x) será o valor HASH para a string x. As características básicas de uma função HASH são: O valor de entrada da função possui qualquer tamanho; O valor de saída da função possui tamanho fixo; H(x) é relativamente fácil de ser computado, para qualquer valor de x; H(x) é uma função “one-way”; H(x) é livre de colisão. 6.16 Combinaçâo dos tipos Com os dois tipos de Chaves (Simétrica e Assimétrica) tendo suas vantagens e desvantagens, era natural o surgimento um método que buscasse mixar as vantagens de cada um, eliminando assim, suas desvantagens. Os protocolos TLS (Transport Layer Security) e SSL (Secure Sockets Layer) são exemplos desse mix. A predefinição de uma chave pelo tipo de criptografia simétrico apresenta certa fragilidade, por outro lado, o uso exclusivo e em larga escala da criptografia assimétrica necessita de um grande esforço computacional pelo tamanho das chaves em bits pois disso depende a segurança de uma chave assimétrica, uma solução encontrada é a combinação das duas técnicas, reduzindo o uso de força computacional e aumentando a segurança em relação à chave simétrica. Como o algoritmo de chave pública garante que a negociação foi realizada em um canal seguro, não havendo a necessidade da troca periódica da chave (problemas no caso da Chave Simétrica), todo o restante do processo pode passar a ser realizado utilizando algoritmos de chave simétrica, o que diminui potencialmente a necessidade do poder computacional, permitindo seu uso em uma comunicação mais intensa (problemas encontrados na Chave Assimétrica). 23 7 DISSERTAÇÃO 7.1 Estruturação, conceitos e fundamentação. Para o desenvolvimento do algoritmo de criptografia, e a correspondente decodificação, foram observados aspectos de técnicas de criptografia variadas descritas anteriormente tais como de transposição e substituição que é de principal importância para a estruturação. Uma criptografia de substituição permite uma diversidade de variações para a substituição de caracteres usados no texto claro, isso pode ser constatado nas técnicas descritas de Vigenère ou da máquina Enigma, são inúmeras combinações possíveis que tornam a quebra do código por tentativa ou criptoanálise um trabalho muito mais complexo, isso ocorre pelas diversas combinações entre texto claro e texto cifrado por caractere, ou seja, a simplicidade de uma cifra de substituição no estabelecimento de um padrão básico para substituir caracteres é quebrada por um padrão adicionado à cifra que faz a variação da substituição, dessa forma, um caractere “A” substituído inicialmente pelo caractere “T”, assume um outro correspondente para a substituição cada vez que se repetir no texto claro. Para se obter este conceito de diversos correspondentes para um determinado caractere do texto claro foi utilizado um procedimento similar ao das cifras mais comuns de substituição em que é definida por uma posição numérica (Num) que calcula o novo caractere, ou seja, o caractere “A” corresponde a 65 em valor decimal na tabela ASCII, se Num=1 temos (65=65+1), o que garante a variação é a soma constante para cada caractere do texto claro combinado a uma chave numérica inicial. Imagem 8 - Linhas de código incrementam a posição Fonte: autoral. 24 O procedimento matemático de modularidade visto nas técnicas de criptografia assimétricas também foi utilizado para gerar uma chave numérica inicial mencionada anteriormente, desta forma, o código calcula uma variável a partir de um número randômico entre 0 e 1000 e em seguida o aplica ao módulo 255 que é o número de caracteres da tabela ASCII estendida utilizada para relacionar cada caractere a um valor decimal, esse procedimento resulta em um recurso similar adotado pela Enigma que era reposicionada diariamente para iniciar contagem em uma das 26 letras do alfabeto para criptografar e decodificar as mensagens, desta forma, no programa desenvolvido inicia a substituição em um caractere (Num) com valor aleatório e vai sendo incrementado em uma posição a cada caractere cifrado (Num=Num+1) e o valor de (Num) é calculado por Num (mod255). Imagem 9 - Linhas de código que calculam a posição inicial Fonte: autoral. 7.2 Benefícios em relação às técnicas anteriores. Em relação às técnicas de criptografia de substituição com uma chave numérica simples, ou com uma chave repetida constantemente, os recursos utilizados para o desenvolvimento do programa proporcionam maior segurança e complexidade do ponto de vista de criptoanálise se utilizado o critério de frequência de caracteres, identificamos a letra “A” com maior índice de frequência, em seguida temos, “E”, “O”, “S”, “R”, “I”, “N” e assim por diante, conforme o quadro a seguir. 25 Imagem 10 - Frequência de caracteres na língua portuguesaFonte: ZOCHIO, 2016. Esse tipo de análise de frequência é mais confiável com textos de maior conjunto de caracteres, ou seja, para textos curtos, como palavras ou senhas de 6 dígitos é pouco funcional, se tomarmos como exemplo a frase: “Venha para a Unip, a preferida no mercado profissional” podemos constatar a frequência de A=8, E=4, O=4, R=4, I=4, S=2 e assim por diante, se fosse utilizada uma técnica de criptografia de substituição com chave simples de C=X+7, em que 7 é a chave, X o texto claro e C o texto cifrado, a letra “A” seria substituída pela letra “I” e surgiria por 8 vezes no texto cifrado, isso facilitaria a criptoanálise, se fosse utilizada alguma técnica de transposição, por exemplo, a criptoanálise por frequência seria ainda mais rápida pois indicaria a letra “A” de imediato, restando apenas identificar o posicionamento original. Com a utilização da chave randômica combinada ao incremento da chave de cifragem a cada caractere foi possível superar essa fragilidade, podemos observar no texto cifrado pelo programa que o caractere “A” foi substituído por correspondentes diferentes, conforme quadro a seguir, pode-se verificar a substituição por “a”, “C”, “E”, “G”, “h” e “?”. Imagem 11 - Texto criptografado pelo programa desenvolvido Fonte: autoral. 26 7.3 Aplicações que fazem ou fizeram uso da técnica. A técnica utilizada para o desenvolvimento do código de encriptação do presente trabalho é feita com base nas técnicas de substituição, as técnicas de substituição podem ser consideradas as mais antigas formas de cifrar mensagens, historicamente pode ser vista sua utilização no império Romano na Cifra de César, ou em um passado mais recente nas primeira e segunda guerras mundiais, os comandos que teriam de ser passados para os membros do exército eram criptografados, para caso o inimigo conseguisse captar as ordens não fosse possível a compreensão do que seria feito. Uma grande e famosa máquina também usava um método de substituição, porém muito mais complexo que as antigas cifras de substituição, era a Enigma, que por um grande período da segunda guerra mundial conferiu confidencialidade dos comandos e táticas de ataque das tropas nazistas, já que era uma grande invenção feita pelos alemães e os países inimigos não conseguiam descobrir os locais que seriam bombardeados ou invadidos, a segurança da Enigma era conferida pela constante mudança nos símbolos de representação. As cifras de substituição podem ser aparentemente básicas, mas se bem elaboradas podem ser de complexa decifragem se submetida a ataques de segurança, resultados otimizados podem ser obtidos se a troca de símbolos correspondentes se altera com certa rapidez, mesmo que se consiga quebrar a criptografia em uma mensagem isolada, ela irá se alterar, assim como um looping contínuo de codificação e decodificação. Essa técnica é utilizada até os dias atuais, e desde a segunda guerra já foram criadas diversas criptografias substitutivas, assim como a criptografia de “césar”, “vigenère”, dentre outras. Embora haja a impressão de que cifras de substituição tenham caído em desuso pelo surgimento de técnicas bem elaboradas matematicamente como a assimétrica RSA ou a simétrica DES, elas também terminam aplicando a substituição de caractere, porém com formas de calcular chaves de formas diferenciadas. 27 7.4 Discussão comparativa entre esta técnica e outras conhecidas A substituição é uma técnica simples de ser compreendida, pois a ideia que ela traz é de que os caracteres serão substitutos por outros como se ao invés de escrevermos se utilizar um alfabeto comum é utilizado um alfabeto que inicia em outra letra que não é o caractere “A”, o resultado é a total falta de inteligibilidade do texto, entretanto, historicamente as técnicas de substituição evoluíram para tornarem a quebra da codificação mais trabalhosa, a técnica utilizada para desenvolver o código de encriptação do presente trabalho observou algumas formas de incrementar as técnicas de substituição mais simples como a de César tornando o processo de substituir os caracteres por diversos caracteres correspondentes recorrendo à característica própria da técnicas de criptografia polialfabéticas, muito similar à cifra de Vigenère em que cada caractere era cifrado combinado a uma chave porém com o aumento de complexidade combinando duas chaves ao invés de uma. A forma clássica de conseguir quebrar criptografias de substituição é a análise de frequência de caracteres que se repetem dentro da mensagem codificada sendo levado em consideração o idioma, pois para cada um há alguns caracteres que se repetem, desta forma um hacker pode quebrar uma cifra de substituição simples, o que não ocorre facilmente em cifras de substituição tidas como polialfabéticas. 7.5 Vulnerabilidades e falhas Algumas técnicas de criptografia simétricas atuais oferecem inúmeras combinações de chaves como pôde ser visto na técnica DES, são milhões e milhões de combinações possíveis e mesmo com o alto nível de combinações pôde ser descoberta por força bruta, ou seja, tentativa e erro, com o auxílio do uso de computação em grande escala. No código desenvolvido, por mais que haja a chave randômica que é alterada a cada inicialização do programa, a variação ocorre apenas entre números de 0 a 1000 mod 255, isso para que se obtenha uma chave de inicialização correspondente a um caractere da tabela ASCII estendida que possui 255 caracteres, em comparação aos milhões e milhões de combinações que já foram quebradas da cifra RSA, a chave 28 randômica inicial do código desenvolvido pode representar certa vulnerabilidade se submetida a ataques com uso de força bruta. 7.6 Melhorias propostas e/ou implementadas Em comparação com o projeto inicial do código de encriptação desenvolvido com o projeto final, uma melhoria importante pode ser destacada no sentido do aumento da complexidade de quebra da cifra, é a adição de uma chave inicial randômica que é alterada cada vez que o código é iniciado para encriptar um determinado texto claro, inicialmente havia apenas uma chave numérica inicial fixa semelhante a criptografia de César que era incrementada a cada caractere tornando a repetição de caracteres correspondentes com variação limitada e ainda fácil de ser descoberta, bastaria testar algumas palavras e analisar o texto claro em relação ao cifrado para descobrir o padrão de incremento da chave inicial que se repetia a cada inicialização de execução do código. Algumas melhorias ainda poderiam ser incrementadas como o aumento do números de variações possíveis da chave randômica inicial somada ao incremento simples de +1 a cada caractere codificado que faz com que os caracteres não sejam substituídos por um mesmo correspondente, um estudo de procedimentos matemáticos poderia resultar em uma forma de cálculo variável constantemente a cada caractere para dificultar a descoberta desta segunda chave, pois mesmo que a chave randômica inicial mude a cada inicialização do código, uma criptoanálise mais detalhada pode identificar que após a primeira chave inicializar a substituição é incrementada sempre em +1. 29 8 PROJETO DO PROGRAMA No código de criptografia desenvolvido, foi utilizada a técnica de criptografia conhecida como "substituição", como já visto anteriormente, nesta técnica os caracteres são substituídos por outros caracteres não necessariamente constantes no texto claro, no programa desenvolvido tomou-se como base a tabela ASCII estendida. Para ser definida a técnica de criptografia a ser utilizada foi levado em conta a questão da quantidade de informações acessíveis para sua compreensão e implementação, além da constatação das limitações encontradas no conhecimentode procedimentos matemáticos elaborados em algumas técnicas que terminam resultando igualmente em substituição. Para embasamento foram vistos documentários, filmes, e por ela ser uma das técnicas utilizadas desde muito tempo, assim como a máquina Enigma, tão famosa e de grande importância na segunda guerra mundial. Apesar da utilidade militar vista em muitas cifras de substituição, o que foi abordado é a lógica em si, pode-se ressaltar que foi uma grande evolução, mesmo que mecanicamente como na Enigma, a mudança diária das cifras, isso tornou muito complexa a vida dos seus inimigos de guerra, neste trabalho tentamos produzir algo similar, porém, com uma implementação mais fluída e dinâmica que é permitido pelo atual acesso à equipamentos e sistemas computacionais mais desenvolvidos, entretanto objetivou-se simultaneamente a complexidade de quebra da cifra obtida pelo programa. O programa tem basicamente duas interações com o usuário, uma para que o usuário digite a palavra que deseja criptografar, que logo será alterada pelos caracteres da tabela, e outra para que o usuário consiga decodificar o texto inicialmente digitado. Ele leva uma lógica de mudança rápida na representação de cada cifra, assim se torna algo mais difícil de ser quebrado. O programa trabalha de forma simples e ágil para que o usuário não tenha dificuldade, ele apenas digita o texto e tecla “ENTER” e ele é criptografado, após pressionar a tecla "ENTER" ele pode obter a decodificação novamente. 30 Imagem 12 – Sequência de execução do programa de criptografia Fonte: autoral. Foram utilizados laços de repetição para a cifragem dos caracteres bem como para a decodificação, desta forma, quando um determinado texto entra nos laços, tem a saída apenas quando todos os caracteres são cifrados ou substituídos por novos caracteres ou decodificados no segundo processamento do programa. Para que o texto digitado pelo usuário seja alocado em determinados espaços da memória foi utilizado o vetor com seu tamanho determinado pelo comando Length associado à variável de entrada de texto “palavra”, desta forma os caracteres puderam ser tratados de individualmente e substituídos corretamente. Durante a criação dos laços houve alguns empecilhos com a lógica por trás deles, mas com auxílio das técnicas de construção e desenvolvimento obtidas nas disciplinas de Linguagem de Programação Estruturada e Lógica de Programação Aplicada foi possível implementá- los de acordo com o função e resultado final desejado. Imagem 13 – Linha de código para inserção do texto claro em vetor Fonte: autoral. Na forma bruta do programa, ele é executado da seguinte forma, o usuário digita o texto que deseja criptografar, assim como já foi descrito acima, e o programa usa um valor entre 0 e 1000 (mod 255) para calcular as possibilidades de cifras de 31 substituição para serem utilizadas, o módulo é utilizado em correspondência ao número de caracteres da tabela ASCII estendida, por exemplo, se o valor for definido na chave inicial resultar em "15", então a caractere que irá aparecer será resultante do caractere do texto claro a ser cifrado correspondente na tabela ASCII somado ao valor da chave, como o caractere “A” na tabela ASCII é 65 a substituição resulta de (65+15 = 80) sendo que 80 corresponde ao caractere “P”, para cifrar os caracteres seguintes de um texto claro o laço soma +1 à chave inicial, desta forma, se houvesse dois caracteres A consecutivos no texto claro, um seria substituído pelo valor 80 e o próximo pelo valor 81 que corresponde ao caractere “Q“ na tabela conforme abaixo: Imagem 14 – Fragmento da tabela ASCII Fonte: autoral. A variável para receber a chave inicial randômica foi implementada para que a mesma varie e não fique sempre um caractere fixo substituindo outro, o que torna mais complexa a quebra da cifra. Como foi dito a cima, essa foi uma das medidas para que o código apresentasse um resultado de segurança mais efetivo quando analisado com a intenção de descobrir o método de cifragem. 32 A decodificação do texto cifrado é obtida pelo vetor em que o texto claro é armazenado, desta forma, quando o usuário tecla “ENTER” o programa executa o laço de leitura do vetor do texto claro em caracteres isolados e o converte novamente em texto corrido. Imagem 15 – Linhas de código que apresentam o texto decodificado Fonte: autoral. 33 9 RELATÓRIO DE LINHAS DE CÓDIGOS static void Main(string[] args) { string palavra, crip = ""; Random rdn = new Random(); int num; num = (rdn.Next(0, 1000)) % 255; Console.Write("\nEntre com a palavra que deseja criptografar: "); palavra = Console.ReadLine().ToLower(); for (int i = 0; i < palavra.Length; i++) { int ASCII = (int)palavra[i]; int ASCIID = ASCII + num; num = num + 1; crip += Char.ConvertFromUtf32(ASCIID); } Console.WriteLine("\nEsta é sua palavra codificada: " + crip); crip = ""; 34 for (int i = 0; i < palavra.Length; i++) { int ASCII = (int)palavra[i]; int ASCIID = ASCII; crip += Char.ConvertFromUtf32(ASCIID); } Console.Write("\nPressione 'enter' para descriptografar"); palavra = Console.ReadLine().ToLower(); Console.Write("\nEsta é sua palavra decodificada: {0}", crip); Console.ReadKey(); } 35 10 APRESENTAÇÃO DO PROGRAMA Imagem 16 – Programa em execução solicitando texto para criptografar Fonte: autoral. Imagem 17 - Programa em execução apresentando texto criptografado Fonte: autoral. Imagem 18 - Programa em execução apresentando texto decodificado Fonte: autoral. 36 BIBLIOGRAFIA Banco Central do Brasil. Museu de Valores do Banco Central. Disponível em: <http://www.bcb.gov.br/?cedmuda>. Acesso em: 5 de novembro de 2017. COUTINHO, S.C. Números inteiros e criptografia RSA. 2. ed. Rio de Janeiro: IMPA, 2005. Enigma. A máquina de cifra Alemã Enigma. Disponível em: < http://users.telenet.be/d.rijmenants/en/enigma.htm>. Acesso em: 16 de novembro de 2017. STALLINGS, William. Criptografia e segurança de redes: princípios e práticas. 6. ed. São Paulo: Pearson Education do Brasil, 2015. UFSCAR. A cifra de Vigenère. Disponível em: <https://www.dm.ufscar.br/profs/caetano/iae2004/G6/cifra.htm>. Acesso em: 5 de novembro de 2017. ZOCHIO, Marcelo Ferreira. Introdução à criptografia. 1. ed. São Paulo: Novatec, 2016. 37 FICHA DE ATIVIDADES PRÁTICAS SUPERVISIONADAS 38 39 40 41
Compartilhar