0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

【除き見対策】「第2パスワード」による認証方式

0
Last updated at Posted at 2026-07-02

「パスワードを2つも持つなんて危険では?」

そう思われるかもしれません。

しかし、第2パスワードを通常時は利用できず信頼済みブラウザだけ利用可能に限定すれば、覗き見対策として利用価値があるかもしれません。

今回は、IndexedDBを利用した「第2パスワード方式」を考えてみました。

IndexedDB部分は信頼済みブラウザの判定として簡易的に使っているため、デバイストークンを用いた仕組みを使える人は、そちらのほうが良いです。

・HttpOnly Cookie
・Secure Cookie
・SameSite Cookie

あたりが使える人はそちらをご利用ください。

今回はパスキーは採用しませんでした。パスキーは非常に優れた仕組みですが、サービスや利用環境によっては導入・利用のハードルがあると感じたためです。優れたAPIが多い印象なので、特に利用面です。また、デバイス認証についても有力な選択肢ですが、「どこまでを同一端末として扱うか」や、ブラウザデータの削除・移行時の扱いなど、運用面で考えることが多いと感じました。 

仕様

通常は今まで通りのパスワードでログインします。

ただし、以下の条件を満たした場合のみ、第2パスワードでもログインできます。

  • IndexedDBに認証情報が保存されている
  • 過去のログイン成功時にサーバーから取得したランダム値が保存されている
  • サーバー側のランダム値と一致する
  • 利用者が「第2パスワードを有効にする」をONにしている

ログイン画面には

「このブラウザでは第2パスワードが利用できます」

と表示します。

初回ログイン

初回アクセス時は次のような流れになります。

  1. ログイン成功したらサーバーがIndexedDB保存用のn文字(Base62)を返却する(この記事では、仮に6文字とします。多い方が安全です)
  2. ブラウザはそれをIndexedDBへ保存する
  3. 次回以降、IndexedDBに値がある場合のみ、第2パスワードが利用可能になる。フォーム送信時は、サーバー側でその個人とIndexedDBの値が合っているか判定し、誤っている場合はリジェクトする

サーバー側で保持するもの

サーバー側では、

  • 通常パスワードのハッシュ
  • 第2パスワードのハッシュ
  • ランダムな6文字(Base62)

のみ保持します。

第2パスワードとは

第2パスワードは通常パスワードとは別に設定するパスワードです。

例えば、

通常パスワード

MyPassword123

第2パスワード

BlueCat987

のように、全く別の文字列にできます。

第2パスワードでログインした様子を見られても第1パスワードの中身が分からない

事がメリットです。

ログインには「第1パスワード」か「第2パスワード+何文字か分からないIndexeddbの文字列」のいずれかが必要になるのです。

覗き見だけではこれら2つのいずれも満たせません。

通常ブラウザでは通常パスワードのみ利用でき、

信頼済みブラウザではどちらでもログインできます。

3文字省略方式との比較

メリット

  • サーバーに省略後ハッシュを複数保存しなくてよい
  • 第2パスワードは完全に独立した文字列にできる
  • 「3文字だけ推測すればよい」という状態にならない

デメリット

  • 第2パスワードを覚える必要がある
  • パスワードを2つ管理することになる
  • 認証できるパスワードが2種類になる

最大のメリット

例えば、

  • 電車内でログインしている様子を録画された
  • 後ろからキーボード入力を見られた
  • 記憶力の良い人に入力内容を覚えられた

という状況でも、第2パスワードでログインした場合に再現するのは、かなり困難です。

セキュリティ面

この方式も、

認証強度そのものを高める技術ではありません。

認証可能な入力パターンが増えるため、

IndexedDBが取得されるような攻撃では、

通常パスワードしか存在しない場合より不利になります。

3文字省略方式との比較

項目 3文字省略 第2パスワード
分かりやすさ ◎ 「先頭3文字まで省略できます」と表示するだけ ○ 「第2パスワードが利用できます」と表示
入力の手間 ◎ 少ない △ パスワードを2つ覚える必要がある
覗き見対策 ○ パスワードの一部が見えない ◎ 第2パスワードでログインした場合はログイン困難
IndexedDB流出時 △ 4通り試せる △ 第2パスワードも候補になる

まとめ

この方式も、

パスキーや多要素認証を置き換えるものではありません。

パスキーや多要素認証が利用できる状況であれば、そちらを優先する方が望ましいでしょう。

一方で、

  • 先頭3文字省略方式
  • 第2パスワード方式

はどちらも、

信頼済みブラウザ限定で、覗き見対策や入力負担を工夫するための独自アプローチ

としては面白いと感じました。

どちらを採用するかは、

  • 覚える情報を増やしたくないなら「3文字省略」
  • 覗き見対策に特化するには第2パスワード

という考え方で選択できると思います。

0
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?