| |
|
开发:
C++知识库
Java知识库
JavaScript
Python
PHP知识库
人工智能
区块链
大数据
移动开发
嵌入式
开发工具
数据结构与算法
开发测试
游戏开发
网络协议
系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程 数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁 |
-> 区块链 -> 密码学复习(上) -> 正文阅读 |
|
[区块链]密码学复习(上) |
目录 电子密码本模式(Electronic Code Book, ECB) 密码分组链接模式(Cipher Block Chaining,CBC) 密码反馈模式(Cipher Feedback Block,CFB) 输出反馈模式(Output Feedback Block,OFB) 一、密码学概述密码学定义密码学一种狭义定义: ????? 是一种保密通信技术,通过对信息进行加密和解密,在第三方监听的情况下,实现信息的安全传输。 广义上讲,密码学不只是保密通信技术,已经延伸至信息安全诸多领域(是信息安全的基础和核心) 如: ? 数据完整性检测 ? 消息认证 ? 数字签名 更多地 : ?保密通信、存储加密、用户身份验证、区块链、隐私计算、零知识证明、安全多方计算 听起来很高大上,但其实大部分核心技术就是用之后讲的哈希函数。。。 在狭义密码学中,根据定义,自然离不开明文--加密--》密文-- 解密--》明文的过程。 与国际接轨,常用英文来表示(之后会经常用到) 消息: ?? 明文 (Plaintext) 常用p表示 ?? 密文?? (Ciphertext) 常用c表示 算法? : ????? 使用密钥? 一般用k表示 ?????? 加密(Encryption) 加密函数一般用 E()表示? c=(p) ????? 解密? (Decryption)? 解密函数一般用 D( )表示?? 密码学与信息安全:? 经典信息安全三要素:? 机密性、完整性、可用性 confidentiality、Intergerity availability (CIA!!) ? 拓展:机密性,完整性,可用性,隐私性,可认证性与可信赖性,不可抵赖性,可说明性,可审计性。 ? 其中与密码学相关的:机密性,完整性,可用性,认证性、不可抵赖性 攻击:如图所示
中断 (拒绝服务)? 阻止或禁止通信设施的正常使用 两种实现方式:1.攻击者删除传输过程中某个地方的链接。2.DDos,对特定目标滥发消息使之过载 截取 篡改 伪造 重放??? 是指攻击者发送一个目的主机已接收过的包,来达到欺骗系统的目的 对安全性的攻击 中断:? 可用性 截取:机密性 篡改:完整性、真实性、有序性 伪造、重放:认证性 分类: ?? 被动攻击:截取。通常难以检测 ?? 主动攻击:中断、篡改、伪造、重放。是指攻击者对连接中通过的协议数据单元进行各种处理 密码学分类
密码学的技术分两部分,一个是密码编码学、一个是密码分析学。 密码编码学研究如何对信息编码以实现信息和通信安全 密码分析学研究如何破解或攻击受保护的信息 密码编码学:从安全目标来看,分为保密体制和认证体制 根据使用密钥策略,分为对称密码体制和非对称密码体制 对称密码体制密钥完全保密,加密密钥和解密密钥相同,或根据一个可以很容易推出另一个 优点: ? 运算速度比较快、密钥相对较短、密文长度往往与明文长度相同 缺点: ?密钥分发需要安全通道、密钥量大,难以管理(不同人给的密钥要不同)、难以解决不可否认问题 非对称密码体制:?使用两个密钥:一个公钥对外公开,一个私钥只有拥有者知道 理论上不能从公钥推出私钥 例如电子邮件机制:任何人可以用接收者的公钥进行加密(找到接受者的邮箱地址发送),接收者用私钥解密(登录账号密码,来查看邮件) ???????????????????????????????????????????????????? 加解密算法和数字签名算法 优点: 密钥分发容易、密钥管理简单、可以有效实现数字签名 缺点: 运算速度较慢、密钥位数相对多些、密文长度往往大于明文长度。(??学到时再回来看) 保密体制模型:明文空间P:所有可能的明文 密文空间C:所有可能的密文 密钥空间K:所有可能的密钥 ?? K1 加密密钥空间 K2 解密密钥空间 ? 加密算法 ? c=(p) ?解密算法?? 密码分析学:现代密码学的密码系统设计必须遵循柯克霍夫原则,秘密必须完全寓于密钥中,加密和解密的安全性取决于密钥的安全性,加密解密算法是公开的。只要密钥安全,攻击者就无法得到明文。 安全性分为无条件安全性(理论安全性)和有条件安全性(实际安全性) 密码体制的攻击类型:在不知道密钥的情况下,不同条件下的攻击 唯密文攻击:只知道一定数量密文 已知明文攻击:除了一部分密文,还有一些明密文对 选择明文攻击:对任意明文可得到其密文,比如掌握加密机时 选择密文攻击:对任意密文可得到其明文,比如掌握解密机时 选择文本攻击:? 选择明文和选择密文的结合,同时掌握加密机和解密机时 不同时期的密码学按照1949年香农发表的那篇论文《保密系统的通信理论》为分界 古典密码学:主要分为代换式密码和置换式密码两大类 现代密码学:计算机的出现提供了新的加密技术,也提供了破译密码的新武器 二、古典密码学主要通过置换和代换的简单方式实现 1.置换密码置换:根据一定的规律重新排列明文,一遍打破明文的结构特性。 本质是X域上的双射函数 常见的有列置换和周期置换两种 置换表示方式: 密钥空间大小为 |x|! 逆置换:函数的逆函数 由得到 1.双行表示法的上下颠倒,重新排序 2.循环表示法每个括号第一个不变,其余颠倒 置换的组合? 类比函数关系的组合 周期置换
密钥:
对
m
个元素
集合的一个
置换
σ
加密:
将
明文
p
按固定长度
m
分组,对每个分组用
σ
进行置换,将各分组重新组合得到密文
c
解密:
将密文
c
按固定长度
m
分组,对每个分组用
σ
的逆置换
σ
-1
进行置换,将各个分组重新组合得到明文
p
使用
矩阵形式
表达更易于操作
列置换明文按照密钥的规则按列换位并且按列读出明文序列得到密文 2.代换密码
将明文中的字符替换为其他字符的密码体制
所采取的代换机制本身就构成了密钥,通常是一个代换表
按一个明文字母是否总是被一个特定的字母代替进行划分,分为:
??????? 单表代换
??????? 多表代换
补充数论、模运算知识对任意正整数m,整数n,存在唯一的q,r 使 n = qm + r 成立 q称为商(quotient),r称为m除n的余数(remainder) r=0时 ? m整除n,写作 m | n m称为n的因数或约数(divisor),n是m的倍数(multiple) 若r!=0 则m n 素数或质数:因数只有1和自身的大于等于2的正整数 合数:不是素数的大于等于2的正整数 0,1 既不是素数也不是合数 最大公约数? m,n约数中最大的 记作gcd(m,n) 互质 :gcd(m,n)=1 (素数之间一定互质,互质的不一定是素数) 最小公倍数? m,n共同的倍数最小的? lcm(m,n) =m*n/gcd(m,n) 任意一个大于1的正整数都可以分解为一串素数的乘积,分解是唯一的 ? 线性同余 m,n互质,存在整数x,y 使 mx+ny=1 同余定理 a≡b(mod m) 如果两个整数a和b满足a-b能够被m整除,即(a-b)/m得到一个整数,那么就称整数a与b对模m同余 完全剩余系?? 完全剩余系内的加乘运算 乘法逆元 ?对于模运算的除法,都用乘法逆元转化为乘法(小数无法取模啊) 简化剩余系 欧拉函数 ax+by=gcd(a,b),求x,y 裴蜀定理 利用拓展欧几里得算法 费马定理求逆元 前提p是质数 费马小定理 a^(p-1) 模p 与1同余 a mod p的逆元 就是 a^(p-2)mod p p不是质数是用拓展欧几里得ax+by=1 算 b*i mod p x b*i*xmod p (r了,写到这垃圾csdn出了bug没自动保存还退回去了?,就写个简化版的算了) 单表代换密码
1.基于密钥的单表代换密码
给出一串无重复字母的字符串,明文a,b,c,d..依次对应于该字符串,明文中后面的其他字母顺序对应于剔除了该字符串的字母表
密文空间=明文空间=26
密钥空间=26!
2.仿射密码
是一个线性变换
称e(x)为仿射加密函数
要求a与26互素,不然会有两个数被加密为同一个密文
凯撒密码 : a=1,b=3 (是移位密码,仿射密码的特例)
密钥空间:12*26=312
逆变换:
注意!:a~z被映射为数字0~25 a对应0
多表代换密码明文消息中出现的同一个字母,不是完全被同一固定的字符代换,而是根据其出现的位置次序用不同的字母代换。 代换既取决于具体字母,也取决于字符的相对位置(不同的地方用不同的代换表) 多表代换中有理论上的非周期多表代换密码,实际使用的都是周期多表代换 周期为1时就成了单表代换(不同地方使用同一代换表)
密钥空间
K={
一个分组内所有字母组合间的所有置换
}
|
K|=
(
)!
如果代换表序列是非周期的无限序列,则相应的密码称为非周期多表代换密码,称为一次一密密码。(序列密码的一种) 优点:能更好抵抗统计密码分析 1.Playfair密码 2.维吉尼亚密码 每一分组密钥空间为?? ? (置换是固定的) ? 查表法 ?或者用模运算实现 3. 希尔密码 明文按n分组 密钥矩阵: n*n的非奇异矩阵 且gcd(det(k),26)=1? 矩阵的行列式满足和26互质,则存在模26下的乘法逆元(逆矩阵存在)。 加强版的希尔密码? 补充常数项,c=mk+b 4.轮转密码机 目的:通过转轮的转动来实现复杂的多表代换,从而打破明文与密文之间的固定替代关系 三个转速不一的转轮构成:慢轮子、中轮子、快轮子。每个轮子是一个代换表 一个周期内,不同位置的相同明文代换成不同的密文 快轮子转一圈,中轮子转一个 中轮子转一圈,慢轮子转一个 密钥周期为26*26*26 解密时密文倒着解密,密码机倒着转(一步一步恢复状态) 3.古典密码的分析单表密码和部分多表代换密码可以用统计分析法进行唯密文攻击,Hill密码等需要用已知明文攻击 三、分组密码
明文、密文和密钥都采用二进制编码
,也就是字符集是简单的
0
和
1
。
1.分组密码(块密码)概述 ?????将明文消息编码的表示后二进制序列,划分成固定大小的块,每块分别在密钥的控制下变换成等长的二进制序列 注:传统密码也分组,但不是分组密码 分组密码属于对称密码体制 分组密码的设计要求
明文密文分组长度相同即可。
分组长度
n
要足够长,即
明文空间大小
2
n
足够大(防止明文穷举攻击)。
密钥长度
t
要足够长,即
密钥空间大小
2
t
足够大(防止密钥穷举攻击)。但亦不能过长,否则影响
加解密速度
和
密钥管理
。
由密钥
k
确定的明文空间到密文空间的映射
足够复杂(注:
可认为是
个元素上的一个置换)。
已知密钥时
的加解密运算简单,便于软硬件的快速实现。
密文空间与明文空间都是 理想分组密码是每种输入都会被代换成唯一的输出,因此密钥空间是,对应的密钥长度是 ? 实际的密钥长度和分组长度差不多,密钥空间为,就是说对任意的密钥,一种明文不会加密成所有的密文 分组密码的设计原则
扩散(Diffusion
):
明文和密文间的
统计特性尽可能复杂
,使得使得一比特明文的变化尽可能多的影响到输出密文的比特,以
隐藏明文的统计特性
。
理想状态下,明文改变一比特,密文里改变大约一半比特位。同样,密文改变一比特,相应的明文改变大约一半比特位。
混乱(Confusion
):
使明文、密文和密钥之间的关系尽可能复杂。
设计分组密码时一般我们通过
乘积密码体制
来实现扩散和混乱。
(类似于函数的复合,函数复合不一定满足交换律,满足结合律,乘积密码体制同样)
迭代密码体制:
大部分分组密码用的都是迭代结构 主要是两种迭代网络:
Feistel
网络
(如
DES
)
SP
网络
(如
AES
)
均能引起雪崩效应,即少量的明文变化引起密文巨大变化?
?Feistel网络?答:由于异或的特性 a xor a =0?? a xor 0 =a SP网络2.DES分组长度为64bit,密钥长度为64bit,有效位为56bit(8位奇偶校验码) 已经可以被密钥穷举法破解,也不再作为正式的加密标准 DES过程:1)64位的明文经初始置换(IP)重新排序,分为左右两组(Lo,Ro) 2)在密钥参与下,对左右两组进行16轮迭代,最后一轮输出64位,左右不交换 3)最后通过逆初始置换() 产生密文 轮函数: 拓展置换(E盒)、密钥加非线性代换(S盒)、线性置换(P盒) E盒:改变了位的次序,重复了某些位 作用: 1.产生与子密钥相同的数据,能够进行异或运算 ???????????? 2. 拓展后的数据能够经过S盒压缩,实现非线性 ??????????? 3.1位输入可能影响两位输出,快速实现雪崩效应 S盒:唯一的非线性部分,48位数据分成6*8 每组b1,b6作为行号,b2~b4作为列号,查表得到的数变成二进制4位 密钥编排: 1.置换选择PC-1 得到56位有效密钥,分成两组28位的 每次迭代,左右分别循环左移一位或者两位,每一轮子密钥是48位 DES的安全性1.互补性?? 明文,密钥取补,则密文也取补, 密文,密钥取补,明文也取补 ? 2.弱密钥 由于密钥的结构特点,生成子密钥全部相同,则称该密钥为弱密钥 ,有4种 ?弱密钥加密两次等于原来的明文(把第二次加密看成解密) 半密钥成对出现称为互逆对 3.迭代轮数 4.三重DES 二重DES能抵御穷举攻击但不能抵御中途相遇攻击 3.AES密钥长度:128bit、192bit、256bit 分组长度:128bit 每一轮包括: ?字节代换 ?行移位 ?列混合 ?轮密钥加 ? ? 加密最开始和解密最开始要用初始密钥加 S盒: DES与AES的对比? ? 4.分组密码的工作模式实际应用中需要处理的消息数据长度往往远远大于分组密码的数据块大小
根据应用的需要,人们设计了许多分组密码的工作模式,一般需要满足以下几点:
工作模式本身的运算应当简单
工作模式不应当损害分组密码算法的安全性
工作模式不会明显降低效率
工作模式易于实现 电子密码本模式(Electronic Code Book, ECB)
§
分组数据块长度(Block Size):
b
bits
§
明文长度
:
nb
§
明文长度如果不是
b
的整数倍则要
补足
(padding)
成
b
的整数倍
§
明文可写成序列
𝑃
1
,
𝑃
2
,
?
,
𝑃
𝑛
P
_
1,P
_
2,
?
,
P
_
n
?特点:
§
实现起来最简单
§
加密解密都可以并行处理
§
缺点:假定两个不同的明文数据块里的数据相同,则相应的密文数据块也相同。
ECB
安全性不够高(不需要解密也可以通过统计分析获取信息)
密码分组链接模式(Cipher Block Chaining,CBC)?加密采用串行结构,须知到前一数据块的密文才能对下一数据块加密。 ? ? 密码反馈模式(Cipher Feedback Block,CFB)? 输出反馈模式(Output Feedback Block,OFB)? 计数器模式(Counter,CTR)??错误影响电子密码本模式(ECB) :明文或密文中某一位出错,解密时只会影响对应的分组,若明文或密文被插入或删除,则后面的所有分组都受影响 密码分组链接模式(CBC):明文一位出错,该组及其后面的所有密文组都受影响,但是解密时会反转这种影响,只有一组受影响,密文一位出错,解密时只影响该分组和它下一分组 密码反馈模式(CFB):明文一位出错,该组及其后面的所有密文组都受影响,但是解密时会反转这种影响,只有一组受影响,密文一位出错,解密时只当错误在移位寄存器中产生影响。 所以密码反馈模式是自同步序列密码的典型 输出反馈模式(OFB) :反馈机制独立于明文和密文存在 密文一位错误,只会影响一组明文。但是失去同步很致命,其为同步序列密码 这几种方式若是密文被插入或删除就会影响后面所有的,所以要有检测失步的机制,重新同步 要有某种帧结构重新排列分组的边界 |
|
|
上一篇文章 下一篇文章 查看所有文章 |
|
开发:
C++知识库
Java知识库
JavaScript
Python
PHP知识库
人工智能
区块链
大数据
移动开发
嵌入式
开发工具
数据结构与算法
开发测试
游戏开发
网络协议
系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程 数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁 |
360图书馆 购物 三丰科技 阅读网 日历 万年历 2024年11日历 | -2024/11/25 22:58:32- |
|
网站联系: qq:121756557 email:121756557@qq.com IT数码 |