文章目录

  • M 记忆的部分
    • 1 计算机安全核心的三个目标:CIA 三元组
    • 2 一次一密 OTP(one time password)
    • 3 对称密码与非对称密码的对比
    • 4 分组加密工作模式
    • 5 AES(Advanced Encryption Standard)基本结构
    • 6 传统密码攻击手段
    • 7 PKI 的基本概念和构成
    • 8 访问控制策略
    • 9 MD5 算法的基本概念
    • 10 HASH算法的概念和特征
    • 11 hash函数概念及应用
    • 12 分组密码和流密码的差别
    • 13 哈希和加密之间的区别
    • 14 数字证书的基本概念
    • 15 重放攻击
    • 16 消息摘要如何产生
    • 17 对加密信息的攻击类型
    • 18 加密中混淆和扩散的区别
    • 19 链路加密和端到端加密的区别
  • U 理解的部分
    • 1 传统加密技术
      • 1.1 代替技术
      • 1.2 置换技术
    • 2 DES(Data Encryption Standard)基本结构
    • 3 RSA 计算
      • 3.1 密钥的生成
      • 3.2 加密过程
      • 3.3 解密过程
      • 3.4 实战做题
    • 4 生日攻击
    • 5 迪菲-赫尔曼(Diffie-Hellman)密钥交换相关计算
    • 6 公钥密码实现数据保密性、认证

M 记忆的部分

1 计算机安全核心的三个目标:CIA 三元组

  • 保密性(Confidentiality) ——数据保密性、隐私性
  • 完整性(Integrity)——数据完整性、系统完整性
  • 可用性(Availability)

2 一次一密 OTP(one time password)

又称动态密码单次有效密码,使用与消息一样长度且无重复的随机密钥来加密信息。它仅是在维吉尼亚加密码上增加以下条件:

  1. 密钥要和加密的消息同样长
  2. 密钥由真正的随机符号组成
  3. 密钥只能使用一次,永远不对其它消息重复使用

3 对称密码与非对称密码的对比

对称密码 非对称密码
基本概念 加密算法是公开的,靠的是秘钥来加密数据,使用一个秘钥加密,必须使用相同的秘钥才解密。 加密和解密使用不同的秘钥,一把公开的公钥,一把私有的私钥。公钥加密的信息只有私钥才能解密,私钥加密的信息只有公钥才能解密。
组成部分 明文、密钥、加密算法、密文、解密算法 明文、公钥和私钥、加密算法、密文、解密算法
常用算法 AES、DES、3DES、Blowfish RSA、DSA、ECDSA(椭圆曲线签名算法)
优点 算法公开、计算量小、加密速度快、加密效率高 安全,即使密文被拦截、公钥被获取,但是无法获取到私钥,也就无法破译密文。作为接收方,务必要保管好自己的密钥。
缺点 在数据传送前,发送方和接收方必须商定好秘钥,然后使双方都能保存好秘钥 加密算法及其复杂,安全性依赖算法与密钥,而且加密和解密效率很低。

4 分组加密工作模式

电码本模式 Electronic Codebook(ECB)

密文分组链接模式 Cipher Block Chaining(CBC)

密码反馈模式 cipher feedback mode(CFB)

输出反馈模式 output feedback(OFB)

计数器模式 Counter Mode(CTR)

5 AES(Advanced Encryption Standard)基本结构

  • 明文分组的长度:16 字节(128 bit)
  • 密钥长度:16(128 bit),24(192 bit)或者32字节(256 bit)。
  • 密钥长度会改变算法循环次数,分别对应 10 / 12 / 14 轮循环
  • 根据密钥的长度,算法被称为 AES-128,AES-192或者AE-256。

6 传统密码攻击手段

  1. 密码分析学:依赖算法性质和明文一般特征、某些明密文对,推导特定的明文或密文
    唯密文攻击、已知明文攻击、选择明文攻击、选择密文攻击、选择文本攻击

  2. 穷举攻击:依赖算法性质和明文一般特征、某些明密文对,推导特定的明文或密文

7 PKI 的基本概念和构成

概念:公钥基础设施 Public Key Infrastructure(PKI)为一组用于管理证书和公私钥对的策略、流程、服务器平台、软件和工作站,功能包括转发、维护和撤销公钥证书。

构成

  1. 认证机构(CA)
  2. 证书库
  3. PKI 应用接口系统
  4. 密钥备份及恢复系统
  5. 证书作废系统

8 访问控制策略

  1. 自主访问控制 DAC
  2. 强制访问控制 MAC
  3. 基于角色的访问控制 RBAC

9 MD5 算法的基本概念

MD5(消息摘要算法)是一种单向加密函数,它接受任意长度的消息作为输入,并返回一个固定长度的摘要值作为输出,用于验证原始消息。

MD5算法的原理可简要的叙述为:MD5 码以 512 位分组来处理输入的信息,且每一分组又被划分为 16 个 32 位子分组,经过了一系列的处理后,算法的输出由四个 32 位分组组成,将这四个 32 位分组级联后将生成一个 128 位散列值。

10 HASH算法的概念和特征

概念:Hash算法,简称散列算法,也称为哈希算法,是将一个大文件映射成一个小串字符。与指纹一样,就是以较短的信息来保证文件的唯一性的标志,这种标志与文件的每一个字节都相关,而且难以找到逆向规律。

特点

  • 正向快速:给定明文和 hash 算法,在有限时间和有限资源内能计算出 hash 值。

  • 逆向困难:给定(若干) hash 值,在有限时间内很难(基本不可能)逆推出明文。

  • 输入敏感:原始输入信息修改一点信息,产生的 hash 值看起来应该都有很大不同。

  • 冲突避免:很难找到两段内容不同的明文,使得它们的 hash 值一致(发生冲突)。即对于任意两个不同的数据块,其hash值相同的可能性极小;对于一个给定的数据块,找到和它hash值相同的数据块极为困难。

11 hash函数概念及应用

概念哈希函数 HHH 使用变长数据分组 MMM 作为输入,生成定长结果 h=H(M)h=H(M)h=H(M),这一结果也称为哈希值哈希码

哈希函数的主要目标是保证数据的完整性
MMM 的任何一位或几位的改变都会极大地改变其哈希码。
哈希函数经常被用于判断数据是否已经被篡改


应用:

  • 消息认证
  • 数字签名
  • 生成单向口令文件
  • 入侵检测
  • 病毒检测

12 分组密码和流密码的差别

分组密码将明文首先进行分组,然后每次对一个分组进行加密,其中分组长度取决于分组加密算法。
流密码一次加密 1 bit 或 1 Byte 的明文

13 哈希和加密之间的区别

最⼤的区别:哈希是真正不可逆的,加密是可逆的
⽤途不同:如果被保护数据仅仅⽤作⽐较验证,在以后不需要还原成明⽂形式,则使⽤哈希;如果被保护数据在以后需要被还原成明⽂,则需要使⽤加密。

14 数字证书的基本概念

数字证书是指在互联网通讯中标志通讯各方身份信息的一个数字认证,人们可以在网上用它来识别对方的身份。因此数字证书又称为数字标识。数字证书保证了信息和数据的完整性和安全性。

15 重放攻击

概念
重放攻击(Replay Attacks)又称为重播攻击、回放攻击,一般是攻击者截获数据包后,无法解密数据,但可以把数据包和业务间的关系进行猜测,重新发送相同数据包,来达到欺骗系统的目的,主要用于身份认证过程、破坏认证的正确性。

重放攻击可以由发起者、或拦截方进行。拦截方进行的重放攻击又称为中间人攻击。

重放攻击基于网络嗅探。很多时候嗅探到的数据是加密过的,但攻击者虽然无法解密,但如果攻击者知道数据的意义,就可以发送这些数据来攻击接收端。

类型

  • 直接重放,即重放原来的验证端,直接重放的发送方和接收方均不变
  • 反向重放,将原本发给接收方的消息反向重放给发送方
  • 第三方重放,将消息重放给域内的其它验证端。

16 消息摘要如何产生

对一份数据,进行一个单向的 Hash 函数,生成一个固定长度的 Hash 值,这个值就是这份数据的摘要,也称为指纹。

常见的摘要算法有: MD5、SHA-1、SHA-256 等

17 对加密信息的攻击类型

唯密文攻击
定义:知道密文的情况下进行分析,求解明文或密钥的密码分析方法。
简单理解:只知道密文,推出明文或密钥,一般用穷举攻击。

已知明文攻击
定义:指攻击者掌握了部分的明文 M 和对应的密文 C,从而求解或破解出对应的密钥和加密算法。
简单理解:知道部分的明文和密文对,推出密钥和加密算法。

选择明文攻击
定义:指攻击者除了知道加密算法外,还可以选定明文消息,从而得到加密后的密文,即知道选择的明文和加密的密文,但是不能直接攻破密钥。
简单理解:知道明文就知道密文,目标为推出密钥。

选择密文攻击
定义:指攻击者可以选择密文进行解密,除了知道已知明文攻击的基础上,攻击者可以任意制造或选择一些密文,并得到解密的明文,是一种比已知明文攻击更强的攻击方式。
若一个密码系统能抵抗选择密文攻击,那必然能够抵抗COA和KPA攻击。密码分析者的目标是推出密钥,CCA主要应用于分析公钥密钥体制。
简单理解:知道密文就知道明文,目标为推出密钥。

18 加密中混淆和扩散的区别

扩散尽可能地使明文密文间的统计关系变得复杂,
混淆则是尽可能使密文加密密钥间的统计关系更加复杂,以阻止攻击者发现密钥。

19 链路加密和端到端加密的区别

链路加密:链路加密是传输数据仅在数据链路层进行加密。接收方是传送路径上的各台节点机,信息在每台节点机内都要被解密和再加密,依次进行直至到达目的地。

端到端加密:端到端加密允许数据在从源点到终点的传输过程中始终以密文形式存在。采用端到端加密 (又称脱线加密或包加密)消息在被传输时到达终点之前不进行解密,因为消息在整个传输过程中均受到保护,所以即使有节点被损坏也不会使消息泄露。

区别

  1. 端到端加密系统的价格便宜些,并且与链路加密相比更可靠,更容易设计、实现和维护。

  2. 端到端加密还避免了其它加密系统所固有的同步问题,因为每个报文包均是独立被加密的,所以一个报文包所发生的传输错误不会影响后续的报文包。

  3. 此外,从用户对安全需求的直觉上讲端到端加密更自然些。单个用户可能会选用这种加密方法,以便不影响网络上的其他用户,此方法只需要源和目的节点是保密的即可。端到端加密系统通常不允许对消息的目的地址进行加密,这是因为每一个消息所经过的节点都要用此地址来确定如何传输消息。由于这种加密方法不能掩盖被传输消息的源点与终点,因此它对于防止攻击者分析通信业务是脆弱的。

U 理解的部分

1 传统加密技术

1.1 代替技术

凯撒(Caesar)密码: 将字母表中的每个字母,由它之后的第 3 个字母来代替。

单表代替密码:每条信息用一个字母表(给出从明文字母到密文字母的映射)加密。
通过字母频率破解对单表代替密码最有效

Playfair密码

密钥生成:由关键字组织的 5 × 5 的字母矩阵(不含 J)—— 将密钥词去掉重复字母后从左至右、从上至下填在矩阵格子里,再将剩余的字母按字母表的顺序从左到右、从上至下填在矩阵剩下的格子中。
例如,关键词为 cipher,则密钥为:

明文整理:Playfair cipher was actually invented by wheatston
step1:J 被 I 代替
step2:对明文两个两个进行分组,如果该字母对的两个字母是相同的,那么在它们之间加一个填充字母(这里填充 X),最后一个分组如果只有一个字母,在后面加一个字母(这里同样填充 X)。
PL AY FA IR CI PH ER WA SA CT UA LX LY IN VE NT ED BY WH EA TS TO NX

加密过程:对每一对字母分别按照下面规则加密
① 落在矩阵同一行的明文字母对中的字母由其右边的字母代替。
② 落在矩阵同一列的明文字母对中的字母由其下面的字母代替
③ 其他情况:该字母所在行为密文所在行,另一字母所在列为密文所在列 (口诀:本行他列)
密文:BS DW RB CA IP HE CF IK QB HO QF SP MX EK ZC MU HF DX YI IF UT UQ LZ

Hill密码:明文字母通过线性变换转换为秘文字母

加密规则

  1. 将明文的每一个字母转化为数字(A-0)
  2. 将明文转化为一个 1×n1 × n1×n 的矩阵 PPP
  3. C=PKmod26C=PK\ mod\ 26C=PK mod 26 (KKK 为 nnn 阶密钥矩阵)
  4. 将这个 CCC 转化为密文

解密规则:P=CK−1mod26P=CK^{-1}\ mod\ 26P=CK−1 mod 26

维吉尼亚(Vignerere) 密码

  1. 已知密钥有 NNN 个字符,K=(k1,k2,…,kN)K=(k_1,k_2,…,k_N)K=(k1​,k2​,…,kN​)
  2. 将明文 MMM 按照 NNN 个字符为一组,分为 LLL 段,M=(M1,M2,…,ML)M=(M_1,M_2,…,M_L)M=(M1​,M2​,…,ML​)
  3. 求密文 CCC,Cij=(kj+mij)mod26C_{ij}=(k_j+m_{ij})mod\ 26Cij​=(kj​+mij​)mod 26

1.2 置换技术

特点: 保持明文的所有字符不变,只是打乱了位置和次序。

列置换密码:将明文按照固定宽度 nnn 按行写出,而后按照密钥的规则按列换位。
周期置换密码:将明文 mmm 按照固定长度分组,对每组的字串按照某个置换重新排列从而得到密文。

2 DES(Data Encryption Standard)基本结构

输入:明文(64位)、密钥(56位)
(实际上该密码函数希望采用 64 位的密钥,然而却仅仅采用了 56 位,其余 8 位可以用作奇偶校验或随意设置)

明文的处理:

  1. 初始置换
  2. 进行 16 轮相同函数,最后一轮左半部分和右半部分互换产生预输出。
  3. 预输出逆初始置换。

密文产生过程:

  1. 置换选择 1 —— 将 64 位密钥去掉 8 个校验位,用密钥置换矩阵 PC1_11​ 置换剩下的 56 位密钥,将 56 位分成前 28 位 C0_00​ 和后 28 位 D0_00​;
  2. 循环左移 —— 根据轮数,这两部分分别循环左移 1 位或 2 位;
  3. 置换选择 2 —— 移动后,将两部分合并成 56 位后通过压缩置换矩阵 PC2_22​ 后得到 48 位子密钥

    参考:DES加密算法

3 RSA 计算

参考:吴师兄学算法.图解|什么是RSA算法

3.1 密钥的生成

RSA 算法的密钥是成对的,公钥加密私钥解密,来看下这对密钥是如何被计算出来的。

  • step1: 随机选择两个质数 PPP 和 QQQ
    我们选择 P=61,Q=53P=61,Q=53P=61,Q=53,
    计算 PPP 和 QQQ 的乘积 N=PQ=61×53=3233N=PQ=61×53=3233N=PQ=61×53=3233,
    将N转换为二进制:110010100001110010100001110010100001,
    N的二进制长度是 12,也就是密钥长度为 12。
  • step2: 求 NNN的欧拉函数值 MMM
    前提知识:
    欧拉函数 φ(n)\varphi(n)φ(n) 的定义:任意给定正整数 n,请问在小于等于 n 的正整数之中,有多少个与 n 构成互质关系。
    如果 n 是质数,则 φ(n)=n−1\varphi(n)=n-1φ(n)=n−1
    M=φ(n)=φ(P×Q)=φ(P)φ(Q)=(P−1)(Q−1)=60×52=3120M=\varphi(n)=\varphi(P×Q)=\varphi(P)\varphi(Q)=(P-1)(Q-1)=60×52=3120M=φ(n)=φ(P×Q)=φ(P)φ(Q)=(P−1)(Q−1)=60×52=3120
  • step3: 找一个与 MMM 互素的整数 EEE
    MMM 和 EEE 之间除了 1 以外没有公约数(互质)且E<ME<ME<M,我们随机选择 EEE 为 17。
  • step4: 找一个整数 DDD
    满足:(E×D)modM=1(E×D) mod M = 1(E×D)modM=1 (模逆元)
    当 E=17,M=3120,K=1,2,3...E=17,M=3120,K=1,2,3...E=17,M=3120,K=1,2,3... 时,17×D−K×M=117×D - K×M = 117×D−K×M=1,求解这个方程找到一组满足关系的 DDD 和 KKK 即可,
    可证其中一组为 (D,K)=(2753,15)(D,K)=(2753,15)(D,K)=(2753,15)。

综上所述,我们找到了通过随机选择的互质的 PPP 和 QQQ 计算得到 N、M、E、DN、M、E、DN、M、E、D,(E,N)(E,N)(E,N) 和 (D,N)(D,N)(D,N) 分别为公钥组私钥组


在本例中公钥组为 (E,N)=(17,3233)(E,N)=(17,3233)(E,N)=(17,3233),私钥组 (D,N)=(2753,3233)(D,N)=(2753,3233)(D,N)=(2753,3233),接下来我们将使用这对密钥进行加解密。

3.2 加密过程

XEmodN=YX^E mod N = YXEmodN=Y
其中 XXX 为明文,EEE 为公钥,NNN 为大整数,YYY 为密文

3.3 解密过程

我们获得密文 YYY 后,开始解密:
YDmodN=XY^D mod N = XYDmodN=X
其中 YYY 为密文,DDD 为私钥,NNN 为大整数,XXX 为明文

3.4 实战做题

采用RSA算法,其中 e=7, p=11, q=13, 求出公钥和私钥,并求出明文85进行加密后的密文

n=p×q=143n = p × q =143n=p×q=143
m=φ(n)=(p−1)(q−1)=120m = \varphi(n) = (p-1)(q-1)=120m=φ(n)=(p−1)(q−1)=120
ddd 要满足 (e×d)(e×d)(e×d) mod m=1m=1m=1,解得一个解 d=103d=103d=103
则公钥为 (n,e)=(143,7)(n,e)=(143,7)(n,e)=(143,7),私钥为 (n,d)=(143,103)(n,d)=(143,103)(n,d)=(143,103)
对 85 进行加密:85785^7857 mod 143=123143=123143=123

4 生日攻击

生日悖论是指在不少于 23 个人中至少有两人生日相同的概率大于 50%,这个概率比我们想象的要大许多。

生日悖论的数学理论被应用于设计密码学攻击方法——生日攻击。
生日悖论普遍的应用于检测哈希函数:NNN 位长度的哈希表可能发生碰撞测试次数不是 2N2^N2N 次而是只有 2N/22^{N/2}2N/2次.

5 迪菲-赫尔曼(Diffie-Hellman)密钥交换相关计算

参考:DH算法 | 迪菲-赫尔曼Diffie–Hellman 密钥交换

实战:密钥交换中所使用的素数 q=353q=353q=353,它的一个本原根 α=3\alpha=3α=3,A 和 B 分别选择密钥 XA=97X_A=97XA​=97 和 XB=233X_B=233XB​=233,计算公共的秘密钥。

答:
A 给出的公钥:YA=αXAY_A=\alpha^{X_A}YA​=αXA​ mod q=397q=3^{97}q=397 mod 353=40353=40353=40
B 给出的公钥:YB=αXBY_B=\alpha^{X_B}YB​=αXB​ mod q=3233q=3^{233}q=3233 mod 353=248353=248353=248
A 和 B 交换公钥后,双方均可计算出公共的秘密钥:
A 计算秘密钥:K=(YB)XAK=({Y_B})^{X_A}K=(YB​)XA​ mod q=24897q=248^{97}q=24897 mod 353=160353=160353=160
B 计算秘密钥:K=(YA)XBK=({Y_A})^{X_B}K=(YA​)XB​ mod q=40233q=40^{233}q=40233 mod 353=160353=160353=160
因此秘密钥 K=160K=160K=160

6 公钥密码实现数据保密性、认证


密码编码学与网络安全期末考试笔记相关推荐

  1. 《密码编码学与网络安全》William Stalling著---学习笔记(二)【知识点速过】【数字签名+密钥管理分发+用户认证】

    提示:博文有点长,请保持耐心哦~ 前一篇文章: <密码编码学与网络安全>William Stalling著-学习笔记(一)[知识点速过][传统密码+经典对称加密算法+经典公钥密码算法+密码 ...

  2. 《密码编码学与网络安全》William Stalling著---学习笔记(三)【知识点速过】【网络安全与Internet安全概览】

    提示:博文有点长,请保持耐心哦~ 前两篇文章: <密码编码学与网络安全>William Stalling著-学习笔记(一)[知识点速过][传统密码+经典对称加密算法+经典公钥密码算法+密码 ...

  3. 爬虫期末考试笔记(选择题)

    常用获取数据的方式? 企业产生的数据 数据平台购买的数据 政府.机构公开的数据 数据管理公司的数据 爬虫的概念? 网络爬虫又称为网页蜘蛛.网络机器人是一种按照一定的规则自动请求万维网网站并提取网络数据 ...

  4. 【密码学Sage代码】椭圆曲线加密/解密(基于《密码编码学与网络安全——原理与实践(第七版)》)

    [密码学Sage代码]椭圆曲线加密/解密(基于<密码编码学与网络安全--原理与实践(第七版)>) 教材内容: 实践的Sage代码: #[静水流深Sage代码]使用椭圆曲线密码体制进行加密/ ...

  5. 密码编码学与网络安全(2):对称密码之传统加密技术

    对称密码之传统加密技术 关于对称加密 对称密码模型 密码编码学 密码分析学与穷举攻击 古典加密算法 代替技术 置换技术 转轮机 隐写术 关于对称加密 对称加密,也称为传统加密或单密钥加密,是20世纪7 ...

  6. 密码编码学与网络安全——原理与实践(第八版)——第一章:信息与网络安全概念

    密码编码学与网络安全--原理与实践(第八版) 第一章:信息与网络安全概念 1.1网络空间安全.信息安全和网络安全 1.2OSI安全架构 1.3安全攻击 1.4安全服务 1.5安全机制 1.6密码学 1 ...

  7. 密码编码学与网络安全———原理与实践(第八版)第三章笔记

    第3章 传统加密技术 学习目标 简要介绍对称密码的主要概念. 解释密码分析和穷举攻击的差异. 理解单表代替密码的操作. 理解多表代替密码的操作. 简要介绍Hill密码. 目录 第3章 传统加密技术 3 ...

  8. 密码编码学与网络安全----原理与实践(第八版)---第9章笔记

    第九章 公钥密码学与RSA 学习目标: 概述公钥密码体制的基本原理. 阐述公钥密码体制的两个不同应用. 列举和解释公钥密码体制的要求. 概述RSA算法. 理解计时攻击. 总结算法复杂性的相关问题. 公 ...

  9. 计算机网络安全期末考试华南理工,华南理工软件学院2015期末考试-计算机网络B卷.doc...

    文档介绍: NurfürdenpersönlichenfürStudien,Forschung,zukommerziellenZweckenverwendetwerden.姓名学号学院专业座位号(密封 ...

最新文章

  1. 预热学习率的作用warmup
  2. 光流估计:从传统方法到深度学习
  3. A Faster Volatile
  4. 一个简单的 Hello world! 例子使用 boost::mpi::group 和 boost::mpi::broadcast()
  5. 使用单例模式加载properties文件
  6. c++ primer 4.4节练习答案
  7. Zookeeper分布式安装部署
  8. bzoj2503poj3387[NEERC2006]IdealFrame
  9. 计算机与工程建设项目结合,工程建设项目中计算机科学与技术的应用分析.doc...
  10. 开启Golang编程第一章
  11. 网站压力测试工具webbench使用说明
  12. jdk、jre、jvm区别
  13. arduino(2560)与步进电机驱动器连线
  14. [工作笔记之一] 转正答辩 2015-08-04 15:08
  15. python中def demo是什么意思_python中def是什么意思
  16. 凯利讯分享ECL电路与TTL电路的使用注意事项
  17. 四旋翼飞行器基本知识(四旋翼飞行器结构和原理+四轴飞行diy全套入门教程)
  18. android studio运行APP到手机
  19. Cent OS虚拟机安装最新详细教程
  20. 天气预报今天几点下雨_天气预报今天几点下雨【相关词_ 天气预报明天几点下雨】...

热门文章

  1. ubuntu 飞信客户端安装
  2. Practical Common Lisp [个人翻译版]
  3. c语言过dnf检测,dnf过检测咋写啊 大神能给我说一下吗
  4. HTML5部分新属性的认识
  5. ARM Neon并行加速第一课
  6. (一)H264视频解码问题:出现部分绿屏问题的解决
  7. 计算机网络:自顶向下 第一章1.6 网络安全
  8. java随机生成中文昵称_使用java随机生成中文姓名
  9. vscode 默认英文环境,设置成中文语言环境
  10. 组图:诗情画意----配图宋词十四首