目录
十六、安全
16.1 引言
我们生活在信息时代,需要保存生活中的各种信息。信息是一种有价值的资产,作为资产,信息需要保护,免受攻击。为了安全,信息需要避开未授权的使用(机密性),保护信息不受到未授权的篡改(完整性),并且对于得到授权的实体来说是需要时可用的(可用性)。
16.1.1 安全目标
首先讨论3个安全目标:机密性、完整性和可用性。
1. 机密性
机密性是指没有得到授权的实体无法使用或者得到信息的内容。机密性也许是信息安全中最通常的方面,机密性不仅适用于信息的存储,在信息的传输中也得到了应用。当我们将信息发送至远程计算机或从远程计算机检索时,需要在传输时对信息进行隐藏。
2. 完整性
完整性指没有得到授权的实体无法改变信息的内容,也就是说,信息的变化只应该由授权的实体通过授权的机制来完成。例如,银行账户余额只有本人能够进行合法的存取,不允许其他人或是本人非法改变。完整性冲突不一定是由于恶意行为造成的,也可能是系统出现的问题造成意料之外的改变。
3. 可用性
一个组织创建和存储的信息对授权的实体来说应该是可用的。如果信息不可用,那么信息就是无用的。信息对于授权实体来说必须是可用的,不可用性对组织是有害的,就像缺乏机密性和完整性一样。例如,你不能访问你的银行账户,这会带来什么问题?
16.1.2 攻击
三个安全目标会受到安全攻击的威胁。攻击可以有不同的分类方法,但是下面按照安全目标进行分类。
16.1.2.1 威胁机密性的攻击
1. 嗅探
嗅探是指对数据的非授权访问或侦听。例如,一个通过因特网传输的文件可能含有机密信息,一个非授权的实体可能侦听到传输,并使用其中的内容谋取利益。可以使用加密技术使信息对于侦听者来说难以理解。
2. 流量分析
通过加密技术可以使数据对侦听者来说难以理解,但是他们仍然可以通过在线流量监控获得其他类型的信息。例如,他们能找到发送者和接收者的电子地址,收集多对请求和响应,猜测交易的本质。
16.1.2.2 威胁完整性的攻击
1. 篡改
侦听或访问信息后,攻击者篡改信息的内容,使得信息对他们有利。例如,篡改银行账户的余额。有时攻击者可能仅仅是删除或延迟这个信息来危害整个系统或使他们受益。
2. 假冒
当攻击者冒充他人时,假冒或哄骗就发生了。例如,攻击者伪装成银行网站使受害者向自己汇款。
3. 重放
攻击者得到用户发送信息的副本,过后设法重放它。例如,一个用户向银行发送了给攻击者汇款的请求,之后,攻击者再次发送这条消息,希望得到另一次汇款。
4. 抵赖
抵赖是一种不同于其他类型的攻击,它是由通信双方中的一个来进行的:发送者否认发送了消息或者接收者否认自己收到消息。例如,银行否认用户在银行进行了一次存款,或者用户否认了从银行取出了存款。
16.1.2.3 威胁可用性的攻击
1. 拒绝服务
拒绝服务(DoS)攻击是很常见的,它可能减慢或完全中断系统的服务。攻击者能使用这几种策略取得这样的效果:发送大量虚假的请求使系统异常忙碌而崩溃;或者他们监听并删除服务器对客户端的响应;或者他们使客户端多次发送请求使服务器变得非常忙碌。
16.1.3 服务与技术
为了达到安全目标和防止受到安全攻击,ITU-T定义了一些安全服务的标准。这些服务中的每一个都是为了在维护安全目标时防止一个或多个攻击而设计的。实际完成安全目标需要一些技术手段,如今流行的两种技术:一种是非常普通的密码术;一种是特殊的隐写术。
1. 密码术
密码术意思是“秘密书写”。我们使用这个词是指为了信息安全并对攻击免疫而进行转换的科学和艺术。在过去密码术只是指使用密钥进行消息的加密和解密,但如今被定义成三种不同的机制:对称密钥密码、非对称密钥密码和散列。
2. 隐写术
隐写术意思是“掩饰书写”。密码术就是通过加密将消息中的内容隐藏起来;而隐写术是通过在消息上覆盖其他内容而隐藏消息。本书只介绍了简单的密码术。
16.2 机密性
机密性可以通过使用密码达到,密码术可以分为两大类:对称密钥密码和非对称密钥密码。
16.2.1 对称密钥密码术
对称密钥密码术使用了同一个密钥进行加密和解密,并且这个密钥可以用来进行双向通信。对称密钥密码也称为保密密钥密码术。
从Alice到Bob的原始消息称为明文,而通过通道发送的消息称为密文。为了从明文创建密文,Alice使用了加密算法和一个共享密钥。
为了从密文创建明文,Bob使用了解密算法和相同的密钥。
在对称密钥密码术中,加密和解密是互逆的两个操作。对明文加密再解密会得到明文,对密文解密再加密会得到密文,这两个操作是可以抵消的。
我们可以把对称密钥密码分成两大类:传统对称密钥密码和现代对称密钥密码。传统对称密钥密码很简单,面向字符的密码对现在的标准而言是不安全的,现代对称密钥密码是更安全的复杂的面向位的密码。
16.2.1.1 传统对称密钥密码
传统对称密钥密码分为替换密码和移位密码。
1. 替换密码
替换密码用一个符号替换另一个符号。例如,用'F'替换'A'、用'4'替换'6'等。替换密码主要分为单字母密码和多字母密码。
单字母密码:
在单字母密码中,相同的字符在密文中用相同的字符替换,与该字符在明文中的位置无关。例如,如果'A'会被替换成'F',那么所有的'A'都会替换成'F'。明文中的字符和密文中的字符是一一对应的。
最简单的单字母密码就是加法密码。在字母表中,每一个字母都赋予了一个模26中的整数,在进行加密时,每个字母向上(或向下)移位k个字符,被另一个字符所替换。尤利乌斯·凯撒(Julius Caesar)与他的军官使用密钥为3的加法密码进行通信,所以,加法密码有时也称凯撒密码。在加法密码中,明文、密文和密钥都是模26中的整数。
多字母密码:
在多字母密码中,字符的每一次出现都使用不同的替换码。明文和密文中的字符是一对多的,明文中不同位置的相同字符在密文中可能会被替换成不同的字符。多字母密码具有可以隐藏原有语言字母频率的作用。
为了创造一个多字母密码,我们对每一个密文字符的确定不仅取决于相应的明文字符,还取决于它在明文中的位置。这意味着我们的密钥应该是子密钥流,这个子密钥流中的每一个子密钥都在某种程度上取决于该子密钥加密的字符在明文中的位置。
为了更好的解释密钥的位置依赖性,讨论一个叫作自动密钥密码的多字母密码。在这个密码中,密钥是一个子密钥流。第一个子密钥是事先设定好的值,第二个子密钥是明文中第一个字符的值,第三个子密钥是明文中第二个字符的值,以此类推。这些子密钥都是在加密过程中通过明文字符自动创造的。
2. 移位密码
移位密码不是用一个符号替换另一个符号,而是改变符号的位置。明文中的第一个字符可能出现在密文中