TranE91
@TranE91
Senior Android Engineer

Android где и как хранить ключи?

Насущный вопрос, который мучает очень долго. Как же и где хранить ключи в Andorid?
Если на примере, то: имеется сервис доступ к которому осуществляется через определенный токен и стоимость его не из дешевых. Конечно бы не хотелось выдать их 3му лицу, и прибегнуть к алгоритмам шифрации данных.
@NonNull
    public static String encryptString(@NonNull String text){
        try {
            Cipher cipher = Cipher.getInstance("AES/ECB/PKCS5Padding");
            SecretKeySpec secretKey = new SecretKeySpec(KEY.getBytes(), "AES");
            cipher.init(Cipher.ENCRYPT_MODE, secretKey);
            byte[] array = cipher.doFinal(text.getBytes());
            return new String(Base64.encode( array,Base64.DEFAULT));
        }catch (Exception e){
            e.printStackTrace();
            return "";
        }
    }

    @NonNull
    public static String decryptString(@NonNull String text){
        try {
            Cipher cipher = Cipher.getInstance("AES/ECB/PKCS5Padding");
            SecretKeySpec secretKey = new SecretKeySpec(KEY.getBytes(), "AES");
            cipher.init(Cipher.DECRYPT_MODE, secretKey);
            byte[] base64 = Base64.decode(text,Base64.DEFAULT);
            byte[] array = cipher.doFinal(base64);
            return new String(array);
        } catch (Exception e) {
            e.printStackTrace();
        }
        return "";
    }

Как видно, здесь используется шифрация/дешифрация с открытым ключом. Т/е/ ключи от дорогого сервиса мы сначала энкодим и храним у себя в проекте особо не боясь за его прямую кражу. Но тут возникает насущный вопрос - коли у Android все так плохо с обходом декомпиляции, да и обфускация вряд ли остановит злоумышленника в поиске желанного, то где же и как хранить такие ключи?
  • Вопрос задан
  • 1764 просмотра
Решения вопроса 1
@LenLord
android reverse
Вы никак и никуда не спрячете ключ на устройстве так, чтобы его было не достать, я вам это гарантирую.

Единственный вариант, который мне видится - это HTTPS соединение с сервером и хранения ключа там, но и тут все равно, при желании можно достать.
Ответ написан
Пригласить эксперта
Ответы на вопрос 1
petermzg
@petermzg
Самый лучший программист
А что мешает проксировать данный сервис, через свой сайт? И пароли будут в безопасности и доступ сможете контролировать.
Ответ написан
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы