Уникальные идентификаторы смартфона в качестве пароля / учетных данных? - PullRequest
0 голосов
/ 22 января 2019

Мое намерение

  1. Приложение позволяет использовать только одну учетную запись для одного смартфона (например, Telegram / Whatsapp)
  2. Уникальные идентификаторы смартфона действуют вместе как пароль / учетные данные для входа и гарантируют пункт 1.
  3. Вход в систему на основе токенов возвращает действительный токен в течение 48 часов, поэтому процедура входа не потребляет слишком много ресурсов на стороне сервера

Исследования пока

Популярные сообщения об уникальных идентификаторах Android здесь на SO уже предлагают, какие идентификаторы использовать.

Поиск «входа без пароля» приводит к результатам, но они не имеют ничего общего с тем, как я хочу сделатьсоздание аккаунта.Единственные темы, которые я нашел о «использовании смартфона в качестве учетных данных для входа в систему», только что писали о преимуществах и возможных путях / области применения.Как использование NFC для получения авторизации для входа в здание.

Решение до сих пор

  • Хранение 4 уникальных идентификаторов build-serial , android_ID , SIM-серийный номер и IMEI как соленый хеш в базе данных.При входе в систему смартфон отправляет свои идентификаторы, и они сопоставляются с идентификаторами в БД.
  • Опция восстановления: адрес электронной почты

    +-----------------+------------+------------+----------------+------------+--------------+------------+----------+
    | INT unsigned AI | BINARY(16) | CHAR(255)  |   CHAR(255)    |  CHAR(20)  |   CHAR(20)   |  CHAR(20)  | CHAR(20) |
    +-----------------+------------+------------+----------------+------------+--------------+------------+----------+
    | player_id       | uuid       | playername | recovery_email | android_id | build_serial | sim_serial | imei     |
    +-----------------+------------+------------+----------------+------------+--------------+------------+----------+

    +-----------+--------------------------------------+------------+-----------------+----------------------------------+----------------------------------+----------------------------------+----------------------------------+
    | player_id |                 uuid                 | playername | recovery_email  |            android_id            |           build_serial           |            sim_serial            |               imei               |
    +-----------+--------------------------------------+------------+-----------------+----------------------------------+----------------------------------+----------------------------------+----------------------------------+
    |         1 | 6ccd780c-baba-1026-9564-0040f4311e29 | player1    | test@localhost  | dac9630aec642a428cd73f4be0a03569 | 7f40fb99caa4c44238514f645827448d | d41d8cd98f00b204e9800998ecf8427e | e4d909c290d0fb1ca068ffaddf22cbd0 |
    |         2 | 865234ad-6a92-11e7-8846-b05adad3f0ae | tester     | test2@localhost | e4d909c290d0fb1ca068ffaddf22cbd0 | d41d8cd98f00b204e9800998ecf8427e | 79054025255fb1a26e4bc422aef54eb4 | dac9630aec642a428cd73f4be0a03569 |
    +-----------+--------------------------------------+------------+-----------------+----------------------------------+----------------------------------+----------------------------------+----------------------------------+</p></li>
    </ul>
    
    <p>

    Проблема

    Если кто-то разбирает / анализирует приложение, создает симулятор настольного приложения с извлеченным клиентским сертификатом (файл PKCS # 12 в приложении), поскольку серверу требуется действительный сертификат клиента, он может зарегистрировать учетные записи, выполнив командуданные уникального идентификатора смартфона up.

    Вопросы

    1. Поскольку сохранение уже уникальных идентификаторов в открытом тексте не вариант, так как это конфиденциальные пользовательские данные, их хеширование не повышает опасностьхэш-коллизии?Хотя 4 уникальных значения вместе создают новое уникальное, даже если иногда одно или два значения идентичны значениям в других записях.Так что опасения по этому поводу ничтожно малы?
    2. Проблема мешает моим намерениям иметь только 1 аккаунт на один смартфон.Поэтому у меня нет другого выбора, как привязать учетную запись к номеру телефона и требовать подтверждения с помощью SMS?
    3. Другие способы?(как, например, генерировать уникальный пароль из 4 уникальных идентификаторов?)
    4. Все еще собираетесь использовать рассмотренную хеш-функцию соленой MD5?И если, достаточно 20 символов, потому что 4 уникальных значения больше не нужны, или я должен использовать полные 32 символа?
    5. Может ли этот подход работать с логином на основе токена?
    6. Я что-то упускаю?Есть еще вопросы безопасности?
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...