cryptography
https://blog.csdn.net/c1ata/article/details/104934368?utm_medium=distribute.pc_relevant.none-task-blog-OPENSEARCH-11.nonecase&depth_1-utm_source=distribute.pc_relevant.none-task-blog-OPENSEARCH-11.nonecase
文章目录
我国密码政策
我国的密码分级
我国商用密码政策
密码学的基本概念
密码学的基本思想
密码学的基本目标
密码体制(CryptoSystem)的构成
密码体制的分类
从加密密钥与解密密钥是否相等来划分
从密钥使用方式来划分
从密码算法是否变化分
从是否基于数学来划分
密码学的组成
密码分析
可破译与不可破译
穷举攻击
基于数学的分析
基于非数学的分析
根据占有的数据资源的分类
仅知密文攻击(Ciphertext-only attack)
已知明文攻击(Known-plaintext attack)
选择明文攻击(Chosen-plaintext attack)
密码学的理论基础
信息论
设计复杂性理论
密码设计的基本方法
密码学最基本的三个编码技术
信息加密的一般流程
代替编码
移位密码
加减密码
单表代替密码
多表代替密码
移位密码
加减密码
我国密码政策
我国的密码分级
核心密码
用于保护党、政、军的核心机密
普通密码
用于保护国家和事企单位的低于核心机密而又高于商用的机密信息
商用密码
用于保护国家和事企单位的非机密的敏感信息
个人密码
用于保护个人的隐私信息。
核心密码、普通密码、商用密码由国家密码管理局统一管理。
我国商用密码政策
统一领导
国家密码管理局统一领导
集中管理
国家密码管理局集中管理
定点研制
只允许指定单位进行研制
专控经营
只有经受许可的单位才能经营
满足使用
国内各个单位都能申请使用
密码学的基本概念
密码学的基本思想
伪装以隐蔽信息,使未经授权者不能理解它的真实含义。
伪装就是对信息进行一种可逆的数学变换
伪装前的原始信息称为明文,伪装后的信息称为密文
伪装的过程称为加密,去掉伪装还原明文的过程称为解密
加密在加密密钥的控制下进行,解密在解密密钥的控制下进行
用于加密的一簇数学变化称为加密算法,用于解密的一簇数学变换称为解密算法
密码学的基本目标
在下面的一个通信模型中
image-20200317194035550
信源A 通过公开的信道向信宿B传递信息。这中间存在一个敌手,可以从公开信道发起攻击。它有两种攻击方式:
被动攻击(窃听):获取但不改变传输的信息
主动攻击:不仅窃听,而且还改变传输的信息,目的是实现伪造和欺骗。(不考虑破坏信道的主动攻击)
我们对抗这种窃听,采用的使加密技术。
image-20200317195121423
这样敌手获取的就是加密后的信息,若不能破译成功,就算攻击失败了。
而加密技术正解决信息的机密性问题——能解决信息的传输保密和存储保密的问题
对抗主动攻击,我们采用的是认证技术。
image-20200317200314009
当敌手更改消息内容时,会使认证码与消息不匹配。从而导致攻击失败。
我们主要对以下内容进行验证:
发方的身份
收方的身份
内容的真伪
时间的真伪
认证技术解决的是信息的真实性认证问题(能够检测出主动攻击)
对抗抵赖的技术——互不信任的双方的认证问题
image-20200317201509086
所以,密码学的基本目标就是解决信息安全的三个基本需求,即:
信息的机密性保证
信息的真实性认证
承诺的不可否认性保证。
对于信息的机密性保证,我们有加密算法来完成;
对于真实性认证,由认证算法和配套的协议来完成;
对于承诺的不可否认性保证,由数字签名算法、配套的协议和仲裁机构来完成。
下图实现了一个加密算法的执行过程
image-20200317204943841
对敌手攻击能力的假设
思想:假设敌手具有最强的攻击能力
Kerckhoffs假设:假设敌手知除密钥之外的所有知识
那么就要求密码算法应该满足:一切的秘密蕴含于密钥之中C。
假设敌手知道:
所使用的密码算法
加密算法Ek(m)
Ek(m)
脱密算法Dk(c)
Dk(c)
明文空间M
密文空间C
密钥空间K
Ek:M→C
Ek:M→C
知道明文的概率分布规律
知道密文的概论分布规律
知道所有可能的破译方法
为何这样假设?
我们不能保证 敌手得不到这些信息
如果在敌手最有力的条件下仍然不可破译,则说明密码算法在实际中更加安全
对于性能相同的两个密码算法,我们一定要选择强度高的密码算法
密码体制(CryptoSystem)的构成
由五部分组成<M,C,K,E,D>
明文空间M:全体明文的集合
密文空间C:全体密文的集合
密钥空间K:全体密钥的集合,K=<Ke,Kd>
K=<Ke,Kd>,其中KeKe是加密密钥,Kd
Kd是解密密钥
加密算法E:一簇由$M\rightarrow C $的加密变换
解密算法D:一簇由C→M
C→M的解密变换,解密变换是加密变换的逆
对于一个确定的密钥,加密算法将确定一个具体的加密变换,解密算法将确定出一个具体的解密变换,且解密变换是加密变换的逆变换。
也就是,对于明文空间中的任一个明文M,加密算法E在加密密钥Ke
Ke的控制下将明文加密成密文C:
C=E(M,Ke)
C=E(M,Ke)
且解密算法D在解密密钥Kd
Kd的控制下加密文解出来同一明文。
M=D(C,Kd)=D(E(M,Ke),Kd)
M=D(C,Kd)=D(E(M,Ke),Kd)
image-20200317162215557
上图说明了一个双方加密通信的一个过程,不安全的信道上传送的是加密的信息。而解密算法在接收者哪里,解密密钥和加密密钥通过特殊的更安全一点的信道传输。就算攻击着窃取到密文,也很难解开。
密码体制的分类
从加密密钥与解密密钥是否相等来划分
传统密码
Ke=Kd
Ke=Kd
典型密码:DES,AES,SMS4,RC4
公开密钥密码
Ke≠Kd
Ke=Kd
而且从Ke不能计算出来Kd
Ke不能计算出来Kd
即使把Ke
Ke公开,这样也不会危害Kd
Kd的安全
典型密码:RSA,EIGAMAL,ECC
从密钥使用方式来划分
序列密码
明文、密文、密钥**以位(字符)**为单位加解密
核心密码的主流
典型密码:RC4,祖冲之密码
分组密码
明文、密文、密钥以分组为单位进行加解密
商用密码的主流
典型密码:DES,AES,SMS4
从密码算法是否变化分
固定算法密码
密码在工作过程中算法固定不变,密钥可变
迄今为止绝大多数密码都是固定算法密码
典型密码:AES,DES,SMS4,RC4,RSA,EIGAMAL,ECC
演化密码
借鉴生物进化,将密码学与演化计算结合
密码算法不断演化、变换,而且越来越好
实现密码设计与密码分析自动化的一种方法
密码系统智能化的一种成功的实践
image-20200317172749224
从是否基于数学来划分
基于数学的密码
前面的所有密码
基于非数学的密码
量子密码
在唯密文攻击性下无条件安全的密码
基于量子的保密物理属性
利用量子力学产生的真随机数做密钥,利用量子通信的保密性传输密钥,利用模2加进行加密,而且按照一次一密的方式。
DNA密码
基于生物学中的困难问题
由于不基于运算,所以无论计算机的计算能力多么强大,与DNA密码都是无关的
尚不成熟,缺少理论,技术实现复杂
量子密码和DNA密码都属于理论研究阶段。
密码学的组成
研究密码编制的科学称为密码编制学(Cryptography)
研究密码算法的编制技术
确切点是研究安全、高效的信息加密算法和信息认证算法的设计理论与设计技术
研究密码破译的科学称为密码分析学 (Cryptanalysis)
研究密码破译的理论与技术
密码破译包括信息加密算法的破译和信息认证算法的破译
信息加密算法破译的目的是获取被加密的信息;
信息认证算法的破译目的是伪造合理的消息,以达到伪造和欺骗的目的。
密码算法对抗密码破译的能力被称为密码算法的保密强度。
密钥管理学
研究密钥的生成、分配与管理的理论、技术和方法的科学
密码编制学和密码分析学共同组成密码学(Cryptology)
密码分析
可破译与不可破译
如果没有密钥?那么谁都可以破译。
如果能够根据密文系统的确定出明文或密钥,或者能后通过明文-密文系统的确定出密钥,则我们说这个密码是可破译的。
如果一个密码被分析者截获多少密文和用什么方法进行攻击都不能被攻破,则称为是绝对不可破译的。
理论上,绝对不可破译的密码是存在的,一次一密
任何可实用的密码都是可破译的。
穷举攻击
密码分析者采用依次试遍所有可能的密钥对所获得的密文进行解密,直到得到正确的明文;或者依次用一个确定的密钥对所有可能的明文进行进行加密,直到获得所有的密文。
判定的标准就是脱密结果最合理的就是正确的密钥。
理论上,对于任意可实用密码只要有足够的资源,都可以用穷举攻击将其攻破。目前:可能密钥总数少于264
264的密码不能对抗穷举攻击。密钥总数达到2128
2128,那么我们认为是可以抵抗穷举攻击的。
穷举攻击是最笨,但往往也是最有效的攻击方法。比如某些人喜欢用生日、电话号码当作密码。
评定一个攻击方法有效往往通过计算量、存储量、已知的数据量和成功率来衡量的。
基于数学的分析
所谓数学分析是指密码分析者针对加解密算法的数学依据,通过数学分析的方法来破译密码。
统计分析攻击:早期的基于数学的密码分析主要是统计分析,它是指密码分析者通过分析密文和明文的统计规律来破译密码。许多的古典密码都可以通过统计分析而破译。
公钥密码特别容易受到这种攻击。因为公钥密码是一种基于数学困难问题的密码。
为了对抗数学分析,应当选用具有坚实数学基础和足够复杂的加解密算法。
基于非数学的分析
所谓非数学攻击是指密码分析者获取并分析密码芯片的物理参数(如,功率、电流、时间、执行时间等)来破译密码。
这种攻击称为侧信道攻击。
侧信道攻击的原理
密码芯片在执行不同的指令时候所消耗的功率、电流、时间、发出的声音是不同的。
密码芯片在处理不同的数据时候所消耗的功率、电流、时间、发出的声音是不同的
以获取密钥为目的侧信道攻击。
以获取密码算法为目的的侧信道攻击。
芯片物理解剖
侧信道分析与数学分析结合
根据占有的数据资源的分类
密码学的基本假设:
攻击者总能获得密文
攻击者总能知道密码算法,但不知道密钥
攻击者有足够的计算资源
仅知密文攻击(Ciphertext-only attack)
密码分析者仅根据截获的密文来破译密码。敌人除了加密算法、明文和密钥的概论分布外,还知道很多由同一个密钥加密的密文。因为密码分析者仅知道密文,这是对密码分析者最不利的情况。
已知明文攻击(Known-plaintext attack)
密码分析者根据已经知道的明文-密文对,来破译密码。敌手除了具备仅密文攻击的条件外,还具备许多密文对应的明文。
攻击者总是能获得密文,并猜出部分明文。计算机程序文件加密特别容易受这种攻击。
选择明文攻击(Chosen-plaintext attack)
密码分析者能够选择明文并获得相应的密文。敌手除了具备一直明文攻击外,还可以选择对它有利的明文,并得到相应的密文。
计算机文件加密和数据库加密特别容易受到这种攻击
这是对攻击者最有利的情况!
密码学的理论基础
信息论
从信息从信道传输中可能受到攻击,引入密码理论;
提出以扩散、混淆和乘积等基本方法设计密码;
阐明了密码体制,完善保密,理论保密和实际保密等概念。
设计复杂性理论
密码的安全性以计算复杂度来度量;
现代密码往往建立在一个数学难题上,而难是计算复杂度的概念;
计算复杂度只能为密码提供一个必要条件。
密码设计的基本方法
公开设计原则
密码的安全仅依赖于对密钥的保密,不依赖于对算法的保密。
扩散和混淆
扩散(diffusion):将明文和密钥的每一位的影响散布到尽可能多的密文位中,理想情况下达到完备性。
混淆(confusion):使明文、密钥和密文之间的关系复杂化。
迭代与乘积
迭代:设计一个轮函数,然后迭代。
乘积:几种密码联合使用。
密码算法设计的最理想状态就是让所有可能的破译的方法都比穷举攻击更无效。
安全的密码算法应能够对抗所有可能的攻击方法——让所有可能的攻击方法失效!
密码学最基本的三个编码技术
信息加密的一般流程
image-20200317222021081
其中消息到数字,和数字到消息,属于信源编码的问题。
代替编码
利用预先设计好的代替规则,对明文进行逐字符或逐字符组进行代替的密码
分为单表代替和多表代替两种
移位密码
对各字符或字符组进行位置移动的密码。
加减密码
将明文逐字符或逐字符组与乱数相加或相减的密码
单表代替密码
利用预先设计好的固定代替规则,对明文进行逐字符或逐字符组进行代替的密码
固定是指代替规则只有一种,因而,密钥和被加密的明文字符的序号无关。故相同的名文字符一定产生相同的密文字符。
代替规则又称为代替函数、代替表或S盒
字符或字符组又称代替单位
特点:
明文字符的形态一般将面目全非(形态变)
明文的位置不变(缺)
明文的跟随关系反映在密文之中
明文的跟随关系反映在密文之中
明文字符的统计规律就完全暴露在密文字符的统计规律之中
多表代替密码
解决了单表代替密码明文位置不变的问题
移位密码
优点:
明文字符的位置发生了改变
缺点:
明文字符的形态没有改变
可以与代替密码结合实现强度很高的加密算法,可与代替密码互补
加减密码
双减密码
仿射密码
可以与代替密码结合实现强度很高的加密算法
————————————————
版权声明:本文为CSDN博主「DeLongのBlog」的原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接及本声明。
原文链接:https://blog.csdn.net/c1ata/java/article/details/104934368