如何文件加密传输(网络安全中如何做好加密(内容以及传输链路))

结合上一讲我们提到的网络安全的凭证,这讲主要是来介绍加密是怎么做的,加密是网络安全环境中保护用户隐私信息的一种有效手段,明文密码是大忌,近些年爆发的一些安全事件,不知道大家有没有听说,用户密码被泄露,黑客利用撞库,尝试破解用户其他app的密码,以此进一步的危害客户的信息,但是如果我们在服务器端做好了加密工作,这将大大减少这种风险,或者可以说,基本杜绝被破解的问题。为什么加密有这么大能力,那么我们怎么做,才是最安全的加密方式呢?加密,没有绝对安全的加密,只能说牺牲一定的性能,使用复杂的算法使得破解的难度大大增加,以此来吓退黑客。毕竟批量破解的代价太大。

目前的加密方式基本可以分为两种,端保密,链路保密。

客户端保密

意义:为了保证密码不在服务端被滥用

但是,在传输链路必定是不安全的前提下,无论客户端做什么防御措施,最终都会沦为无用功。

真正防御性的密码加密存储应该在服务端中进行,但这是为了防御服务端被攻破而批量泄露密码的风险,并不是为了增强传输过程的安全性

服务器保密

方式1:哈希摘要+盐

客户端加盐只需要取固定的字符串即可,如果实在不安心,可以使用伪动态的盐值 (比如用户的名称,日期等自然变化的内容)

缺点:但是如果被截取到以后,只需要针对弱密码加盐就可以例举出彩虹表,意义不大

解决方案:引入慢哈希函数来解决。(主要是在客户端采用,执行时间较长

为了应对暴力破解法,我们需要非常耗时的而不是非常高效的哈希算法。BCrypt和PBKDF2算法应运而生。

这两个算法最大的特点是我们可以通过参数设置重复计算的次数,重复计算的次数越多耗时越长。如果计算一个哈希值需要耗时1秒甚至更多,那么黑客们采用暴利法破解密码将几乎不再可能。破解一个6位纯数字密码需要耗时11.5天,更不要说高安全级别的密码了。

加密

加密算法的两大类型:对称与非对称

对称加密算法

因为加密和解密都使用相同的密钥,那么当通讯的成员数量增加时,为了保证两两通讯都能采用独立的密钥,密钥数量就要与成员数量的平方成正比,这必然就会面临密钥管理的难题。

非对称加密算法

非对称加密算法把密钥分成了公钥和私钥,公钥可以完全公开,无需安全传输的保证。私钥由用户自行保管,不参与任何通讯传输。

公钥加密,私钥解密,这种就是加密,用于向私钥所有者发送信息,这个信息可能被他人篡改,但是无法被他人得知。举个例子,如果甲想给乙发一个安全保密的数据,那么应该甲乙各自有一个私钥,甲先用乙的公钥加密这段数据,再用自己的私钥加密这段加密后的数据,最后再发给乙。这样确保了内容既不会被读取,也不能被篡改

如何文件加密

私钥加密,公钥解密,这种就是签名,用于让所有公钥所有者验证私钥所有者的身份,并能用来防止私钥所有者发布的内容被篡改。但是它不用来保证内容不被他人获得。

不管加密还是解密,非对称加密算法的计算复杂度都相当高,性能比对称加密要差上好几个数量级

加解密的性能不仅影响运行速度,现行的非对称加密算法都没有支持分组加密模式。非对称的加密,明文长度与密匙长度具有相关性,多长的密匙决定了能够加密多长的明文。

通常的做法是,用非对称加密来安全地传递少量数据给通讯的另一方,然后再以这些数据为密钥,采用对称加密来安全高效地大量加密传输数据。这种由多种加密算法组合的应用形式,就被称为“密码学套件”,非对称加密在这个场景中发挥的作用被称为“密钥协商”。

通常的做法是,用非对称加密来安全地传递少量数据给通讯的另一方,然后再以这些数据为密钥,采用对称加密来安全高效地大量加密传输数据。这种由多种加密算法组合的应用形式,就被称为“密码学套件”,非对称加密在这个场景中发挥的作用被称为“密钥协商”。

数字签名的安全性仍然存在一个致命的漏洞:公钥虽然是公开的,但在网络世界里,保证每一个获取公钥的服务,拿到的公钥并不一定就是授权服务器所希望它拿到的,在网络传输是不可信任的前提下,公钥在网络传输的过程中可能已经被篡改了,所以如果获取公钥的网络请求被攻击者截获并篡改,返回了攻击者自己的公钥,那以后攻击者就可以用自己的私钥来签名,让资源服务器无条件信任它的所有行为了。在网络传输是不可信任的前提下,公钥在网络传输的过程中可能已经被篡改了,所以如果获取公钥的网络请求被攻击者截获并篡改,返回了攻击者自己的公钥,那以后攻击者就可以用自己的私钥来签名,让资源服务器无条件信任它的所有行为了。

您可以还会对下面的文章感兴趣

使用微信扫描二维码后

点击右上角发送给好友