图解密码学数字签名

数字签名的概述

我们在传递信息的时候时常会考虑的一个问题就是,信息的来源是否正确,信息内容是否正确,这个问题在我之前的消息认证码已经有讨论过了,消息认证码虽然可以起到对信息来源的确认以及信息内容的确认,但是因为消息认证码需要双方共享一个没有第三方知道的,一摸一样的密钥,所以信息存在否认性,即A若向B发送一个信息,A可以否认该信息是自己发送的,A可以说是B创建的,因为这个密钥是A和B独享的,没有第三方知道。于是就有了数字签名。

数字签名的原理

数字签名主要是结合了非对称加密,因为非对称加密中存在公钥和私钥,如果A使用B的公钥向B发送信息,那么只有B的私钥才能解开,同样的A使用自己的私钥,B只有使用A的公钥才能解开,那么假设现在A使用自己的私钥向B发送信息,那么B使用A的公钥进行解密,如果成功,那么就说明信息的来源是A,但是如果仅仅使用RSA做信息的加密和解密仅仅能保证数据的加密传输,同时消除了信息的否认性,但是不能保证数据的正确性,所以我们在进行数据传输的时候,不仅要传送密文还要传送数字签名。我们将明文信息进行单向散列函数的计算,然后使用私钥加密发送出去,那么当接收者接收到这个数字签名后,使用公钥将散列值解密出来,我们称该散列值为A,然后再将接收到的密文解密成明文,然后将明文进行单向散列值的计算,我们称该计算结果为B,最后将A和B进行比对。

用于数字签名的公私钥算法

RSA

EIgamal

DSA:只能用字啊数字签名上面

ECDSA:结合椭圆曲线的数字签名算法,其具备诸多优点,我们可以使用该算法进行数字签名的生成,速度较RSA也有些优势,但是因为明文经过散列函数的计算之后,数字签名的长度已经很少了,所以数字签名的计算时间以及加解密时间可以说不用特别在意。

数字签名的问题

数字签名的主要问题就是公钥的分配问题,我们要怎么保证我们获得的公钥的来源是正确的,如果中间人冒充目标对象将自己的公钥进行散布,那么我们从一开始获得到的公钥就是错误的,那么即便我们使用多么高强度的加密算法,使用多么厉害的数字签名机制,信息都已经全部泄露出去了,所以数字签名虽然不错,但是整个信息传递的体制还不够完善,还需要数字证书,PKI等基础设施的帮助。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

打赏作者

Mllllk

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

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

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

打赏作者

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

抵扣说明:

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

余额充值