あなたの暗号財布はハッキングされる可能性がありますか?
暗号ウォレットを使用したことがあるなら、フレーズ(助記詞)には馴染みがあるはずです。フレーズは平文の秘密鍵の別の表現形式で、最初にBIP39(2013年に誕生したビットコイン第39号改善提案)によって提案されました。BIP-39標準では、各ペアの鍵に対して一組のユニークなフレーズが対応しており、その目的はユーザーが複雑な秘密鍵を記憶し、書き写すのを助けることです。
BIP39(フレーズを定義することで種のバックアップをより親しみやすくする)という概念の他にも、実際にはBIP32(多数の秘密鍵を管理する手間を避けるために提案された階層的導出スキーム)やBIP44(BIP32の階層パスを定義する規範)などの概念があります。例えば、私たちがよく知っているMetaMask(小狐ウォレット)はBIP44標準を使用して鍵を導出し、ユーザーが複数のアカウントを持つウォレットを使用できるようにし、各アカウントには独自の一対の公開鍵(受信/送金に使用する公開ウォレットアドレス)と秘密鍵がありますが、これらのアカウント(サブアカウント)はすべて同じフレーズから派生しています。MetaMaskの複数アドレスはHD(階層的決定論的)機能に関連しており、これについては後で説明します。BIPに関する概念についてはここでは詳細に説明しませんが、興味のある方は自分でGoogleで関連資料を探してみてください。
次に、BIP39に基づいて簡単に紹介します。ウォレットを作成する際に生成される12個のフレーズ(または24個)は、対応するウォレットのすべての資産に相当します。12個のフレーズを失うと、暗号ウォレット内のすべての資産がもはや自分のものではなくなることを意味します。言い換えれば、フレーズを持っている人が、その暗号ウォレットのすべての資産を持っていることになります。
さらに、現在の主流のウォレットのほとんどはBIP標準に対応しているため、一組のフレーズはほぼすべての暗号ウォレットにインポートして使用できます。例えば、同じフレーズをMetaMaskにインポートして使用したり、Rabby Walletにインポートして使用したり、OKX Web3ウォレットにインポートして使用したりできます……要するに、ウォレットは単なるツールであり、それ自体はあなたの暗号資産を保存しません。あなたのウォレット内(厳密にはあなたのフレーズ)の暗号資産はチェーン上に保存されています。
ただし、ここで注意が必要なのは、現在オンラインには多くの偽のウォレットが存在するため、注意が必要です。また、知らないまたは評判の悪い暗号ウォレットを使用しないようにしましょう。ウォレットの開発者が内部で盗む可能性があるためです。
フレーズの問題に戻りましょう。暗号ウォレットのフレーズは2048個の英単語の特定のリスト(BIP39単語リスト)から抽出されます。つまり、どんなツールやウォレットDAppが生成したフレーズも、この2048個の単語の中に含まれています。以下の図を参照してください。
さらに、フレーズのユニーク性を確保するために、BIP39単語リストには最初の4文字が同じ単語は存在しません。例えば、appleとapplは最初の4文字が同じため、これらの単語はこの2048個の単語リストには含まれません。つまり、単語の最初の4文字を知っていれば、BIP39単語リストを通じて対応する単語の残りの部分を調べることができるため、時々特定のウォレットアプリでフレーズをインポートする際に、最初の4文字を入力すると、ソフトウェアが自動的に入力を完了することがあります。以下の図を参照してください。
この時、もしかしたら新しい仲間の中には疑問を持つ人がいるかもしれません。フレーズは固定の2048個の単語からランダムに12個の単語を選んで構成されているのだから、暗号ウォレットは簡単に破られるのではないか?あるいは適当に12個の単語を選んでインポートすれば、暗号資産が保存されているウォレットに入れるのではないか?
1.適当に12個の単語を入力すればウォレットに入れるのかという問題
フレーズの生成順序は特定のアルゴリズムに従っているため、他の人が適当に12個の単語を入力してもあなたのウォレットに入れることはありません。フレーズを生成するアルゴリズムの大まかなプロセスは以下の通りです。
2.暗号ウォレットが破られる可能性について
確率の観点からこの問題を考えると、確かに可能性はあります。
しかし、実際の操作の観点から考えると、その確率が発生する可能性は非常に低いです。ここで計算リストを作成してみましょう(以下の図を参照してください):
1つの単語が欠けている場合、2048通りの可能性があります (2048¹)
2つの単語が欠けている場合、4,194,304通りの可能性があります (2048²)
3つの単語が欠けている場合、8,589,934,592通りの可能性があります (2048³)
4つの単語が欠けている場合、17,592,186,044,416通りの可能性があります (2048⁴)
もしあなたが暗号ウォレットを破ろうとし、現在最も強力なCPU --- Intel Core i9--14900Kを購入した場合、このCPUは毎秒5760億回の計算を処理できます。以下の図を参照してください(私は直接ChatGPTに尋ねました)。
理論的には、このCPUを使って12個のフレーズの組み合わせを完全に破るには9.45 x 10²⁷回の計算が必要です。以下の図を参照してください。
それでは、計算にどれくらいの年数がかかるかをChatGPTを使って計算してみましょう。以下の図を参照してください。
上記の計算結果から、上記のCPUの計算能力を利用して2048個のフレーズを完全に破るには299,700,000,000,000,000,000年かかることがわかります。これはほぼ不可能に見えます。
しかし、12個のフレーズのうちいくつかが欠けている場合、破ることは可能です。具体的な破壊計算に必要な時間とコストについては、興味のある方は上記の方法でChatGPTに尋ねてみてください。また、実際にはフレーズを破るまたは復元するためのツールもいくつか存在します。例えば、以前の記事で紹介したSeed Saviour(1つの単語を失った場合の復元/破壊に適しています)やBtcrecover(2つ以上の単語を失った場合の復元/破壊に適しています)などがあります。以下の図を参照してください。
総合的に見ると、現在の暗号ウォレット資産の喪失の主な原因は、破られることではなく、ウォレットの保有者が不適切に使用またはバックアップすることによるものです。例えば、フレーズをネット接続されたスマートフォンやコンピュータ、オンラインクラウドストレージに適当に保存したり、フレーズを他の人に適当に送信したり、偽のウォレットソフトウェアをダウンロードしたり、問題のあるフィッシングサイトに権限を与えたりすることなどです。
3.12個のフレーズと24個のフレーズの選択について
12個のフレーズは最も一般的ですが、実際には24個のフレーズもあります。技術的な観点から見ると、12個の単語は128ビットに相当し、24個の単語は256ビットに相当します。現在、私たちがよく知っているMetaMask(ソフトウェアウォレット)やOneKey(ハードウェアウォレット)などのウォレットは、デフォルトで生成されるフレーズは12個ですが、Ledger(ハードウェアウォレット)やTrezor(ハードウェアウォレット)などのウォレットは、デフォルトで生成されるフレーズは24個です。
12個のフレーズと24個のフレーズで生成されたウォレットには違いはありません。主な違いは安全レベルに関するもので、つまり、12個のフレーズは128ビットの安全レベルを提供し、24個のフレーズは256ビットの安全レベルを提供します。
しかし、実際には128ビットの安全レベルはすでに十分高いです。上記の計算からも理解できるように、したがって、12個のフレーズを選ぶか24個のフレーズを選ぶかは、あなた自身の考慮と好みによります。一般的な個人にとっては、この理由で24ビットのフレーズを生成する必要は全くありません。なぜなら、あまりにも多くの単語を記憶し管理することは逆に困難で面倒だからです。
4.ウォレットの主な種類は何ですか?
普段よく耳にするのは、さまざまなホットウォレット、コールドウォレット、ハードウェアウォレット、ペーパーウォレットなどですが、ウォレット自体の特性に基づいて分類すると、現在一般的なウォレットの種類は主にEOAウォレット、MPCウォレット、AAウォレットの3つです。実際、このトピックについては以前の記事でも関連する整理がありましたので、ここで簡単に振り返ってみましょう。
1)EOAウォレット
EOAウォレットはフレーズウォレットを指します。フレーズに言及すると、一部の人は秘密鍵の問題にも言及するかもしれません。簡単に言えば、秘密鍵はフレーズに等しいです。秘密鍵は通常、一連の数字と文字で構成されており、人間が記憶するには不便です。そのため、後にフレーズを使用して秘密鍵を「置き換え」ることになりました。私たちは単に12または24個の英単語(フレーズ)を記憶またはバックアップすればよいのです。
また、フレーズと秘密鍵の間は、いくつかのオンライン変換ツールを使用して相互に変換することもできます。以下の図を参照してください。ただし、安全のために、知らないツールやウェブサイトを使ってフレーズを生成したり変換したりしないように注意してください。フレーズが漏洩する可能性があるためです。
2)MPCウォレット
MPCウォレットは無秘密鍵ウォレットを指します。つまり、秘密鍵は分割処理され、プラットフォームが1つを保存し、ユーザーのデバイスが1つを保存し、ユーザーのクラウドストレージ(例えばiCloud)が1つをバックアップします。
現在、多くの人が使用しているBinance Web3ウォレットやOKX Web3ウォレットはこのタイプです。当然、これらは既存のフレーズをインポートしてEOAウォレットを作成することもサポートしています。
3)AAウォレット
AAウォレットはスマートコントラクトウォレット、またはアカウント抽象(Account Abstract)ウォレットとも呼ばれます。このウォレットには秘密鍵がなく、単独で作成することはできず、コードロジックによって制御され、既存のウォレットの基盤の上に作成する必要があります。つまり、各無秘密鍵ウォレットまたは秘密鍵ウォレットは1つのAAスマートコントラクトアカウントを作成でき、フレーズウォレットの下の各アカウント(例えば、同じフレーズの下のMetaMaskはN個の異なるウォレットアカウントアドレスを生成できます)は、対応するAAスマートコントラクトアカウントを作成できます。例えば、ウォレットA --- アカウント01は、ウォレットA --- Smart01に対応します。
スマートコントラクトウォレットには、バッチ取引、Gasの代払い、鍵の復元など、より多くのカスタマイズおよび拡張機能がある特別な機能が一般的にあります。上記で言及したBinance Web3ウォレットやOKX Web3ウォレットもAAウォレットの作成をサポートしています。
しかし、このウォレットモデルは現在の段階では市場での採用率が比較的低く、多くのチェーン(および対応するDApp)がまだサポートしていません。そのため、AAウォレットを使用してスワップ操作を行う際に、「現在接続している無秘密鍵ウォレットはXXXチェーンをサポートしていません」というメッセージが表示されることがあります。
5.マルチシグウォレットに関する問題
上記で述べたことに加えて、暗号ウォレットに関連して、マルチシグ(Multi-Signature)という概念をよく耳にするかもしれません。マルチシグは、単一の秘密鍵だけでなく、複数の異なる秘密鍵を使用して取引を承認することを指し、主に取引の安全性を高めるために使用されます。
一般的に、マルチシグは主にいくつかの問題に関連しています:
1)複数の秘密鍵の問題
つまり、マルチシグウォレットには通常、複数の秘密鍵が含まれており、各秘密鍵は特定の承認者に関連付けられています。
2)署名の閾値の問題
つまり、マルチシグウォレットでは、取引を実行するために必要な承認者の署名数を示す署名の閾値を定義できます。その動作メカニズムは、複数の鍵とM-of-N署名の概念に関連しています。M-of-N設定では、N個の鍵のうちM個が取引に署名しなければ、その取引を承認できません。例えば、2-of-3マルチシグウォレットでは、3つの秘密鍵が存在し、少なくとも2つの秘密鍵(承認者)が取引を実行するために必要です。
3)マルチシグ取引の問題
つまり、取引を実行するには、署名の閾値を満たす必要があり、十分な数の承認者の署名を得る必要があります。取引がブロードキャストされ、確認されるためには。
しかし、具体的なアプリケーションの面では、マルチシグのこの方法は主に企業や機関が多く使用する可能性がありますが、個人ももちろん使用できます。例えば、1つの秘密鍵を自分のスマートフォンに保存し、もう1つの秘密鍵を自分のコンピュータに保存することができ、取引の際には2つの秘密鍵を同時に使用する必要があります。
マルチシグウォレットの作成と使用の例については、以前の記事で関連する紹介がありましたので、ここでは詳しく説明しません。興味のある方は過去の記事を振り返ってみてください。以下の図を参照してください。
6.ビットコインウォレットに関する問題
この問題については、以前グループで共有したことがありますので、ここで簡単に振り返ります:
1)エンコーディングの観点から
ビットコインウォレットアドレスの秘密鍵(注意:秘密鍵)は、WIF、WIFC、HEX、B64、MINI、BIP38など、さまざまな形式に分けることができます。つまり、1つの秘密鍵は異なるエンコーディング方式に基づいて生成されることができます(異なる形式の秘密鍵も相互にエンコーディング変換が可能です)。ここではWIFとWIFCを例に挙げます:
WIFはWallet Import Formatの略で、秘密鍵のエンコーディング方式の1つです。この方式は圧縮と非圧縮の2つの形式に分けられます。圧縮はWIF compressed(略してWIFC)、非圧縮はWIF uncompressed(略してWIF)です。
彼らの違いは技術的な観点からのもので、例えば:
WIFエンコーディングは、秘密鍵の前に0x80というプレフィックスを追加し、この新しく生成された値に対してさらに2回sha256の操作を行い、この計算結果の最初の4バイトを検証ビットとして取り、最後にbase58エンコーディングの結果を生成し、最終的に5で始まる秘密鍵アドレスを生成します。
WIFCの計算はWIFと似ていますが、いくつかの違いがあります。0x80のプレフィックスを追加するだけでなく、最後に圧縮フラグのサフィックス0x01を追加する必要があります。残りの結果は以前と変わりません。その後、2回sha256を行い、最初の4バイトを検証ビットとして取り、最終的にKまたはLで始まる秘密鍵アドレスを生成します。
したがって、上記の圧縮および非圧縮秘密鍵に対応するビットコインのアドレスは、Bitcoin Address Uncompressed(ビットコイン非圧縮アドレス)とBitcoin Address Compressed(ビットコイン圧縮アドレス)に分かれます。
つまり、こうなると1つのビットコインは2つのアドレス(Compressed/Uncompressedアドレス)に対応しますが、これらの2つのアドレスは「合法」であり、使用上の違いはありません。圧縮アドレスは実際に最も一般的で使用されるアドレス(1で始まるビットコインウォレットアドレス)であり、現在ほとんどのウォレットツールがデフォルトで生成するのはこのアドレスです。
要するに、どのツールを基に生成されたウォレットアドレスであっても、生成されたウォレットアドレスと秘密鍵は必ず一対一の関係にあります。この2つを記録しておけば、日常の使用過程で圧縮や非圧縮の問題に悩む必要はありません。技術的な問題に悩む必要もありません。ただ覚えておくべきことは、あなたの秘密鍵が漏洩した場合、あなたのすべての資産が失われる可能性があるということです。
2)アドレス形式の観点から
一般的に、ビットコインウォレットアドレスは主に4つの形式に分けられます。それぞれは以下の通りです:
通常のアドレス(P2PKHアドレス、Pay-to-Public-Key-Hash):これは最初に登場したビットコインアドレス形式で、このアドレスは「1」で始まり、26から35文字で構成され、数字と大文字のアルファベットを含みます。
ネイティブ隔離証明アドレス(Native Segwit Address、P2WPKHアドレスとも呼ばれる):これは新しいアドレス形式で、「bc1q」または「tb1」で始まり、41から62文字で構成され、数字と小文字のアルファベットを含みます。
互換性のある隔離証明アドレス(Nested Segwit Address、P2SH-P2WPKHアドレスとも呼ばれる):これは従来の通常のアドレスとネイティブ隔離証明アドレスを混合した新しいアドレス形式です。「3」で始まり、26から35文字で構成され、数字と大文字および小文字のアルファベットを含みます。
Taprootアドレス:Taprootはビットコインプロトコルの重要なアップグレード(2021年11月にアクティブ化)で、ビットコインのプライバシー、安全性、拡張性を向上させることを目的としています。Taprootアドレスは通常「bc1p」で始まります。
簡単に言うと、これらの4つのアドレスは同じフレーズから導出生成できます。現在、SegWit/Taprootアドレスは比較的多く使用されており、多くの主流ウォレットのデフォルトアドレス形式です(いくつかのウォレットは4つのアドレスのうち1つまたは2つしかサポートしていない場合があります)。bc1アドレスは、より高い容量と低い取引手数料などの多くの利点を含んでいます。ビットコインには異なるアドレスがありますが、各アドレス間での送金は可能です。なぜなら、すべて同じ基盤の暗号技術とプロトコルを使用して取引を行うからです。異なるアドレスの唯一の違いは、Gas費用に関して差があることです。SegWitアドレスを使用すると、相対的に安くなります。SegWitとTaprootの違いについては、前者は取引データを簡素化し、後者はプライバシーと効率を向上させることを主に目的としています。
8.HDウォレットに関する問題
HDウォレットは階層的決定論的(Hierarchical Deterministic)ウォレットで、この概念は一部のウォレットアプリで見かけることがあると思います。簡単に言うと、HDは鍵ペアを管理および生成するための階層構造を使用するウォレット構造と考えることができます。このフレームワークに基づいて、ユーザーは同じフレーズを使用してほぼ無限の数のアドレス(サブアドレス)を作成でき、各アドレスの秘密鍵をバックアップする必要はありません。
このウォレットモデルの利点は、1組のフレーズだけで任意の数の新しいウォレットアドレスを生成できることです。異なるアドレスを異なる用途に使用できます。例えば、あるアドレスはエアドロップ用、別のアドレスは送金用、さらに別のアドレスはテスト用など、これによりより良い匿名性とプライバシーを実現できます。しかし、欠点も明らかで、フレーズを失ったり漏洩したりすると、対応するすべてのアドレスの資産も失われます。
したがって、便利さと安全性のどちらを重視するかは、自分で決める必要があります。