互联网中的密码如何被保护

中国新通信 / 2019年01月05日 20:49

手机

...体验 网站注册中的密码保护设计细节...

李笛出乘

【摘要】 本文首先会介绍目前比较常见的几种密码,包括像字符串密码,手势密码,指纹密码等。然后从开发人员的角度,说明了两种密码保护方式,分别解释了他们的相关原理。最后,本文提出了几种未来可能会诞生的密码,并且说明使用场景。本文旨在希望读者能够妥善的管理好自己的密码,保护好自己的隐私。

【关键字】 便携式设备 存储

一、引言

随着互联网的不断进步,大多数网站为了管理用户的个人资料,都使用了“个人账户”这个概念。所谓个人账户,就是使用用户名来标识一个用户,并且能够存储用户的其他信息的一个账户。那么,如何来辨识查看或者修改用户信息的人是否是用户本人呢?这里就要使用到密码了。密码和用户名是对应起来的,如果用户在登陆的时候,能够输入正确的密码,我们就相信访问个人账户的是用户本人,并且给予相应的权限。但是,目前网络中存在一些不法分子,他们会通过一些技术手段来盗取用户的密码,以获得用户的相关信息来谋取利益。大多数的用户在没有专业知识的情况下很难意识到自己的行为会带来突破口。因此,本文从开发者的角度来介绍相关的密码保护知识,并且也希望所有的互联网用户能够在上网的时候尽可能的谨慎一些,不要轻易的将个人账户信息透露给其他人,保护好自己的隐私。

二、密码的类型

首先我们将介绍目前使用的较为广泛的几种密码,他们分别是:字符串密码,手势密码和指纹密码。

2.1 字符串密码

字符串密码也就是我们日常生活中在互联网中接触的最终的那种密码,通常以一个字符串来表示。常见的密码有:123456,qazwsx等。通常而言,使用字符串密码的网站会要求用户设置一些相对复杂的密码,比如密码长度大于6,必须包含字母和数字等。这些都是开发者保护用户密码不被盗取的手段,当然,这样的手段还比较初级,仅仅用于防范那些偷看用户输密码的人。有趣的是,2011年重庆晚报发表了中国网民设置最多的密码,他们分别是:abc123, 123456, xiaoming, 12345678, iloveyou, admin, qq123456, taobao, root, wang1234。看看你有没有中枪?

2.2 手势密码

相对来说,收拾密码更多的使用在了移动端上,发挥了移动端触屏的优势。通常手势密码需要用户在九个点中链接任意至少四个点构成图案,这个图案就是用户设置的手势密码。目前,手势密码因其简单方便被广泛的使用者使用。但是手势密码真的安全吗?我们把手势密码和移动端的纯数字密码做一个比较。手势密码最少选择4个点,最多选择9个点,刨除那些不允许绕过的点,可能性一共有389112种,而6位密码数字的可能组合有1000000种,比手势密码的可能性多了一倍还多。因此,手势密码并不一定完全安全。

2.3 指纹密码

指纹密码是在近年来被推广出来的一种密码,主要是利用了每个人的指纹都是不同的这个特性,来判断使用者是否是正确的用户。目前市面上,大多数的手机都已经配备了指纹密码,例如苹果公司的TouchID。事实上,指纹密码因为仅仅依赖人的生理器官,因此其可以被盗取的方式是更多的,包括像克隆指纹,高清照片替换指纹等。但是因为这样盗取的方式本身成本也比较大,因此各手机厂商在商业利益,性能和安全之间做出了平衡才推广了指纹密码。

三、密码保护

在这一节中,我们将介绍两种互联网密码保护的手段。虽然上述我们说的密码类型有三种而且看上去形式上都不一样,但实际上在和服务器交互的时候,所有的密码都会被转换成一串字符的形式。因此在这里,我们仅仅以字符串密码为例。

3.1 HTTPS保护密码

在以前,我们在浏览器中输入网址的时候,一般都是以http://开头的。http的全称是超文本传输协议,提供一种发布和接收HTML页面的方法。但是,使用http协议在传输数据的时候,是没有任何的加密过程的。也就是说,如果我们监听一个网站向后台发送请求,我们可以得到该请求的所有内容,包括用户的账号和密码。

随之,https诞生了。简单来说,他是http的安全版。即在http下加入一层安全套接层(ssl)。ssl是为网络通信提供安全及数据完整性的一种安全协议。我们规定用户使用的浏览器为客户端,网页的后台为服务器,在具体解释https的工作流程之前,我们需要解释一下公钥和私钥的概念,可以把他们想象成锁头和钥匙,我们可以把重要的东西用锁头锁起来,也就是加密,只有钥匙才能够解开锁头,也就是解密。要记住,公钥和私钥是一一对应的,私钥是只有服务器知道的。而公钥,客户端和服务器都知道。下面我们就来看看https的具体工作流程。

首先,客户端发起一个https请求,把它一系列的加密算法告诉服务器。服务器接收到一系列加密算法后,从中选择一种,以证书的形式返回给客户端。证书中包含这公钥,也就是锁头。

客户端得到服务器发来的证书之后,先会去验证证书的合法性。合法性可以通过下述三个方面来验证。第一,验证证书是否在有效期内,证书一般是带有失效日期的,失效的证书是不能被认可的。第二,验证证书是否被吊销了。被吊销的证书会被记录在CRL(证书吊销列表)中,我们只需要查表即可。此外,可以去OCSP(在线证书状态协议)查询证书即时的状态。第三,验证证书是否是上级CA(证书管理机构)颁发的,在验证证书时,浏览器会对证书路径中的所有证书都进行验证,只有全部受信任,整个验证的结果才是受信的。

一般而言,证书需要到相关的权威机构去购买,这也是保证网站合法性的方法之一。如果验证通过,客户端会生成一个随机数,并且对这个随机数使用公钥进行加密,也就是用锁头把随机数锁住,然后将其传给服务器。

服务器得到了加密后的随机数之后,使用私鑰将其解锁,得到了生成的随机数。之后我们在客户端与服务器之间所有的数据传输中都使用该随机数进行加密,因为只有客户端和服务器知道,所以数据就得到了很好的保护。

https加密已经逐渐成为互联网的主流。大多数的网站已经抛弃原先的http而转投向https的环抱中。但是,https的证书需要向一些权威机构进行购买,如果只是一些个人的网页,不涉及到商业的网页,使用https似乎有一些小题大做。在这种情况下,我们要如何保护密码呢?

3.2 JS加密

这里我们需要先介绍一下JS。JS,全称是Javascript,是运行在浏览器前端的一种脚本,能够执行一些复杂的运算操作。对于一些安全要求不高的网站,使用JS加密也能够得到很好的效果。由于一个网页所用到的Javascript代码都是暴露出来的,因此一般通过不可逆的加密算法来加密密码。但是,加密的方法我们是知道的,因此只要使用暴力破解,能够得到用户密码只是一个时间问题。

那么如何来验证密码呢?通常我们在客户端中提交的密码是加密过的,我们记作A(password)。服务器中存储密码的方式为B(salt+A(password))。salt是任意的一串字符串,防止不同的密码在经过A加密和B加密后得到相同的结果。这样,客户端传送A(password)之后,在服务器中只要验证B(salt+getFromClient)和B(salt+A(password))是否一致就可以了,如果一致,可以认为用户输入的密码是正确的。

四、未来的密码

虽然目前来看,指纹加密安全性还不够强,但是不管怎么说,随着科技的发展,未来生物识别技术一定会大放光芒。据报道,支付宝已经正在秘密研发六大生物识别技术:人脸、指纹、声纹、掌纹、笔迹、和键盘敲击。

比如,因为声纹获取成本低,不涉及,因此在基于网络、电话的身份之别应用中,声纹识别有得天独厚的优势。目前来看,声纹识别的问题还在于如何识别原始声音和录音,消除背景音等。掌纹识别,因为其获取难度比指纹要大,因此非常适合用户身份识别,而且其具有唯一性和终身性。除此之外,其他的几种加密方式都有其本身的优缺点和使用场景。

虽然科技在一定程度上能够保护我们的密码不被不法分子所截获,但是其实更为重要的一点是加强自己保护密码的意识,从自身做起来保护自己的隐私。这,才是人类最为强大,最为有力的密码保护方式。

参 考 文 献

[1] Ivan Ristic. Bulletproof SSL and TLS Understanding and Deploying SSL/TLS and PKI to Secure Servers and Web Applications[M]. 人民郵电出版社, 2016.

1.环球科技网遵循行业规范,任何转载的稿件都会明确标注作者和来源;2.环球科技网的原创文章,请转载时务必注明文章作者和"来源:环球科技网",不尊重原创的行为环球科技网或将追究责任;3.作者投稿可能会经环球科技网编辑修改或补充。