云计算服务推动口令破译技术走向新时代
Jack zhai
 
问题提出:
口令***(就是破译或盗取已知账户的口令进行***)是***最直接也是最有效的方式,我们熟知的系统管理员账户上最容易被***的。
口令破译最简单的方式是暴力破解,就是遍历全部的口令空间,一定可以发现要找的口令。口令的强度主要来自两个方面:一是自身的复杂度,如长度与空间(字符集个数);二是身份认证的方式,如加密算法与认证过程等。大多数系统的口令安全强度是建立在口令长度基础上的。暴力破解的原理也非常简单,其实现的最大困难是计算能力的不足(在有限的时间内完成口令空间的遍历),能拥有巨大计算资源的多数是国家机构或大型企业,除非是政治性的***,才有可能利用这些资源来破译口令,这对于大多数***者是难以想象的。
网格计算曾经让***者们兴奋,这种技术可以利用手里大量的“肉鸡”集中破译,但实践证明:一是管理复杂,容易被“肉鸡”发现,“肉鸡”损失严重;二是实效性不强,***如同打仗,对时间的敏感是非常关键的。
云计算服务的兴起有可能从根本上解决这一难题,云计算能够提供强大计算能力的出租,而且价格便宜,最为重要的是,在网络上租用服务,可以跨地域,跨国家,用户的身份隐藏容易。这相当于***者自己拥有了世界上最强大的计算机资源,与强大的国家资源对抗成为一种可能,这对于非组织性的***者来说是梦寐以求的。
一方面是多年面临的难题,一方面是正在走向我们的新型服务,需要的就是行动,用户身份的安全再次受到强有力的挑战,或许连云计算服务的提供商也很难想象,他们赖以生存的“安全”身份认证模式也面临同样的问题……
 
暴力破解方式:
口令的暴力破解分为线上破解与线下破解两种方式。线上破解就是直接在目标系统上输入,进行验证,当然,目前大多系统都支持账号锁定,短时间内被连续35次口令错误,就自动锁定该账号一段时间,所以线上破解方式不能连续工作,需要间隔一定时间,才能避免账号被锁定。线上方式主要用于口令猜测,猜测口令的数量越少越好,一般在几百以内的疑似口令时可采用自动探测,如一小时试一个,一天能实验24个。
大多数的暴力破解是指线下破解,起码是在线下先破解出可能疑似口令(已经是百以内的),再通过线上方式去验证。
线下破解需要得到一些与目标身份认证有关的信息,如密文,或用户公钥等,作为破解计算时的比对验证。如何获得这些信息,我们需要了解身份认证的过程。
 
身份认证方式:
常见的身份认证方式分为下面几种:
1、  简单验证方式:
用户直接把账号与口令提交给服务器,明文传输或者是采用固定加密算法加密后传输,服务器解密后比对(若是口令散列可以直接比对),返回认证结果。
***方法:
a)         网络监听方式:监听网络报文,直接得到用户认证过程中传输的账号口令。若是密文,可直接采用线下暴力破解
b)         ***方式:先设法把***输入到用户终端上,监听键盘输入或网卡流量,直接获取用户登录过程中的口令,若是密文可以线下破解
c)         “强权”方式:先***系统服务器,获取服务器上的系统账户口令文件。常见的WindowsUnix系统都保存用户口令文件(或是口令散列文件),因为身份认证时要比对。有了这个文件,是线下暴力破解的最理解状态了
说明:对付简单验证方式,破译的关键步骤是窃听,破译主要是针对散列方式,大多的公共破译软件就可以满足需求,使用云计算资源有些浪费,但对于稍大一些的系统就用得上了。
2、  一次性口令方式:
一次性口令(也称动态口令卡)是基于算法可产生固定的口令序列,一般是选定一个随机数产生算法(或伪随机数算法)加“盐”的方式。具体方式可以是服务器产生一个口令清单(纸质的)交给用户保存(使用完后再产生下一个清单),每次口令认证成功就作废换该口令,以便下一次换下一个新口令;也可以是用户持有动态口令卡(电子器件),每次按下,产生不同的口令(一般是每分钟产生不同变化),在服务器端采用同样的算法,产生同样的口令序列,与用户每次认证时使用的口令相对应。
一次性口令的优点是避免了被监听,每次使用口令不同,即使***监控也无法预知下一个口令是什么。缺点是用户要保管一个动态口令卡,纸的也好,电子的也好,都容易丢失或被人复制。
***方法:
a)         破译动态口令产生算法,预测口令产生序列(破译这种算法很有趣,在行业内也不是特别的秘密,知情的“内部人士”有一定的数量)。每个系统采用的算法是一致的,针对每个用户,一般加入账户名等作为参数,产生不同口令序列;随机算法不公开,还设有一些安装时的用户随机串(也称“加盐”处理)提高安全性。这种算法破译方式在赌博机上曾经有人成功使用过
b)         盗取用户保存的口令卡,进行复制。纸质的复制应该不难,电子的进行“物理拷贝”对于大批量生产的器件应该是可行的
说明:银行系统与企业内部网络采用一次性口令的越来越多,由于该方法需要维护大量用户手中的介质,使用量越大,升级、更新越困难,而使用时间越长,被破译的概率就越大。
针对一次性口令的破译办法不多,很希望与业界的朋友多交流。
3、  非对称加密口令方式:
口令在网络上传输可以被窃听,那是不是有不传送口令的认证方式呢?
非对称加密算法(RSA、椭圆算法等)的原理是每个用户拥有一对密钥,公钥是大家都可以拿到的,私钥是自己保存的,通过公钥很难推算出私钥。
认证过程:用户请求认证,服务器产生随机串,用户用自己的私钥加密随机串,服务器用用户的公钥解密,随机串还原则证明该用户是真实的(拥有私钥)。目前流行的双向认证是增加用户对服务器的身份认证,方法相同,只是换成服务器的公钥与私钥即可。
非对称加密口令方式不在网络上传送口令的相关信息,只是传送随机串信息,***窃听就无能为力了。
***方法:
a)         暴力破解:非对称加密的安全性是破解者很难通过公钥推算出私钥,因为空间巨大,但不是说不能遍历,在足够大的计算能力前提下,这是有可能的
b)         物理复制:非对称加密口令是很长的二进制串,人很难记忆,一般采用介质保存,如U盘、植入芯片等,盗取后进行物理复制是可行的
说明:非对称加密口令由于其破译难度,逐渐成为身份认证高端用户的首选,但这是建立在***者计算能力不足的基础上的,云计算服务的出现,将使这一领域的未来充满变数。
 
利用云计算服务:
通过对身份认证方式的分析,我们知道:除了一次性口令外,线下口令暴力破解都可以作为***的主要手段。
在利用云计算服务资源之前,我们需要做一些准备工作:
1、             简单验证方式:我们可以通过***或监听方式,获得服务器的口令文件(当然是加密的),或是一些密文。因为加密算法是知道的,对称加密算法的加密与解密密钥是相同的。我们可以编写高效计算加密软件,遍历口令空间,核对与获取的密文相同的就是我们要找的口令
2、             非对称加密口令方式:公钥是容易获得的,算法是公开的。破译的方向有两个,一是直接破译该用户私钥,用公钥对随机串加密,遍历密钥空间(决定因素是密钥长度),能还原随机串的密钥就是我们要找的;二是破译该系统全部用户,在获得该用户的私钥后,利用加密算法的特点,例如RSA算法,可破译还原出算法对应的pq,则可以破解该系统所有用户私钥
接下来就是计算了,选择多家云服务商,租借云计算资源,把破译软件运行起来,你就可以等待破解的结果了。
算法优化:切割口令空间,把破译计算分成若干块,分别租用不同的云服务,可以并行破译,加快时间。
 
后记:
云计算是日益兴起的新服务模式,它极大地提供了IT资源的利用率,让越来越多的“草根”体验到了使用巨型计算机的感觉,享受到了专业化的服务。但同时也由于网络经济模式的“虚拟化”与“国际化”,对用户使用云服务做什么,是很难监控的。用它来做口令破译的工具,也许正好击中了这么多年来加密算法生存的“软肋”。
“核技术”可以发电造福人类,也可以作为战争工具毁灭人类,关键看它掌握在什么人的手里,以及掌握它的人如何利用它。
最近,互联网上的内容安全成为信息安全行业的讨论重点,我想对推动云计算服务的政府官员、行业专家、用户们说:云计算服务要尊重用户业务的“隐私”,但用户业务内容对公众安全的威胁同样需要被关注;如何均衡用户业务隐私与公共安全的关系,是整个产业链合理发展的基础