一、数据面临的安全问题
为了让大家直观地了解数据面临的安全问题,先引出一段案例。2014年9月,黑客利用苹果iCloud漏洞,破解了一些好莱坞明星的iCloud账户,他们使用数据恢复工具Fonelab盗取其中的隐私文件,之后曝光了获得的“艳照”。这就是有名的“艳照门”事件。
反思案例,加强个人的道德修养固然重要,我们应该洁身自好,不去拍不雅照。但是现实世界中除了“艳照门”,还有更多个人、组织乃至国家重要数据被窃的事件。因此,对于“艳照门”事件,一言以蔽之:这是数据不设防引发的大事件。我们要牢记:数据泄漏虽是万分之一的几率,但却是百分之百的伤害。
要确保数据安全,就要确保数据的保密性、完整性、不可否认性和可认证性。数据保密性的基础是现代密码学。
我们可以通过加密将可读的信息变换成不可理解的乱码,从而起到保护信息的作用;密码技术还能够提供完整性检验,即提供一种当某些信息被修改时可被用户检验出的机制;基于密码体制的数字签名具有抗抵赖功能,可使人们遵守数字领域的承诺。
二、密码学发展简史
传统的密码学主要用于保密通信,其基本目的是使得两个在不安全信道中通信的实体,以一种使其敌手不能明白和理解通信内容的方式进行通信。现代密码技术已不仅仅限于保密通信的应用了。
【信道】是信号在通信系统中传输的通道,由信号从发射端传输到接收端所经过的传输媒质构成。
随着计算机及网络通信技术的飞速发展,人们进入到了广泛互联的信息时代,电子政务、电子商务、网络通信等应用中,大量信息以数字形式存放在计算机系统里,并通过公共信道传输。信息面临着被非授权读取、截获、篡改、伪造等一系列安全问题。现代密码学成为了确保数据的保密性、完整性、不可否认性和可认证性的基础。
通过引入密钥的加解密机制,加解密算法得以公开,确保密钥的安全性成为确保密码安全性的关键;密码技术还能够提供完整性检验,即提供一种当某些信息被修改时可被用户检验出的机制;基于密码体制的数字签名具有抗抵赖功能,可使人们遵守数字领域的承诺。
通过以密码学为核心的理论与技术来保证数据的机密性、完整性、不可否认性等多种安全属性。密码学的研究与应用已经渗透到人类的几乎所有的社会活动领域,甚至已进入普通民众的日常生活。后续将给大家介绍相关技术原理及应用。
不过,现代密码学研究正受到即将出现的量子计算机的严重挑战。量子计算机的超级计算能力可以轻易地破解RSA和ECC等密码算法,威胁当前的各种密码应用系统。为了应对量子计算机的挑战,基于量子力学原理的量子密码、基于分子生物技术的DNA密码、基于量子计算机所不擅长计算之数学问题的密码以及混沌密码等,成为密码学的新主题。
三、密码学的基本概念
密码体制(Cryptosystem),也称为密码系统,是指明文、密文、密钥以及实现加解密算法的一套软硬件机制。由于密码算法决定密码体制,我们对密码体制和密码算法不加区分。
四、密码体制常见攻击方法
a.穷举攻击
穷举攻击又称作暴力攻击,是指密码分析者用试遍所有密钥的方法来破译密码。穷举攻击所花费的时间等于尝试次数乘以一次解密(加密)所需的时间。例如,对于上面介绍的凯撒密码,攻击者就可以通过穷举密钥1~25来尝试破解。
显然,可以通过增大密钥量或加大解密(加密)算法的复杂性来对抗穷举攻击。例如,将26个字母扩大到更大的字符空间,这样当密钥量增大时,尝试的次数必然增大。
或者,密文与明文的变换关系不再是顺序左移,而是先选定一个单词,然后用26个字母中剩余不重复的字母依次对应构造一张变换表。这样可以增加解密(加密)算法的复杂性,完成一次解密(加密)所需的时间增大,从而增加穷举攻击的难度。当然,这里只是为了举例说明一下基本思想,尽管表中有26!≈4×10^26种变换,但是这样的变换对于目前的穷举攻击依然不在话下。
b.统计分析攻击
统计分析攻击是指密码分析者通过分析密文的统计规律来破译密码。例如,对于上面的凯撒密码就可以通过分析密文字母和字母组的频率而破译。实际上,凯撒密码这种字母间的变换并没有将明文字母出现的频率掩藏起来,很容易利用频率分析法进行破解。
所谓频率分析,就是基于某种语言中各个字符出现的频率不一样,表现出一定的统计规律,这种统计规律可能在密文中得以保留,从而通过一些推测和验证过程来实现密码的分析。
例如,可以通过对密文中出现的各个字母进行统计,找出它们各自的频率。然后根据密文中出现的各个字母频率,与英文字母标准频率进行对比分析,从高到低,依次对应明文,并由此依次尝试,最终推断出密钥,从而破解密文。
推荐大家阅读《福尔摩斯探案集之跳舞的人》或是观看这一集的电视剧,看看福尔摩斯是如何从大量的跳舞的小人图案推导出文字的内容的。
对抗统计分析攻击的方法是增加算法的混乱性和扩散性。
混乱性:当明文中的字符变化时,截取者不能预知密文会有什么变化,这种特性称为混乱性。混乱性好的算法,其明文、密钥和密文之间有着复杂的函数关系。这样,截取者就要花很长时间才能确定明文、密钥和密文之间的关系,从而要花很长的时间才能破译密码。
扩散性:密码还应该把明文的信息扩展到整个密文中去,这样,明文的变化就可以影响到密文的很多部分,这种特性称为扩散性。扩散性好的算法可以将明文中单一字母包含的信息散布到整个输出中去,这意味着截取者需要获得很多密文,才能去推测加密算法。
c.数学分析攻击
数学分析攻击是指密码分析者针对加密算法的数学依据,通过数学求解的方法来破译密码。为了对抗这种数学分析攻击,应选用具有坚实数学基础和足够复杂的加密算法。
d.社会工程攻击
通过威胁、勒索、行贿或者酷刑折磨密钥拥有者,直到他给出密钥,这些社会工程学攻击也是一种破解密钥的途径。
通过上面的分析可知,影响密码安全性的基本因素包括:密码算法的复杂度、密钥机密性和密钥长度等。密码算法本身的复杂程度或保密强度取决于密码设计水平、破译技术等,它是密码系统安全性的保证。
五、评估密码体制安全性的3种方法
1)无条件安全性:如果攻击者拥有无限的计算资源,但仍然无法破译一个密码体制,则称其为无条件安全。香农证明了一次一密密码具有无条件安全性,即从密文中得不到关于明文或者密钥的任何信息。
2)计算安全性:如果使用目前最好的方法攻破一个密码体制所需要的计算资源远远超出攻击者拥有的计算资源,则可以认为该密码体制是安全的。
3)可证明安全性:如果密码体制的安全性可以归结为某个经过深入研究的困难问题(如大整数素因子分解、计算离散对数等),则称其为可证明安全。这种评估方法存在的问题是它只说明了这个密码方法的安全性与某个困难问题相关,没有完全证明问题本身的安全性并给出它们的等价性证明。
对于实际使用的密码体制而言,由于至少存在一种破译方法,即暴力攻击法,因此都不能满足无条件安全性,只能达到计算安全性。
六、密码体制的设计原则
一个实用的密码体制要达到实际安全应当遵循以下原则:
1)密码算法安全强度高。就是说,攻击者根据截获的密文或某些已知明文密文对,要确定密钥或者任意明文在计算上不可行。
2)密钥空间足够大。使得试图通过穷举密钥空间进行搜索的方式在计算上不可行。
3)密码体制的安全不依赖于对加密算法的保密,而依赖于可随时改变的密钥。即使密码分析者知道所用的加密体制,也无助于用来推导出明文或密钥。这一原则已被后人广泛接受,称为柯克霍夫原则。1883年由柯克霍夫在其名著《军事密码学》中提出。
4)既易于实现又便于使用。主要是指加密算法和解密算法都可以高效地计算。
保护数据的不可否认性和可认证性
确保信息的不可否认性,就是要确保信息的发送者无法否认已发出的信息或信息的部分内容,信息的接收者无法否认已经接收的信息或信息的部分内容。
确保信息的可认证性,就是要确保信息的发送者和接收者的真实身份,防止冒充和重放。
实现不可否认性和可认证性的措施主要有:数字签名,可信第三方认证技术等。
(1)什么是数字签名?
在传统的以书面文件为基础的日常事务处理中,通常采用书面签名的形式,如手写签名、印章、手印等,来确保当事人的身份真实和不可否认。这样的书面签名具有一定的法律意义。在以计算机为基础的数字信息处理过程中,就应当采用电子形式的签名,即数字签名(DigitalSignatures)。
数字签名是一种以电子形式存在于数据信息之中的,或作为附件,或逻辑上与之有关联的数据,可用于接收者验证数据的完整性和数据发送者的身份,也可用于第三方验证签名和所签名数据的真实性。
(2)数字签名的特性
数字签名主要有以下特性:不可否认,签署人不能否认自己的签名。不可伪造。任何人不能伪造数字签名。可认证,签名接收者可以验证签名的真伪,也可以通过第三方仲裁来解决争议和纠纷。签名接收者还可通过验证签名,确保信息未被篡改。
根据上述数字签名的特性,数字签名可用于接收者验证数据的完整性和数据发送者的身份,也可用于第三方验证签名和所签名数据的真实性。
(3)消息认证的概念
在信息安全领域中,常见的信息保护手段大致可以分为保密和认证两大类。目前的认证技术分为用户的认证和对消息的认证两种方式。
用户认证用于鉴别用户的身份是否合法,将在后续课程中介绍。消息认证主要是指接收方能验证消息发送方的真实性及所发消息的内容未被篡改,也可以验证消息的顺序和及时性。消息认证可以应对网络通信中存在的针对消息内容的攻击,如伪造消息、篡改消息内容、改变消息顺序、消息重放或者延迟。
消息认证与数字签名的区别在于,当收发者之间没有利害冲突时,消息认证对于防止第三者的破坏来说是足够了。但当收者和发者之间有利害冲突时,单纯用消息认证技术就无法解决他们之间的纠纷,此时需借助数字签名技术。
保护数据的存在性
大家知道:利用密码技术可以将机密信息变换成不可识别的密文。但是,信息经过加密后容易引起攻击者的好奇和注意,诱使其怀着强烈的好奇心去破解密码。如果我们把信息隐藏起来,攻击者难以从公开信息中判断其中是否存在机密信息,从而保证机密信息的安全。
简单地说,加密保护的是信息内容本身,而信息隐藏则掩盖它们的存在性。
1.信息隐藏的概念
信息隐藏,是指将机密信息秘密隐藏于另一公开的信息(通常为称为载体)中,然后将其通过公开通道来传递。
信息隐藏技术的基本思想源于古代的隐写术。大家熟知的隐写方法恐怕要算化学隐写了,如用米粥水在纸上写字,待干后纸上看不出写上的字,然而滴上碘酒后这些字会显现出来。
举一个生活中信息隐藏的例子。在公共宿舍中为了保管好自己的一些重要财务、票据,可能是把这些东西放在某个柜子里,然后给柜子上锁。这实际上就是告诉别人:我这柜子里有重要的东西。
这里介绍一个方法。比如自己的书架上,都是一些书。别人恐怕不会对这些书感兴趣。实际上,其中的一本书只是一个空壳,打开封皮,中空的部分可以放一些重要的东西。而且还可以加把锁。
也就是说如果在对重要信息加密的基础上,再运用信息隐藏的方法,安全性就更高了。
2.信息隐藏的原理
近年来,信息论、密码学等相关学科为信息隐藏提供了丰富的理论基础,多媒体数据压缩编码与扩频通信技术的发展为其提供了必要的技术基础。信息之所以能够被隐藏,可以归结为两点:
a.人的生理学弱点。人眼的色彩感觉和亮度适应性缺陷、人耳的相位感知和缺陷都为信息隐藏在图片、音频或视频等文件中提供了可能。
b.载体中存在冗余。例如多媒体信息本身存在很大的冗余性,网络数据包中存在冗余位。
因此,可以将机密信息进行加密后隐藏在一幅普通的图片(或音频、视频、文本、数据库、文件系统、硬盘、可执行代码、网络数据包)中发送,这样攻击者不易对普通图片产生兴趣,而且由于经过加密,即使被截获,也很难破解其中的内容。
数据文件保护实例
现在我们来分析Windows系统常用文档的安全问题,了解针对这些数据文件的安全保护方法。
Windows系统是多数人常用的系统,大家用它来编辑各种文档、上网、娱乐等,在Windows系统中日常处理的文档类型和格式通常包括:office文档、pdf文档、压缩包文档、图片文档、视频文档、音频文档、电子邮件。
计算机中处理、存储以及传输这些文档时面临的安全问题主要包括:非授权访问,即未经文档的所有人同意,查看、修改、拷贝文档;篡改,文档的内容被非授权修改;伪造或否认,伪造或否认文档的内容;意外损坏,如删除。
(1)设置口令认证、修改权限保护
MicrosoftOffice、WinRAR、Acrobat软件中,都提供了使用打开密码、修改权限密码保护文档的功能。
不过,上述密码(口令)的设置对于文档的保护能力很弱,因为现在网上能够很容易找到破解这些密码(口令)的软件。这些软件本是为用户忘记了密码(口令)而帮助他们恢复的,然而可以恢复自己文档的密码,当然也可以恢复别人的密码了,不过这就不能算是恢复了,这些软件实际上成为了破解工具。
(2)文档加密、隐藏保护
上述给文档增加打开口令和修改权限口令的方法面临被破解的风险,相比较而言,将文档全文加密是比之更安全的方法。首先介绍几种文档加密方法:
a.使用Windows系统自带的BitLocker加密功能。
BitLocker驱动器加密是自WindowsVista后新增的一种数据保护功能,主要用于解决由计算机设备的物理丢失导致的数据失窃或恶意泄漏。该加密功能能够通过加密逻辑驱动器来保护重要数据,还提供了系统启动完整性检查功能。
b.使用VeraCrypt开源加密工具对文件、文件夹或磁盘进行加密。
c.使用S.S.E.FileEncryptor。
再介绍几种文件隐藏的方法:
1)修改文档的属性为“隐藏”,需要在“文件夹选项”→“查看”页框中设置“隐藏文件和文件夹”。
2)直接修改文件名的扩展名,如将doc的扩展名改成bmp,双击后将在绘图中打开该文件,然而无法正常显示该Word文件内容,准确地说,这是起到伪装的作用。
3)使用信息隐藏工具。如可以将信息隐藏在MP3中的软件mp3stego(http://www.petitcolas.net/fabien/steganography/mp3stego);支持4种类型载体文件:bitmaps、text、HTML和PDF的信息隐藏软件wbStego(http://wbstego.wbailer.com)。
(3)文档的备份/恢复与强力擦除
对于找回被误删除的文件,专业的做法是在第一时间关掉计算机,直接拔电源,而不是从“开始”菜单关闭。
然后将被误删除文件所在硬盘拆下来,连接到其他计算机上,而且这台计算机最好暂时禁止任何可能需要对硬盘进行写操作的程序,例如后台的杀毒软件、磁盘碎片整理工具、索引工具等,然后使用恢复软件进行恢复。
这样做的目的在于尽量避免有新的数据被写入硬盘,而无意中覆盖了被误删除文件所在的扇区,造成该文件无法恢复。当然,一般用户在使用恢复软件时也不用这样繁琐。可以在平时就安装好恢复软件,而不是等到要恢复软件时才安装,以免在安装恢复软件时覆盖要恢复的文件。这样,需要恢复误删除文件时可立即进行恢复。
如果希望彻底删除某个文件,让文件无法通过恢复软件恢复,必须使用专用软件对存储设备上该文件相应的存储扇区填充垃圾数据。
(4)文档完整性检测和数字签名
可以下载完整性检测工具,为文档计算哈希值,在传送文档时同时提供该文档的哈希值,以进行完整性检测。
例如,著名安全工具Kali下载页面上,提供了安装包的SHA-1摘要值,用户下载了文件后,可以通过重新计算散列值来判断文件是否发生变化。
一些软件还提供了数字签名功能,例如AdobeAcrobat制作pdf文档的软件中,提供了为文档进行签名的功能。
(5)PGP综合安全防护
PGP(PrettyGoodPrivacy)是一款著名的安全软件。使用的算法包括公钥密码体制的RSA、DSS及Diffie-Hellman算法、对称密码体制的IDEA、3DES及CAST-128算法,以及SHA-1散列函数。软件支持邮件加解密、文件加解密以及文件粉碎等功能。