【UI/UX談義】 ワンタイムパスワードの入力項目をパスワードタイプに設定する必要があるか?
こんにちは。CATエヴァンジェリスト・石井優でございます。
今回は、ワンタイムパスワードの入力項目の表現についてのお話です。
CAT開発チームでは日々機能開発時に様々なディスカッションをして、どうしたら良い機能をお届けできるかを討論しています。
今回はCATのログイン時におけるワンタイムパスワード機能追加の局面であったディスカッションを紹介します。
ベーシックで些細な話ではありますが、UI/UXを考える上でのヒントになればと思います。
OTPはマスクする必要があるのか?
現在CATではログイン時のワンタイムパスワード機能(2ファクター認証)を設計しています。
認証時、メール宛にワンタイムパスワードを送信し、そこに記載されたパスワードを使い本人確認を行います。
その上で入力項目にはパスワードタイプの設定をするかどうか?という議論がありました。
こんな感じで入力した数字をマスクするか否か?パスワードの一種なので隠したほうが良いのでは?という議論です。
結果としては隠さずそのまま表示させることになりました。
直感的には大体のプロダクトでは表示していることが普通という感じはありますが、議論になった以上それがどうしてそうなっているのか?を考える必要があります。
次のように考えました。
パスワードフィールドはそもそもなぜマスクするのか?
まずパスワードフィールドがなぜ*とか⚫︎で隠されるのでしょうか。
これはショルダーハッキングをブロックするためです。
ショルダーハッキングとは、ショルダー(肩)の背後から覗き見する物理的にパスワードを盗み取る行為です。
もしパスワードを慣れない手つきでせっせと打っていたとき、後ろにパスワードを盗み取りたい人がいたらどうでしょう。パスワードのすぐ上に書かれているIDとパスワード、どちらもそのまま表示されていた場合。盗み取りたい人は目で見るかカメラで撮るかして盗み取っていきます。
だからパスワードは古来からマスクされているわけですね。
マスクすることでの弊害
反面、パスワードフィールドというのは入力ミスを誘発する材料でもあります。
自分があっていると思っているパスワードを打ってもパスワードの入力が誤っていたということは誰しもありますよね。
ソフトウェアのサポートをしているとログイン画面というのはなかなかシビアなもので、パスワードマネージャーなどを利用せずに入力をするとかなりの確率でミスをするという体感があります。
文字を入力するときに関わる要素としては次のように多いからと考えています。
caps lockがONになっていて英大文字が打たれる
小文字を打っていたと思ったら全部大文字だった誤って全角で打っている
たまにパスワード欄でも全角を打ってしまうIMEがあると認識しています。コピペしたと思ったらしてない
メモ帳などからコピペしたと思ったらできてなくて全然違うものを貼り付けていたタイポ
o(オー)と0(ゼロ)など間違いやすい文字やキーボードの隣の文字を打っていた
ましてや表示されているメールアドレスでさえ、正しく入力したと思ったら - とか . とか入力し忘れて正しく認証できないということも多々あります。本当に多い。
そのため、自分が打ったパスワードを一時的に確認できるようになっているサービスもちらほら出てきました。(これがあるだけでもサポートコストが軽減しそうですね)
打ち間違いという観点ではパスワードは見えたほうが良い時もあるということとも言えそうです。
それでもパスワードについてはショルダーハッキングの観点からマスクせねばならない、だから全てと言っても良いパスワードの項目はマスクされています。
なぜか。
パスワードは有期で変更があったとしても、原則その期間は固定であり盗み取って使えてしまうからです。
ここにつきます。
ワンタイムパスワードはマスクする必要がない理由
さて、ここらで元の議論に戻ることができます。
ワンタイムパスワードはマスクする必要があるでしょうか?
この問いは次のようにも置き換えられます。
ワンタイムパスワードを盗まれたとして使えるのか?
答えはNO。
パスワードが有効なのは数分だから
ワンタイムパスワードの名の通り、このパスワードが有効な期間はほんの数分です。
仮に攻撃する意図を持ちIDとパスワードを知っていたとして、人間によるショルダーハッキングという観点でこのワンタイムパスワードを盗み使うには
一日中その人を監視してログインしたタイミングに居合わせる
ついでにログインしたら即座に一緒にログインする
ということが必要です。 ログイン操作をするタイミングというのはだいぶ限られていますので、そのタイミングを見計らって監視をするのは相当な労力です。
そもそもそうした攻撃の意図がない人が、ショルダーハッキングによってワンタイムパスワードを知ったとしても、すぐに使えなくなってしまいます。だからマスクする必要がないわけです。
打ち間違いをなるべく無くす必要があるから
その上、ワンタイムパスワードは毎回違うのでパスワードマネージャーに登録しようがありませんから手で打つ必要があります。
いくら数字数桁であっても先の通り、手で打つ場合はタイポの可能性が大きいですのでマスクせずに見えていたほうがユーザーとしても確実なものを入力できます。
ワンタイムパスワードはマスクする必要がない理由にはこういう背景があるということでした。
ではでは!
《おすすめマガジン》
SHIFTへのお問合せはお気軽に
SHIFTについて(コーポレートサイト)
https://www.shiftinc.jp/
SHIFTのサービスについて(サービスサイト)
https://service.shiftinc.jp/
SHIFTの導入事例
https://service.shiftinc.jp/case/
お役立ち資料はこちら
https://service.shiftinc.jp/resources/
SHIFTの採用情報はこちら
https://recruit.shiftinc.jp/career/
PHOTO:UnsplashのTowfiqu barbhuiya