当前课程知识点:网络安全概述 >  第三章 编码解码学 >  第六节 信息完整性 >  Video

返回《网络安全概述》慕课在线视频课程列表

Video在线视频

Video

下一节:Video

返回《网络安全概述》慕课在线视频列表

Video课程教案、知识点、字幕

下面呢我们来讲编码解码学中的一个

最后一项非常重要的一个服务

就是message integrity

信息的完整性的这种证明

那信息完整性的检测它的目的是什么呢

有以下几点

它的目的性实际上是说

我们需要使信息双方可以明确

判断所收到的信息是完整无误的

当发出方发出一段信息之后

接收方收到了

那接收方需要能够知道

这段信息是正确的是完整无误的

这个是Integrity信息完整性的

一个最重要的要完成的一个服务目标

那其中呢就是细分的话

我们需要知道这个信息呢

它的内容是没有被篡改过的

信息的发出方是真正的发出方本人

还有呢信息并没有被录播

就是刚刚我们看到过很多次的

这个recorded and playback attack

没有被录播

没有就是受到录播攻击

以及信息的顺序没有被打乱

这几项呢都实际上是这个message integrity

需要完成的一些服务目标

那为了完整地了解这个message integrity

是一个什么样的概念

我们呢首先来看一下

这个信息摘要是一个什么东西

信息摘要它的英文是Message Digest

Message Digest这个呢我们将就是

真正用到哈希函数的地方

我不知道大家是否还记得之前

我提到过这个编码解码算法体系有几大类

其中包括我们刚刚已经讲过的这个shared key 这一类

就是说共享密钥的这个空间

还有呢就是刚刚也是接触过的这个public key algorithms

就是这个公共密钥和私有密钥这个密钥对儿

这样子的算法那RSA是个代表

那同时呢我在很久之前已经提到过

还有一大类叫做哈希函数类

那哈希函数类呢

不知道同学们是否还记得

当时提的时候也说过

这个哈希函数它实际上是没有什么加密的过程的

那它为什么有用呢

用处呢就是在

我们将要提到的这一段知识点里

就是在这个信息摘要这段知识点里面

很有趣的一些用法我们将要看到

我们这个信息摘要是一个什么样的一个过程呢

就是说顾名思义其实信息摘要

就是对一段信息进行摘要

那我们怎么做摘要呢

就是用一个函数来做摘要

而这个函数一般就是哈希函数hash functions

那这个函数H()可以将

任意长度的一段字符输入处理后

这个H()它可以输出一段固定长度的一段字符串

这个固定长度的字符串的输出

我们就管它叫做信息摘要

再稍微重复一下就是我们有一个函数H()

这个函数H()的它可以把任何一段字符拿来

作为输入

那最终的目的呢就是这个函数它最终的运算结果呢

是输出一段固定长度的一段字符串

这个固定长度的字符串就是message digest

就是我们所谓的信息摘要

那么这个函数H()

一般而言我们会用哈希函数

来做这方面预算

那哈希函数有很多种

在这个网络安全中

比较大的比较重要的两个hash function

一个是MD five就是MD5

这个同学们可以回去了解一下

还有一个是SHA

我们一会也可以是简单的提一下

那重新回来再接着讲这个哈希函数

在这个函数呢

它的这个特性呢

实际上是有一个多对一的特性

也就是说呢这个函数它有可能

拿到多个输入得到的结果

我得到这个message digest有可能是一个

就是它是多对一的函数

n to one the mapping

H()那主要的函数形式是hash function

这个我们已经提到过了

那hash function这个函数H()

它应有的一些我们需要它具备的

一些特性有以下几个啊

一个是说我们希望这个函数

它在运算起来是非常容易的

就是计算比较容易这是一个性质

第二不可逆性

就是你想要求它的这个反函数

得到一个结果是不可能的

这个是要不可逆性

就是说我无法通过

H(m)这个 message digest

反推出m是什么

我无法通过这个输出的结果

反推出输入是什么 这个就叫不可逆性

那我们希望这样的函数具备这样的特性

就是有不可逆性

还有下面的特性是说

这个结果尽可能是唯一的

大部分哈希函数它都是结果

不可能100%保证是唯一的

它总有一些重叠性在里面

那结果呢尽可能是唯一的

这个是我们希望它能够提供的一个性质

唯一性指的呢就是说对任何一个

输入的信息m和另外一个输入的信息m prime就m’啊

那我们希望H(m)和H(m’)

得到的结果不一样

也就是说我们希望H(m) = H(m’)

等式如果成立的话

这个等式成立的可能性要越小越好

我们希望结果能够唯一就是这样子的

还有一个就是我们希望H( )

就是这个函授它能够

提供的一个特性的就是这个结果是近乎随机的

这几点就是说我们一般的

对这个哈希函数的有一定的期望是这些

那我们现在呢来看一个

最简单的这样一个哈希函数

那就是像综合校验码Checksum

这个Checksum呢是如果这个大家

对计算机网络的一些协议如果还有印象的话

我希望屏幕前的各位同学们应该

因为已经学过计算机网络课

至少这个对TCP IP这样的协议

应该还是有足够的印象

因为这些协议非常重要

那如果你们对这样的协议有意向的话

大家应该对Checksum就有印象

这个综合校验码

Checksum实际上它在操作过程中

相当于就是一个哈希函数

一个hash function的这样一个操作过程

而Checksum它就是可以产生一组

固定长度的这样的字符输出

并且呢这个Checksum它也是多对一的函数

就是说呢对不同的输入信息

输入到同一个函数里面

有可能得到这个相同的输出结果

我们可以看到下面列的这个两个例子

实际上就是多对一的这样一个输出结果的一个例子

可以给大家复习一下

实际上这也是Checksum怎么样计算的

我想可以通过这个例子也给大家

稍微复习一下TCP还有这个IP

它们在这个header里边那个checksum field

是怎么样计算出来的

还有UDP也是这样子

UDP也有一个checksum的这样一个field

那么我们可以看到在这个例子里面

这个message本身它是这样一段的信息啊

它写的是I O U那英文因为I O U

听起来就像是I owe you 就是我欠你的对吧

I O U I owe you 100.99 Bob

虽然这个信息它因为重新的被排列整合了一下

它的这个格式

那我们可能看的有一点别扭

但实际上这是一句话

这句话实际上是相当于Bob打的一个欠条

说的是说我欠你一百块九毛九

就是I owe you 100.99 Bob

就是Bob的一个小欠条

那我们为了做这个Checksum的运算呢

Checksum它的运算就是说

我们把原文分割成等长的段

然后我们把这个等长的段再这样列起来

竖着列起来

列起来以后呢

我们对这新得到的这个

二维的这个编码做进行二维码的

这种相加的运算

那我们可以看到就是把

I O U 100.99 Bob 这句话

重新的把它翻译成ASCII code

就是我们可以看到在ASCII format里面

它的表达就是左边的这个hexadecimal number

这个16进制的数字的这种表达

就是49 4F就是每一个

它相当于是代表了一个二维码的一个数字

只是用这个16进制数来表达出来

那我们可以看到它ASCII format

是这样子三行数字

那我们对这个三行数字进行相加

就得到最后一行

这个B2 C1 D2 AC

这样一个16进制的数字

这个数字是它的这个hash functions的结果

就这个Checksum它的结果

我们在这一页的右边还可以看的到

如果我把这个信息改一下

就小小的做些改动

变成I O U 900.19 Bob

就是说我把它从I O U 100.99 (Bob)

变成I O U 900.19 Bob

变完了以后的这个信息

我对它做一个ASCII码的转换

放到这个ASICC format ASCII这个格式里面去

然后呢再重新相加得到的结果

和左边的这条信息的Checksum

实际上是一致的

所以说这个就是两个不同的输入信息

它实际上产生了相同的函数输出结果

其实这种形式呢

是我们不希望看到的

当然同学们应该也都知道Checksum

它本身是一个非常简单的hash function

就是很粗浅的hash function

它能够在这个TCP UDP里面

就像这样子的那个协议里面

做简单的这个就是message integrity checking

但是呢它没有办法做到很复杂

也没有办法做到很精确

那我们下面来看一下

其他的这种信息认证码的一些其他算法

信息认证码英文叫Message Authentication Code

缩写是 MAC M A C

那我们一看MAC这一个缩写呢

就立刻会想到这个数据链路层上的MAC address

这个此MAC非彼MAC

就这个MAC不是那个MAC address

那个MAC

虽然说它们的缩写是一模一样的

在这个编码解码学里面

MAC stands for Message Authentication Code

这个MAC Message Authentication Code

它的作用是用来

对一段信息的完整性进行评测的

那这个MAC我们一般是怎么样生成的呢

是这样子的我们看一下这个上面的图啊

那我们有一段这个s 一个s这个信息

它实际上相当于

是一个共享的一个秘密的信息段

同时呢我们还有一个相应的这个原文信息message

message后面加了一个共享的秘密信息段

你可以把它想象成就是password

这样子的东西

那这个message和它的共享秘密信息段

被叠加在一起

同时一起输入到这样一个哈希函数里面

这个hash function H()里面

那得到了一个哈希结果

一个红色的小长方形

代表这个是我们的哈希结果

那这个哈希结果呢它呢再被加到原文上

这个hash function的result

直接被加到原文上

原文也没有被加密

然后这个原文和哈希结果的这个MAC code

一起通过网络传送到

对方的接收端的终端上去

这个呢其实已经完成了一个

所谓这个信息完整性的一个加密的过程

但是有任何东西被加密了码 not reall

并不是真的是有这个用什么encryption key

来做加密没有这样的过程

我们只是对一个secret key

一个secret 一个shared secret加到原文上

然后呢把整个这个arrogation 这个叠加

得到的这样一个数据段

输入到一个哈希函数里面

得到了一个哈希结果

那这个哈希结果里面包含的信息

就已经有了那个shared secret它的信息

也就说那我把整个这个

MAC code加上原文

一同通过网络送到接收方以后

接收方做什么呢

接受方它应该是

已经知道了这个shared secret s

s应该是已知的

那接收方可以看的到原文

原文没有被加密在这个地方

加密原文不是目的

这个message confidentiality

就是信息的私密性

在这个地方不是目的

我们在讲这个技术是 integrity checking

是信息完整性的的这样一个检测

所以我们要能够判断信息完整性

这个是我们的目的

那原文在这里是in the clear

就是说原文

是完全没有被加密的

我们接收方收到了原文

收到了MAC这个code

在那个红色的这个小长方形里面所表达

那同时呢这个接收方

也已经有了这个共享的秘密信息段s

那接收方可以做什么呢

接收方可以自己把共享的秘密的这个信息段

和原文这个message放在一起

把新的这个数据段

放到同样的一个hash function里面

去进行运算得到了一个结果

这个结果可以跟这个sender就是发出方

发过来那个小红块里面的那个结果进行比较

如果这个接收方自己算出来结果

和发出方发来的结果hash function的结果

相比是一样的

那么我们就能够证明

一个什么事情呢

实际上是证明了两个事情

一个是说我们可以证明发出方

就是那个发出方为什么

因为这个hash function的结果里面

有了那个shared secret

有那个信息

那按道理讲应该只有那个发出方

有这段shared secret

有这种共享的这个秘密的这个信息段

所以呢因为这个发出方可以对这个共享秘密信息段

进行成功的做这个哈希函数的这样一个过程

那又被这个接收方

可以去确认它的结果是正确的

那这个确认结果呢

就可以反过来证明

那个sender就是这个应该的这个发出方本人

这个实际上是它间接地完成了authentication

这样一个服务

这个是我们刚刚

讲过其他方法可以做到authentication

但这个在我们此时此刻

这个这页slide上面提到这个方法呢

是一个很简单的authentication的认证方法它也做到了

然后第二个更重要的步骤 它完成的一个服务

就是我们这部分内容讲的重点就是message integrity

它可以通过做哈希函数的这个运算

以及对哈西函数结果的比较

发现它们两个是可以被对上号的

那就说明我接收到的信息

是没有错误的 是完整的

所以这个就是通过这样的步骤

对message integrity我们做了一个确认

那在这个过程中呢

因为我们此时所要接触的知识点

会是我们希望探讨的知识点

是message integrity是信息完整性

那我们暂时不去考虑这个信息的保密性

所以整个过程是无需加密的

刚刚这个过程呢也可以被称为这个keyed hash function

这个keyed hash function里面这个key

实际上就是s那个little s

共享的这个秘密信息段

那数学表达呢就是下面这一段啊

就是MDm = H(s||m) ) ; send m||MDm

它是这个MD这个code得到的结果

那这个MD这个code呢

同时和原文一起被发给接收方

这是整个这个MAC算法

那后面的稍微的改进一点点

那就是我们会有这个哈希消息认证

就是Hash based Message Authentication Code

HMAC的算法

这个就是多加了一步又再加一步

我们仔细读一下这几个点

这个HMAC算法它是怎么样做的

首先我们要知道这个HMAC算法

它是一个比较重要的信息认证标准

它修补了一定的安全漏洞

那它整个运行过程是这样的

我们首先呢

需要把一段收发放共享的

秘密代码加到这个代传的信息上

这个就是我们刚刚看到的那个shared secret s

然后呢我们对衔接了这个秘密代码s的

代传信息m一起啊做这个hash functions的处理

得到了信息摘要得到了这个message digest

然后呢我们再把这个秘密的代码

再一次衔接到信息摘要上

这是两步双重的衔接

那这个时候呢我们实际上是把message digest

和那个s再接一遍

然后把对接了这个秘密代码的信息摘要

再一次做哈辛函数的处理

做两步哈希函数处理

这个是Hash based Message Authentication Code的精髓

这个就是给大家稍微介绍一下

那实际应用中的哈希函数算法

我刚刚提到过两个非常重要的

一个是MD5 hash functions

另外一个叫做SHA-1

就是说这两个哈希函数是非常重要的

是真正的用在了这个实际的网络安全协议的

信息认证的这个技术里面的

MD5的这个hash functions 它的主要的特性呢是说

它是通过一个四步的一个计算过程

得到了一个128位的这样一个输出

那SHA呢它得到的生成的结果呢是160位的

这个呢我希望就是大家如果

有机会的话可以线下自己去看一下相关文献

而且就像我在最开始讲过的

编码解码学本身它可以是一个很重要的一门课

那我相信就是后面我们会有后续的专门的课程

来进行编码解码这些算法的解释和证明

我把那些知识点呢留到相关的课程上去讲

好下面我们来小小的看一个例子啊

就是说在这个现实的这种计算机网络的

这个运行过程中

这种hash function

它是怎么样被真正的

实用的计算机网络的协议用上

去做这个信息认证的

那我们拿OSPF来举例

OSPF是一个routing algorithm

是一个路由器上用的

存储转发的这样一个路由算法

很重要的一个算法

这个算法呢给大家提个醒

因为这个算法同学们应该已经学过了

那它是一个基于shortest path的一个算法

就是基于最短路径的算法

那就这个内网中每一个路由器

它们都各自独立的计算自己的这个

link-state information

就是我到其他的路由器的最短路径是什么

更新的时间段更新的这个周期呀

我对每一段时间我算一个

现在我到内网中的其他路由器

我的最短路径是什么

我算完了以后这个link-state vector

这个信息要共享给

我直接相连的其他的这个neighboring

就是邻居的这些路由器上

我必须要告诉它们

当这个基于OSPF这个routine algorithm

我们每个路由器

在收到其他的邻居的路由器

发给我这个link-state information以后

这个叫做link-state的这个链路状态表啊

我们每个路由器收到其他的

邻居发来的链路状态表以后

我们都要对自己的链路状态表

做重新的这种计算更新

那这个时候呢问题就来了

大家可以想象如果我的邻居在撒谎

或者是说如果在我和邻居之间有一个第三方

这个第三方是个hacker 是个Trudy

她想把我们这个信息截获并且篡改

如果我一旦收到了这个link-state information

是错误的 是不完整的

那会有什么样的影响呢

显然他就会对我整个这个

路由算法这个routing algorithm

得到的结果会有巨大的影响

那会影响到我之后

这个其他的真正的网络包

过来以后我做存贮转发

这样的速度也好包括它准确性都会受到影响

这是一个很大很大的一个破坏

那所以说呢在这个OSPF和类似这些路由算法里面

包括其他的很重要很重要的BGP

这个Border Gateway Protoco

也是就是说inter-AS之间的这个gateway的这种routing算法 BGP

还有RIP 还有IS-IS 这些routing algorithms

都存在类似的这样的顾虑 这样的问题

就是说我拿到其他的这个相关的相邻的这些设备

它们发给我的信息以后

我是不是能够真正信任这些信息的准确性

信任这些信息的完整性

这个是我需要考量的

我们怎么样能够把这种

就是message integrity这样的服务

提供给像OSPF这样子算法呢

那我们基本上就可以做这样子的一些假设啊

我们假设一个内网中每个路由器

都会和相邻的路由器之间交换这个链路状态信息

那我们在这个交换的链路状态的信息中

我们就可以加MAC或者HMAC

这样的message digest这样的数位

来进行这个路由本身链接状态

信息的认证也好 还有就是它的完整性的认证

那OSPF协议也确确实实

提供了以下几种选择

你可以选择我不做任何认证

我就相信我这个内网的所有路由器

都是非常secure的就是非常安全的不会被攻击

那好那我们就不做任何认证

我们对其他的这些路由器发来的这些信息

我们不做任何认证

就是no need for verification

这是一种选择

另外一种选择就是说

我们用共享密码认证

就是把共享密码加入到OSPF表头的

一个64位的这样一个认证区间里面

我们可以用共享密码这种方法去进行认证

还有一种呢就是

我们刚刚提到的用哈希函数加密认证

那基于MD5的这个哈希函数加密呢

实际上也是这个被广泛地用在OSPF

就会说类似于OSPF这样的算法里面

OSPF它确确实实也有用到MD5

这样的哈希函数认证方法

那么我们具体这个哈希函数它怎么样做呀

然后对于这个一段原文怎样进行处理啊

我们刚刚在讲这个message address的时候呢

基本上提到了

那具体方法基本上就是我们刚提到类似的方法

只是函数本身那个H( )有可能是被具体的一个函数

比如说MD5所取代

好 那我们现在做这个收发双方的认证

有这个信息的认证 还有收发双方的认证

收发信息的双方都希望确认对方真是其人

这个是收发双方的身份的确认

假设Alice和Bob有一个共享的密钥

那么这个MAC可以做收发双方的

身份的这个认证吗

这是一个问题啊 可以吗

假设我们知道是Alice生成一条信息

但是这信息真的是Alice发的吗

这个问题实际上是跟我们再往前一点讲的这个

authentication实际上是结合的

所以说authentication和integrity

actually 我们实际上是完全可以就是在技术上面

把它们结合起来用的

好我们现在先回过头来还是看一下这个问题

就是实际的例子有什么 下面这个slide呢

给大家看到是一个很好玩的例子

这个例子上呢就是一个很逗啊

这个我们Alice是想要给那个Bob发一段信息

这个信息是什么呢

是说这个从Bill的账上给Trudy转一百万美金

那么挺多钱的

然后这个Trudy呢她把这句话给听见了

那那个Alice在发的这个过程中

她把这个原文送上去

因为我们刚刚讲过这个message digest一般

我们可能对原文是不加密的就直接传出来

那Trudy可以看到

从Bill的账上给Trudy转一百万美金

同时呢Alice对这一段信息她做了一个

message digest的一个计算就算出来一个MAC

MAC这个code message Authentication Code

并且把这个MAC

给接到这个原文上去

整个这一段一起发出去

那发到网络中Trudy看到了

并且把它录了下来

就是从Bill的账上给Trudy转一百万美金

同时那个MAC那个message Authentication Code

也一块被Trudy录了下来

那这个时候那就是说

Bob第一次他收到了Alice发来的这个信息

他给Trudy转了一百万美金

那Trudy贪得无厌

她还想说我还想再要一百万

那我下一次呢 Trudy就把

刚刚录下来那一段包

我再转给Bob一次然后再转一次

每一次Bob收到以后

因为它都有那个相应的MAC

这个message Authentication Code

并且这一段MAC

都可以被Bob去确认这是正确的一段MAC

那就说明这个信息是ok的

那Bob呢就会每次都给Trudy再去转一百万美金

那这个Trudy可以这样子就发财了

那这种攻击就又是一次录播攻击

那我们怎么样去防止录播攻击呢

我们刚刚已经讲过了

但凡你看到录播攻击

你就立刻想到一个词叫nonce

就是这个一次性的筷子

一次性的这个代码

这个nonce R我们就可以用到

预防录播攻击上

那具体的是怎么用呢

我们可以看一下下面这个例子

基本上就是说是这样子用的

Alice跟Bob讲I am Alice

Bob立刻发给Alice一个R一个nonce

然后这个时候Alice呢

要计算一个message Authentication Code一个MAC

这个MAC的结果呢

它是根据原始信息那个message

和Alice和Bob之间那个shared secret s

还有这个nonce R一起三部分的输入

算出来的一个MAC

这个数位这个message digest

那也就是说在这个新的这个MAC里面

已经包含了那个nonce的信息

这个nonce不要忘记是一次性的

也就是说即使是这一回

Trudy又把这个信息截下来

我下一次再replay

再给Bob就是重新播放以后

Bob一定会把它扔掉为什么

因为那个R已经用过了

而且呢因为它是nonce

nonce性质呢就是我只能用一次

所以Bob如果再看到带有同样R这个信息MAC过来

那就说明基本上这个信息是不可靠的

可以立刻被Bob扔掉

这就是如何防止录播攻击

好下面我们来这个

讲一个大家应该都听过很多次的

这样一个概念叫做电子签名

电子签名的英文叫digital signature

电子签名现在因为我们网上有各种各样的文件

也经常会有各种各样公司跟你说

我们可以提供电子签名的服务

或者是说就是某些比如说

你想在网上签个合同买房也好

或者租房子也好

有时候呢对方的这种中介

他就可以直接在这个

网上给你生成一个文件

然后让你用电子签名的这种方式来做

那不管怎样我们这个电子签名这种应用

它背后的这个技术上面是怎么样支持的呢

我们先在下面一段知识我们来看一下

这个电子签名是怎么样工作的

我们可以通过电子签名

基本上呢可以是实现

类似与手写体签名的这样一个技术

那么它的这个idea是这样子

就是说发出方Bob

他通过电子手段给一份文件签名

那这个电子签名技术呢

需要使用这个public key

和private key这个钥匙对

来实现这个信息的认证

和这个信息认证类似这样一个效果

从而认证这个签字的发出方

确确实实是这个签字方本人

我们希望能够得到的结果是说呢

Alice是可以确认

已经签过的这个信件或者说这个文件

一定是Bob签的不可能是别人签的

就是它可以确认并且无法伪造

这个是电子签名技术上的这个需要达到目的

那么我们如何给一段信息

做这个简单的电子签名呢

那下面这一页幻灯片上

我们就可以看到一个简单的例子

在这个上面呢Bob用他的私有的这个密钥 私钥

给一段信息m加密

得到的这个密文

基本上我们就可以说

是Bob签好名的这样一个文件

那比如说我们在这个slow char上面可以看到

Bob的message是说

Dear Alice

Oh, how I have missed you.

I think of you all the time! …(blah blah blah)

Bob

这是Bob给Alice写的一封短信

那这个时候Bob想要用电子签名的方式

来向Alice证明我就是我

那怎么样去做呢

Bob用他的private key

为什么要用private key

应该还有印象我们这个讲的并不久啊之前的

在这个public key infrastructure里面

private key就是一个私钥

是只有这个设备本身

当时这个签的这个网络设备

它自己才拥有的

私钥是自己拥有的那一部分

那只有把它相应的那个公钥的

那个相应的对啊是可以被发送给别人的

但是Bob的私有密钥只有可能是Bob拥有

Trudy不可能有

另外像其他人像什么sunday也不可能有

只有Bob有可能有Bob的自己的私钥

所以说当Alice能够用Bob的公钥进行解密的时候

那这个过程只要能够成功

Alice就其实已经认证了Bob就是Bob

因为Bob他

只有用Bob自己的私钥去加密的密文

Alice才有可能用Bob的公钥来进行解密

这个是我们之前已经学到过的逻辑啊

那我们下面的就看这样一段这个电子签名

它实际上在我们真正的网络安全的

这个协议的应用中

电子签名就等于是签了字的信息摘要

信息摘要是什么来着

信息摘要我们刚刚讲过了

信息摘要实际上它是一段哈希函数的值

它是我们之前这个MAC

就是Message Authentication Code

那个实际上就是一个信息摘要

那电子签名就是我不但有一段信息摘要

而且我要对这段信息摘要进行加密

我用什么加密用private key做加密

就是说是我签了字的信息摘要

就这样一个概念

这个就是电子签名digital signature

就是这样子一个大概的概念

让我们看一下这个80页上面的

这个小的这个slow char

在左边我们看到Bob发出

被电子签名过的信息

它是什么样的一个信息呢

我们首先有原文m

m呢它会被送到这个哈希函数里面

做一下哈希函数的计算

得到的是message digest

就是哈希函数这个值

那得到哈希函数值以后

Bob用它自己的private key它的私钥

对这个哈希函数值H(m)做加密

这个生成的这样一个结果

就是加密的信息摘要

实际上生成的这个结果就是digital signature

就是我的电子签名

Bob要向网络中发出了什么呢

就是这个信息原文本身

和相应的这个签章这个电子签名

这样的话呢接收方向对方能够证明说

这个文件是我签署的

那到了接收方Alice这边它要做什么样的一些步骤

来去确定这个东西它确确实实是可信的呢

Alice收到了从那个邮箱里边

她拿到了一段信息出来

一段原文信息m

因为Alice她也有相应的哈希函数

所以呢Alice对这个原文m

做哈希函数处理她得到了

一个哈希函数值H(m)

同时呢在这个Alice接收方

她还接收到了什么呢

还接收到了Bob的这个digital signature

就是用Bob的私有密钥

加过密的这个哈希函数结果

message address就是这个哈希函数结果

那这个时候Alice可以做什么

因为这个哈希函数的结果呢

是用Bob的private key做的加密

所以Alice就可以用Bob的public key来进行解密

所以这也是exactly

正是这个Alice她做的事情

就是说我拿到这一段

Bob的digital signature

我用Bob的public key

把这个digital signature给解密一下

解密得到什么结果呢

得到的是那个哈希函数的那个值

就是那个message addressed

这样我把两个message addressed就可以进行比较

因为Alice她自己还算了一个message addressed

这两个是不是一样的

如果是一样的话

那好那我相信

这个文件确确实实是Bob签署的

这个过程就是电子签名的

整个的工作过程

那我们下面接着看

那假设Alice收到了信息m

以及Bob的电子签名KB minus(H(m))

这个就是Bob用他private key

签的这个message digest

Alice通过用Bob的公钥解密Bob的电子签名

以此她可以检查通过这个解密签名得到的信息

是否跟那个他自己算出来的

这个hash functions是一致的

如果是一致那就ok了

如果上面这个等式是成立的话呢

那就不用说了这个不管是谁

给这个m签了字

那个签字的人一定拥有Bob的私钥

这个是很重要的

那very lucky

就很有可能它就是Bob

如此呢这个Alice可以确定以下几点

这个文件是Bob签的字

第二 没有其他人可以给这个信息签字

第三 Bob签的信息的内容是m

而不是m’

这个也是很重要的一条

我们就是说通过这个过程

可以来进行的判断也是很重要的

如果上述几条检验的结果都是真的

那么Alice就可以用信息m

以及Bob的电子签名作为证据

证明Bob的签字是真的

这个是整个这个

电子签名这个过程它是怎么样工作的

那么刚刚我们讲的这一段这个技术

它是不是无懈可击的呢

是不是说我不太可能就是有别人来伪造

这个Bob的签名呢

答案显然是否定的

那我们来重新回顾一下刚刚

我们就是之前讲过的这个

认证算法5.0的安全漏洞

同样的刚才我们讲的这个电子签名的这个情景中

我们还可以看到Trudy

Trudy她还可以是个中间人

她还可以做这个所谓中间人的attack

那同样的程序Trudy她可以对Alice假冒自己是Bob

她可以对Bob假冒自己是Alice

两边的过程就是她可以通过

Alice这边拿到这个原文

因为原文我们说了在这个过程中

暂时我们是没有加密过的

那Trudy可以对Bob假冒我是Alice

那基本上呢Alice可以签的字她都可以签

或者Bob可以签的字她都可以去进行认证

所以就是在这情景里面Man-in-the-middle attack

还是可以工作的

那这样的话我们怎么办呢

我们现在再看一个这个具体的

一个漏洞的这样一个案例啊

那比如说这个Trudy她可以play pizza prank on Bob

pizza prank是什么意思

我们来看这是一个很好玩的例子

第一步Trudy呢用一个电子邮件点了一份pizza

这个pizza这个电子邮件上说

您好 请给我送四张香肠饼的pizza 谢谢 落款是Bob

这封信是Bob写的吗 当然不是

它是Trudy写的

但是呢没有关系因为Trudy她现在在假冒Bob

因为她是Man-in-the-middle

Trudy用她自己的这个私钥

给这份订单签了个字

说这是我要的 我是Bob

我要四份香肠的这个pizza

那Trudy把这个自己做好电子签名的定单发给谁呢

发给了那个比萨店的这个店主

店长也好或者店员也好说我要order pizza 4份

同时呢Trudy又把自己的公钥

也发给了这个pizza店

pizza店就说好那我可以用这位

这个Bob先生发来的这个公钥

实际上这个公钥是Trudy的公钥来解密

这个Trudy用自己的私钥去加密的这一封信件

那得到的结果是说这个pizza店看到了

有位Bob先生他在我们这要订了

4份这个香肠的比萨饼

好 那这个比萨饼店呢通过收到的这个公钥

解开了这个信息以后他看到了这个信息

就做了4张比萨饼并且给Bob送去了

可这个时候其实Bob收到的根本不是他点的比萨饼

更糟糕的是Bob可能他非常讨厌次香肠

那这样子一个过程就很好笑

但小小的这样一个小的例子中

我们可以看到实际上刚刚我们讲到的

这个就是电子签名技术

如果不经过巩固的话

不经过改进的话它其实是非常脆弱的

很容易的就是Man-in-the-middle也好 来这样做攻击的

那整个这个过程我们看这个漏洞案列的

过程的最关键的一步到底是哪一步出了问题

想2秒钟哪一步出了问题

就是这一步

就是Trudy把她自己的公钥发给比萨店

并且谎称呢这个公钥是Bob的公钥

问题的关键最大的漏洞就是说

任何人都可以对别人讲我就是某某

这里是我的公钥 这个公钥没有被认证

公钥本身没有被认证

这个就是一个很大的安全漏洞

这个就好像说是一对情侣

高高兴兴他们去结婚了

他们两个人说我们俩结婚了

但他们的这个婚姻没有被认证

很像的这样一个概念啊

那我们现在在这种情况中

我们需要提供什么样的服务

才能够让这个认证的这个关系能够成立呢

就是我们下面要讲的这个

数字证书的认证机构

就是这个Certification Authorites -CA

这个数字证书的认证机构呢

它实际上是专门为这个public key这样的问题来产生的

它的最重要的目的

就是说我要对一个设备

它发出来它这个announce

它广播出来的这个公钥进行认证

认证什么呢 认证这个公钥

就是这个设备他本人的公钥

就是你的这个picture ID你的这个身份证

所相连的那个人就是你而不是别人

你没有去假冒别人这个是最重要的

这个是CA所要做的最重要的一件事情

那CA呢它的主要功能是将公钥

和其相应的通讯实体entity E来进行绑定认证

我把这个公钥段和这个网络实体

进行绑定这个是CA要做的事情

那这个网络实体呢它可以是终端的用户

可以是路由器 可以是中央处理器

可以是web service email service这些等等等等

需要向数字证书认证机构呢

注册它的公钥就是这个entity

绑定我自己和这个公钥要相关的这个关系才行

那这个entity要向CA提供自己的身份证明

同时呢这个CA就会建立一个证书

这个证书呢是用来绑定这个entity E和它的公钥的

CA生成了这个证书以后会把这个证书

发给那个entity发给那个网络实体

那以后如果要是说 Alice再跟Bob

要Bob的这个public key

那Bob呢不会直接把自己的public key发给Alice

他会发给Alice什么呢

会把这份证书发给她

他就这个是我被认证过的 这是我的公钥

那这个证书是什么呢

就是在绑定了以后这个CA它要

对这个证书盖了戳

就是说我这个CA

这个Certification authority

它要对这个绑定的证书做一个电子签名

用什么签呢 用CA自己的private key

那我们在这个网络的这个世界里面

我们就只好相信这个CA是可信的

有的同学这个可能会很聪明的想到

那CA有可能也会有伪造

事实也确实如此

CA是可以被伪造的

但是呢CA被伪造是很难的

因为它可能有多重保护

还有呢就是说我们就是相信它 我们相信这个CA

它做的认证就是可信的

那这样的话那CA的public key

是被大家知道的一个public knowledge

这是公有的知识

那CA的private key只有它自己拥有

所以说被CA签过字的这些认证的证书应该都是真的

这个就是我们现在就暂且相信它一定是真的

从此以后呢还是讲这个

Bob他要做的事情就是如下几步了

Bob他先生成自己的这个public key

和private key的pair

这一对钥匙他先自己去生成一下

然后呢他要把自己公钥的那一部分进行认证

就是他会把自己的身份证明

和这个公钥一起发给CA

CA将这两组信息进行绑定认证得到一个证书

并且给这个证书盖个章

这个章就是CA的电子签名

电子签名什么来的

电子签名是用自己的私钥加过密的message digest

那CA用它自己的这个电子签名

给这个证书进行认证然后返还给Bob

那in the future就是将来从此以后

如果要是有任何人

想要能够拿到Bob的这个公钥的话

Bob不会把自己的公钥直接发给对方

而是会把这个CA认证过的

公钥的绑定公钥 这个证书发给对方

那对方拿到的是一个什么呢

是一个用CA的private key 加过密的

或者说认证过的这样一个证书

那这个时候如果我是个接受方我是Alice

那我拿到了这个Bob发给我的

这个认证过的公钥的证书

我要做的事情是用CA的public key来进行解密

来去确定 这个证书是真的

那因为我可以用CA的public key进行解密

我就可以看的到这个证书里面的Bob的public key

这个是我怎么样得到

Bob的public key正确的做法

那最后我现在给这个电子证书呢

做一个小小的总结啊

我们在这个电子证书这一个领域里面呢

一个比较重要标准是 X.509

这个大家有兴趣可以去读一下

那这个一般而言

在实际的这个操作过程中

电子证书的内容却是包括以下几项

它有发证方 发证方就是CA

然后被认证的个体

就是这个网络个体这个entity

这个entity的名字

它的网络的地址域名等等等等

还有呢就是这个证书也会包括

被认证的个体的这个公钥

以及这个证书它要有自己就发证方的电子签名

这个发证方的电子签名

就是发证方用自己的私钥签的名字

那公共密钥的这个框架

这个Public-Key Infrastructure-PKI这个框架

它呢一定要包括这个电子证书

和这个证书认证机构

整个的这个结构呢

相对而言还是比起这个shared key的

这个结构呢要复杂许多

到此为止了我们基本上对这个编码解码学呢

做了一个大概的这样一个概述啊

不过呢我相信虽然是概述

但是呢我们这个shared key infrastructure 和public key infrastructure

这个最重要的这种精髓已经讲到了

包括这种个体的这个authentication

还有integrity这种完整性的证明

我们都已经触及到

还有这个电子的这种签名

还有这个信息的摘要

这些知识点都是非常重要的

希望同学们至少以后提起来

大家能够有所印象

如果要是想做深入的了解呢

还是讲这个编码解码学本身

它其实还是蛮博大精深的

就是它自己可以自成一门课

也希望大家能够关注

有相应的课程

以后呢会被推出

那欢迎大家可以去选修相关的课程

网络安全概述课程列表:

第一章 计算机网络基础知识-简短回顾

-第一节 电子邮件e-mail的安全

--Video

-第二节 计算机网络的服务

--Video

-第三节 网络协议的分层结构

--Video

-第四节 网络数据包的传输过程

--Video

-第五节 实例演绎计算机网络通讯工程

--Video

第二章 网络安全研究的是什么问题

-第一节 计算机网络为什么不安全

--Video

-第二节 网络安全技术需要提供的服务

--Video

-第三节 网络安全讨论的情景设置

--Video

-第四节 黑客有可能有哪些攻击网络安全的手段

--Video

-第五节 网络中的恶意软件

--Video

第三章 编码解码学

-第一节 编码解码学的基本概念

--Video

-第二节 攻击编码解码技术的方法

--Video

-第三节 共享密钥加密法

--Video

-第四节 公共密钥加密法

--Video

-第五节 鉴别认证

--Video

-第六节 信息完整性

--Video

第四章 网络安全协议

-第一节 电子邮件E-mail的安全

--Video

-第二节 传输协议(TCP)的安全:隐秘套接字协议(SSL)

--Video

-第三节 网络层安全:IPSec

--Video

第五章 无线网络安全

-第一节 WEP的设计和问题

--Video

-第二节 802.11i改进机制

--Video

第六章 防火墙及攻防系统

-第一节 防火墙概念及目的

--Video

-第二节 三种防火墙

--Video

-第三节 IDS(Intrusion Detection Systems)介绍

--Video

Video笔记与讨论

也许你还感兴趣的课程:

© 柠檬大学-慕课导航 课程版权归原始院校所有,
本网站仅通过互联网进行慕课课程索引,不提供在线课程学习和视频,请同学们点击报名到课程提供网站进行学习。