MetaMask 是一个非常出名且最多人使用的 EVM (以太坊虚拟机器) 加密数字钱包,相信任何熟悉加密数字领域的人或多或少都有使用过 MetaMask 钱包。 然而,随着越来越多人进入加密数字领域,因此而衍生的数字骗案亦逐渐增多,而因为不熟悉区块链的运作模式,而导致的数字资产被盗的个案,则更是层出不穷。
曾经有朋友就发生过这样的情况,自己明明没有做任何交易,但发现自己钱包内的数字资产被无故转移,他确定助记词并没有洩露给他人,但自己曾多次使用该钱包登入不同网站,参与不同的 dApp 互动等,因此,非常有可能问题就出在签名上。
这次我们就以 MetaMask 为例,来说说关于区块链的三个签名问题。
所谓签名,实际上就是一个身份认证的过程。就如同你去银行提款,银行除了接收你的操作指示以外,还必不可少要进行身份认证,确保你是真正的账户拥有者。银行的身份认证可以是用密码,签名,印章等方式进行。
区块链上的交易亦是如此, 当你进行一个交易时,除了要指示区块链「要做什麽」,还需要进行身份认证,确保你是真正的账户拥有者,才可进行相应操作。 这个身份认证,就是我们所说的「签名」。
签名的具体做法,是使用你保存在区块链钱包(如 MetaMask)中的私钥(Private Key)透过加密演算法,对你发出的指示做数字签署,而这个签署,是可以透过与你的地址公钥(Public Key)比对从而认证确实是你发出的相应指示,而完成认证过程。另外,「签名」这个动作,可以是不需要上链的。在没有网路的情况下亦可进行。
因此,只要拥有一个有效的交易签名,配合对应的交易指令(例如转账),即可正常完成一次交易。
说到这裡,相信聪明的读者都能够看出其中的玄机,在整个过程中交易签名是重中之重。换句话说,骗徒可以伪造一个交易,骗取你的交易签名,然后骗徒便可以凭藉这个签名,执行该伪造交易,从而导致你在莫名其妙的情况下,损失资产。而交易签名洩露,也就是许多数字资产被盗的元凶之一。
Frank 为三种签名都做了一个示例,有兴趣的读者可以去签名示例看看原始码,亲自尝试一下。
综上所述,绝对不可以认为签名不上链,没有风险。相反,区块链的签名其实可以认为是无所不能,特别是使用 ethsign 的方式弹出的签名,无论是开发团队还是个人都要加倍小心。