









Estude fácil! Tem muito documento disponível na Docsity
Ganhe pontos ajudando outros esrudantes ou compre um plano Premium
Prepare-se para as provas
Estude fácil! Tem muito documento disponível na Docsity
Prepare-se para as provas com trabalhos de outros alunos como você, aqui na Docsity
Encontra documentos específicos para os exames da tua universidade
Prepare-se com as videoaulas e exercícios resolvidos criados a partir da grade da sua Universidade
Responda perguntas de provas passadas e avalie sua preparação.
Ganhe pontos para baixar
Ganhe pontos ajudando outros esrudantes ou compre um plano Premium
Criptografia RC4
Tipologia: Provas
1 / 15
Esta página não é visível na pré-visualização
Não perca as partes importantes!










Brasília – DF 2016
Trabalho apresentado como requisito parcial para obtenção de aprovação na disciplina Criptografia e Segurança de Redes, apresentado ao Centro Universitário Instituto de Educação Superior de Brasília - IESB. Orientador: Doutor Joel Guilherme da Silva Filho.
Brasília – DF 2016
2.1 Visão Geral ........................................................................................................................................... 6 3 IMPLEMENTAÇÃO EM LINGUAGEM DE PROGRAMAÇÃO ANSI C ........................................................................................................................................... 7 3.1 Dev Cpp ........................................................................................................................................... 7 3.2 Funções utilizadas ........................................................................................................................................... 7 4 ............................................................................................................................... 4.1 Funcionamento do Algoritmo ........................................................................................................................................... 7 5 CONSIDERAÇÕES FINAIS ........................................................................................................................................... 13 6 REFERÊNCIAS ........................................................................................................................................... 14 7 ...............................................................................................................................
O algoritmo de criptografia RC4 foi desenvolvido por Ronald Rivest para a empresa RSA Data Security, portanto é privado, mas em 1994 foi postado anonimamente uma versão do algoritmo compatível com o original, conhecido como, ARCFOUR ou ARC4 (Alleged RC4). O RC4 é um algoritmo de cifra de fluxo de chave compartilhada exigindo uma troca segura da chave. O algoritmo de chave simétrica é utilizada de forma idêntica para criptografia e descriptografia de tal forma que o fluxo de dados é simplesmente XORado com a sequência gerada. O algoritmo de criptografia RC4 é usado por padrões como IEEE 802.11 e WEP (Wireless Encryption Protocol) usando chaves de 40 a 128 bits. Existem procedimentos publicados para quebra da criptografia de segurança implementadas em WEP.
1.1.. Dev Cpp
O Dev Cpp ou Dev C++ é um ambiente de desenvolvimento de programas em C/ C++ que utiliza como compilador o GNU g++ ou o GNU gcc, este ambiente pode ser obtido na URL: http://www.bloodshed.net/devcpp.html, gratuitamente, pois se trata de um compilador freeware. É uma opção muito interessante, pois é de fácil utilização e aprendizado para usuários novos e possui muitos recursos avançados para usuários experientes. O algoritmo de Criptografia RC4 foi implementado na plataforma Dev Cpp em linguagem de programação ANSI C.
1.2.. Funções utilizadas
Funções são os blocos de construção da linguagem C, com os quais podemos construir programas melhores e mais facilmente compreensíveis. As funções utilizadas no Algoritmo foram definidas pela precisão ao decorrer da implementação do programa, as funções utilizadas foram: void, for, malloc, strcpy, setlocale, fopen, if, else, strlen, fflush, fclose, fgets, fgetc, strcmp e goto.
1.3.. Funcionamento do Algoritmo
Inicialmente foi implementado o Algoritmo Key Scheduling , onde se inicializa um array de estado S e realizam-se diversas permutações baseando-se no array da chave secreta. Primeiro prenche-se um array unidimensional S de tamanho 256 com quaisquer valores, no qual, oficialmente é preenchido de 0 a 255. Percebendo-se que a atribuição é modular, preenche-se o array K com a chave mesmo quando ela for menor que 256, evitando o estouro do buffer da variavel L. Os passos do algoritmo são os seguintes:
1 – Inicia-se um for para preencher ordenadamente com todos os valores distintos de 8-bits em S; 2 – Inicializar uma variável j com 0; 3 – Iniciar um loop for de 0 à 255; 4 – Para cada iteração do loop somar à j seu próprio valor. 5 – Para cada iteração do loop somar à j o valor do índice atual de S, ou seja S[i]. 6 – Para cada iteração do loop somar à j o valor do indice atual de K, com comprimento L bytes (1 ≤ L ≤ 256) e aplicar uma operação modular, ou seja, K[i mod L]. 7 – Aplicar uma operação modular 256 à j. [ j (mod 256) ] 8 – Inverter os valores de S[i] e S[j].
Uma operação de módulo é o processo de produzir um resto da divisão. Por exemplo, 11/4 é 2 restante 3, portanto, o resultado do módulo nesse caso é 3. Esse é o KSA do RC4. Serve somente para embaralhar o array de estado S com a chave K. Este algoritmo como demonstrado acima não é um padrão e diversas outras criptografias o implementam de modo diferente realizando outras funções. Segundo, foi implementado o Algoritmo PRGA, Algoritmo de Geração Pseudo- Aleatória, do inglês, Pseudo Random Generation Algorithm. O algoritmo utiliza uma chave de comprimento variável de 1 a 256 bytes para inicializar uma tabela de estado de 256 bytes. A tabela de estado é usado para geração subseqüente de bytes pseudo-aleatórios e, em seguida, para gerar um fluxo de pseudo- aleatório que é XORado com a mensagem para dar o texto cifrado. Cada elemento na tabela de estado é trocado pelo menos uma vez. A chave é muitas vezes limitada a 40 bits, devido a restrições de exportação, mas às vezes é usado como uma chave de 128 bits. Tem a capacidade de utilizar as teclas entre 1 e 2048 bits. Num algoritmo de fluxo, os bits de uma mensagem em texto plano são combinados com simples operações de XOR contra uma cadeia de bits pseudo-aleatórios (pseudorandômicos), também chamados keystream. Após todas as iterações teremos como saída um stream de bytes aleatórios de mesmo tamanho da mensagem que será cifrada, isso pode variar.
Os passos do Algoritmo PRGA:
1 – Inicializar duas variáveis (i e j) com 0.
22 – Fazer chamada aos Algoritmos KSA e PRGA. 23 – Fechar Arquivos.
O algoritmo funcionou abrindo um arquivo txt , esse arquivo deve ser criado na pasta onde o programa foi salvo. Abaixo, estão as imagens do funcionamento do Algoritmo na prática:
Figura - Tela inicial do programa A Figura 1 mostra a mensagem que está salva no Arquivo.txt e pede ao usuário que entre com a chave para a cifração.
Figura - Segunda tela do programa Após o usuário digitar a chave a mensagem é cifrada e a Figura 2 explana a mensagem salva no arquivo de decifragem e a próxima interação com o usuário pedindo novamente a chave para decifrar a mensagem.
Figura - Última tela do programa O usuário digita novamente a chave e a frase é decifrada voltando a ser a mensagem inicial, exibe a Figura 3, e o programa finaliza. Os Algoritmos KSA e PRGA funcionam do seguinte modo: Considerando o RC4 como chave simétrica de cifra de fluxo, mas em vez de o total de 256 bytes, será utilizado 8 x 3-bits, que é o vetor de estado S. Será operado na taxa de 3- bits de texto simples de cada vez uma vez que S pode tomar os valores de 0 a 7, que podem ser representados como 3 bits. Suponha que será utilizado uma chave de 4 x 3-bit de K= [1 2 3 6]. E um texto simples P = [1 2 2 2]. O primeiro passo é gerar o fluxo. Inicializar o vetor de estado S e o vetor temporário T. S é iniciado assim que o S [i] = i, e T é inicializado como a chave K (Repetido conforme necessário). S=[0 1 2 3 4 5 6 7] T=[1 2 3 6 1 2 3 6] Agora executar a permutação inicial em S. j=0; for i =0 to 7 do j = (j+S[i] + T[i]) mod 8
swap(S[i],S[j]); end For i= j=(0+0+1) mod 8 = swap(S[0],S[1]); S=[1 0 2 3 4 5 6 7]; For i= j= swap(S[1],S[3]); S=[1 3 2 0 4 5 6 7]; For i= j= swap(S[2],S[0]); S=[2 3 1 0 4 5 6 7]; For i= j= swap(S[3],S[6]); S=[2 3 1 6 4 5 0 7]; For i= j= swap(S[4],S[3]); S=[2 3 5 4 6 1 0 7]; For i= j= swap(S[5],S[2]); S=[2 3 5 4 6 1 0 7];
For i= j= swap(S[6],S[5]); S=[2 3 5 4 0 1 6 7];
For i= j=
Terceira Interação: S=[2 7 4 3 0 1 6 5]; i=(2+1) mod 8; = 3 j=(2+S[3]) mod 8; = 4 swap (S[3],S[4]); S=[2 7 4 0 3 1 6 5]; t=(S[3]+S[4]) mod 8; = 3 K=S[3]; = 0 O terceiro Bit obtém por: K XOR P 0 XOR 2 = 000 XOR 010 = 010 = 2
Interação Final: S=[2 7 4 0 3 1 6 5]; i=(1+3) mod 8; = 4 j=(4+S[4]) mod 8; = swap (S[4],S[7]); S=[2 7 4 0 5 1 6 3]; t=(S[4]+S[7]) mod 8; = 0 K=S[0]; = 2 O último Bit obtém por: K XOR P 2 XOR 2 = 010 XOR 010 = 000 = 0
Resultado Final C = [4 1 2 0].
O trabalho desenvolvido para esta disciplina mostra que é possível entender o passo a passo do Algoritmo RC4 e implementá-lo. Os resultados foram satisfatórios, porém, pode ser implementado um sistema de interface gráfica onde o usuário pode interagir inserindo os arquivos txt e escolhendo se quer Criptografar ou Descriptografar o Arquivo entre outras funcionalidades. É importante citar que o uso da criptografia no mundo atual é praticamente imprescindível. Com o uso da internet, surgiram novas aplicações como o comércio eletrônico e o home-banking. Nestas aplicações, informações confidenciais como cartões de crédito, transações financeiras, etc. são enviadas e processadas em meios não confiáveis. Enquanto meios de comunicações suficientemente seguros para proteger este tipo de informação não surgem, a criptografia aparece como uma boa alternativa para proteção de dados.