
更新)暗号辞表は何文字まで削れるのか?
暗号表が見られてしまった場合、辞書攻撃によってさらにパターンは絞られます。少なくとも10^38オーダーである128bitエントロピーが必要であると考えると、最低でも暗号表に必要なワードリスト数は一体どのくらいなのでしょうか。また、頻度の低いひらがなの組み合わせが削られることも考慮する必要があります。
500ワード以上の中に24ワードを隠す
チェックサムを削ると大まかに500^23=1.2*10^62のサイズになり、安全な気もします。さて、このような表を作りたい場合、先に合言葉を作ってしまいそれに登場するひらがなだけで構成するという方法がまず思い浮かびます。
「わたしにはあなたをせっとくするじかんがありません」これから重複を削り、あいうえお順にしてコンマ区切りで入力します。この要領で残りの24文字も重複のないよう気をつけて作ってしまいましょう。
23文字で作った場合の表のサイズ(529単語)
この方法は推奨か?
あくまでこれは文字量をどうしても減らしたい人向けの記事であり、なるべく2048ワード全て使い切る方がそれは安全に決まっています。ただ、表が膨大になるのは否めないため、どうしても削りたいのであれば、入力に気をつけて、カタカナやその他の文字を使って短くするのも不可能ではないといったところです。基本的に
(表の単語数)^(シードフレーズの単語数)
が、必ず10^39以上になるように
これは最低ラインです。ただし、ひらがなを例えば40%減らすことによって絞られる日本語の言葉は以下のようにもっとガクンと少なくなります。
これは仮の推定ですが、およそ40%の文字種を削るだけで10%以下のパターン(5万>>約4千)に絞られることがわかります。
4000に絞られ辞書攻撃されたとして、合言葉に単語が15程度入っていれば(合言葉はニーモニックと違い重複を許さない順列)
nPr = 1.0458*10^54
となりこれは安全ですが、8程度しか単語がなかった場合
nPr = 6.5078*10^28
となり、これはよくないです。
公式に薦められるのはあくまで2048ワード全て使うことです。
以上