Безопасное хранилище Xamarin.Android (хранилище ключей)

Я хочу сохранить некоторые конфиденциальные данные (токен обновления) в хранилище ключей Android.

Я собирался использовать реализацию Xamarin Labs Sample ISecureStorage.

Хранилище ключей

Но они используют идентификатор устройства в качестве пароля.... это не может быть безопасным способом?!

И в их библиотеке Xamarin.Auth, которая использует Android KeyStore... пароль жестко закодирован

AndroidAccountStore

Что тут происходит?! Я что-то упускаю?

В iOS это намного проще, так как KeyChain использует экран PIN-кода, который принудительно применяется в iOS. Какое решение для Android? Не говорите Общие настройки. Мне нужно что-то более безопасное (KeyStore!!)


person AhmedW    schedule 06.07.2016    source источник


Ответы (1)


Жестко заданное значение осталось для обратной совместимости, но добавлен API, поэтому пользователь может отправить произвольный пароль в виде строки. Если пароль не передан, будет использована старая жестко заданная строка, что является проблемой безопасности.

Планируется добавить [Устаревший] атрибут в небезопасный API.

Пользователь сам решает, как будет генерироваться/передаваться пароль (пользовательский интерфейс или не такой безопасный, как в упомянутом вами DeviceID).

Что касается лабораторий: эти лаборатории из Evolve16 обучают перед конференцией?

Если да. Ядро этих лабораторий теперь интегрировано в Xamarin.Auth, поэтому пользователь может использовать SecureStorage и другие утилиты (CryptoUtilities) непосредственно с Xamarin.Auth.

person moljac    schedule 07.07.2016
comment
какова рекомендация по передаче пароля здесь. Кажется, многие примеры были счастливы просто передать идентификатор устройства. Есть ли причина этого? т. е. доступно ли хранилище ключей только для потока приложения, создавшего его? так что даже если у вас есть пароль, это не имеет значения? .... - person AhmedW; 07.07.2016
comment
управление ключами всегда является проблемой; если вы передаете идентификатор устройства, вы практически кладете ключ рядом со шкафчиком, поэтому, по сути, единственный безопасный способ - использовать ввод пользователя, чтобы разблокировать его. - person Roy; 07.07.2016
comment
Спасибо Рой! Как собственный поставщик хранилища ключей Android преодолевает это ограничение? - person AhmedW; 07.07.2016