我写了个登陆概念流程图,由于 V2EX 不能上传图片。所以改成文字说明。
说明如下
登录流程
|
|==》客户端
|
|——》拉盐
|
|——》密码加密
| |
| |——》 Hash(password) ——》 hmac(hash(password),salt)
| |
| |——》 非对称加密简单 hash 后的密码密文 ——》 rsa(hash(password),公钥)
|
|==》服务端
|
|——》加密
| |
| |——》 hmac(password,key)
|
|——》 验证密码 ——》 获得 User 对象 ——》验证密码,若能匹配,正确执行如下流程
|
|——》 非对称私钥解密 ——》 rsa(公钥加密的内容,私钥) ——》得到密码原始密文
|
|——》更改密码的哈希密文值和对应 salt
| |
| |
| |——》生成新 salt——》 hmac ( hmac(password,新 salt),key )——》 新 salt 和加新盐的密文密码更改入库。
流程写完了,如上所示,其中会用到的哈希摘要加密算法,是 sha512 和 hmac512,非对称加密用到了 rsa。目前没有正式应用该流程。
我这个有最后一个端是,如果用户登录密码验证成功,则生成哈希密码密文代替用户的旧哈希密码密文,先生成新盐,新盐与原始密码密文进行 hmac 加密替代旧盐加密码密文哈希 hmac 的密文。其中的 key 值是某个配置文件里的值。
现在问题来了,这个登录流程以及相关的,这些架构设计。各位看出来有哪些安全和稳定问题?各位能指出来吗?
这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。
V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。
V2EX is a community of developers, designers and creative people.