《局域网交换机安全》一1.4 密码学(Cryptography)

简介:

本节书摘来自异步社区《局域网交换机安全》一书中的第1章,第1.4节,作者【美】Eric Vyncke , Christopher Paggen, 更多章节内容可以访问云栖社区“异步社区”公众号查看

1.4 密码学(Cryptography)

局域网交换机安全
密码学以计算机算法的形式实现相关数学函数,并应用在数据上。

如图1-4所示,当密码学的主要目标是保密时,该过程被称为加密和解密。被保护的文本称为明文(plain text或clear text)。经过加密以后,这一被保护的文本被转换成密文(cipher text)。

image

因为该数学函数及其计算机实现是公开的或者是可以被逆向工程的,所以加密算法引申为另一个数学参数:被称为密钥(key)的秘密值(secret value)。仅有密钥的拥有者才能解密密文——这意味着该密钥只能被既定的接受者所知。密钥分发(Key-distribution)协议仅把密钥“交给”既定的接受者。

密码学的另一个用途是用来验证数据来源的有效性。数字签名(digital signature)就是一个具体的例子:仅有一个实体可以完成该签名,这被称为不可否认性(nonrepudiation),因为签名者不能否认其签名操作。

网络中不常使用数字签名,而是依赖于数据起源(data-origin)验证(validation)的一种较为宽松的形式——(通常是共享同一密钥的)多个实体组成一个群组。随后,该群组中的任一成员都可发出一条已经认证的消息。这一形式主要提供了完整性。

一个加密系统就是一个运用了密码学(技术)的系统。若加密和解密的密钥相同,则称之为对称加密系统。反之,称之为非对称加密系统。

注意:

尽管安全常依赖于密码学来提供保密性和完整性,但运用密码学并不足以确保安全。

密码学对可用性毫无帮助。
尽管有时密码学技术对认证有所帮助,但它不能提供授权和审计。因此,对于访问控制来说,仅有密码学技术是不够的。
实施者必须以正确的方式来使用密码学技术。
一个糟糕的密码学运用的例子是:IEEE 802.11在无线加密协议——有线等效保密(Wired Equivalent Privacy,WEP)中错误地使用了一个带有公认缺陷(vulnerability)的密码学算法。这在无线网络领域中引发了多个缺陷,一直到IEEE发布了正确使用密码学技术的新标准才得以消除。

1.4.1 对称加密系统

对称加密系统对于加密和解密操作使用一个相同的密钥。对称加密系统包括对称加密以及哈希运算辅助下的消息认证。

1.对称加密
如图1-5所示,对称加密是指当加密和解密时,使用同一密钥。该密钥被称之为共享密钥(shared key)或会话密钥(session key)。
image

许多网络都使用多重对称加密算法:从较新的AES(高级加密标准)到较老的DES(数据加密标准)或RC4。

由于所有的实体必须使用相同的共享密钥,对密钥进行安全的分发就成为必然。实际上,若共享密钥泄露,保密性则不复存在。

密钥分发可以两种方式进行。

带外(Out of band):该密钥可以秘密地经由实际数据通信方式之外的渠道来发送(例如,使用邮政或传真发送)。
带内(in band):该密钥也可秘密地与被其加密的数据使用相同的信道来传递。这方面存在多个密钥安全分发算法:IPSec使用的DH(Diffie-Hellman)算法、Microsoft质询握手认证协议版本2(Microsoft Challenge Handshake Authentication Protocol version 2,MS-CHAPv2)以及传输层安全(Transport Layer Security,TLS)等。出于安全考虑,它们一般都与认证结合使用。
2.哈希函数(Hashing Function)
对称加密系统的目的并非仅仅只是加密,它还兼具检查数据来源的功能。图1-6描述了另一个对称加密系统:加密哈希函数。这是一个应用于长数据块的数学函数,其计算结果通常是仅为128位或196位的小块数据。

该加密哈希函数一定有以下明确属性。

输入中单个比特的改变一定会得到一个完全不同的哈希(输出)。
从哈希(输出)一定不能逆向计算出其原始输入。
image

3.哈希消息认证码(Hash Message Authentication Code)
如图1-7所示,当加密的哈希函数与共享密钥结合使用时,可被用来证实(validation)(有时候也称为认证(authentication))消息数据的起源(data-origin)。这被称之为基于哈希的消息认证码(Hash-based Message Authentication Code, HMAC)。使用它的内因就是:只有知道共享密钥的唯一实体才可生成该HMAC,绝无其他实体可以生成。这证明该消息一定是被拥有该共享密钥使用权的实体生成。

image

消息的发起者将共享密钥和该消息叠加起来(concatenation)计算哈希值,该哈希值随后与消息一起被发送给所有接受者。接受者执行相同的计算,并将计算得出的哈希值与接收到的哈希值进行比较。如果匹配,则可以证明以下内容。

完整性:若该消息在传输中被更改,则加密的哈希值也将不同。
数据起源(认证):**若不持有该密钥,没有任何人有能力在发送数据之前计算出该加密的哈希值。
这不是数字签名,任何共享密钥的拥有者都可以计算机出该哈希值。因此,所有该密钥的拥有者,都可以推脱是该密钥的另一个拥有者计算出了哈希值。这意味着即使真地计算了加密的哈希值,人们还是可以对自己生成的消息加以否认。如果使用数字签名,无人可以否认他发出过该消息(这就是下一节要讨论的不可否认性(nonrepudiation))。

1.4.2 非对称加密系统

非对称加密是密码学技术领域的新成员(出现于20世纪70年代),拥有许多有趣的属性,尤其是在认证和密钥分发方面。图1-8所示为非对称的加密——加密和解密分别使用了一个不同的密钥。

image

与对称加密相比,非对称加密仅有的逻辑区别就是——使用两个不同的密钥。这两个密钥形成一个密钥对,一为公钥(public key),一为私钥(private key)。

在该密钥系统中,一个单独的实体拥有并使用私钥。所有其他实体使用公钥。尽管两个密钥之间存在有数学关系,但就计算而言,从公钥推算出私钥是极为困难的——可能需要上千台计算机工作几个世纪。

非对称的加密系统具有以下用途。

辅之以加密,可实现保密性。
辅之以签名,可实现完整性和认证。
最常用的加密系统是RSA——是以其发明者Rivest、Shamir和Adelman命名的。RSA可以用于保密性、完整性以及认证。在接下来的章节里,我们将会一一阐明。

1.非对称加密系统与保密性
可使用非对称加密系统来确保消息的保密性。目标是每个实体都可以生成一个消息去往一个目的地,仅有预期的目的地(的接收者)能够解密并阅读该消息。在一个虚构的网络设置中,如图1-9所示,消息的发出者Alice,使用Bob的公钥来确保,只有Bob,即该消息的预期接受者,能阅读该消息。由于每个实体都可以获得Bob的公钥,他们就能用它来加密消息。另一方面,仅有Bob持有自己的私钥,因此也只有他才可以解密密文以接收原始消息。

image

尽管该非对称加密的应用颇为有效,但与对称加密算法相比,其性能更低。它很少用于加密大块(bulk)消息数据;相反,它仅仅被用来加密Alice发送给Bob的共享密钥。该共享密钥进一步被用来对称加密大块数据。

这是用来完成密钥分发的方法之一。例如,TLS就使用该方法。

2.非对称加密系统与完整性和认证
图1-10描述了Alice使用自己的私钥加密,以确保每个接收者都可以解密该消息。但是,这同样也证明了只有Alice才能生成该消息。事实上,仅有Alice拥有自己的私钥,所以只有用Alice私钥加密的数据,才可以用她的公钥来解密。

image

因为Alice不能否认该加密计算过程(只有Alice持有她自己的私钥),这被称为一个签名。这与对称加密系统完全不同,后者的HAMC是可以被否认的。

使用非对称加密系统进行认证慢如蜗牛。因此,不对整个消息进行签名,而是仅对该消息的哈希值签名。这对消息的发起者和接收者来说都要快得多。接受者可以先计算出接收消息的哈希值,然后,解密收到的被加密的哈希值1。若计算得出的哈希值与解密得出的哈希值比对结果相同,则可以证明以下方面。

认证:只有密钥的拥有者,才能对原始哈希值进行加密2。因此,该消息的发起者不能否认他发出过的消息。
完整性:若该消息在被收到之前已被更改,计算得出的哈希值与解密得到的哈希值不会匹配。这表明消息遭到篡改。由于消息的篡改可以被检查出来,因此消息发送时的完整性得到了保障。
3.密钥的分发和证书
非对称加密系统更易于保障密钥的分发——每个实体仅需要分发自己的公钥(其他任何人都可以正大光明地访问它们,无需入侵该系统)。

剩下的问题就是要确保Bob的公钥真正属于他本人,而非另外一个黑客。否则,Alice用一个黑客的公钥加密自己的消息并发给Bob,这个黑客可以轻而易举地使用自己的私钥来解密Alice的消息。

公钥及其拥有者之间的绑定需要使用数字证书(digital certificates)。一个数字证书(通常遵从ITU-T X.509版本3的格式),是包含Bob的公钥和姓名的一小片数据。这片数据进而被Alice、Bob以及所有其他实体都信任的某个实体施以数字化的签名处理。这一被信任的实体我们称之为认证机构(Certification Authority, CA),它也是证书的发行者。

与证书发行有关的协议和流程被称之为公钥基础设施(Public-Key Infrastructure, PKI)。一个PKI主要用来处理证书的登记(enrollment)、续订(renewal)、吊销(revocation)。

登记:一个主体(subjects)如何才能为其公钥获得一个证书呢?这是一个技术问题,但更为主要地说,是一个流程上的问题。CA如何才能验明正身呢?
续订:就像护照和信用卡一样,数字证书有一个有效期;因此,证书必须被定期更新,一般续订周期为一年。
吊销:如果一个主体的私钥已经泄密(例如,因为黑客入侵)或存在潜在的泄密危险(例如,发给Cisco厂家做更换的一台Cisco路由器的NVRAM中存储了密钥,在运输期间该密钥对就有泄露可能),CA必须吊销该密钥对以及数字证书。与此同时,还必须通知每个其他实体这一吊销行为。这还牵涉到许多规程,以防止一个未经授权的实体来实施吊销。
image

“既昂贵又复杂”是对X.509证书的一种常见误解。微软的Windows servers软件自带有一个CA,且活动目录可以依据证书来进行认证。在一个域内,还可以运用组策略来方便地分发证书。

这对Cisco IOS路由器来说也同样适用,自Cisco IOS 12.3T以及12.4起,大多数路由器都可以担当证书服务器的角色(即可以发布(issue)和吊销针对路由器的证书)。在网络中,这一实现对于数字证书的大多数应用已经足矣。围绕该证书服务器,还应该追加一些组织级的流程,例如,在对一台路由器登记(enrolling)之前,需要规范验证内容。

对于一个企业或组织内部的用户来说,Windows CA和Cisco IOS证书服务器便于管理,且成本低廉。当数字证书必须在一个可管理的组织之外应用时,那就另当别论了(例如,一个必须被世界范围的浏览器访问的电子商务站点),这需要引入一个能被所有浏览器都识别的根(root)CA。这一根CA通常价格高昂,但是对大多数网络应用来说,并非是必需的。

共享密钥的使用部署起来也许容易,但后续维护却相当复杂:增加或移除一个实体就意味着需要变更所有实体的配置。

1.4.3 针对加密系统的攻击

一个加密系统即使具有坚实的数学基础,对于以下类型的攻击来说也是脆弱的。

强力攻击(Brute-force Attack):尝试所有可能的密钥值,直至有一个成功。这对当今128位或更高位数的密钥来说几乎是不可能的(需要2的128次方次的计算量)。
字典攻击(Dictionary Attack):不是去尝试所有可能的密钥值,而仅仅是去尝试它们中的一些——被编码为ASCII码的英文单词(二进制或十六进制)。正是为应对这类攻击,需要对共享密钥认真挑选,最好是使用一个随机数生成器(甚至可以用电脑游戏中常见的6面骰子来逐位生成一个六进制数,更棒的是使用《龙与地下城》游戏里的十面骰子)。
密码分析(Crypto Analysis):由企图破解通用算法的数学家们发起。较普遍的一种攻击就是根据已知明文检视相应的密文。许多早期针对无线局域网(WLAN)的攻击都属于这一类型。
中间人攻击(Man-in-the-middle (MITM) Attack):在与Alice交谈时扮作Bob,与此同时,在与Bob通信时又扮作Alice。在这种情况下,Bob和Alice都相信他们正直接与对方交谈。殊不知有位攻击者正在他们之间左右逢源,截获他们的消息。
Dos攻击:因为加密系统通常需要消耗大量CPU资源,一个攻击者可以简单地将假冒消息泛洪给攻击对象,而这些受害者则会把CPU资源花在解密这些虚假消息或是对它们的数据来源进行检查上。
image

一个经典的中间人(MITM)攻击案例就是,你可以与朋友打赌——即使与两名国际象棋高手同时对垒,我也可以至少击败他们中的一位。注意:为简化争议,我们假定不可能有巧合的意外情况——和棋——出现。

假设Alice和Bob就是这两个棋手,你只要确保让Alice持白棋,Bob持黑棋。这样,Alice先行。比如,将马走到某个位置。你要做的就是对Bob也走这么一步。然后,你就等待Bob的应招,如法炮制给Alice。

简而言之,你根本就没有在下棋,只是用Bob的招数对付Alice,用Alice的招数对付Bob。其实,Bob是在和Alice下棋,而你无异于作壁上观。

现在,让我们假定Alice获胜。你输给了Alice。但是,由于你模仿Alice的招数去和Bob对弈,你却赢了Bob。同时,你也赢得了与朋友的赌局。
以一种安全的方式来指定某些协议,或是在交换数据之前施行强认证,这些都可以预防中间人(MITM)攻击。第5、第6、第7章涵盖了某些特定的中间人攻击。

1即随消息一起发送的被签名的哈希值。——译者注
2原始消息的哈希。——译者注

相关文章
|
1月前
|
算法 安全 关系型数据库
密码学系列之七:数字签名
密码学系列之七:数字签名
|
1月前
|
机器学习/深度学习 算法 安全
密码学系列之六:公钥密码体制
密码学系列之六:公钥密码体制
|
1月前
|
安全 数据安全/隐私保护
密码学系列之一:密码学的前世今生
密码学系列之一:密码学的前世今生
|
2月前
|
人工智能 分布式计算 安全
【现代密码学】笔记1.2 -- 对称密钥加密、现代密码学的基本原则《introduction to modern cryphtography》现代密码学原理与协议
【现代密码学】笔记1.2 -- 对称密钥加密、现代密码学的基本原则《introduction to modern cryphtography》现代密码学原理与协议
73 0
|
6月前
|
存储 安全 算法
为什么人人都要懂点密码学
人类进入二十一世纪以来,随着计算机和移动设备的普及高速发展,我们的社会已经高度信息化,为了防止信息被窃取、修改,就需要对信息的存储、传递进行加密处理,而加密就需要使用到加密算法,解密需要使用密码才可以看到原文。
182 1
|
6月前
|
安全 算法 数据安全/隐私保护
我对密码学的理解
密码学(Cryptography),是一门将信息进行加密处理与传递,以及分析加密信息的学科。 密码学即保密技术,是一门研究如何保证信息传输的安全技术,是数字信息及其他形式的信息如何防止未经授权的使用及访问的学科。
62 2
|
8月前
|
算法 安全 Serverless
密码学 Cryptology 的基本概念术语
密码学 Cryptology 的基本概念术语
84 2
|
9月前
|
算法 安全 数据安全/隐私保护
现代密码学 | 03:分组密码
现代密码学 | 03:分组密码
186 0
|
11月前
|
存储 算法 安全
密码学-回顾篇(下)
密码学-回顾篇
166 0
|
11月前
|
编解码 并行计算 算法
密码学-回顾篇(上)
密码学-回顾篇
156 0