前记:
基本概念
分类
密码体制从原理上可分为两类
单钥体制对明文消息的加密有两种方式
三大安全目标:
(对比信息安全的五个基本要求)
安全目标包括保护数据安全的不同措施,例如保密性,完整性,身份验证等。但是,保持数据安全的主要目标是防止数据受到各种类型的安全攻击。
攻击类型
五大基本要求
对每个字母逐个进行代换
凯撒密码:移位变换,取 3
移位变换
对多个字母同时进行代换。
多表代换密码是以两个以上代换表依次对明文消息的字母进行代换的加密方法。所以对于同一个明文因为位置的不同他所对应的密文也是不一样的。
举个例子:弗吉尼亚密码
假设明文为:ATTACKATDAWN
关键词为LEMON (相当于每次用LEMON长度进行代换 )
则密钥:LEMONLEMONLE(与明文等长)
加密解密如下:
置换与代换的概念
例子
(看第一个例子就够了)
http://blog.chinaunix.net/uid-25979788-id-3895844.html
https://blog.csdn.net/lee371042/article/details/79821788
https://www.knowpia.cn/pages/%E5%AE%8C%E5%96%84%E4%BF%9D%E5%AF%86%E6%80%A7
https://blog.csdn.net/hanshanbuleng/article/details/88778935
基本概念
在信息论中的表示:
基本性质
重点记这个公式(上面那个通用公式,可以不记,但要知道概念):
One-time Pad;OTP
书上的简介:
基本概念
流密码把信息看成二进制数据流,基本工作原理是把信息中的每一位跟密钥流的每一位进行运算来获得密文。
下面来详细解释一下这句话。
首先,流密码也有一个密钥,常见的是128位,但是加密和解密的时候却不是直接使用密钥,而是使用密钥流,术语叫 keystream 。从密钥获得密钥流的过程,就是一个伪随机数生成过程。把真随机数的密钥做种子,去生成伪随机数作为密钥流。加密时候需要用到的密钥流长度要和信息流的长度相等,密钥流中的每一位和相同位置的信息流的一位,进行异或运算,就得到的密文。
与分组密码的区别
常见的流算法
概念
分组密码(block cipher)的数学模型是将明文消息编码表示后的数字(简称明文数字)序列,划分成长度为n的组(可看成长度为n的矢量),每组分别在密钥的控制下变换成等长的输出数字(简称密文数字)序列。
设计方法(原则)
https://blog.csdn.net/qq_41683305/article/details/104985468
影响因素
**DES:**Data Encryption Standard
理解Feistel步骤后,再看des就很简单。
唯一的不同是图中框出来的内容。
步骤:
**AES:**Advanced Encryption Standard 是Des的升级版
总述
分点
0.CTR
特点: 密文没有规律, 明文分组是和一个数据流进行的按位异或操作, 最终生成了密文
不需要初始化向量
每一个分组都用独立的计数器送入到加密算法,产生的结果与明文异或。
通过对比发现CTR加密即解密,解密即加密,且各分组之间是独立的,可以并发完成,效率高。
1.电码本模式(ECB)
描述:一次对一个64bit长的明文分组加密,而且每次的加密密钥都相同。
用途:传送端数据
特性:若同一明文分组在消息中重复出现,则产生的密文分组也相同
安全性: 长消息时可能不够安全,如果消息有固定结构,密码分析者有可能找出这种关系。
优点 :
(1)实现简单;
(2)不同明文分组的加密可并行实施,尤其是硬件实现时速度很快
缺点 :
(1)相同明文分组对应相同密文分组
(2)不能隐蔽明文分组的统计规律和结构规律, 不能抵抗替换攻击
应用:
(1)用于随机数的加密保护
(2)用于单分组明文的加密
2.密码分组链接模式(CBC) 重点
为了解决ECB的安全缺陷,可以让重复的明文分组产生不同的密文分组,CBC (Cipher Block Chaining)模式就可满足这一要求。
描述:加密算法的输入是当前明文组与前一密文组的异或
用途:传送数据分组;认证;
特性:
1. 明文块的统计特性得到了隐蔽,由于在CBC模式中,各密文块不仅与当前明文块有关,而且还与以前的明文块 及初始化向量有关,从而使明文的统计规律在密文中得到了较好的隐藏。
2. 具有有限的(两步) 错误传播特性
一个密文块的错误将导致两个密文块不能正确解密。
3. 具有自同步功能
密文出现丢块和错块不影响后续密文块的解密. 若从第t块起密块正确,则第t+1个明文块就能正确求出。
3.密码反馈模式(CFB)
DES是分组长为64比特的分组密码,但利用CFB(Cipher Feed Back)模式或OFB模式可将DES转换为流密码。流密码不需要对消息填充,而且运行是实时的。因此如果传送字母流,可使用流密码对每个字母直接加密并传送。
流密码具有密文和明文一样长这一性质,因此,如果需要发送的每个字符长为8比特,就应使用8比特密钥来加密每个字符。如果密钥长超过8比特,则造成浪费。
4.输出反馈模式(OFB)
OFB(Output Feed Back)模式的结构类似于CFB,见图不同之处如下:OFB模式是将加密算法的输出反馈到移位寄存器,而CFB模式中是将密文单元反馈到移位寄存器。
OFB的缺点是它比CFB模式更易受到对消息流的篡改攻击,比如在密文中取1比特的补,那么在恢复的明文中相应位置的比特也为原比特的补。因此使得敌手有可能通过对消息校验部分的篡改和对数据部分的篡改,而以纠错码不能检测的方式篡改密文。
5.比较
对称密码
公钥密码
算法原理
gcd表示取最大公约数。
记住下面步骤:
(不用管具体的数学关系,知道怎么做就行。如求一个 e , e 和 f(n) 的最大公约数是 1,不用管怎么求最大公约数,直接知道有这个步骤就行,面向对象学习法)
安全性分析
优点
可以与椭圆密码体制相结合。
KDC:Key Distribute Center 密钥分配中心
密钥分配的基本方法
分配的特点
第四种方法分配的例子
密钥分层控制
会话密钥有效期问题
无中心的密钥控制
公钥分配方法
公开发布指用户将自己的公钥发给每一其他用户,或向某一团体广播。例如PGP(pretty good privacy)中采用了RSA算法,它的很多用户都是将自己的公钥附加到消息上,然后发送到公开(公共)区域,如因特网邮件列表。
缺点:任何人都可伪造这种公开发布。如果某个用户假装是用户A并以A的名义向另一用户发送或广播自己的公开钥,则在A发现假冒者以前,这一假冒者可解读所有意欲发向A的加密消息,而且假冒者还能用伪造的密钥获得认证。
公用目录表指一个公用的公钥动态目录表,其建立、维护以及公钥的分布由某个可信的实体或组织承担,称这个实体或组织为公用目录的管理员。与第1种分配方法相比,这种方法的安全性更高。
该方案有以下一些组成部分:
本方案的安全性虽然高于公开发布的安全性,但仍易受攻击。如果敌手成功地获取管理员的秘密钥,就可伪造一个公钥目录表,以后既可假冒任一用户又能监听发往任一用户的消息。而且公用目录表还易受到敌手的窜扰。
如果在公钥目录表中对公钥的分配施加更严密的控制,安全性将会更强。与公用目录表类似,这里假定有一个公钥管理机构来为各用户建立、维护动态的公钥目录,但同时对系统提出以下要求,即:每个用户都可靠地知道管理机构的公钥,而只有管理机构自己知道相应的秘钥。公钥的分配步骤如下
第 三个步骤:不把A的公钥放在消息中一起传过去的原因是:任何人都可以拿到B的public key,所以3步骤如果放入A的公钥,B没理由相信就是A的公钥,所以需要向kdc申请A的公钥。
在单钥的分配中,因为只有B和kdc有密钥,所以B有理由相信是kdc主导的。
1.用户A向公钥管理机构发送一个带时戳的消息,消息中有获取用户B的当前公钥的请求。
2.管理机构对A的请求作出应答,应答由一个消息表示,该消息由管理机构用自己的秘密钥SKAU签名,因此A能用管理机构的公钥验证,并使A相信这个消息的确是来源于管理机构。
上述公钥管理机构分配公开钥时也有缺点,由于每一用户要想和他人联系都需求助于管理机构,所以管理机构有可能成为系统的瓶颈,而且由管理机构维护的公钥目录表也易被敌手窜扰。
分配公钥的另一方法是公钥证书,用户通过公钥证书来互相交换自己的公钥而无须与公钥管理机构联系。
公钥证书由证书管理机构CA(Certificate Authority)为用户建立,其中的数据项有与该用户的秘密钥相匹配的公开钥及用户的身份和时戳等,所有的数据项经CA用自己的秘密钥签字后就形成证书
用公钥分配单钥
简单分配:直接用公钥加密单钥,然后发送给有私钥的一方。
具有保密性和认证性的密钥分配
前提是双方都拿到了对方的公钥
用双方的公钥进行操作,达到保密和认证两重保证**(妙啊)**。用A的私钥加密M,得到M’,再用B的公钥加密M’,得到M’’ 。这样,对于A的私钥,产生认证的效果;对于B的公钥,产生保密效果。
B收到后,先用A的公钥解一次,确认是A发送的,然后用自己的私钥解密,这次达到保密的效果。
(保密为主,所以加密时保密在外层)
基本概念
原理图
步骤
非常通俗,建议认真看看:https://www.zhihu.com/question/24294477?sort=created
数字证书基本概念
数字证书 = 证书内容 + 证书内容Hash值的签名
签名概念:明文,我们称为内容P。然后使用hash算法,对内容P进行hash计算,得到一个hash值H。
然后使用签发机构的私钥对H进行RSA加密,得到签名信息S。这个步骤称为签名。
用hash的作用有两个,一个是缩短加密内容,另一个是防篡改
证书内容如下:
流程
前期工作:
开始交互:
基本定义
消息认证码(MAC:Message Authentication Code)(带密钥的Hash函数:HMAC):密码学中,通信实体双方使用的一种验证机制,保证消息数据完整性的一种工具。构造方法由M.Bellare提出,安全性依赖于Hash函数,故也称带密钥的Hash函数。消息认证码是基于密钥和消息摘要所获得的一个值,可用于数据源发认证和完整性校验。
能够认证是因为使用了密钥。
能检证完整性校验是因为使用了散列函数。
消息认证码不提供保密性,因为是使用明文传输
使用方式
由于MAC不提供保密,故衍生出三种基本使用方式。(rsa签名体制可对比)
定义
使用方式
有6种基本使用方式:
要求
要求作用
第I类生日攻击:利用性质(5)抵抗
已知一个哈希函数H有n个可能的输出,H(x)是一个特定的输出,如果对H随机取k个输入,则至少有一个输入y使得H(y) = H(x)的概率为0.5时,k有多大?
第II类生日攻击:利用性质(6)抵抗
设哈希函数H有2^m个可能的输出(即输出长m比特),如果H的k个随机输入中至少有两个产生相同输出的概率大于0.5,则 k 约等于 2^(m/2)
一般散列函数结构
目前使用的大多数哈希函数如MD5、SHA,其结构都是迭代型的
md5
5个步骤
sha
和md5一样,都是从md4发展而来,故在结构上很相似。
sha与md5不同之处在于:md5直接用一个消息分组的16个字作为每步迭代的输入,而sha则将输入分组的16个字扩展成80个字以供压缩函数使用。从而使得寻找具有相同压缩值的不同消息分组更加困难
sm3
基本概念
产生方式
两种方式:
由加密算法产生数字签名:利用加密算法产生数字签名是指将消息或消息的摘要加密后的密文作为对该消息的数字签名。
由签名算法产生数字签名
主要用途
(知道几个,问到说说就行。和第一章安全性要求很像)
理解了RSA加密,RSA签名很好理解。
不经意传输协议,是一种可保护隐私的双方通信协议、接受者的隐私不被发送者所知道,使通信双方以一种选择模糊化的方式传送消息。不经意传输协议是密码学的一个基本协议,他使得服务的接收方以不经意的方式得到服务发送方输入的某些消息,这样就可以保护接受者的隐私不被发送者所知道。
https://baike.baidu.com/item/%E9%9B%B6%E7%9F%A5%E8%AF%86%E8%AF%81%E6%98%8E/8804311
简单理解:有一个函数f(x1,x2,x3), 有三个人要分别提供三个参数x1,x2,x3 , 共同得出函数 f 的结果。但过程中,x1,x2,x3是不能让别人知道的。