iOS

用户登录加密

2021-04-19  本文已影响0人  Summit_yp

黑客可以通过监听用户的客户端(app或pc浏览器)、拦截用户网络请求、非法入侵服务端数据库

https也能抓包获得密文
原则:
最好是开发者都不知道你的密码

以前的用户加密方案:

1、RSA加密:
RSA密钥至少为500位长,一般推荐使用1024位。这就使加密的计算量很大。难点就在于大数的因式分解,由于进行的都是大数计算,使得RSA最快的情况也比DES慢上好几倍,在服务端通过私钥解密之后能看到用户的明文密码,开发者可能带走私钥和公钥。

2、HASH:典型的有md5加密,www.cmd5.com 很容易查询出来。 此时可以加盐,但也可能被开发者带走。。。

可行的方案:HMAC方案-基于Hash函数和密钥进行消息认证的方法
rule1(name)保证一个账号对应一个key。
· 用户注册过程,客户端通过rule1(name)得到一个key,(也可以在服务端生成key,那种检测用户名是否重复的,就可以将服务端的key传输到客户端),然后调用注册接口把name/key的哈希值,以及hmac(pass,key)的结果passStr的哈希值传给服务器保存,服务器将name/key/passStr对应存储,客户端本地也保存name/key,

· 用户在登录页面填写了用户name和密码pass后,点击登录按钮,客户端检验本地是否有name对应的key, 若有客户端通过hmac(pass,key)把明文密码转换为passStr,若无可通过验证码之类验证通过之后,服务器下发key,这样能有一个大致的设备授权的效果。

· 此时能有效防止用户到密码泄漏,本地,服务器都无用户密码,但是任然可以通过拦截请求拿到登录时的密码哈希值模拟用户登陆,这个时候可以结合时间戳,可以设置一个比较短的有效期(如1分钟),一旦超过这个时间,这个哈希值就失效。如果没超过时间,用户体系应该存在互踢机制,那么用户会发觉账号被踢,及时修改密码

image.jpeg
上一篇 下一篇

猜你喜欢

热点阅读