パスワードは一定時間(30秒程度)ごとに自動生成され、その順序はサバと共有されますが、トークンごとに全て異なっており、同じ時間に同じパスワードは存在しない事になっています。
いわゆるトークンはパス生成機の事です。
トークンがパスを自動生成するのであって、パスそのものではありません。
パスはトークンに表示され、時間ごとにアトランダムに変化し、その順序をサバが知っているだけです。
口座番号に紐付けられた生成順に従ってサバでもパスが生成され、入力されたパスを認証します。
ですから、万が一、サバかトークンの時間が狂うと認証されなくなります。トークンは内蔵電池で駆動されますので、一定期間ごとに丸ごと交換されます。
電池だけ替えると時間が合わなくなります。
ワンタイムパスワードの目的は、ネットワークを覗き見している人(装置)にユーザ名やパスワードを読み取られてしまうことに対する防御です。
パスワードは一度しか使われないので、例え読み取られてしまったとしても、同じパスワードを次回入力しても認証されないためセキュリティ上の問題なしというところがメリットです。もちろん、ユーザがいろいろなシステムで共通のパスワードを用いてしまうことを抑止するメリットもあります。
ですから、トークンが盗まれないようにする対処は別途行う必要があります。
また、通常はワンタイムパスワードに加え、いわゆる一般的なパスワードによる認証など、別の認証も組み合わせることで、万一トークンが盗まれた場合でも実質的な被害の発生を抑止するような方策が採られています。
> 共有のトークンを入力すれば誰でもワンタイムパスワードを得られると意味がない
おっしゃる通りです。
いろいろ設定ができますが、トークンは必ず本人のみが使用する前提としてトークンだけをパスワードとする場合もあれば、トークンが盗難された場合に備えてパスワードをPIN+トークンとする場合があります。
2. SecurID認証トークンに表示される数字だけで認証を行うのですか?
いいえ。 SecurID認証トークンの盗難、紛失による悪用を防ぐため、SecurID認証トークンに表示される数字(この数字をトークンコードといいます。)とPIN(Personal Identification Number)と呼ばれる通常4桁の個人識別番号の組み合わせてワンタイムパスワード(パスコードともいいます。)を作ります。これを二要素ユーザー認証と呼んでいます。通常、PINは初回認証時にユーザーが決めます。PINは銀行で使うキャッシュカードの暗証番号と同様で使用者のみが知るもので大切に保管されるべきものです。
RSA SecurID
トークンと鍵を誤解されているみたいです。
正確に言うとワンタイムパスワードは各生成器(トークン)にユニークな鍵が工場でセットされていて、サーバ側にも同じ鍵を保持しています。その鍵、そして時刻又は回数情報を元にワンタイムパスワードが生成されます。
生成器にサーバから表示される数字を入力して乱数を発生させるチャレンジ&レスポンス形式のワンタイムパスワードは上記に加えてその変数もワンタイムパスワード計算の素として利用されます。
ボタンを押してワンタイムパスワードを表示、又はボタンが無いワンタイムパスワード生成器を利用している場合、ユーザ名+ワンタイムパスワードだけでは生成器を落とした場合に悪用される可能性があるので、暗証番号又は固定パスワードを併用することにより認証強度を高めています。
どうやって認証が行なえるかはユーザ名に対して、トークンのID、そして鍵、パスワード等がひもづけられていて、認証時にサーバ側でも計算と照合を行なうことにより、その乱数がそのトークンから生成されたものかを判断します。
トークン内の鍵は簡単に取り出せず、サーバ側でも暗号化されています。従ってこの鍵の安全が担保されていれば安全は保たれます。
ワンタイムパスワードの仕組みを説明します。
上記の方法で、サーバーが算出したパスワードと、ワンタイムパスワード生成機が算出したパスワードは一致します。よって、認証が可能になります。
パスワードは30秒ごとに再計算するように、規格が定めています。
パスワードの算出に使われる「何回目のパスワードか」「ユーザー固有のパスコードは何か」の2つの数字は第三者に知られることはありませんから、安全です。