基本情報技術者 2016年 春期 午前(科目A) 問40
問題文
Webシステムのパスワードを忘れたときの利用者認証において合い言葉を使用する場合、合い言葉が一致した後の処理のうち、セキュリティ上最も適切なものはどれか。
選択肢
ア:あらかじめ登録された利用者のメールアドレス宛てに、現パスワードを送信する。
イ:あらかじめ登録された利用者のメールアドレス宛てに、パスワード再登録用ページへアクセスするための、推測困難なURLを送信する。(正解)
ウ:新たにメールアドレスを入力させ、そのメールアドレス宛てに、現パスワードを送信する。
エ:新たにメールアドレスを入力させ、そのメールアドレス宛てに、パスワード再登録用ページへアクセスするための、推測困難なURLを送信する。
🔒 解説は解答すると表示されます
合い言葉によるパスワード再発行フロー【午前解説】
正解の理由
合い言葉が一致した後に最も適切なのは イ です。理由は以下の通りです。
- 既にシステムに登録されたメールアドレス宛に送ることで、アカウント所有者へ直接連絡が届く可能性が高い点。
- 「パスワード再登録用ページへアクセスする推測困難なURL」を送る方式は、実際には一時的かつ限定的なトークン(ワンタイムトークン)を利用するため安全性が高い点。
- 現パスワードを送信する方法は、そもそもパスワードを平文で保持していることを前提とし、データベース設計や漏洩時のリスクが甚大であるため不可とされます。
この方式では、トークンは十分に長くランダムで一回限り、有効期限を短く設定し、HTTPSで配信することが前提です。
解法ステップ
- 選択肢が「現パスワード送信か再登録用URL送信か」を判定する。
- 「どのメールアドレスへ送るか」を確認する(登録済か新規入力か)。
- セキュリティ原則に照らして、平文パスワード送信は即排除、既登録メールへ一時トークン付きURLを送るのが妥当と判断する。
- 「推測困難なURL」を送る選択肢で、かつ既登録メールを使うものを選ぶ。
選択肢別の誤答解説
- ア: あらかじめ登録された利用者のメールアドレス宛てに、現パスワードを送信する。
- 誤り。現パスワード送信は平文保持や中間者攻撃、メール漏洩時のリスクが高く実務的に不可。パスワードは不可逆ハッシュで保管すべき。
- イ: あらかじめ登録された利用者のメールアドレス宛てに、パスワード再登録用ページへアクセスするための、推測困難なURLを送信する。
- 正解。登録済メールへワンタイムかつ有効期限付きのトークン付きURLを送る方式は安全性が高い。
- ウ: 新たにメールアドレスを入力させ、そのメールアドレス宛てに、現パスワードを送信する。
- 誤り。新しいメールを攻撃者が指定できるためアカウント乗っ取りが可能。かつ現パスワード送信という設計ミス。
- エ: 新たにメールアドレスを入力させ、そのメールアドレス宛てに、パスワード再登録用ページへアクセスするための、推測困難なURLを送信する。
- 誤り。URL方式そのものは良いが、送付先を利用者が入力可能にすると攻撃者が自分のメールを指定して不正にリセットできる。
よくある誤解
- 「合い言葉で本人確認できているから現パスワードを送っても良い」:合い言葉の照合だけで平文パスワード送信を許すと、パスワードが安全に保管されていないことを意味し重大な設計ミスです。
- 「新しいメールアドレスを入力させれば問題ない」:利用者が新しいメールを入力する方式は、攻撃者が自身のメールを指定してアカウントを乗っ取るリスクを生みます。
- 「URLを送るだけで十分」:URL自体が推測困難でも、トークンの使い回し、防御策(有効期限、単一使用、IP監視)がなければ安全性は大きく低下します。
補足コラム
安全なパスワード再設定の実装ポイント(実務的ベストプラクティス):
- トークンは十分な長さとエントロピー(例: 128ビット相当)を持たせ、URL-safeに生成する。
- トークンは単一使用(use-once)にし、再利用を拒否する。
- 有効期限は短め(一般的に15分〜1時間程度)とする。
- リセットURLはHTTPSで提供し、クリック後は認証済みの再設定フォームへ遷移させる。
- パスワードは常にハッシュ(bcrypt, Argon2等)で保存し、平文は保持しない。
- レート制限やアカウントロック、通知メールで不正試行を監視する。
- 可能なら多要素認証(MFA)を導入し、再設定後に追加の確認を行う。
参考となる簡易トークン生成(Python例):
import secrets
token = secrets.token_urlsafe(32) # 十分に長く安全なURLセーフトークン
FAQ
Q1: なぜ現パスワードを送ってはいけないのですか?
A1: 安全なシステムはパスワードをハッシュ化して保存し、平文は保持しません。平文送信は漏洩リスクが極めて高く、設計上の重大問題です。
A1: 安全なシステムはパスワードをハッシュ化して保存し、平文は保持しません。平文送信は漏洩リスクが極めて高く、設計上の重大問題です。
Q2: 合い言葉が本人確認で十分ではないのですか?
A2: 合い言葉は補助的な認証に過ぎず、単独ではソーシャルエンジニアリングや推測に弱いです。合い言葉成立後も登録済メールへのワンタイムURL等で追加の保護が必要です。
A2: 合い言葉は補助的な認証に過ぎず、単独ではソーシャルエンジニアリングや推測に弱いです。合い言葉成立後も登録済メールへのワンタイムURL等で追加の保護が必要です。
Q3: ユーザが登録メールを忘れている場合は?
A3: サポート窓口で本人確認(公的書類等)を経て手動で対応するのが安全です。自己申告で新メールをそのまま受け付けるのは危険です。
A3: サポート窓口で本人確認(公的書類等)を経て手動で対応するのが安全です。自己申告で新メールをそのまま受け付けるのは危険です。
関連キーワード: パスワードリセット、合い言葉認証、メール送信、ワンタイムトークン、トークン生成、ハッシュ化、ワンタイムURL、多要素認証、レート制限、パスワード再登録

\ せっかくなら /
基本情報技術者を
クイズ形式で学習しませんか?
クイズ画面へ遷移する→
すぐに利用可能!

