◆张京宇
面向用户的密码设置规则
——分级可变规则
◆张京宇
(北京信息科技大学计算机学院 北京 100101)
随着网络的快速发展,各类应用程序、APP层出不穷,用户拥有账号和密码的数量也与日俱增。但往往用户很难清晰地记住每一个应用程序的账号和密码,许多用户为图方便,对于不同的软件采用相同的密码,这极大地增加了账号的风险。本文分析了常用的密码存储方案,并由此提出一种面向用户的密码设置的规则,使得用户设置的密码更加好记且安全。
密码设置;加密算法;密码存储
随着网络的快速发展,各类应用程序、APP层出不穷,数据量也呈爆炸性增长,这给敏感数据在网络中的传输和存储提出了极大的挑战。企业为保护个人用户信息及账户密码采用了许多加密算法和密码存储方案。但往往用户安全意识淡薄,有些用户为图方便,对于不同的软件采用相同的密码,这极大地增加了账号的风险[1]。所以密码的安全和可靠不仅需要企业对密码进行保护,也需要用户提高密码安全意识。本文分析了常用的密码存储方案,并由此提出一种面向用户的密码设置的规则,使得用户设置的密码更加好记且安全。
为有效存储和保护网络中的用户数据,企业会通过数据安全方案来提升网络和数据库系统中用户信息的安全性和可靠性。这些数据安全方案往往采用数据加密算法来加密传输和存储数据,其最重要的目的之一就是传输和存储用户的账户密码。
数据加密算法分为两类:可逆加密算法和不可逆加密算法。可逆加密算法常用于敏感数据在网络中的传输,它又分为对称加密算法和非对称加密算法[2]。对称加密算法需要一个密钥,发送方将明文和密钥经过加密算法处理后形成密文,再进行发送;接收方在接收到密文后用相同的密钥和加密算法进行解密从而获得明文。非对称加密算法需要一对密钥:公钥和私钥,用公钥进行加密,用对应的私钥进行解密,不需要发送/接收双方交换密钥,提高了安全性。不可逆加密算法不需要密钥,往往采用散列函数,将明文处理成密文进行传输、存储,并且在这个过程中无须也无法将密文还原成明文。
目前常采用的密码存储方案有Hash存储和加盐存储[3-4]。明文存储一旦被成功攻击将造成严重信息安全事故,所以现在很少使用。Hash算法是一种单向密码散列算法,它只有从明文到密文的单向映射(加密过程),而没有从密文到明文的解密过程。Hash存储的加密原理是先将任意长度的明文用散列函数转换成固定长度的密文,然后存储在数据库中;待需要验证用户身份时,将用户输入的字段用相同的散列函数转换,并将转换结果与数据库中的密文进行比对,若二者相同则身份验证通过,若二者不同则身份验证不通过[5]。随着Hash存储广泛应用,出现了很多特定算法密码库,大部分简单密码的密文可以通过密码库反向查询到明文。为了防止内部人员和入侵者反向查询用户密码的明文,需要对密文结果掺杂其他信息,即加盐。加盐存储是Hash存储的优化方案,它将明文与一个特定字段(盐)相关联,然后再通过散列函数转换成密文,存放至数据库;验证方式与Hash存储类似,在获取到用户的输入后,将用户输入字段与“盐”相关联,然后用相同的散列函数转换,并将转换结果与数据库中的密文进行比对,若二者相同则身份验证通过,若二者不同则身份验证不通过。
通过对以上密码存储方案的分析,我们可以知道常用的密码存储方案有两个很重要的特点:一是不可逆,也就是仅能从明文转换为密文,而不能从密文转换成明文;二是差异性,明文发生一点点变化,通过散列函数获得的密文都将会发生极大的变化。针对这两种特点,用户在设置密码的时候也可以采用“可变”策略,将设置的密码和应用本身相关联;同时为防止密码规则的泄露,可以对各类应用进行分级,制定不同的密码规则。简单来说,分级可变密码设置规则可以分为两步:一是确定密码分级,二是确定密码可变字段。
密码的分级主要目的就是将用户的众多账户密码分为多个密码规则,一个密码规则就是一种字符+数字的组合方式。如何分级、分多少级完全由用户决定。例如可以将应用的账户密码分为“可共享”和“不可共享”两级,像视频软件、音乐软件这些账号可能共享给好友的软件设置为一个密码规则,社交、金融等不会出借的账号设置另一个密码规则。当然也可以按应用所需的安全性对密码进行分级,如可以分成“金融级”、“社交级”、“普通级”。每一级密码分别对应一种密码规则,各级之间密码复杂程度可以与账号所需的安全性相关。
确定了密码的分级之后,我们可以将密码的字段划分为固定字段和可变字段。同一级的密码固定字段可以相同,可变字段必须不同。密码的可变字段与应用账户本身相关联。例如:假设“社交级”密码的固定字段设置为Zam258TP?,如果密码用于登录微博,那么微博密码就可以设置为Zam258TP?weibo。为了防止密码规则被猜出,我们也可以使用应用名首字母缩写作为可变字段:Zam258TP?WB。同理,同为“社交级”的应用微信的密码可以设置为Zam258TP?WX。分级可变密码设置规则中密码的可变字段不局限于应用名,可变字段还可以为账户用户名、账户注册日期等。只要与应用账号本身相关联且与个人信息无关的字段都可以作为可变字段。可变字段的位置也无须限制,可以在整个密码字段的首部、尾部,也可以在中间位置。
对于用户来说,一种好的密码规则既要好记,又要保证密码的安全性。传统的密码规则往往通过提高密码的复杂性来追求安全,而忽视了密码的易记性[6]。分级可变密码规则在某种程度上实现了易记性和安全性的平衡。
分级可变密码规则的分级策略使用户可以创建少量的密码规则,也就相当于创建了少量的密码固定字段,用户在记忆密码时仅仅需要记忆这些固定字段即可。可变字段由于与应用账号本身相关联,所以用户在输入密码时简单思考就可以知道可变字段的内容。由此一来,用户记忆密码的难度大幅减小,极大提升了密码的易记性。
分级可变密码规则对于用户密码的安全性有一些提升。
如果采用Hash存储方式存储密码,分级可变密码规则可以以最小的易记性代价有效避免用户使用同一密码注册不同应用账户,进而防止入侵者撞库,造成用户更多账户密码泄露。即使用户账户密码信息已经泄露,该规则也可以保证用户其他账户密码的安全性和独立性,从而降低了密码泄露造成的损失和用户修改密码的成本。如果采用加盐存储方式存储密码,盐值和密码都有被泄露的风险。而一旦盐值泄露,加盐就失去了意义,账户密码也面临被泄露的风险。分级可变密码规则可以保证此账户有风险的同时其他账户仍处于安全状态。如果用户的账户密码并非从网络或企业中泄露,而是从用户处无意泄露,那么用户仅需修改泄露的密码即可,无须修改其他密码。
所以,无论是何种密码存储方式、无论密码从何处泄露,从用户角度来说,分级可变密码规则都可以保证用户不同密码间的独立性和安全性。
本文分析了常用的密码存储方案,并由此提出一种面向用户的密码设置规则-分级可变规则,并从易记性和安全性分析了该规则的可行性。该规则不仅适用于用户设置应用密码的场景,对于企业内部密码的管理与应用[7]等场景也有借鉴作用。
[1]Irfan Saif,Mike Wyatt,David Mapgaonkar,Lucy Rose.密码以外的世界——提升数字化转型的安全性、效率和用户体验[J].科技中国,2017(11):17-23.
[2]蒋泽宇.浅谈密码学及其在计算机网络安全中的作用[J].价值工程,2020,39(16):189-191.
[3]王舒,李佳骏.移动应用中用户密码存储与传输的方式[J].电脑知识与技术,2018,14(23):91-92.
[4]屈晓,梁进杰,莫秀玲,刘泽平,吴洵剑.密码存储与传输的安全性探讨[J].黑龙江科技信息,2016(30):232-233.
[5]高张宝. 基于B/S架构的企业内部管理系统的设计与实现[D].昆明理工大学,2019.
[6]胡立.如何提升密码的安全性[J].计算机与网络,2019,45(17):52-53.
[7]辜琳瑾.企业信息系统密码技术应用情况和使用习惯[J].信息与电脑(理论版),2018(24):204-206.
北京信息科技大学2019年促进高校内涵发展——大学生科研训练项目(5101923400),导师:杨大利