如何防止中间人攻击(MITM Attack)
Topic source你理解错了中间人攻击。
中间人攻击是篡改消息,比如消息是Bob发给Alice的“给小明转100元”,签名就是
sign(bob_priv_key, “给小明转100元”)
中间人会篡改消息为“给小明转10000元”,然后自己签名发给Alice,Alice收到了错误的消息然后给小明转了10000,注意Alice被骗是因为她误以为签名是bob但实际上签名是中间人
比特币的签名人如果是A,签名就是:
sign(a_priv_key, tx: from A to X, 0.1btc)
任何人都可以改消息,问题是改消息就得自己签名,自己签名和tx里的from A对不上
矿工打包交易,只看from是谁就验证谁的签名,from是A签名是B那直接丢弃
我这里补充一下 “From A 同样是通过网络传输,没有被修改的可能吗?”,我觉得是是有可能的,但是没有必要。
sign(bob_priv_key, “给小明转100元”)
sign(a_priv_key, tx: from A to X, 0.1btc)
(1)From A修改成From B,代表你需要要有B的私钥;
sign(b_priv_key, tx: from A to 黑客, 0.1btc)
(2)如果to X需要修改成to 中间人的话,那么也需要有A的私钥哈。
sign(a_priv_key, tx: from A to 黑客, 0.1btc)
(3)from 和 to都修改的话,操作的自己账户给别人转钱或者给自己转钱?
sign(黑客_priv_key, tx: from A to 黑客账户 or 其他账户, 0.1btc)
所以说是很没必要吧?
私钥泄漏了才有解,否则是无解。
- 1
猎杀属性
由于存在消息、签名和公钥完全被中间人替换的问题(先不讨论在BTC中这样做有没有意义),中心化网站通过CA(Certificate Authority)来验证公钥的正确性,在区块链世界中,特别是比特币中,由于匿名的存在,哪怕消息、签名和公钥甚至地址被中间人篡改都不容易察觉,请问比特币中有任何机制避免这一安全问题吗