@jane_k

Возможно ли создать безошибочную идентификацию устройства?

Дано:
Приложение одинаково работающее как на Win так и на Android. Приложение отправляет на сервер запрос с идентификатором устройства, далее сервер должен каким-либо образом проверить не изменен ли код приложения, поскольку его можно декомпилировать и вместо рассчитанного идентификатор отправить готовый, стыреный с другой машины идентификатор. Проще говоря привязка по интернету. Далее, после идентификации, на устройство будет отправлено HelloWorld.

Вопрос:
Какие есть варианты гарантировать что идентификатор действительно был программно сгенерирован а не подставлен?(подразумевается декомпиляция и замена рассчета идентификатора на готовый идентификатор с другого устройства) Виртуалки не в счет, допустим приложение будет устанавливаться вручную каждому пользователю, но далее контроля над устройством не будет.

Язык программирования не имеет значения, важно понять логику.
  • Вопрос задан
  • 90 просмотров
Решения вопроса 1
@rPman
Скрытый приватный ключ в специальном чипе на устройстве.

Пример такого устройства - sim-карта, или специальный чип в смартфонах iphone и некоторых android, содержит секретный ключ, вытащить который невозможно, имеет чип, позволяющий шифровать данные этим ключом (асимметричные алгоритмы шифрования). Сервер может проверить что данные зашифрованы верным ключом.

https://en.wikipedia.org/wiki/Hardware_security_module

https://developer.android.com/training/articles/ke... - если аппаратного хранилища нет, его предоставит операционная система, это не так надежно но все же стоимость взлома высокая
https://developer.apple.com/documentation/security...
https://social.technet.microsoft.com/wiki/contents...
и т.п.

Для windows стандарта не придумали, да и устройства по умолчанию не поставляются. Для intel можно конечно покопаться, инструменты проприетарные есть, используются для хранения ключей oem и т.п. но эти инструменты обычно используются производителем железа (ноутбука) и скорее всего уже залочены.

Для десктопных машин используется практика usb hasp ключа, или usb ключ представляющийся в системе как клавиатура и генерирующий time code (коды, привязанные ко времени, например как google authenticator), сами устройства дешевые, уникальные, можно найти специальные программируемые (секретный ключ можно записать один раз и отправить клиенту), стоят не дорого (дороже доставка).

https://en.wikipedia.org/wiki/YubiKey
Ответ написан
Пригласить эксперта
Ответы на вопрос 3
@d-stream
Готовые решения - не подаю, но...
Ответ: никаких.
Ответ написан
GavriKos
@GavriKos
В случае клиентского кода гарантировать - невозможно. Можно усложнить задачу настолько, что взлом потеряет смысл ибо будет дороже получаемого профита.
Ответ написан
snoowik
@snoowik
Web разработчик
Есть вариант привязываться к биометрии пользователя, разрешать авторизироваться, например только после прикладывания пальца к сканеру отпечатка пальца и проверять цифровой отпечаток на совпадение, после этого, когда мы убедились, что это владелец устройства, можешь пытаться устанавливать постоянное соединение и обмениваться данными, думаю, как-то так.
Ответ написан
Ваш ответ на вопрос

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

Войти через центр авторизации
Похожие вопросы