密码作为一种重要的身份认证手段,随着时代的演变,也在不断更新。在1976年,美国密码学家迪菲和赫尔曼在一篇题为“密码学的新方向”一文中提出了一个崭新的思想,不仅加密算法本身可以公开,甚至加密用的密钥也可以公开。但这不意味着保密程度的降低。因为如果加密密钥和解密密钥不一样。而将解密密钥保密就可以。这一理论的提出,无疑打开了密码学新篇章。本文节选了汪德嘉博士《身份危机》一书中的账号密码体系,带大家一起解密账号密码的发展现状及账号密码存在众多的安全性及可用性问题。
账号密码发展现状
20世纪90年代互联网进入千家万户以来,互联网服务(如邮件、电子商务、社交网络)蓬勃发展,账号密码成为互联网世界里保护用户信息安全的最主要手段之一。也是现今大多数网络系统所使用的最简单的访问控制方法,通过密码的匹配来确认用户的合法性。系统为每一个合法用户建立一个ID/PW(账号/密码)对,当用户登录系统时,提示用户输入自己的账号和密码,系统通过核对用户输入的账号密码与系统内已有的合法用户的ID/PW是否匹配,来验证用户的身份。
“账号+密码”身份验证方式中提及的密码为静态密码,是由用户自己设定的一串静态数据,静态密码一旦设定之后,除非用户更改,否则将保持不变。这也就导致了静态密码的安全性缺点,比如偷窥、猜测、字典攻击、暴力破解、窃取、监听、重放攻击、木马攻击等。另一方面,由于许多用户为了防止忘记密码,经常采用诸如生日、电话号码等容易被猜测的字符串作为密码,或者把密码记录在一个自认为安全的地方,这样很容易造成密码泄露。当然,为了从一定程度上提高静态密码的安全性,用户可以定期对密码进行更改,但是这又导致了静态密码在使用和管理上的困难,特别是当一个用户有几个甚至几十个密码需要处理时,非常容易造成密码记错和密码遗忘等问题,而且也很难要求所有的用户都能够严格执行定期修改密码的操作,即使用户定期修改,密码也会有相当一段时间是固定的。账号密码的不足之处主要表现在以下几点:
•账号密码的易用性和安全性互相排斥,两者不能兼顾,简单容易记忆的密码安全性弱,复杂的静态密码安全性高但是不易记忆和维护;
•账号密码安全性低,容易遭受各种形式的安全攻击;
•账号密码的风险成本高,一旦泄密将可能造成最大程度的损失,而且在发生损失以前,通常不知道静态密码已经泄密;
•账号密码的使用和维护不便,特别一个用户有几个甚至十几个静态密码需要使用和维护时,静态密码遗忘及遗忘以后所进行的挂失、重置等操作通常需要花费不少的时间和精力,非常影响正常的使用感受。
静态口令认证技术在面临上述形式的网络攻击时就显得非常的脆弱,攻击者非法获得合法用户的口令并入侵网络系统的安全事件经常发生。为了提高静态口令认证系统的安全性,一些系统对用户的口令管理作一定的限制,例如:
•限制口令的长度和内容
•要求定期更换口令
•要求用户在固定时间段内登录
•要求用户在固定设备上登录
•不允许多人共享一个用户名和口令等。
尽管账号密码存在众多的安全性及可用性问题,同时也有大量的新型身份认证技术被提出,这些替代型方案有的在安全性方面优于账号密码,有的在可用性方面胜过账号密码,但几乎都在可部署性(deployability)方面劣于账号密码,并且各自存在一些固有的缺陷。账号密码身份认证方式凭借其简单易用、成本低、容易更改等特点,在可预见的未来,仍然是互联网中最主要的身份认证方式。
账号密码市场调研分析
静态口令即账号密码,账号密码是由人生成的,因此帐号密码的安全性与人有着必然的联系,大多数用于为了记忆方便,习惯性使用弱密码、多个平台使用同一密码、未定期更换密码等。比如,同样是注册12306账号,有的人认为该账号不重要,使用弱口令“111111”作为密码;也有的人采用“p ssword”作为密码,但是,如果其他人也有同样设置密码的习惯,攻击者即会了解这一用户行为,该密码也就成为弱口令的一种;再有的人习惯用自己的生日作为密码,甚至是多个平台使用同一密码,这一用户行为大大降低账号密码的安全性。
在第二届国家网络安全宣传周的启动仪式上,《我国公众网络安全意识调查报告(2015)》正式发布。该调查为我国首次开展的全国性网络安全意识调查活动,在一个月的时间里,回收有效问卷25万余份,调查对象覆盖我国31个省(区、市),年龄跨度从7岁的儿童至60岁以上的老年人。我国公众使用账号密码安全性问题主要表现在如下三个方面:
1.弱口令
1979年,Morris和Thompson在他们的开创性论文里分析了3289个真实用户口令,发现86%落入普通字典,33%可以在5min内搜索出来。后续大量研究表明,除了选择单词作口令,用户常常将单词进行简单变换,以满足网站口令设置策略的要求。比如“123abc”可以满足“字母+数字”的策略要求。这些最流行的单词及其变换就形成了国民口令。中文国民口令多为纯数字,而英文国民口令多含字母,这体现了语言对口令行为的影响。有趣的是,爱情这一主题在国民口令中占据了重要地位。高达1.01%~10.44%的用户选择最流行的10个口令,这意味着攻击者只要尝试10个最流行的口令,其成功率就会达到1.01%~10.44%。
2.未定期更换密码
《我国公众网络安全意识调查报告(2015)》显示,定期更换密码的被调查者仅占18.36%,而遇到问题才更换密码的被调查者有64.59%,有17.05%的被调查者从来不更换密码(见图1)。对此,工业和信息化部电子科学技术情报研究所所长洪京一表示,定期更换密码对保证个人账户安全、防止个人隐私泄露具有重要意义,尤其是个人网银等较为重要的账号应该定期更换密码。
图1公众更换密码情况分析
3.多账号同密码
调查指出,公众多账号使用同一密码的情况高达75.93%(见图2),多账户使用同一密码更容易遭到黑客攻击,因为黑客可通过防御性较弱的网站获取密码信息,再登录到账户中进行信息窃取。调查显示,我国超七成被调查者存在多账号使用同一密码的问题,特别是青少年多账号使用同一密码的比例高达82.39%。
图2公众密码设置情况
技术原理
在账号密码技术的运作过程中,系统将账号密码的配对信息以密文形式存储在数据库中,通过系统管理员分配给用户,用户在需要进行身份认证时,在页面输入注册的用户名及密码,系统获取这组输入的信息后,将其与数据库中存储的用户名,密码进行比对,比对一致即视为认可该用户为合法用户,若比对不通过,则视为非法用户。静态密码技术原理图(见图3)。
图3静态密码技术验证流程图
用户名(账号)/密码的对比校验支持在本地完成,对于无需网络支持的系统或者移动端信息系统,例如手机、平板电脑的开机密码,我们称之为本地密码认证,而与之相对的是远程密码认证,一般用于需要网络支持的应用及信息系统,由服务器端来负责验证,例如电子邮件、网络游戏的账号、密码等。
账号密码的存储方式分为:Hash杂凑存储、盐处理存储等,详细介绍如下:
一、Hash杂凑存储
•技术原理
使用杂凑函数为口令文件产生指纹,将每一个用户的账号和密码的杂凑值存储在一个口令文件(数据库)中。当用户需要认证身份时,输入口令后,系统在计算口令的杂凑值,与数据库中存储的杂凑值比对。比对成功,则身份认证成功;反之,若比对失败,则身份认证失败。静态密码杂凑存储技术原理(见图4)。
图4静态密码杂凑存储技术原理
•杂凑函数
单向函数就是一个求值相对容易,但求逆却非常困难的函数。也就是说,已知x,很容易计算f(x),但已知f(x),求x却是非常困难的。例如打碎盘子就是一个很好的单向函数。把盘子打碎成碎片是很容易的事情,然而把这些碎片再拼接成一个完整的盘子却是非常困难的一件事情。陷门单向函数是一个有秘密陷门的一类特殊的单向函数。陷门单向函数在一个方向上易于计算,求逆仍然是困难的。但是,如果能够知道那个秘密陷门,也能够容易计算这个函数的逆了。散列函数就是把可变输入长度串转换成固定长度的输出串的一种函数。散列函数是典型的一种多到一的映射,因此不能用散列函数来确定两个串是否相同,但可以用来得到准确性的合理保证。单向散列函数,也叫杂凑函数,消息摘要,是一个确定的函数,它将任意长的比特串映射为定长比特串的杂凑值。杂凑函数具有如下性质:
(1)混合变换:对于任意的输入,输出的杂凑值应当和在其值域中的均匀的二进制串在计算上是不可以区分的。
(2)抗碰撞攻击:找两个不同的输入x和y,且x与y不相等,使得输出的结果相等在计算上是不可行的。
(3)抗原像攻击:已知一个杂凑值h,找出一个输入串x,使得其输出结果等于h,在计算上是不可行的。
虽然杂凑函数MD5和SHA-1等被找出缺陷,使得找到碰撞成为可能,但是这并不意味着数字签名安全大厦的轰然倒塌。Hash函数可以用于检测数据的完整性,它是很多密码体制和协议的安全保证,我们可以采用增强型算法有着广泛的应用领域。
•MD5算法简介:
MD5的全称是MessageDigest5(信息摘要算法第5版),20世纪90年代初,由MITLabomtoryforComputerscience和RSADataSecurityInc的RonaldL.Rivest开发,经MD2、MD3和MD4发展而来。它是将一段任意长度报文,即数据文件、文本文件或者二进制文件,通过一系列算法压缩成一段128位的信息摘要MD5算法的本质是一种散列函数(又称啥希函数),其具有四个特点:(1)唯一性。任何一个特定的被计算对象,总是能得到固定的特征值。(2)离散性。被计算对象的微小变化,将引起特征值的很大变化。(3)抗碰撞性。给定消息m,很难找到另一个消息m’,使它们的信息摘要相同。(4)单向性。给定消息m,很容易计算出信息摘要h;给定信息摘要h,很难推算出原始消息m。
•MD5算法加密原理:
Message—Digest泛指字节串(Message)的Hash变换,就是把一个任意长度的字节串变换成一个128位的大整数,这种变换只与字节的值有关,与字符集或编码方式无关。MD5算法对字节串的变换是一个不可逆的变换算法,换而言之,即使你看到源程序和算法描述,也无法将一个MD5的值通过某种算法变换回原始的字节串。MD5算法可简单描述为:MD5加密以512位分组来处理输入的信息,且每一分组又被划分为16个32位子分组,经过了一系列的处理后,算法的输出由4个32位分组组成,将这4个32位分组级联后将生成一个128位散列值,即“信息摘要”。
•MD5算法在用户口令认证应用中的安全隐患
MD5加密算法在网络应用系统,特别是网站后台登录管理系统中应用广泛,网站的用户信息包括管理员信息均保存在数据库文件中,网络攻击者通过服务器漏洞、网站应用程序漏洞等非常规手段入侵服务器,能轻松下载并打开数据库文件,获取关键敏感信息,如管理员登录用户和密码。虽然数据库文件存储的密码是经过MD5算法加密过的,但网络攻击者仍然可以通过某种特定的方法加以破解,对于普通强度的加密口令,可以通过以下三种方式进行破解:
(1)在线查询密码。一些在线的MD5值查询网站提供MD5密码值的查询,输入MD5密码值,若此密码值在数据库中存在,就可以很快获取其密码明文。如管理员密码明文是”admin123”,其对应MD5值为:
“8a30ec6807f71bc69d096d8e4d50lade”,将MD5值输入到在线查询破解网站(www.cmd5.com)的查询窗口,就能快速获取对应密码原文。
(2)使用MD5破解工具。网络上有许多针对MD5破解的专用软件,通过设置字典来进行破解。
(3)随着云计算技术的迅猛发展,MD5算法被暴力破解的代价和成本大幅下降,在2010年亚马逊EC2推出集群GPU运算服务,每一个GPU提供了甚至超过每秒100万兆次的双精度浮点计算的超高的性能。通过GPU实例的数百个内核并行处理能力,工作负载可以被大大加速。在暴力破解MD5算法方面,GPU的速度比四核CPU快数百倍。简单的MD5加密是无法达到绝对安全的,因为普通的MD5加密有多种暴力破解方式,因此如果想要保证信息系统安全,必须提高MD5在口令认证等方面的安全性。
•提高MD5算法在口令认证中的安全性
提高MD5算法在口令认证中的安全性可采用对MD5加密过程进行变换,或使用自定义加密算法、局部修改MD5算法等方法,使数据库中密码字段存储的信息不再是常规的MD5密码值。
1.自定义加密算法
(1)增加MD5加密次数。读取提交表单中输入的密码明文,赋值给变量pwd,pwd=md5(pwd)对提交表单中输入的密码明文进行加密,并将MD5值赋值给变量pwd,pwd=md5(md5(pwd))以此类推,可以利用函数的嵌套方法进行两次或多次加密
(2)利用截取函数截取MD5值后作为密码值保存至pwd字段,如:pwd=left(pwd,N)截取MD5值左边N位,因为“信息摘要”由32位16进制数表示,所以N正常取值范围应在1到31之间也可以调用mid()、right()和Reverse()等内置函数对MD5值进行截取变换。
(3)pwd=md5(“R”&pwd)对R和密码明文进行连接后再加密,其中R既可以是任意字符串,也可以是随机数,可用随机函数实现,设计时应将每个用户密码对应的随机函数产生的随机数保存至RandomNumber字段以上方法实现了对MD5加密算法进行变换,也可以对以上三种方法进行任意组合,以增强MD5加密算法的复杂性和安全性。
2.局部修改MD5算法
(1)修改四个缓冲区寄存器的初始值。MD5算法定义了四个常数,A、B、C、D四个缓冲区寄存器,它们的初始值分别为:a=0x67452301、b=0xEFCDAB89、c=Ox98BADCFE、d=Oxl0325476。MD5算法的过程主要是一些异、或、求模等操作的运算,只要把初始值进行稍微改变,比如只改变其中一位,不必改动算法的其它部分,就产生了自定义的新MD5散列算法。如将“a=ox67452301”改为“a=ox67452302”,这样就得到一个新的MD5算法,按照常规的破解方法,则无法被破解。
(2)任意组合级联生成MD5值的四个分组。MD5算法程序中,MD5值由四个32位分组级联后生成,任意选取四个分组中的几组,同时也可改变分组的先后顺序,均可达到修改MD5算法的效果。即使用户密码值数据暴露,变换后的MD5算法也可以极大地增加用户密码被破解的难度,有效提高了MD5算法的安全性。
二、加盐处理
•技术原理
加盐加密是一种对系统口令的加密方式,它实现的方式是将每一个口令同一个叫做“盐(salt)的n位随机数相关联。无论何时只要口令改变,随机数就改变。随机数以未加密的方式存放在口令文件(数据库)中,这样每个人都可以读。不再只保存加密过的口令,而是先将口令和随机数连接起来然后一同加密,加密后的结果放在口令文件中。静态密码加盐存储技术原理(见图5)。
图5静态密码加盐存储技术原理
在带有盐度值的安全哈希加密算法中,盐度值的作用极其重要,通过系统为每个用户随机生成一个盐度值,并与用户提供的密码相结合,使得用户的密码具有高度的随机性,即便多个用户提供了相同的密码,但由于系统为他们随机生成的盐度值的不同,使得他们密码的哈希值也是不同的。这样,即便攻击者可以通过特定的密码和其对应的哈希值来找具有这个特定密码的用户,但是其成功率就明显地降低了。
•带有盐值的Hash算法优势
采用带有盐值的安全哈希加密算法对用户密码进行加密后,即便多个用户提供了相同的初始密码字符串,但由于系统为每个用户随机生成的盐值不同,而使得加密得到的密文不同,这就使得利用字典、彩虹表进行攻击的攻击者需要为每个盐度值创建一条字典记录,这将使攻击变得非常复杂。此外,通过将系统提供的较长的、含有特殊字符的附加码和用户输入的密码相结合,可以使得明文密码进一步随机化,并且增加了明文密码的长度,这也在一定程度上增加了攻击者利用字典、彩虹表进行攻击的难度。因此,采用带有盐度值的安全哈希加密算法对用户密码进行加密可以很好地提升用户密码的安全性。
结语
在现代密码学中,除了信息保密外,还有另一方面的要求,即信息安全体制还要能抵抗对手的主动攻击。所谓主动攻击指的是攻击者可以在信息通道中注入他自己伪造的消息,以骗取合法接收者的相信。主动攻击还可能窜改信息,也可能冒名顶替,这就产生了现代密码学中的认证体制。该体制的目的就是保证用户收到一个信息时,他能验证消息是否来自合法的发送者,同时还能验证该信息是否被窜改。在许多场合中,如电子汇款,能对抗主动攻击的认证体制甚至比信息保密还重要。社会已逐步步入了信息时代,随着数据库技术和计算机网络应用的不断深入,信息的安全传输也有着广阔的应用前景。
PKI是一种遵循标准的利用公钥加密技术为电子商务的开展提供一套安全基础平台的技术和规范。用户可利用PKI平台提供的服务进行安全通信。PKI的理论基础是基于密码学,它所使用的基础技术包括加密(非对称和对称)、数字签名、数据完整性机制、数字信封、双重数字签名等。在下篇文章中将带大家一同了解什么PKI体系?数字签名又是什么?基于PKI的数字签名身份认证系统原理又是什么?敬请期待!
展开全文
- 腾讯一线 | 2019/2/25 9:28:26
- 移动支付网 | 2018/6/29 9:34:34
- 移动支付网 | 2018/6/26 13:37:38
- 移动支付网 | 2018/5/23 10:16:40
- 移动支付网 | 2018/5/10 14:19:29
- 移动支付网 | 2018/5/10 11:07:36
- 移动支付网 | 2018/3/26 10:22:43
- 移动支付网 | 2018/3/22 10:18:06
- 移动支付网 | 2018/3/22 9:54:32
- 移动支付网 | 2018/3/22 9:48:42