Wallet encryption

提供: tezos-wiki
移動先: 案内検索

このページでは、元のBitcoinクライアントで使用されている wallet.dat 'ファイルを暗号化するために使用されるアルゴリズムについて説明します。

ウォレットの暗号化では、暗号化のために AES-256-CBC </ span>を使用しますウォレットに保持されている秘密鍵。キーはマスターキーで暗号化されています これは完全にランダムです。このマスタ鍵は、 SHA-512を使用してパスフレーズから派生した鍵を持つAES-256-CBC OpenSSLの EVP_BytesToKey </ code>とで決定された動的ラウンド数 初期暗号化を行うマシンの速度 後続するコンピュータの速度に基づいて更新される パスフレーズ変更)。基になるコードは複数の 同じマスターキーの暗号化されたコピー(したがって複数のパスフレーズ) クライアントにはまだパスフレーズを追加する方法がありません。

実行時に、クライアントは通常どおりウォレットをロードしますが キーストアは暗号化された形式でキーを格納します。パスフレーズ (キープールを上に上げる、またはコインを送る)必要があるかどうかは問い合わせます GUIプロンプトで入力するか、<code> walletpassphrase </ code> RPCコマンド。これにより、ウォレットは「ロックされていない」状態に変わります。 暗号化されていないマスターキーがメモリに保存されます(GUIの場合のみ 要求された操作をRPCで完了するのに十分な長さ <code> walletpassphrase </ code>の2番目のパラメータで指定します)。ウォレットは ロックされている(または<code> walletlock </ code> RPCコマンドを使用して手動でロックできます) 暗号化されていないマスターキーがメモリから除去される。

ウォレット暗号化の実装の詳細[編集]

ウォレットがロックされると、<code> sendtoaddress </ code>、<code> sendfrom </ code>、<code> sendmany </ code>、および<code> keypoolrefill </ code> 13: "エラー:最初にwalletpassphraseでウォレットのパスフレーズを入力してください。"

ウォレットがロック解除されると、<code> walletpassphrase </ code>の呼び出しは失敗します。

ウォレットが暗号化されている場合、パスフレーズは したがって、パスフレーズがまれに入力された場合は、 keypoolがなくなる可能性があります。この場合、デフォルトのキーは マイニングのための支払いのターゲット、および<code> getnewaddress </ code>および<code> getaccount </ code> アドレスはエラーを返します。このような事態を防ぐために、キープール <code> walletpassphrase </ code>が正しく呼び出されたときに自動的に補充されます <code> topupkeypool </ code>が呼び出されたとき(ウォレットのロックが解除されている間) keypoolは、さまざまな機会に プールからの新しい鍵が使用され、ウォレットはロックされていない(または暗号化されていない)。

ウォレットのパスフレーズの暗号化が有効になると、キープールからの未使用キーはフラッシュされ(使用済みとしてマークされます)、暗号化で保護された新しいキーが追加されます。 このため、ウォレットの新しいバックアップを作成して、バックアップにアクセスするための新しいキープールからキーを回復できるようにします。</ span>

Category:技術