серверов - могу что-нибудь взломать на досуге ;) - в свободное время помогаю OpenSource проектам Android Lead в Redmadrobot Артем Кулаков 2 @Fi5t @OxFi5t
токены и прочую секретную информацию - Не сохранять персональные данные пользователя на диске - Не использовать “секретные конфиги” вида disableSSL=false
только по HTTPS + SSL Pinning - Все секретные данные лежат на сервере и запрашиваются в realtime и не кэшируются - Токены имеют адекватно-короткое время жизни и обновляются
вместе с женой не превысила двух миллионов долларов. Это намного дешевле, чем создавать крупные компьютеры для взлома и нанимать гениальных криптоаналитиков. Б. Шнайер
Seasoning.getSalt(), iterations: Int = 10000, keyLength: Int = 512): ByteArray { val keySpec = PBEKeySpec(password.toCharArray(), salt, iterations, keyLength * 8) return getKeyFactory().generateSecret(keySpec).encoded } fun getKeyFactory(): SecretKeyFactory { val algorithm = if (Build.VERSION.SDK_INT <= Build.VERSION_CODES.KITKAT) { "PBKDF2WithHmacSHA1And8bit" } else { "PBKDF2WithHmacSHA1" } return SecretKeyFactory.getInstance(algorithm) } fun getSalt(size: Int = 16): ByteArray { val random = SecureRandom.getInstance("SHA1PRNG") val salt = ByteArray(size) random.nextBytes(salt) return salt }
экрана (баг или фича?) - Key blob можно расшифровать (но это неточно) - Ключи остаются на устройстве после удаления приложения если в его манифесте было allowBackup=true