ToB企服应用市场:ToB评测及商务社交产业平台

标题: 信息与网络安全期末复习(完整版) [打印本页]

作者: 冬雨财经    时间: 2022-6-22 09:10
标题: 信息与网络安全期末复习(完整版)
信息与网络安全

以下链接是基于老师给的重点整理的笔记,同学们可以参考重点笔记

文章目录



第一章 概述

1.1 基本概念

信息安全是指信息网络中的硬件、软件及其系统中的数据受到保护,不受偶然的或者恶意的原因而遭到破坏、更改、泄露、否认等,系统连续可靠正常的运行,信息服务不中断。
信息安全威胁是指某些因素(人、物、事件、方法等)对信息系统的安全使用可能构成的危害。
1.2 攻击

概念
攻击:仅仅发生在入侵行为完全完成,且入侵者已进入目标网络内的行为称为攻击。但更为积极的观点是:所有可能使一个网络受到破坏的行为都称为攻击。即从一个入侵者开始在目标机上工作的那个时刻起,攻击就开始了。
分类

常用手段
1.3 信息安全的目的

信息安全核心三要素(也称CIA三要素)

信息安全典型技术

第二章 信息加密技术

2.1 信息安全与密码学

密码学基本概念
密码学(Cryptology)是结合数学、计算机科学、电子与通信等学科于一体的交叉学科,研究信息系统安全的科学。起源于保密通信技术。具体来讲,研究信息系统安全保密和认证的一门科学。
密码学是信息安全的核心关键技术
密码学发展历史

2.2 密码学经典例子

古典密码
置换密码:根据一定的规则重新排列明文,打破明文的结构特性。其特点是保持明文的所有字符不变,只是打乱了明文字符的位置和次序。
典型例子

代换密码代换,就是将明文中的一个字母由其它字母、数字或者符号替代的一种方法。
常见代换密码

典型例子

原理
Playfair 密码(Playfair cipher or Playfair square)是一种替换密码,1854 年由英国人查尔斯 · 惠斯通(Charles Wheatstone)发明,基本算法如下:
新找到的两个字母就是原本的两个字母加密的结果。
以 playfair example 为密匙,得
  1. P L A Y F
  2. I R E X M
  3. B C D G H
  4. K N O Q S
  5. T U V W Z
复制代码
要加密的讯息为 Hide the gold in the tree stump
  1. HI DE TH EG OL DI NT HE TR EX ES TU MP
复制代码
就会得到
  1. BM OD ZB XD NA BE KU DM UI XM MO UV IF
复制代码
说人话版本
Playfair密码的优点(非重点)
Playfair密码与简单的单一字母替代法密码相比有了很大的进步
虽然仅有26个字母,但有26×26=676种字母对,因此,识别字母对要比单个字母要困难得多。
一个明文字母有多种可能的代换密文字母,使得频率分析困难的多(hs成为BP,hq成为YP)
Playfair密码过去长期被认为是不可破的。

2.3 密码学基本概念

密码技术

密码学中一些术语的解释
一个密码(加密)系统是由明文、密文、加密算法、解密算法、密钥五部分组成。

数据安全基于密钥而不是算法的保密 (这句话是重点)
对于一个密码体制,其算法是可以公开的,让所有人来使用、研究。但具体对于某次加密过程中所使用的密钥,则是保密的。
按密钥的使用方式分类

2.4 对称密码体制

概念
说白了就是加密的密钥和解密的密钥是一样的。
安全性

优缺点
优点:加解密速度快、保密度高
缺点:如何安全传递密钥(如果密钥在网络上被截获了就GG)、多人分发需要的密钥数量会急速增加
分类

2.5 对称加密算法

DES、AES
太难了我不会。。
2.6 非对称(公钥)加密算法

基本原理
基于单向陷门函数
什么是单向陷门函数呢?拿RSA算法举例,给你两个质数,你要计算他们的乘积是很容易的吧,但是如果给你一个数让你计算他的两个质因数就是很困难的,可以自己写代码实现一下,这就是单向陷门函数,正向计算很容易,反过来就困难了,公钥密码的安全性正是基于这样的数学难题
具体的实现步骤在下文以RSA算法为例
应用场景

RSA
介绍
RSA 加密算法是一种非对称加密算法。在公开密钥加密和电子商业中 RSA 被广泛使用。RSA 是 1977 年由罗纳德 · 李维斯特(Ron Rivest)、阿迪 · 萨莫尔(Adi Shamir)和伦纳德 · 阿德曼(Leonard Adleman)一起提出的。RSA 就是他们三人姓氏开头字母拼在一起组成的。
RSA 算法的可靠性由极大整数因数分解的难度决定。换言之,对一极大整数做因数分解愈困难,RSA 算法愈可靠。假如有人找到一种快速因数分解的算法的话,那么用 RSA 加密的信息的可靠性就肯定会极度下降。但找到这样的算法的可能性是非常小的。如今,只有短的 RSA 密钥才可能被强力方式解破。到 2017 年为止,还没有任何可靠的攻击 RSA 算法的方式。
基本原理
公钥与私钥的产生
消息加密
c = m^e mod N
m = c^d mod N
一些数学名词的解释
以代码举例
我们用python来实现一遍加解密过程
  1. from Crypto.Util.number import *
  2. import gmpy2
  3. # 选取两个大素数p,q
  4. p = getPrime(128)
  5. q = getPrime(128)
  6. # 计算出N
  7. N = p * q
  8. # 计算欧拉函数phiN
  9. phiN = (p - 1) * (q - 1)
  10. # 选取一个质数e,要求e和phiN互质(phiN不能整除e)
  11. e = 17
  12. # 计算私钥d,这里实际是用到了扩展欧几里得算法求模逆元,后面讲
  13. d = gmpy2.invert(e, phiN)
  14. # 这是我们要加密的明文
  15. m = 'this is a test'
  16. # 我们先将明文转成字节类型,再转化成十进制数字
  17. m = bytes_to_long(m.encode())
  18. # 进行加密 c = m^e mod N
  19. c = pow(m, e, N)
  20. print(c)
  21. # 进行解密 m = c^d mod N
  22. m = pow(c, d, N)
  23. # 此时明文是十进制数字类型,转成字节类型
  24. m = long_to_bytes(m)
  25. print(m)
复制代码

d怎么求?
我们前面已经知道d的求解是基于这个公式:ed≡1(modφ(N)),首先≡这个符号是什么意思?这是数论中的同余符号,意思是两个整数除以同一个整数,若得相同余数,则二整数同余,这个公式如果要转化为人能看懂的东西,怎么转化呢?对于数字较小的场景,可以用这个公式ed + phiNy = 1,其中y为负整数,d为正整数,可以从y = -1开始,来解d是否为正整数,以上次的作业为例
  1. 设通信双方使用RSA加密体制,接收方的公开钥是(n, e) = (35,5),接收到的密文是C = 10,求明文M。
  2. n = 35 ,分解为两个素数相乘的结果为5*7,计算欧拉函数phiN = (5-1)*(4-1) = 24,此时用我们上面的公式解d
  3. 即ed+phiNy = 1 -> 5*d + 24*y = 1
  4. 取y = -1,z则方程变成5*d - 24 = 1 -> d = 5
  5. d刚好是正整数5,然后根据公式m = c^d mod N -> M = 10^5 mod 35 = 5
复制代码
如果数字稍微大一点,就需要用扩展欧几里得算法了
扩展欧几里得算法
以老师ppt上的例子为例
  1. e = 1234 ,phiN = 11111,求d=?
  2. 首先,如果这个d存在的话,我们用phiN除以e(保留余数) 即11111 / 1234 = 9 ...5 -> 11111 = 9*1234 + 5
  3. 再算1234 / 上一次的余数5  = 246 ...4 -> 1234 = 246*5 + 4
  4. 5 / 4 = 1...1 -> 5 = 4*1 + 1
  5. 算到除数为1就结束了,然后我们倒过来写这串表达式
  6. 1 = 5-1*4
  7. 4 = 1234-246*5
  8. 5 = 11111-9*1234
  9. 带进去就得到了1 = (5-1*(1234-246*5))
  10. 根据ed = 1 mod phin
  11. 即1234*d = (5-1*(1234-246*5)) mod phin
  12. 化简一下
复制代码
错误版本!!!
                                                                                  1234                                     ∗                                     d                                                                                                             =                                     (                                     5                                     −                                     1                                     ∗                                     (                                     1234                                     −                                     246                                     ∗                                     5                                     )                                     )                                                                           m                                     o                                     d                                                                           p                                     h                                     i                                     n                                                                                                                                                                              =                                     (                                     5                                     −                                     1234                                     +                                     246                                     ∗                                     5                                     )                                                                           m                                     o                                     d                                                                           p                                     h                                     i                                     n                                                                                                                                                                              =                                     (                                     247                                     ∗                                     5                                     −                                     1234                                     )                                                                           m                                     o                                     d                                                                           p                                     h                                     i                                     n                                                                                                                                                                              =                                     [                                     247                                     ∗                                     (                                     11111                                     −                                     9                                     ∗                                     1234                                     )                                     −                                     1234                                     ]                                                                           m                                     o                                     d                                                                           p                                     h                                     i                                     n                                                                                                                                                                              =                                     (                                     11111                                     ∗                                     247                                     −                                     9                                     ∗                                     247                                     ∗                                     1234                                     −                                     1234                                     )                                                                           m                                     o                                     d                                                                           p                                     h                                     i                                     n                                                                                                                                                                              =                                     (                                     11111                                     ∗                                     247                                     −                                     2224                                     ∗                                     1234                                     )                                                                           m                                     o                                     d                                                                           p                                     h                                     i                                     n                                                                                                                                                                              ∵                                     p                                     h                                     i                                     n                                                                           =                                     11111                                     ,                                     11111                                     ∗                                     247                                                                           m                                     o                                     d                                                                           11111                                     =                                     0                                                                                                                                                                              ∴                                                                           1234                                     ∗                                     d                                     =                                     −                                     2224                                     ∗                                     1234                                                                           m                                     o                                     d                                                                           11111                                                                                                                                                                              这                                     里                                     我                                     写                                     错                                     了                                     兄                                     弟                                     们                                     !                                     !                                                                                                                                                                              最                                     后                                     一                                     步                                     是                                     对                                     −                                     2224                                     取                                     模                                                                                                    d                                                                                                 =                                     2224                                     是                                     错                                     的                                     !                                     !                                                                         \begin{aligned} 1234*d &= (5-1*(1234-246*5))\ mod \ phin\\ &=(5-1234+246*5)\ mod \ phin\\ &=(247*5 - 1234) \ mod \ phin\\ &=[247*(11111-9*1234) - 1234] \ mod \ phin\\ &=(11111*247-9*247*1234-1234) \ mod \ phin\\ &=(11111*247 - 2224*1234) \ mod \ phin\\ &\because phin\ = 11111,11111*247 \ mod \ 11111 = 0\\ &\therefore \ 1234*d= -2224*1234 \ mod \ 11111\\ &这里我写错了兄弟们!!\\ &最后一步是对-2224取模\\ d &=2224是错的!! \end{aligned}                   1234∗dd​=(5−1∗(1234−246∗5)) mod phin=(5−1234+246∗5) mod phin=(247∗5−1234) mod phin=[247∗(11111−9∗1234)−1234] mod phin=(11111∗247−9∗247∗1234−1234) mod phin=(11111∗247−2224∗1234) mod phin∵phin =11111,11111∗247 mod 11111=0∴ 1234∗d=−2224∗1234 mod 11111这里我写错了兄弟们!!最后一步是对−2224取模=2224是错的!!​
负数取模
                                                                                  x                                                                           m                                     o                                     d                                                                           y                                                                                                             =                                     x                                     −                                     y                                     ∗                                     [                                                   x                                        y                                                  ]                                     (                                     向                                     下                                     取                                     整                                     )                                                                                                                                                                              =                                     −                                     2224                                     −                                     11111                                     ∗                                     (                                                                  −                                           2224                                                      11111                                                  )                                                                                                                                                                              =                                     −                                     2224                                     +                                     11111                                                                                                                                                                              =                                     8887                                                                                                                 ∴                                     d                                                                                                             =                                     8887                                                                         \begin{aligned} x \ mod \ y &= x - y * [\frac{x}{y}](向下取整)\\ &= -2224 - 11111 * (\frac{-2224}{11111})\\ &= -2224 + 11111\\ &= 8887\\ \therefore d&=8887 \end{aligned}                   x mod y∴d​=x−y∗[yx​](向下取整)=−2224−11111∗(11111−2224​)=−2224+11111=8887=8887​
感谢同学指出的错误
如何计算m^emod n
使用快速幂取模算法,原理我没研究过,就不班门弄斧了,以老师ppt上的例子为例
  1. 采用快速取模指数算法求c1=m1^e(mod n) =104^13 mod 2537 的值?
复制代码
我们来解读这段代码

第一轮代码
                                                                                                                                               t                                     =                                     0                                     ,                                     c                                     =                                     1                                     ,                                     i                                     =                                     3                                                                                                                                                                              t                                     =                                     t                                     ∗                                     2                                                                           (                                     t                                     =                                     0                                     )                                                                                                                                                                              c                                     =                                     c                                     ∗                                     c                                                                           m                                     o                                     d                                                                           2537                                                                           (                                     c                                     =                                     1                                     )                                                                                                                                                                              i                                     f                                                                                         b                                        3                                                  =                                     =                                     1                                     (                                     满                                     足                                     )                                     :                                                                                                                                                                              t                                     =                                     t                                     +                                     1                                                                           (                                     t                                     =                                     1                                     )                                                                                                                                                                              c                                     =                                     1                                     ∗                                     104                                                                           m                                     o                                     d                                                                           2537                                                                           (                                     c                                     =                                     104                                     )                                                                         \begin{aligned} &t=0,c=1,i=3\\ &t = t*2\ (t=0)\\ &c = c*c \ mod \ 2537 \ (c=1)\\ &if \ b_3 == 1(满足):\\ &t = t+1 \ (t=1)\\ &c = 1*104\ mod\ 2537\ (c=104)\\ \end{aligned}                   ​t=0,c=1,i=3t=t∗2 (t=0)c=c∗c mod 2537 (c=1)if b3​==1(满足):t=t+1 (t=1)c=1∗104 mod 2537 (c=104)​
第二轮代码
                                                                                                                                               t                                     =                                     1                                     ,                                     c                                     =                                     104                                     ,                                     i                                     =                                     2                                                                                                                                                                              t                                     =                                     t                                     ∗                                     2                                                                           (                                     t                                     =                                     2                                     )                                                                                                                                                                              c                                     =                                     c                                     ∗                                     c                                                                           m                                     o                                     d                                                                           2537                                                                           (                                     c                                     =                                     668                                     )                                                                                                                                                                              i                                     f                                                                                         b                                        2                                                  =                                     =                                     1                                     (                                     满                                     足                                     )                                     :                                                                                                                                                                              t                                     =                                     t                                     +                                     1                                                                           (                                     t                                     =                                     3                                     )                                                                                                                                                                              c                                     =                                     668                                     ∗                                     104                                                                           m                                     o                                     d                                                                           2537                                                                           (                                     c                                     =                                     973                                     )                                                                         \begin{aligned} &t=1,c=104,i=2\\ &t = t*2\ (t=2)\\ &c = c*c \ mod \ 2537 \ (c=668)\\ &if \ b_2 == 1(满足):\\ &t = t+1 \ (t=3)\\ &c = 668*104\ mod\ 2537\ (c=973)\\ \end{aligned}                   ​t=1,c=104,i=2t=t∗2 (t=2)c=c∗c mod 2537 (c=668)if b2​==1(满足):t=t+1 (t=3)c=668∗104 mod 2537 (c=973)​
第三轮代码
                                                                                                                                               t                                     =                                     3                                     ,                                     c                                     =                                     973                                     ,                                     i                                     =                                     1                                                                                                                                                                              t                                     =                                     t                                     ∗                                     2                                                                           (                                     t                                     =                                     6                                     )                                                                                                                                                                              c                                     =                                     c                                     ∗                                     c                                                                           m                                     o                                     d                                                                           2537                                                                           (                                     c                                     =                                     428                                     )                                                                                                                                                                              i                                     f                                                                                         b                                        1                                                  =                                     =                                     1                                     (                                     不                                     满                                     足                                     )                                     :                                                                         \begin{aligned} &t=3,c=973,i=1\\ &t = t*2\ (t=6)\\ &c = c*c \ mod \ 2537 \ (c=428)\\ &if \ b_1 == 1(不满足):\\ \end{aligned}                   ​t=3,c=973,i=1t=t∗2 (t=6)c=c∗c mod 2537 (c=428)if b1​==1(不满足):​
第四轮代码
                                                                                                                                               t                                     =                                     6                                     ,                                     c                                     =                                     428                                     ,                                     i                                     =                                     1                                                                                                                                                                              t                                     =                                     t                                     ∗                                     2                                                                           (                                     t                                     =                                     12                                     )                                                                                                                                                                              c                                     =                                     c                                     ∗                                     c                                                                           m                                     o                                     d                                                                           2537                                                                           (                                     c                                     =                                     520                                     )                                                                                                                                                                              i                                     f                                                                                         b                                        1                                                  =                                     =                                     1                                     (                                     满                                     足                                     )                                     :                                                                                                                                                                              t                                     =                                     t                                     +                                     1                                                                           (                                     t                                     =                                     13                                     )                                                                                                                                                                              c                                     =                                     520                                     ∗                                     104                                                                           m                                     o                                     d                                                                           2537                                                                           (                                     c                                     =                                     803                                     )                                                                         \begin{aligned} &t=6,c=428,i=1\\ &t = t*2\ (t=12)\\ &c = c*c \ mod \ 2537 \ (c=520)\\ &if \ b_1 == 1(满足):\\ &t = t+1 \ (t=13)\\ &c = 520*104\ mod\ 2537\ (c=803)\\ \end{aligned}                   ​t=6,c=428,i=1t=t∗2 (t=12)c=c∗c mod 2537 (c=520)if b1​==1(满足):t=t+1 (t=13)c=520∗104 mod 2537 (c=803)​
此时代码运行完毕,c就是我们最终的结果803,我们用python验证一下

正确的。
RSA算法的安全性
RSA算法的安全性是基于大整数分解的难题,所以攻击方式也很简单粗暴,因为公钥是公开的,n = p*q,e已知,e * d = 1 mod phiN,所以我们只要能分解N为两个素数p,q,就能破解出d,以下介绍几种常见的攻击方式(考试应该不会考,感兴趣的同学可以看看)
<ol> 暴力分解
可以使用yafu这款工具,使用方式如下:

factor()函数,参数是你要分解的数,
分解结果

  共模攻击
攻击条件
当两个用户使用相同的模数 N、不同的私钥时,加密同一明文消息时即存在共模攻击。
攻击原理
设两个用户的公钥分别为 e1 和 e2,且两者互质。明文消息为 m,密文分别为:
c1=m^e1modN
c2=m^e2modN
当攻击者截获 c1和 c2 后,就可以恢复出明文。用扩展欧几里得算法求出 re1+se2=1modn 的两个整数 r 和 s,由此可得:
cr1cs2≡mre1mse2modn
​ ≡m(re1+se2)modn
​ ≡mmodn
代码实现
  1. import gmpy2
  2. from Crypto.Util.number import *
  3. import sys
  4. import binascii
  5. sys.setrecursionlimit(1000000)
  6. def egcd(a, b):
  7.     if a == 0:
  8.         return b, 0, 1
  9.     else:
  10.         g, y, x = egcd(b % a, a)
  11.         return g, x - (b // a) * y, y
  12. def modinv(a, m):
  13.     g, x, y = egcd(a, m)
  14.     if g != 1:
  15.         raise Exception('modular inverse does not exist')
  16.     else:
  17.         return x % m
  18. e1=11085119
  19. e2=9190891
  20. c1=95802654515220808092268214474187396521084451096344242384608341887872702782290828816410697000941719590683107309925626046620976811737721800675450679405244429986569795481605454039209952126809031130572473139930816538229894404952230488471032140646478701800056893148667212842612771202600961005473843628543807576281789895225835535784697736508073945719275038557487868878529515390772120147529559169015697350455629223009240723598393858545457969371930544199690993535334876475403150437839542800975521617422860338848091674741969911523078015503201576312728495586541524742813914511874800249782937376857844116922101278519019905656
  21. c2=3416491037051012037012939467509239901806773704813403690354665798385393352563464881951974370241490158340518054254272653945115953885714558484209218930263157351532115665285897349811123032115674114898665575574766463243374363257317681664993192800007993550862200779683771913077545068424882032234253291268535634268961963331194864584762384909221320182259740507346013284854960761334127762166029934217852574313390086250095835456562558784241431962078316429891165585256316059135820341820577055463538905611710942258927193841136883208222189378113731075034150942645682604044709019188371375927920059650896388569726047796473642120516
  22. n=14129293489067735497835891913264472598235466604403612336006623107595438847067174121647397164285682966224208717924641463649550121959767200641904319708499428189547128930841593746541543006588640663582633284897803861765348725014771273881669308132805898675778540187033021154036594235144466199756659779020003038086388668345228666342476638806787610903886102447352152686433249208463728111915471444774767068270174477504938000592014963263451887545807532838102764510144961264142596092689778866428703620285541772740910077089202507682976490982442688834900108765694679294561760962915865812857912066376963510711262436193703892095683
  23. s = egcd(e1, e2)
  24. s1 = s[1]
  25. s2 = s[2]
  26. if s1 < 0:
  27.     s1 = - s1
  28.     c1 = modinv(c1, n)
  29. elif s2 < 0:
  30.     s2 = - s2
  31.     c2 = modinv(c2, n)
  32. m = (pow(c1, s1, n) * pow(c2, s2, n)) % n
  33. print(long_to_bytes(m))
  34. m = gmpy2.iroot(m, 9)[0]
  35. print(long_to_bytes(m))
复制代码
e与phiN不互素
  p和q相差过大或过小
就是暴力分解的那个例子,p和q十分接近
  小明文攻击
如果明文过小的话,导致明文的e次方仍然小于n,这时模数n就没有任何作用了,我们直接对c开e次方就能得到明文m
代码实现
  1. from Crypto.Util.number import *
  2. import gmpy2
  3. while True:
  4.     try:
  5.         p = getPrime(128)
  6.         q = getPrime(128)
  7.         m = 'abc'
  8.         e = 3
  9.         n = p * q
  10.         phin = (p - 1) * (q - 1)
  11.         d = gmpy2.invert(e, phin)
  12.         break
  13.     except:
  14.         pass
  15. m = bytes_to_long(m.encode())
  16. c = pow(m, e, n)
  17. # 破解
  18. m = gmpy2.iroot(c, e)[0]
  19. print(long_to_bytes(m))
复制代码

  低加密指数广播攻击
跟上面差不多,e取得太小导致m的e次方仍然小于n
  Coppersmith partial information attack
已知p的高位或低位,使用Coppersmith破解出低位达到攻击目的
以下是一款数学工具sage的代码
[code]n=113432930155033263769270712825121761080813952100666693606866355917116416984149165507231925180593860836255402950358327422447359200689537217528547623691586008952619063846801829802637448874451228957635707553980210685985215887107300416969549087293746310593988908287181025770739538992559714587375763131132963783147p4=7117286695925472918001071846973900342640107770214858928188419765628151478620236042882657992902#已知P的高位e=65537pbits=512          #P原本的位数kbits=pbits - p4.nbits()print (p4.nbits())p4 = p4




欢迎光临 ToB企服应用市场:ToB评测及商务社交产业平台 (https://dis.qidao123.com/) Powered by Discuz! X3.4