正确加密

2015-08-11 12:42
CHIP新电脑 2015年7期
关键词:加密算法攻击者浏览器

按照斯诺登先生的说法,现阶段我们要保护自己的隐私,一个强大的加密系统是唯一的选择,并且只有在正确实施加密的情况下方能凑效。下面,CHIP为大家展示如何保护自己的文件、照片以及基于Web的通信。

通过爱德华·斯诺登曝光的信息我们知道,许多加密方法的可靠性并不如人们想象的那么可靠,并且间谍机构会利用强大的资源对加密的数据进行破解,包括尝试暴力破解。因而,如果我们希望通过一个强大的加密系统来保护自己的数据安全,那么我们首先必须要找到一种可以信任的加密算法。通常,标准的选择是对称加密算法,因为它们是离线数据加密以及网络通信安全(例如HTTS)最主要的加密算法。对称加密算法通常有两种主要的类型:一是块加密,加密过程将把数据划分为相等的块,并分别对每一个块进行加密;二是流加密,它摒弃了块加密将数据划分成块的方法,一气呵成地加密所有的数据,原始数据通过异或(eXclusive OR,简称XOR)操作并与由伪随机数发生器产生的数据流混合。流加密算法RC4被广泛地应用于加密网络连接,但美国国家安全局能够破解通过该算法加密的数据流。在2013年,一个研究小组已经证明了RC4是可以被破解的,只要你拥有足够的数据记录。

如果使用正确的密钥,那么对于攻击者来说块加密是一个很难啃的骨头。首先,加密的密钥越长就越能阻止暴力破解的尝试。例如称为“高级加密标准”(Advanced Encryption Standard,简称AES)或者双鱼(Twofish)之类的最新加密算法,虽然它们彼此使用不同的数学方法进行加密,但是它们都可以提供比较高的安全性。由于它们使用的是最短128位长度的密钥,所以目前已经取代了“数据加密算法”(Data Encryption Standard,简称DES)的标准加密算法,因为DES的密钥长度仅有56位。在无线局域网、电脑和HTTPS方面,AES已经受到了广泛的认同,替代3DES(三重DES加密算法,Triple DES)成为了首选的加密方法。布鲁斯·施奈尔等加密专家都认为,目前128位AES系统可以提供足够的保护,即使应对暴力破解也能够给予强大的保护,而3DES则未必能够胜任。

密钥长度和模式必须兼容

然而,一个糟糕的密码将会让强大的AES变得脆弱,因为密码是加密密钥的基础,加密软件将通过哈希函数将密码转换成一个AES密钥。某些AES加密工具生成密码的模式可能存在问题。例如,通过所谓的电子密码本(Electronic codebook,简称ECB)产生一个“看起来”像输入的密码,特别是Android默认的加密库则更是被专家们点名批评。伯克利加州大学的研究人员发现,70%的开发者使用加密库开发相关应用的加密功能。另有许多加密程序和微软的BitLocker一样使用密码分组链接(Cipher-block chaining,简称CBC)模式,在CBC模式中,每个数据块需要与前一个密文块进行异或后再进行加密。从理论上讲,这种模式更好且更复杂,所以在离线加密时CBC是一个很好的选择。然而,当涉及到网络通信时,情况则有所不同。

涉及到网络时,安全的HTTPS连接是关键。它需要通过两个步骤建立:浏览器与相关的服务器使用非对称加密方式建立加密连接,交换密钥用于加密后续网络通信。接下来,将通过对称的加密方式加密,例如使用AES执行加密网络通信。如果经由RSA非对称方法建立加密连接,那么服务器会生成两个密钥:一个是仅用于解密的专用密钥,密钥将保留在服务器上;另一个公共密钥则仅用于加密信息,它将被提供给每一个浏览器,以便它们可以在与服务器接触时使用。在数学上,用素数生成的密钥对,密钥越长,攻击者成功破解的机率越低。除此之外,服务器和浏览器还可以使用Diffie-Hellma(简称DH)密钥交换协议来传递密钥。

DH密钥交换协议中服务器和浏览器只交换特定值,而不直接传递密钥。它们将使用交换的数值各自独立地计算出对称密钥。密钥的计算通过一个数学函数实现,这与此前的加密算法相同,数值越大越安全。DH密钥交换协议的优点在于,每个会话将生成新的密钥,并且每个会话结束之后密钥将被丢弃。这个过程,被称为“短暂的DH”(ephemeral DH,简称DHE)或“完全向前保密”,它可以避免RSA的一个缺点:如果攻击者窃取服务器的私钥,那么其就可以解密服务器所有网络通信的数据。DHE最新的一个变体ECDHE使用椭圆曲线进行计算,可以减少DHE的长度和计算工作量。这使得它可以更适应网络加密的需要:384位ECDHE密钥的安全性与一个8192位RSA密钥相当。

找出HTTPS的薄弱点

在Chrome或Firefox浏览器上,我们可以检查与服务器的HTTPS加密连接的质量。只需单击浏览器地址栏上的锁头符号,浏览器将列出当前网站的证书以及所采用的加密技术。不同的安全传输协议使用不同的加密技术。目前,从SSL 3.0起各版本的安全协议都被认为是安全的,而最新的版本(TLS 1.2)则被认为是最安全的安全协议。而无论使用哪种HTTPS连接,服务器应该完全避免使用过时的SSL 2.0。不幸的是,SSL 3.0协议允许系统通过版本回滚来继续使用SSL 2.0,而这种模式可以通过一个中间人攻击(Man-In-The-Middle,简称MITM)来激活。通过MITM攻击,攻击者可以截取浏览器和服务器之间的加密通信,操纵它并分析结果,以便确定可以被利用的薄弱点。

像贵宾犬(Google介绍的一种攻击方法)之类最新的HTTPS攻击方法,主要依赖于SSL 3.0中CBC模式的弱点,也就是SSL 3.0对数据块随机进行填充的缺陷,而从TLS 1.0开始,该缺陷已经不再存在。术语“填充”指的是向最后的数据块填充数据,这对于块加密技术来说通常都是必须的,因为划分数据块进行加密,要求所有的数据块都必须是相同的尺寸。虽然填充区填充的数据将同样被加密,但消息认证码(Message Authentication Code,简称MAC)并不保护其完整性。填充区最后一个字节总是包含填充区的长度,这可能是256个不同的值。由于缺乏完整性检查,所以在一定范围内修改最后一个字节,数据仍有可能被服务器接受。因而,MITM攻击者可以通过最后一个字节的测试,检测填充区的长度并判定MAC的正确位置。

攻击者现在知道了加密数据中MAC的位置,而且也知道自己的实际目标:会话Cookie。获得这个Cookie,他就可以通过服务器的验证。为了将会话Cookie解密,攻击者将再一次利用上述方法,复制会话Cookie密文的最后一个字节到加密块含有填充长度的区域。接下来,开始发出请求,每一个请求需不断改变填充字节数。当字节数与填充区长度(即Cookie的字节)匹配后,即可完成解密操作。然后,他重复此过程解密会话Cookie的倒数第二个字节,并不断循环直至Cookie被完全解密。

由于SSL 3.0被发现存在上述缺陷,所以作为应急措施所有最新的浏览器都停用SSL 3.0。从技术上讲,采用伽罗瓦/计数器模式(Galois/Counter Mode,简称GCM)的TLS 1.2是一个很好的解决方案。GCM的每一个数据块都包含完整性标签,而且完整性标签是结合输入数据使用异或操作产生的,这使得贵宾犬之类的攻击不能再起作用。

相关信息

对称加密方法

有两种不同的类型:一种是类似RC4这样的流加密,使用一个XOR(异或)将数据逐位与随机值相结合;另一种是块加密,将数据划分为相同大小的块,每一个块可以经过几轮的加密。

AES:选择正确的模式

各种不同模式的AES加密质量有所不同,电子密码本(ECB)不是一个很好的选择,因为相同的明文会产生相同的密文。密码块链接(CBC)改变每一个块的密钥,生成随机的密钥输出。

Web正确的密钥长度

HTTPS使用非对称加密方式传递密钥和签名,512位的密钥可以很容易被破解,1024位的密钥是否安全仍有争议,但2 048位长度的密钥目前被认为是安全的。如果利用椭圆曲线(EC)加密,则较短的密钥就可以提供足够的安全性。

相关信息

检查网络加密强度

单击地址栏的锁头符号,浏览器将显示有关HTTPS连接的详细信息。具备一定的相关知识,即可确定网络加密的强度。

了解HTTPS版本的弱点

HTTPS存在不同的版本,SSL 2.0被认为是不安全的,RC4加密有可能被破解,CBC模式和压缩功能的缺陷有可能被用于实施中间人攻击,TLS 1.2是目前最安全的,如果服务器停用压缩功能。

进行身份验证后加密

HTTPS中消息认证码(MAC)被用于保护数据的完整性,在CBC模式下最后的数据块将通过填充操作以确保数据块的尺寸一致,填充区域的最后一个字节用于指定填充的长度。而在解密的过程中,将被用于识别MAC的位置。

加密文件

对于云端的数据、硬盘驱动器和文件,不同的情况下我们需要使用各自专用的加密工具。

许多重要的个人信息、文档和媒体文件都是以数字形式存储的,这些数据以及所在的存储介质都是我们必须妥善保护的。有许多采用AES和Twofish算法的加密工具可以供我们选择,而我们必须做的是根据不同的情况精选加密工具。通常对于不同的加密对象,我们需要选择不同的加密工具。这是因为,加密一个硬盘驱动器所需的加密操作与加密一个文件截然不同。

长期以来,TrueCrypt都是个人用户的首选工具,它可以对整个驱动器进行加密或备份数据到加密的容器中,但是该工具目前已经停止开发。因而,以TrueCrypt的代码为基础的另一个开源项目VeraCrypt(veracrypt.codeplex.com)成为了当之无愧的接班人。而且,VeraCrypt在TrueCrypt的基础上进一步地发展,加密的质量有所提高。例如VeraCrypt改善了从密码生成密钥的方式。不采用CBC扩展模式进行全盘加密,而是采用XTS模式。XTS加密原则上和ECB差不多,但是它是一个结合了扇区号和硬盘驱动器偏移量的加密方案。对于XTS所能够提供的安全性,专家们仍然没有得出结论。因此,VeraCrypt提供使用多种算法循环加密的选项,例如首先使用AES,然后再利用Twofish进行加密。

随机数和强密码

MAXA Crypt Portable(www.maxa-tools.com/mcse.php)和AxCrypt(www.axantum.com/AxCrypt/)这样的免费程序可以很好地完成加密单个文件的任务。作为一个开源项目,AxCrypt很值得推荐,但在安装过程中需要特别注意,该软件安装程序将尝试安装其他的一些附加工具。而对于一般用户来说,所有额外的软件都是不必要的。软件的使用很简单,右键单击文件或者文件夹,选择加密并输入密码(或打开密钥文件),AxCrypt将开始执行操作。该工具在CBC模式下使用128位AES算法进行加密,为了产生一个安全的初始化向量(Initialization Vector,简称IV),AxCrypt安装了一个伪随机数发生器。对于CBC模式来说,IV必须是真正的随机数,否则加密质量将被削弱。MAXA Crypt Portable也采用类似的做法,但它的加密方案密钥长度可以长达256位。这是非常安全的,但将需要比较长的时间才能够完成加密。

如果准备将个人信息上传到云存储服务,例如Google或Dropbox的云服务,那么Boxcryptor(www.boxcryptor.com)可以提供适当的保护。该工具将在系统中创建一个虚拟驱动器,然后将用户指定的云存储服务离线文件夹与之关联起来,加密其中的所有文件,必要时用户也可以通过简单的单击加密和解密文件。以往,CHIP曾经多次在不同的文章中为大家介绍如何使用该工具加密云端数据。

相关信息

安装和使用加密驱动器

和TrueCrypt一样,VeraCrypt通过向导帮助用户创建加密驱动器,另外也可以保护现有的磁盘分区。

生成加密密码

MAXA Crypt Portable是一个免费的程序,提供快速使用AES算法加密文件的功能。此外,该工具还提供产生随机密码的功能,按一下按钮即可生成一个足够安全的密码。

加密云端文件

Boxcryptor可以在将文件上传到Dropbox或者Google等云服务之前加密它们,软件默认使用256位密钥的AES加密系统。

密码管理器

长密码更安全但不容易记忆,因而我们需要一个能够生成安全密码并能够管理它们的工具,以便能够在使用各种加密工具时使用高强度的密码。

网络加密

如果身份验证方式被破解,那么即使是最好的网络加密也是没有用的,而除此之外,网络加密的成败基本取决于密钥的大小。

一个安全的网络加密方法是很重要的,但它并不是万能的。证书在其中发挥着核心作用,因为浏览器需要通过服务器的证书来验明正身。通过证书用户可以确定自己所登录的确实是网上银行的网站,而不是某个页面看起来一样,但实际上却是会骗取用户登录信息的钓鱼网站。通过浏览器可以在网上查询证书,证书颁发机构(Certificate Authorities,简称CA)提供在线等证书列表系统。不幸的是,Comodo(最大的认证机构之一)等一些CA已经被证明是不值得信任的,甚至曾经出具假证书,这种性质恶劣的行为为实施中间人攻击的攻击者提供了便利。最近一次相关的事件是预装在联想笔记本电脑上的广告程序快鱼,该程序在Windows中安装了一个RSA加密的根证书。它的私钥设置了一个非常容易被猜到的密码,并且可以很容易地提取出来,这导致攻击者可以很容易地利用该证书拦截并操纵与该软件相关的网络通信数据。那些受到这一问题影响的用户必须执行一个在线检查,确定是否有必要手动删除证书,以确保自己不会成为MITM攻击的受害者。

浏览器的防护措施

Mozilla和Google等一些浏览器厂商都开始修复证书制度,这些新的浏览器将保存自己的名单,并附加其他额外的保护机制:通过HTTP严格的安全传输(HTTP Strict Transport Security,简称HSTS)可以防止SSL剥离,SSL剥离是一种MITM攻击方式,通过切换HTTPS连接到未加密的HTTP连接实施攻击。通过HTTP公共密钥识别(HTTP Public Key Pinning,简称HPKP)可以减少虚假证书的影响,在第一次访问网站时浏览器将保存服务器发送的识别码,如果浏览器稍后再次访问该网站,那么该网站的服务器必须同时使用证书和识别码来证明其身份。

对网络加密的安全性起决定性作用的另一重要因素是诸如RSA等非对称加密技术的密钥长度。很长一段时间以来1 024位的密钥被认为是安全的,但是现在情况已经有所改变。威斯特伐利亚大学互联网安全预警系统项目的负责人多米尼克·彼得森建议人们使用2 048位系统,对于拥有足够的计算能力并且比较容易受到黑客攻击的网站,他建议使用4096位的密钥,但是这种长度的密钥目前尚没有加密程序实现。许多用户使用GnuPG(GNU Privacy Guard,简称GPG)加密工具,它可以生成专用的RSA密钥,用户可以将公钥发给所有需要给自己发送加密邮件的朋友。

相关信息

检查有问题的证书

伪造或被破解的证书将可能被用于实施网络攻击,通过在线服务(filippo.io/Badfish)我们可以检查当前的系统是否存在类似的证书。

HTTPS的最佳浏览器

许多新的浏览器通过额外的功能提高网络连接的安全性,HPKP检查证书两次,HSTS在条件允许的情况下强制使用HTTPS。另外,HSTS不受信任的连接提示进一步地提高了安全性。

HSTS阻止不安全的连接

Firefox、Chrome和Safari浏览器已经实现了提示HSTS不受信任连接的功能,如果用户访问一个认证信息不安全的位置,那么浏览器将拒绝访问并提示相关的信息。

强大的邮件加密工具

Gpg4win(www.gpg4win.org)可以帮助用户生成安全邮件的通信密钥,我们应该设置密钥长度为2 048或3 072位。

猜你喜欢
加密算法攻击者浏览器
基于微分博弈的追逃问题最优策略设计
反浏览器指纹追踪
正面迎接批判
环球浏览器
基于小波变换和混沌映射的图像加密算法
有限次重复博弈下的网络攻击行为研究
Hill加密算法的改进
对称加密算法RC5的架构设计与电路实现
基于Arnold变换和Lorenz混沌系统的彩色图像加密算法