Oprava nezabezpečeného kryptografického šifrování

Tyto informace jsou určeny vývojářům aplikací, které obsahují nezabezpečené vzorce kryptografického šifrování. To znamená šifrovaný text vygenerovaný pomocí staticky zpracovaného tajného klíče, kryptografické soli nebo inicializačního vektoru (IV). Umístění nezabezpečeného kryptografického šifrování naleznete v oznámení o aplikaci ve službě Play Console

Jak opravit upozornění na nezabezpečené vzorce kryptografického šifrování 

Zkontrolujte v aplikaci staticky vytvořené klíče, inicializační vektory a kryptografické soli, které jsou používány při kryptografickém šifrování, a ověřte, zda jsou tyto hodnoty zabezpečené. Například následující kód používá staticky zpracovatelný tajný klíč a staticky zpracovatelný inicializační vektor:

   // Tuto metodu zmiňuje upozornění ve službě Console
  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);
  }

  // Nachází se zde nezabezpečený klíč a inicializační vektor a je třeba je změnit
  byte[] cipherText = encryptionUtil(“abcdef...”, “010203040506”, plainText);

Staticky zpracované hodnoty
Staticky zpracovaná hodnota je hodnota, která je při každém spuštění aplikace stejná. Staticky zpracované kryptografické hodnoty lze z aplikace extrahovat a použít je k útoku na šifrovaná data aplikace. I v případě, že s klíči, inicializačními vektory a solemi před použitím nakládáte opatrně, kvalita jejich zabezpečení zůstane nízká, bude-li se stejný způsob manipulace opakovat při každém spuštění programu.

Doporučené postupy pro Android
Pro účely symetrické kryptografie doporučujeme používat sadu Jetpack Security. Pokud vaše aplikace šifruje klíče rozhraní API, údaje umožňující zjištění totožnosti nebo jiné citlivé údaje, k bezpečnému uložení těchto dat lze použít sadu EncryptedSharedPreferences, aniž byste se museli zaobírat implementací tajných klíčů, inicializačních vektorů a kryptografických solí. Další doporučené postupy a příklady naleznete na této stránce. Pro účely bezpečného přenosu dat do ostatních systémů by vývojáři měli použít protokol TLS/SSL, který data během přenosu zabezpečí. 

Ke zpracování šifrování se symetrickým ověřením používá sada Jetpack Security open source projekt Tink od Googlu. Pro potřeby pokročilého použití ke kryptografickým operacím nižší úrovně doporučujeme použít přímo nástroj Tink.

Pokud se výše uvedené doporučené postupy pro Android pro váš případ použití nehodí a musíte klíče, inicializační vektory a kryptografické soli spravovat explicitně, doporučujeme používat následující standardy:

  1. Tajné klíče: Symetrické klíče musí být nepředvídatelné a tajné. Pro potřeby šifrování místních dat by vývojáři měli vytvořit tajné klíče za pomoci kryptograficky zabezpečené náhodnosti (nebo z dat vygenerovaných uživateli, pokud používají PBEKeySpecs) a tyto tajné klíče uchovávat pomocí systému AndroidKeystore
  2. Inicializační vektory: Inicializační vektory musí být v jednotlivých zprávách unikátní a nepředvídatelné, ale nemusejí být tajné. Vývojáři by měli inicializační vektory sestavovat za pomoci kryptograficky zabezpečené náhodnosti. Inicializační vektory by vývojáři měli ukládat a přenášet společně s přidruženým šifrovaným textem.
  3. Soli: Soli musí být v jednotlivých zprávách unikátní a nepředvídatelné, ale nemusejí být tajné. Vývojáři by měli kryptografické soli sestavovat za pomoci kryptograficky zabezpečené náhodnosti. Soli by vývojáři měli ukládat a přenášet společně s přidruženým hašováním.

Další kroky

  1. Aktualizujte aplikaci podle výše uvedených pokynů.
  2. Přihlaste se do služby Play Console a odešlete aktualizovanou verzi aplikace.
Aplikaci znovu zkontrolujeme. Pokud nebyla aktualizována správně, bude se upozornění zobrazovat i nadále. Tento proces může trvat několik hodin.

Rádi vám poradíme

Máte-li jiné technické dotazy, publikuje příspěvek na webu Stack Overflow. Použijte štítky „android-security“.
 
false
Hlavní nabídka
3274908364108547025
true
Prohledat Centrum nápovědy
false
true
true
true
true
true
5016068
false
false
false
false
false