Güvenli Olmayan Kriptografik Şifrelemeyi Düzeltme

Bu bilgi, uygulamalarında güvenli olmayan kriptografik şifreleme modelleri bulunan geliştiriciler içindir. Yani, şifrelenmiş metin statik olarak hesaplanmış bir gizli anahtar, takviye değer veya başlatma vektörü (IV) ile oluşturulmuştur. Güvenli olmayan kriptografik şifreleme modellerinin konumlarını, uygulamanızın Play Console bildiriminde bulabilirsiniz. 

“Güvenli Olmayan Kriptografik Şifreleme Modeli” uyarıları nasıl düzeltilir? 

Uygulamanızı, kriptografik şifreleme işlemlerinde kullanılan statik olarak hesaplanan anahtarlar, başlatma vektörleri ve/veya takviye değerler açısından inceleyin ve bu değerlerin güvenli bir şekilde oluşturulduğundan emin olun. Örneğin, aşağıdaki kod statik olarak hesaplanabilir gizli anahtar ve statik olarak hesaplanabilir bir başlatma vektörü kullanır:

   // Konsol uyarısı bu yöntemi belirtir
  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);
  }

  // Güvenli olmayan anahtar ve başlatma vektörü buradadır ve değiştirilmelidir
  byte[] cipherText = encryptionUtil(“abcdef...”, “010203040506”, plainText);

Statik Olarak Hesaplanan Değerler
Statik olarak hesaplanan değer, uygulamanızın her yürütmesinde aynı olan değerdir. Statik olarak hesaplanan kriptografik değerler uygulamanızdan çıkarılabilir ve uygulamanızın şifrelenmiş verilerine saldırmak için kullanılabilir. Kullanımdan önce anahtarları, başlatma vektörlerini ve takviye değerleri karmaşık yöntemlerle değiştirseniz bile, bu değiştirme işlemleri programın her yürütmesi için aynıysa yine güvenli olmazlar.

Android En İyi Uygulamaları
Simetrik şifreleme için Jetpack Security'yi kullanmanızı öneririz. Uygulamanız API anahtarları, kişisel olarak tanımlanabilir bilgiler (PII) veya diğer hassas verileri şifreliyorsa gizli anahtarların, başlatma vektörlerinin ve takviye değerlerin uygulanması konusunda endişe duymadan bu verileri güvenli bir şekilde saklamak için EncryptedSharedPreferences kullanılabilir. Diğer en iyi uygulamalar ve örnekler bu sayfada mevcuttur. Diğer sistemlere güvenli bir şekilde veri aktarmak için geliştiriciler aktarım işleminde verileri güvenli hale getirmek üzere TLS/SSL kullanmalıdır. 

Jetpack Security, simetrik kimliği doğrulanmış şifrelemeyi işlemek için Google açık kaynak projesi Tink'i kullanır. Alt düzey şifreleme işlemleriyle ilgili gelişmiş kullanım durumları için doğrudan Tink'in kullanılmasını öneririz.

Yukarıda belirtilen Android en iyi uygulamaları kullanım alanınızı karşılamıyorsa ve anahtarları, başlatma vektörlerini ve takviye değerleri açık bir şekilde yönetmeniz gerekiyorsa aşağıdaki standartları uygulamanızı öneririz:

  1. Gizli Anahtarlar: Simetrik gizli anahtarların öngörülemez ve gizli olması gerekir. Geliştiriciler yerel verileri şifrelemek için gizli anahtarları kriptografik olarak güvenli rastgelelik kullanarak (veya PBEKeySpecs kullanılıyorsa kullanıcı tarafından oluşturulan verilerden) oluşturmalı ve bu gizli anahtarları AndroidKeystore'u kullanarak depolamalıdır. 
  2. Başlatma Vektörleri: Başlatma vektörleri, birden fazla mesajda benzersiz ve öngörülemez olmalıdır ancak gizli olmaları gerekmez. Geliştiriciler başlatma vektörlerini kriptografik olarak güvenli rastgelelik kullanarak oluşturmalıdır. Geliştiriciler, başlatma vektörlerini ilişkili şifrelenmiş metinle birlikte depolamalı veya iletmelidir.
  3. Takviye değerler: Takviye değerler, birden fazla karmada benzersiz ve öngörülemez olmalıdır ancak gizli olmaları gerekmez. Geliştiriciler takviye değerleri kriptografik açıdan güvenli rastgelelik kullanarak oluşturmalıdır. Geliştiriciler, takviye değerleri ilgili karmalarla birlikte depolamalı veya iletmelidir.

Sonraki adımlar

  1. Yukarıda anlatılan adımları kullanarak uygulamanızı güncelleyin.
  2. Play Console hesabınızda oturum açın ve uygulamanızın güncellenmiş sürümünü gönderin.
Uygulamanız tekrar incelenir. İnceleme sonucunda uygulamanın doğru şekilde güncellenmediği belirlenirse uyarıyı görmeye devam edersiniz. Bu işlem birkaç saat sürebilir.

Yardıma hazırız

Güvenlik açığı hakkında teknik sorularınız varsa sorularınızı Stack Overflow'da yayınlayabilir ve “android-security” etiketini kullanabilirsiniz.
 

Bu size yardımcı oldu mu?

Bunu nasıl iyileştirebiliriz?
false
Ana menü
13901762735667212880
true
Yardım Merkezinde Arayın
true
true
true
true
true
5016068
false
false