`
thinkry
  • 浏览: 38232 次
  • 性别: Icon_minigender_1
  • 来自: 深圳
社区版块
存档分类
最新评论

本地存储密码的安全设计

阅读更多
有些应用需要把用户密码保存在本地,本方案设计了一种较为安全的密码本地存储的方案。

1 安全要求
1.1 要实现的
  1. 防止攻击者得到用户密码的明文
  2. 防止攻击者拿到自动登录token后,一直都可以登陆
  3. 即使两个用户的密码相同,服务器保存的密文密码也不一样
  4. 可在服务器端清除salt,让用户的自动登录token失效,需手动登录
  5. 用户在多个终端登录同一个帐号,各终端的自动登录功能都生效


1.2 不实现的
  1. 更安全的方案能做到“把本地保存的文件复制到其他客户端”登录就会失效,这依赖于客户端做处理,本方案不实现
  2. 有的方案采用RSA非对称加密,本方案直接采用AES对称加密


2 APP场景分析
2.1 注册时
AesKey = 前后端约定好的密钥
ClientSalt = 客户端随机生成8个字符(从0-9A-Za-z中选)
HashedPassword = SHA1(明文密码)
EncryptedPassword = Base64(AesEncrypt(ClientSalt + HashedPassword, AesKey))


说明:
  1. 注册时客户端在注册接口里提交EncryptedPassword
  2. 服务器用AesKey解出ClientSalt + HashedPassword,因为ClientSalt固定22字节,能计算得到HashedPassword


注册成功后,服务器保存的用户密码是SavedPassword。生成方法如下:
ServerSalt = 服务器随机生成8个字符(从0-9A-Za-z中选)
SavedPassword = Base64(AesEncrypt(ServerSalt + HashedPassword, 服务器专用密钥))


说明:
  1. 有了ServerSalt,即使两个用户的密码相同,最后的EncryptedPassword也会不一样。
  2. 用户密码在数据库中没有明文存储。


2.2 手动登录时
说明:
1、客户端在手动登录接口里提交EncryptedPassword(生成方法同2.1注册时)
2、服务器验证的过程:
    1) 用AesKey从客户端的EncryptedPassword里解出HashedPassword
    2) 用服务器专用密钥从数据库的SavedPassword里解出HashedPassword
    3) 比较两个HashedPassword
    4) 验证成功后返给客户端SaltExpire和AutoLoginToken,生成方式如下:
Salt = 随机8字符(从0-9A-Za-z中选)
SaltExpire = 该Salt最后有效时间
AutoLoginToken = Base64(AesEncrypt(Salt + HashedPassword, 服务器专用密钥))

    5) 把用户ID、Salt和SaltExpire保存在Salt缓存表中
3、客户端本地存储的是SaltExpire和AutoLoginToken,没有保存明文密码
4、客户端因为不知道服务器的Aes密钥,无法解出HashedPassword

2.3 自动登录时
1、客户端先根据本地保存的SaltExpire来判断是否已过期,过期需要手动登录
2、未过期时,客户端在自动登录接口里提交AutoLoginToken
3、服务器验证的过程:
    1) 从AutoLoginToken解出Salt和HashedPassword
    2) 在Salt缓存表里查询该用户ID的此Salt是否已过期
    3) 未过期的情况下对比两个HashedPassword
    4) 验证成功时,构造新的Salt、SaltExpire及AutoLoginToken,把SaltExpire和AutoLoginToken返回给客户端
    5) 把用户ID、新的Salt和SaltExpire保存在redis中,老的Salt清除掉
4、客户端更新本地存储的SaltExpire和AutoLoginToken
5、在出现风险需要用户手动登录时,可以把用户的SaltExpire清零来实现

2.4 多终端自动登陆的时间
多终端在执行2.2手动登录过程时,会生成多份Salt/SaltExpire,一个终端自动登录后会产生新的Salt(老的那个Salt会清除掉),但不会影响另一个终端的自动登录,因为用的Salt本来就不同。
1
0
分享到:
评论
2 楼 sp42 2017-07-16  
怎么 “防止攻击者拿到自动登录token后,一直都可以登陆” ?是不是客户端自己先判断 SaltExpire 是否已经过期?就是说这个 token 无论如何都会定期刷新的?
1 楼 sp42 2017-07-13  
非常好 通俗易懂

相关推荐

    密码管家 - 最强大的密码管理助手

    至于会不会偷偷上传用户的账户记录,我们郑重声明绝对不会,而且将来也不打算开发云储存这类的功能,因为信息只有保存在本地保存在自己手里才是相对最安全的。另外嵌入的广告SDK也不可能访问到密码管家的内部加密...

    校园网网络安全设计方案.doc

    一、计算机网络安全方案设计与实现概述 影响网络安全的因素很多,保护网络安全的技术、手段也很多。一般来说,保护网 络安全的主要技术有防火墙技术、入侵检测技术、安全评估技术、防病毒技术、加密技 术、身份认证...

    文件密码箱

    “文件密码箱”是一款以文件的加密存储、安全管理为主;集文件的加密、压缩、分割合并、粉碎等诸多功能为一体的软件。 在工作和生活中,我们有许多重要的文件,如项目规划、会议记录、个人帐本、日记、照片、MP3...

    网络安全技术课程设计.doc

    一、计算机网络安全方案设计和实现概述 影响网络安全的因素很多,保护网络安全的技术、手段也很多。一般来说,保护网 络安全的主要技术有防火墙技术、入侵检测技术、安全评估技术、防病毒技术、加密技 术、身份认证...

    网络安全技术课程设计(1).doc

    一、计算机网络安全方案设计与实现概述 影响网络安全的因素很多,保护网络安全的技术、手段也很多。一般来说,保护网 络安全的主要技术有防火墙技术、入侵检测技术、安全评估技术、防病毒技术、加密技 术、身份认证...

    管理信息系统数据库安全体系设计(1).doc

    但针对其所出现的安全问题也层出不穷,常见的安全问题包括有利用缓冲区溢 出、攻击(端口和客户端)、密码猎取、物理数据文件损坏或被盗、不够完善的备份策略 以及可能被利用去执行系统命令的扩展存储过程等。...

    网络安全知识点复习.docx

    浏览赌博、色情或其他非法站点 公开自己的登录密码、令牌或智能卡信息 重要的文档裸奔,没有加密 随意访问未知、不可信站点 随意填写Web脚本、表格或注册页面 频繁访问聊天室或社交站点 网络密码安全保护技巧 ...

    基于python,pyside6的密码管理器+源代码+文档说明

    * 本地存储使用多种加密方式 *** ### 开发初衷 很多小伙伴应该都有被盗号的经历吧。首先有些黑客不得不说确实非常厉害,轻轻松松就能把你的账号盗走。 但是也存在自己慢慢实在太简单了,这种密码叫做弱密码,就...

    C语言 链表操作、文件操作 学生管理系统 C语言结课设计

    分别使用struct Student和struct Administrator分别存储学生和管理员的数据,成员数据类型全部使用char*,读写方便,将使用两个分开的本地文件存储数据。使用二进制读写方式保证数据的安全 2、内容设计 管理员:...

    Python-Password:具有材料设计标准的桌面密码管理器

    Python密码旨在安全地存储密码。 它们使用两个主密码进行加密并保存在本地。 主密码可以由用户随机生成或设置,因此,由于某些原因或希望与他人共享密码时,您可以重新创建主密码。 当然,同一台PC上的许多用户将...

    某校园网络规划设计方案.docx

    本文结合网络安全建设的全面信息,在对网络系统详细的需求分析基础上,依照计算机网络安全设计目标和计算机网络安全系统的总体规划,设计了一个完整的、立体的、多层次的网络安全防御体系。 [关键词] 网络安全方案...

    网络安全管理规定(1).doc

    第二十二条 通过安全的传输方式可以将网络设备及安全设备的配置文件下载到本地主机上作备份文 件以防不测,在设备配置文件损坏时可再通过安全的传输方式从本地主机下载到设备中 恢复备份的配置文件。 第二十三条 ...

    网络管理中网络安全策略的概述.doc

    2、配置本地信息的加密 SiteView系统对于用户所作的任何配置信息全部采用统一标准的加密方法进行本地存储 ,这样即使SiteView系统所在的主机被突破,也无法获得用户的任何信息(如帐户等)。 3、帐户的安全 SiteView...

    计算机网络黑客防范措施-计算机安全论文-计算机论文.docx

    水平高超的电脑专家,尤其是程序设计人员,一旦"黑客"进入计算机中,可以通过植入木马程序控制用户的主机,同时,黑客程序可以用来窃取密码、帐号、口令以及篡改网页、破坏程序等行为,对用户主机安全构成严重威胁。...

    新一代存储

    c、提供HTTPS、密码保护分享链接及 SSL/TLS 联机的支持,可确保安全的文件传输过程 d、支持完整的Windows ACL权限控制,方便企业根据员工层级进行部署 2)打破地域限制,轻松架设企业专属私有云 (Cloud Station...

    宝贝图库V2.0图片网络存储空间管理系统(高仿淘小宝)

    宝贝图库V2.0图片网络存储空间管理系统(高仿淘小宝图片网络存储空间管理系统)使用说明 -----------------V2.0与V1.0的区别------------------ 1.新增一次浏览本地多选文件同时批量上传功能,即多文件上传 2.新增...

    电子监控方案设计.docx

    随时了解各主要生产环节的实时生产状况,处理突发事件,与现场进行双向语音交流,外出时可利用上网输入密码登录进入系统,随时了解生产情况,异地监控需求对于跨地区大中型企业,除本地建立网络监控系统外,还可对...

    软件设计方案.doc

    安全性高,有安全密码设置,数据都已基础编码方式存储。查询速度快,保证 系统流畅,数据存储的安全。 2. 开发工具 采用delphi开发业务系统(CS架构),界面友好,操作方便。 采用java,tomcat开发查询系统(BS架构)。...

    基于JAVA的模拟ATM系统的设计与实现【文献综述】.pdf

    ATM 不仅能接受本行本地卡,还可以通过网络功能接受异地卡、他行卡, 同时为持卡人提供每日 24 小时服务。 随着 Internet 的蓬勃发展,ATM 网上银行作为电子商务的一种形式正以方便、快捷 的优势,逐步成为新兴的...

    浅谈电信网络的安全.docx

    网络安全的防范是通过各种计算机,网络,密码和信息安全技术,保护在网络中传输,交换和存储信息的机密性,完整性和真实性,并对信息的传播及内容进行控制。网络按全的防范从技术层次上看,主要有防火墙技术,入侵监测(IDS/...

Global site tag (gtag.js) - Google Analytics