密码的发展
密码的起源:
密码的起源非常早,早期的符号密码像宗教符号、岩壁画,至今无人破解的”费托斯圆盘“和无人读懂的”伏尼契手稿“
古代隐写术:
国内的:封蜡技术、隐形墨水、吞服信条...
国外的:卡登格子隐藏法(意大利数学家卡登,两张带孔的卡片+文字混淆)...
生活中的密码:
密码锁、指纹识别、人脸识别、门禁卡...
哑语、盲文、交通图标、汉字...
古典密码
滚筒、凯撒、培根、维吉尼亚、银票
密码学的基石:
置换:对明文的部分或全部内容顺序进行位置交换
替换:对明文的部分或全部内容进行规则型字符代替交换
滚筒密码
滚筒密码使用置换方法
两根相同粗细的多边菱形木棍分别在加密方和解密方,
加密方使用纸条缠绕木棍,横向写入内容,只有相同直径的木棍能还原内容
凯撒密码
单表替换(用一张密码表里的内容,去替换需要加密的内容)
采用错位方法:用第4个字母代替第一个字母,也就是偏移3位(偏移位可以依规则而定)
优点:加密公式简单、解密容易理解
缺点:容易被”穷举法“破译
培根密码
单表替换,用固定密文代替固定明文
维吉尼亚密码
多表替换(为提高单表替换的破译难度)
类似于Excel表格,采用横纵两位的词组作为密钥,词组中每个字母作为索引,来确定采用的替换表(加密后的首个字母是密钥当前对应的字母)
优点:使用了相对复杂的密钥,同样的内容使用不同密钥,得到的加密内容也不一样,增加破译难度
缺点:加密内容过长会出现大量的重复密文序列,可能被破译者发现规律而破译出密钥
中国古代银票
纸张、水印、印章、密码、书写
达芬奇密码桶
由5个转轮(每个转轮26个字母)组成了类似一个圆锥形的小桶,内部放入草质信纸和醋
如果暴力破解,信纸将溶于醋中
密码虽然只有5位,却又26的5次方,产生1180多万种组合
机械密码
摩尔斯电报
现代密码
单钥(对称)
可逆,加解密使用同一把密钥(私钥)
双钥(非对称)
不可逆,加解密使用两把密钥(一把私钥、多把公钥)
总结
加密类型 | 加密结果 | 密钥 |
---|---|---|
对称 | 可逆 | 私钥 |
非对称 | 不可逆 | 私钥、公钥 |
对称密码(单钥)
DES、DESede、IDEA、AES
缺点
同一把密钥安全性低,可能被监听或劫持,安全分发密钥成为难题
加密算法
-
分组:提升效率,对明文划分成相同的长度
-
填充:解决最后一组字符长度不够问题,补充缺失长度
-
迭代:对明文多次计算和转换,每一次的计算称为迭代
ECB,CBC等迭代模式:轮密钥加、字节代位、行移位、列混淆、异或、模、模加与或非运算…
非对称密码(双钥)
RSA、ECC
RSA
1976年,密码学家与安全技术专家 **Diffie** 与 **Hellman**,**提出`公钥密码思想`**
1977年,三位数学家**Rivest(MD5)、Shamir、Adleman**,在麻省理工学院工作时设计了**非对称加密算法**
Adleman:伯克利分校(顶尖军用人才)博士毕业,计算机病毒教父、DNA计算创始人
RSA设计思想:
大整数分解,将一个正整数分解成几个质数的乘积(既可以加密,也可以签名)
2019年,google对外宣布量子计算机 8小时 破解 2048位 RSA
缺点
加密速度相对于对称加密非常慢,实际慢 20倍 以上
https请求时,SSL证书 使用 RSA校验,后续数据使用 AES加解密
ECC
椭圆曲线密码学(Elliptic curve cryptography)
1985年,Neal Koblitz 和 Victor Miller 分别独立提出
2005年,美国国家安全局宣布采用 ECC 作为美国联邦政府的 加密标准之一
ECC设计思想:
求离散对数,也就是循环群的子群问题
优点
使用更短的密钥来获得相同水平的安全强度,从而使计算量极大减少,大幅缩短了加密时间
ECC 600bit = RSA 21000bit
对称和非对称密码体制的区别
密钥体制 |
|
---|---|
单钥 | 1.加密速度快,密钥短 2.密钥分发或者替换困难 3.不能实现身份认证和数字签名 |
双钥 | 1.运算速度慢,密钥长 2.只需保管私钥就行 3.可以进行用户身份认证和数字签名 |
RSA和ECC的加解密、签名、验签
1.RSA可以使用私钥加密/公钥解密,也可以用公钥加密/私钥解密(双向)
2.ECC椭圆曲线只能私钥加密/公钥解密(单向)
签名与验签的作用:不可篡改、不可抵赖
服务端 -> 使用 私钥,对 数据源/摘要,进行不可逆签名(生成校验值)
服务端 -> 将 公钥、数据源、摘要、签名,一起给客户端
客户端 -> 使用 公钥+CA证书,对 数据源/摘要、签名,进行验签
注:签名使用私钥,签名是针对摘要(防篡改),CA数字证书(防抵赖)
消息摘要算法:Hash、MD5、SHA
消息摘要的由来:
1. 任意长度的消息/文件,压缩到某一固定的长度
2. 具有不可篡改性、不可逆转性
3. 频繁的数据交互,比非对称的“签名、验签”更快
摘要特性:离散性、抗碰撞、不可逆、完整性
注:摘要不是用来加密的,是用来做唯一性校验的
MD5基于MD4,SHA-1基于MD5,SHA-1比MD5长 32位
Hash:
哈希也称为 散列、杂凑函数,具有离散性、不可逆、抗碰撞、防篡改
用途:校验数据的完整性、密码的加密存储、数字签名
MD5:
Message Digest Algorithm 5,消息摘要算法第5版
SHA系列:
Secure Hash Algorithm,安全散列算法
SHA-1、SHA-2(SHA-224、SHA-256、SHA-384、SHA-512)
彩虹表:
收集所有常用密码的数据库,穷举反向查询MD5、SHA-1值等对应的原文
2005年8月,王小云等人破解美国MD5、SHA-1,在SHA-256上改进实现算法国密:SM3
混合摘要算法:
MD5(SHA系列)、HMAC(MD5)、HMAC(SHA系列)
MD5混合加密规则:先计算SHA值,再全部转为大写,最后计算MD5值
HMAC混合加密规则:先计算MD5/SHA值,再计算HMAC值
消息认证码(HMAC)
全称:Hash Message Authentication Code, 散列/哈希消息认证码
1996-1997年,散列消息认证码诞生(带密钥的Hash函数,不属于对称密码)
通信双方使用一种验证机制,保证消息数据的完整性
与消息摘要最大的不同,就是有 ```签名密钥```,常用于```身份认证 和 密码校验```
身份验证过程里有两个重要概念“挑战/响应”
消息认证码,是基于消息
和密钥
生成的消息摘要
,可以与任何迭代散列函数
捆绑使用,如:HMAC(MD5)、HMAC(SHA系列)
总结
1.摘要算法,拥有防篡改性,但无法认证身份,不能防止第三方对摘要值进行冒充
2.非对称做数字证书,不善于数据的频繁加解密和验签
3.CA(Certificate Authority)数字证书认证中心,PKCS10数据包
4.CA数字证书、自签署证书(移动端不用,使用Token)
国密SM系列
- SM1 对称密码,软硬件实现性能与AES相当,算法不公开,仅以IP核的形式存在于芯片当中。应用于 电子政务、商务、警务领域
- SM2 椭圆曲线公钥密码算法,国密局2010年12月17日发布,应用于加解密和签名
- SM3 密码摘要算法,是在SHA-256上改进实现的
- SM4 对称密码,算法未知,多于无线局域网领域
- SM7 对称密码,应用于非接触式IC卡,身份识别类(门禁卡、参赛证),票务类,支付与通卡类
- SM9 标识密码算法,特点:使用方便,易于部署。
不需要申请数字证书
,应用于云技术方面(智能终端保护、云存储安全、通道加密等)