DOT 持幣使用者必看:Controller 和 Stash 賬戶的作用

買賣虛擬貨幣
公鑰和私鑰是大多數加密系統很重要的東西,也是使像 Polkadot 這樣的區塊鏈得以存在的重要組成部分。賬戶金鑰帳戶金鑰是用來控制資金的金鑰。它們可以是:使用 Schnorr 簽名的普通 ed25519 加密演算法實現使用 Schnorr 簽名的 Schnorrkel / Ristretto sr25519 變體的加密演算法對於簡單簽名,ed25519 和 sr25519 在安全性上沒有區別。
我們預計在可預見的未來,ed25519 將得到商用 HSMs 更好的支援。同時,sr25519 的加密演算法使實現更復雜的協議更安全。特別是,sr25519 自帶了許多協議的安全版本,如比特幣和以太坊生態系統中常見的 HDKD 協議。"Controller" 和 "Stash" 金鑰當我們談論 “controller” 和 “stash” 金鑰時,我們通常在執行驗證人或提名 DOT 的語境中討論它們,但它們是所有使用者都需要知道的有用概念。這兩個金鑰都是帳戶金鑰的型別。它們的區別在於它們的使用場景,而不是密碼差異。上面部分中提到的所有資訊都適用於這些金鑰。建立新的 controller 或者 stash 金鑰時,帳戶金鑰支援的所有加密演算法都是可以選擇的。controller 金鑰是一個半線上的金鑰,將由使用者直接控制,用於提交手動 extrinsics 外部檔案。對於驗證人或提名人,這意味著 controller 金鑰將用於開始或停止驗證或提名。Controller 的金鑰應該有一些 DOT 用來支付費用,但它們不應該用來儲存鉅額金額或用來做長期的代幣儲蓄。因為他們會相對頻繁地接觸網際網路,所以應該小心對待,偶爾可以更換一個新的賬戶。在大多數情況下,stash 金鑰賬戶是一個冷錢包,存在於一個安全的、由多層硬體保護的一張紙上。它應該很少(如果有的話)暴露在網際網路上或用於提交  extrinsics 外部資訊。這把鑰匙是用來存放大量資金的。它可以被認為是銀行的儲蓄賬戶,理想情況下只有在緊急情況下才可以使用。或者,一個更貼切的比喻是把它想象成埋藏的寶藏,藏在某個隨機的島嶼上,只有最初藏它的海盜知道。
由於 stash 賬戶處於離線狀態,因此必須將其資金繫結到特定的 controller 賬戶。對於非支出行為,controller 賬戶有 stash 賬戶資金的支援。例如,在提名、staking 或投票中,controller 可以用 stash 的 weight 來表示其偏好。它將永遠無法實際轉移或領取 stash 賬戶中的資金。但是,如果有人獲取了你的 controller 金鑰,他們可能會將其用於進行存在被 slash 的行為,因此你仍然應該保護它並定期更改。Session 金鑰Session keys 是驗證人必須保持線上才能執行網路操作的熱金鑰(hot keys)。Session 金鑰通常在客戶端中生成,雖然他們不一定要生成。它們不是用來控制資金的,只用於有目的的用途。它們可以定期更改,你的 controller 賬戶只需要透過簽署一個 session 公鑰來建立證書,並透過一個外部 extrinsic 廣播該證書就好了。Polkadot 有四種 session keys:GRANDPA 機制:ed25519BABE 機制:sr25519
我線上:sr25519平行鏈:sr25519BABE 需要適合在可驗證隨機函式中使用的金鑰以及數字簽名。Sr25519 金鑰具有這兩種功能,因此用於 BABE 機制。在將來,我們計劃為 GRANDPA 機制使用 BLS 金鑰,因為它允許更有效的簽名聚合。常見問題解答為什麼選擇 ed25519 而不是 secp25K1 ?
最初為 Polkadot 和 Substrate 鏈實現的金鑰推導密碼是 ed25519,這是在 Edward's Curve 25519 (由於曲線方程的引數而得名) 上實現的 Schnorr 簽名演算法。大多數加密貨幣,包括比特幣和以太坊,目前在 secp256k1 曲線上使用 ECDSA 簽名。這種曲線被認為比 NIST 曲線更安全,後者可能有國家安全域性的後門。Curve25519 被認為可能比這個更安全,並且可以更容易地實現 Schnorr 簽名。最近的專利到期使它成為波卡的首選。選擇使用 Schnorr 簽名而不是使用 ECDSA 並不那麼簡單。正如 Jeff Burdges(一位 Web3 研究員)在論壇上發表的關於以下話題的文章:https://forum.web3.foundation/t/account-signatures-and-keys-in-polkadot/70/2對於帳戶金鑰,我們選擇 Schnorr 簽名而不是 ECDSA 簽名有一個犧牲:兩個簽名都需要 64 個位元組,但是隻有 ECDSA 簽名傳遞它們的公鑰。有一些過時的 Schnorr 變體支援從簽名中恢復公鑰,但它們破壞了重要的功能,如分層確定性金鑰派生。因此,Schnorr 簽名通常需要額外的 32 位元組作為公鑰。但最終,使用 Schnorr 簽名的好處大於權衡,未來的最佳化可能會解決上面引用的低效問題。sr25519 演算法是什麼?它是從哪裡來的?
一些背景:扭曲的 Edward's Curve25519 上的 Schnorr 簽名被認為是安全的,但是 Ed25519 並不是完全沒有缺陷的。最值得注意的是,Monero 和所有其他加密貨幣都容易受到雙重支出的攻擊,這可能會導致未被發現的無限通脹。這些漏洞是由於 Ed25519 中的一個特性造成的,它被稱為 8 的輔助因子。曲線的輔因子是一個深奧的細節,它可能會對更復雜協議的安全實現產生可怕的後果。很方便,Mike Hamburg 的 Decaf 論文(https://www.shiftleft.org/papers/decaf/index.xhtml)為解決這個潛在的缺陷提供了一條可能的途徑。Decaf 基本上是一種利用扭曲的 Edward 曲線輔助因子並對其進行數學改變的方法,對效能的影響很小且增加安全性。 Ristretto 小組的 Decaf 論文在 Rust 中得到了擴充套件和實現,包括輔助因子 8  曲線,如Curve25519,這使得 Edward 曲線上的 Schnorr 簽名更加安全。Web3 基金會已經實現了一個 Schnorr 簽名庫,在 Schnorrkel 儲存庫中使用了更安全的 Ristretto 壓縮曲線 25519。Schnorrkel 在曲線壓縮的基礎上實現了相關的協議,如 HDKD、MuSig 和可驗證隨機函式(VRF)。它還包括各種小的改進,例如雜湊方案選通,理論上可以處理大量的資料,只需跨越 Wasm 邊界一次呼叫。在 Polkadot 中使用的 Schnorr 簽名的實現,透過對 Curve25519 的 Ristretto 壓縮實現 Schnorrkel 協議,稱為 sr25519。
波卡中是否使用 BLS 簽名?還沒有,但他們會的。BLS 簽名允許更有效的簽名聚合。因為 GRANDPA 驗證人通常簽署同一件事(例如,一個塊),所以聚合它們是有意義的,這也可以最佳化其他協議。如 BLS 庫自述中所述,Boneh-Lynn-Shacham(BLS)簽名具有簽名速度慢、驗證速度慢、需要緩慢且不太安全的配對友好曲線,並且趨向於危險的延展性。然而,BLS 允許一系列不同的簽名聚合選項,遠遠超過任何其他已知的簽名方案,這使得 BLS 成為共識演算法投票和閾值簽名的首選方案。儘管 Schnorr 簽名允許簽名聚合,但 BLS 簽名在某些樣式中更有效。因此,它將是 Polkadot 網路上的驗證人將使用的會話金鑰之一,並且對 GRANDPA 最終性小工具至關重要。資源
BIP32-Ed25519 上的金鑰發現攻擊:詳細說明 BIP32-Ed25519 潛在攻擊的一篇論壇帖子。轉變為 sr25519 變體的動機。https://forum.web3.foundation/t/key-recovery-attack-on-bip32-ed25519/44Polkadot 中的賬戶簽名和金鑰:Web3 研究員 Jeff Burdges 在論壇上的原始帖子。https://forum.web3.foundation/t/account-signatures-and-keys-in-polkadot/70Schnorr 簽名可以抵抗量子計算嗎?https://bitcoin.stackexchange.com/questions/57965/are-schnorr-signatures-quantum-computer-resistant/57977#57977

免責聲明:

  1. 本文版權歸原作者所有,僅代表作者本人觀點,不代表鏈報觀點或立場。
  2. 如發現文章、圖片等侵權行爲,侵權責任將由作者本人承擔。
  3. 鏈報僅提供相關項目信息,不構成任何投資建議

推荐阅读

;