智能手机唯一标识符作为密码/登录凭据?

时间:2019-01-22 15:35:48

标签: android passwords uniqueidentifier smartphone user-accounts

我的意图

  1. 应用程序每个智能手机(例如Telegram / Whatsapp)仅允许一个帐户
  2. 智能手机唯一标识符共同充当密码/登录凭据,并确保第1点。
  3. 基于令牌的登录将返回一个48小时有效的令牌,因此登录过程不会占用过多的服务器端资源

到目前为止的研究

热门帖子about android unique identifiers here on SO已经建议使用什么标识符。

搜索“无密码登录”会得到结果,但与我要创建帐户的方式无关。 我发现的“使用智能手机作为登录凭据”的唯一主题只是写了好处,以及可能的应用方式/领域。就像使用NFC来获得进入建筑物的授权一样。

到目前为止的解决方案

  • 将4个唯一标识符 build-serial android_ID SIM-serial 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 |
    +-----------+--------------------------------------+------------+-----------------+----------------------------------+----------------------------------+----------------------------------+----------------------------------+

问题

如果有人拆卸/反向工程该应用程序,使用提取的客户端证书(应用程序中的PKCS#12文件)构建桌面应用程序模拟器,因为服务器需要有效的客户端证书,他可以通过使智能手机具有唯一标识符数据来注册帐户上。

问题

  1. 由于已将唯一标识符以明文形式保存,这是不可行的,因为它是敏感的用户数据,所以对它们进行散列不会增加散列冲突的危险吗?尽管这4个唯一值共同创建了一个新的唯一值,即使有时其中一个或两个值与其他记录中的值相同。那么对此的担忧可以忽略不计吗?
  2. 该问题阻止了我每个智能手机只能使用1个帐户的意图。因此,将帐户绑定到电话号码并要求通过SMS进行验证,我别无选择吗?
  3. 其他方式? (就像仅从4个唯一标识符生成唯一密码一样?)
  4. 仍然要考虑使用坏的咸MD5哈希函数吗?而且,如果20个字符足够了,因为不再有4个唯一值,还是我应该选择全部32个字符?
  5. 这种方法是否可以用于基于令牌的登录?
  6. 我忽略了什么吗?还有其他安全方面的内容吗?

0 个答案:

没有答案