Уязвимости в кэшировании запутанного ключа? Лицензирование Android

Я кэширую аутентификацию пользователя всякий раз, когда ping-сервер лицензирования Android Market возвращает понг GRANT_ACCESS.

Кто-нибудь видит какие-либо уязвимости в этой стратегии? Я считаю, что это очень сильно, поскольку я запутываю ключ, и единственный способ разблокировать - это знать соль. Теперь кто-то может открыть apk и поискать соль, но на самом деле это не тот уровень взлома, о котором я думаю, слишком важно беспокоиться.

Как видите, к методу обфускации добавляется информация об устройстве.

// Try to use more data here. ANDROID_ID is a single point of attack. 
String deviceId = Secure.getString(getContentResolver(), Secure.ANDROID_ID); 
obfuscator = new AESObfuscator(SALT, getPackageName(), deviceId); 
mChecker = new LicenseChecker(this, new ServerManagedPolicy(this, obfuscator), BASE64_PUBLIC_KEY ); 

Затем создание постоянных данных:

 public void allow() {
   SharedPreferences settings = getSharedPreferences(PREFERENCES_EULA, 0);
   SharedPreferences.Editor editor = settings.edit();
   String uid = UUID.randomUUID().toString();
   if(!settings.contains(ACCESS_KEY)) {
     editor.putString(ACCESS_KEY,uid);       
     editor.commit();
   } 
   if(!settings.contains(OBFU_ACCESS_KEY)) {
     String obfu = obfuscator.obfuscate(uid);
     editor.putString(OBFU_ACCESS_KEY,obfu); 
     editor.commit();
   }

Затем, @Override dontAllow и @override applicationError . Если isCachedLicense истинно, то я разрешаю пользователю пересылать.

Кроме того, полный исходный код находится в здесь .

6
задан Sam 17 August 2014 в 20:29
поделиться