SORU
28 Ocak 2013, PAZARTESİ


En iyi Uygulama Android özel API anahtarı saklamak için

Bir uygulama geliştiriyorum ve birçok üçüncü parti API kullanıyorum ve Dropbox ve Google Drive gibi SDK. Bu kütüphaneler API anahtarları requiers. Özel ve kamuya ait bir.

Şu anda böyle heyecanla beklediğim var:

public class DropboxService  {

    private final static String APP_KEY = "jk433g34hg3";
    private final static String APP_SECRET = "987dwdqwdqw90";
    private final static AccessType ACCESS_TYPE = AccessType.DROPBOX;

    // SOME MORE CODE HERE

}

App-Gizli anahtarı özel kalmalı - ama app serbest zaman bazı çocuklar tarafından iptal edilebilir.

Şifrelemek, karartmak için en iyi şey nedir ya da bu güvenli hale getirmek için ne olduğunu bilmek istiyorum.

Marathon kullanıyorum ama tüm proje için Marathon kurma bana birkaç hafta alacağını düşündüm. Sadece bu önemli dersleri özel anahtarları ve diğer sensitible veri depolamak için Marathon kullanmak istememin nedeni bu.

Böyle iyi mi, yoksa başka yolları da var mı? Ne düşünüyorsun?

CEVAP
28 Ocak 2013, PAZARTESİ


  1. Olduğu gibi, derlenmiş uygulama anahtar dizeleri, ama aynı zamanda sürekli isimleri APP_KEY ve APP_SECRET içerir. Böyle kendi kendine tanım kod ayıklama anahtarları önemsiz, standart Android aracı dx ile örneğin.

  2. Marathon uygulayabilirsiniz. Anahtar dizeleri el değmemiş bırakır, ama sürekli isimleri kaldıracaktır. Ayrıca mümkün olduğu kısa, anlamsız isimleri ile sınıfları ve yöntemleri yeniden adlandırın. Anahtarlar ayıkladıktan sonra birkaç kez daha, hangi amaca hizmet bulmak için alır.

    Marathon kurma korktuğun kadar zor olmamalı unutmayın. Başlamak için, sadece projede belirtildiği gibi Marathon etkinleştirmek gerekiyor.özellikleri. Eğer üçüncü parti kütüphaneler ile ilgili bir problem varsa, uyarı ve/veya bastırmak karıştırılmış önlemek için, proguard-project.txt gerekebilir. Örneğin:

    -dontwarn com.dropbox.**
    -keep class com.dropbox.** { *; }
    

    Bu kaba kuvvet bir yaklaşımdır; işlenmiş uygulama çalışmaları bir kez böyle bir yapılandırma geliştirebilirsiniz.

  3. Dizeleri elle bir şey daha karışık; belki de yerel kod bile Base64 kodlama ile veya tercihen mesela kodunuzu karartmak edebilirsiniz. Bir hacker daha sonra statik olarak ters-mühendis kodlama veya dinamik olarak müdahale doğru yerde çözme.

  4. Ticari bir obfuscator, Marathon uzman DexGuard kardeş gibi uygulayabilirsiniz. Ayrıca sizin için dizeleri ve sınıfları karartmak/şifrelemek olabilir. Anahtarlar ayıkladıktan sonra çok daha fazla zaman ve uzmanlık alır.

  5. Kendi sunucunuz üzerinde uygulamanızın parçalarını çalıştırmak mümkün olabilir. Eğer anahtarlar orada devam ederseniz, onlar güvende.

Sonunda, bir ekonomik ticaret-off yapmak için var: ne kadar önemli anahtarlar, ne kadar zaman veya yazılım gelemez, ne kadar sofistike hacker ilgi duyan anahtarları, ne kadar zaman onlar harcamak istiyorum ne kadar değerli olduğunu bir gecikme önce anahtarları kesmek, ne ölçekte olacak başarılı hackerlar dağıtmak anahtarları, vb. Anahtarları gibi bilgileri küçük parçalar tüm uygulamaları daha korumak için daha zordur. Doğal olarak, istemci tarafı yok kırılmaz, ama kesinlikle çıtayı Yükselt.

(Marathon ve DexGuard) geliştiricisiyim

Bunu Paylaş:
  • Google+
  • E-Posta
Etiketler:

YORUMLAR

SPONSOR VİDEO

Rastgele Yazarlar

  • Kenneth Håkonsen

    Kenneth Håk

    13 Mart 2011
  • The Exploiteers

    The Exploite

    4 Ocak 2011
  • FusioNGamiing

    FusioNGamiin

    10 Temmuz 2007