20単語のシードフレーズ?Trezor社が採用するBIP39ならぬSLIP39とは
最近新しいTrezorハードウェアウォレットに触れる機会があり、驚いたことがありました。初回セットアップでシードフレーズを生成するとき、既定の設定が12単語でも24単語でもなく、20単語のシードフレーズだったのです。
読者の皆さんもおなじみのシードフレーズは、一般的には12単語もしくは24単語、そして選択肢として存在するものの実際に選んでいる人を全く見ない15/18/21単語という選択肢があります。これはエントロピーを生成してシードフレーズへと変換するBIP-39という規格に沿ったものですが、近年TrezorはSLIP-39という別の規格を推進しているようです。
BIP39の2048単語からなるワードリストはこちら。英語以外の表記も存在しますが、対応ウォレットが非常に少ないのでおすすめしません。また、SLIP39ではこのワードリストとは異なる、1024単語からなるワードリストを使用します。
単語数やワードリストの違いからもわかるようにBIP-39とSLIP-39に互換性はありません。今日はそんなSLIP-39について軽く調べてみました。
・Trezorはシャミア秘密分散法を使用したサービスを推進している
・SLIP39シードフレーズには閾値などの情報も含まれるため、大きくなる
・秘密分散 vs マルチシグ、お手軽さは秘密分散に軍配?
また大手のハードウェアウォレット製造会社によるシャミア秘密分散法を使ったサービスとして他にもLedger Recoverというものがあり、これについては原さんが2023年に記事を出されています。

それでは始めましょう。
Trezorはシャミア秘密分散法を使用したサービスを推進している
今回触ったのはTrezor Safe 3というハードウェアウォレット(HWW)でしたが、現行のラインナップではTrezor Safe 3、Trezor Safe 5、およびTrezor Model TがSLIP39を使用した20単語バックアップを推進しているようです。(最廉価モデルのTrezor Model Oneは従来型のBIP39シードフレーズのみ対応)
さて、なぜ現行型のTrezorがSLIP39に移行しているかというと、Trezor社がシャミア秘密分散法を使ったSingle Share Backup機能を提供しているためです。
これがどういう機能かというと、一般的にシャミア秘密分散法を使う場合は複数のシェアにシードを分割して疑似的なマルチシグにしますが、Single Share Backupスキームの場合は疑似的な1-of-1マルチシグ(つまりシャミア秘密分散法を使ったシングルシグ)になるようシェアを1つだけ生成します。
なぜそんな回りくどいことをするかというと、SLIP39シードフレーズにはBIP39シードフレーズより多くの情報(マルチシグに関する情報など)が含まれているため書き間違いを防ぎやすかったり、先に1つのシェアを生成しておけば後で簡単に最大16個のシェアを使ったMulti Share Backupスキームでそのまま再利用できるためです。(ちなみにこの場合、最初に生成したSingle Share Backupが分散前の秘密鍵となるので、守り通すか破棄する必要が出てきます)
すなわち、Trezor社はシャミア秘密分散法を使ったサービスの利用体験を考えてSLIP39を推進しているわけです。シードフレーズに含まれる情報については次の項目で触れます。
SLIP39シードフレーズには閾値などの情報も含まれるため、大きくなる
BIP39のシードフレーズは各単語が11 bitsの情報を表し、例えば128 bitsのエントロピーを表す12単語のシードフレーズは最初の11単語が最初の121 bits、そして最後の単語は7 bitsのエントロピーと、残りの4 bitsがチェックサムとなります。厳密にはSHA256で128 bitsのハッシュ値を取り、その結果の最初の4 bitsがチェックサムとなるため、12単語目は7 bitsのエントロピー+4 bitsのチェックサムで決定します。
逆に言えば、BIP39のシードフレーズはシードと4 bitsのチェックサム以外の情報が含まれない、大変ミニマリストな規格です。それと対照的なSLIP39を見てみましょう。
まず、SLIP39ではワードリストがBIP39の半分のため、各単語は10 bitsの情報を表します。最初の2単語(20 bits)はほぼランダムですが、1つの秘密分散グループを構成するすべてのシェア間で共通の識別子として扱われます。次の2単語(20 bits)はグループおよび当該シェアについての閾値や総数などの情報が記録されています。その次の13単語(130 bits)がやっと当該シェアの値(128 bits)で、最後の3単語(30 bits)がチェックサムとなります。
チェックサムが長いため、SLIP39の誤り検知はBIP39と比べて非常に優秀です。また、例えばBIP39のシードフレーズを複数用意してマルチシグを構成する場合はDescriptorというマルチシグウォレットの各鍵などについての情報を別途保管する必要がありますが、SLIP39シードフレーズにはDescriptorの役割の一部が含まれているといえます。
秘密分散 vs マルチシグ、お手軽さは秘密分散に軍配?
SLIP39はシャミア秘密分散法で生成したシェアの管理を念頭に開発された規格だとわかりました。では、SLIP39+シャミア秘密分散法はBIP39+マルチシグよりお手軽なマルチシグ管理の実現方法ということなのでしょうか?
現在の限られたSLIP39エコシステムの中で使う分には十分にお手軽だとは思います。特に従来型のマルチシグはやりたくない・難しいと感じる人にとってのハードルを下げるのであれば存在価値は十分にあるかもしれません。(エコシステム自体は大手HWWだとTrezorのみ、大手ソフトウェアウォレットだとElectrum、Sparrow、Blue Walletくらいですが)
特にDescriptorの保管が必要ないという部分はめんどくささ、あるいは初心者にとっての落とし穴を大きく低減している気がします。従来型のマルチシグで12単語保管するだけでなく、各シードフレーズとともにDescriptorを印刷して保管するのは間違いなく面倒です。かといって手書きするにはリスクの大きいランダムな文字列が多く含まれていますし、文字数も多いです。もちろん、肝心な「鍵・シェアをどこに保管するか」といった部分は特に何も変わりませんが、ここのアクセシビリティは改善しているといえるでしょう。
ただしシャミア秘密分散法は従来型のマルチシグやFROSTといった閾値署名方式と異なり、シードフレーズの生成時には必ず1カ所に秘密鍵が存在し、署名を行うときも1カ所で秘密鍵を復元する必要があり、そこにセキュリティリスク=単一障害点があるといえます。もちろん、その反面として何回も署名を加える手間がかからないというメリットもありますが、セキュリティを最重視するなら鍵を集めることなく別々のロケーションで署名を追加することのできる従来型のマルチシグ管理や閾値署名方式が適していると思われます。
したがって、シャミア秘密分散法を使用したSLIP39はどちらかというとカジュアルユーザー向けな機能なのかなと思います。だとすると、お手軽さで勝負するのも間違ってはいないかもしれません。個人的には、現時点でははるかに広大なBIP39のエコシステムに価値を感じるため、Trezor Safe 3の既定がSLIP39ウォレットだったことに驚きました。
まとめ
・SLIP39はTrezorなど限られたウォレットが対応している、シャミア秘密分散法と組み合わせて使用するシードフレーズのエンコード方式で、広く普及しているBIP39とは互換性がない
・従来型のマルチシグやFROSTのような閾値署名方式と比べて手軽にウォレットの分散保管ができるが、シードフレーズの生成および署名時の復元という単一障害点があるためセキュリティ面で劣る部分がある
・個人的には対応しているウォレットが多いBIP39に魅力を感じるが、分散保管だけが目的で、かつ従来型のマルチシグは難しすぎる・面倒すぎると感じる層にとっては価値のある規格かもしれない
次の記事
読者になる
一緒に新しい世界を探求していきましょう。


ディスカッション