
隨著2020年 DeFi 項目的蓬勃發展,以太坊已經成為區塊鏈中最活躍的公鏈之一。當提及到 DeFi 的安全性,大多數人都是從智能合約的角度來討論,卻很少有人從另一個潛在的角度深入考慮DeFi 的安全性——
我們的交易簽名過程是否安全?
事情發生在2020年12月,Nexus Mutual 的創始人 Hugh Karp 遭到了有針對性的遠程攻擊。據報道,攻擊者獲得了對 Hugh 計算機的遠程訪問權限然後針對他的 MetaMask 軟件錢包進行一些修改,從而篡改他某一筆交易,並將資金轉移到了攻擊者自己的地址。最終導致了價值800萬美元的數字貨幣被盜。
從 Hugh 的博客中還可以推斷,攻擊者不僅成功的攻擊了 Hugh,還有證據表明同樣成功的攻擊了以太坊社區的其他 DeFi 高級用戶。
Hugh 當時使用了硬件錢包,很明顯,僅僅知道如何使用硬件錢包並不是可以完全阻止攻擊的靈丹妙藥。
硬件錢包最基礎的安全假設之一,就是原則上不應該相信配套的軟件錢包,並且用戶應該有能力手動檢查硬件錢包上的交易,來確保沒有任何東西被暗地裏更換。
如果不能確保對交易進行簽署是安全的,我們就稱它為盲簽。
如果我們經過仔細研究就會發現,盲簽意味著你不得不相信你的軟件錢包在簽名時提供的消息和命令都是真實的,無惡意的。那麼我們現在反過來思考,如果我們被迫相信軟件提供的所有東西都是沒有問題的,那麼我們選擇使用硬件錢包去作為簽名設備還有什麼意義呢?
實際上,Hugh 也承認在硬件錢包上去檢查智能合約交互這件事情,說起來容易做起來難。
在 Keystone 硬件錢包上,我們已經提出了一個解決方案,它可能無法100%解決問題,但它絕對是目前市場上最好的解決方案。
在這裏需要再次強調一下,並沒有真正意義上的100%安全,我們所能做的就是盡可能的減少受到攻擊能可能性。
下面這張圖片是 Keystone 的屏幕截圖,顯示了在 Uniswap 上進行交易互換的交易細節。您可以清楚的感受大屏幕帶來的視覺衝擊。它使更多的信息具有可讀性,這樣用戶就可以更加方便的去檢查未簽名的數據。

第一件事情我們需要做的是確認您調用了正確的智能合約。
如果攻擊者創建了一個和 Uniswap 一樣的釣魚網站,那麼它就可以複製 Uniswap 當前的 UI,並且調用惡意的智能合約,將用戶的資金轉移到黑客的地址上。
所以我們會提前加載一些著名的智能合約地址,比如 Uniswap 的智能合約地址,我們將 Uniswap 進行標記,這樣用戶就更容易識別它。如果地址並未進行提前加載,則有可能此合約是新合約或者是惡意合約,我們同樣會用紅色的字樣突出顯示為未知地址來提醒用戶。

如果軟件錢包(例如:MetaMask)被入侵,就算用戶正在與原生 Dapp 進行交互,也仍然有可能被黑客成功攻擊。
如果用戶的軟件錢包被盜取資金,那麼有幾種方法可以實現(以 Uniswap 為例)。
第一個風險就暴漏在授權智能合約使用用戶的代幣時,惡意軟件錢包可以將原始的合約地址替換為黑客的地址,那麼它就可以直接訪問用戶的資金且不受限制。
為了防止這種情況發生,我們特別標註了您授權的智能合約地址,並在解析為未知地址時突出顯示來提示用戶。

第二種攻擊更加有趣味性。
再深入研究 Uniswap 的代碼庫後,我們發現了以下代碼可能存在風險:
function swapExactTokensForTokens(
uint amountIn,
uint amountOutMin,
address[] calldata path,
address to,
uint deadline
) external override ensure(deadline) returns (uint[] memory amounts) {
amounts = UniswapV2Library.getAmountsOut(factory, amountIn, path);
require(amounts[amounts.length - 1] >= amountOutMin, 'UniswapV2Router: INSUFFICIENT_OUTPUT_AMOUNT');
TransferHelper.safeTransferFrom(path[0], msg.sender, UniswapV2Library.pairFor(factory, path[0], path[1]), amounts[0]);
_swap(amounts, path, to);
}
函數定義中有一個地址參數叫做 “to”。通常它應該與用戶自己的 “From” 地址一致,以便交換的代幣可以轉到用戶的原始地址。但是 Uniswap 是允許更改這個參數的,以便用戶可以將代幣交換到另外一個地址(我們不認為這個是一個缺陷,而是 Uniswap 本來就這麼設計的)。 但是如果這種設計被黑客利用,它就可以通過攻破軟件錢包來將這個值修改為黑客自己的地址,然後用戶在交換代幣的過程中,將代幣交換到了黑客的地址上。
因此為了應對這種攻擊策略,我們會用 “From” 的地址驗證這個地址,若發現兩個地址不一致,則我們會將它清晰的標註到 Keystone 上(詳見下圖)。

從截圖中可以看出,我們同樣也標註了路徑,以便用戶驗證它是否與 Uniswap 的 UI 保持一致。
下面是另一款錢包在簽署 Uniswap 交易的實例(將0.1 ETH 交換為 DAI)。在下面的截圖中可以看到,整個簽署過程都沒有顯示 “to” 的地址。如果黑客通過攻破 MetaMask 錢包將你的收款地址改成黑客的地址並且發送了一筆交易,無論你多麼仔細檢查,也無法發現這筆交易存在問題。

目前 Keystone 硬件錢包已經可以和 MetaMask Extension(瀏覽器插件) 和 MetaMask Mobile(手機 APP 端) 實現交互。
以下是相關鏈接:
在 Keystone,我們認為用戶體驗在數字貨幣安全領域是及其重要的,因為往往人為因素才是導致數字貨幣資產丟失的最大原因。這也是 Keystone 最重要的設計原則之一。
對於所有的硬件錢包產品來說,不僅要保護好私鑰,同樣也要儘可能避免人為因素導致的失誤。
總結來講,如何保證數字貨幣資產安全絕對不是一件容易的事。
如果我們以智能合約驗證功能為例,硬件錢包廠商需要對 Dapp 的邏輯非常熟悉,並且還要找出潛在的威脅。如果 Dapp 項目方可以與硬件錢包團隊共同合作,一起解決掉這些潛在的安全層面的問題,那麼對於每個人來講都是有好處的。
保護用戶資產的安全是整個社區共同的責任,我們 Keystone 團隊歡迎任何形式的合作。

Keystone 如何防護供應鏈攻擊——官網真機驗證
當我們收到心心念念的硬件錢包,應該如何辨別真偽,以防供應鏈攻擊? 供應鏈攻擊是硬件錢包安全性的主要威脅之一。從下單到我們收到包裹的這段时间,不可控因素非常之多,供應鏈攻擊就是发生在物流環節中。 在此給到大家兩個建議,所有硬件錢包通用: 1、不要從非官方渠道購入硬件錢包,如..閑..魚..等; 2、收到硬件錢包後,先不要急於拆開,仔細檢查包裝是否有被拆過。 與其他競品一樣,Keystone 的物流包裹上有防拆貼紙,我們拿到錢包的第一步就是檢查防拆貼紙是否有被撕掉過的痕跡。 但是,防篡改包裝只是增加攻擊成本的一种方式,不足以完全防住供應鏈攻擊,因為防篡改包裝是可以被仿造的。官網真機驗證原理為了更好的防止供應鏈攻擊,我們在您初始化 Keystone 時,設備會提示用戶進行官網真機驗證。如果運輸過程中設備被篡改,將無法通過官網真機驗證。與比特幣签名算法相同, Keystone 的官網真機驗證也采用了非對稱加密算法,可以實現機密信息的交換和驗證。非對稱加密算法需要兩個密鑰:一個私鑰與一個公鑰(兩者是一一對應關系,我們稱之為“密鑰對”)。私鑰可用於簽名和解密公鑰加密的信息,公鑰可用於驗證私鑰...

如何驗證骰子生成的助記詞
初始化數字貨幣加密錢包,其中最重要的環節就是創建助記詞。那你有沒有思考過一個問題——助記詞從何而來?實際上他來源於一串隨機數,也就是所謂的熵。該隨機數通常是由軟件錢包中的 PRNG(偽隨機數生成器)或者硬件錢包的 TRNG (真隨機數生成器)生成。這個過程中,保持高度的隨機性是私鑰不會被暴力破解的關鍵。關於 PRNG (偽隨機數生成器)和 TRNG (真隨機數生成器)之間的區別,我們在這篇文章中做了詳細解釋。 但是, TRNG(真隨機數生成器)也有一些缺點。TRNG 是由安全芯片供應商創建的專有代碼執行,也就是說,用戶在生成真隨機數時,需要去信任這個供應商是沒有問題的。 對於一些加密货币的持有者來講,這種盲目的信任是不能接受的。所以這就是為什麼像 ColdCard 和 Keystone 這些品牌的硬件錢包可以允許用戶使用投擲骰子的方式生成自己的隨機數。您可以查看這篇教程了解如何用 Keystone 通過投擲骰子創建助記詞。 “Don’t trust, verify!”不僅僅是一句口號,而是我們應該努力堅持的標準,這也與 Keystone 團隊產生了強烈共鳴,我們會以盡可能高的產品...

Keystone 為什麼要增加分片助記詞功能
Keystone 硬件錢包已經成功實現了在 SatoshiLabs SLIP39 協議中提到的分片助記詞(Shamir Backup)功能,這篇文章將詳細介紹這個功能的優缺點,也給想使用這個功能的用户一些參考。助记词的风险模型在使用分片助記詞之前,我們先研究一下助记词的風險模型,以帮助您更好的决策是否要使用分片助记词这个功能。 威脅助記詞安全性的 3 種場景:記憶力衰退,如果您是靠記憶力保存助記詞(俗稱“腦錢包”);助記詞備份被偷或被搶;助記詞備份因重大事故或自然災害比如大火,洪水受損。還有一些其他的場景,例如,被狗吃掉,被咖啡污漬污染,甚至發生地震導致房子倒塌等也會導致助記詞備份受到損壞。對於第 1 種場景來講 ,我們強烈講義不要將“腦錢包”作為存儲助記詞的唯一方法,這種方法的不確定風險特別高。比如,創傷性腦損傷可能會導致失憶,衰老也會導致記憶力減退,阿爾茲海默氏症會導致無法記住事物。另外,隨著時間的流逝,許多存在腦海中的記憶片段也會自然而然地被遺忘。 對於第 2 種場景來講 ,您應該始終牢記助記詞被偷或被盜往往不是由一個局外人來完成,反而是親屬或者當時幫您存儲助記詞的這種身邊...
MetaMask 官方硬件钱包合作伙伴。Web3 安全首选!Telegram: https://t.me/KeystoneWalletCN Discord: https://keyst.one/DC

隨著2020年 DeFi 項目的蓬勃發展,以太坊已經成為區塊鏈中最活躍的公鏈之一。當提及到 DeFi 的安全性,大多數人都是從智能合約的角度來討論,卻很少有人從另一個潛在的角度深入考慮DeFi 的安全性——
我們的交易簽名過程是否安全?
事情發生在2020年12月,Nexus Mutual 的創始人 Hugh Karp 遭到了有針對性的遠程攻擊。據報道,攻擊者獲得了對 Hugh 計算機的遠程訪問權限然後針對他的 MetaMask 軟件錢包進行一些修改,從而篡改他某一筆交易,並將資金轉移到了攻擊者自己的地址。最終導致了價值800萬美元的數字貨幣被盜。
從 Hugh 的博客中還可以推斷,攻擊者不僅成功的攻擊了 Hugh,還有證據表明同樣成功的攻擊了以太坊社區的其他 DeFi 高級用戶。
Hugh 當時使用了硬件錢包,很明顯,僅僅知道如何使用硬件錢包並不是可以完全阻止攻擊的靈丹妙藥。
硬件錢包最基礎的安全假設之一,就是原則上不應該相信配套的軟件錢包,並且用戶應該有能力手動檢查硬件錢包上的交易,來確保沒有任何東西被暗地裏更換。
如果不能確保對交易進行簽署是安全的,我們就稱它為盲簽。
如果我們經過仔細研究就會發現,盲簽意味著你不得不相信你的軟件錢包在簽名時提供的消息和命令都是真實的,無惡意的。那麼我們現在反過來思考,如果我們被迫相信軟件提供的所有東西都是沒有問題的,那麼我們選擇使用硬件錢包去作為簽名設備還有什麼意義呢?
實際上,Hugh 也承認在硬件錢包上去檢查智能合約交互這件事情,說起來容易做起來難。
在 Keystone 硬件錢包上,我們已經提出了一個解決方案,它可能無法100%解決問題,但它絕對是目前市場上最好的解決方案。
在這裏需要再次強調一下,並沒有真正意義上的100%安全,我們所能做的就是盡可能的減少受到攻擊能可能性。
下面這張圖片是 Keystone 的屏幕截圖,顯示了在 Uniswap 上進行交易互換的交易細節。您可以清楚的感受大屏幕帶來的視覺衝擊。它使更多的信息具有可讀性,這樣用戶就可以更加方便的去檢查未簽名的數據。

第一件事情我們需要做的是確認您調用了正確的智能合約。
如果攻擊者創建了一個和 Uniswap 一樣的釣魚網站,那麼它就可以複製 Uniswap 當前的 UI,並且調用惡意的智能合約,將用戶的資金轉移到黑客的地址上。
所以我們會提前加載一些著名的智能合約地址,比如 Uniswap 的智能合約地址,我們將 Uniswap 進行標記,這樣用戶就更容易識別它。如果地址並未進行提前加載,則有可能此合約是新合約或者是惡意合約,我們同樣會用紅色的字樣突出顯示為未知地址來提醒用戶。

如果軟件錢包(例如:MetaMask)被入侵,就算用戶正在與原生 Dapp 進行交互,也仍然有可能被黑客成功攻擊。
如果用戶的軟件錢包被盜取資金,那麼有幾種方法可以實現(以 Uniswap 為例)。
第一個風險就暴漏在授權智能合約使用用戶的代幣時,惡意軟件錢包可以將原始的合約地址替換為黑客的地址,那麼它就可以直接訪問用戶的資金且不受限制。
為了防止這種情況發生,我們特別標註了您授權的智能合約地址,並在解析為未知地址時突出顯示來提示用戶。

第二種攻擊更加有趣味性。
再深入研究 Uniswap 的代碼庫後,我們發現了以下代碼可能存在風險:
function swapExactTokensForTokens(
uint amountIn,
uint amountOutMin,
address[] calldata path,
address to,
uint deadline
) external override ensure(deadline) returns (uint[] memory amounts) {
amounts = UniswapV2Library.getAmountsOut(factory, amountIn, path);
require(amounts[amounts.length - 1] >= amountOutMin, 'UniswapV2Router: INSUFFICIENT_OUTPUT_AMOUNT');
TransferHelper.safeTransferFrom(path[0], msg.sender, UniswapV2Library.pairFor(factory, path[0], path[1]), amounts[0]);
_swap(amounts, path, to);
}
函數定義中有一個地址參數叫做 “to”。通常它應該與用戶自己的 “From” 地址一致,以便交換的代幣可以轉到用戶的原始地址。但是 Uniswap 是允許更改這個參數的,以便用戶可以將代幣交換到另外一個地址(我們不認為這個是一個缺陷,而是 Uniswap 本來就這麼設計的)。 但是如果這種設計被黑客利用,它就可以通過攻破軟件錢包來將這個值修改為黑客自己的地址,然後用戶在交換代幣的過程中,將代幣交換到了黑客的地址上。
因此為了應對這種攻擊策略,我們會用 “From” 的地址驗證這個地址,若發現兩個地址不一致,則我們會將它清晰的標註到 Keystone 上(詳見下圖)。

從截圖中可以看出,我們同樣也標註了路徑,以便用戶驗證它是否與 Uniswap 的 UI 保持一致。
下面是另一款錢包在簽署 Uniswap 交易的實例(將0.1 ETH 交換為 DAI)。在下面的截圖中可以看到,整個簽署過程都沒有顯示 “to” 的地址。如果黑客通過攻破 MetaMask 錢包將你的收款地址改成黑客的地址並且發送了一筆交易,無論你多麼仔細檢查,也無法發現這筆交易存在問題。

目前 Keystone 硬件錢包已經可以和 MetaMask Extension(瀏覽器插件) 和 MetaMask Mobile(手機 APP 端) 實現交互。
以下是相關鏈接:
在 Keystone,我們認為用戶體驗在數字貨幣安全領域是及其重要的,因為往往人為因素才是導致數字貨幣資產丟失的最大原因。這也是 Keystone 最重要的設計原則之一。
對於所有的硬件錢包產品來說,不僅要保護好私鑰,同樣也要儘可能避免人為因素導致的失誤。
總結來講,如何保證數字貨幣資產安全絕對不是一件容易的事。
如果我們以智能合約驗證功能為例,硬件錢包廠商需要對 Dapp 的邏輯非常熟悉,並且還要找出潛在的威脅。如果 Dapp 項目方可以與硬件錢包團隊共同合作,一起解決掉這些潛在的安全層面的問題,那麼對於每個人來講都是有好處的。
保護用戶資產的安全是整個社區共同的責任,我們 Keystone 團隊歡迎任何形式的合作。

Keystone 如何防護供應鏈攻擊——官網真機驗證
當我們收到心心念念的硬件錢包,應該如何辨別真偽,以防供應鏈攻擊? 供應鏈攻擊是硬件錢包安全性的主要威脅之一。從下單到我們收到包裹的這段时间,不可控因素非常之多,供應鏈攻擊就是发生在物流環節中。 在此給到大家兩個建議,所有硬件錢包通用: 1、不要從非官方渠道購入硬件錢包,如..閑..魚..等; 2、收到硬件錢包後,先不要急於拆開,仔細檢查包裝是否有被拆過。 與其他競品一樣,Keystone 的物流包裹上有防拆貼紙,我們拿到錢包的第一步就是檢查防拆貼紙是否有被撕掉過的痕跡。 但是,防篡改包裝只是增加攻擊成本的一种方式,不足以完全防住供應鏈攻擊,因為防篡改包裝是可以被仿造的。官網真機驗證原理為了更好的防止供應鏈攻擊,我們在您初始化 Keystone 時,設備會提示用戶進行官網真機驗證。如果運輸過程中設備被篡改,將無法通過官網真機驗證。與比特幣签名算法相同, Keystone 的官網真機驗證也采用了非對稱加密算法,可以實現機密信息的交換和驗證。非對稱加密算法需要兩個密鑰:一個私鑰與一個公鑰(兩者是一一對應關系,我們稱之為“密鑰對”)。私鑰可用於簽名和解密公鑰加密的信息,公鑰可用於驗證私鑰...

如何驗證骰子生成的助記詞
初始化數字貨幣加密錢包,其中最重要的環節就是創建助記詞。那你有沒有思考過一個問題——助記詞從何而來?實際上他來源於一串隨機數,也就是所謂的熵。該隨機數通常是由軟件錢包中的 PRNG(偽隨機數生成器)或者硬件錢包的 TRNG (真隨機數生成器)生成。這個過程中,保持高度的隨機性是私鑰不會被暴力破解的關鍵。關於 PRNG (偽隨機數生成器)和 TRNG (真隨機數生成器)之間的區別,我們在這篇文章中做了詳細解釋。 但是, TRNG(真隨機數生成器)也有一些缺點。TRNG 是由安全芯片供應商創建的專有代碼執行,也就是說,用戶在生成真隨機數時,需要去信任這個供應商是沒有問題的。 對於一些加密货币的持有者來講,這種盲目的信任是不能接受的。所以這就是為什麼像 ColdCard 和 Keystone 這些品牌的硬件錢包可以允許用戶使用投擲骰子的方式生成自己的隨機數。您可以查看這篇教程了解如何用 Keystone 通過投擲骰子創建助記詞。 “Don’t trust, verify!”不僅僅是一句口號,而是我們應該努力堅持的標準,這也與 Keystone 團隊產生了強烈共鳴,我們會以盡可能高的產品...

Keystone 為什麼要增加分片助記詞功能
Keystone 硬件錢包已經成功實現了在 SatoshiLabs SLIP39 協議中提到的分片助記詞(Shamir Backup)功能,這篇文章將詳細介紹這個功能的優缺點,也給想使用這個功能的用户一些參考。助记词的风险模型在使用分片助記詞之前,我們先研究一下助记词的風險模型,以帮助您更好的决策是否要使用分片助记词这个功能。 威脅助記詞安全性的 3 種場景:記憶力衰退,如果您是靠記憶力保存助記詞(俗稱“腦錢包”);助記詞備份被偷或被搶;助記詞備份因重大事故或自然災害比如大火,洪水受損。還有一些其他的場景,例如,被狗吃掉,被咖啡污漬污染,甚至發生地震導致房子倒塌等也會導致助記詞備份受到損壞。對於第 1 種場景來講 ,我們強烈講義不要將“腦錢包”作為存儲助記詞的唯一方法,這種方法的不確定風險特別高。比如,創傷性腦損傷可能會導致失憶,衰老也會導致記憶力減退,阿爾茲海默氏症會導致無法記住事物。另外,隨著時間的流逝,許多存在腦海中的記憶片段也會自然而然地被遺忘。 對於第 2 種場景來講 ,您應該始終牢記助記詞被偷或被盜往往不是由一個局外人來完成,反而是親屬或者當時幫您存儲助記詞的這種身邊...
MetaMask 官方硬件钱包合作伙伴。Web3 安全首选!Telegram: https://t.me/KeystoneWalletCN Discord: https://keyst.one/DC

Subscribe to Keystone 硬件錢包

Subscribe to Keystone 硬件錢包
Share Dialog
Share Dialog
<100 subscribers
<100 subscribers
No activity yet