MASTG-KNOW-0013: Geração de números aleatórios
A criptografia requer geração segura de números pseudoaleatórios (PRNG). As classes padrão do Java, como java.util.Random, não fornecem aleatoriedade suficiente e, na verdade, podem possibilitar que um invasor adivinhe o próximo valor a ser gerado e use essa suposição para impersonar outro usuário ou acessar informações sensíveis.
Em geral, SecureRandom deve ser utilizado. No entanto, se houver suporte para versões do Android inferiores ao Android 4.4 (API level 19), é necessário cuidado adicional para contornar o bug nas versões Android 4.1-4.3 (API level 16-18) que falharam em inicializar adequadamente o PRNG.
A maioria dos desenvolvedores deve instanciar SecureRandom por meio do construtor padrão, sem quaisquer argumentos. Outros construtores são para usos mais avançados e, se utilizados incorretamente, podem levar à redução da aleatoriedade e segurança. O provedor de PRNG que suporta SecureRandom utiliza o SHA1PRNG do provedor AndroidOpenSSL (Conscrypt).
Consulte a Documentação do Android para mais detalhes.