シードフレーズ~秘密鍵と公開鍵
おはようございます。😊
今日はシードフレーズのお話です。大事な大事なお話です。どれくらい大事かというと家中の通帳と印鑑、実印、家の鍵、それらを入れた金庫くらい大事です。
「そんなの知ってるよ、DeFi始める時、すごく最初にやったよ」という人もぜひぜひ読んでいってください。どうしても読み飛ばしたい人はこちらの質問に答えてみてください。
「メタマスクの開発者がシードフレーズ盗んだらどうしますか?」
シードフレーズ、ニーモニック、etc
DeFiを始める時、多くの人がBSCから入ったのではないでしょうか。もっと早くから始めていた人はイーサリアム? どちらにせよウォレットを準備する時にメタマスクは最初の選択肢だったと思います。
メタマスクを最初にインストールする時に、「シードフレーズは大事なので、必ず紙に書いてメモに残しましょう」というのは必ず聞いた(見た)と思います。12個の単語が並んだアレ、あれがシードフレーズであり、アプリによってはニーモニックとか、最近ではメタマスクが「シークレット リカバリー フレーズ」と呼んだりしています。ひとつのものにいろんな名前つきすぎィ!
何かトラブルがあって、サポートの人が「では調べますのでシードフレーズを教えてください」と言ったらどうしますか? 教えてはいけません。
どんなサポート、たとえメタマスクのサポートでも、シードフレーズは教える必要はありません。代わりにウォレットアドレスは教えても大丈夫なので、ほんとのサポートならウォレットアドレスの方を聞いてきます。
いつも使っている信頼できるWebサイトをブックマークから訪ね、「現在プロトコルがトラブルです、被害を最小限にするために至急シードフレーズを入力してください」とメッセージを出してきたらどうしますか? 入力してはいけません。
2台目の端末としてスマホにメタマスクを入れて、PCのウォレットと同期したい場合は? こればかりは入れないといけません。しかし、ほんとに公式のアプリかよくよく確認してください。必ずGoogle Playか、Apple Storeで検索して、偽物じゃないかを確認してください。
とにかく失くさなければいいのです、人に教えなければいいのです、怪しいサイトにも怪しくなさそうなサイトにも絶対に入力してはいけない、ただそれだけです。
でも、今日はもうちょっと踏み込んで、シードフレーズとはいったい何かということを考えていきましょう。
公開鍵と秘密鍵
シードフレーズはいろんな秘密鍵をたばねたものの暗証番号です。鍵箱の鍵とでも言いましょうか。
では秘密鍵とはなんなのでしょう。これはブロックチェーン上の自分の資産を操作するためのカギであり、その実態はランダムな文字列です。
よく聞くけどちょっとよくわからないしくみですよね、とにかく暗号技術を使えば安全なしくみができる、テクノロジーすげー! でOKです。
でも、ちょっとだけ説明です、ここは積極的に読み飛ばしてください。
例えばアリスがボブに1ETHを送金する時、「アリスが」「ボブに」「1ETH」送金したというデータがブロックチェーンに送られてみんなに見られる状態になります。(これを「ブロードキャストされる」といいます)
この情報がみんなに共有されるのが重要です。
「全世界に自分の送金額とか相手を知られるなんてそんな赤裸々な、いやだ!」と思いますけど、それが分散化のミソなので、そこは避けて通れません。とにかく大声でみんなに聞こえるように見えるように放送するのです、「アリスが!ボブに!1ETH送金するよ!」
このとき、次のことが大事です。
・ほんとにアリスが送金したのか?(なりすましではないのか?)
・データは途中で誰かに書きかえられていないか?
これを確かなものにするために、既存の技術である公開鍵と秘密鍵の暗号技術を使えばいいんじゃないか? というアイデアが生まれました。
もともと「アリスが」「ボブに」「1ETH」送金というのは、公開したい情報です、それをわざわざ暗号化するのは「なりすましじゃないか?」「書きかえられていないか」ということを確かなものにしたいからです。
では、公開鍵と秘密鍵とは……ここも積極的に読み飛ばし推奨です! 今日の記事読むとこないですよ!
・アリスは鍵のペアを持っています。自分だけの秘密鍵と、みんなに見せてもOKな公開鍵です。
・秘密鍵から公開鍵は生成されます、しかし逆はできません
・アリスの秘密鍵で暗号化したものは、アリスの公開鍵で解読できます。
・アリス以外の人の公開鍵では復号化できません。
・つまり、アリスの公開鍵で復号化できるということは、間違いなくそのデータはアリスが暗号化したものだと証明できるわけです。
アリスは送金のトランザクションを暗号署名し、公共の場(ブロックチェーン)にブロードキャストします。誰かがアリスの公開鍵で解読してみた結果、データが一致すると、これは確かにアリスが送信したもので、なおかつ、途中で誰にも書きかえられていないことが証明できるわけです。
アリスの公開鍵からアリスのウォレットアドレスが生成されるので(逆はムリ)、この公開鍵の持ち主のアドレスから発信していることも同時に証明できます。
さてこれで秘密鍵の大事さがわかりましたでしょうか。
この秘密鍵(ただの文字列)がもし他人に知られてしまったら、その秘密鍵を使って公開鍵が生成され、ブロックチェーン上の自分の資金を自由に操作することができるのです。
秘密鍵(プライベートキーともいいます)は大事、秘密鍵は大事と3回つぶやきましょう。
再びシードフレーズ
さて、メタマスクではウォレットアドレスを複数持つことができます。これは秘密鍵を複数作れるということです。
1つのシードフレーズを盗まれると、そのメタマスクで管理している全ての秘密鍵を盗まれてしまいます。
秘密鍵は大事なのに、たくさんの秘密鍵を一手にまとめているシードフレーズはもっと大事!シードフレーズは大事!と自分の持っているウォレットアドレスの数×3回唱えましょう。
「シードフレーズを入力してください」が詐欺ではないのは1つだけ、何かの理由でウォレットを再生するときだけです。
逆に、怪しそうで怪しくないのはウォレットアドレスを聞かれたとき。これはまあ、自分の全資産の取引履歴が全て明らかになるので、ちょっと恥ずかしいのは否めませんが、お金を盗まれることはありません。
サポートする側にしても、このウォレットアドレスがあれば全て取引内容が見えるので、サポートできることになります。秘密鍵はサポートに必要ありません。
・秘密鍵(プライベートキー)
・シードフレーズ
パスワードが漏れなくても、上の2つのどちらかを知られたら一発アウトなので十分ご注意を。
では、パスワードは何のため?
パスワードは日常のウォレット操作で、本人確認のために必要です。スマホ置き忘れて誰かに全部操作されたら嫌ですよね。ネット銀行でもパスワードがついているのと一緒です。
感覚的にはわかりにくいですが、ブロックチェーンの世界では秘密鍵こそがいわゆるパスワードのようなものなのです。しかし64桁のランダムな文字列を、資金操作のたびに手動でポチポチ打ち込むことは現実的ではないので、アプリに秘密鍵を登録してしまい、必要な時にアプリが自動で秘密鍵を入力してくれます。
そうすると他人にアプリを操作されたらおしまいなので、その代わりに人間でも覚えられるパスワードを補助的につけているのです。
ちなみに、シードフレーズでウォレットをインポートしたことがある方は気づくと思いますが、シードフレーズや秘密鍵を入力してからパスワードを設定しますので、パスワードが漏れなくてもシードフレーズか秘密鍵のどちらかがわかれば資金は自由に操作できます。
SafePalはすごい!
さて、おまけでSafePalの特徴的なセキュリティ機能を紹介します。
パスフレーズって言って、シードフレーズに対するパスワードみたいな機能がひっそりと備えられています。
これをもっと強調しないのはなんでかなってくらいすごい機能で、これがあればいわゆるシードフレーズが漏れてもウォレットの資金は安全になります。
しくみはおそらくこんなところだと思います。(裏はとれていません、僕の解釈です)
・シードフレーズから秘密鍵はいくつでも生成できる
・生成のときに「パスフレーズ」をひとつのハッシュとする
・シードフレーズ+パスフレーズから生まれたアドレスが誕生する
というしくみです。つまり、シードフレーズだけでは生まれないアドレスを生み出すことができるんです。
正確には、生まれるんですけど天文学的な確率です。これによって、怪しいサイトでシードフレーズをいれても、なかなかそのアドレスにはたどり着かない!という意味だと思います。違ったらごめんなさい!
デメリットはパスフレーズを忘れがちなこと😣
ですけど、メリットも大きいので、興味ある方はぜひ考えてみればいいのではないでしょうか。
ただし、シードフレーズいれる人はパスフレーズまでいれてしまいがちというヒューマンエラーはどこまでも付きまといます!
透明性
では、冒頭の疑問の答えです。メタマスクにはなぜシードフレーズを入れてもいいのでしょうか、言い換えると、メタマスクはスキャムじゃないのでしょうか?
シードフレーズを生成しているのも、秘密鍵を生成しているのもメタマスクです。メタマスクがその気になれば世界中の誰のウォレットも盗むことができます。
しかし、それができないしくみになっています。メタマスクはオープンソースで、プログラムが公開されています。見る人が見れば、秘密鍵やシードフレーズが開発者にもわからないようになっていることが明らかなので、メタマスクは誰が開発しているのかよくわからなくても信頼されているのです。
しかしそんなコードを読めない僕たちは、「たぶん誰かがソースを読んで安全を確かめてくれている」ということを頼りにメタマスクを信頼するのです。人任せです。
そういう意味ではSafePalソフトウェアウォレットはオープンソースではありません。オープンソースというのも善し悪しなようで、ソースを公開することは脆弱性をも含めて公開されるわけですから、良いことばかりではないのです。
どこのネット銀行のアプリもオープンソースじゃないけど、みなさん使ってますよね。それは銀行への信頼によるものだと思います。
SafePalの場合はコードではなくSafePal社を信頼しているのです。DeFiの思想と理念からは少し外れるように思いますが、僕たちにとってはメタマスクを信頼する理由とさほど違いはありません。
だから、たくさんの人に使われているアプリを使うことが安心と安全につながります。
いや結局そこかい! と思いますが、コードを読めない一般人にできることはそれくらいです。ウォレットは、シードフレーズは、とても大事ですから、できる限り信頼されているウォレットを使う方が良いと僕は思っています。
自分の信念、好みによって、分散化命な人はメタマスクのようなオープンソースのアプリを、どっちでもいいから便利なものをという人はSafePalのような企業への信頼が必要なアプリを使ってみればいいと思います。
まとめ
・資金を操作できるのは秘密鍵
・秘密鍵を生成できるのはシードフレーズ
・シードフレーズはウォレットアプリ全体のアドレスを管理できる
シードフレーズはどこにも、誰にも、絶対入力してはいけない! と覚えておきましょう。唯一の例外はウォレットを復旧(同期)する時です。その時でも、ウォレットは必ず公式からダウンロードできていることを徹底的に確認しましょう。
今日の内容は以上です。何かのお役にたてるとうれしいです。
それではまた、DeFi~(@^^)/~~~
この記事が気に入ったらサポートをしてみませんか?