terça-feira, 31 de março de 2015

E ai galera, hoje vamos entrar na parte atual da criptografia e por isso vamos nos aprofundar mais do que nas técnicas antigas, então vou fazer posts menores para facilitar o entendimento.

Princípio de Kerckoff


O princípio de Kerckoff diz que a segurança de um sistema criptográfico não deve se manter no sigilo do algoritmo. A segurança se da realmente por manter a chave em segredo.

O algoritmo pode e deve ser publico. Se você for pesquisar vai ver que os grandes algoritmos como DES e AES são públicos e pode ser encontrado uma implementação para praticamente qualquer linguagem de programação.

Um dos benefícios de ter o algoritmo público é o fato de que ele vai ser intensamente testado, resolvendo possivelmente todos ou a maioria dos problemas e bugs do algoritmo. O oposto, manter tudo secreto e torcer para que ninguém encontre, conhecido como segurança por obscuridade, não funciona muito bem, porque a partir do momento que o algoritmo é descoberto tudo é perdido.

Este conjunto de regras foi publicado por Auguste Kerckhoffs em 1883 no La Cryptographie Militaire.

Outro motivo para ser público é o fato de o algoritmo cair em mãos inimigas. Se ele já for público não tem problema se o inimigo pegar, a chave ainda vai manter sua segurança.

Além disso, o princípio de Kerckoff também contém outras métricas, por exemplo, o sistema tem que ser praticamente, se não matematicamente, indecifrável sem a chave, classificados como já vimos em textos anteriores em computacionalmente seguro ou incondicionalmente seguro.

Cifra de Feistel


Desenvolvida por Horst Feistel, a estrutura é uma referência nos algoritmos atuais. Esta estrutura ficou conhecida como Rede de Feistel. Alguns elementos da rede de Feistel:


  • Tamanho do bloco: Os blocos tem que ter um tamanho mínimo e tamanho fixo
  • Tamanho da chave: Do mesmo modo que os blocos, a chave tem de ter um tamanho mínimo.
  • Operações: Alterna entre operações de substituição e permutação
  • Número de rodadas: É exigido um número mínimo de rodadas
  • Subchaves: Sistema de geração de subchaves
  • Software Rápido
  • Fácil Análise

Veja abaixo um exemplo da estrutura desenvolvida por Feistel.


Neste exemplo é possível ver que um bloco de texto claro é quebrado em duas partes e metade é enviada para cada lado da entrada da operação, após a primeira rodada as entradas são invertidas e aplicadas a operação e assim por diante até completar todas as rodadas. Após isso ser feito, é adicionado outro bloco até o fim do texto claro. Assim que todos os blocos passam pelo algoritmo, todas as partes são concatenadas e daí temos nosso texto cifrado.

Um comentário:

Subscribe to RSS Feed Follow me on Twitter!