密码学笔记2

在这里插入图片描述

认证的重点

在这里插入图片描述

单向散列函数

怎么保证“是真的?"
现在假设小明以前写来一个文件保存到硬盘,它的文件可能面临被攻击之后遭到篡改,那它怎么证明现在他手上的文件没有遭到篡改的呢?文件是真的,“是真的”的性质称为完整性,也称为一致性。
在这里插入图片描述
通过单向散列函数生成散列值,对比前后的散列值,来确保消息的完整性一致性。
在这里插入图片描述

什么是单向散列函数

输入(消息/原像)——单向散列函数(消息摘要,哈希函数,杂凑函数)——输出(散列值/指纹)

单向散列函数可以根据消息的内容计算出散列值,而散列值(值要)可以用来检查消息的完整性。

单向散列函数也称为消息摘要、哈希函数或者杂凑函数。

输入单向散列函数的消息也称为原像。单向散列函数输出散列值也称为消息摘要或者指纹。完整性也称为一致性。
在这里插入图片描述

注意:
1.两个不同的消息产生同一个散列值的情况称为碰撞。如果要将单向散列函数用于完整性的检查,则需要确保事实上不可能人为地发现碰撞。
2.单向函数的性质:
根据任意长度的消息计算出固定长度的散列值; b.能够快速计算出散列值; c.消息不同散列值也不同(这里有可能两个不同的消息会产生同一个散列值)

单向散列函数具有单向性
在这里插入图片描述

单向散列函数(摘要算法)

在这里插入图片描述
在这里插入图片描述

消息认证(MAC)

message authorization code——MAC简写
消息认证码是一种与密钥相关联的单向散列函数。
计算MAC值必须持有共享密钥,没有共享密钥的人就无法计算出MAC值,消息认证码正是利用这一性质来完成认证的。
在这里插入图片描述

消息认证码的使用步骤

首先共享密钥。然后发送方使用消息认证码(单向散列函数+共享密钥)生成MAC值,接收方从接收到的消息中也使用消息认证码生成MAC值,两个MAC值进行比对。相同则成功,说明消息的完整性一致性。
在这里插入图片描述

在这里插入图片描述

消息认证码的应用实例

在这里插入图片描述

消息认证码的实现方法

a.使用单向散列函数实现:使用SHA-2之类的单向散列函数可以实现消息认证码。

b.使用分组密码实现:使用AES之类的分组密码可以实现消息认证码。

HMAC:

是一种使用单向散列函数来构造消息认证码的方法(RFC2104),其中HMAC的H就是Hash的意思

HMAC使用的单向散列函数并不局限于一种,任何高强度的单向散列函数都可以被用于HMAC,如果将来设计出新的单向散列函数,也同样可以使用。

在这里插入图片描述

对消息认证码的攻击

重放攻击
在这里插入图片描述

数字签名

我有两把钥匙,一把公钥,一把私钥。
我把公钥分别分给妈妈,爸爸。

当妈妈想给我发送一封保密的信息时:
首先用我给妈妈的公钥进行加密形成密文——密文发送给我——我用自己的私钥进行解密——生成明文,就可以看到信的内容了。

只要我的私钥不泄露,这封信就是安全的,即使落在别人手里,也无法解密。

当我想要给妈妈发送保密信息时:
(我这里只有私钥)

采用数字签名的办法(数字签名,可以理解为,在信息上签上自己的大名)

首先hash函数(单向散列函数)生成信息的摘要值h1(来确保后续的信息完整性)——然后使用自己的私钥对摘要进行加密生成数字签名——然后把数字签名附在信息下来一起发送给妈妈——妈妈收到后,先用我的公钥对数字签名进行解密,得到信件的摘要(大名),确定是我发的,信件上是我的名字。(首先确定信是不是我发的)——然后要确定信息的内容是否更改,对信件本身使用hash函数,得到的结果h2值与上一步得到的摘要h1进行对比,如果一样h1=h2就证明没被修改过。

在这里插入图片描述

数字证书

公钥对数字签名进行解密
如果确保妈妈手里的公钥是我的呢?
我的公钥+认证中心的私钥——生成数字证书
在这里插入图片描述
我拿到数字证书以后,就可以放心了。以后再给妈妈写信,只要在签名的同时,再附上数字证书就行了。

公钥就被包含在数字证书中,数字证书通常来说是由受信任的数字证书颁发机构CA,在验证服务器身份后颁发,证书中包含了一个密钥对(公钥和私钥)和所有者识别信息。数字证书被放到服务端,具有服务器身份验证和数据传输加密功能。

数字证书的实例

网页加密
我们看一个应用“数字证书”的实例:https协议。这个协议主要用于网页加密

总结

实际上,数字签名是保证数据完整性的,但它不保证数据加密,不保证数据传输途中无人嗅探窃听。

好比一辆敞篷大货车从A开到B,中途没有洒落任何东西,完整性得到了保证。但是车上有什么东西也被路人看光光。

数据加密是从A到B建了一条虚拟隧道,货车在里面开,路人谁也不知道是什么东西。

车子到了B后,送货的人给出自己的身份证,证明自己的确是从A来的。收货的人可以选择相信这个身份证。也可以把身份证放到自己的身份证校验仪查询,看看是不是公安部发的真的身份证。

如果你的身份证校验仪(CA)已经是假的了,那就啥都别说了,重装系统吧。
笔记

几种攻击的定义

唯密文攻击 (Ciphertext-only Attack)。
已知明文攻击 (Known-plaintext Attack)。
选择明文攻击 (Chosen-plaintext Attack)。
选择密文攻击 (Chosen-ciphertext Attack)。

以上攻击强度自上至下由弱到强。选择密文攻击和选择明文攻击的不同之处就是加解密方向不同。

选择明文攻击:就是说,如你在敌方那边安插了一个卧底,这个卧底发送一些消息,加密以后给我,我通过这个加密的消息,盗取的密文,通过一些途经可以知道对方的加密算法,反推密钥。

选择密文攻击:你有了另一种权限,可以选择一段密文让人家解密以后给你看,这是选择密文攻击。
在这里插入图片描述

多方安全计算

大致可归为两类:一类是基于噪音的,另一类不是基于噪音的

基于噪音的安全计算方法,最主要代表是目前很火的差分隐私(differential privacy)。这类方法的思想是,对计算过程用噪音干扰,让原始数据淹没在噪音中,使别有用心者无法从得到的结果反推原始数据。这就好像我们拿到一张打了马赛克的图片,虽然可能可以猜出马赛克后面大概长啥样,但很难知道马赛克后面的所有细节。

非噪音方法一般是通过密码学方法将数据编码或加密,得到一些奇怪的数字,而且这些奇怪的数字有一些神奇的性质,比如看上去很随机但其实保留了原始数据的线性关系,或者顺序明明被打乱但人们却能从中很容易找到与原始数据的映射关系。

这一类方法主要包括三种:混淆电路(Garbled Circuit)、同态加密(Homomorphic Encryption)和密钥分享(Secret Sharing)。这些方法一般是在源头上就把数据加密或编码了,计算操作方看到的都是密文,因此只要特定的假设条件满足,这类方法在计算过程中是不会泄露信息的。

相比于前一类基于噪音的方法,这种方法的优点是不会对计算过程加干扰,因此我们最终得到的是准确值,且有密码学理论加持,安全性有保障,缺点则是由于使用了很多密码学方法,整个过程中无论是计算量还是通讯量都非常庞大,对于一些复杂的任务(如训练几十上百层的CNN等),短时间内可能无法完成

猜你喜欢

转载自blog.csdn.net/weixin_45942265/article/details/119255047
今日推荐