次の木曜が基本情報技術者の試験日です。昨日アルゴリズムに取り掛かり、「今回ひょっとしてひょっとしたら何かの偶然で受かっちゃったりして」という考えがきれいに一掃され「気長にやろう」と悟ったところで最後の土日はあせることもなくのんびり淡々と過ごしております。
そもそも「基本情報処理技術者」の試験だと思っていたけど「基本情報技術者」だった。試験名さえ正確に認識していなかったという。。。
さて、銀行のネットバンクをロックアウトしてしまい(絶対にパスワード間違ってないのに~)、ワンタイムパスワードが有効であればネットでログインパスワードの初期化ができたのにそちらも有効ではないとなり、結局窓口に行く羽目になりました。で、ふと、ワンタイムパスワードについて、どうゆうしくみ?と気になったので調べたのでその記録です。
正確な情報ではなく、低次元な自分の頭に落とすために、低次元言語にしてどうにか理解しようと努めたものなので参考にはしないでください。じゃあ書くなよって。すみません。てへ
ワンタイムパスワードとは
主にネットバンキングなど、セキュリティを強固にしなければいけない場面で使われる。最近ではリモートワークの社内システムを利用する際にも使われることがある。ワンタイムパスワードとは「一度きりのパスワード」である。パスワードの有効期間も1分や30秒などと短い。なので第三者による盗み見等を防ぐ有効な手段となる。
ワンタイムパスワードには2種類
①タイムスタンプ認証方式
②チャレンジレスポンス認証方式
①タイムスタンプ認証方式(時刻同期方式)
トークンやスマホアプリのトークンでワンタイムパスワードを表示することが多いです。
トークンとはワンタイムパスワードを表示する小型の端末のことです。ボタンをポチと押すとワンタイムパスワードが表示されます。このパスワードは一定期間だけ有効です。
銀行のネットバンキングで想像すると
預金者はトークンを持っています。そのトークンのシリアルナンバーは銀行側が知っています(サーバーが知っている)。トークンのシリアルナンバーと預金者を紐づけて管理しています。
個々のトークンごとにサーバーは時刻ごとにワンタイムパスワードを生成します。
この時間にはこのトークンはこの番号を表示するよ、ということをサーバーは認識しています。
たとえばシリアルナンバー200番のトークンは2:05~2:06の間のワンタームパスワードは「12345」だったとします。
シリアルナンバー200番のトークンを持っている預金者Aさんがネットバンキングの手続き中ワンタイムパスワードの入力が必要になり、2時5分10秒にトークンのボタンをぽちっと押すと「12435」が表示されます。
預金者は「12345」をネットバンキングで入力します。
サーバー側では預金者Aさんのネットバンキングの手続きで、Aさんのトークン200番のワンタイムパスワードは「12345」、入力されたワンタイムパスワードは「12345」なので一致、認証成功!手続き進めてOK!という流れでしょうか。
銀行のワンタイムパスワードのアプリもよく見るとナントカIDというのが上の方に表示されています。このナントカIDを銀行側が私の口座と紐づけているんでしょうね。
Aさんのパスワードを知っている(I Know)
Aさんのトークンを持っている(I Have)
の二要素認証となるそうです。
②チャレンジレスポンス認証方式
こちらがよくわからなかった。
1.ユーザーが認証サーバーにチャレンジを要求する
2.チャレンジが送られてくる(意味のない文字列だったり数字だったり)
3.あらかじめ共有した計算方法に従い、チャレンジを計算する
4.算出した答え(レスポンス)を認証サーバーに送る
5.認証サーバーでも共有している計算方式でチャレンジを計算、ユーザーが送ってきたレスポンスと一致していれば認証成功
送られてくるチャレンジは毎回違うので、ワンタイムパスワードということ。
こんなかんじかしらと想像
Aさんは今日はテレワークです。
テレワーク端末の電源を入れ、社内イントラネットにログインしようとします。
ユーザーを入力します。
するとサーバーからチャレンジ(abcd12345とかなんだかいみのわからない文字の羅列)が送られてきます(Aさんは全くそのことに気づきません。テレワーク端末さんだけがひそかに認識します)
テレワーク端末さんはチャレンジをぐちゃぐちゃっと計算してレスポンスをだします。(レスポンスは1a2b3c4d5だったとします)
Aさんはパスワードを入力します(p10502sというパスワードだったとします)
テレワーク端末さんはパスワードにレスポンスをくっつけてサーバーに送信します。
(おくる文字列はp10502s1a2b3c4d5)
サーバーも同様に送ったチャレンジをぐちゃぐちゃっと計算してレスポンスを出し、Aさんの登録してあるパスワードとくっつけて「p10502s1a2b3c4d5」という文字列を作成します。送られてきたものと答え合わせをして一致を確認、認証成功、めでたくAさんはログインすることができました。
もし、第三者がログインIDとパスワードをのぞき見したとしても、パスワードにはレスポンスがくっついていて、パスワードそのものはどこからどこまで?というのが分からない。だからより安全、ということでしょうか。
こちらも
Aさんのパスワードを知っている( I Know)
会社のテレワーク端末を持っている(I Have)(たぶんテレワーク端末にレスポンスを出す関数が入っているのかと)
このようにテレワーク端末とかに使われているのでしょうか。
ICカード認証にも使われているとか?いないとか?(よくわからなかった)社員証とピッとやってドアが開くとき、ピッとやる端末と社員証のICチップとの間でこのようなやりとりが行われているのでしょうか???
上記、あくまで「こんな感じ?」と私が想像したものなので、事実とは違うかもしれません。なんとなく、な感じですが、なんとなく自分の中では納得できたのでどことなくすっきり。
グダグダした文章ですみません。お読みいただきありがとうございました。
2021.3.8加筆
コメント