密码学原理学习笔记
引言
我国的密码分级
- 核心密码:用于保护党政军的核心机密
- 普通密码:用于保护国家和事企业单位的低于核心机密,高于商用机密信息
- 商用密码:用于保护国家和事企业单位的非机密的敏感信息
- 个人密码:用于保护个人的隐私信息
前三种密码均有国家密码管理局统一管理
密码学的组成
- 研究密码编制的科学:密码编制学(Cryptography )
- 研究密码破译的科学:密码分析学(Cryptanalysis)
- 密码编制学+密码分析学=密码学(Cryptology)
保密系统
简单地说,一个保密系统主要由明文信源、信道、加密器、解密器以及密钥源
等五个基本部分组成
明文信息的产生和发送者称为明文信源(source). 我们一般称由明文信源产生的信息为消息(message).由明文信源输出的消息要经过某种通信渠道传送给称为信宿的接收者(receiver). 所谓信道(channel)就是将明文信源消息传送给接收者的渠道.加密器将明文信源输出的消息变换为密文,然后再输出到信道.解密器接收信道的输出,并恢复出原始的明文信源消息.密钥源用于产生加密器和解密器所使用的密钥
存储系统也可以看做是一种特殊的保密系统
保密系统的使用者通常称为用户(user). 保密系统的破坏者有时称为对手(adversary).对手分为“窃听型”和“干扰型”两种.“ 窃听型”对手只是截取信道上传送的信息,然后进行分析.而“干扰型”对手则会篡改信道上传送的信息.
密码体制
没有加密的信息称为明文(plaintext).加密后的信息称为密文(ciphertext).从明文到密文的变换称为加密(encryption). 从密文到明文的变换称为解密(decryption).
加密和解密都是在密钥(key) 的控制下进行的.给定一个密钥,就可确定一对具体的加密变换和解密变换.
密钥空间中不同密钥的个数称为密码体制的密钥量.它是衡量密码体制安全性的一个重要指标.
如果一个密码体制的加密密钥与解密密钥相同,则称其为单密钥密码体制或对称密码体制;否则,称其为双密钥密码体制或非对称密码体制.
在一个双密钥密码体制中,如果由加密密钥ke计算解密密钥kd是困难的,公开ke不会损害kd的安全性,则可以将加密密钥ke公开.这样的密码体制称为公钥密码体制(public-key cryptosystem).(kd更重要)
密码体制的分类
从加密密钥与解密密钥是否相等划分
- 传统密码:
- ke=kd
- 典型密码: DES, AES, SMS4, RC4
- 公开密钥密码:
- ke!=kd
- 且由ke不能计算出kd
- 可将ke公开,不会危害kd安全
- 典型密码: RSA,EIGAMAL,ECC
从密钥的使用方式划分
- 序列密码:
- 明文、密文、密钥以位(字符)为单位加解密
- 核心密码的主流
- 典型密码: RC4,ZUC
- 分组密码:
- 明文、密文、密钥以分组为单位加解密
- 商用密码的主流
- 典型密码: DES,AES,SMS4
从密码算法是否变化划分
- 固定算法密码:
- 密码工作过程中算法固定不变,密钥可变
- 迄今为止的绝大多数密码都是固定算法密码
- 典型密码:DES, AES, SMS4, RC4,RSA, EIGAMAL, ECC
- 演化密码:
- 借鉴生物进化,将密码学与演化计算结合
- 密码算法不断演化变化,越变越好
- 实现密码设计与密码分析自动化的一种方法
- 密码系统智能化的一种成功实践
从是否基于数学划分
- 基于数学:上述所有密码
- 基于非数学:量子密码,DNA密码
- 在唯密文攻击下无条件安全的密码
- 基于量子的保密物理属性
- 利用量子力学产生真随机数作密钥
- 利用量子通信的保密性传输密钥
- 利用模2加进行加密
- 一次一密方式工作
密码分析
密码分析指的是对密码体制的攻击.如果能够根据密文系统地确定出明文或密钥,或者能够根据明密文对系统地确定出密钥,则该密码是可破译的.
一个密码,如果无论密码分析者截获了多少密文和用什么方法进行攻击都不能被攻破,则称为是绝对不可破译的
理论上,绝对不可破译的密码是存在的(一次一密)
理论上,任何可实用的密码都是可破译的
密码学假设
- 攻击者总能获得密文
- 攻击者总能知道密码算法,但不知道密钥
- 攻击者有足够的计算资源
- 唯密文攻击(ciphertext-only attack):密码分析者仅知道一些密文
- 已知明文攻击(known-plaintext attack):密码分析者知道一些明文和相应的密文
- 选择明文攻击(chosen-plaintext attack):密码分析者可以选择一些明文, 并得到相应的密文
- 选择密文攻击(chosen-ciphertext attack):密码分析者可以选择一些密文,并得到相应的明文
攻击强度依次加强
穷举攻击
密码分析者采用依次试遍所有可能的密钥对所获密文进行解密,直至得到正确明文;或者依次用一个确定的密钥对所有可能的明文进行加密,直至得到所获得的密文.
显然,理论上,对于任何可实用密码只要有足够的资源,都可以用穷举攻击将其攻破.
可通过增大密钥量来对抗穷举攻击
统计分析攻击(基于数学的分析)
所谓基于数学的密码分析是指密码分析者针对加解密算法的数学依据通过数学分析的方法来破译密码.
- 统计分析攻击:密码分析者通过分析密文和明文的统计规律来破译密码
- 解密变换攻击:通过数学求解的方法来设法找到相应的解密变换
为了基于数学的分析攻击,应当选用具有坚实数学基础和足够复杂的加解密算法
基于非数学的分析
所谓基于非数学的密码分析是指密码分析者获取并分析密码芯片的物理参数(如:功率、电流、声音、执行时间等)来破译密码.
- 侧信道攻击
- 攻击原理:密码芯片在执行不同的指令、处理不同数据时所消耗的功率、电流、时间等不同
- 两种攻击目的:获取密钥和获取密码算法