CERT.br

Centro de Estudos, Resposta e Tratamento de
Incidentes de Segurança no Brasil

Cartilha de Segurança para Internet

Ir para o conteúdo

9. Criptografia

[Criptografia]

A criptografia, considerada como a ciência e a arte de escrever mensagens em forma cifrada ou em código, é um dos principais mecanismos de segurança que você pode usar para se proteger dos riscos associados ao uso da Internet.

A primeira vista ela até pode parecer complicada, mas para usufruir dos benefícios que proporciona você não precisa estudá-la profundamente e nem ser nenhum matemático experiente. Atualmente, a criptografia já está integrada ou pode ser facilmente adicionada à grande maioria dos sistemas operacionais e aplicativos e para usá-la, muitas vezes, basta a realização de algumas configurações ou cliques de mouse.

Por meio do uso da criptografia você pode:

  • proteger os dados sigilosos armazenados em seu computador, como o seu arquivo de senhas e a sua declaração de Imposto de Renda;
  • criar uma área (partição) específica no seu computador, na qual todas as informações que forem lá gravadas serão automaticamente criptografadas;
  • proteger seus backups contra acesso indevido, principalmente aqueles enviados para áreas de armazenamento externo de mídias;
  • proteger as comunicações realizadas pela Internet, como os e-mails enviados/recebidos e as transações bancárias e comerciais realizadas.

Nas próximas seções são apresentados alguns conceitos de criptografia. Antes, porém, é importante que você se familiarize com alguns termos geralmente usados e que são mostrados na Tabela 9.1.

Tabela 9.1: Termos empregados em criptografia e comunicações via Internet.
Termo Significado
Texto claro Informação legível (original) que será protegida, ou seja, que será codificada
Texto codificado (cifrado) Texto ilegível, gerado pela codificação de um texto claro
Codificar (cifrar) Ato de transformar um texto claro em um texto codificado
Decodificar (decifrar) Ato de transformar um texto codificado em um texto claro
Método criptográfico Conjunto de programas responsável por codificar e decodificar informações
Chave Similar a uma senha, é utilizada como elemento secreto pelos métodos criptográficos. Seu tamanho é geralmente medido em quantidade de bits
Canal de comunicação Meio utilizado para a troca de informações
Remetente Pessoa ou serviço que envia a informação
Destinatário Pessoa ou serviço que recebe a informação

9.1. Criptografia de chave simétrica e de chaves assimétricas

De acordo com o tipo de chave usada, os métodos criptográficos podem ser subdivididos em duas grandes categorias: criptografia de chave simétrica e criptografia de chaves assimétricas.

Criptografia de chave simétrica: também chamada de criptografia de chave secreta ou única, utiliza uma mesma chave tanto para codificar como para decodificar informações, sendo usada principalmente para garantir a confidencialidade dos dados. Casos nos quais a informação é codificada e decodificada por uma mesma pessoa não há necessidade de compartilhamento da chave secreta. Entretanto, quando estas operações envolvem pessoas ou equipamentos diferentes, é necessário que a chave secreta seja previamente combinada por meio de um canal de comunicação seguro (para não comprometer a confidencialidade da chave). Exemplos de métodos criptográficos que usam chave simétrica são: AES, Blowfish, RC4, 3DES e IDEA.
Criptografia de chaves assimétricas: também conhecida como criptografia de chave pública, utiliza duas chaves distintas: uma pública, que pode ser livremente divulgada, e uma privada, que deve ser mantida em segredo por seu dono. Quando uma informação é codificada com uma das chaves, somente a outra chave do par pode decodificá-la. Qual chave usar para codificar depende da proteção que se deseja, se confidencialidade ou autenticação, integridade e não-repúdio. A chave privada pode ser armazenada de diferentes maneiras, como um arquivo no computador, um smartcard ou um token. Exemplos de métodos criptográficos que usam chaves assimétricas são: RSA, DSA, ECC e Diffie-Hellman.

A criptografia de chave simétrica, quando comparada com a de chaves assimétricas, é a mais indicada para garantir a confidencialidade de grandes volumes de dados, pois seu processamento é mais rápido. Todavia, quando usada para o compartilhamento de informações, se torna complexa e pouco escalável, em virtude da:

  • necessidade de um canal de comunicação seguro para promover o compartilhamento da chave secreta entre as partes (o que na Internet pode ser bastante complicado) e;
  • dificuldade de gerenciamento de grandes quantidades de chaves (imagine quantas chaves secretas seriam necessárias para você se comunicar com todos os seus amigos).

A criptografia de chaves assimétricas, apesar de possuir um processamento mais lento que a de chave simétrica, resolve estes problemas visto que facilita o gerenciamento (pois não requer que se mantenha uma chave secreta com cada um que desejar se comunicar) e dispensa a necessidade de um canal de comunicação seguro para o compartilhamento de chaves.

Para aproveitar as vantagens de cada um destes métodos, o ideal é o uso combinado de ambos, onde a criptografia de chave simétrica é usada para a codificação da informação e a criptografia de chaves assimétricas é utilizada para o compartilhamento da chave secreta (neste caso, também chamada de chave de sessão). Este uso combinado é o que é utilizado pelos navegadores Web e programas leitores de e-mails. Exemplos de uso deste método combinado são: SSL, PGP e S/MIME.

9.2. Função de resumo (Hash)

Uma função de resumo é um método criptográfico que, quando aplicado sobre uma informação, independente do tamanho que ela tenha, gera um resultado único e de tamanho fixo, chamado hash1.

Você pode utilizar hash para:

  • verificar a integridade de um arquivo armazenado em seu computador ou em seus backups;
  • verificar a integridade de um arquivo obtido da Internet (alguns sites, além do arquivo em si, também disponibilizam o hash correspondente, para que você possa verificar se o arquivo foi corretamente transmitido e gravado);
  • gerar assinaturas digitais, como descrito na Seção 9.3.

Para verificar a integridade de um arquivo, por exemplo, você pode calcular o hash dele e, quando julgar necessário, gerar novamente este valor. Se os dois hashes forem iguais então você pode concluir que o arquivo não foi alterado. Caso contrário, este pode ser um forte indício de que o arquivo esteja corrompido ou que foi modificado. Exemplos de métodos de hash são: SHA-1, SHA-256 e MD5.

[1] O hash é gerado de tal forma que não é possível realizar o processamento inverso para se obter a informação original e que qualquer alteração na informação original produzirá um hash distinto. Apesar de ser teoricamente possível que informações diferentes gerem hashes iguais, a probabilidade disto ocorrer é bastante baixa. voltar

9.3. Assinatura digital

A assinatura digital permite comprovar a autenticidade e a integridade de uma informação, ou seja, que ela foi realmente gerada por quem diz ter feito isto e que ela não foi alterada.

A assinatura digital baseia-se no fato de que apenas o dono conhece a chave privada e que, se ela foi usada para codificar uma informação, então apenas seu dono poderia ter feito isto. A verificação da assinatura é feita com o uso da chave pública, pois se o texto foi codificado com a chave privada, somente a chave pública correspondente pode decodificá-lo.

Para contornar a baixa eficiência característica da criptografia de chaves assimétricas, a codificação é feita sobre o hash e não sobre o conteúdo em si, pois é mais rápido codificar o hash (que possui tamanho fixo e reduzido) do que a informação toda.

9.4. Certificado digital

Como dito anteriormente, a chave púbica pode ser livremente divulgada. Entretanto, se não houver como comprovar a quem ela pertence, pode ocorrer de você se comunicar, de forma cifrada, diretamente com um impostor.

Um impostor pode criar uma chave pública falsa para um amigo seu e enviá-la para você ou disponibilizá-la em um repositório. Ao usá-la para codificar uma informação para o seu amigo, você estará, na verdade, codificando-a para o impostor, que possui a chave privada correspondente e conseguirá decodificar. Uma das formas de impedir que isto ocorra é pelo uso de certificados digitais.

O certificado digital é um registro eletrônico composto por um conjunto de dados que distingue uma entidade e associa a ela uma chave pública. Ele pode ser emitido para pessoas, empresas, equipamentos ou serviços na rede (por exemplo, um site Web) e pode ser homologado para diferentes usos, como confidencialidade e assinatura digital.

Um certificado digital pode ser comparado a um documento de identidade, por exemplo, o seu passaporte, no qual constam os seus dados pessoais e a identificação de quem o emitiu. No caso do passaporte, a entidade responsável pela emissão e pela veracidade dos dados é a Polícia Federal. No caso do certificado digital esta entidade é uma Autoridade Certificadora (AC).

Uma AC emissora é também responsável por publicar informações sobre certificados que não são mais confiáveis. Sempre que a AC descobre ou é informada que um certificado não é mais confiável, ela o inclui em uma "lista negra", chamada de "Lista de Certificados Revogados" (LCR) para que os usuários possam tomar conhecimento. A LCR é um arquivo eletrônico publicado periodicamente pela AC, contendo o número de série dos certificados que não são mais válidos e a data de revogação.

A Figura 9.1 ilustra como os certificados digitais são apresentados nos navegadores Web. Note que, embora os campos apresentados sejam padronizados, a representação gráfica pode variar entre diferentes navegadores e sistemas operacionais. De forma geral, os dados básicos que compõem um certificado digital são:

  • versão e número de série do certificado;
  • dados que identificam a AC que emitiu o certificado;
  • dados que identificam o dono do certificado (para quem ele foi emitido);
  • chave pública do dono do certificado;
  • validade do certificado (quando foi emitido e até quando é válido);
  • assinatura digital da AC emissora e dados para verificação da assinatura.
[Exemplos de certificados digitais]

Figura 9.1: Exemplos de certificados digitais.

O certificado digital de uma AC é emitido, geralmente, por outra AC, estabelecendo uma hierarquia conhecida como "cadeia de certificados" ou "caminho de certificação", conforme ilustrado na Figura 9.2. A AC raiz, primeira autoridade da cadeia, é a âncora de confiança para toda a hierarquia e, por não existir outra AC acima dela, possui um certificado autoassinado (mais detalhes a seguir). Os certificados das ACs raízes publicamente reconhecidas já vêm inclusos, por padrão, em grande parte dos sistemas operacionais e navegadores e são atualizados juntamente com os próprios sistemas. Alguns exemplos de atualizações realizadas na base de certificados dos navegadores são: inclusão de novas ACs, renovação de certificados vencidos e exclusão de ACs não mais confiáveis.

[Cadeia de certificados]

Figura 9.2: Cadeia de certificados.

Alguns tipos especiais de certificado digital que você pode encontrar são:

Certificado autoassinado: é aquele no qual o dono e o emissor são a mesma entidade. Costuma ser usado de duas formas:
Legítima: além das ACs raízes, certificados autoassinados também costumam ser usados por instituições de ensino e pequenos grupos que querem prover confidencialidade e integridade nas conexões, mas que não desejam (ou não podem) arcar com o ônus de adquirir um certificado digital validado por uma AC comercial.
Maliciosa: um atacante pode criar um certificado autoassinado e utilizar, por exemplo, mensagens de phishing (mais detalhes na Seção 2.3 do Capítulo Golpes na Internet), para induzir os usuários a instalá-lo. A partir do momento em que o certificado for instalado no navegador, passa a ser possível estabelecer conexões cifradas com sites fraudulentos, sem que o navegador emita alertas quanto à confiabilidade do certificado.
Certificado EV SSL (Extended Validation Secure Socket Layer): certificado emitido sob um processo mais rigoroso de validação do solicitante. Inclui a verificação de que a empresa foi legalmente registrada, encontra-se ativa e que detém o registro do domínio para o qual o certificado será emitido, além de dados adicionais, como o endereço físico.

Dicas sobre como reconhecer certificados autoassinados e com validação avançada são apresentados na Seção 10.1 do Capítulo Uso seguro da Internet.

9.5. Programas de criptografia

Para garantir a segurança das suas mensagens é importante usar programas leitores de e-mails com suporte nativo a criptografia (por exemplo, que implementam S/MIME - Secure/Multipurpose Internet Mail Extensions) ou que permitam a integração de outros programas e complementos específicos para este fim.

Programas de criptografia, como o GnuPG2, além de poderem ser integrados aos programas leitores de e-mails, também podem ser usados separadamente para cifrar outros tipos de informação, como os arquivos armazenados em seu computador ou em mídias removíveis.

Existem também programas (nativos do sistema operacional ou adquiridos separadamente) que permitem cifrar todo o disco do computador, diretórios de arquivos e dispositivos de armazenamento externo (como pen-drives e discos), os quais visam preservar o sigilo das informações em caso de perda ou furto do equipamento.

[2] http://www.gnupg.org/. O GnuPG não utiliza o conceito de certificados digitais emitidos por uma hierarquia de autoridades certificadoras. A confiança nas chaves é estabelecida por meio do modelo conhecido como "rede de confiança", no qual prevalece a confiança entre cada entidade. voltar

9.6. Cuidados a serem tomados

Proteja seus dados:

  • utilize criptografia sempre que, ao enviar uma mensagem, quiser assegurar-se que somente o destinatário possa lê-la;
  • utilize assinaturas digitais sempre que, ao enviar uma mensagem, quiser assegurar ao destinatário que foi você quem a enviou e que o conteúdo não foi alterado;
  • só envie dados sensíveis após certificar-se de que está usando uma conexão segura (mais detalhes na Seção 10.1 do Capítulo Uso seguro da Internet);
  • utilize criptografia para conexão entre seu leitor de e-mails e os servidores de e-mail do seu provedor;
  • cifre o disco do seu computador e dispositivos removíveis, como disco externo e pen-drive. Desta forma, em caso de perda ou furto do equipamento, seus dados não poderão ser indevidamente acessados;
  • verifique o hash, quando possível, dos arquivos obtidos pela Internet (isto permite que você detecte arquivos corrompidos ou que foram indevidamente alterados durante a transmissão).

Seja cuidadoso com as suas chaves e certificados:

  • utilize chaves de tamanho adequado. Quanto maior a chave, mais resistente ela será a ataques de força bruta (mais detalhes na Seção 3.5 do Capítulo Ataques na Internet);
  • não utilize chaves secretas óbvias (mais detalhes na Seção 8.2 do Capítulo Contas e senhas);
  • certifique-se de não estar sendo observado ao digitar suas chaves e senhas de proteção;
  • utilize canais de comunicação seguros quando compartilhar chaves secretas;
  • armazene suas chaves privadas com algum mecanismo de proteção, como por exemplo senha, para evitar que outra pessoa faça uso indevido delas;
  • preserve suas chaves. Procure fazer backups e mantenha-os em local seguro (se você perder uma chave secreta ou privada, não poderá decifrar as mensagens que dependiam de tais chaves);
  • tenha muito cuidado ao armazenar e utilizar suas chaves em computadores potencialmente infectados ou comprometidos, como em LAN houses, cybercafes, stands de eventos, etc;
  • se suspeitar que outra pessoa teve acesso à sua chave privada (por exemplo, porque perdeu o dispositivo em que ela estava armazenada ou porque alguém acessou indevidamente o computador onde ela estava guardada), solicite imediatamente a revogação do certificado junto à AC emissora.

Seja cuidadoso ao aceitar um certificado digital:

  • mantenha seu sistema operacional e navegadores Web atualizados (além disto contribuir para a segurança geral do seu computador, também serve para manter as cadeias de certificados sempre atualizadas);
  • mantenha seu computador com a data correta. Além de outros benefícios, isto impede que certificados válidos sejam considerados não confiáveis e, de forma contrária, que certificados não confiáveis sejam considerados válidos (mais detalhes no Capítulo Segurança de computadores);
  • ao acessar um site Web, observe os símbolos indicativos de conexão segura e leia com atenção eventuais alertas exibidos pelo navegador (mais detalhes na Seção 10.1 do Capítulo Uso seguro da Internet);
  • caso o navegador não reconheça o certificado como confiável, apenas prossiga com a navegação se tiver certeza da idoneidade da instituição e da integridade do certificado, pois, do contrário, poderá estar aceitando um certificado falso, criado especificamente para cometer fraudes (detalhes sobre como fazer isto na Seção 10.1.2 do Capítulo Uso seguro da Internet).

Licença Creative Commons CERT.br Cartilha de Segurança para Internet - CERT.br - $Date: 2012/06/03 01:41:42 $

Site acessível via IPv6 CSS Válido Desenvolvido em HTML 5