【検証】シードフレーズを頭の中に記憶してみる
※この記事は、ビットコイン研究所にて2022年10月12日に公開された記事を無料公開しています。
こんにちは,AndGoのハードウェア担当です。
前回はシードフレーズの保管方法とリスクの関係,保管方法が財産を失う確率にどのような影響を与えるか確率を計算してみました。
シードフレーズは紙に書いたり,金属でできたパーツを組み合わせて保存したり,さまざまな方法で保管されますが,物理的なものだけに様々なリスクを伴います。
それでは,シードフレーズを頭の中に記憶してしまったらどうでしょう?
シードフレーズを記憶することで,シードフレーズのリスクはどのように変化するのでしょうか。忘れてしまったり,誤って記憶してしまうことはないのかも心配になります。今回はシードフレーズの記憶を自ら実践しつつ,考察してみました。
認証方法は3種類に分けられる
そもそもシードフレーズを安全に保管するというのは,皆さんが普段使っている,家や金庫の鍵や,ウェブサイトにログインするためのパスワードの保管方法と本質的に同じです。
最近ではスマートフォンには生体認証も使われ始めています。このような認証する仕組みというのは大きく分けて「知る要素」「持つ要素」「備える要素」の3つであると言われています。
シードフレーズを紙などに記録して保管するというのは,「持つ要素」を使っていると言えます。
さらにシードフレーズをダイヤル錠式の金庫にいれて保管する場合には,金庫の暗証番号を覚える必要がありますので「知る要素」が加わることになります。
もし悪意がある人が金庫に入れたシードフレーズを盗もうとする場合,金庫そのものを見つけ,金庫を解錠する必要があるため,二重にセキュリティを突破する必要があると言えます。
最近は多要素認証を導入しているウェブサイトが増えてきました。「パスワード」と「ワンタイムパスワード」の組み合わせは,パスワードを記憶していることと,ワンタイムパスワード生成器を持っていることの組み合わせですので,「知る要素」と「持つ要素」の組み合わせでセキュリティを高めていると言えます。
シードフレーズの保管場所を増やすことのジレンマ
シードフレーズの保管方法というのは「持つ要素」に頼り切っているといえます。持つ要素は,パスワードのような知る要素と比較すると記憶が薄れて自然消滅することはないものの,災害などで消失したり,第三者に盗まれる可能性が高いと言えます。
前回の記事では,シャミアバックアップを使ってシードフレーズを分散することについて考察しました。「n of m」であればシードフレーズをm個に分散し,そのうちn個を集めることでシードフレーズとして機能します。このような運用をしていた場合,nを増やすことで盗難リスクは減り,m-nを増やすことで消失リスクが減ります。
ところが,盗難と消失の両方のリスクを同時に下げるためには,nを増やしながら,m-nを増やす必要があるため,mを二重に大きくしないといけません。つまり,シードフレーズの保管場所をたくさん準備する必要があり,管理に手間がかかるようになってきます。すると復元方法がわからなくなるなどのリスクが増えてしまい本末転倒となってしまいます。
シードフレーズの記憶が盗難・消失リスクへ及ぼす影響
そこでシードフレーズの保管に「持つ要素(紙などに書かれたシードフレーズ)」だけでなく「知る要素」を加えるという方法を考えてみたいと思います。
つまりシードフレーズを記憶するとどのような効果があるか考察してみます。
「持つ要素」と比べると「知る要素」は盗難リスクが低く(ほぼゼロ),消失リスクが高いという性質があります。紙などに書かれたシードフレーズと組み合わせる場合には,消失リスクを高めないように,盗難リスクを下げるものでなければなりません。
まずはシードフレーズ全体を記憶することを考えます。(シャミアバックアップで分割するシードフレーズを一つ増やして記憶に頼ることも考えられます。ここでは計算は省略しますが,同様の傾向があります。)
紙などに書かれたシードフレーズが盗難される確率をP1,消失する確率をQ1,記憶していたシードフレーズが盗難される確率をP2,消失する確率をQ2とします。記憶していたシードフレーズが盗難される確率はほぼゼロなのでP2=0となり,全体として資産を失う確率は以下の式で表されます。
R= P2+(Q1×Q2)
※盗難については片一方が盗まれても資産を失うので和で表され(ただし両方盗まれるレアケースは無視),消失については同時に失わなければ資産を失わないので積となります。
したがってシードフレーズを記憶することで,盗難リスクはそのままで,消失リスクを飛躍的に下げることができるといえます。消失リスクを下げられたぶん「n of m」のmを減らして,管理の手間を減らすことが可能になります。
シャミアバックアップをしないまでも,シードフレーズを複製して2ヶ所以上に保管される方も多いと思います。ここで,さらにもう1ヶ所保管場所を加えると消失リスクは下げられるものの,盗難リスクが増えてしまいます。ここで,これにシードフレーズの記憶を加えることで,盗難リスクを増やさずに,消失リスクのみを大幅に下げることができるでしょう。
シードフレーズを記憶する方法
24個のランダムな英単語を記憶するのは一見難しそうです。しかし,私たちは非常に重要な情報を記憶だけに頼って記憶して日々生活しています。自分や家族の名前,住所や電話番号,家や職場の場所,使用している銀行口座やカードの暗証番号,給料の引き出し方,などなどです。
実際にテクニックを身につければ効率よく記憶することができます。円周率を何桁も暗記している人などもこのようなテクニックを組み合わせて使っているようです。そしてなぜ私たちが生きるために重要な情報を忘れないのかも理解できます。
ストーリーにする
人はストーリーにすると大きな情報量を記憶することができます。細かな情報は思い出すことができなくても,大まかなストーリーは覚えているものです。例えば,○○銀行に口座を作ったというエピソードは,その時の状況まで覚えている方も多いのではないでしょうか。語呂合わせも一見無意味な情報に意味を与えて覚えやすくするテクニックです。より極端な状況を想像しながら語呂合わせすることで,強烈に記憶に残ります。
場所と紐付ける
場所に関する記憶は薄れにくいという性質があります。私たちの祖先は動物は獲物どこにいるか,食べ物をどこに保管したか覚えておかないと生存競争に勝てなかったらです。道を覚えるのが苦手な方でも一度でも自力で訪れたことがある場所であればそれほど苦労せずにたどり着けるはずです。そこで記憶したい内容を場所に紐付けることで記憶が強化されて忘れにくくなります。
頻繁にアウトプットする
私たちは頻繁に使う情報はより忘れにくくなります。例えば,自分の名前はほぼ毎日使うので絶対に忘れません。住所もネットショッピングなどで1週間に一度ぐらいの頻度でしか使いませんが,以前に住んでいた住所も含めてなかなか忘れることができません。身体的な動作に関わることも記憶がされやすく,自転車の乗り方はそう簡単には忘れませんし,スマートフォンのPINも数字ではなく身体的な感覚で覚えていらっしゃる方も多いはずです。
シードフレーズの記憶の実践
上記のテクニックを使って,実際にシードフレーズの24単語を覚えられるか自ら実践してみました。
まずはシードフレーズを24単語生成してくれるウェブサイトで以下の単語を生成してみました。
exhibit crazy bulb essence civil version
dismiss eager swallow pet virtual piece
quarter note toe monitor begin civil
fire smile sauce help filter pave
copy
まずはストーリーにすることを考えます。英単語だけでは覚えにくいので前置詞や冠詞を補って以下のような英文にしてみました。
Exhibit crazy bulb essence in civil version.
→ 市民版のクレイジーな電球のエッセンスを展示する。
Dismiss an eager swallow pet from a virtual piece of a quarter.
→ 25セントコインの仮想的な一部から熱心なツバメのペットを退場させる。
Note a toe monitor begins civil fire.
→ つま先のモニターが民間の火災を開始することに注意する。
Smile sauce helps filter pave.
→ 笑顔のソースはフィルタ舗装に役立つ。
copy
・・・無理やりですが,なんとか状況は想像できるものとなりました。せっかくなのでAIを使って視覚化もしてみました。かなり強烈です。
smile sauce and filter pave と入力し視覚化
つぎに場所との紐づけを行います。たとえば、上記の状況がJR山手線の停車駅で起きていることを勝手に想像します。皆さんが試される場合は通勤等で利用する路線が良いかもしれません。
東京駅で市民版のクレイジーな電球のエッセンスを展示する。
神田で25セントコインの仮想的な一部から熱心なツバメのペットを退場させる。
秋葉原でつま先のモニターが民間の火災を開始することに注意する。
御徒町では笑顔のソースがフィルタ舗装に役立つ。
copy
最後にアウトプットです。時々思い出して答え合わせをしました。BIP39の24単語に使われる単語は決まっているので,多少のスペルミスは問題ありませんし,チェックサムがあるので1単語までの間違いであれば,誤り検出ができます。
24単語を生成したウェブサイトではこれらの誤りを指摘してくれます。しかし実際に使用するシードフレーズではネットワークに情報が流れてしまうのでおすすめできません。これについては後ほど述べます。
この作業は,記憶し始めた初期には頻繁に行い,徐々にインターバルを長くしていきます。スケジュール管理にはスマートフォンのリマインダアプリを使います。
実際に1ヶ月少々の間で定期的に思い出し,記憶を確認してみたログを下にまとめました。
9月4日 24単語を生成して、上記の方法で記憶。
1時間後 思い出すのに少しだけ時間がかかったが完全に復元。
5時間後 version piece note helpのような印象が弱い単語や抽象的な単語がすぐに出てこない。場所と関連づけることは思い出すトリガーになり割と効果が大きいことを実感。
10時間後 最初の一単語が出てこない。単語を飛ばしてしまうことがあるので,チェックのため各文の単語数を覚えておくとよさそう。
9月5日 形容詞がすぐに出てこない傾向にある。
9月6日 crazyのスペル,help を入れ忘れていたが,すぐに気づいた。エラーチェックが重要そう。
9月8日 完全に思い出せた。
9月10日 完全に思い出せた。すらすら言えた方が安心感がありそう
9月13日 完全に思い出せた。ここから先は一週間おきに
9月20日 petを忘れていたがエラーチェックで気づいた
9月27日 essence を忘れていたがエラーチェックで気づいた
10月4日 piece と quarter が逆にしていたがエラーチェックで気づいた
10月11日 問題なく思い出した。
考察とまとめ
今回実際に24単語の記憶を試してみて,方法をきちんと踏めばそれほど苦労せずに覚えられるということが分かりました。実際やってみた改善点をまとめます。
-
自分である程度エラーチェックできる方法があるとよい。途中で各文の単語数を覚えておいたが,別の方法でもチェックできると間違いに気づくし,思い出すトリガーになりそう。
-
声に出して何度も復唱することで,単語がスラスラ出てきて安心感がありそう。紙に書くことでも記憶が強化されそう。ただし誰かに聞かれたり見られたりする可能性がある。
-
より自然な文章が作れそうな24単語になるまで,シードフレーズを生成し続けるのもよさそう。
また,定期的なアウトプットと答え合わせする手段として,今回は紹介したウェブサイトに入力してチェックしましたが,セキュリティ的には全くよろしくありません。そこで次のようなことができるハードウェアデバイスがあっても良いと思いました。
-
デバイス上でシードフレーズを入力して初期設定をする。(シードフレーズはハッシュ値のみを保存して二度と取り出せないようにする。)
-
定期的にユーザーにリマインドしユーザーにシードフレーズを入力させる。
-
ユーザが入力したシードフレーズが合っているかどうかをチェックする。
-
単語のスペルと,チェックサムを確認する。
パスフレーズや階層型決定性ウォレットに関する情報についても定期的に内容を確認する仕掛けがあっても良いかもしれません。
シードフレーズはリカバリの手段であり,シードはウォレットに入っているので,その気になればシードフレーズは物理的に残さなくても良いぐらいの記憶の定着率です。(もちろん人間の記憶は確実ではないですし,なにかの拍子に忘れてしまうこともあるかもしれないので,記憶力に自身がある方であっても自己責任でお試しください)。
現在,シードフレーズをご自身の方法で管理されていている方でしたら,完璧ではないにしてもシードフレーズを覚えておくことで,消失リスクを確実かつ大幅に下げることができます。例えば大規模な災害や戦争など,何らかの理由で着の身着のままどこかに逃げないといけなくなってしまう事態になるかもしれません。
このようなときにシードフレーズを覚えていれば,躊躇せずに逃げることができますし,ウォレットを調達できれば世界中どこでも資産を復元することができるという,大きな安心感につながるのではないでしょうか。
追記
ビットコイン研究所のnoteを始めました。
今後こちらにもビットコイン研究所のコンテンツを投稿していく予定です。フォローしていただければ嬉しいです。