加签验签的实际意义是什么?真的能保证安全传输么?

加签是为了防止传输内容被篡改,那么想改内容第一步肯定是解密拿到报文明文后进行修改。
以下是某帖子写的不加签的风险:

中间人Actor截取了C的公钥,他把自己的公钥发给了A公司,A误以为这就是C公司的公钥。A在发起转账时,用Actor的公钥,对请求报文加密,加密报文到在传输过程,Actor又截取了,这时候,他用自己的私钥解密,然后修改了报文(给自己转一个亿),再用C的公钥加密,发给C公司,C公司收到报文后,继续用自己的私钥解密。最后是不是A公司的转账账户损失了一个亿呢~

以及加签是如何解决的:

假设Actor截取到A的公钥后,随后也截取了到A发往C的报文。他截取到报文后,第一件想做的事肯定是修改报文内容。但是如果单单修改原始报文是不可以的,因为发过去C公司肯定验签不过啦。但是呢,数字签名似乎解不开,因为消息摘要算法(hash算法)无法逆向解开的,只起验证的作用呢….

如果将签名内容直接换成修改后的报文生成的签名呢?常用的生成签名的hash算法只有那么几种,不考虑极端情况是不是可以试出来生成签名的算法呢?
另外这个问题更好的解决办法似乎是用两套公钥和私钥,公钥发给对方,私钥自己留着,就不存在传输被截取的风险了吧,如果不能解密,就更不能修改,那么加签验签是不是就很鸡肋了?

百度出来的东西大部分都是一个原创一堆copy,只能来论坛求助了,有看到的大牛,给解答下,谢谢~

最佳答案

再来评论一下哈

我觉得你的困惑可能还是没有透彻理解这个过程,我来画个图说明下:

file

也就是说,签名是通过私钥进行加密的,无法伪造!

希望可以帮助到你哦~

2年前 评论
XIAO111 2年前
讨论数量: 6

留下了没有技术的眼泪 :sob:

2年前 评论

我自己搜索了一下,贴上链接地址:

blog.csdn.net/woniu211111/article/...

关于加签验签,更多的意义在于证明身份,而公钥私钥的作用是用来加密与解密。

至于你提出的:

常用的生成签名的 hash 算法只有那么几种,不考虑极端情况是不是可以试出来生成签名的算法呢?

hash 算法无法被逆向破解~

2年前 评论

感谢回复! 按照举例最后说的情况来说,已经能后拿到传输的报文内容,为什么要破解原来的摘要呢,用常用的hash算法,比如md5、sha1,重新生成改过的报文,发给C。我说的试,是这个意思。

2年前 评论
jrh 2年前
jrh 2年前

再来评论一下哈

我觉得你的困惑可能还是没有透彻理解这个过程,我来画个图说明下:

file

也就是说,签名是通过私钥进行加密的,无法伪造!

希望可以帮助到你哦~

2年前 评论
XIAO111 2年前

感谢!这句话解决了我的困惑~~
也就是说,签名是通过私钥进行加密的,无法伪造!

2年前 评论

中间人 Actor 截取了 C 的公钥-------这一步是怎么做到的?我调接口的时候把公钥写到参数里

2年前 评论

讨论应以学习和精进为目的。请勿发布不友善或者负能量的内容,与人为善,比聪明更重要!