パスワードの最適変更間隔とその定量的効果の評価

twitter:@pseudoidentifie

CC0

簡単のために、ユーザが候補とするパスワード選択空間と攻撃者が想定する攻撃パスワード空間は同一とし、個のパスワード候補が含まれるとする。また、攻撃者は、パスワード空間中から、ランダムに攻撃パスワードを順次選択し、攻撃を行うものとする(本攻撃方法は決して典型的な攻撃方法とは限りません)。また攻撃は、秒間隔で実施されるものとする。

ユーザがパスワードの変更を行わない場合、秒で、全パスワードの攻撃が可能であり、ユーザのパスワードを攻撃者は知ることができる。攻撃者がパスワードを知るのにかかる平均時間は以下となる。

次に、ユーザは、より小さい自然数として、秒間隔でパスワードの定期変更を行う場合を考える(ユーザは個のパスワード候補からランダムにパスワードを選択するものとする)。また、簡単のために、ユーザがパスワード定期変更を行った直後から攻撃が始まった場合を考える。

そうすると、パスワード変更が行われるまでに回の攻撃が行われ、それによりパスワードが攻撃者に知られるまでにかかる時間の期待値は以下となる。

次に、パスワードが変更された以降について計算する。まず、回目の攻撃によりパスワードが判明する確率は、以下のようになる。

の場合、回目の攻撃によりパスワードが判明する確率は、以下のようになる。

以下同様である。したがって、初回のパスワード変更から2回目のパスワード変更までの間にパスワードが判明する時間の期待値は以下となる。

続いて、2回目のパスワード変更が行われた直後の攻撃によりパスワードが判明する確率を計算する。まず、初回のパスワード変更までにパスワードが判明する確率は以下となる。

初回のパスワード変更から2回目のパスワード変更までにパスワードが判明する確率は以下となる。

したがって、

となる。2回目のパスワード変更から3回目のパスワード変更までの間にパスワードが判明する時間の期待値は以下となる。

同様に、

であるから、

となる。

ここから、以下となることが類推される。

これは、以下から帰納的に正しいことがわかる。

-=

従って、

となる。

パスワード定期変更を行う際の攻撃者(一通りパスワードを試してもパスワードが分からない場合には繰り返し攻撃するとする。)がパスワードを知るのにかかる平均時間は以下となる。

は本来離散であるが、簡単のため、連続とみなして微分すると、以下のようになる。

したがって、は、において最大となり、最大値は以下のようになる。

が十分に大きければ、は無視できるため、となり、最適な間隔でパスワードを変更すれば、パスワードが攻撃者に知られるまでにかかる平均時間を約2倍に長くすることできることがわかる。

たかだか効果は2倍であるため、パスワード長を1文字長くするよりもパスワード定期変更の効果ははるかに小さいといえる。

具体例①:4桁の数字パスワードで、10秒間隔で攻撃ができるサイトの場合

23.5分間隔でパスワードを変更することが最適であり、その場合、平均27.4時間で攻撃者にパスワードがわかる。ちなみにパスワードを変更しないと、平均13.9時間で攻撃者にパスワードがわかる。


具体例②:辞書に載っている10万語を2語組み合わせてパスワードとし、10秒間隔で攻撃ができるサイトの場合

16日間隔でパスワードを変更することが最適であり、その場合、平均3,171年で攻撃者にパスワードがわかる。ちなみにパスワードを変更しないと、平均1,585年で攻撃者にパスワードがわかる。

16日間隔が最適ではあるが、1万日(約27年)間隔で変更しても、それほど定期変更の効果は変わらないので、変更する気持ちさえあれば効果があるともいえる(なにかおかしい)。