仮想通貨ウォレットの公開鍵と秘密鍵とは?仕組みをわかりやすく解説

この記事は次の言語でご利用いただけます:

Author logo
Patrick Dike-Ndulue
Post image

公開鍵と秘密鍵は、ビットコインなどの仮想通貨に欠かせない仕組みです。ウォレットで仮想通貨を送受信する際、中央集権的な第三者の承認を必要とせずに取引できるのは、この鍵ペアがあるからです。これらは公開鍵暗号方式(PKC)の一部であり、デジタル資産の安全性を支える重要な要素です。では、公開鍵と秘密鍵とは何か、どのように連携して資産を守っているのでしょうか?

公開鍵暗号方式とは?

公開鍵暗号方式(PKC)は、非対称暗号を使ってデータの真正性を検証する技術です。もともとは従来のIT分野でメッセージの暗号化・復号に使われていましたが、現在は仮想通貨の取引データの暗号化・復号にも活用されています。

PKC one-way trapdoor function.png
公開鍵暗号方式の仕組み

PKCは「トラップドア関数」と呼ばれる一方向関数に基づいており、片方向には簡単に計算できますが、逆方向の計算は極めて困難です。理論上は可能でも、逆算には量子コンピュータと膨大な時間が必要になります。

公開鍵とは?

公開鍵とは、他者から仮想通貨を受け取るための暗号コードです。誰でも公開鍵宛に送金できますが、その資産を「アンロック」して使うには秘密鍵が必要です。つまり、受け取った仮想通貨の所有を証明したり、使ったりできるのは秘密鍵を持つ人だけです。

what is public key.png
公開鍵とは?

送金先として使われる公開鍵は、一般的に「アドレス」と呼ばれる短縮版です。例えば、ビットコインで最初に使われたアドレスは「1A1zP1eP5QGefi2DMPTfTL5SLmv7DivfNa」です。

公開鍵は自由に公開して問題ありません。クリエイターや団体の寄付ページで、仮想通貨アドレス(公開鍵)が記載されているのを見かけたことがあるかもしれません。誰でも送金できますが、資金を引き出すには秘密鍵が必須です。

秘密鍵とは?

what is private key.png
秘密鍵とは?

秘密鍵は、ウォレットの資産の所有を証明し、送金などの操作を行うための暗号コードです。秘密鍵にはさまざまな形式があります:

  • 256文字のバイナリコード
     
  • Hexadecimal code of 64 digits.
     
  • QRコード
     
  • ニーモニックシードフレーズ

どの形式でも、秘密鍵は非常に大きな数値です。この巨大な数値だからこそ安全性が保たれています。秘密鍵から公開鍵を生成できますが、逆に公開鍵から秘密鍵を導き出すのは一方向関数の性質上、ほぼ不可能です。また、1つの秘密鍵に対して複数の公開鍵を紐づけることも可能です。

警告:秘密鍵は絶対に他人はもちろん、自分自身にも共有しないでください!

公開鍵と秘密鍵はどのように機能する?

ウォレットを作成すると、セキュアエレメント上の真性乱数生成器(TRNG)が秘密鍵を生成します。これは長い英数字の文字列です。

この秘密鍵はユーザー固有のもので、ウォレットからの出金や送金など、あらゆる取引の署名に使われます。

複雑なアルゴリズムを用いて、秘密鍵から公開鍵が生成されます。公開鍵は長い数字列ですが、圧縮・短縮されてアドレスとして利用されます。

秘密鍵から公開鍵が生成される仕組み

秘密鍵から公開鍵は、非対称暗号(RSA、楕円曲線暗号(ECC)、DSAなど)の数学的アルゴリズムによって生成されます。

ここでは、ビットコインなどで広く使われている楕円曲線暗号方式を例に、仕組みを簡単に説明します。

  1. 楕円曲線の選択 
    まず、特定の楕円曲線(数学的性質を持つ曲線)を選びます。ビットコインでは「secp256k1」という曲線が採用されています。
     
  2. 一意のポイントを導出 
    秘密鍵は大きなランダム整数であり、この数値から「ポイント乗算」という計算を通じて、楕円曲線上の一意な点を導き出します。
     
  3. 公開鍵の生成
    この一意な点が公開鍵となり、(x, y)の2つの座標で表されます。ただし、通常はx座標のみを使い、圧縮された公開鍵となります。
     
  4. ポイントの圧縮(任意)
    効率化のため、公開鍵全体を短縮した形に圧縮できますが、暗号処理には問題ありません。
     
  5. SHA-256とRIPEMD-160によるハッシュ化
    ビットコインでは、圧縮された公開鍵をSHA-256とRIPEMD-160で2回ハッシュ化し、「PKH(Public Key Hash)」と呼ばれる短縮データを作成します。これはビットコインアドレスに使われます。
     
  6. チェックサム追加(任意)
    一部のブロックチェーンでは、PKHにチェックサムを追加してエラー検出を強化します。すべての仮想通貨で必須ではありません。
     
  7. Base58エンコード
    最後に、PKH(チェックサム付きまたはなし)をBase58形式でエンコードし、紛らわしい文字を排除してアドレスをより読みやすくします。

こうして生成されたアドレスが、実際に仮想通貨の送受信時に使われます。

公開鍵から秘密鍵を逆算するのは現実的に不可能ですが、秘密鍵から公開鍵を作るプロセスは楕円曲線の数学的性質により透明性があり、秘密鍵を明かさずにウォレットの所有を証明できます。

Private keys vs. public keys.png
 

非対称暗号の仕組み

公開鍵と秘密鍵はセットで、メッセージの暗号化・復号に使われます。相手の公開鍵で暗号化したメッセージは、対応する秘密鍵でしか復号できません。そのため、暗号化された内容は本来の受信者しか読めません。また、送信者の正当性を証明できる点も非対称暗号の大きなメリットです。


例えば、友人のPatrickに秘密のメッセージを送りたい場合、まずPatrickの公開鍵で暗号化し、自分の秘密鍵で署名します。Patrickは自身の秘密鍵で復号できます。

仮想通貨の取引と公開鍵・秘密鍵の役割

例えば、Patrickにビットコインを送りたい場合、まずPatrickの公開アドレス(公開鍵の短縮版)が必要です。次に、自分の秘密鍵で取引メッセージに署名し、改ざんされていないことを保証します。その後、取引は暗号化され、ビットコインネットワーク上のノードによって検証されます。

Patrickのウォレットは、彼自身の秘密鍵で取引メッセージを復号し、受け取ったビットコインを取得します。秘密鍵は絶対に他人に知られないように管理しなければなりません。秘密鍵が漏れると、その資産も奪われてしまいます。


なお、ブロックチェーン上でマイニングされた正規の取引は取り消せません。送金前に、正しいアドレス・ネットワークか必ず確認し、秘密鍵で署名しましょう。

秘密鍵はどこに保管される?

秘密鍵は、モバイルやデスクトップのソフトウェアウォレット(ホットウォレット)、または専用のハードウェアデバイス(コールドウォレット)に保存されます。

BinanceやCoinbaseなどの取引所に資産を預けている場合、取引所が秘密鍵の管理者(カストディアン)となります。カストディアルウォレットでは、現金を銀行の金庫に預けるのと同じく、秘密鍵の管理を第三者に委ねることになります。

ノンカストディアルウォレットの場合、秘密鍵は自分で管理します。最近のノンカストディアル型仮想通貨ウォレットは、秘密鍵を直接意識せずに使えるよう設計されています。

ウォレットが自動で秘密鍵を使って取引の署名・保管を行います。バックアップとしては、シードフレーズや複数のハードウェアデバイスで冗長性を確保する方法もあります。

公開鍵と秘密鍵で仮想通貨を管理する仕組み

公開鍵と秘密鍵の連携を理解することは、仮想通貨取引の本質を知るうえで重要です。仮想通貨を「持っている」とは、実際にはその資産の所有を証明する秘密鍵を持っていることを意味します。

「自分で鍵を管理する」か「カストディアンに預ける」かは、利用者の考え方やリスク許容度によって選択が分かれます。

完全に自分で秘密鍵を管理したいなら、Tangem Walletのような最新のハードウェアウォレットがおすすめです。Tangem Walletなら秘密鍵を安全に管理し、決して外部に漏らしません。

取引所などカストディアル型を利用する場合は、セキュリティや規制を重視する信頼できる事業者を選びましょう。

まとめ

公開鍵は「メールアドレス」、秘密鍵は「パスワード」に例えられます。誰でもメールは送れますが、読むにはパスワード(秘密鍵)が必要です。秘密鍵は絶対に他人と共有せず、自分だけで管理しましょう。公開鍵は自由に公開できます。

Author logo
著者 Patrick Dike-Ndulue

Senior editor covering crypto, onchain equities, and technology.

Author logo
レビュー担当者 Rukkayah Jigam

Writer & editor covering digital assets and product updates.