見出し画像

知らないと怖い、秘密鍵と秘密のリカバリーフレーズの違い

おはようございます。🐤

昨日に引き続き、ブロックチェーンの基礎知識を学んでいきます。

みなさんは「秘密のリカバリーフレーズ」を知っていますか、メタマスクを初めてインストールした時に覚えさせられる12の単語です。

秘密のリカバリーフレーズ

その他にもいろいろな呼び名があって、みな同じものです。単語の数が24の場合もあります。

  • シークレット・リカバリー・フレーズ

  • シードフレーズ

  • ニーモニック

似た場面で使われる言葉で「秘密鍵」という言葉があります。秘密鍵とはこんなのです。

秘密鍵(プライベート・キー)

うん……そうね、覚えにくいね、きっとさっきの12の単語はこれの代わりなのね。覚えやすいからね。中身は同じものよきっと。

違います!

これは結構重要な誤解で、間違うと痛い目にあう可能性があります。

しかもこれはよくある誤解です。なぜなら、限りなく公式に近いウェブサイトでも混同しちゃって説明しているので、それを読んだ僕たち素人ブロガーが間違って広めてしまって、さらに多くの人に誤解を流布するのです。

これらは本当は明確に違って、しかも意外と違いが重要である場合が多くて、これらを同じようなものとして雑に扱うと将来痛い目にあう可能性が高いです。だから今日ちょっと頑張って両者の違いを学んで覚えてしまいましょう。

秘密鍵

まず「秘密鍵」です。

この秘密鍵で、ブロックチェーン上の資産を扱います。自分の資産を出金するときにこの秘密鍵で署名することで「確かに自分の資産だ」といえるのです。

なぜなら、秘密鍵をもっているのは本人だからです。

「え? 本人じゃないかもしれないよ?」ではないのです、ブロックチェーンの世界では「秘密鍵をもっている人が本人」なのです。「違っていたとしても本人だと扱われる」という方がわかりやすいかもしれません。

ランダムな文字列の感じがよく似ているものに「ウォレットアドレス」があります。

これも40文字くらいの英数字の文字列なので、一瞬「秘密鍵」と同じかなと思ってしまいますけど、ちょっと短くて、例えばイーサリアムなら必ず「0x」で始まるという決まりがあります。

ウォレットアドレスは、メールアドレスとか銀行の口座番号みたいなもので、他人に教えても大丈夫なものです。

必ず一つの秘密鍵に対して一つのウォレットアドレスが紐づいています。

「秘密鍵」は人間には見える必要のないもので、アプリによってはすごく設定の奥深くにあったり、そもそも表示できないような仕様になっているものもあります。

秘密のリカバリーフレーズ

次に秘密のリカバリーフレーズです。

これは12(もしくは24)の英単語で、人間にとっつきやすくなっています。だから、ウォレットの新規作成のときにメモするのはこちらですし、普通はウォレットの秘密鍵をエクスポート/インポートする時もこちらを使います。

秘密鍵と違って、秘密のリカバリーフレーズではブロックチェーン上の資産を扱うことはできません。リカバリーフレーズから「秘密鍵」を生みだして、その秘密鍵で資産を扱います。

よくある勘違いは「リカバリーフレーズは秘密鍵を人間に読めるようにしたもの」というものですが、少し違います。リカバリーフレーズは秘密鍵を作り出すためのツールというのが一番近いと思います。

というのは、リカバリーフレーズと秘密鍵は1対1対応じゃないからです。

メタマスクなどのWeb3ウォレットでは、ウォレット内でたくさんのアカウントを作れるものがあるのを知っていますか? 

メタマスクの右上の丸いアカウントをクリックして「アカウントを作成」すると新しいアカウントをどんどん作ることができます。アカウントが作られる時には、対応した秘密鍵が作られます。

この時、ウォレットアプリの内部でやっていることは、一定の決まりに従って秘密鍵を作っています。

メ夕マスクの場合BIP-44という決まりに従っているので、同じ決まりを採用するアプリであれば、同じリカバリーフレーズから同じ秘密鍵が作られます。

ここまでで、「秘密鍵」と「秘密のリカバリーフレーズ」の違いがわかると思います。リカバリーフレーズをもとに、「秘密鍵」はいくつも作ることができます。

逆に「秘密鍵」からリカバリーフレーズを割り出すことはできるでしょうか? 答えは「できない」です。

1つの「秘密のリカバリーフレーズ」から、たくさんの「秘密鍵」が生みだせる、と覚えてください。これによって1つのウォレットでたくさんの秘密鍵を簡単に管理することができるようになっています。

特殊な(よくある?)ケース

このように1つのリカバリーフレーズからたくさんの秘密鍵を作ることができる性質を利用して、セキュリティを高める工夫をしているウォレットアプリがあります。

例えばSafePalですが、シードフレーズに加えて、「パスフレーズ」というものを入力して、それを追加要素として秘密鍵を作ります。

「パスフレーズ」は、例えばいつも使っているパスワードでも、4桁の数字でもなんでもいいです。とにかく、これをリカバリーフレーズの追加要素として秘密鍵を作ると、何もなしで新規作成した「秘密鍵1」とは違う「秘密鍵p1」が生まれます。

これによって、仮にリカバリーフレーズが漏れてしまっても、パスフレーズがわからないと「秘密鍵p1」にはたどり着かないというセキュリティが実現できます。

素晴らしい発想で、確かにセキュリティも高くなるのですが、「パスフレーズ」を忘れてしまうと自分のウォレットが復旧できなくなるので、とにかく何をするにも理解して使うことが大事です。

アプリによって違う

メタマスクで作った追加アカウントと、他のウォレットアプリで作った追加アカウントが同じかどうかはわかりません。メタマスクと同じルール(BIP-44)が採用されていたら同じアカウントになりますが、違うルールだと違う秘密鍵が作られます。

また、例えばSafePalでは1つのシードフレーズから複数のサブアカウントを作ることはできないようです。

その代わりにウォレット内に複数のリカバリーフレーズをもつことで、複数のアカウント(秘密鍵)を作るものもあります。

まとめ

というわけでまとめです。

  • 「秘密鍵」と「秘密のリカバリーフレーズ」は違います。

  • ウォレット内(メタマスク)でサブアカウントをたくさん作ると、秘密鍵がたくさん作られます。

  • アプリによっては、追加アカウントの管理のしかたに違いがあるので注意

  • アプリによっては「パスフレーズ」によってセキュリティを高められるものもあります。(だけど「パスフレーズ」を忘れたら「秘密のリカバリーフレーズ」があっても復旧できなくなるので、取り扱いには注意)

というところです。今日のお話は難しかったでしょうか。

でもがんばってください。少なくとも現状のブロックチェーンの世界では、しくみを理解しないと資金をなくす危険がすごく高まります。身を守るためには学ぶのです。

逆にいうと、学ぶのが苦手なら、もうちょっと後から入ってきた方がいいです。きっともうすぐ銀行員さんや保険屋さんがブロックチェーンを扱った商品を窓口で売ってくれるようになります。きっと。

というわけで、今日はこのへんで。みなさんのブロックチェーンの世界の理解につながったらうれしいです。

それではまた、DeFi~(@^^)/~~~


この記事が気に入ったらサポートをしてみませんか?