Skip to content

MASTG-TEST-0013: Teste de Criptografia Simétrica

Deprecated Test

This test is deprecated and should not be used anymore. Reason:

Please check the following MASTG v2 tests that cover this v1 test:

Visão Geral

Análise Estática

Identifique todas as instâncias de criptografia de chave simétrica no código e procure por qualquer mecanismo que carregue ou forneça uma chave simétrica. Você pode procurar por:

  • algoritmos simétricos (como DES, AES, etc.)
  • especificações para um gerador de chaves (como KeyGenParameterSpec, KeyPairGeneratorSpec, KeyPairGenerator, KeyGenerator, KeyProperties, etc.)
  • classes que importam java.security.*, javax.crypto.*, android.security.*, android.security.keystore.*

Verifique também a lista de problemas comuns de configuração criptográfica).

Para cada instância identificada, verifique se as chaves simétricas utilizadas:

  • não fazem parte dos recursos do aplicativo
  • não podem ser derivadas de valores conhecidos
  • não estão embutidas (hardcoded) no código

Para cada chave simétrica embutida, verifique se ela não é usada em contextos sensíveis de segurança como o único método de criptografia.

Como exemplo, ilustramos como localizar o uso de uma chave de criptografia embutida. Primeiro, desmonte e descompile ( Descompilação de Código Java) o aplicativo para obter o código Java, por exemplo, usando jadx.

Agora pesquise nos arquivos o uso da classe SecretKeySpec, por exemplo, usando recursivamente o comando grep ou a função de busca do jadx:

grep -r "SecretKeySpec"

Isso retornará todas as classes que usam a classe SecretKeySpec. Agora examine esses arquivos e rastreie quais variáveis são usadas para passar o material da chave. A figura abaixo mostra o resultado da realização dessa avaliação em um aplicativo pronto para produção. Podemos claramente localizar o uso de uma chave de criptografia estática que está embutida e inicializada no array de bytes estático Encrypt.keyBytes.

Análise Dinâmica

Você pode usar Rastreamento de Métodos em métodos criptográficos para determinar valores de entrada/saída, como as chaves que estão sendo usadas. Monitore o acesso ao sistema de arquivos enquanto operações criptográficas estão sendo realizadas para avaliar onde o material da chave é escrito ou lido. Por exemplo, monitore o sistema de arquivos usando o API monitor do RMS Runtime Mobile Security.