Este artigo é uma continuação do
Introdução a criptografia, sendo recomenda a leitura deste antes de prosseguir.
A criptografia é, sem dúvida, fascinante. Não apenas para nós, da Ciência da Computação, mas para todos os povos de todos os tempos. Nós somos uns meros usuários, muitas vezes aplicando métodos que matematicamente fogem a nossa compreensão, apenas acreditando neles.
É inegável a importância da criptografia nas questões militares, onde tudo é levado ao extremo. Como afirmou Simon em seu livro "O Livro dos Códigos" a primeira grande Guerra Mundial foi a guerra dos químicos, devido as armas químicas como gás mostarda. Já a segunda grande guerra foi a dos físicos, por conta da bomba atômica. Se existir uma terceira (que Deus nos livre e guarde) certamente será dos matemáticos, pois a grande arma será a informação.
Nós não somos matemáticos e não comemos "Séries de
Fibonacci", "Transformadas de
Fourier" e "Logaritmos Discretos" em nosso café da manhã, mas como em todas as demais profissões, a ciência da criptografia não nos pode ser negligenciada. No nosso caso é justamente o contrário, somos nós quem implementamos esta ciência em nossos softwares e zelamos pela sua correta e imaculável utilização.
Hoje a ciência da computação atingiu níveis extremamente complexos. Na antiguidade qualquer pessoa versada em números conseguia compreender e aplicar, mediante papel e caneta, algoritmos de substituição monoalfabética, até mesmo a complexa
Cifra de Viginère. Hoje, com o advento da computação e de processadores cada vez mais rápidos, as cifras são completamente diferentes de suas ancestrais.
Basicamente a criptografia moderna pode ser classificada como
Simétrica ou
Assimétrica. Nas assimétricas existem duas chaves que foram chamadas de chave pública e chave privada, enquanto que as cifras Simétricas definem-se por possuírem uma única chave. O artigo
Introdução a criptografia ajuda a definir bem os termos e suas classificações.
Os
algoritmos Simétricos, por sua vez, podem ser basicamente subdivididos em
algoritmos de bloco e
algoritmos de fluxo. Muito mais do que apenas saber diferenciar um do outro, é importante saber as suas fraquezas, sendo que muitas vezes nós é quem as fabricamos usando o algoritmo errado para um determinado problema.
Estudar estas diferenças e mostrar para qual finalidade cada algoritmo serve e como ele deve ser usado é o propósito principal deste artigo. Despertar a curiosidade para esta maravilhosa ciência é um propósito secundário, porém não menos importante.