テクノ雑学
第115回 セキュリティトレンド - ワンタイムパスワードの仕組み -
自宅でインターネットを使ったオンラインバンキングやネットショッピングなどはとても便利ですが、IDとパスワードを悪意ある第三者に知られてしまうと、知らないうちに口座からお金が引き出されたり、勝手に買い物をされたりする危険があります。IDやパスワードによる認証をより強固にするために、最近広まっているのが、ワンタイムパスワードです。
バレたら使われてしまう、IDとパスワード
銀行のATMでお金を引き出す時には、口座番号が記録されたキャッシュカードと、自分だけが覚えている暗証番号を使います。銀行のホストコンピュータは、口座番号と暗証番号の組み合わせで、このカードを利用している人が間違いなく本人であるということを確認し、ATMから出金します。
銀行のATMに限らず、コンピュータネットワーク上でサービスを利用する時の基本は、本人を識別する「ID」(銀行のATMの場合は、口座番号)と、パスワード(銀行のATMの場合は暗証番号)の組み合わせで、本人を確認することです。しかし、これは裏を返せば、「IDとパスワードを第三者に知られてしまうと、その人が自分自身のふりをして、サービスを不正に利用できる」ということになります。
自分で口にしたわけではないのに、パスワードを他人に知られてしまうということは、そうそうないように思えるかもしれません。しかし、例えば単純で短すぎるパスワード(例:数字の1234)などは、あてずっぽうで入力しても正しく認証されてしまう可能性が高いですし、覚えやすいようにと自分や家族の名前の一部を使っていたり、住所の一部を使っていたりすると、免許証を入れた財布を拾った人には簡単に推測されてしまいます。
また、最近多いのが、銀行や大手ショッピングサイトからの発信を装った電子メールで「パスワードの変更をお願いします」等といって偽のウェブサイトにアクセスさせ、そこでパスワードを入力させて盗み取るといった手口も広がっています。あなたのIDやパスワードが盗まれてしまう危険は、日常の中にたくさん潜んでいるのです。
こうした危険を避けるのに有効なのが、IDと本人が記憶しているパスワードに加え、別の要素を追加して認証を行う「二要素認証」です。追加する要素として、指紋、虹彩、静脈などを使う「生体認証」は、銀行やビルの出入り口では利用されはじめています。しかし、生体認証は、専用の読み取り装置が必要になるため、ネットワーク経由でサービスを提供するオンラインバンキングやネットショッピングには適していません。
そこで、インターネット経由で二要素認証を提供するための仕組みとして広く使われているのが、「ワンタイムパスワード」という使い捨てパスワードです。
■ 使い捨てのパスワードを知るための仕組み
ワンタイムパスワードの特徴は、「1回使ったパスワードは無効になる」ということです。このようなパスワードを利用するためには、まず、「今、サーバーに受け付けてもらえるパスワードが何なのか」をユーザーが知るための仕組みが必要です。
ワンタイムパスワードでは、ユーザーに「今使えるパスワード」を知らせるために、「トークン」というものを利用します。トークンにはさまざまな形がありますが、よく見かけるのは、キーホルダーにつけられるようなサイズの小さな装置に、液晶とボタンがついたものです。
あらかじめ、トークンのシリアル番号等のユニークな番号と利用者のIDがサーバー側で関連付けられており、ボタンを押すと、そのトークンに関連付けられたIDのユーザーに、今使えるパスワードが表示されます。万一、トークンを落としたり失くしたりしても、IDとユーザーが決めたパスワードがなければサービスを利用することはできません。また、表示されたパスワードで認証に成功すると、ただちにそのパスワードは破棄され、使えなくなります。
ワンタイムパスワードを表示するための専用の機器を「ハードウェアトークン」といいますが、同じ機能を持たせたソフトウェアを携帯電話、PDA、ゲーム機、パソコンのブラウザーなどで実行する「ソフトウェアトークン」もあります。
■ パスワードを作る2つの方式
ワンタイムパスワードを正しく生成するために使われる方式としては、「時刻同期方式」と「チャレンジ&レスポンス方式」の2つが主流です。
時刻同期方式では、パスワード生成のための「種」として、現在の時刻を使います。あらかじめ、サーバーとトークンで、時刻に基づいてパスワードを算出する共通の計算式を記憶しておきます。トークン側では、ボタンが押されると、その時刻に合わせてその時に有効なパスワードを表示します。サーバー側では、入力されたパスワードと、現在有効なパスワードを照らし合わせ、正しければ認証します。
チャレンジ&レスポンス形式は、利用者からサーバーに「認証して欲しい」というリクエストがまず送られます。それを受けたサーバーは、ユーザーに対して、「チャレンジ」としてランダムな文字列を返します。ユーザーは、そのレスポンスに基づき、あらかじめ決められている計算式により、実際に使用するパスワードを計算して「レスポンス」として入力します。サーバー側では、チャレンジから計算したレスポンスが、ユーザーが入力したレスポンスと一致していれば、認証します。
複雑な仕組みに思えますが、例えば「マトリックス認証」も、ワンタイムパスワードの一種です。IDとパスワードが入力されると、サーバーは「認証して欲しい」という要求として受け付け、「チャレンジ」としてマトリックスを表示します。ユーザーはそのマトリックスを見ながら、あらかじめ決めた行や列を読み取り「レスポンス」として入力します。サーバー側では、入力されたレスポンスが正しければ、認証します。
■ ワンタイムパスワードは「絶対安全」ではない
使い捨てのワンタイムパスワードは、認証の安全性を飛躍的に高めます。オンラインバンキングサービスの多くは、利用者にワンタイムパスワードのサービスを提供しています。
しかし、ワンタイムパスワードを使っているからといって、絶対に安全とはいえません。パスワードそのものは使い捨てなので安全なのですが、ユーザーとサーバーの間に介入して通信を中継することにより、ワンタイムパスワードでサービスにログインし、その後ユーザーの通信を乗っ取る「中間者攻撃」という方法では、ワンタイムパスワードがあっても不正利用されてしまいます。
実際に米国の大手銀行では、中間者攻撃により多数の利用者が預金を引き出されるなどの被害にあっています。犯人は、銀行の利用者に、銀行の名前でメールを送り、偽のウェブサイトに誘導します。そのサイトで入力させたオンラインバンキングサービスのユーザーIDやパスワード、ワンタイムパスワードを、そのまま銀行の正規サイトに転送することで、ログインを成功させ、その後の操作は犯人が行うという手口でした。
便利なサービスを安全に利用するためのワンタイムパスワードですが、ちょっとした不注意で無力になってしまうこともあります。常日頃から、あやしいメールや、パソコンのセキュリティには気をつける心がけが大切です。
著者プロフィール:板垣朝子(イタガキアサコ)
1966年大阪府出身。京都大学理学部卒業。独立系SIベンダーに6年間勤務の後、フリーランス。インターネットを中心としたIT系を専門分野として、執筆・Webプロデュース・コンサルティングなどを手がける
著書/共著書
「WindowsとMacintoshを一緒に使う本」 「HTMLレイアウトスタイル辞典」(ともに秀和システム)
「誰でも成功するインターネット導入法—今から始める企業のためのITソリューション20事例 」(リックテレコム)など
TDKは磁性技術で世界をリードする総合電子部品メーカーです