一种聚合密码管理器的设计
2022-09-06肖普山
才 华 肖普山
(中国银联股份有限公司 上海 201201)
0 引 言
信息化时代,随着互联网逐渐渗透到我们生活的方方面面,不同的网站账号也成为个人的一个身份指代符号,人们需要在生活工作场景中频繁地进行授权、确认、登录操作,而不同形式的账号密码则是认证我们身份的最直接方式。根据中国互联网信息中心发布的《中国互联网网络发展状况统计报告》[1],截至2019年6月,中国网民规模到达8.54亿人,人均每周上网时长为27.9小时,中国网站数量更是达到了518万个,众多的网站在带来便利的同时也意味着用户需要记忆管理的网络账户甚是繁杂,给用户的密码安全带来了严峻挑战。早在2011年,技术论坛CSDN的安全系统就曾被黑客攻破,600万用户的账号名、密码及邮箱信息遭到泄露,随后天涯、多玩网、人人网、世纪佳缘等网站也被曝出用户隐私泄露问题,其中光天涯社区就涉及到了4 000万用户[2]。2018年8月,华住旗下酒店所有数据被网民在暗网上公开售卖,内容包括了会员的姓名、手机、身份证、登录密码等注册信息,入住登记身份信息,酒店的开房信息等,涉及到1.3亿人的个人信息及开房记录,记录总数超过4亿条[3]。而上述统计报告数据更指出,在2019年上半年,有13.9%的网民表示在上网过程中遭遇过账户或者密码被盗、个人信息泄露等网络安全问题。另一方面,很多网民对于密码复杂度的认识不足,使得设置的密码安全强度不高。以CSDN泄露的密码统计结果为例,有23万用户采用“123456789”为登录密码,同时有21万用户设置密码为“12345678”,甚至占到了当时CSDN网站总用户数的2%,而由于很多用户习惯将不同网站设置相同的账号和密码,使得黑客在窃取一个密码后很容易进行撞库攻击,造成更多网站的密码安全问题[4]。
鉴于账户密码数量繁多、高质量密码难以记忆、密码传输存储不安全的诸多问题,密码管理器被推出以用于相关密码信息的综合管理,通常采用将密码加密后存储在本地数据库、云端服务器或者硬件设备的方式,经由一个主密码进行账户密码信息的查询控制,适用于移动端和PC端的多种平台[5-7]。本文针对已有密码管理器实现方案中存在的单个主密码认证、传输存储涉及密码内容本身等问题,设计了用户密码和网站密码的映射转换关系,并采用与LastPass、1Password等商用产品类似的AES256与PBKDF2「哈希算法」加密技术对映射关系表进行加密,使得被加密存储对象由用户密码改进为映射关系表。同时,通过综合用户自定义和系统辅助生成的方式制定网站密码等级、映射关系、密码规则,优化密码自定义安全等级和便捷性,提出了一种聚合密码管理器,保留了现有加密模式安全性的同时,整体提高了密码管理器的抗风险能力,极大便利了用户的使用体验。
1 密码管理器的研究现状
目前,密码管理器已有较多成熟的产品,广泛应用于手机移动端、电脑PC端和U盾等硬件设备,既能通过登录密码的方式打开查看文档型的密码管理列表,也能在网页浏览时通过插件自动捕捉Web注册、登录信息,实现账户名、账号密码的自动化记录和填充[8-10]。基于账户信息的数据存储位置,这些密码管理器被分为在线服务器同步和本地数据库同步,而基于身份认证手段的不同,这些密码管理器也被分为主密码登录和多重混合登录,其中,较为突出的代表性产品有KeePass、Enpass、1Password、LastPass、Dashlane等[11-15]。
KeePass是一款免费、开源且兼容性强的密码管理器,支持AES等多种加密方式,采用本地数据库存储的模式,同时也能够使用Dropbox、OneDrive、Google Docs等同步工具上传到云端,但KeePass在手机移动端使用时操作复杂,需要额外下载网盘App进行同步支持,而用浏览器访问网站时,KeePass更多时候需要手动操作,无法实现自动填表登录,且不支持某些银行插件。Enpass是一款跨平台密码管理器软件,支持本地离线存储、兼容多平台客户端并提供主流浏览器的一键登录扩展,通过一个主密码登录实现密码全管理,但局限应用于PC电脑端。类似的1Password跨平台密码管理器,采用本地数据库保存数据,同时支持自定义的云端同步和浏览器自动填表,但不用安装任何客户端,只要有浏览器即可查看密码,可是仅仅支持网站自动登录。
LastPass、Dashlane是两款基于服务器自动备份的密码管理器,系统会强制将密码内容上传,但由于云存储仍然是一个较为脆弱的保护环境,Web端上传服务器的密码备份方式有被攻击的可能,隐含了潜在的泄露风险[16]。例如,2015年LastPass的CEO曾在官方博客中警告称:“未知的攻击者攻破了运行公司密码管理服务的设备,并获得了用户账号的电子邮箱地址、密码提示信息和用于验证的个人哈希信息、个人加密加盐(Salt)信息”[17]。
虽然KeePass、1Password、LastPass、Dashlane等大多数成熟的密码管理器在加密算法的应用上都采用相似的技术流程,基本上是通过主密钥+盐(salt),调用成熟的PBKDF2函数迭代上万次循环来生成最终加密数据库的钥匙,并采用美国联邦信息处理标准(FIPS)认证的最高密级AES256加密算法[18]来对数据库加密,而SHA-256算法验证信息是否被篡改[19]。但借用1Password官网的一句话,从密码管理器这一产品设计逻辑的角度来看,“真正有区别度的是安全模式而非加密方式”[20]。上述的商业密码管理器都采用单一主密码为主的认证方式,这意味着一旦主密码泄露,用户的所有信息就有失窃的风险。在2015年的LastPass被攻击事件中,官方邮件通知所有用户都需要重新设置主密码,因为攻击者是可以根据非法获得的相关信息猜出较弱的用户主密码[21]。而LastPass、Dashlane虽然也支持使用谷歌验证器(Google Authenticator)进行双因子验证,但此时必须通过Windows或Mac客户端软件开启支持双因子验证的功能,在移动端的双因子登录则需要额外安装专门的验证应用程序,且保持与互联网的连接[22]。
综上,密码管理器因为其便利性已有一定的市场应用,但现有技术方案多是采用一个主密码的方式进行登录认证,而这意味着一旦主密码丢失账户所有密码便被完全破解[23]。例如,从LastPass攻击事件可以看出,即使密码被AES算法加密,通过侧面的角度仍然可猜出部分主密码。同时,全部现有方案都会涉及密码内容本身的存储和传输,存在着被攻击破解的风险隐患。
2 聚合密码管理器的设计
针对现有密码管理器将所有网站密码无区别对待,统一加密后存储在本地或是服务器,使用一个密码管理器主密码作为唯一认证手段的问题,我们提出了一种聚合密码管理器。通过设计用户密码和网站密码之间的映射转换关系,采用与LastPass、1Password等商用产品类似的AES256与PBKDF2加密技术对映射关系表进行加密,将加密存储用户密码本身的常规模式改进为加密存储密码映射关系,保留了已有加密算法的安全性;而通过添加以网站密码等级、映射关系、密码规则的用户自主分类的逻辑机制,有效避免了商用密码管理器随机生成的“强密码”难以记忆、只能在服务器/本地加密存储的弱点,也大幅度减少了用户需设定、记忆的密码数量,整体提高密码管理器安全性、抗风险能力的同时,极大便利了用户的使用。密码管理器的总体逻辑架构如图1所示。
图1 聚合密码管理器逻辑架构
图1中密码管理器内的用户规则A、B、C为用户自行设定的密码规则;映射关系表a、b、c记录密码的转换逻辑,在密码管理器根据网站地址匹配到对应的映射关系表后,将用户密码向符合网站规则的网站密码转换;用户密码A1、A2、B1、C1为用户根据用户密码规则自定义的密码;密码组是多个用户密码的集合,同一密码组内用户密码对应的网站具有相同的安全等级;网站规则W、X、Y、Z为网站规定的网站密码规则;网站密码W1、X1、Y1、Z1为密码管理器经过映射转换过程后的密码,即网站记录存储的用户密码,用于身份认证。
密码管理器的设计是基于用户密码和网站密码的独特映射关系,用户可根据安全需求的不同将网站分级并设置不同的用户规则,用户输入符合用户规则的密码时,密码管理器会按照设定的映射关系将密码转换为符合目标网站规则的网站密码。此时,密码管理器能通过安全等级的分类使用户需要记忆的密码数量减少,也规避了一个主密码丢失即损失全部隐私的风险;且不同于常规密码管理器只是对密码内容的加密存储,此时在服务器加密传输、存储的不再是用户密码而是用户密码的转换关系,用户可以使用最常见的简单密码(例如针对CSDN泄露事件中部分人群设定的数字密码“123456789”“123123123”)就完成高安全性能的多账户密码管理,降低了单个密码损失造成的撞库攻击风险,也有效避免了商用密码管理器随机生成的“强密码”难以记忆、只能在服务器/本地加密存储的弱点。同时,聚合密码管理器的映射关系表会采用PBKDF2-SHA256算法循环生成加密钥匙、AES256加密算法加密的方式存储于数据库,保证映射关系表的安全性。
2.1 初始设置
在初始阶段,用户通过聚合密码管理器设置多个密码组及对应的安全等级(例如,金融支付网站为高安全等级,而一般浏览网站为较低安全等级),并为各个安全等级同步设置密码组对应的用户密码规则和映射关系表,基本流程如图2所示。
图2 聚合密码管理器设置阶段流程
用户密码规则为用户自行设定的用户密码形式规范,通常采用用户熟悉常用和方便记忆的组合(如用户常用“A123456”,设置规则为7位字母数字的组合),帮助用户对密码组内容进行记忆和对安全等级的区分。
所述映射关系表包含了根据常用的数字、大写字母、小写字母、符号(以下统称字符)四种密码形式统一设计编码成的四个字符转换函数FS(x)、FD(x)、FX(x)、FF(x),能将用户输入密码逐位转换为符合网站规则的密码,其中,FS可以将任何字符转换成随机数字,FD可以将任何字符转换成随机大写字母,FX可以将任何字符转换成随机小写字母,FF可以将任何字符转换成随机符号。为了进一步保证安全性,映射关系表中除了记录转换步骤之外,用户还可额外自定义增加用于混淆的转换步骤信息。例如,在原本4位密码转换关系“0-D”“1- 4”“9-B”“4- 6”“5-M”的基础上,用户自定义额外混淆的“8-H”“0-T”转换规则等。使得密码在通过映射表转换后的密码信息只能正向推导,无法反向破解。
除此之外,映射关系表也包含密码位数的补位和字符的排列,聚合密码管理器会判断用户密码长度是否符合网站密码规则,如果不一致,则使用补位字符进行补充(例如,对于缺位用k、y、p补位),或者进行删位处理(对于过长的密码删除某几位或者删除里面的特定数字和字母)。同时,由于现在网站的密码位数规则多采用浮动位数和字符组合,聚合密码管理器会针对网站要求选择映射关系,确定合适的密码长度和多种字符进行排列组合,使得转换后的密码达到网站定义的最高安全级。以金融支付高安全等级为例,中国银联“云闪付”要求密码为6~16位数字、字母和字符的组合,工商银行“手机银行App”要求密码为8~30位的数字、字母、#号等分隔符的混合形式,“支付宝”要求密码为6~20位字母、数字、符号组合,密码管理器综合后选择生成密码具有14位以上的密码长度且同时包含数字、大小写字母、分隔符号三种字符形式。
总的来说,上述用户密码规则和映射关系表内的字符转换函数、密码位数补位、密码字符组合均采用用户自主设置和系统按照规则随机自动生成的双轨模式,同时满足安全性和便利性的需求。特别地,用户规则、映射关系表等所有信息都是先经过AES算法加密后才进行存储,结合了现有主流技术方案提高系统整体安全性。
2.2 账号注册
在注册阶段,用户首先按照网站界面提示,通过手机扫描网站界面二维码或者浏览器插件自动读取的方式,获取网站的密码规则、网站地址、当前时间、用户唯一ID等信息,其中用户唯一ID是用户的账号用户名ID,由目标网站系统自动生成,也可通过用户自主设定。其次,密码管理器提示用户选择该网站对应的安全等级(如购物网站设置为“中安全”),并根据安全等级匹配密码组及对应的用户密码规则(如6位数字加大写字母),同时密码管理器会记录网站地址与密码组、映射关系表的对应联系。然后,用户按照用户密码规则自行设定密码(如“A123456”),由密码管理器根据初始设置时生成的密码映射关系完成用户密码向符合网站规则的网站密码的转换(包括综合网站规则自动选择密码位数、字符组成和字符转换函数),并依据网站地址向网站发送用户唯一ID、当前时间、网站密码等信息。最后,目标网站存储相关信息完成账号注册,密码管理器将网站地址与密码组等级、映射关系表、用户密码规则进行对应绑定。以用户访问京东商城为例,用户自主设定网站为“中安全”等级并匹配相应的用户密码规则和映射关系表,密码管理器将用户密码“A123456”转换生成网站密码“agkdDWON-#2078”后,与用户唯一ID、当前时间等信息打包发送到目标网站完成注册,整体流程如图3所示。
图3 聚合密码管理器注册阶段流程
2.3 登录使用
在使用阶段,用户按照网站界面的提示通过密码管理器扫描二维码或者直接浏览器插件读取的方式,获得该网站地址、当前时间、用户唯一ID等信息,此时,密码管理器根据网站地址匹配用户设定的密码组等级(如“低安全”),获取用户密码规则后提示用户输入用户密码(如6位数字)。然后密码管理器根据对应的映射关系表,将输入的用户密码转换成符合网站规则的网站密码,并根据网站地址向网站发送用户唯一ID、当前时间、网站密码等信息,网站与自身存储的用户数据比对后即可完成登录。以用户访问京东商城为例,用户扫描网站二维码,由网站地址匹配到“中安全”等级并获得用户密码规则和映射关系表,在用户按提示输入密码“A123456”后,密码管理器将用户密码转换生成网站密码“agkdDWON-#2078”,与用户唯一ID、当前时间等信息打包发送到目标网站完成登录,整体流程如图4所示。
图4 聚合密码管理器登录阶段流程
3 讨 论
本文通过将用户密码分类后向网站密码的转换,把现有常规的加密算法加密存储密码的方式转变为加密算法加密存储密码映射转换关系,摒弃了单一主密码管理所有密码信息的模式,而使用PBKDF2-SHA256算法生成加密钥匙、AES256算法加密映射关系表的方式保留了与现有产品相同的AES加密算法高安全性[24]。同时,通过综合用户自定义和系统辅助生成的方式来制定网站密码等级、映射关系、密码规则,优化密码管理器的运行逻辑,整体对密码管理工具相关产品的实现方案提出了改进与探索。聚合密码管理器的具体实施如图5所示。
(a) 常用密码管理器
(b) 聚合密码管理器图5 密码管理器实施对比图
图5(a)为常用密码管理器的运行模式,采用AES256加密算法对用户的输入密码进行加密并存储,通过一个统一的主密码实现所有密码管理。而图5(b)聚合密码管理器通过用户自定义网站等级、映射关系和密码规则(普通网站A、“a-B,b-C,c-D…”的映射关系、字符数字字母组合),将用户的任意输入密码(即使是简单的数字密码)通过转换关系生成为复杂合规的网站密码,由密码多层映射隔离增加了安全性并优化了用户的使用便利性;而此时通过AES256加密算法加密并存储的是网站A对应的密码映射关系,保留了与常用密码管理器方案相同的加密算法安全性,且即使加密算法被攻破,也只是对映射关系的损失,不会触及用户自定义的密码内容。
综上所述,本方案的优势在于:1) 从密码管理器加密安全的角度,将现有的、直接将用户密码存储的方式转变为存储加密后的映射关系表,即使数据库遭受攻击也不会泄露用户的实际密码,优化了管理器的安全模式;而通过PBKDF2-SHA256算法生成加密钥匙、AES256算法加密存储映射关系表的方式,充分保留了AES算法的高安全性;同时映射转换规则的应用使得用户可以将用户密码设定为最常见的简单密码(例如CSDN泄露事件中表现出的数字密码“123456789”、“123123123”),降低了撞库攻击和随机试验破解的风险,也有效避免了商用密码管理器随机生成的“强密码”难以记忆、只能本地/服务器加密存储的弱点。值得注意的是,为保证映射关系表的安全性,加密算法采用的是目前最成熟可靠、加密等级极高的AES256[25]算法加PBKDF2-SHA256的方式,并且也可根据加密技术的发展不断迭代更新,不限于当前AES算法的方式。2) 从用户密码数量管理的角度,将用户密码与对应网站进行自定义安全等级分类,针对不同等级梯度优化各级密码安全性,可以为同一个密码组即具有相同安全等级的网站设置相同的用户密码(或是将网站名和编号反映在映射转换关系中,由一个用户密码分别生成同一安全级别下的多个不同密码),既不是将整个密码管理器的安全防护寄托于唯一的主密码,也极大减少了用户需要设置和记忆的密码数量(以“高、中、低”三个安全等级为例,用户只需通过简单的添加或者更换一到两位字符来区分设置3个用户密码),提高了用户操作效率和灵活性。3) 从密码转换规则的角度,使得用户能够自主管理密码组,包括私人设定相关用户规则和映射关系表,将用户自定义方式和系统综合生成规则有机结合,进一步提高密码转换管理的安全性。
4 结 语
信息时代互联网网站数量的爆炸式增长带来了账号隐私数据庞杂、难以管理的问题,而常见密码管理工具主密码单一引发了大家对于安全性的担忧。本文所述聚合密码管理器通过将目标网站分类和设定安全等级来进行网站密码的统一管理,基于用户自定义和系统综合辅助以生成用户密码到网站密码的映射关系表并进行AES算法加密存储的方式,在不降低安全等级的前提下提高用户操作效率和灵活性,改变了传统的登录机制在本地或是云端服务器存储密码信息来进行网络身份验证的方式,有效避免了被攻击导致用户账号密码泄露的风险。