Skip to content

MASWE-0019: Implementações de Criptografia Arriscadas

Content in BETA

This content is in beta and still under active development, so it is subject to change any time (e.g. structure, IDs, content, URLs, etc.).

Send Feedback

Visão Geral

Implementações criptográficas arriscadas ou não conformes, como aquelas que não atendem aos padrões de segurança estabelecidos, como FIPS 140-2/3 (Federal Information Processing Standards), podem usar algoritmos que não foram suficientemente testados ou que carecem de certificação, podem não seguir as melhores práticas para gerenciamento seguro de chaves ou podem incluir soluções criptográficas personalizadas que não passaram por revisão rigorosa por pares ou validação formal.

Impacto

Implementações criptográficas personalizadas criadas sem seguir padrões estabelecidos tornam-nas mais suscetíveis a ataques, como força bruta ou criptanálise diferencial. Além disso, a criptografia é notoriamente difícil de implementar corretamente, e até mesmo pequenos erros em uma solução personalizada, como preenchimento incorreto ou geração defeituosa de números aleatórios, podem comprometer completamente a segurança do sistema, expondo dados sensíveis a atacantes.

O impacto associado a tais defeitos pode ser muito amplo e difícil de prever ou medir:

  • Violações de dados: Implementações arriscadas de criptografia podem levar ao acesso não autorizado a dados sensíveis, resultando em violações de dados.
  • Confidencialidade, integridade e autenticidade comprometidas: Os princípios fundamentais da criptografia (confidencialidade, integridade e autenticidade) são comprometidos. Atacantes podem descriptografar, manipular ou se passar por usuários ou sistemas legítimos.

Modos de Introdução

  • Desvio de bibliotecas padrão: Não usar bibliotecas conhecidas para criptografia, como as fornecidas pelas plataformas, como Conscrypt ou CryptoKit, ou outras bibliotecas bem estabelecidas, como OpenSSL, BouncyCastle, etc.
  • Uso de constantes criptográficas: Constantes criptográficas embutidas no código são normalmente usadas para implementar algoritmos criptográficos. Essas constantes incluem S-boxes (caixas de substituição) para cifras de bloco, tabelas de permutação, etc.
  • Uso de operações matemáticas de baixo nível: Operações matemáticas de baixo nível (como operações bit a bit, deslocamentos, esquemas de preenchimento personalizados) normalmente usadas em algoritmos criptográficos.
  • Código de alta entropia: Um indicador de implementações criptográficas ou código fortemente ofuscado que pode ocultar algoritmos criptográficos da engenharia reversa.
  • Uso de funções não criptográficas: Funções não criptográficas, como codificação Base64 ou XOR, em vez de criptografia.

Mitigações

  • Use bibliotecas criptográficas padrão e evite criptografia personalizada: Evite desenvolver algoritmos ou protocolos criptográficos personalizados. Prefira sempre bibliotecas criptográficas bem estabelecidas e amplamente aceitas, como OpenSSL, BoringSSL ou bibliotecas específicas da plataforma, como Conscrypt do Android e CryptoKit da Apple. Essas bibliotecas passaram por testes extensivos e são atualizadas regularmente para abordar novas ameaças de segurança.

  • Garanta conformidade com padrões de segurança: Se não for possível evitar o uso de criptografia personalizada, certifique-se de que ela seja implementada para atender aos padrões do setor, como FIPS 140-2/3 (Federal Information Processing Standards) ou as recomendações mais recentes do National Institute of Standards and Technology (NIST).

  • Realize auditorias de segurança periódicas: Se o uso de criptografia personalizada for inevitável, realize auditorias de segurança regulares (incluindo revisões de código minuciosas) para identificar e corrigir quaisquer falhas em suas implementações criptográficas personalizadas. Envolva especialistas em segurança externos para fornecer uma avaliação imparcial.