こんにちは,AndGoのハードウェア担当です。

皆さんは,BIP39のニモニック(シードフレーズ・リカバリシード12〜24単語の復元のためのワードリスト・・・様々な呼び方がありますね)の保管はどのようにされていますでしょうか?

2年以上前ですが,大石さんの記事では,Twitterでのアンケート結果によると紙での保管が最も多かったようです。

ニモニックをメモ用紙に書いて冷蔵庫に貼り付けている・・・という方はさすがにいらっしゃいませんね???

多くの方は自宅の鍵のかかるようなところに保管していると勝手に想像しています。練木さんのように徹底した保管方法を実践されている方もいらっしゃいます。

実は,先日のDIYハードウェアウォレット勉強会の懇親会で,ある方とのマルチシグウォレットの運用方法について話題になりました。ニモニックを分散管理する場合にも全く同じ話で,どのように保管したらよいか迷っている方も多いと想像されます。

そこで今回はニモニックの保管方法によって資産を失うリスクがどのように変化するか,確率の面から考察していきたいと思います。

まずは前提から・・・

ウォレットに関わるリスクについてはニモニックの保管方法に依存しないということもあり,(そしてかなり乱暴な仮定ですが)ウォレットがいつの間に壊れていた・・・と仮定します。この状態では,ニモニックを失えば資産を失うことになります。

実際に,電子機器が壊れる可能性は,盗難や災害に遭う可能性よりよっぽど高いのではないでしょうか?自動車用や宇宙産業用であれば故障する可能性は低くなりますが,一般的な電子機器はよく壊れます。このようなワーストケースを想定をしておいたほうが安全です。

本記事でニモニックに対するリスクとして次の2つを定義します。

盗難

  • ニモニックを盗まれ残高を引き出されることと定義する。
  • パスフレーズが設定されてあったとしても漏洩や解読されているとする。
  • 残高が盗まれず,ニモニックが戻ってこなかっただけの場合は次の消失に含める。

消失

  • 自然災害や火災などでニモニックを失うことと定義する。
  • 誰かに残高を引き出されることはないものとする。
  • ニモニックの転記ミスや,保管場所を忘れたなどのセルフGOX案件も消失に含める。

盗難と消失を比べると,盗難は他者の悪意によるものであることや,精神的な損害があることから,実質的な被害としては消失よりも大きいという考え方もあります。しかし,ここでは失った資産についてのみ考え,盗難と消失は同等の被害であると考えます。

盗難の被害に遭う確率をPとします。たとえば,自分が住んでいる地域で毎年に10,000戸に1戸が空き巣の被害に遭っている場合にP = 0.0001とします。

消失の確率はQとします。こちらも同様で,毎年,ニモニックを失う程度の自然災害などが発生する割合となります。

これで準備が整ったので実際にいくつかのケースを想定して資産を失う確率を見積もっていきます。

Case 1 ニモニックを一か所だけで保管していた場合

盗難や消失のように2つの事象があって,どちらかが起こる確率は和として計算されます。したがってこの場合は資産を失う確率は

\[R_1 = P + Q\]

厳密には盗難と消失が同時に起こる可能性もあるので(排反事象でないので),P + Q - PQとしなければいけませんが,PQは非常に小さいので無視します。(具体的には,空き巣に入られた家がそのまま家事になったような状況で,P + Q だと盗難と消失でダブルカウントしてしまっているので一回分差し引くというイメージです)

Case 2 ニモニックをコピーして2つの場所に保管していた場合

A,Bという別々の場所にニモニックを保管していたとします。場所が異なれば盗難や消失の確率は変わってきます。Aという保管場所でニモニックを盗難される確率はPa,消失する確率はQb,Bという保管場所ではPbQbとします。

盗難に関してはどちらか一方のニモニックが盗まれてしまえば資産をすべて失います。それに対して消失はどちらか片一方が残っていれば完全に復元することができます。(完全に消失したかどうか疑わしい場合には新しい秘密鍵を使うことをお勧めします。)

資産を失う確率は次のようになります。

\[R_2 = (P_a + P_b) + Q_aQ_b\]

Pa + Pbの部分は理屈としてはCase 1と同じです。それぞれの場所でニモニックが盗難される確率の和で表されます。これについても,2ヶ所で同時に盗まれる可能性については非常に低いので無視しています。

消失については2つの場所で同時に起こった場合に限って資産を失います。2つの事象が同時に起こる確率はそれぞれの確率を掛け算すればよいので,Qa Qbとなります。

ここでCase 1とCase 2に具体的な数値をいれて比較してみましょう。

P = Pa = Pb = 0.001, Q = Qa = Qb = 0.001の場合
(盗難の確率と消失の確率が等しい場合)
→ R1 = 0.002, R2 = 0.002001

P = Pa = Pb = 0.01, Q = Qa = Qb = 0.001の場合
(盗難の確率の方が高い場合)
R1 = 0.011, R2 = 0.02001 (保管場所を分散することで資産を失う確率が増加!)

P = Pa = Pb = 0.001, Q = Qa = Qb = 0.01の場合
(消失の確率の方が高い場合)
R1 = 0.011, R2 = 0.0021 (保管場所を分散することで資産を失う確率が減少!)

上記の数値を代入した計算では細かな計算をしていますが,実際に有効なのは一桁程度で,0.002と0.002001の違いは無視しても構いません。

この結果よりニモニックを2ヶ所の場所に保管したほうが効果的な場合というのは,その保管場所でニモニックを盗まれ,かつ資産を引き出される可能性よりも,自然災害などでニモニックをただ失う可能性が高い場合といえそうです。

現実問題,万が一ニモニックが盗まれたとしても,犯人がニモニックの価値に気づかなかったり,パスフレーズで保護されていたりするため,よっぽど暗号技術に明るい犯罪者が多い地域であったり,自分が莫大な資産を持っていることを言いふらしていない限りは,盗難の可能性は消失よりも低くなるといえます。

安全な場所であるということが分かっていれば,もし自分がニモニックのニモニックは分散して保管しておいたほうが,資産を失う可能性ははるかに低くなると言えます

3ヶ所以上の場所にニモニックのコピーを保管した場合には,計算結果は変わってきますが,盗難にはより弱くなり,消失にはより強くなるという傾向は同様となります。

Case 3 シャミアバックアップ を使用していた場合(2 of 3 の場合)

Trezorで対応しているシャミアバックアップを使えばニモニックを分散させることができます。たとえば2 of 3の運用ではニモニックは3個に分散され,そのうちの2個が揃えばウォレットを復元できるようになります。ビットコイン研究所でも大石さんが過去に解説していますので参照してください。

まずは例に挙げた2 of 3の場合を計算していきます。保管場所はA,B,Cの3ヶ所です。盗難と消失のそれぞれの確率はPa, Pb, PcおよびQa, Qb, Qcとします。

盗難のみの確率を考えると,同時に2つ以上のニモニックを盗まれることで初めて資産を失います。「A と B で盗まれる」「B と C で盗まれる」「A と C で盗まれる」の3通りが考えられます。「A と B と C の全てで盗まれる」場合も考えても良いですが確率として非常に小さくなるので無視します。すると盗難によって資産を失う確率は

\[P = P_a  P_b + P_b P_c + P_c  P_a\]

となります。

次に消失について考えます。消失の場合は2 of 3が成り立たなくなる場合に資産を失います。ニモニックは1つまでは消失してよく2つ目からは致命的となります。したがって

\[Q = Q_a  Q_b + Q_b  Q_c + Q_c  Q_a\]

となります。

そして,これらを足し合わせると,

\[R_4 = (P_a  P_b + P_b  P_c + P_c  P_a) + (Q_a  Q_b + Q_b  Q_c + Q_c  Q_a)\]

となります。

Case 1とCase 2のように具体的に数値を代入して計算してみます。 P = Pa = Pb = Pc = 0.001, Q = Qa = Qb = Qc =  0.001の場合では,資産を失う確率はR3 = 0.000006となりました。1か所で保管の場合は R1 = 0.002, 2ヶ所でコピーを保管の場合は R2 = 0.002001, でしたので,シャミアバックアップを2 of 3で使う場合はリスクを大幅に下げることができるといえます。

Case 4 シャミアバックアップを使用していた場合(n of mの場合)

実はCase 3はCase 4の準備運動です。より一般的な場合を考えてみます。今回は盗難と消失の確率は保管場所に依存せず,すべての保管場所でPxQxとします。

盗難の場合にはm個あるニモニックのうちn個が盗まれるとアウトとなります。n+1個以上の場合は確率が非常に小さくなるので無視します。すると,盗難の確率は

\[P = {}_m\mathrm{C}_n \times {P_x}^n\]

となります。mCnは組み合わせ(combination)を表します。

消失については,ちょっとだけ複雑で,m個の内,n個のニモニックが生き残っていればセーフで,生き残りがn-1個になるとアウトです。つまりm-(n-1) = m-n+1 が消失するとアウトになると言うこともできます。したがって,

\[Q = {}_m\mathrm{C}_{n+1} \times {Q_x}^{m-n+1}\]

となります。(m-n+2)個以上の消失からは無視しています。

したがって,これらを足し合わせると,

\[R_5 = ({}_m\mathrm{C}_n \times {P_x}^n) + ({}_m\mathrm{C}_{n+1} \times {Q_x}^{m-n+1})\]

となります。

じつはmCnmC(n+1)の部分はmやnが少し変わっても桁がそれほど変わることはありません。(3C2=3ですし5C3=10です。) 大きく効いてくるのはべき乗の部分です。

PxQxは0.0001のような非常に小さい数なのでnを増やすことでPが(文字通り)桁違いに減り,m-n+1を増やす(つまりm-nを増やす)ことで今度はQが桁違いに減ります。

これはつまり「n of m」のnを増やすことで盗難リスクは減り,m-nを増やすことで消失リスクが減るということです。

もし現状の運用が「3 of 5」だったとします。もしここで例えば,あなたが突然有名人になってしまったというような事情があり,盗難リスクのみを減らしたくなったということであれば,「4 of 6」や「5 of 7」とすればよいでしょう。

一方で,最近災害が多い地域に引っ越したという場合で消失リスクのみを減らしたい場合には「3 or 6」や「3 of 7」とするとよいでしょう。

まとめ

ここまでの内容をまとめます。

  • ニモニックはコピーを2ヶ所以上に分散することで,資産の喪失リスクが減少する。ただし,盗難よりも消失の可能性が十分に低い場合のみ。
  • シャミアバックアップを使用すると,盗難と消失のリスクを効果的に下げることができ,n of mであれば n を増やすことで盗難のリスクを下げ,m-nを増やすことで消失のリスクを下げることができる。

今回は盗難や消失の確率を表すPやQについては具体的な数値については触れませんでした。お住まいの地域の空き巣の件数や,自然災害の頻度など,統計データから大雑把な数値は見積もることができるかもしれませんが,地域や保管方法によって全く異なる結果になってしまうので,割愛しました。

試しに具体的な値を実際に算出してみたい方はたとえば0.001ぐらいの1より十分小さいけれども,実際よりも小さすぎない値を使ってみると良いと思いますし,

もちろん,PやQそのものを減らす工夫も重要です。盗難や消失の確率の「桁」が変わってきますし,特に分散化している場合ではべき乗で効いてきます。

たとえば犯罪が多い地域に住んでいるのであれば,生のニモニックではなくパスフレーズを設定するのは非常に効果的ですし,大きな資産を暗号資産で持っていることを公言しないことももちろん効果があります。

また,消失リスクを下げるための方法としては先日AndGoの原がコラムで述べていた方法も効果的です。

実際には前半でも述べたようにウォレットそのものの故障や手順のミスによるセルフGOXの方がよっぽど可能性としては高いのではと考えています。ビットコインは自己責任の世界ですので,ウォレットは壊れる可能性があることを前提にした対策や,送金テストやバックアップ手順を実際にやってみるなど,様々なリスクを想定した運用を心がけたいですね。