DropboxやGmailのセキュリティが向上する「2段階認証」とは?
AppBank の主任です。
ウェブサービスにログインする際、現在では「ユーザー ID」と「パスワード」を使う認証方法が主流ですが、今後は変わるかもしれません。
この認証方法では ID やパスワードを盗む・推測することでアカウントを簡単に乗っ取れるからです。そのために ID・パスワードを盗む手口は日々巧妙化しています。
そこで注目されているのが「2段階認証」。ID とパスワードの他に、時間や回数に応じて生成される「コード」も必要とする認証方法です。
Dropbox や Gmail などが既に導入しており、不正アクセスの防止に役立っています。
→Dropboxのセキュリティが向上する「2ステップ認証」の設定方法。
→Gmailの乗っ取りを防ぐ「2段階認証」を設定する方法
今回はこの2段階認証の仕組み・不正アクセス防止に役立つ理由をご紹介します。
2段階認証とは?
2段階認証とはユーザー ID・パスワードの他に「コード」も使って認証する方法です。コードは1回しか使えない場合が多いので「ワンタイムパスワード」とも呼ばれます。
Dropbox の場合、まずはユーザー ID とパスワードを入力してログインします。
次にコードを入力します。
コードはその時々で変わるので、後ほどご紹介する方法で確認します。
このように「ユーザー ID・パスワードによる認証」と「コードによる認証」の2つを行うことから、2段階認証や2ステップ認証と呼ばれています。
コードを確認する方法
1. 乱数表(コードの一覧表)
コードが必要になった際に、あらかじめ配布した表のマスが指定されます。利用者は手元の表でそのマスを確認し、その文字列を入力します。
この方法はネットバンキングでよく使われており、キャッシュカードに乱数表が記載されていることが多いです。
2. SMS・メール
登録されている電話番号・メールアドレスにコードが送られるので、これを利用者が確認して入力します。
この方法では電話番号・メールアドレスが必要なほか、音声通話・インターネット回線に接続できる環境も必要となります。
この方法は Yahoo! JAPAN で採用されています。
→ワンタイムパスワード(OTP) – Yahoo! JAPAN IDガイド
3. 電話
あらかじめ登録しておいた電話番号に電話が掛かってくるので、利用者がこれに出て、音声で伝えられるコードを確認して入力します。
この方法でも電話番号と音声通話回線に接続できる環境が必要となり、圏外では利用できません。iPod touch や iPad では利用できない方法です。
4. セキュリティトークン
液晶画面にコードを表示する専用のデバイスを使う方法です。ログインする際に、表示されているコードを入力したり、ボタンを押して新しいコードを表示させます。
電池切れ・故障・有効期限切れにならない限りはどこでも使えますが、盗難の危険性や導入に当たっての出費が生じます。
このセキュリティトークンはオンラインゲームや一部の銀行で導入されています。
5. アプリ
iPhone などに専用のアプリをインストール、コード生成のための設定を行います。コードが必要になったらアプリを開き、これを確認して入力します。
アプリをインストールすれば圏外でも使えるのが利点です。Google Authenticator は無料で配布されており、これを利用できれば追加出費もありません。
すでに Dropbox や Google(Gmail)などがこれに対応しています。
→Dropboxのセキュリティが向上する「2ステップ認証」の設定方法。
→Gmailの乗っ取りを防ぐ「2段階認証」を設定する方法
3種類のコード生成方法
2段階認証で使うコードの生成方法は主に3つあります。
第一に、表にランダムな文字列を割り当てて乱数表を作り、認証する際に表のマスを指定する方法。
これには表そのものを盗撮・書き写される危険性があります。最近では偽のウェブサイトや入力画面を表示させ、利用者に乱数表の文字列をすべて入力させることで情報を盗む事例も増えています。
第二に30秒・1分ごとといった、一定時間でコードを生成する方法。
コードは一定のルールに従って生成され、そのルールは認証するサーバとコードを生成するセキュリティトークン・アプリの間で共有されています。そうでないとセキュリティトークン・アプリで生成したコードを使って認証することはできないからです。
とすると、このルールさえ分かれば、第三者でも2段階認証を突破できるはずです。
その点はきちんと考えられており、どのように生成したかを特定しにくい関数(一方向関数)を使って生成されています。従って、コードを元にそのルールを見いだすことは困難です。
また、時間ごとにコードを生成するので、認証するサーバとセキュリティトークンやアプリを動かす iPhone の時計が合っている必要があります。
第三にログインなどの利用に応じ、その度にコードを生成する方法。
こちらもコードは一定のルールに従って生成されますが、一定時間でコードを生成する方法と同じ、一方向関数を用いて生成されます。
2段階認証が不正アクセス防止に役立つ理由
第一に「ログインに必要な情報が増えること」が挙げられます。必要な情報が増えれば、それを盗む・推測するための手間が増え、不正アクセスを抑止できます。
第二に「コードが使い捨てであること」が挙げられます。キーボードで入力する内容を盗聴していたり、コードを盗み見たりしても、次のログイン時には別のコードが必要になるからです。
盗んだコードをベースとして、次に使えるコードを推測することが困難であることも不正アクセスを防止する上で役立っています。
しかし、いずれの方法も不正アクセスの可能性を低くするものであって、不正アクセスの可能性をゼロにするものではありません。
例えば第三者が既に ID とパスワードを把握している場合、利用者の PC や iPhone に偽のコード入力画面を表示して使用できるコードを入力させ、これをその有効期間内に盗用すれば2段階認証を突破することは可能です。
したがって、従来通りに ID とパスワードの管理を徹底することのほか、他人にコードを見せない・偽の入力画面に注意する・セキュリティトークンやアプリを触らせない、持ち出させないといった対策が必須です。
参考(順不同)
- Dropbox – アカウントで 2 段階認証を有効にするには。 – 日常をシンプルに
- google-authenticator – Two-step verification – Google Project Hosting
- RFC 4086 – Randomness Requirements for Security
- RFC 6238 – TOTP: Time-Based One-Time Password Algorithm
- RSA SecurID