04_《计算机安全原理与实践》密码编码工具(下)

04_《计算机安全原理与实践》密码编码工具(下)含本章理论性习题解答

前言

本专栏上一篇博文介绍了消息认证的机理和非对称加密体系,从实际应用角度,二者是不可分割的。本章将在上一章的基础上进行延申,主要介绍非对称加密体系在数字签名和密钥管理方面的应用。

1.数字签名

​ 当谈及这个话题,实际上有炒冷饭的嫌疑,本质上来说就是前篇博客中提到利用非对称加密技术的消息认证。以现实中的写信为例,写完信后写信者会签上自己的名字,而收信人可以根据信件上的签名字迹判断是写信者本人签名还是他人伪造的签名。在计算机通信中也存在着相似的机制,利用非对称加密中的私钥加密可以满足消息认证需求,有请Bob和Alice出场:一种方法是Bob直接对自己要发送的信息M采用私钥加密生成签名S附加到消息M中,Alice收到后取出S解密成明文和M进行对比,一致则通过。采用这种方案的弊端也相当明显:M是不定长的,生成的签名随M变化,试想M非常大,那么对M的加密和解密将耗费大量的计算机资源。

​ 应对上述问题,我们不由的就想得到一个小一点的数字签名块作为附加信息和消息一同发送,那么有没有一种方法能够统一数字签名的块的大小呢?必须得有,回忆上一篇博文介绍到的Hash函数,其能够将任意的输入数据a输出成定长的摘要h,这就为我们统一签名的大小提供了一种可行的方案:

Bob给Alice发送信息M,并通过数字签名技术提供消息认证:

Bob:

  1. 将信息通过Hash函数生成摘要h,通过Bob的私钥对h进行加密,生成签名S;

  2. 将M和S封装一同发给Alice。

Alice:

  1. 取出S,通过Bob的公钥解密得到 h1
  2. 取出M,通过Hash函数生成摘要 h2(如果没有被篡改h2和h的值是一样的)
  3. 对比 h1 和 h2 ,一样则通过认证。
    在这里插入图片描述
    ​ 在上述方案下,Bob的私钥只有Bob知道,且Hash函数具有雪崩效应(牵一发而动全身,M只要出现一点变动,输出的摘要h就发生相当大的变化),因此这种方案既能够提供消息认证也可以保证数据的完整性。但是采用这种方式的情况下,消息的机密性是不保证的:Bob的公钥是公开的,即使M也用私钥加密,任何人也能够通过公钥进行解密,因此这种方案是无法抵抗窃听的。

2.公钥证书

​ 在非对称加密体制下,私钥是自己保存的,公钥是需要通过如广播的方式告知其他发送者的,那么问题也就随之而来了。这次让Bob扮演受害者,Eve假扮成代理,拦截了Bob的公钥,并声称自己是Bob而将公钥发送给其他人,那么这样一来其他用户想要发送给Bob的信息就能够被Eve给解读,直到Bob发现自己被截胡。在没有措施的模型中,公钥是不可信的,公钥证书正是为了使得公钥可信而诞生的。步骤如下:

1.发送者将自身的公钥提供给三方机构(CA)获得CA证书,之后将CA证书相关信息、发送者的公钥和发送者的ID通过Hash函数生成未签名的证书

2.通过CA机构的私钥对未签名的证书加密生成签名的证书。

3.将签名的证书、CA证书相关信息、发送者的公钥和发送者的ID一同发送给接收者

4.接收者取出签名的证书用CA机构的公钥解密得到h1,取出CA证书相关信息、发送者的公钥和发送者的ID通过Hash运算生成h2,对比h1和h2,如果一致说明收到的公钥可信,否则不可信。

换而言之,其实所谓公钥证书就是利用三方机构的数字签名技术担保公钥的真实性。
在这里插入图片描述

​ 常见的算法SSH,TLS,说句题外话:Burpsuite默认不能抓取HTTPS数据包的原因也在这里,在这里不得不提一嘴HTTP和HTTPS的相关知识:

​ 超文本传输协议HTTP定义了浏览器怎样向万维网服务器请求万维网文档,以及服务器如何将文档传输给浏览器。其工作在应用层,是万维网能够可靠交换文件的重要基础,由于其要求可靠传输,因此基于TCP协议。
在这里插入图片描述

​ HTTPS是指HTTP和SSL(或TLS)的组合,本质上可以理解成加密的HTTP协议,用以实现Web浏览器和服务器之间的安全通信。一旦使用HTTPS,通信中以下元素将被加密:被请求文档的URL、文档内容、浏览器表单内容、Cookie、HTTP头的内容。综上我们可以大概理解成HTTP是裸奔的,传输数据以明文传输;而HTTPS穿了件马甲。
在这里插入图片描述
​ 由于存在了安全套接层协议,所以Burpsuite想要抓取HTTP协议需要配置CA证书。具体关于网络相关知识,将在后续博文更新。

3.数字信封

​ 终于来到了这个话题,回归到对称加密,先前所有场景中我们都假设双方的密钥是绝对安全的,那么实际中密钥的共享是需要一些安全交换机制来实现的。假设Bob和Alice通过对称加密的方式传递信息,那么问题来了:Bob如何实现和Alice的密钥共享?答:可以坐飞机送过去!(认真脸)
在这里插入图片描述
当然,从技术角度,我们可以用非对称加密实现密钥的共享,这也就是所谓的数字信封技术:

1.发送者准备信息

2.发送者产生一个一次性的对称密钥

3.用一次性的密钥对信息加密

4.用接收者的公钥加密一次性密钥并将其与加密后的信息一同发送

5.接收者收到消息后用私钥解密得到一次性密钥,并用其对加密后的消息解密得到明
在这里插入图片描述
至此本章重点内容已经结束,关于书本上还有随机数和伪随机数的讨论,因为不涉及技术细节,讨论的意义不大,在后续阅读chapter 21时整理介绍,这里根据原著概括一下,就是随机数和伪随机数很重要(真的不是我懒得写,不信去看原著)

Questions

2.1 明文、加密算法、密钥、密文、解密算法。

2.2 一个密钥

2.3(1)是一个强加密算法;(2)发送方和接收方必须以一种安全的方式获得了该密钥的副本,并且必须保证该密钥的安全。

2.4 消息加密、消息认证码、哈希函数

2.5一种验证器,它是要验证的数据和密钥的加密功能。

2.6(a)哈希码从源消息中计算出来,使用对称加密和密钥进行加密,并附加到消息中。在接收端处,会计算出相同的哈希代码。传入的代码使用相同的密钥进行解密,并与计算出的哈希代码进行比较。(b)这与(a)中的过程相同,只是使用了公钥加密;发送方用发送方的私钥加密哈希码,接收方用发送方的公钥解密哈希码。©将秘密值附加到消息中,然后使用消息加秘密值作为输入计算哈希代码。然后,将传输消息(不包含秘密值)和哈希码。接收方将相同的秘密值附加到消息中,并计算消息上的哈希值加上秘密值。然后将其与接收到的哈希代码进行比较。

2.7 1.H可以应用于任何大小的数据块。 2.H产生一个固定长度的输出。 3.H(x)对于任何给定的x都相对容易计算,这使得硬件和软件的实现都很实用。 4.对于任何给定的值h,在计算上都不可行地找到x这样的h(x)=h.5的值。对于任何给定的块x,用H(y)=H(x)找到y=x在计算上是不可行的。 6.在计算上,找到任何一对(x,y),使H(x)=H(y)是不可行的

2.8明文:这是作为输入的可读消息或数据。加密算法:加密算法对明文进行各种转换。公钥和私钥:这是一对已被选择的密钥,如果其中一个用于加密,另一个则用于解密。由加密算法所执行的精确转换取决于作为输入提供的公钥或私钥。密文:这是作为输出而产生的受干扰的消息。这取决于明文和键。对于一个给定的消息,两个不同的密钥将产生两个不同的密文。解密算法:该算法接受密文和匹配密钥,并生成原始明文。

2.9加密/解密:发送方使用收件人的公钥对消息进行加密。数字签名:发送方用其私钥“签名”一条信息。签名是通过应用于消息或作为消息函数的一小块数据的加密算法来实现的。密钥交换:双方合作交换一个会话密钥。可以有几种不同的方法,涉及到一方或双方的私钥。

2.10在传统加密中使用的密钥通常被称为秘密密钥。用于公钥加密的两个密钥被称为公钥和私钥。

2.11数字签名是一种身份验证机制,它使消息的创建者能够附加作为签名的代码。签名是通过获取消息的哈希值并使用创建者的私钥加密消息来形成的。该签名保证了消息的来源和完整性。

2.12公开密钥证书由公钥和密钥所有者的用户ID组成,整个块由受信任的第三方签名。通常,第三方是受用户社区信任的证书颁发机构(CA),如政府机构或金融机构。

2.13可以有几种不同的方法,涉及一方或双方的私钥。一种方法是差异-海尔曼密钥交换。另一种方法是让发送方使用收件人的公钥加密一个密钥。

【本章的problem部分基本是一些位运算和密码学入门的数学游戏,在整本书理论过完后视情况更新,如果是考研需要,关注本系列博文理论和技术类问题的解答,评论或私信我讨论就好】

  • 4
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值