3 密码学基础
3.1 密码学基本概念
密码学是研究编制密码和破译密码的技术科学,包含编码学 和破译学。编码学研究编制密码保守通信秘密;破译学研究破译密码以获取信息。
3.1.1 密码体制
3.1.1.1 知识点
- 密码系统(密码体制)
- 密码系统组成:
- 明文空间
- 密文空间
- 加密算法
- 解密算法
- 密钥空间
- 加解密过程
- 密码学的安全目标
- 保密性
- 完整性
- 可用性
- 评估密码系统安全性的三种方法:
- 无条件安全
- 计算安全
- 可证明安全
3.1.1.2 密码加密技术
- 密码编码学:把信息(明文)变成没有密钥就不能被解读或者是很难解读的密文的方法
- 密码分析学:破译密码或者伪造认证的密码
- 对称密码体系中,加密算法和解密算法是公开的
3.1.1.3 密码论原则
- Kerckhoffs原则:一个安全保护系统的安全性不是建立在它的算法对于对手来说是保密的,而是建立在它所选择的密钥对于对手来说是保密的。
3.1.1.4 密码系统安全性评估
- 计算安全:强力破解安全,不具备计算能力和计算时间,满足计算安全的。
- 可证明安全:理论保证安全,破解依赖于对某数学难题的解决,可证明安全的。
- 无条件安全:极限安全,无限时间和无限算力下都无法破解,极限状态安全
3.1.2 古典密码及破译方法
-
古典密码的类型
- 置换密码
- 代替密码
- 代数密码
-
古典密码的破解方法
-
攻击密码类型
|攻击密码类型|攻击者拥有的资源说明|
|---|---|
|仅知密文攻击|仅有密文,对攻击者最不利|
|已知明文攻击|已知明文-密文对|
|选择明文攻击|知道一些"明文-密文对",还可以选择被加密的明文得到密文。差分分析 属于选择明文攻击,通过分析有特定区别的明文通过加密后的变化来攻击密码算法|
|选择密文攻击|选择一些密文得到对应的明文。主要攻击公开密钥密码体制,特别是数字签名。对攻击者最有利|
-
数学分析攻击:针对加解密算法的数学基础和某些密码学特效,通过数学求解的方法来破译密码。
-
凯撒密码体制:设定一个密钥参数key,然后在字母表中向右推进key位即可,是一种移位密码。
-
Vernam密码:加密方法为明文和密钥做异或计算,相同取0,不同取1
3.1.3 量子算法
介绍量子比特特征及实用的量子算法(Shor算法和Grover算法)的特点
- Shor算法和Grover算法:两种算法都恶意对RSA、EIGamal、ECC密码和DH密钥协商协议进行有效攻击
3.1.4 常用加密算法汇总
- 对称加密算法
- 非对称加密算法
- 哈希算法
3.2 分组密码
3.2.1 分组密码的概念
- 根据密文数据段是否与明文数据段在整个明文中的位置有关,可以讲密码体制分为分组密码体制 和序列密码体制
- 分组密码体制: 每一次加密一个明文块,密文仅与加密算法和密钥有关系
- 序列密码体制:每一次加密一位或者一个字符,除了与加密算法和密钥有关,还和被加密的明文部分在整个明文中的位置有关
3.2.2 DES
- 属于对称加密算法 ,采用的是*Feistel结构
- S盒变换是一种压缩替换,通过S盒将48位输入变成32位输出。共有8个S盒,并行作用。每个盒有6个输入,4个输出,是非线性压缩变换。
- 假设S盒输入是b1b2b3b4b5b6,则查询S盒输入表时,b1b6作为二进制行号,b2b3b4b5作为2进制列号,一一对应。查出对应的数字后转换成二进制即可。
- DES 加密算法中,DES分组长度 为64比特 ,使用56位比特密钥 对64比特的明文串进行16轮加密,得到64比特的密文串 ,子密钥 的长度为48比特
3.2.2.1 3DES
- 是DES的拓展,使用3次DES进行加密,可以抵抗穷举攻击。但是计算速度较慢
- 3DE有两种加密方式:
- 第一次和第三次使用同种密钥,这种方式密钥长度位128位比特(64✖️2),实际有效长度为112位(56✖️2)
- 三次加密均采用不同的密钥,这种方式密钥长度为192位比特(64✖️3),实际有效长度为168位(56✖️3)
- 3DE有两种加密方式:
3.2.2.2 TDEA
- TDEA也叫三重DES算法
- 工作机制为使用DES对明文进行操作
- TDEA的加密过程加密-解密-加密
- TDEA的解密过程解密-加密-解密
3.2.3 IDEA
- IDEA称为国际数据加密算法
- 密钥为128位
- 明文密文长度64位
- 已经应用于优良保密协议中
3.2.4 AES
- AES结构由四个不同的模块组成:
- 字节代换:S盒变换,非线性的
- 行移位
- 列混淆
- 轮密钥加
- AES采用的算法是Rijndael,该算法的数据库长度和密钥长度都可以选定大于等于128位小于等于256位的32位的任意倍数。
- 颁布AES时规定数据块的长度位128位 ,密钥的长度可以分别选择128位,192位和256位
- Rijndael采用分组密码的通用结构:对轮函数实施迭代的结构,只是论函数结构采用的是代替-置换网络结构(Substitution-Permutation Network,简称SP)
3.2.5 SM1和SM4
- 国密与国际密码的对比表
|--------|------|-----|--------------------------------------------------------|---------------|
| 商用国密 ||| 简介 | 对标国际密码算法 |
| 对称加密算法 | 分组密码 | SM1 | 以芯片、硬件形式部署 | AEC、4DES |
| 对称加密算法 | 分组密码 | SM4 | 用途广泛,可用于大数据加密,**分组长度和密钥长度都是128位** | AEC、4DES |
| 对称加密算法 | 分组密码 | SM7 | 轻量级分组密码,适合资源受限环境 | AEC、4DES |
| 对称加密算法 | 序列密码 | ZUC | 流密码,明文密钥逐一比特异或计算 | RC4、SNOW、3G |
| 非对称密码算法 || SM2 | 基于椭圆曲线,由私钥算出公钥,用于数字签名、密钥交换、公钥加密 | RSA,ECC,ECDSA |
| 非对称密码算法 || SM9 | 基于双线性对,是标识密码算法,用户公钥与标识相关,私钥由KGC基于公钥生成,用于数字签名、密钥交换、公钥加密 | IBE |
| 密码杂凑算法 || SM3 | 哈希算法,计算摘要 | MD5、SHA系列 |
3.3 Hash函数
3.3.1 Hash函数的安全性
- 对Hash函数的攻击就是寻找一对碰撞消息的过程。
- 对散列函数的攻击方法主要有两种:
- 利用散列函数的代数结构攻击
- 穷举攻击
3.3.2 MD5与SHA-1算法
- MD5消息摘要算法由MD2、MD3、MD4发展而来。
- 分组消息长度 为512 比特,生成128比特的摘要。
- MD5是消息摘要算法
- SHA-1算法的输入长度小于2的64次方比特 的消息,输出160 比特的摘要
- 安全哈希算法(SHA)主要适用于数字签名标准里面定义的数字签名算法。
- 对于长度小于2的64次方位的消息,SHA-1会产生一个160位的消息摘要。
- 如果原始消息的长度超过了512位,我们需要将它补成512的倍数,然后把消息分成一个个长为512的数据库,分别处理每一个数据块,得到消息摘要
3.3.3 SM3
- SM3是国家密码管理局发布的安全密码杂凑算法,消息分组长度位512比特,生成的消息摘要为256比特
3.4 公钥密码体制
加密方式较慢,不适合海量数据加密
3.4.1 RSA密码
-
RSA密码包含以下考试重点
- 公钥密码体质定义
- 欧几里得算法
- 辗转相除法
- RSA加密算法
-
利用公开密钥算法进行数据加解密的过程 是发送方利用自己的公开密钥 进行加密,接收方利用自己的私有密钥进行解密的过程
-
利用公开密钥算法对消息进行签名和验证 是发送方利用自己的私有密进行签名 ,接收方利用发送方的公开密钥进行验证
-
非对称加密算法
- 加密密钥和解密密钥不相同的算法
- 又称为公钥密码体系
- 解决了对称密钥算法中密钥分配与发送的问题。
- 私钥用于解密和签名,公钥用于加密和认证
- 典型的公钥密码体制有RSA算法、数字签名算法(DSA)、椭圆加密算法(ECC)
-
对称加密算法
- 加密密钥和解密密钥相同的算法
- 常见的对称加密算法有DES、3DES、RC5、IDEA
-
非对称加密算法RSA中,已知公钥e和n的情况下,求私钥d
bash
选出两个不相等的质数p和q 让n=p*q
计算(p-1)*(q-1)
e要符合1<e<(p-1)*(q-1)
ed=1 mod (p-1)(q-1)
计算e*d和(p-1)(q-1)的值进行取余数操作,在整除的情况下余数位1
得到d值就是私钥
- 非对称加密算法RSA中,求逆元
bash
例子: 67 mod 119 求逆元
实际上是求
67*d=1 mod 119 这个式子中d的值
变换式:
d=(119*n+1)/67
可以使用穷举法,计算当d取某个值的时候,n为整数,此时的d的值就是要求的逆元
3.4.2 Diffie-Hellman与EIGamal体制
3.4.2.1 Diffie-Hellman密钥交换体制
- 目的是完成通信双方的对称密钥交互。
- 处在不安全环境下也不会造成密钥泄露
3.4.2.2 EIGamal
- 改进了Diffie-Hellman密钥交换体制
- 基于离散对数问题之上的公开密钥密码体制
3.4.3 椭圆曲线与SM2
3.4.3.1 椭圆曲线
- 椭圆曲线密码(ECC)计算比RSA复杂的多,所以椭圆曲线密钥比RSA短
- 一般认为160位长的椭圆曲线密码的安全性相当于1024位RSA密码的安全性
- 我国第二代居民身份证使用的是256位的椭圆曲线密码
3.4.3.2 SM2
- SM2算法是国家密码管理局发布的椭圆曲线公钥密码算法,被用于在我国商用密码体系中替换RSA算法
3.4.3.3 SM3和SM9
3.4.3.3.1 进程
- 2018年10约SM3算法正式成为国际标准
- 2018年11月SM2/SM9发布
- 2017年11月SM2/SM9算法被定为国际标准,正式进入标准发布阶段
3.4.3.3.2 定义
- SM2:椭圆曲线公钥密码算法
- SM3:密码杂凑算法
- SM9:标识密码算法:基于双线性对。把用户的身份标识生成用户的公、私钥对,主要用于数字签名、数据加密、密钥交换及身份认证。不需要申请数字证书
3.5 数字签名
3.5.1 数字签名概念
- 数字签名的作用:确保A发给B的信息是A发的并且没有被篡改
- 数字签名体系包括:施加签名 和验证签名
- 数字签名最常见的实现方法是建立在公钥密码体制和**单向安全散列函数算法(Hash)**的组合基础上
- 数字签名可以用于解决信息的:不可信、被伪造、依赖 等问题,具有不可改变性
- DSS数字签名标准的核心是数字签名算法DSA ,该签名算法中杂凑函数采用的是SHA-1
- DSA不能用作加密和解密、不能进行密钥交换、只能用于签名,因此DSA不能保证信息的不被泄露
3.5.2 SM9
- 2018年11月:正式纳入了SM2/SM9数字签名算法
3.6 密码管理
3.6.1 密码管理过程
- 密码管理包含:
- 密钥管理
- 密码管理政策
- 密码测评
- 密码测评:是对密码产品的安全性、合规性进行评估,确保其安全有效。我国负责密码测评工作的部门是商用密码测评中心。
- 密钥管理遵循的原则:全程安全原则、最小权利原则、责任分离原则、密钥分级原则、密钥设定与更换原则。
3.6.2 对称密钥分配(Kerberos)
- kerberos协议 :
- 计算机网络的身份认证
- 密钥分配中心的核心
- 进行密钥分配时,使用:AES、DES等对称密钥加密
- 重放攻击: 又称重播攻击、回放攻击或者新鲜性攻击。
- 攻击者发送一个目的主机已接收过的包,达到欺骗系统的目的
- 主要用于身份认证过程,破坏认证的正确性。
- 应对重放攻击的有效手段:时间戳、序列号、一次性密钥
- Kerberos 采用一次性密钥和时间戳 来防止重放攻击
- Kerberos流程原理
- 第一步:用户用明文向认证服务器(AS)表明身份。AS也是密钥发放中心(KDC),验证通过后用户可以和票据发放服务器(TGS)联系
- 第二步:AS向A发送用A的对称密钥KA加密的报文,包含A和TGS通信的回话密钥KS及AS发给TGS的票据,(包含发送人身份和会话密钥)报文到达A后,输入正确的口令并通过合适的算法生成密钥KA,从而得到数据
- 第三步:转发AS获得的票据,要访问的服务器B的名称,用会话密钥KS加密的时间戳发送给TGS。
- 第四步:TGS返回两个票据,第一个包含服务器B的名称和会话密钥KAB,使用Ks加密。第二个票据包含A和会话密钥KAB,使用KB加密
- 第五步:A将TGS收到的第二个票据(A和KAB,使用KB加密)使用KAB加密的时间戳发送给B
- 第六步:服务器B把时间戳+1证实自己收到了票据,时间戳使用KAB加密
- 最后A和B就是用TGS发出的密钥KAB加密)
非对称密钥分配
- 公钥密码中:公钥的秘密性可以不用保护,但是真实性和完整必须保护。公钥密码也要考虑严格密钥分配机制。
3.7 数字证书
- 数字证书又称为公钥证书,属于一种数据结构,该结构由认证中心(CA)签名并包含公开密钥、签发者信息、有效期等信息
- 公钥基础设施(PKI) 是一组规则、过程、人员、设施、软件和硬件的集合。可以用于公钥证书的发放,分发和管理 。用于解决工要可信性的问题。
- 组成部分:证书主体、CA、注册中心、使用证书的应用和系统、证书权威机构等
- 注意!:自治系统AS在互联网中是一个有权自主的决定在本系统中采用何种路由协议的小型单位,不属于PKI的组成部分
- CA 的基本功能:负责电子证书的申请、签发、制作、废止、认证和管理 ,提供网上用户身份认证、数字签名、电子公证、安全电子邮件等服务业务。
- RA 负责证书申请者的信息录入、审核任务、对发放的整数完成管理功能
- X.509标准 :此标准下,包含在数字证书中的数据域有
- 证书
- 版本号
- 序列号(唯一标识每一个CA下发的整数)
- 算法标识
- 颁发者
- 有效期
- 有效起始日期
- 有效终止日期
- 使用者
- 使用者公钥信息
- 公钥算法
- 公钥
- 颁发者唯一标识
- 使用者唯一标识
- 扩展
- 证书签名算法
- 证书签名