MetaMask 是一個非常出名且最多人使用的 EVM (以太坊虛擬機器) 加密數字錢包,相信任何熟悉加密數字領域的人或多或少都有使用過 MetaMask 錢包。 然而,隨著越來越多人進入加密數字領域,因此而衍生的數字騙案亦逐漸增多,而因為不熟悉區塊鏈的運作模式,而導致的數字資產被盜的個案,則更是層出不窮。
曾經有朋友就發生過這樣的情況,自己明明沒有做任何交易,但發現自己錢包內的數字資產被無故轉移,他確定助記詞並沒有洩露給他人,但自己曾多次使用該錢包登入不同網站,參與不同的 dApp 互動等,因此,非常有可能問題就出在簽名上。
這次我們就以 MetaMask 為例,來說說關於區塊鏈的三個簽名問題。
所謂簽名,實際上就是一個身份認證的過程。就如同你去銀行提款,銀行除了接收你的操作指示以外,還必不可少要進行身份認證,確保你是真正的賬戶擁有者。銀行的身份認證可以是用密碼,簽名,印章等方式進行。
區塊鏈上的交易亦是如此, 當你進行一個交易時,除了要指示區塊鏈「要做什麼」,還需要進行身份認證,確保你是真正的賬戶擁有者,才可進行相應操作。 這個身份認證,就是我們所說的「簽名」。
簽名的具體做法,是使用你保存在區塊鏈錢包(如 MetaMask)中的私鑰(Private Key)透過加密演算法,對你發出的指示做數字簽署,而這個簽署,是可以透過與你的地址公鑰(Public Key)比對從而認證確實是你發出的相應指示,而完成認證過程。另外,「簽名」這個動作,可以是不需要上鏈的。在沒有網路的情況下亦可進行。
因此,只要擁有一個有效的交易簽名,配合對應的交易指令(例如轉賬),即可正常完成一次交易。
說到這裡,相信聰明的讀者都能夠看出其中的玄機,在整個過程中交易簽名是重中之重。換句話說,騙徒可以偽造一個交易,騙取你的交易簽名,然後騙徒便可以憑藉這個簽名,執行該偽造交易,從而導致你在莫名其妙的情況下,損失資產。而交易簽名洩露,也就是許多數字資產被盜的元兇之一。
Frank 為三種簽名都做了一個示例,有興趣的讀者可以去簽名示例看看原始碼,親自嘗試一下。
綜上所述,絕對不可以認為簽名不上鏈,沒有風險。相反,區塊鏈的簽名其實可以認為是無所不能,特別是使用 ethsign 的方式彈出的簽名,無論是開發團隊還是個人都要加倍小心。