Criptografia: Fundamentos, Algoritmos Simétricos e Assimétricos

Classificado em Computação

Escrito em em português com um tamanho de 21,03 KB

Criptografia: Fundamentos

A Criptografia (do grego Kryptos "escondido" e Graphos "escrita"), literalmente "escrita escondida", é a arte de encriptar e desencriptar informação através de técnicas especiais. É frequentemente usada para permitir a troca de mensagens que só podem ser lidas pelas pessoas que são o alvo e que possuem os meios de decifrar.

A seguir, definem-se os termos usados em criptografia:

  • Texto Claro (ou Texto Simples): A informação original que, após o uso de certas técnicas criptográficas, resultará em um texto cifrado.
  • Texto Cifrado (ou Criptograma): A informação resultante após a criptografia de um texto simples. Esta informação é ininteligível.
  • Criptografar (ou Encriptar): Operação para codificar um texto claro.
  • Descriptografar (ou Decifrar): Operação inversa à criptografia, convertendo um texto cifrado ou criptograma em texto simples.
  • Chave (ou Senha): Informação secreta usada para codificar e decodificar o texto. É o que "abre a porta".

Técnicas de Criptografia

  • Substituição: Consiste em alterar os elementos básicos da mensagem (letras, números e símbolos) por outros.
  • Transposição: É um rearranjo da ordem dos elementos (letras, números ou símbolos) da mensagem.

A grande maioria das cifras modernas é uma combinação das duas técnicas anteriores.

Criptografia Simétrica (Algoritmos de Chave Simétrica)

Algoritmos de criptografia que utilizam a mesma chave para criptografar e descriptografar. Estes algoritmos são caracterizados por serem muito rápidos na criptografia e decodificação, não aumentam o volume de informações e são quase impossíveis de quebrar (obter o texto claro sem conhecer a chave).

Exemplos de algoritmos de chave simétrica:

  • DES (Data Encryption Standard): Utiliza chaves de 56 bits, o que significa que existem 256 chaves possíveis (aproximadamente 72 quatrilhões). Um computador comum pode decifrar em poucos dias e uma máquina especializada em poucas horas.
  • 3DES (Triple DES): Usa chaves de 128 bits, o que significa que existem 2128 chaves possíveis. A maioria dos cartões de crédito e outros pagamentos eletrónicos utiliza o algoritmo 3DES como padrão.
  • Outros: AES (Advanced Encryption Standard), LOKI ou GnuPG (sobre o GNU).

O inventor da cifra de Feistel foi Horst Feistel, que usou esse método para o algoritmo LUCIFER em 1970. Em 1974, foi proposto à NSA (National Security Agency), e o DES nasceu como resultado. Nem todos os algoritmos modernos de chaves simétricas são baseados na estrutura de Feistel, mas sim no seu princípio. Por exemplo, o AES – o padrão atual mundial – não se baseia numa rede de Feistel, mas sim numa rede de substituição (usando S-boxes) e permutações.

Ataques Criptográficos

Um ataque criptográfico é um método usado para burlar a segurança de um sistema, encontrando fraquezas num código, numa cifra, num protocolo de criptografia ou num esquema de gerenciamento de chaves. Este processo é também chamado de criptoanálise.

Força Bruta

Em criptografia, o ataque de força bruta visa recuperar uma chave secreta testando todas as combinações possíveis até encontrar aquela que permite o acesso.

Em outras palavras, o processo envolve, conhecendo o algoritmo de criptografia e um par de texto simples/texto cifrado, realizar a criptografia (ou decodificação) de um membro do par com cada uma das combinações possíveis, até que o outro membro do par seja encontrado. O esforço necessário para que a pesquisa seja bem-sucedida com uma probabilidade melhor do que o par será de 2n - 1 operações, onde n é o comprimento da chave (também conhecido como espaço de chaves).

Ataque de Dicionário

Um ataque de dicionário é um método de quebra de senha que consiste em testar senhas tentando todas as palavras contidas num dicionário. Este tipo de ataque é geralmente mais eficiente do que um ataque de força bruta, uma vez que muitos utilizadores tendem a usar palavras existentes na sua língua como chave, por serem fáceis de lembrar – o que não é uma boa prática.

Por exemplo, o programa KeePass mostra automaticamente a força da senha.

Dicas para Criação de Senhas Seguras

Uma prática comum para criar senhas fáceis de lembrar, mas que não são vulneráveis a ataques de dicionário, é usar as iniciais de cada palavra numa frase que tenha um significado especial. Por exemplo, se tomarmos a frase "Minha primeira moto foi uma BH210 que me foi dada pelo meu avô Francisco", a senha resultante seria: MpbfuBH210qmrmaF. Esta senha, misturando letras e números, com 16 caracteres, é relativamente longa e seria muito difícil de quebrar usando um ataque de força bruta, assumindo que o algoritmo de criptografia escolhido é seguro o suficiente.

Proteção contra Ataques

Uma forma simples de proteger um sistema contra ataques de força bruta ou ataques de dicionário é estabelecer um número máximo de tentativas. Desta forma, o sistema bloqueia automaticamente após um determinado número de tentativas frustradas. Um exemplo deste tipo de sistema de proteção é o mecanismo utilizado nos cartões SIM, que são automaticamente bloqueados após três tentativas de introduzir o código PIN.

Para resolver problemas de segurança e melhorar a robustez do sistema, utiliza-se frequentemente a criptografia híbrida, que combina criptografia simétrica e assimétrica.

Criptografia Assimétrica (Algoritmos de Chave Pública)

Algoritmos que utilizam chaves diferentes para criptografia (chave pública) e descriptografia (chave privada). Eles são mais lentos, aumentam o volume de informações e exigem um maior comprimento de chave para alcançar (ou tentar aproximar) a segurança dos algoritmos simétricos. Consequentemente, exigem mais poder de computação e mais tempo para criptografar e descriptografar.

Algoritmos assimétricos são baseados em funções e operações matemáticas, e não em bits e bytes como os algoritmos simétricos. A ideia básica utilizada são os problemas matemáticos que são facilmente resolvidos numa única direção e quase impossíveis na direção inversa (funções de mão única). Por exemplo, é muito mais fácil calcular o produto de dois números primos grandes do que fatorar o resultado (o que é a base do RSA).

A disponibilidade de duas chaves – uma pública e outra privada – tem um grande impacto na confidencialidade, distribuição de chaves e autenticação. Basicamente, uma comunicação usando algoritmos assimétricos segue os seguintes passos:

  1. B gera um par de chaves e partilha a sua chave pública.
  2. A codifica a mensagem a ser enviada usando a chave pública de B.
  3. B recebe a mensagem cifrada e decifra-a usando a sua chave privada. Ninguém mais é capaz de decifrar a mensagem, a menos que possua a chave privada de B.

Vantagens e Desvantagens da Criptografia Assimétrica

Como vantagem, os algoritmos assimétricos resolvem o problema da distribuição de chaves e são mais versáteis do que os simétricos, oferecendo mais serviços. No entanto, são mais lentos, e uma comunicação baseada apenas em algoritmos assimétricos é muito pesada. Por isso, são comumente usados algoritmos híbridos.

Com algoritmos assimétricos, não há necessidade de troca de chaves secretas, pois a chave usada para criptografar (a pública) é precisamente conhecida por todos.

Segurança e Tamanho da Chave

Assim como nas boas cifras simétricas, num bom sistema de criptografia de chave pública, toda a segurança recai sobre a chave, e não sobre o algoritmo. Portanto, o tamanho da chave é uma medida de segurança do sistema, mas não se pode comparar diretamente o tamanho da chave simétrica com o da chave pública para medir a segurança.

Num ataque de força bruta contra uma cifra simétrica com uma chave de 80 bits, o atacante deve tentar 280-1 chaves. Num ataque de força bruta contra uma criptografia de chave pública com uma chave de 512 bits, o atacante deve fatorar um número composto codificado em 512 bits (até 155 dígitos decimais). A quantidade de trabalho para o atacante é diferente, dependendo da criptografia que está a atacar. Embora 128 bits para cifras simétricas sejam suficientes, dada a tecnologia de fatoração atual, recomenda-se a utilização de chaves públicas de 1024 bits para a maioria dos casos.

Desvantagens da Criptografia Assimétrica

A principal vantagem da criptografia assimétrica é a capacidade de criptografar com uma chave e descriptografar com outra, mas este sistema apresenta várias desvantagens:

  • * Para o mesmo nível de segurança, requer mais tempo de processamento.
  • * As chaves devem ser maiores do que as simétricas.
  • * A mensagem criptografada ocupa mais espaço do que a original.
  • * O sistema de criptografia de curva elíptica (ECC) é uma alternativa menos dispendiosa para estes problemas.

Ferramentas como PGP, SSH ou a camada de segurança SSL/TLS (na hierarquia de redes TCP/IP) usam um sistema híbrido: criptografia assimétrica para trocar a chave simétrica, e criptografia simétrica para transmitir as informações.

Algoritmos de Chave Assimétrica

Alguns algoritmos principais de técnicas assimétricas são:

  • * Diffie-Hellman
  • * RSA
  • * DSA (Digital Signature Algorithm)
  • * ElGamal
  • * Elliptic Curve Cryptography (ECC)

Outros algoritmos de chave assimétrica, mas considerados inseguros:

  • * Algoritmo Merkle-Hellman ("Mochila").

Protocolos que Utilizam Criptografia Assimétrica

Alguns protocolos que usam os algoritmos acima são:

  • * DSS (Digital Signature Standard) com algoritmo DSA
  • * PGP (Pretty Good Privacy)
  • * GPG (GNU Privacy Guard), uma implementação do OpenPGP
  • * SSH (Secure Shell)
  • * SSL (Secure Sockets Layer), agora um padrão IETF
  • * TLS (Transport Layer Security)

Serviços Criptográficos Essenciais

  • Confidencialidade (ou Privacidade): A capacidade de garantir que a informação não seja acedida por pessoas não autorizadas. É o serviço mais óbvio oferecido pela criptografia.
  • Integridade: Capacidade de garantir ao destinatário que a informação não foi alterada ou adulterada.
  • Autenticação: Habilidade que permite ao utilizador da informação convencer-se de que a informação foi gerada por utilizadores autorizados.
  • Assinaturas: A capacidade de convencer terceiros de que a informação foi gerada por utilizadores autorizados.
  • Não-Repúdio: A capacidade de impedir que o recetor e o transmissor da informação neguem o seu papel na comunicação.
  • Controle de Acesso: A capacidade de regular o acesso à informação do sistema apenas a utilizadores autorizados.
  • Disponibilidade: Capacidade de garantir que a informação esteja sempre disponível para as solicitações do utilizador autorizado.

Certificado Digital

Um certificado digital (também conhecido como certificado de chave pública ou certificado de identidade) é um documento digital pelo qual uma terceira parte confiável (uma Autoridade Certificadora) garante a ligação entre a identidade de uma pessoa ou entidade (como nome, endereço e outra identificação) e uma chave pública.

Estes certificados são usados para verificar se uma chave pública pertence a um indivíduo ou entidade. A existência do certificado assegura que a informação de identidade e a chave pública pertencem ao utilizador ou entidade referida no certificado digital.

Embora existam vários formatos, os mais utilizados são regidos pela norma ITU-T X.509. O certificado normalmente contém o seguinte:

  • * O nome da entidade certificada
  • * Número de série
  • * Prazo de validade
  • * Uma cópia da chave pública do titular do certificado (esta chave é usada para verificação de assinatura digital)

Esta informação é assinada digitalmente pela autoridade emissora do certificado. Assim, o recetor pode verificar se essa associação foi realmente estabelecida.

Assinatura Eletrónica

Uma assinatura eletrónica é uma assinatura digital armazenada num suporte de hardware, enquanto a assinatura digital pode ser armazenada em mídia de hardware e software. A assinatura eletrónica tem o mesmo valor jurídico que as assinaturas manuscritas.

Na verdade, pode-se dizer que uma assinatura eletrónica é uma assinatura digital contida ou armazenada num recipiente eletrónico, geralmente um chip ROM. A sua principal característica, juntamente com a assinatura digital, é a sua qualidade de ser imutável (não violável). Não se deve confundir o hardware de armazenamento, como um chip, com o armazenamento de hardware da assinatura digital; pode-se armazenar uma assinatura digital numa pen drive (flash), mas como este tipo de memória é RAM e não ROM, não será considerada uma assinatura eletrónica, a menos que seja uma assinatura digital contida num formato físico específico.

Identificação Eletrónica (DNIe)

Em Espanha, foi publicado em Março de 2006 um tipo especial de documento de identidade, chamado DNI Eletrónico (Identificação Eletrónica). Esta é a evolução do documento de identidade nacional, projetada para se adaptar ao uso na sociedade da informação e para permitir que os seus portadores acedam a determinados serviços eletrónicos.

Requisitos de Hardware e Software para o DNIe

Para usar o cartão de identificação eletrónica, é necessário ter certos elementos de hardware e software que permitirão o acesso ao chip do cartão e, consequentemente, o uso dos certificados nele contidos.

a) Elementos de Hardware

A identificação eletrónica exige as seguintes instalações físicas:

  • Um computador pessoal (com processador Intel Pentium III ou tecnologia similar).
  • Um leitor de cartão inteligente que cumpra a norma ISO-7816. Existem diferentes implementações: integrado no teclado, externo (conectado via USB) ou através de uma interface PCMCIA.

b) Elementos de Software

Sistemas Operativos

O cartão de identificação eletrónica pode operar em diferentes ambientes:

  • Microsoft Windows (2000, XP e Vista)
  • UNIX / Linux ou Mac
Navegadores

O cartão de identidade eletrónica é compatível com os seguintes navegadores:

  • Microsoft Internet Explorer (versão 6.0 ou superior)
Controladores / Módulos Criptográficos

Para interagir adequadamente com cartões criptográficos em geral, e com o DNI Eletrónico em particular, o computador deve ter instalado módulos de software chamados módulos criptográficos.

  • Num ambiente Microsoft Windows, o computador deve ter um serviço chamado Cryptographic Service Provider (CSP).
  • No UNIX/Linux ou Mac, pode-se usar a identificação eletrónica através de um módulo criptográfico chamado PKCS #11.

Tanto os CSPs quanto os módulos PKCS #11 específicos para o DNI Eletrónico estarão disponíveis no endereço www.dnielectronico.es/descargas.

Para configurar corretamente o leitor de cartão com as exigências do DNIe, é aconselhável seguir as instruções do fabricante do dispositivo. Em alguns casos, deve-se instalar um driver específico que varia dependendo do tipo de leitor e do sistema operacional.

Entradas relacionadas: