加签验签的实际意义是什么?真的能保证安全传输么?
加签是为了防止传输内容被篡改,那么想改内容第一步肯定是解密拿到报文明文后进行修改。以下是某帖子写的不加签的风险:
中间人Actor截取了C的公钥,他把自己的公钥发给了A公司,A误以为这就是C公司的公钥。A在发起转账时,用Actor的公钥,对请求报文加密,加密报文到在传输过程,Actor又截取了,这时候,他用自己的私钥解密,然后修改了报文(给自己转一个亿),再用C的公钥加密,发给C公司,C公司收到报文后,继续用自己的私钥解密。最后是不是A公司的转账账户损失了一个亿呢~
以及加签是如何解决的:
假设Actor截取到A的公钥后,随后也截取了到A发往C的报文。他截取到报文后,第一件想做的事肯定是修改报文内容。但是如果单单修改原始报文是不可以的,因为发过去C公司肯定验签不过啦。但是呢,数字签名似乎解不开,因为消息摘要算法(hash算法)无法逆向解开的,只起验证的作用呢....
如果将签名内容直接换成修改后的报文生成的签名呢?常用的生成签名的hash算法只有那么几种,不考虑极端情况是不是可以试出来生成签名的算法呢?
另外这个问题更好的解决办法似乎是用两套公钥和私钥,公钥发给对方,私钥自己留着,就不存在传输被截取的风险了吧,如果不能解密,就更不能修改,那么加签验签是不是就很鸡肋了?
百度出来的东西大部分都是一个原创一堆copy,只能来论坛求助了,有看到的大牛,给解答下,谢谢~