Java 密码学相关知识

密码的发展

密码的起源:

密码的起源非常早,早期的符号密码像宗教符号、岩壁画,至今无人破解的”费托斯圆盘“和无人读懂的”伏尼契手稿“

古代隐写术:

国内的:封蜡技术、隐形墨水、吞服信条...
国外的:卡登格子隐藏法(意大利数学家卡登,两张带孔的卡片+文字混淆)...

生活中的密码:

密码锁、指纹识别、人脸识别、门禁卡...
哑语、盲文、交通图标、汉字...

古典密码

滚筒、凯撒、培根、维吉尼亚、银票

密码学的基石:
  置换:对明文的部分或全部内容顺序进行位置交换
  替换:对明文的部分或全部内容进行规则型字符代替交换
滚筒密码
滚筒密码使用置换方法

两根相同粗细的多边菱形木棍分别在加密方和解密方,
加密方使用纸条缠绕木棍,横向写入内容,只有相同直径的木棍能还原内容
凯撒密码
单表替换(用一张密码表里的内容,去替换需要加密的内容)

采用错位方法:用第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 标识密码算法,特点:使用方便,易于部署。不需要申请数字证书,应用于云技术方面(智能终端保护、云存储安全、通道加密等)
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

柯基爱蹦跶

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值