网站建设制作需求,营销软件商城,广告发布是什么意思,哪些企业需要网络推广概论 计算机安全的最核心三个关键目标#xff08;指标#xff09;/为#xff1a;保密性 Confidentiality、完整性 Integrity、可用性 Availability #xff0c;三者称为 CIA三元组 数据保密性#xff1a;确保隐私或是秘密信息不向非授权者泄漏#xff0c;也不被非授权者使…概论 计算机安全的最核心三个关键目标指标/为保密性 Confidentiality、完整性 Integrity、可用性 Availability 三者称为 CIA三元组 数据保密性确保隐私或是秘密信息不向非授权者泄漏也不被非授权者使用获取到明文 OSI安全架构关注安全攻击、安全服务和安全机制。 安全攻击任何危及信息系统安全的活动 被动攻击试图获取或利用系统的信息但不影响系统资源。如信息内容的泄漏和流量分析 被动攻击不涉及对数据的修改因此很难检测。通常采用加密的方式来阻止被动攻击。即重点是预防而非检测。 主动攻击则试图改变系统资源或影响系统运行。主动攻击分为伪装、重放、消息修改和拒绝服务。 伪装指某实体假装为其他实体。伪装攻击还包含其他形式的主动攻击。例如截获认证信息在认证信息完成合法验证以后进行重放。无权限的实体就可以通过冒充有权限的实体获得额外的权限。重放指攻击者未经授权将截获的信息再次重放。消息修改指未经授权地修改合法消息的一部分或延时消息的传输或改变消息的顺序。拒绝服务 安全服务加强信息安全性的一种处理过程或通信服务。其目的是使用安全机制进行反攻击。安全机制用来检测、阻止攻击或者从攻击状态恢复到正常状态的机制 攻击面是由系统中一系列可访问且可利用的漏洞组成。主要分为 网络攻击面指的是企业网络、广域网或是互联网。包含协议的漏洞及拒绝服务供给、终端通信链路等。软件攻击面设计应用程序、工具包或操作系统漏洞。人类攻击面主要是系统人员或是外部人员造成的漏洞。 攻击树是采分支化、层次化表示利用安全漏洞的可能技术集合的一种数据结构。 根节点攻击目的。第二层是攻击的目标再往下则是攻击的方式等。深度越深则越具体。因此叶节点是具体的攻击方式。
网络安全模型需要考虑
设计安全的相关变换算法产生算法所需的秘密信息密钥设计分发、共享秘密信息的方案指定协议该协议利用安全变换和秘密信息实现安全服务
传统加密技术
密码编码学
密码编码学具备以下三个独立特征
转换明文为密文的运算类型:代换和置换 代换是将明文中的元素映射成另个元素置换是将明文中的元素重新排列。这些运算都要求不能信息丢失、即所有运算是可逆的。 密钥发送方和接收方使用相同密钥称为对称密码否则称为非对称密码。处理明文的方法分组处理或流式处理 密码分析密码分析的目标是获取密钥而非恢复出单个密文对应的明文。
穷举法
Shannon一个好的密码系统应具备抵抗统计分析的两个特性:
扩散性(diffusion)在同一密钥下 相似的明文密文差别较大相似的密文明文差别较大。扩散性可以隐藏明文和密文之间的关系阻止对手通过统计密文找到明文 混淆性(confusion)在同一明文下 相似的密钥密文差别较大相似的密文密钥差别较大。混淆性隐藏密文和密钥之间的关系阻止对手通过统计密文来找到密钥
Substitution 代换技术 Caesar
思路
元素表以 26个字母为元素表做循环排列形如abcd…xy zabcdef…密码表与明文表相对而言。所有明文经过变换得到的密文的合集就是密码表。间隔可以自定义间隔间隔指示应当向向后找多少位的字母代替当前字母。间隔不同密码表就不同。
例如假设间隔为 3则 A B C 应分别代换为 D E F 完整的代换表为
Caesar密码的三个重要特征使我们可以采用穷举攻击分析方法:
已知加密和解密算法需测试的密钥只有25个明文所用的语言是已知的且其意义易于识别
DEMO
解密以下 caesar密码
EHVWWLPHRIRIWKHKHBHBDULVLVVVSUSULQJZKHQIQRORZHUHVUVEOEORRRP对这个密文尝试所有位移值直到看到可理解的文本。为节省时间我可以快速编写代码来完成这个过程。通过暴力破解密文我们发现位移值为 3 时向前密文解密后的结果为
BEST TIME OF THE YEAR IS SPRING WHEN FLOWERS BLOOM.代换技术之单表代换
首先必须区分单表代换与 caesar密码的区别。
caesar密码中所有明文–密文必须遵循相同的间隔。即若 A 对应 D则能推断出 B 一定对应 E。这样密码表只有 26张。
单表代换中所有明文 -- 密文不遵循相同的间隔。即若 A 对应 DB 可能对应 A/B/C/E/F…任意一个只有确保一一对应的关系明文与密文可以以一种杂乱的关系确定下来。这样密码表有 26张。大大增加了复杂性。
但代换技术的弱点没有解决
因为单字母替代不会改变字母的频率所以原始文字的统计特征几乎被完整保留下来。有两种主要方法可以减少代换密码里明文结构在密文中的残留度 对明文中的多个字母一起加密采用多表代换
Playfair
Playfair密码将明文中的双字母组合作为一个单元对待并将这些单元转换为密文的双字母组合。
编制密码表矩阵
PlayFair 中密码表即按照指定密钥字母串构造出来的矩阵。
准备一个密钥字母串一个 5X5 的矩阵。将密钥字母串去重得到顺序集合 A将 26字母表去重集合 A得到顺序集合 BI 和 J 被算为一个字母;从左到右从上到下将顺序集合 A 填充到该矩阵然后再将顺序集合B 填充到该矩阵。
整理明文表
将明文表字母两两分组一组即为一对。分割后任一对明文字母如果是重复的则在这对明文字母之间插入一个填充字符如 X。分割且填充后任一对明文字母若在矩阵的同一行中出现(不需要相邻那么分别用矩阵中其右侧的字母代替行的最后一个字母由行的第一个字母代替。例如ar 加密为 RMek 加密为 FE分割且填充后任一对明文字母若在矩阵的同一列中出现(不需要相邻那么分别用矩阵中其下方的字母代替列的最后一个字母由行的第一个字母代替。例如hs 加密为 BPea 加密为 IM/JM否则任一对明文字母中的每一个字母将由与其同行且与另一个字母同列的字母代替。例如hs 加密为 BPea 加密为 IM/JM。即按照矩形规则替换为隔壁角
DEMO
使用的密钥词是 monarchy将 ballon 加密。
去重得到的顺序集合A 为 【monarchy】将 26字母表去重集合 A得到顺序集合 B【bdefgijklpqstuvwxz】将 I 和 J 视为一个字母并将顺序集合A、B 填充可得 欲加密的明文是 balloon。则两两分组为balloon -- ba ll oo n -- ba lx lo onba 在同一列中出现替换成 iblx 不同行不同列按照矩形规则替换为 sulo 不同行不同列按照矩形规则替换为 pmon 在同一行中出现替换为 na。最终得到密文 ibsupmna。
代换技术之多表代换Vigennere
多表代换的代换表有多个。加密时交替使用不同的代换表。但注意加密和解密要同步也就是加密和解密所用的代换表顺序要一致不然解密会出错。多表代换跟单表代换相比其主要优点是多表代换增大了密钥空间更彻底地打破整体上的统计特性。Vigenere 实质上就是扩展的 Caesar加密。Vigenere 的代换表有多张且每张使用不同的间隔k在加密时交替使用不同的代换表进行代换。
多表代换 DEMO
假设明文表为{1234} 代换表1 为{12243341} 代换表2 为{14213243}。 代换表1 和代换表2 交替使用。 现在加密明文 123112
Vigenere DEMO
Vigenere 中密码表也是按照指定密钥字母串构造出来的矩阵。
构造一个 26X26 矩阵第一行内容为【ab…z】第二行内容为第一行内容循环右移一位即【bc…a】以此类推。 选定任意密钥字母串将欲加密明文与密钥字母串比对当密钥比明文短时重复密钥至与明文等长加密过程基于明文字符和密钥字符在密码表中的位置关系。明文字符决定行在密码表中找到以明文字符开头的行密钥字符决定列在密码表中找到以密钥字符为列头的列。交点字符即为密文字母。
取密钥为 deceptive 欲加密明文为wearediscoveredsaveyourself 扩展密钥成为deceptivedeceptivedeceptive
则明文字符 w 对应的密文为Z坐标为 (w,d)
整体密文为ZICVTWONGRZGVTWAVZHCOYGLMGI
多表代换之轮转机Enigma
发信人首先要调节三个转子的方向使它们处于 17576个方向中的一个(事实上转子的初始方向就是密匙这是收发双方必须预先约定好的)然后依次键入明文并把闪亮的字母依次记下来然后就可以把加密后的消息用电报的方式发送出去。
单表代换之仿射加密 Affine Cipher
仿射加密的字母系統中所有字母都藉一簡單數學方程加密對應至數值或轉回字母。 所有字母皆藉由方程 ax bmod m加密。其中
对于加密
每个字母都被映射到一个数字上通常是 A 0, B 1, …, Z 25然后通过仿射变换函数 ax bmod m进行加密得到数字串后再转回字母即可。 a 和 b 为密钥x 为明文字符对应的数字m 为字母个数一般为 26a 和 m 必须互质由于 m 一般为 26则 a 可选值为 1、3、5、7、9、11、15、17、19、21、23、25。a 26 会导致重复计算没有意义)当 a 为 1 时仿射变换实质就是 Caesar密码。
对于解密
每个字母都被映射到一个数字上通常是 A 0, B 1, …, Z 25然后通过仿射变换解密函数 进行解密得到数字串后再转回字母即可。 其中a^-1是 a 的乘法逆元将其设为 x则
例如对于 3 的乘法逆元即求一个数 x使得 3x mod 26 1 成立可知 x 9。
其本质就是穷举但是更具体来说可以有一种思路既然要求 mod 的结果为 1。则等式左边结果恒比等式右边的可能倍数大 1。
等式右边可能的取值为 265278104130… 则等式右边只能从 2753105131… 中取得进而可以快速匹配
DEMO 明文为HELLO 参数a 5, b 8, m 26则仿射变换函数为 5x 8mod 26
对于加密过程
对于 H加密过程为5 X 7 8mod 26 43 mod 26 17 - R 以此类推得到密文为 RCLLA。
对于解密过程
5 的乘法逆元满足 5x mod 26 1则 5 的乘法逆元为 21。则解密的变换函数为 21·(x - 8)mod 26对于密文字符 R解密过程为21·(17 - 8)mod 26 189 mod 26 7 -H 以此类推得到明文为HELLO
证明加密函数等于解密函数 代换之 Hill密码 Hill密码是一种基于矩阵运算的多字母替换密码它是第一个用到代数方法的加密算法主要用矩阵和向量的乘法来实现加解密。 Hill密码能抵抗唯密文攻击但不能抵抗已知明文攻击事实上只要知道 n块相互独立的明文串及相对的密文就可以确定密钥 K。 加密公式为C (K·P) mod m其中 P明文的向量形式即一组字母转化为数字的形式如 A 0, B 1, …, Z 25则[a,b,c,d] 转化为[0,1,2,3]。 • K密钥是一个 n x n 方阵必须可逆。 • C密文向量计算得到的加密结果。 • m字母表大小通常 m 26。
加密过程为
选定方阵的行列均为 n然后将明文串每 n个分一组最后一组不足 n个则补 X这样就得到了若干组 n x 1向量。将分组中的字母映射为数字将每组明文向量 P 与密钥矩阵 K 相乘得到C (K·P) mod 26 每次运算得到一个 n x 1的密文向量Q将其转化回字母即可得到密文。
解密过程为
将密文串每 n个分一组最后一组不足 n个则补 X这样就得到了若干组 n x 1向量。将分组中的字母映射为数字根据已知的密钥矩阵K求其逆矩阵设为 K‘将每组密文向量Q 与密钥矩阵K‘ 相乘得到C (K’·Q) mod 26 每次运算得到一个 n x 1的明文向量P将其转化回字母即可得到明文。 求逆矩阵
Hill加密的逆矩阵是在模运算基础上的逆矩阵因此求其逆矩阵时需时刻计算模
DEMO 之求加解密过程
DEMO 之已知明密对、n求加密矩阵
给定一下信息求解 Hill加密矩阵
• 分组长度 n 2
• 明文明文对“howareyoutoday”
• 密文密文对“zwseniuspljveu”将明文和密文按照分组长度 n 2 分成对应的列向量就得到了明文和密文的矩阵。
代换之一次一密
使用与消息一样长且无重复的随机密钥来加密消息每个密钥都是一次性的加密后就不再使用。在理论上它是不可攻破的。它产生的随机输出与明文没有任何统计关系。因为密文不包含明文的任何信息。
代换技术之破解方法
最常用的是统计方法。
在英语中用的最多的单个字母依次是 etoahI最少的是 zj。 最常用的双字母组依次是 thinerrean 最常用的三字母组是 theingandion。
分组密码
在分组密码中大小为 n 的一组明文符号被一起进行加密创建出相同大小的一组密文。在分组密码中即使密钥是由多个值构成的但仍看成单密钥整个分组都由它进行加密。playfair密码是分组密码组的大小是n2两个字符一起加密。Hill密码是分组密码用单密钥(一个矩阵)进行整体加密。虽然密钥由 n x n 个值组成还是要看作一个单密钥。
置换 Permutation
置换是通过变动明文块内部的字符排列次序来达到加密信息的目的。
第一种置换方法 - 明文设为字符集合A- 密钥即为置换和逆置换。置换为【27461351】(2 表示当前位置用第 2个字母置换】。逆置换为【5163742】- 密文即为用密钥置换改变字符集合A 顺序得到的字符串B第二种置换方法
明文设为字符串集合A将 A 按行优先依次填入空矩阵中。密钥为顺序数字集合。按密钥中数字的顺序排布矩阵中的列
隐写术
隐写术不是严格意义上的加密其实现方式是将秘密消息隐藏在其他消息中 。 字符标记:选择一些印刷字母或打字机打出的文本用铅笔在其上书写一遍。这些标记需要做得在一般场合下辨认不出除非将纸张按某个角度对着亮光看。不可见墨水:有些物质用来书写后不留下可见痕迹除非加热或加之以某种化学物质针刺:在某些字母上刺上小的针孔这一般是分辨不出来的除非对着光线。打字机的色带校正:用黑色的色带在行之间打印。用这种色带打印后的东西只在强光下可见。加水印
数论基础
整除性 注意 a ! 0但 b 可以为 0 且当 b 为 0 时对于任何的 a ab恒成立。如 10、20… 例证明 若3n且7 n则21 n
由3n可知存在整数m 使得 n 3m进而代换可得 73m
此外对于任何的m1m 恒成立因此 77m 恒成立
运用线性运算法则对于任意的 x、y7{x3my7m}恒成立
令 x -2y 1则有 7 -6m 7m 7m 21 3m 21 n
欧几里得算法求最大公因数最大公约数
最大公因数就最大公约数
欧几里得算法的时间复杂度Olog n
扩展欧几里得算法求两个数的最大公约数的线性表示
求 198 和 252 的最大公约数并把它表为 198 和 252 的整系数线性组合
扩展欧几里得算法求乘法逆元
a mod b在 a b 时求乘法逆元 欧几里得算法也叫辗转相除法这个方法可以找到两个非负整数的最大公约数 只要知道扩展欧几里得的形式为 余数 被除数 - 系数x除数即每一步都为减法 辗转相除直到余数为 1 通过将前步等式代换得到 ap 关系a 的乘数即为所求。
此外还必须注意的细节有
除法系数必须写右边方便合并与第一条同理任何乘法必须注意次序并且任何一项始终保持两两相乘最终得到的 x 若为负数则令 |x| z pz 即为所求。
a mod b在 a b 时求乘法逆元 模运算
同余 模算术运算快速幂
将幂转化为二进制。设 ans 1cur 底数开始迭代轮数等于二进制幂的长度。从后往前看二进制幂若为 1 则 ans ans ✖️ cur mod 模数cur cur ✖️ cur mod 模数若为 0 则 ans 不变cur cur ✖️ cur mod 模数。最后结束 ans 即为整体的结果。 中国剩余定理
用于加速模运算某一范围内的整数可通过它对两两互素的整数取模所得的余数来重构使得非常大的数对M 的模运算转化到更小的数上来进行运算
DEMO
计算 Mi 和 M。其中 M1 除了一式以外所有式子的模相乘M为所有式子的模数相乘计算 Mi 的乘法逆元使用公式 欧拉定理、费马小定理
欧拉函数设 n 是正整数小于 n 且与 n 互素的正整数个数称为 n 的欧拉函数记为 φn例如 φ6 2 φ7 6。 若 n 是素数则 φn n - 1若 n pq且 p、q 均为素数则 φn p - 1q - 1
欧拉定理求大整数的后几位
计算模数n 的欧拉函数值 φn将幂拆解为含有欧拉函数值 φn欧拉函数值 φn的多因子的乘积
费马小定理指数取模
在 a、p 互素的情况下
用费马小定理将指数化为小于模数的形式将指数继续分拆模出来的结果相乘最后再模即可 离散对数
本原根
多项式计算
对称密码体制
分组密码
分组密码将输入的明文分组当做一个整体处理输出一个等长的密文分组。Feistel密码结构是分组密码中的一种对称结构。由于它是对称的密码结构所以对信息的加密和解密的过程就极为相似甚至完全一样。这就使得在实施的过程中对编码量和线路传输的要求就减少了几乎一半。Feistel 建议使用乘积密码来增强密码的强度Feistel建议交替使用代换和置换增强密码的扩散和淆性能 扩散 Diffusion让每个明文数字尽可能地影响多个密文数字使明文和密文的统计特性不相关。混淆 Confusion使密文和密钥之间的关系变得复杂乘积密码 Product Cipher在单个加密机制中依次使用两个或两个以上不同类型的基本密码(如代换和置换)所得结果的密码强度将强于每个单个密码的强度 DES 等传统分组加密算法都采用了 Feistel结构。
分组密码之 DES
DES具有很好的雪崩效应明文或密钥某一位发生变化(微小的变化)将对密文产生很大的影响DES 采用 P置换来达到扩散性DES 采用 S盒置换来达到混淆性 其中IP扩展、E扩展、P置换都为查表置换。
DEMO
已知 S盒如下若输入为 101101求输出。
首尾二数为 11十进制为 3则第三行 中间数字为 1001十进制为9则第九列 查表三行九列为 14十进制为 1100即输出值。
分组密码之 AES
AES 分组长度只能是 128bit密钥长度 128/192/256bit分别对应着 10/12/14 轮的迭代。处理单位是字节作为对比DES 处理单位为 bit。AES 的基本运算可以记为“三代替、一换位” 字节代替SubBytes列混淆MixColumns行移位ShiftRows轮密钥加AddRoundKey AES 解密的基本运算为 逆向行移位逆向字节代替轮密加逆向列混淆。
分组密码运行模式
当消息长度大于分组长度时需要分成几个分组分别进行处理分组的方式/顺序就称为分组密码的工作模式或分组密码算法的运行模式。 电子编码本模式。优点简单且有利于并行计算误差不会被传送。缺点不能隐藏明文的模式一旦有一个块被破解使用相同的方法可以解密所有的明文数据安全性比较差可能对明文进行主动攻击这种方法密码分组链接模式。优点不易被主动攻击是 SSL、IPSec 的标准。缺点不利于并行计算误差传递。输出反馈模式。跟密码分组链接差不多。密码反馈模式。
公钥密码
公钥密码解决的基本问题 解决传统密码中的密钥分配和数字签名 公钥密码的特点 仅根据密码算法和密钥来确定解密密钥在计算上不可行两个密钥中的任何一个都可用来加密另一个用来解密。 公钥密码的六个组成部分: 明文、密文公钥、私钥加密、解密算法 公钥密码的三个作用 加解密发送者用接收者的公钥加密消息数字签名发送者用自己的私钥签名消息密钥交换通信双方用公钥密码交换会话密钥此后便可用会话密钥进行对称加密节省资源。 单向函数 one-way function 陷单问函数(Trapdoor one-way function) 是单向函数在不知陷门信息下由fx求 x 极为困难当知道陷门信息后由 fx求 x 是易于实现的。 RSA
RSA 属于分组密码三种攻击 RSA的方法 强力穷举密钥数学攻击实质上是对两个素数乘积的分解。为了避免被攻击现阶段应选用 1024/2048 位密钥。时间攻击依赖解密算法的运行时间
加解密 DEMO
随机选择两个大素数 pq求它们的乘积 n p ✖️ q 作为模数求 n 的 Euler 函数 φ(n) (p - 1)(q - 1) 选择一个与 n 互素的加密密钥 e使得 1eφ(n)且 gcd(ep(n)) 1求 e ✖️d ≡ 1 mod φn)即 e 的乘法逆元 d 作为解密密钥公布公钥 PU {en}保留私钥 PR {dn}注意发送的明文M 必须 n
以下 xy 为传输文本。 加密过程为 解密过程为
公钥和私钥的关系 DEMO
公钥为 en私钥为dn由于公钥是公开的因此私钥中的 n 也是公开的攻击者只要找到私钥中的 d就能破解 RSA。 从公钥的 e 推导私钥的 d 的过程为
将 n 分解为两个质数 p、q。由于实际采用的公私钥对长达 1024/2048 位这种分解是几乎不现实的。计算 φn p - 1q - 1根据 e ✖️ d ≡ 1 mod φn可求得私钥的 d进而获取私钥。
例题采用 RSA 加密体制已知接收方的公钥是en535拦截到的密文为 C 10破解明文。
35 5 ✖️ 7。5、7都是质数φ35 5 - 17 - 1 24解 5 ✖️ d ≡ 1 mod 24 即求 5 mod 24 的乘法逆元解得为 5故密钥 PR 535运用解密公式
DH 密钥交换
第一个公钥算法是一个密钥公开交换算法算法本身只限于进行密钥交换建立公共密钥不能交换任何信息算法的基础是有限域中的指数运算(模一个素数)是相对容易的而离散对数的计算是相对困难的。容易受到中间人攻击。 添加认证功能用公钥证书/共享密钥 用户 A、B 均已知晓以下全局参数一个大素整数(或多项式)记为q今后作为模数一个模 q 的本原根记为 α作为计算公钥时的底数每个用户独立产生自己的密钥对。选择一个保密的随机数x qx 即为私钥计算其公钥: y α^x mod q。每个用户公开其公钥 y保留私钥 x。A、B 独立计算二者共享的会话密钥 K。注意到 x 始终为幂攻击者想要解出私钥 x则必须求解离散对数但之前提到过离散对数的计算是非常困难的。
DEMO EIGamal
ELGaml算法侧重于信息的安全传播构建的密钥对是为了传输信息的破解 ElGamal 相当于解 Diffie-Hellman 问题EIGamal 的安全性依赖于 Z*上的离散对数问题在加密过程中对不同的消息应选取不同的随机数k否则攻击者可以很容易攻击 EIGamal 公钥体系
DEMO
密钥产生过程选择一个素数p以及两个小于p 的随机数g 和 x计算 y g^x (mod p)以ygp作为公钥x为私钥。加密过程设密文消息为 M选择一个与 p-1 互素的数k计算C1 g^k (mod p)C2 y^k(mod p则密文为C1C2。解密过程为 数字签名
数字签名的功能 确认信息是由签名者发送的;确认消息自签名后到收到为止未被修改过签名者无法否认签名是由自己发送的、 数字签名的组成 密钥生成:产生公钥与私钥如公钥密码体制签名算法:利用私钥对文档签名验证算法:利用公钥对签名进行验证
签名的过程本质就是对方的公钥进行加密与平时传输是一样的。