当前课程知识点:网络安全概述 >  第三章 编码解码学 >  第三节 共享密钥加密法 >  Video

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

Video在线视频

Video

下一节:Video

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

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

好下面呢我们开始学习一下共享密钥加密

这部分知识是什么样的

就是Shared secret key encryption algorithm

它们是怎么样进行工作的

这个symmetric key呢

还是说Alice有一段原文m

Alice呢她和Bob他们两个人

共享一个同样的一个密钥叫做Shared key

或者也叫symmetric key这个Ks

Ok那Alice她用这个Ks对原文m进行加密

这个Ks和原文被放到这个加密算法里面

然后得到密文Ks(m)

那这个密文和同样的这个钥匙Ks

被Bob放在这个解密算法里面呢

得到了原文m

在共享密钥加密的这样一个知识框架下

最重要的一点知识大家需要知道的是说

这个Sender和Receiver这个收发两方啊

他们两个人所用的

这个加密和解密的钥匙是一样的

这就是为什么我们说它是symmetric key

或者叫做Shared key

这个是很重要的一个区别于

这个公共密钥结构的一个概念

就是说在共享密钥中

我们的Sender和Receiver

他们用的是同样的钥匙

在这个共享密钥加密的算法里面

有一个非常关键的问题是说

Bob和Alice之间

如何事先商量好用哪一个钥匙

这个呢在不同的网络安全的算法里面

会有不同的处理手段

但这是一个非常关键的一个问题

就是事先我们两个人怎么先商量好

我们共享这个钥匙是什么

在就是不被别人知道的情况下

你不要忘了因为我们在讲的是网络安全

就是说这个Sender和Receiver这两者啊

这个发出方和接收方

他们应该是不见面的

那他们在不见面的情况下

怎么样事先协商好

这共享的钥匙是什么

这是一个比较有趣的一步

那这是做为这个

共享密钥的加密算法呢有两大类

一种第一类叫做流加密Stream ciphers

第二类叫做区块加密Block ciphers

好那我现在先回来稍微讲一下这个流加密

流加密的意思是说

对这个数据呢做一个比特一个比特的加密

这个原始数据啊这个原文

我对它进行加密

我是一个比特一个比特这样子去进行加密

而区块加密呢就是说

我把原文切割成段

我对每个数据段一段一段地进行加密

叫做这个Block ciphers

Ok这是两种共享密钥的加密算法两大类

那我们先来看一下

这个流加密是怎么做的

我们呢在上面这个图上我们可以看的到

首先呢在流加密里面呢我们有一段

这个共享的这个钥匙啊

这个key它先要被放到一个keystreamgenerator

这样一个函数里面去

生成一个密钥流keystream

然后呢这个keystream是真正用来

对原文进行加密的一些比特位

那么在流加密里面呢

我们会将原文中的每一个比特

和密钥流中的每一个比特相结合

一般这个所谓的结合的方法呢

就是求异或xor做异或运算

从而算出相应的密文的比特位

Ok那在这个Slide上面呢

我列出了一些这个数学的一些表达

就直接用英文来做阐述了

这样比较简单一点

也比较忠于这个原文一些啊

这个m(i)就是第i个

在message里面的第i个Bit

就是 ith unit of message原文

原文的第i位

ks(i) 是keystream 就是密钥流的第i位

那c(i) 是ciphertext第i位

Ciphertext就是密文

密文中的第i个比特是c(i)

那我们知道了m(i) Ks(i) C(i)

我们现在就要看一下它们之间的关系

那这个密文啊

这个ciphertext第i位我们怎么算呢

就是把这个密钥流的第i位

和原文的第i位求一个异或

异或算法应该也还记得哈

这是Binary competition的

最基本的一个计算

那这个C(i)呢

就是说还是那个ciphertext第i位

我们实际上是通过

对这个keystream的第i位

和这个原文的第i为求异或

这样一个计算得到的

那原文怎么样重新被解密生成呢

不要忘了在这个里面

我们讲的是

Shared key symmetric key infrastructure

也就是说这个keystream实际上是一样的

Sender和Receiver它用的是

一模一样的这个密钥

那在接收端我想得到原本

我就很简单做一个操作是什么呢

就是用同样的密钥流的第i位

和密文的第i位

我求一个异或关系

得到的结果就是原文的第i位

那么这个是流加密的一个非常简单的

这样一个解释

那流加密中这个比较重要的一个例子

就是RC4 algorithm

这个呢我想请同学们自己

如果有兴趣的话

可以去深入的学习一下

下面我们讲这个区块加密

区块加密它跟流加密

还是说这个不同的地方

是在于区块加密呢

是对原始的数据段

我们把它进行分段先分割

我们不要在一个Bit一个Bit的进行运算

这样可能比较费事

那我们把这个原文进行

一段一段的进行加密

就是把数据信息分成k比特长的

等长的信息块

注意啊要是等长的信息块

之后呢以信息块为单位进行加密

比如说k可以是64比特长的

这样一个block

那加密的时候这个一一对应关系

实际上以k比特长的字符串为单位的

这是非常关键的一个知识点

因为这个k的比特长

它三个Bit的话

这个长度有可能还比较容易去进行处理

但如果K是64位的话就非常复杂了

那么好下面我们看一下这个例子啊

例如这个当k=3的时候

K=3在这个binary number System里面

就是三位长字符

那我们有多少个三位长的字符呢

就三位长就是每一位

它都有可能是0或者1对吧

那三位长还是说

它是一个比较简单的一个case

就是三位长会有八种不同的表达

比如说像我们这个Slide上面看到的啊

有000 001 010 以此类推一共有八种

这是原文有八种形式

那它相应的密文在区块加密的时候

就像我们刚刚讲过的

它是以k长成为单位的

而不是一个比特一个比特来做

所以呢那我们可以看的到

在这个例子上

这是给出了一种密文的对应方法

这只是一种可能

Ok那在这个例子里面呢

我们是说原文000

它对应的密文就是110

如果原文是001

它对应的密文就是111

Ok原文是010的话

它对应的密文是101以此类推

那我们现在已经列出了

八个原文和密文的这样的对应关系

在这个例子里面

那我们看一下这个原文如果是

010110001111的话如果这是原文

那根据刚刚的这个例子里面

写出来的这个对应关系

这段原文的密文应该是什么

我们三个字节三个字节的进行加密

因为它是Block cipher是区块加密

所以说这个小的问题

它的答案就是我们可以很快的找出来啊

因为我们已经给出了

它一一对应的关系

010对应的是101

所以大家可以写一下

这个密文的前三位是101

原文的第二个三位数是110

那我们就找110对应的是000

所以它的密文相应的是000

原文的第三个

三位数是001

那在上面的对应关系里面

001对应的是密文是111

所以第三段是111

那它的相应的密文

这个对应规则是001

也就是说密文的最后三位是001

大家可以把这个整个东西串下来

这就是我们这个

相应的这个密文的答案

通过这个简单的例子

我想大家应该对这个区块加密

已经有了一个非常清晰的认识

它大概是一个什么样的

那刚刚我已经提到了这个问题

就是当k=3的时候

到底有多少种一一对应的关系

K=3的时候我们知道

三个字符长的这个二维码

一共有八种这个是很简单

因为它是2的3次方对吧

n个字符长的二维码有多少种表达

就是2的n次方个表达

那当这个k=3的时候

它有多少种一一对应的关系呢

这是两个问题

ok那这个一一对应的关系

实际上是这个2的n次方的排列组合

用数学表达就是说2的k次方

或者2的n次方的阶乘Factorial

也就是说当k=3的时候

3比特长的这个字符

它呢有多少种一一对应的关系呢

就是2的3次方的阶乘

就是8的阶乘

8的阶乘 答案是40320种

四万多种对计算机而言是个小case

其实它真的是并不多的

但是呢当k=64的时候

这个数字就非常巨大了

那它的计算就极其极其复杂

我们可以想象一下

如果真的是k=64的话

我想要把它这个一一对应的关系给列出来

我们要怎么列呀

如果用图表的方法我们需要一个

有2的64次方这么多行的一个表

在这个表里面每一行

还要有64个比特长

这样大的一个表才能够进行检索

那这样的检索时间还是算起来非常慢的

所以我们就需要一些替代算法

就是当你没有办法

把所有的东西都给列举出来的时候

我们就需要用一些

Simulate a randomly permuted tables

ok下面再讲一下

这个Cipher Block Chaining区块链加密

CBC的概念

CBC的概念也是一个非常重要的概念

在这个区块加密里面

CBC呢它实际上是这样子的一个意思了

就是说当前的区块

它的加密的结果

就是它的密文是什么样的呢

这个密文取决于上一个区块的密文

如果我们用数学公式来表达的话

我们可以看的到在这个

C(i)就是第i段密文

它实际上相当于是第i段的原文

和第(i-1)段的密文结合在一起

用这个相应的这个keystream KS进行加密

这个就是区块链加密的一个核心思想

就是CBC的最重要的一个概念

就是说我当前的这一块儿的密文

它取决于i-1那一块的密文

那原文也是相同的概念

原文怎么样恢复呢

就是通过当前这一块儿的这个密文

和前一块的密文来进行

重新再做一下异或运算

和现在的密钥流进行叠加做运算

这个是区块链最核心的

最重要的一个知识点

那现在问题就来了

就是我如何对第一个区块进行加密

因为我讲了就是每一个区块

它是必须要依赖于前一个区块

那我第一个区块

我去这个依赖谁呢

这个问题解决方法就是说

我们一般第一个区块

就是基于一个随机创造的一个

Initialization vector叫做起始项IV值

ok那这个IV值我们会看到

很多实际的安全算法里面

包括这个无线的协议里面

都有提到都有用到Initialization vector

它是一个随机的起始的这样一组数

那一般呢IV值有可能它不是隐匿的

也就是说我们很有可能直接就把

IV的这个Initialization vector的值

放到一个数据包的这个表头里面去

在这个网络中就这样直接的传输

这个是没有关系的

因为知道IV值也不一定知道

后面的这个原文和密文

那我们就是有了这个IV值以后呢

对每一个信息

如果我们变换一个IV值的话

我对同样的一段信息同样的这句

Bob i love you Alice

进行区块链的加密 对吧同样的算法

但是一开始这个IV值如果不同的话

那我得到的密文也是不一样的

就是说每个信息如果我换一个IV值

用区块链加密的方法得到的密文

也是不一样的

不管它其它任何东西都是一样

它的这个Keystream可能是一样

它其它的原文都是一样的

但是因为IV值不同

它得到密文有可能是不同的

Ok那再这个Slide上面

我们可以看的到一个具体的例子了

就比如说这个当原文的

第一个区块是这个HTTP

Slide 是1.1这是原文啊

它通过blockcipher得到了一段密文

这个在上面列出来了

然后当我们加密着加密着到第17个区块

它又是同样的一段原文对吧

同样这段原文

我放到这个blockcipher里面去

有可能这个得到的呢是一样的密文

但是呢如果这个IV值是不同的话

那这两段得到的密文有可能是不一样的

当然了如果你的IV值是一样的

什么东西都不变的话

你的密文也是一样的对同样的原文

得到加密结果是一样的

我们用这个Flow chart

来表示了一下区块链加密是怎么回事

再重复一遍这个地方的一个核心思想

大家一定要记住的知识就是说

我在区块链加密里面

每一段就当前的这一个区块

它的加密的结果

是依赖于上一个区块的加密结果

这样一个关系

那在这一页上面呢

我列了两个比较重要的

共享密钥的加密算法的这个代表算法

一个是DES叫做Data Encryption Standard

另外一个呢就是AES

Advanced Encryption Standard

这两种加密算法是非常重要的

共享密钥加密算法

我建议大家能够就是坐下来

去找相关文献去做这个深入的学习

因为这个编码解码学里面

专门的课程中一般会做深入的讨论

我在这里呢

但是我还是很想介绍一下这个DES

简单的我们来讲一下DES

它是一个怎么样的一个过程

DES against us for data encryption standard

我们可以看的到呢

DES它的输入是两个部分

第一个部分就是

我们把原文分割成64比特的区块

ok那第一个输入就是说64-bie-input

这是原文的区块

第二个输入呢就是56个beat的

这个密钥 是共享密钥

还是讲DES是一个很重要很重要的

共享密钥加密算法

它不同于后面我们将要讲到的

公共密钥加密算法

这个是一个很重要的一个区别

那我们看到在DES这个算法里面呢

它拿到这个64比特的这样一个输入以后呢

它先做一部简单的permutation

就是把这些比特位进行置换

置换之后它得到一个

左边的32位和右边32位

这个时候呢我们可以看的到

这个左边的32位呢

和右边32位被分成两个小段啊

然后呢再和一开始输入的

这个56位的这个key呢

它生成一个四十八位的一个密钥段

那这个四十八位的密钥段

和这个左32位和右32位

一起被输入到一个函数里面

生成一个32位的结果

这个32位的结果就是下一步的右32位

而上一步的右32位

变成了第二步的左32位

那我们可以看的到

在这个这个Flow chart里面的第三行

这个L2和R2

实际上这个L2它就是R1

就是在这个第一步里面的

这个右32位是下一步的左32位

而新的这个右32位呢

是前面那一步的这个函数生成的结果

那我们通过这个

就光是这一步的一个简单的运算过程

我们就看的到

它实际上是一个

Safer block training的这样一个算法

就是说我现在的这个块

它的结果是依赖于上一个块的结果的

就是加密的结果的

所以就以此类推

它做16次这种相同的这样的算法

一直到最后这个L17和R17

通过这16步以后

我在最最后得到的这个结果

再做一次位数的置换

最终得到一个64位的密文

整个这个过程实际上差不多18步对吧

我们有第一步的permutation

然后16步相同的这样子的

这种函数算法

然后做交换呀 加密啊

然后再做交换在加密啊16次

然后再做最终的一次终结排列

那一共是18步的这样一个算法

最最后得到一个64个比特的

这样一个输出

这个输出就是我们最终得到的密文

就是说感觉上讲

它应该也是非常非常安全了对吧

应该已经很难破译了

但实际上也还是有破译的方法

这个是DES简介

那我想呢通过这个例子呢

给大家至少就是描述一下吧

这个共享密钥加密它是一个怎么回事

尤其呢描述一下这个区块链加密

它在实际应用中实际上是非常重要的

因为DES是一个真正用到的

在具体的这个网络安全的

很多协议里面是用到的

这样的一个加密算法

网络安全概述课程列表:

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

-第一节 电子邮件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笔记与讨论

也许你还感兴趣的课程:

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