パスワードとは?知識情報で本人を確かめる仕組みと弱点

多くのWebサービスでは、ログインのときにIDとパスワードを入力します。どちらも入力欄に打ち込むものですが、実は役割がまったく違うものです。
本記事では、本人を確かめる3つの要素のうち、知識情報にあたるパスワードの仕組みと弱点を解説します。
パスワードとは
パスワードは、本人だけが知っている文字列を入力させて、本人かどうかを確かめる方法です。多要素認証で紹介した3つの要素のうち、知識情報にあたります。
暗証番号(PIN)や秘密の質問の答えも、同じ知識情報の仲間です。どれも「知っていること」を示すだけなので、ほかの人に知られた時点で、その人も本人になりすませてしまいます。
IDとパスワードの違い
ログイン画面には、IDとパスワードの2つの入力欄が並んでいます。下の図に、それぞれの役割を示しました。
IDの役目は、「私は誰か」を名乗ることです。これを識別と呼びます。メールアドレスやユーザー名がIDになることが多く、ほかの人に知られても困らない値です。そのため、IDは知識情報にはあたりません。
パスワードは、名乗った人が本当にその本人かを確かめるためのものです。これを認証と呼びます。本人だけが知っている秘密なので、ほかの人に知られてはいけません。
サービスがパスワードを確かめる仕組み
サービスは、受け取ったパスワードが正しいかを、保存しておいた値と見比べて確かめます。図の左が利用者、右がサービスです。
きちんと作られたサービスでは、パスワードをそのまま保存していません。ハッシュ関数という計算でパスワードを別の値に変換し、その値だけを保存しています。ログインのときは、送られてきたパスワードを同じ計算で変換し、保存した値と同じかを比べる仕組みです。
ハッシュ関数で変換した値から、元のパスワードを計算で戻すことはできません。それでも、短いパスワードや、よく使われるパスワードなら、候補を片っ端から変換して見比べれば当てられてしまいます。サービスから保存した値が漏れたときに、短いパスワードほど危ないのはこのためです。
使い回すと何が起きるか
パスワードでいちばん被害が広がりやすいのは、同じパスワードを複数のサービスで使い回したときです。下の図に、1つのサービスから漏れたIDとパスワードの組が、ほかのサービスで試される流れを示しました。
攻撃者は、漏れたIDとパスワードの組を、ほかのサービスのログイン画面でそのまま試します。多くの人は同じメールアドレスをIDに使うので、パスワードまで同じなら、そのサービスにも入られてしまうでしょう。
自分では防げないサービス側の漏えいでも、パスワードをサービスごとに変えておけば、被害はそのサービスだけで止まります。
長くしても防げないこと
パスワードを長くランダムにすれば、推測や総当たりで当てられる心配はほとんどなくなります。アメリカ政府機関向けの認証の基準(NIST)が、パスワードだけでログインさせる場合に求める長さは、15文字以上です。
ただし、長さで防げるのは「当てられること」に限られ、長くしても変わらない性質が2つ残ります。
1つ目は、毎回同じ値をサービスへ送ることです。偽サイトに入力したり、入力を記録するマルウェアに読み取られたりすれば、盗んだ人は同じ値でログインできてしまいます。
2つ目は、人が入力する値であることです。本物そっくりのサイトに入力するか、電話で聞かれて答えてしまうかは、人の注意に頼るしかありません。デジタル庁の本人確認のガイドラインも、パスワードはフィッシングに弱く、利用者の行動や判断に頼るため、サービス側での根本的な対策が難しいとしています。
この弱点を補うのが、パスワードとは別の種類の要素を組み合わせる多要素認証です。送る値そのものをなくしたパスキーなら、この2つの性質がありません。
製品での使われ方
長くランダムで、サービスごとに違うパスワードを人が覚えるのは無理があります。そこで使うのが、パスワードを作って保存し、ログインのときに入力してくれるパスワードマネージャーです。
このサイトでは、パスワードマネージャーの1つである1Passwordを例に、ログイン情報を保存する手順を紹介しています。
参考にした一次情報
NISTは、アメリカ政府の技術標準を作る研究機関です。