Criptografia chave simétrica de bloco e de fluxo

Este artigo descreve o que são os algoritmos de chave simétrica, no que são baseados e suas aplicações. Descreve os algoritmos simétricos de bloco e de fluxo. Pode ser considerado uma continuação do artigo "Introdução a criptografia".

[ Hits: 169.819 ]

Por: Elgio Schlemer em 09/03/2009 | Blog: http://gravatai.ulbra.tche.br/~elgio


Algoritmo de fluxo RC4



O algoritmo RC4 pode ser considerado um gerador de bits infinitos. Trata-se de uma máquina que gera bits pseudo-aleatórios, mas imprevisíveis, sem que eles se enquadrem em uma dízima periódica.

Exemplos de uma dízima seria se os bits gerados fossem 0100010, 01000101, ..., pois se estes bits fossem usados com XOR, haveria repetição de chave. Ao contrário, o RC4 gera uma sequência infinita de bits para os quais não se encontra um padrão de repetição.

Desta forma pode-se usar com segurança o XOR, pois se aplica uma operação XOR de cada bit da mensagem com um bit da chave. Implementa-se, na verdade, o conceito de chave infinita desejável ao XOR (nota: na verdade existem sim dizimas periódicas no RC4, mas ela é tão grande que pode-se considerar como chave infinita).

Mas um problema sério ocorre ao se pensar em como empregar este algoritmo na prática. Se me são gerados bits "aleatórios" para cifrar e eu usar estes bits, como o meu destinatário conseguirá decifrar a mensagem? Ele teria que, magicamente, gerar os mesmos bits "aleatórios" que eu e usá-los de forma sincronizada.

Se eu usei como chave inicial os bits 01001001011001100..., o meu destinatário deve chegar a estes mesmos bits. Não adianta enviar os bits que eu usei para ele pois seria inseguro e porque o número de bits que usei para cifrar uma mensagem M é da mesma quantidade do que da própria mensagem M. Explicando, se a mensagem a ser enviada possui 30 mil bits, a chave "aleatória" que usarei no RC4 tem também 30 mil bits!

Só que estes bits do RC4 não são tão aleatórios assim. Na verdade eles são matematicamente gerados por uma função matemática recursiva. Esta função precisa ser inicializada com uma semente, ou seja, um valor inicial.

Acontece que se duas máquinas RC4 forem inicializadas com a mesma semente, elas irão produzir os mesmos bits "aleatórios". Para que o destinatário possa decifrar minha mensagem, portanto, basta que ele inicialize o seu RC4 com o mesmo número que eu usei para inicializar o meu. Este número, de 64 ou 128 bits, passa a ser a chave k que compartilho com o meu destino, em um esquema demonstrado na Figura 3.
Linux: Criptografia chave simétrica de bloco e de fluxo
O algoritmo RC4 é atualmente muito empregado, como por exemplo em comunicações SSL (HTTPS, dentre outras). Sua rapidez e a vantagem de ser de fluxo são desejáveis na comunicação.

Qualquer algoritmo de bloco pode ser convertido para um de fluxo em um esquema de realimentação de saída, o que se chama de modo CFB ou modo OFB.

Página anterior     Próxima página

Páginas do artigo
   1. Introdução
   2. Algoritmos simétricos de bloco
   3. Algoritmos simétricos de fluxo
   4. Algoritmo de fluxo RC4
   5. Conclusão e referências
   6. Anexo A: problema do XOR
Outros artigos deste autor

Criptografia assimétrica com o RSA

Programação com números inteiros gigantes

255.255.255.0: A matemática das máscaras de rede

Mecanismo de firewall e seus conceitos

Introdução a criptografia

Leitura recomendada

SELinux - Segurança em Servidores GNU/Linux

Servidor SSH (Secure Shell Hosting)

Logwatch - Enviando relatórios via e-mail

Ferramentas de administração remota

Segurança para iniciantes

  
Comentários
[1] Comentário enviado por elgio em 09/03/2009 - 15:08h

***** ERRATA: No desenho da Figura 1 onde lê-se Bytes na verdade são bits. 288 Bits, 320 Bits

[2] Comentário enviado por gustavs em 29/04/2009 - 22:06h

Muito bom! Não conhecia praticamente nada de criptografia, agora me interessei.
Recomenda alguma leitura nesse assunto ?

[3] Comentário enviado por adrianoturbo em 02/05/2009 - 14:24h

Interessante a utilização do XOR.

[4] Comentário enviado por grandmaster em 05/05/2009 - 21:06h

Muito legal o artigo. Bem interessante.

Renato de Castro Henriques
CobiT Foundation 4.1 Certified ID: 90391725
http://www.renato.henriques.nom.br

[5] Comentário enviado por thiagods.ti em 17/06/2009 - 16:12h

Teus artigos geralmente são bons, hoje foi só ver que você lançou um artigo novo que a primeira coisa que eu faço quando tenho tempo é ler.

Parabéns =)

[6] Comentário enviado por Credmann em 21/06/2009 - 17:35h

Este artigo é quase a resposta da minha dúvida:
Qual criptografia tem melhor desempenho numa sessão interativa SSH?

[7] Comentário enviado por leomarcsys em 05/01/2012 - 18:30h

Há uma imprecisão quanto a informação sobre os tamanhos de bloco do AES.
O algoritmo de Rijndael, vencedor do concurso do nist para a definição do AES, prevê tamanhos variados de blocos e de chaves, no entanto o fips-197 que especifica o AES define apenas o tamanho de bloco como 128 bits.
http://csrc.nist.gov/publications/fips/fips197/fips-197.pdf


Contribuir com comentário




Patrocínio

Site hospedado pelo provedor RedeHost.
Linux banner
Linux banner
Linux banner

Destaques

Artigos

Dicas

Tópicos

Top 10 do mês

Scripts