数字签名和公开密钥体系

数字签名

数字签名的作用

在很多场合我们都需要在文件上签字,为什么不直接用电脑打呢, 这就是为了日后确认文件确实是你自己的签名,每个人的笔迹都不一样。
数字签名也是一样的作用:
保证B收到的是A发来的信息确实是A发的,而不是C冒充 A发的。

数字签名为何能保证信息来源确定呢

  1. 这就是非对称加密中的私钥和公钥的特性: 私钥加密只能公钥解密,公钥加密只能私钥解密。
  2. 其中 私钥加密的数据,只能由对应的公钥解密 正好可以做数字签名
  3. 签名及验证过程:
  1. 私钥将待传送数据计算sha256 hash摘要, 然后用私钥加密摘要得到数字签名, base64之后附带加密数据一起发送过去。
  2. 接收方 用公钥验证这个数字签名: 公钥解密数字签名(得到私钥加密的数据sha256 hash值),如果解密失败,则对方身份不正确
  3. 然后用解密数据部分,解密之后也计算一次sha256,如果hash值不一样,则表示文件被篡改, 如果文本被修改过。

公开密钥算法(非对称加密)

RSA算法既可以加解密,也可以做数字签名

非对称加解密只有对称加密速度的1/1000, 所以非对称只进行 加密密钥的交换 ,也就是把 对称加密密钥 通过私钥加密发给接对方,对方通过公钥解密得到对称密钥。数据真正是使用对称密钥加解密,私钥公钥加解密只要保证对称加密正确就ok了。

基于大整数因子分解问题, 数学原理简单 ,单位安全强度小, 容易实现。

DSA(Digital Signature Algorithm 数字签名算法)

DSA是基于整数有限域离散对数难题。只能做数字签名,不能用来加解密,据说有扩展

ECC算法

基于ECC 椭圆曲线算法和DSA的模拟结合。

基于椭圆曲线离散对数问题, 数学原理复杂 ,单位安全强度大, 不容易实现, 美国国家标准与技术局(NIST)已经公布了一列推荐的椭圆曲线用来保护5个不同的对称密钥大小(80, 112, 128, 192, 256), 发展势头猛,NSA就是采用ECC算法,来保护敏感数据。有望取代rsa。

市场份额RSA占据大头,ECC有望取代RSA

ECDSA 椭圆曲线数字签名算法

是 ECC 和DSA模拟 主要做数字签名流程类似DSA, 签名算法使用的是ECC。

ssl 中如何使用非对称密钥

非对称密钥因为加解密速度慢,所以只负责回话密钥的加解密,实际数据的加解密使用的是 协商出来的回话密钥。

密钥协商

RSA 客户端请求服务端, 服务端先发送自己的public key
客户端随机算法生成密钥s,发送到服务端,服务端私钥解密, 就确定了S为密钥。

DHE 基于DH改进的, E表示临时。

  1. 客户端随机值Xa,服务端随机值Xb;
  2. 然后客户端计算Pa = q^Xa mod p,Pa发送给服务端
  3. 服务端计算Pb = q^Xb mod p, Pb 发给客户端
  4. 然后客户端计算密钥Sa = Pb ^Xa mod p
  5. 服务端计算密钥Sb = Pa^Xb mod p
  6. 算法保证Sa=Sb = q^(Xa * Xb) mod p, 完成了密钥交换

ECDHE 使用ECC算法改进的DHE算法。

  • 2
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
数字签名是一种用于验证和确保数字数据完整性、认证身份和防止篡改的技术。它基于公钥密码学的原理。数字签名使用私钥对数据进行加密生成签名,然后使用对应的公钥进行验证签名的有效性。 数字签名的过程包括以下步骤: 1. 生成密钥对:首先,需要生成一对密钥,包括一个私钥和一个公钥。私钥由签名者保留,公钥可以公开发布。 2. 数据签名:签名者使用私钥对要签名的数据进行加密生成签名。这个签名是唯一的,任何对数据进行篡改都会导致签名验证失败。 3. 签名验证:接收者使用签名者的公钥对接收到的数据和签名进行解密和验证。如果解密后的签名与解密后的数据匹配,说明数据完整且未被篡改。 数字证书是用于证明公钥的真实性和拥有者身份的电子文档。数字证书由权威机构(如数字证书颁发机构)颁发,其中包含公钥、证书持有者信息和颁发机构的数字签名。 数字证书的作用是确保公钥的合法性和信任,以及提供验证身份的方式。它可以用于安全通信、身份认证、数据完整性保护等多个领域。 在使用数字证书进行数字签名时,签名者的公钥会包含在数字证书中,接收者可以使用数字证书中的公钥对签名进行验证。数字证书的数字签名可以保证证书的真实性和可靠性。 总结来说,数字签名是一种通过加密和解密技术,用于验证数据完整性和身份认证的方法。而数字证书则是一种包含公钥、身份信息和数字签名的电子文档,用于证明公钥的真实性和拥有者身份。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值