Solució per a l'encriptació criptogràfica no segura

Aquesta informació va dirigida als desenvolupadors d'aplicacions que contenen patrons d'encriptació no segura. És a dir, un text xifrat es genera amb una clau secreta calculada de manera estàtica, una sal o un vector d'inicialització (IV). Les ubicacions de l'encriptació criptogràfica no segura es poden trobar a la notificació de Play Console de la teva aplicació. 

Com es poden corregir les alertes de "Patrons d'encriptació criptogràfica no segura" 

Revisa les claus calculades de manera estàtica, els vectors d'inicialització o les sals de la teva aplicació que es fan servir en operacions d'encriptació criptogràfica i assegura't que aquests valors es construeixin de manera segura. Per exemple, el codi següent utilitza una clau secreta i un vector d'inicialització calculats de manera estàtica:

   // L'alerta de consola fa referència a aquest mètode
  public byte[] encryptionUtil(String key, String iv, byte[] plainText) {
    Cipher cipher = Cipher.getInstance(“AES/GCM/NoPadding”);
    SecretKeySpec keySpec = new SecretKeySpec(key.getBytes(), “AES”);
    GCMParameterSpec paramSpec = new GCMParameterSpec(256, iv.getBytes());
    cipher.init(Cipher.ENCRYPT_MODE, keySpec, paramSpec);
    return cipher.doFinal(plainText);
  }

  // La clau i el vector d'inicialització no segurs són aquí i s'han de canviar
  byte[] cipherText = encryptionUtil(“abcdef...”, “010203040506”, plainText);

Valors calculats de manera estàtica
Un valor calculat de manera estàtica és un valor que és el mateix en cada execució de la teva aplicació. Els valors criptogràfics calculats de manera estàtica es poden extreure de la teva aplicació i es poden utilitzar per atacar les dades encriptades de la teva aplicació. Encara que manipulis les claus, els vectors d'inicialització i les sals de maneres complexes abans d'utilitzar-los, no deixen de ser insegurs si aquestes manipulacions són les mateixes per a cada execució de programa.

Pràctiques recomanades d'Android
Recomanem que facis servir Jetpack Security per a la criptografia simètrica. Si la teva aplicació encripta claus d'API, informació d'identificació personal (PII) o altres dades sensibles, pots utilitzar EncryptedSharedPreferences per emmagatzemar de manera segura aquestes dades sense preocupar-te sobre la implementació de claus secretes, vectors d'inicialització i sals. Pots trobar més pràctiques recomanades i exemples en aquesta pàgina. Per transmetre dades de manera segura a altres sistemes, els desenvolupadors haurien d'utilitzar TLS/SSL per garantir la seguretat de les dades durant la transmissió. 

Jetpack Security fa servir Tink, el projecte de codi obert de Google, per gestionar l'encriptació autenticada simètrica. Per a casos d'ús avançats relacionats amb les operacions criptogràfiques de nivell inferior, et recomanem que facis servir Tink directament.

Si les pràctiques recomanades d'Android mencionades anteriorment no s'ajusten al teu cas d'ús, i se't demana que gestionis les claus, els vectors d'inicialització i les sals de manera explícita, et recomanem que segueixis aquests estàndards:

  1. Claus secretes: les claus secretes simètriques han de ser imprevisibles i secretes. Per encriptar les dades locals, els desenvolupadors haurien de generar claus secretes fent sevir l'aleatorietat segura criptogràficament (o a partir de dades generades per l'usuari, si es fa servir PBEKeySpecs) i emmagatzemar les claus secretes fent servir AndroidKeystore
  2. Vectors d'inicialització: els vectors d'inicialització han de ser únics i imprevisibles en diversos missatges, però no cal que siguin secrets. Els desenvolupadors haurien de generar vectors d'inicialització fent servir l'aleatorietat segura criptogràficament. Els desenvolupadors haurien d'emmagatzemar o transmetre els vectors d'inicialització juntament amb el text xifrat associat.
  3. Sals: les sals han de ser úniques i imprevisibles en diverses funcions resum, però no cal que siguin secretes. Els desenvolupadors haurien de generar sals fent servir l'aleatorietat segura criptogràficament. Els desenvolupadors haurien d'emmagatzemar o transmetre les sals juntament amb les funcions resum associades.

Passos següents

  1. Actualitza l'aplicació seguint els passos destacats més amunt.
  2. Inicia la sessió a Play Console i envia una versió actualitzada de l'aplicació.
L'aplicació es tornarà a revisar; si no s'ha actualitzat bé, veuràs l'avís. Aquest procés pot tardar diverses hores.

Som aquí per ajudar-te

Si tens cap dubte tècnic sobre la vulnerabilitat, pots publicar les teves preguntes a Stack Overflow amb l'etiqueta "android-security".
 
false
Menú principal
4017888553921337088
true
Cerca al Centre d'ajuda
true
true
true
true
true
5016068
false
false