Skip to content

MASTG-TEST-0015: Teste dos Propósitos das Chaves

Visão Geral

Análise Estática

Identifique todas as instâncias em que a criptografia é utilizada. Você pode procurar por:

  • classes Cipher, Mac, MessageDigest, Signature
  • interfaces Key, PrivateKey, PublicKey, SecretKey
  • funções getInstance, generateKey
  • exceções KeyStoreException, CertificateException, NoSuchAlgorithmException
  • classes que importam java.security.*, javax.crypto.*, android.security.*, android.security.keystore.*

Para cada instância identificada, determine sua finalidade e seu tipo. Ela pode ser usada:

  • para criptografia/descriptografia - para garantir a confidencialidade dos dados
  • para assinatura/verificação - para garantir a integridade dos dados (bem como a responsabilidade em alguns casos)
  • para manutenção - para proteger chaves durante determinadas operações sensíveis (como ao serem importadas para o KeyStore)

Além disso, você deve identificar a lógica de negócio que utiliza as instâncias identificadas de criptografia.

Durante a verificação, as seguintes verificações devem ser realizadas:

  • todas as chaves são utilizadas de acordo com a finalidade definida durante sua criação? (é relevante para chaves do KeyStore, que podem ter KeyProperties definidas)
  • para chaves assimétricas, a chave privada está sendo usada exclusivamente para assinatura e a chave pública para criptografia?
  • chaves simétricas são usadas para múltiplos propósitos? Uma nova chave simétrica deve ser gerada se for usada em um contexto diferente.
  • a criptografia está sendo utilizada de acordo com sua finalidade de negócio?

Análise Dinâmica

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