Introdução
A forma mais utilizada para
prover a segurança em pontos vulneráveis de uma rede de computadores
é a utilização da criptografia. A RFC 4949 (Request For Coments nº 4949) define o termo criptografia como a ciência matemática que
lida com a transformação de dados para mudar seu significado em algo
ininteligível para o inimigo, isto é, esconder seu conteúdo
semântico prevenindo sua alteração ou o seu uso sem autorização.
A palavra tem origem grega (kriptos
= escondido, oculto e grifo = grafia) e define a arte ou ciência de
escrever em cifras ou em códigos utilizando um conjunto de técnicas
que torna a mensagem incompreensível e chamada comumente de "texto
cifrado", através de um processo chamado cifragem, permitindo que
apenas o destinatário desejado consiga decodificar e ler a mensagem com
clareza. As mensagens legíveis são chamadas de texto plano ou texto
limpo e as ilegíveis, são chamadas de texto cifrado.
Criptografia Simétrica e
Assimétrica
A criptografia fornece
técnicas para codificar e decodificar dados, tais que os mesmos possam
ser armazenados, transmitidos e recuperados sem sua alteração ou
exposição. Essas técnicas utilizam conceitos matemáticos para a
construção de seus algoritmos e podem ser usadas como um meio efetivo
de proteção de informações suscetíveis a ataques, estejam elas
armazenadas em algum dispositivo de armazenamento de dados ou sendo
transmitidas pela rede de comunicação. Seu principal objetivo é
prover uma comunicação segura, garantindo serviços básicos de
autenticação, privacidade e integridade dos dados.
A criptografia moderna pode
ser classificada como Simétrica ou Assimétrica. Na
criptografia assimétrica existem duas chaves, uma conhecida por chave
pública e a outra por chave privada. Já a criptografia simétrica
define uma única chave para cifrar e decifrar uma mensagem. Os algoritmos
Simétricos, por sua vez, podem ser subdivididos em algoritmos
em bloco e algoritmos de fluxo. Um algoritmo é tanto mais
poderoso (e eficiente) quanto melhor for a utilização que faz da chave
e quanto mais resistente for à criptoanálise (processo que tenta
descobrir o conteúdo cifrado pelo algoritmo, sem necessitar de qualquer
tipo de chave).
Encontramos soluções que
utilizam ambas as técnicas simultaneamente, onde a criptografia
assimétrica é usada para o estabelecimento da comunicação segura
inicial e para a troca de uma chave simétrica, que será utilizada na
restante comunicação. A vantagem desta solução reside na
diminuição da carga computacional, uma vez que a criptografia
assimétrica requer um maior esforço computacional relativamente à
criptografia de chave simétrica, ganhando-se assim em termos de
desempenho.
Criptografia Simétrica
A criptografia simétrica é
utilizada para prover a segurança das informações. Nesta técnica uma
mesma chave é compartilhada entre o emissor e o receptor, sendo
utilizada para criptografar e decriptografar a mensagem (Figura 1). Com
este modelo pode-se garantir a confidencialidade da mensagem porque
somente o emissor e o receptor têm conhecimento da chave secreta.
Em cifradores simétricos, o
algoritmo de criptografia e decriptografia são os mesmos, mudando
apenas a forma como são utilizadas as chaves e texto cifrado não
contém qualquer parte da chave e não sofre alteração quanto ao seu
tamanho.
Figura 1 - Criptografia Simétrica
A principal vantagem do
modelo de criptografia simétrica é a eficiência e velocidade dos
algoritmos que são mais rápidos do que os algoritmos assimétricos.
Esses algoritmos podem ser divididos em dois tipos principais: as
chamadas cifras em bloco e as cifras de fluxo. A diferença entre
eles é que as cifras de fluxo processam cada bit da mensagem
individualmente (processamento bit a bit), enquanto que as cifras em
bloco processam blocos de informação de uma só vez, concatenando-os
no final do processo. Neste caso, são usados blocos de 64 bits ou 128
bits tipicamente.
Cifras em Bloco
Na cifra em bloco, um bloco
de determinado tamanho deve ser cifrado de cada vez e o conjunto de
operações matemáticas envolvendo a chave é repetido a cada bloco,
como mostra a Figura 2. Não é possível cifrar menos do que o tamanho
de um bloco. Os algoritmos que operam com blocos efetuam operações de
substituição e transposição simultaneamente.
Figura 2 – Cifra em Bloco
No caso da cifra da figura
anterior, o tamanho do bloco é 64 bits. Como o arquivo não é
múltiplo de 64 bits, um enchimento, chamado de padding, foi
inserido no bloco 5. Cabeçalhos inseridos no arquivo cifrado devem
informar qual foi o algoritmo usado, qual o tamanho de bloco e qual o
tamanho real do arquivo para que no momento da decriptação o padding seja descartado.
As cifras em bloco são
melhores para criptografar dados estáticos, onde já se sabe
antecipadamente o tamanho e se podem dividir em blocos de M bits. Um
possível problema com cifras em bloco é o fato da existência de
blocos repetitivos que acabam por criar um padrão. Para evitar o
reconhecimento de padrões repetitivos usam-se os feedback modes:
- Electronic Code Book
(EBC) - Neste modo, a mensagem é dividida em blocos de tamanho adequado,
cada bloco é cifrado em separado e os blocos cifrados são
concatenados na mesma ordem (Figura 3). O grande inconveniente desta
técnica é que blocos da mensagem original idênticos vão produzir
blocos cifrados idênticos, o que pode não ser desejável.
Figura 3 - Modo EBC
Cipher Block Chaining (CBC) - Neste modo é feita
uma operação OU EXCLUSIVO (XOR) do bloco de texto plano com o texto
cifrado antecedente, e então ocorre a codificação (Figura 4). É
utilizado um vetor de inicialização para iniciar o processo, já que
não existe texto cifrado para o bloco inicial.
Figura 4 - Modo CBC
Cipher Feedback Block (CFB) - Neste modo, cada
bloco de texto cifrado antecedente é codificado, e o resultado é
combinado com o bloco de texto plano através do operador XOR para
produzir o bloco cifrado atual (Figura 5). Também se utiliza um vetor
de inicialização para iniciar o processo.
Figura 5 - Modo CFB
Output Feedback Block (OFB) - Este modo é muito
similar ao CFB, exceto pelo fato de que a quantidade de XOR com cada
bloco de texto plano é gerada independentemente do bloco de texto plano
ou do bloco de texto cifrado (Figura 6).
Figura 6 - Modo OFB
Cifras de Fluxo
Cifras em bloco operam em
blocos de dados. Cifras de fluxo, também conhecidas como cifras em
cadeia, operam em unidades menores, geralmente bits, o que as torna bem
mais rápidas.
Cifras de fluxo geram uma
seqüência de bits que será usada como chave, conhecida como keystream,
a partir de uma chave inicial. A encriptação ocorre pela combinação
do texto plano com a keystream através de operações XOR
(Figura 7).
Na cifra de fluxo, não é
necessário ter um bloco para cifrar. Cifra-se o que se tem e, se
desejar, no momento que se quiser. Por exemplo, os algoritmos de
substituição usados no passado permitiam cifrar letra a letra e não
precisavam ser agrupadas para completar um bloco. De fato, todos os
algoritmos históricos são considerados como cifras de fluxo.
Figura 7 - Cifra de Fluxo
Bibliografia
SCHLEMER, Elgio e GRAVATAÍ, Ulbra. Conceitos de Criptografia de Protocolos SSL.
Disponível em: https://pt.slideshare.net/tchelinux/elgio-conceitos-decriptografiaeoprotocolossl
Acesso em: 14 de junho de 2010
KONHEIM, Alan G. Computer
Security and Cryptography. Canadá: John Wiley & Sons, Inc., 2007.
MOLLIN, Richard A. An
Introduction to Cryptography, 2 ed. EUA:
Chapman & Hall/CRC, 2007.
REZENDE, Pedro Antonio Dourado
de. Criptografia e Segurança na Informática. Brasilia: CopyMarket.com,
2000.
SILVA, Pedro Tavares; CARVALHO,
Hugo; TORRES, Catarina Botelho. Segurança dos Sistemas de Informação
- Gestão Estratégica da Segurança Empresarial. Portugal:
Centro Atlântico, 2003.
STALLINGS, William.
Criptografia e segurança de redes: Princípios e práticas, 4 ed. São
Paulo: Prentice Hall, 2008.
|