У меня есть приложение для Android, которое подключается к серверному рельсу. Я хочу зашифровать данные, которые я отправляю между устройствами и сервером. Я использую базовое шифрование с секретным ключом. Ключ на самом деле не секрет, поскольку я храню его на apk, и поэтому он легко разбирается с использованием методов декомпиляции обратной инженерии и apk.Является ли это «достойным» методом шифрования?
В результате я создал секретный ключ, основанный на пароле пользователя. Ключ должен иметь фиксированную длину и видеть, как заставить пользователей использовать сверхдлинные пароли, это не вариант, что я делаю, это добавить символы (в основном те, которые я использовал в своем старом закодированном ключе), поэтому строка (пароль + символы) имеет требуемую длину. Затем я шифрую все параметры (я использую JSON для связи между сервером и клиентом), кроме имени пользователя (которое технически не должно быть зашифровано, поэтому это не имеет большого значения). Когда запрос JSON достигает сервера, я использую параметр имени пользователя, чтобы захватить пароль пользователя из базы данных (на основе сервера), а затем, создав ключ, мне нужно «дешифровать/зашифровать» данные, которые я получаю/отправка. Таким образом, ключ всегда один и тот же между сервером/клиентом, но он уникален для каждого пользователя, и таким образом мне не нужно хранить простой в использовании, жесткий код в моем APK. Кроме того, пароль не сохраняется в устройстве, пользователи должны вводить пароль каждый раз, когда они хотят войти на сервер.
Что я хочу знать, может ли этот подход считаться «прилично обеспеченным»?
Являются ли имена пользователей уникальными? Если нет, использование имени пользователя для извлечения пароля вызовет проблемы, если у вас есть несколько экземпляров одного и того же имени использования. Кроме того, что произойдет, если пользователь изменит свой пароль? Затем вы заново шифруете все данные (при условии, что они зашифрованы в покое, то есть)? – Tim
Да, имена пользователей уникальны. –
Почему бы просто не использовать https? – nasch