数字签名是个啥
目的:证明你收到的是我发的,且没有被篡改过
情景1:
我给你写信,让你给我打100块钱,账号:123456
他拦截了我的信,把账号改成:654321
Duang~~~钱没了
解决方案1:
我有两把钥匙priKey和pubKey,priKey加密的信只能用pubKey解密
我把pubKey发给你
我把我的信Hash一下,把Hash的结果用priKey加密,得到的就是数字签名
我把数字签名加到信里一起发给你
你用我的pubKey解密数字签名
你把收到的信Hash一下,和解密后的数字签名做对照
如果一样,是我发的,且没有被篡改;否则,就不是
情景2:
我发给你的pubKey被他拦截了
他把他的pubKey发给你
他把他篡改的信Hash一下,把Hash的结果用他的priKey加密,得到的就是数字签名
他把数字签名加到信里一起发给你
你用他的pubKey解密数字签名
你把收到的信Hash一下,和解密后的数字签名做对照
是一样
Duang~~~钱又没了
解决方案2:
我去申请一个数字证书,证书用知名机构的priKey加密,里有我的pubKey
我把我的信Hash一下,把Hash的结果用priKey加密,得到的就是数字签名
我把数字签名和数字证书加到信里一起发给你
你用知名机构的pubKey解密,得到我的pubKey
你用我的pubKey解密数字签名
你把收到的信Hash一下,和解密后的数字签名做对照
如果一样,是我发的,且没有被篡改;否则,就不是
情景3:
他篡改了知名机构的pubKey
…
no!!!
知名机构的pubKey内置在浏览器里,他改不了:)