モジュール詳細:パスワード破壊

7桁のパスワードが弱いなんてことある?

あるパスワードの入力が要求される。

入力が必要なパスワードは、0-9の数字のみを使用した7桁の暗証番号である。

弱いパスワードという性質上、その安全性を保つためにいくつかの対策が取られている。

それにより、パスワードは毎秒ごとに変化する。

このモジュールは、不正アクセスをブロックするために厳密に設計されており、抜け道はどこにもない


見た目

このモジュールには三つのディスプレー、ナンバーパッド、クリア(CLR)ボタン、送信(SUB)ボタンがある。

ディスプレーには以下の内容が表示される。

  • 現在の数字と、(入力済の場合)入力された数字。
    (上のディスプレー)
  • 現在の時刻における二段階認証コード。
    (左のディスプレー)
  • モジュール上の経過時間。
    (右下のディスプレー)

ディスプレーに複数の情報が表示されている場合、そのディスプレーは5秒ごとに情報を切り替える。

クリアボタンは入力を消去し、送信ボタンは入力を送信する。

セクションI:上のディスプレー

このディスプレーは1秒ごとに更新され、現在の生値(Rv)が表示される。


セクションII:左のディスプレー

中央のディスプレーは「Two Factor Authentication Service Two」(2FAST™)と現在の実際の時刻を順番に表示する。

セクションII サブセクションI:2ファクタ認証サービス第二版 (2FAST™)

覚えている?戻ってきたよ。

ディスプレーには二段階認証用の六桁の数字が表示される。
安全上、数字は240秒ごとに再生成される。

ディスプレーの左に並んだ六つのバーは2FAST™がリセットされる前の残り時間を示している。

セクションII サブセクションII:現在の時刻

ディスプレーには、デスクトップに基づいて現在の実際の時刻が表示される。


セクションIII:左下のディスプレー

このディスプレーはモジュールが作動してからの経過時間を示している。

つまり、これは爆弾が起動した後、0からカウントアップする。

さらに、ディスプレーを押すと、上のディスプレーとともにこのディスプレーを一時停止することができる。
注意:これは、実際の経過時間を停止するものではない

セクションIV:事前調整

生値は以下の方程式で求められている。mod XはXで割った余りを示す。

Rv = [Sv + (If ✕ t)] mod 10,000,000


Sv = 数字生成時の初期値
If = 定数の倍率(-1,000,000 ≤ If ≤ 1,000,000)
= 経過時間(秒数)

セクションV:調整

すべてのシリアルナンバーの文字を取得し、それぞれを三十六進数の文字として扱い、十進数に変換する。

六つすべての数字を掛け合わせて、爆弾シリアルナンバー値(BSN)を取得する。いずれかの時点で0を乗算しようとする場合、代わりに1を乗算する

Sv内のすべての数字を取得する(0は無視する)。各桁の数字を掛け合わせて、モジュールシリアルナンバー値(MSN)を取得する。

以下の方程式を用いて、元の2FAST™から二つの値(TFA1TFA2)を獲得する。

TFA1 = ⌊ 2FAST™ ⁄ 1,000 ⌋ - 100 (小数点以下切り捨て)|| TFA2 = ( 2FAST™ mod 1,000 )の数字根

計算値の求め方を複雑にしすぎないために、Cvにおいては、一つの方程式にまとめている。

Cv = Rv + TFA1 * BSN + TFA2 * MSN + t

† ⌊x⌋は、xの切り捨て、つまりXの「整数部分」である。

セクションVI:最終的なスイッチの位置

現在の実際の日時^を用いて、以下の表を参照してどのスイッチが下位置でなければならないか探す。

日\月 01 02 03 04 05 06 07 08 09 10 11 12
0108152229 123232131112
0209162330 221112312332
0310172431 213212233313
04111825 122332321123
05121926 113333122113
06132027 113222131132
07142128 111312121323
分\時 00 01 02 03 04 05 06 07 08 09 10 11
12 13 14 15 16 17 18 19 20 21 22 23
002040 121212312321
012141 312311211232
022242 121333222123
032343 312312123331
042444 222213222313
052545 221313332132
062646 123312331332
072747 313111321131
082848 332132111311
092949 222232323213
103050 322231132323
113151 132231333311
123252 321231222322
133353 233231311332
143454 112233322222
153555 121312123132
163656 311132132232
173757 312121333312
183858 233333321212
193959 131111321232

^送信ボタンを押す時に求められる。

セクションVII:最終調整

通常モジュール数に対する解除済モジュール数の比率^を取得し、それに最終的な値を掛ける。

この時点で求めた値とCvを取得し、以下の方程式を参照する。

最終値Fv = Cv ✕ 解除比* ⌋ % 10,000,000

*解除比は、全モジュールに対する解除モジュールの割合として定義され、これはmax( ⌊ 解除済モジュール数モジュール数 ✕ 100%⌋, 1%)で求められる。max(X,Y)はXかYのうちより大きい方の値を返す関数である。


セクションVIII:送信時

送信前に、必要に応じて0を先頭に追加する。
セキュリティを高めるためパスワードは、表示された経過時間の下一桁が、以下の表で最初に一致するルールに従う場合のみ送信できる。

下一桁 条件
0 シリアルナンバーの最後の数字がゼロ
1 シリアルナンバーの最初の数字が一
2 「双子(The Twin)」モジュールが存在する。
3 2FAST™が3の倍数である
4 バッテリーが4つより多くある
5 2FAST™が5の倍数である
6 解除済モジュールの比率が60%以上
7 「SEVEN」といずれかの英字が共通しているインジケーターがある
8 ポートが8個より多くある
9 (常に該当する)

正しいパスワードを正しいタイミングで送信すると、モジュールは解除される。いずれかのボタンが押された時点で、左のディスプレーには「INPUT」と表示される。

間違った入力が送信されると、ミスが記録され、モジュールが完全にリセットされる
桁数が大きすぎる数字を送信しても、ミスが記録され、リセットされる。

^送信ボタンを押す時に求められる。

セクションIX:リセット時

モジュールは40分ごとに完全にリセットされる。

一回以上リセットされている場合、左のディスプレーに追加情報が赤文字で表示される。

ディスプレーには、新しい情報がいつ生成されたかが表示される。

新しいSvが生成されたため、Rvを求める際の経過時間は、ゼロにリセットされる。表示された経過時間を他の計算に使用すること。