欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

當(dāng)前位置:主頁 > 區(qū)塊鏈 > 區(qū)塊鏈技術(shù) > 以太坊私鑰儲存(Keystore)文件

區(qū)塊鏈科普:什么是以太坊私鑰儲存(Keystore)文件?

2021-12-13 14:12:06 | 來源: | 作者:佚名
這篇文章主要介紹了區(qū)塊鏈科普:什么是以太坊私鑰儲存(Keystore)文件的相關(guān)資料,希望這篇關(guān)于什么是以太坊私鑰儲存(Keystore)文件的文章,能夠幫助到各位朋友對區(qū)塊鏈錢包的理解。

進(jìn)入keystore管理以太坊私鑰的障礙很大,主要是因?yàn)橐蕴豢蛻舳嗽谥苯拥拿钚谢驁D形界面下隱藏了大部分的密碼復(fù)雜性。

例如,用geth:

$ geth account new
Your new account is locked with a password. Please give a password. Do not forget this password.
Passphrase:
Repeat passphrase: 
Address: {008aeeda4d805471df9b2a5b0f38a0c3bcba786b}

$ geth account list
Account #0: {8a1c4d573cc29a96547816522cfe0b266e88abac} keystore:~/.ethereum/keystore/UTC--<created_date_time>--  008aeeda4d805471df9b2a5b0f38a0c3bcba786b

我只需要輸入3個單詞就能創(chuàng)建一個新賬戶。然后輸入兩遍密碼,就這么簡單!我的以太坊keystore文件就創(chuàng)建了。

你需要把那些非常珍貴的keystore文件備份、存儲在一個或多個隱秘的位置,這樣就只有你能獲取這些文件并取到資金。

從經(jīng)驗(yàn)來看,當(dāng)我沒有完全理解一個新概念的微妙之處,并且過分依賴抽象層和現(xiàn)有工具來讓我的生活更輕松時,我很有可能忘記一些事情,采取不必要的捷徑并且搞砸它。搞砸的時候,可能就是會以我辛苦掙來的以太幣被永久鎖定而告終(幸好它還沒有發(fā)生?。?/p>

幸運(yùn)的是,作為一個以太坊用戶,你能搞砸的方式并不多:

  1. 你丟失了你的keystore文件
  2. 你忘記了和文件關(guān)聯(lián)的密碼
  3. 或者以上兩者你都搞砸了。

在本文中,我們將為你介紹以太坊私鑰是如何從 keystore 文件中算出來的。我們將討論加密函數(shù)(對稱加密,密鑰生成函數(shù),SHA3 哈希算法),但我們會盡可能的保證簡明直接地來解釋上述問題。

什么是keystore文件?

以太坊的 keystore 文件(Linux 系統(tǒng)存儲在 ~/.ethereum/keystore 或者 Windows 系統(tǒng)存儲在 C:\Users<User>\Appdata/Roaming/Ethereum/keystore)是你獨(dú)有的、用于簽署交易的以太坊私鑰的加密文件。如果你丟失了這個文件,你就丟失了私鑰,意味著你失去了簽署交易的能力,意味著你的資金被永久的鎖定在了你的賬戶里。

當(dāng)然,你可以直接把你的以太坊私鑰存儲在一個加密文件里,但是這樣你的私鑰容易受到攻擊,攻擊者簡單的讀取你的文件、用你的私鑰簽署交易,把錢轉(zhuǎn)到他們的賬戶中。你的幣會在你意識到發(fā)生什么了之前的短時間內(nèi)丟失。

這就是以太坊 keystore 文件被創(chuàng)建的原因:它允許你以加密的方式存儲密鑰。這是安全性(一個攻擊者需要 keystore 文件和你的密碼才能盜取你的資金)和可用性(你只需要keystore文件和密碼就能用你的錢了)兩者之間完美的權(quán)衡。

為了讓你發(fā)送一些以太幣,大多數(shù)的以太坊客戶端會讓你輸入密碼(與創(chuàng)建賬戶時密碼相同)以解密你的以太坊私鑰。一旦解密,客戶端程序就得到私鑰簽署交易,允許你移動資金。

Keystore文件是什么樣子的?

如果你打開一個你的賬戶文件,它看起來像這樣(取自這里):

ount’s file, it would look like this (taken from here):

$ cat ~/.ethereum/keystore/UTC--<created_date_time>--  008aeeda4d805471df9b2a5b0f38a0c3bcba786b
{
    "crypto" : {
        "cipher" : "aes-128-ctr",
        "cipherparams" : {
            "iv" : "83dbcc02d8ccb40e466191a123791e0e"
        },
        "ciphertext" : "d172bf743a674da9cdad04534d56926ef8358534d458fffccd4e6ad2fbde479c",
        "kdf" : "scrypt",
        "kdfparams" : {
            "dklen" : 32,
            "n" : 262144,
            "r" : 1,
            "p" : 8,
            "salt" : "ab0c7876052600dd703518d6fc3fe8984592145b591fc8fb5c6d43190334ba19"
        },
        "mac" : "2103ac29920d71da29f15d75b4a16dbe95cfd7ff8faea1056c33131d846e3097"
    },
    "id" : "3198bc9c-6672-5ab3-d995-4942343ae5b6",
    "version" : 3
}

一個有許多神奇的參數(shù)的粗笨的 JSON 文件,似乎與復(fù)雜的加密操作相關(guān)。這絕不吸引人。

讓我們深入理解一下

如果你看這個 keystore 文件的結(jié)構(gòu),你會看到大部分內(nèi)容都是在“crypto”中的:

"crypto" : {
    "cipher" : "aes-128-ctr",
    "cipherparams" : {
     "iv" : "83dbcc02d8ccb40e466191a123791e0e"
    },
    "ciphertext" : "d172bf743a674da9cdad04534d56926ef8358534d458fffccd4e6ad2fbde479c",
    "kdf" : "scrypt",
    "kdfparams" : {
     "dklen" : 32,
     "n" : 262144,
     "r" : 1,
     "p" : 8,
     "salt" : "ab0c7876052600dd703518d6fc3fe8984592145b591fc8fb5c6d43190334ba19"
    },
    "mac" : "2103ac29920d71da29f15d75b4a16dbe95cfd7ff8faea1056c33131d846e3097"
   },

這包括:

cipher:對稱 AES 算法的名稱;

cipherparams:上述 cipher 算法需要的參數(shù);

ciphertext:你的以太坊私鑰使用上述 cipher 算法進(jìn)行加密;

kdf:密鑰生成函數(shù),用于讓你用密碼加密 keystore 文件;

kdfparams:上述 kdf 算法需要的參數(shù);

Mac:用于驗(yàn)證密碼的代碼。

讓我們看看他們是如何協(xié)同工作的,如何在你的密碼下保護(hù) keystore 文件。

1. 加密你的私鑰

就像之前提到的,一個以太坊賬戶就是用于加密簽署交易的一個私鑰?—公鑰對。為了確保你的私鑰沒有在文件中明文存儲(即任何人只要能得到這個文件就能讀),使用強(qiáng)對稱算法(cipher)對其加密至關(guān)重要。

這些對稱算法使用密鑰來加密數(shù)據(jù)。加密后的數(shù)據(jù)可以使用相同的方法和同樣的密鑰來解密,因此算法命名為對稱算法。在本文中,我們稱這個對稱密鑰為解密密鑰,因?yàn)樗鼘⒂糜趯ξ覀兊囊蕴凰借€進(jìn)行解密。

以下是 cipher,cipherparams 和 ciphertext 對應(yīng)的概念:

  • Cipher 是用于加密以太坊私鑰的對稱加密算法。此處cipher用的是 aes-128-ctr 加密模式。
  • Cipherparams 是 aes-128-ctr 加密算法需要的參數(shù)。在這里,用到的唯一的參數(shù) iv,是aes-128-ctr加密算法需要的初始化向量。
  • Ciphertext 密文是 aes-128-ctr 函數(shù)的加密輸入。

所以,在這里,你已經(jīng)有了進(jìn)行解密以太坊私鑰計算所需要的一切...等等。你需要首先取回你的解密密鑰。

區(qū)塊鏈科普:什么是以太坊私鑰儲存(Keystore)文件?

-ciphertex 密文的對稱解密-

2. 用你的密碼來保護(hù)它

要確保解鎖你的賬戶很容易,你不需要記住你的每一個又長又非用戶友好型的用于解密 ciphertext 密文解密密鑰。相反,以太坊開發(fā)者選擇了基于密碼的保護(hù),也就是說你只需要輸入密碼就能拿回解密密鑰。

為了能做到這一點(diǎn),以太坊用了一個密鑰生成函數(shù),輸入密碼和一系列參數(shù)就能計算解密密鑰。

這就是 kdf 和 kdfparams 的用途:

  • kdf 是一個密鑰生成函數(shù),根據(jù)你的密碼計算(或者取回)解密密鑰。在這里,kdf 用的是scrypt算法。
  • kdfparams 是scrypt函數(shù)需要的參數(shù)。在這里,簡單來說,dklen、n、r、p 和 salt 是 kdf 函數(shù)的參數(shù)。更多關(guān)于 scrypt 函數(shù)的信息可以在這里找到。

在這里,用 kdfparams 參數(shù)對 scrypt 函數(shù)進(jìn)行調(diào)整,反饋到我們的密碼中,你就會得到解密密鑰也就是密鑰生成函數(shù)的輸出。

區(qū)塊鏈科普:什么是以太坊私鑰儲存(Keystore)文件?

-用密碼生成密鑰-

3. 確保你的密碼是對的

我們描述了用密碼和 keystore 文件生成以太坊私鑰所需要的所有東西。然而,如果解鎖賬戶的密碼錯誤會發(fā)生什么?

根據(jù)迄今為止我們所看到的,所有操作(密碼派生和解密)都會成功,但是最終計算的以太坊私鑰不是正確的,這首先違背了密鑰文件的使用初衷!

我們要保證輸入解鎖賬戶的密碼是正確的,和最初創(chuàng)建 keystore 文件時一樣(回想一下 geth 下創(chuàng)建新賬戶時兩次輸入的密碼)。

這就是 keystore 文件中 mac 值起作用的地方。在密鑰生成函數(shù)執(zhí)行之后,它的輸出(解密密鑰)和 ciphertext 密文就被處理【注1】,并且和 mac(就像一種認(rèn)可的印章)作比較。如果結(jié)果和 mac 相同,那么密碼就是正確的,并且解密就可以開始了。

【注1】這里有點(diǎn)簡略了。在和 mac 進(jìn)行比較之前,解密密鑰(左起第二字節(jié)開始的16字節(jié))要和 ciphertext 密文連接在一起,并進(jìn)行哈希散列(用SHA3-256的方法)。

區(qū)塊鏈科普:什么是以太坊私鑰儲存(Keystore)文件?

把所有的都放到一起考慮

?。∪绻阋呀?jīng)做到了這一點(diǎn),那么恭喜你!

讓我們回顧一下我們描述的3個函數(shù)。

首先,你輸入了密碼,這個密碼作為 kdf 密鑰生成函數(shù)的輸入,來計算解密密鑰。然后,剛剛計算出的解密密鑰和 ciphertext 密文連接并進(jìn)行處理,和 mac 比較來確保密碼是正確的。最后,通過 cipher 對稱函數(shù)用解密密鑰對 ciphertext 密文解密。

瞧!解密的結(jié)果是你的以太坊私鑰。 你可以在這里看看整個過程:

區(qū)塊鏈科普:什么是以太坊私鑰儲存(Keystore)文件?

就像你從圖中可以看到的,整個過程可以看做一個黑盒(不過,圖中是個灰盒),你的密碼是惟一的輸入,你的以太坊私鑰是惟一的輸出。所需的其他信息都可以在你的以太坊賬戶創(chuàng)建時生成的keystore文件中獲得。

由于這個原因,請確保你的密碼足夠強(qiáng)(并且無論如何你要記住它?。┎拍鼙WC即使攻擊者偷到了你的keystore文件也不能輕易得到你的私鑰。

以上就是區(qū)塊鏈科普:什么是以太坊私鑰儲存(Keystore)文件?的詳細(xì)內(nèi)容,更多關(guān)于以太坊私鑰儲存(Keystore)文件的資料請關(guān)注腳本之家其它相關(guān)文章!

免責(zé)聲明:本文只為提供市場訊息,所有內(nèi)容及觀點(diǎn)僅供參考,不構(gòu)成投資建議,不代表本站觀點(diǎn)和立場。投資者應(yīng)自行決策與交易,對投資者交易形成的直接或間接損失,作者及本站將不承擔(dān)任何責(zé)任。!

你可能感興趣的文章

更多

熱門幣種

  • 幣名
    最新價格
    24H漲幅
  • bitcoin BTC 比特幣

    BTC

    比特幣

    $ 103256.78¥ 734961.1
    -2.26%
  • ethereum ETH 以太坊

    ETH

    以太坊

    $ 3463.69¥ 24653.85
    -2.32%
  • tether USDT 泰達(dá)幣

    USDT

    泰達(dá)幣

    $ 0.9997¥ 7.1156
    +0%
  • ripple XRP 瑞波幣

    XRP

    瑞波幣

    $ 2.4221¥ 17.24
    -5.01%
  • binance-coin BNB 幣安幣

    BNB

    幣安幣

    $ 965.3¥ 6870.81
    -1.95%
  • solana SOL Solana

    SOL

    Solana

    $ 158.42¥ 1127.6
    -4.87%
  • usdc USDC USD Coin

    USDC

    USD Coin

    $ 1¥ 7.1178
    -0.01%
  • tron TRX 波場

    TRX

    波場

    $ 0.299¥ 2.1282
    +1.18%
  • dogecoin DOGE 狗狗幣

    DOGE

    狗狗幣

    $ 0.1747¥ 1.2434
    -2.73%
  • cardano ADA 艾達(dá)幣

    ADA

    艾達(dá)幣

    $ 0.5647¥ 4.0194
    -4.21%

幣圈快訊

  • 白宮國家經(jīng)濟(jì)委員會主任哈塞特:部分10月數(shù)據(jù)可能永遠(yuǎn)丟失

    2025-11-12 03:01
    白宮國家經(jīng)濟(jì)委員會主任哈塞特表示,時長創(chuàng)紀(jì)錄的政府停擺意味著一些本應(yīng)于10月收集的經(jīng)濟(jì)數(shù)據(jù)可能永遠(yuǎn)不會被記錄下來,這使得全面評估美國經(jīng)濟(jì)健康狀況變得困難。“據(jù)我了解,有些調(diào)查實(shí)際上根本沒有完成,所以我們可能永遠(yuǎn)也無法知道那個月發(fā)生了什么,”哈塞特周二表示,“在數(shù)據(jù)機(jī)構(gòu)恢復(fù)運(yùn)作之前,我們可能還要經(jīng)歷一段陰云籠罩的時期?!卑▌诠そy(tǒng)計局和人口普查局在內(nèi)的統(tǒng)計機(jī)構(gòu)在政府停擺期間無法收集數(shù)據(jù),導(dǎo)致一些依賴人工收集方法的報告極易受到影響。美國勞工統(tǒng)計局無法發(fā)布10月份消費(fèi)者價格指數(shù)(CPI)的風(fēng)險日益加劇,同時經(jīng)濟(jì)學(xué)家也擔(dān)心另一項(xiàng)失業(yè)率相關(guān)的調(diào)查能否發(fā)布。
  • Polymarket上美國政府在本周末前重新開放的可能性達(dá)到95%

    2025-11-12 02:59
    據(jù)Polymarket預(yù)測市場數(shù)據(jù),美國政府在本周末前重新開放的可能性高達(dá)95%。
  • Coinbase將上線Allora(ALLO)

    2025-11-12 02:51
    Coinbase宣布將上線Allora(ALLO)現(xiàn)貨交易,如果流動性條件滿足,ALLO-USD交易對將于今天晚些時候開始開放。
  • AMD預(yù)計2027年數(shù)據(jù)中心收入將達(dá)到“數(shù)百億美元”

    2025-11-12 02:48
    AMD預(yù)計2027年數(shù)據(jù)中心收入將達(dá)到“數(shù)百億美元”,預(yù)計整體數(shù)據(jù)中心年復(fù)合增長率將超過60%,預(yù)計服務(wù)器CPU市場份額將超過50%,PC(個人電腦)市場的份額超過40%。
  • 若BTC突破108,439美元,主流CEX累計空單清算強(qiáng)度將達(dá)21.86億美元

    2025-11-12 02:30
    據(jù)Coinglass數(shù)據(jù)顯示,若BTC突破108,439美元,主流CEX累計空單清算強(qiáng)度將達(dá)21.86億美元。反之,若BTC跌破98,847美元,主流CEX累計多單清算強(qiáng)度將達(dá)10.49億美元。
  • 查看更多