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

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

前言

【一个讨论】前一篇博客中有提到信息安全行业的三个问题:

”Q1.我们需要保护什么样的资产?

Q2.这些资产是如何受到威胁的?

Q3.我们应当做些什么来应对这些威胁?“;

关于Q3,私信中有这样的疑惑,前一篇博客中举例:从管理人员角度,他们则会思考如何预防入侵,如何在入侵发生后使得资源损失最小化。这个例子中为何管理人员还要考虑入侵发生过后,损失最小化的问题,难道不能设计一个周全的安全机制?

对于这个问题,其实也是涉及两派观点,曾经一派认为存在一个绝对安全的系统;而另一派认为不存在一个绝对安全的系统,对于安全机制设计提升,是在不断的被突破后迭代的产物。从目前来看,后一派观点成为了实际标准。补充一下上篇博客的内容:主动攻击容易检测,但是难以预防;被动攻击(本质是监听)容易预防,但是难以检测;根据攻击的特性,不难得出:入侵是难以避免的,对于被动攻击我们可以预防,但是对于主动攻击,我们只能在检测到入侵后及时响应,降低损失。漏洞无处不在,越是复杂的机制越有可能藏污纳垢,漏洞的发现往往是敌手从另外一个角度思考了问题,看到了研发人员看不到的脆弱点,因此从管理人员角度,他们则会思考如何预防入侵,如何在入侵发生后使得资源损失最小化。

【本节内容】

本章节介绍的是密码学的入门理论,技术细节在原书的第四部分第二十章开始有介绍。本篇博客中,只对密码学进行理论模型介绍,不涉及算法细节,相关内容将在阅读原书第四部分时进行详细解析。本章节学习目标有以下几点:

1.解释对称加密算法的基本操作

2.分组加密VS流密码

===========================

3.散列函数在消息认证中的应用

4.散列函数的运用场景

===========================

5.非对称分组加密算法的基本操作

6.数字签名机制&数字信封的概念

7.随机数和伪随机数的密码学意义

1.对称加密实现机密性

在这里插入图片描述

1.1 对称加密 Symmetric Encryption

对称加密方案有五个基本成分

1.明文:想要发送的原始数据,加密算法的输入

2.密文:加密后的数据

3.加密算法:加密算法将明文和密钥作为输入,进行相应规则的运算得到密文

4.解密算法:本质是加密算法的逆运算

5.密钥:也是加密算法的输入,加密算法的运算依赖于密钥

对称加密的一种模型如下:假设Alice和Bob使用对称加密的方式交换信息,

Step 1: Alice输入明文X;

Step 2:获取密钥:K,将K和X作为加密算法 E( ) 的输入

Step 3: 得到密文Y= E( K, X)

Step 4: Bob收到密文Y,获取密钥K ,经过解密算法得到明文 X= E^-1( K, Y )
在这里插入图片描述
【原著译读】

The universal technique for providing confidentiality for transmitted or stored data

Also referred to as conventional encryption or single-key encryption

对称加密是一种为数据传输和存储提供机密性的泛用技术。其也被称作传统加密单密钥加密。(注:偶然间看到有些培训机构也将其称作私钥加密,个人认为不准确不能混用,公钥和私钥的概念是在非对称加密中提出的,公钥加密的概念20世纪70年代才提出)

Two requirements for secure use:

  1. Need a strong encryption algorithm
  2. Sender and receiver must have obtained copies of the secret key in a secure fashion and must keep the key secure

对于对称加密的安全需求存在如下两点要求

1.算法必须足够强

2.发送方和接受方必须以某种安全的方式获得密钥的副本,且双方必须保证密钥是安全的

【原著译读】

​ Attacking Symmetric Encryption:

Cryptanalytic Attacks:

Rely on:

1.Nature of the algorithm
2. Some knowledge of the general characteristics of the plaintext
3. Some sample plaintext - ciphertext pairs

Exploits the characteristics of the algorithm to attempt to deduce a specific plaintext or the key being used
(If successful, all future and past messages encrypted with that key are compromised)

Brute-Force Attacks

Try all possible keys on some ciphertext until an intelligible translation into plaintext is obtained
(On average half of all possible keys must be tried to achieve success)

​ 对于对称密码的攻击

密码分析攻击:

依赖于:

1.算法的特性

2.明文的一些一般特征

3.明文-密文对的样本

这种攻击依赖于以上几种线索,通过探索算法的一些特征,企图推演出一些特定的明文或者推演出密钥(如果推演成功,无论是未来还是过去,但凡使用这个密钥加密的数据安全性都将受到威胁)

暴力破解

对于一条密文尝试所有可能的密钥,直到获得可能的明文转化结果。(平均情况下,为了破解成果,需要尝试一半可能的密钥)也就是说,暴力破解的平均成功率是1/2.

1.2对称分组加密算法

对称分组加密的核心思想:

将明文转化成和明文等长的密文。(明文较长时将明文划分成定长的明文块,再将明文块转换成等长的密文块。
在这里插入图片描述
DES算法

DES算法采用64bit的明文分组和56bit的密钥产生64bit的密文分组

对于DES算法强度需要关注两个方面:其一,算法本身,对于算法本身至今没有发现致命弱点,因此可以认为从算法入手,DES是高强度的;其二,密钥长度,仅有56bit的长度,256种密钥可能性,采用每微秒1013次解密暴力破解,破解时间仅一小时,因此从密钥长度入手,DES算法强度有限。

3DES算法

3DES算法重复基本的DES算法三次,采用两个或三个不同的密钥(因此密钥长度为112bit或168bit),其优点是基于底层的DES算法,算法本身强度足够,密钥长度的增加也克服了DES暴力破解的问题;但也存在着缺点:1.软件实现算法的速度比较慢,并不适合语音和视频等需要低时延的场景。2.分组长度64bit,就效率和安全性,应该使用更长的分组。

AES算法

AES是分组长度为128bit的算法,其支持长度为128bit,192bit,256bit的密钥。AES算法强度本身不低于3DES,且效率有了显著的提高

三种流行的分组加密算法的比较
在这里插入图片描述
Plaintext block size :明文块长度
Ciphertext block size:密文块长度
Key size:密钥长度

暴力破解所需平均时间
在这里插入图片描述

Key size:密钥长度
cipher:加密算法
第三列:候选密钥个数
第四列:每微秒解密10^9次所需时间
第五列:每微妙解密10^13次所需时间

实际的安全问题

原书中叙述了一种 ECB 加密模式,不加以文字叙述,看图
在这里插入图片描述

针对图中问题,出现了大量其他操作模式以加强安全性(如DES的BCB模式,本篇博客不赘述,后续更新)。

1.3流密码Stream cipher

与分组密码的广义区别

借用译本中的说法:“分组密码一次处理一组元素,每个输入分组产生一个输出分组;流密码则持续的处理输入元素,每次产生一个元素的输出,持续的进行下去。” 本人从最近无休止的核酸中得到灵感绘制了如下插图帮助理解。
在这里插入图片描述

【说明】典型流密码一次处理一个字节的明文,也可被设计成一次操作大于一字节的明文。

流密码工作模型

在介绍流密码工作机制前先介绍几个名词(一次处理一字节8bit为例):

明文字节流:流密码中明文以流的形式作为加密环节的输入。

伪随机位发生器:工作于流密码加密环节,密钥输入到伪随机伪发生器中,得到一串随机的8位数。

密文字节流:明文字节流与伪随机发生器产生的8位数进行位运算,得到密文字节流。
在这里插入图片描述
密钥K输入到伪随机位发生器中产生一个8bit的序列k,将其与明文流M进行异或运算得到密文流C,密文流解密过程与明文流解密过程一致。伪随机位发生器设计合理的情况下,可以提供和分组加密算法相当的安全性,且流密码相对于分组加密算法,其速度更快,编写代码实现更简单。

1.4分组密码和流密码总结

【原著译读】

Block Cipher:

  1. Processes the input one block of elements at a time
    2. Produces an output block for each input block
    3. Can reuse keys
    4. More common

Stream Cipher

  1. Processes the input elements continuously
    2. Produces output one element at a time
    3. Primary advantage is that they are almost always faster and use far less code
    4. Encrypts plaintext one byte at a time
    5. Pseudorandom stream is one that is unpredictable without knowledge of the input key

分组密码:

1.一次处理一个明文块

  1. 一次对明文块的处理产生一个密文块

  2. 可以重复使用密钥
    4. 更加普遍使用

流密码

  1. 持续处理输入的元素

    1. 一次处理一个元素

      3.主要优点是相比于分组密码,处理速度更快,使用代码更少4.

      1. 一次加密一比特明文

        1. 伪随机流不可预测,无法知晓其输出密钥

【密码编码工具未完待续,本章涉及密码学理论,理解生涩,计划三篇博客写完(中)解决对称密码问题(下)解决一些细枝末节和课后习题】

重复使用密钥
4. 更加普遍使用

流密码

  1. 持续处理输入的元素

    1. 一次处理一个元素

      3.主要优点是相比于分组密码,处理速度更快,使用代码更少4.

      1. 一次加密一比特明文

        1. 伪随机流不可预测,无法知晓其输出密钥

【密码编码工具未完待续,本章涉及密码学理论,理解生涩,计划三篇博客写完(中)解决对称密码问题(下)解决一些细枝末节和课后习题】

  • 6
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值