密码学
2022-03-18 01:35:09 1 举报
AI智能生成
如有纰漏,欢迎指出,联系邮箱:963096535@qq.com
作者其他创作
大纲/内容
密码体制
单钥体制
系统的保密性取决于密钥的安全性,与算法的保密性无关
流密码
概述
按字符逐位加密
同步流密码
记忆元件的存储状态独立于明文字符
分组密码
概述
分组后逐组加密
代换
明文分组到密文分组的可逆変换(一一对应)
若分组长度为n bit,则不同可逆变换的个数为,密钥的大小为 bit
扩散
将明文的统计特性散布到密文中去
密文中每一位由明文中多位产生
混淆
使密文和密钥之间的统计关系变得尽可能复杂
Feistel密码结构
乘积密码:顺序地执行两个或多个基本密码系统,使得最后结果的密码强度高于每个基本密码系统产生的结果
加密
解密
DES算法
一重DES
分组长度:64 bit,密钥长度:56 bit
初始置换→16轮变换(:扩展→异或→S盒→置换)→逆初始置换
二重DES
使用两个密钥和,密钥长度:112 bit
密文:
明文:
三重DES
2个密钥的三重DES
密钥长度:112 bit
3个密钥的三重DES
密钥长度:168 bit
运行模式
电码本(ECB)模式
每个明文分组独立加密
密码分组链接(CBC)模式
加密时,算法的输入是当前明文组与前一密文组的异或
解密时,当前明文组是算法的输出与前一密文组的异或
密码反馈(CFB)模式
输出反馈(OFB)模式
IDEA算法
分组长度:64 bit,密钥长度:128 bit
乘加(MA)结构
逐比特异或
模整数加法
模整数乘法
明文分组(4个16 bit的子段)→8轮迭代(每轮需要6个16 bit的子密钥)→输出变换(需要4个16 bit的子密钥)
AES算法
分组长度和密钥长度可独立指定为128 bit / 192 bit / 256 bit
状态
概念:算法中间结果的分组
状态阵列:用以字节为元素的矩阵阵列表示状态,该阵列有4行,列数=分组长度32
种子密钥:用以字节为元素的矩阵阵列表示,该阵列有4行,列数=分组长度32
迭代轮数:记作,与和有关
密钥编排
概念:由种子密钥得到轮密钥的过程
基本原则
轮密钥的比特数=分组长度(轮数+1)
种子密钥被扩展成为扩展密钥
轮密钥从扩展密钥中依次选取前个字(1字=4字节=32 bit)
轮函数
字节代换
非线性变换,独立地对状态的每个字节进行
行移位
将状态阵列的各行进行循环移位,不同状态行的位移量不同
列混合
将状态阵列的各列视作上的多项式,再与固定多项式进行模乘法
密钥加
将轮密钥与状态进行逐比特异或
加密/解密算法流程:初始的密钥加→()轮迭代(字节代换→行移位→列混合→密钥加)→一个结尾轮(字节代换→行移位→密钥加)
双钥体制(公钥体制)
数论基础
定理
设,,则一定有乘法逆元
费马定理
若是素数,是正整数且,则 mod
欧拉函数
设是一正整数,小于且与互素的正整数的个数称为的欧拉函数,记为
若是素数,则
若是两个素数和的乘积,则
欧拉定理
若和互素,则 mod
欧几里得算法
设、是任意两个正整数,则 mod
求最大公因子
辗转相除法
求乘法逆元
中国剩余定理
设是两两互素的正整数,,则一次同余方程组 mod 对模有唯一解: mod mod
陷门单向函数:一族可逆函数,满足
当已知和时,易于计算
当已知和时,易于计算
当已知但未知时,求在计算上是不可行的
RSA算法
密钥产生
(1)选两个保密的大素数和
(2)计算,,其中是的欧拉函数值
(3)选一整数,满足,且
(4)计算,满足 mod ,即是在模下的乘法逆元
(5)以{}为公开钥,{}为秘密钥
加密
mod (其中是明文分组,是密文分组)
解密
mod
椭圆曲线密码体制
有限域上的椭圆曲线
曲线方程中所有系数都是某一有限域GF()中的元素(其中为大素数)
最常用曲线方程:mod GF mod
椭圆曲线上的加法法则
椭圆曲线上的三个点若位于同一直线上,则它们的和为(无穷远点)
为加法单位元,即对椭圆曲线上任一点,有
椭圆曲线上点的加法逆元定义为
设和是椭圆曲线上坐标不同的两点,则,其中是直线与椭圆曲线的唯一交点
定义,其中是在点做椭圆曲线的切线与椭圆曲线的交点(类似可以定义)
椭圆曲线上的密码
在椭圆曲线构成的Abel群上,设方程,其中,,则由和易求,但由和求是困难的
Diffie-Hellman密钥交换
ElGamal密码体制
密钥分配与管理
单钥体制的密钥分配
有中心的密钥控制
KDC:密钥分配中心;:一次性会话密钥;:A、B分别与KDC的共享主密钥;:一次性随机数(防止重放攻击);:某种函数
(1)A→KDC:
(2)KDC→A:
(3)A→B:(完成密钥分配)
(4)B→A:
(5)A→B:(完成认证)
无中心的密钥控制
:一次性会话密钥;:A、B的共享主密钥;:一次性随机数;:某种函数
(1)A→B:
(2)B→A:
(3)A→B:
公钥体制的密钥管理
对公钥体制所用公钥的分配
公钥管理机构
AU:公钥管理机构;:A、B的公钥;:AU的私钥;:时间戳;:一次性随机数
(1)A→AU:
(2)AU→A:(A取得B的公钥)
(3)A→B:
(4)B→AU:
(5)AU→B:(B取得A的公钥)
(6)B→A:
(7)A→B:(完成认证)
公钥证书
用户通过公钥证书相互之间交换自己的公钥
公钥证书由证书管理机构(CA)为用户建立
证书的形式:(:CA的私钥;:当前时间戳;:用户A的身份;:A的公钥)
对单钥体制所用密钥的分配
(1)A→B:
(2)B→A:(使A确信对方是B)
(3)A→B:(使B确信对方是A)(完成认证)
(4)A→B:(确保会话密钥只有A可以加密,且只有B可以解密)
Diffie-Hellman密钥交换
:大素数;:的原根;和公开
(1)用户A选择保密的随机整数,计算 mod ,发送给用户B
(2)用户B选择保密的随机整数,计算 mod ,发送给用户A
(3)用户A计算 mod ,即可得到共享密钥
(3)用户A计算 mod ,即可得到共享密钥
消息认证
消息认证码
概念:消息被一个密钥控制的公开函数作用后产生的、用作认证符的、固定长度的数值,也称密码校验和
通信双方A和B共享一密钥
(1)A对欲发送的消息计算MAC=,其中是密钥控制的公开函数
(2)A向B发送 || MAC
(3)B对收到的计算新MAC,并与收到的MAC作比对
数据认证算法
CBC-MAC
缺陷
MAC虽然可以保护通信双方防止第三者的攻击,但是不能保护通信双方中的一方防止另一方的欺骗或伪造
哈希函数
概念:将任意长的消息映射为较短的、固定长度的值作为认证符的公开函数,称为哈希值或消息摘要
要求
函数的输入可以是任意长
函数的输出是固定长
已知,求较为容易
已知,求使得的在计算上是不可行的(函数的单向性)
已知,找出使得在计算上是不可行的
找出任意两个不同的输入、,使得在计算上是不可行的
MD5算法
分组长度:512 bit;输出长度:128 bit
(1)对消息分组、填充,使得填充后的消息长度为512的某一倍数减64。填充方式:第1位为1,其后各位皆为0。
(2)附加消息的长度:用步骤(1)留出的64 bit存放消息被填充前的长度。
(3)缓冲区初始化:算法使用128 bit的缓冲区存储中间结果和最终哈希值,可表示为4个32 bit的寄存器。
(4)以分组为单位对消息进行处理:依次对每一分组使用压缩函数进行迭代处理。中有4轮处理过程,每轮又对缓冲区进行16步迭代运算。
(5)处理完所有分组后,最后一个的输出即为产生的消息摘要。
SHA算法
分组长度:512 bit;输出长度:160 bit
(1)、(2)同MD5算法步骤(1)、(2)。
(3)缓冲区初始化:算法使用160 bit的缓冲区存储中间结果和最终哈希值,可表示为5个32 bit的寄存器。
(4)以分组为单位对消息进行处理:依次对每一分组使用压缩函数进行迭代处理。中有4轮处理过程,每轮又对缓冲区进行20步迭代运算。
(5)处理完所有分组后,最后一个的输出即为产生的消息摘要。
数字签名
要求
签名的产生必须使用发方独有的一些信息以防伪造和否认
签名的产生应较为容易
签名的识别和验证应较为容易
对已知的数字签名构造一个新的消息或对已知的消息构造一个假冒的数字签名在计算上都是不可行的
产生方式
由加密算法产生
单钥加密
发送方A根据单钥加密算法以与接收方B共享的密钥对消息加密后的密文作为对的数字签名发往B
保密性:敌手不知道因此无法解密
认证性:除B外只有A知道密钥
公钥加密
发送方A使用自己的私钥对消息加密后的密文作为对的数字签名,再使用接收方B的公钥对进行加密后发往B
保密性:只有B拥有
认证性和签字:只有A拥有
由签名算法产生
明文空间,密钥空间,签名,验证
执行方式
直接方式
只有通信双方参与,并假定双方有共享的秘密钥或接收方知道发送方的公钥
缺陷:方案的有效性取决于发送方秘密钥的安全性
具有仲裁的方式
发送方X对发往接收方Y的消息签名后,将消息及其签名先发给仲裁者A,A对消息及其签名验证完后,再连同一个表示已通过验证的指令一起发往Y
实例1
:X与A共享的密钥;:A与Y共享的密钥;:时间戳
(1)X→A:
(2)A→Y:
争议时:Y将发给A,A解密得到和,A对计算新并和解密得到的进行比对
如果A已取得各方信任,则X就能相信无人能伪造自己的签名,Y就能相信X无法对自己的签名予以否认
缺陷
消息以明文形式发送,未提供保密性
A可以和X共谋以否认X曾发过的消息,也可以和Y共谋以伪造X的签名
实例2
:X的私钥;:A的私钥;:Y的公钥;:时间戳
(1)X→A:
(2)A→Y:
优点
在协议执行以前,各方都不必有共享的信息,从而可以防止共谋
只要仲裁者A的私钥不被泄露,任何人(包括发送方X)都不能发送重放的消息
对任何第三方(包括仲裁者A)来说,发送方X发往接收方Y的消息都是保密的
收藏
0 条评论
下一页