さらなる安全のために
近年、アップルの「アップルID」やグーグルの「グーグルアカウント」、フェイスブックといった各種WEBサービスのアカウントに対する攻撃が激化しています。攻撃者はあの手この手を使って、アカウント内に記録された個人情報やクレジットカード情報を狙っており、ログイン時に利用するIDとパスワードは、厳重に管理する必要があります。
MacやiPhone、iPadならば複雑なパスワードを自動生成してくれる「キーチェーン」というOS標準の機能を使うことで安全に管理できるようになります。しかし、パスワード運用と組み合わせることで、さらにアカウントのセキュリティを強固にできる仕組みが存在します。それが、最近急速に導入が進んでいる「多要素認証」です。パスワードだけではなく、もう1つ別の「何か」で認証することでアカウントを多層防御しようという仕組みです。
サービスを堅固に守る多要素認証
たとえばグーグルの場合は「2段階認証プロセス」と呼ばれる仕組みがあり、これを有効にするとサインインのたびに「確認コード」の入力を求められます。確認コードは「Authenticator」というアプリの中で表示される6桁の数値を使います。確認コードは30秒ごとに変化しており、前の時間のものは使用できません。誰かに覗き見されても、最悪30秒後には使えなくなるというわけです。 では、この確認コードはどうやって導き出されているのでしょう?
ここで使っているのは「ワンタイムパスワード」という方式です。Authenticatorの場合、サービスを登録するときにサービス側から渡される「シード」と呼ばれる数字を記録します。数字は桁数が多いので、手入力ではなくQRコードなどを使います。このシードと現在の時間を元に複雑な計算を行うことで確認コードが決まるのです。
計算が複雑なため、以前の確認コードからシードを逆算することは不可能です。グーグルではシードを一度交換するだけで二度と見れないように運用されています。結果、シードを登録したAuthenticatorを実行している「デバイス」がないと、確認コードを知ることはできないというわけです。
ユーザが覚えている「パスワード」と、特定の機械が自動的に生成する「確認コード」という2つの要素で認証するため「2段階認証プロセス」とグーグルは呼んでおり、一般的には「多要素認証」と呼ばれています。
なお、フェイスブックでもマイクロソフトでも、多要素認証の一環にワンタイムパスワードを使うことに変わりはありません。それぞれの会社ごと、iOS向けにAuthencatorが用意されていますが、これらは皆同じインターネットの標準に従っているため相互運用が可能です。グーグルのAuthenticatorをマイクロソフトの二段階認証に使うこともできますし、その逆もしかり。
ファクタとステップの違い
アップルのアイクラウドでも多要素認証が用意されており、「2ファクタ認証」という仕組みです。ファクタとは日本語にすれば要素ですから、二要素での認証ということですね。ただ、アイクラウドの場合は、もう1つ「2ステップ確認」というものもあります。この2つは似ていますが異なる機能です。
違いを下記の「図3」にまとめました。2ステップ確認はMacやiPhone、iPadを持っていなくても、電話さえあれば利用できます。アイクラウドへのアクセスのたびに4桁の数値をSMSで送付、または電話の音声通話で伝えてくるので、それを認証に使うのです。
2ファクタ認証こそがグーグルやマイクロソフトと同じ多要素認証です。ただし、MacやiPhone、iPadなどアップル製品をアイクラウドへ登録していないと使えないなど制限があります。2ファクタ認証の詳細は次号で改めて説明できればと思います。
「2ステップ確認」のメリット
一方、2ステップ確認は手軽さが特徴です。アイクラウドにMacやiPhoneを登録しなくて良い、ウィンドウズやアンドロイドデバイスを使ってるユーザでも利用できるからです。しかし、2ステップ確認はあまりおすすめできません。これは米国の技術企画研究所(NIST)のレポートでも、セキュリティ上「SMSを確認コードのやりとりに使わないこと」と明記されていることも理由の1つです。
こと日本国内に限れば、携帯キャリアはみなモラルが高く、安全性の高い運用をされているので気にならないのですが、世界中の携帯キャリアがそうとは限らず、中には質の低い運用をしているところもあります。そのような場合、SMSは安全な通信をできるところではありません。誰かがアイクラウドにサインインしようとしたときに、ユーザより先にSMSを盗聴、あらかじめ奪っておいたパスワードを使って先にサインイン、パスワードを変えてしまう、なんてことができてしまいます。SMSでその都度確認コードを送るのが安全とは言えないのです。
TOTPを使ったグーグルなどの2ファクタ認証では、確認コードそのものをサービスから送ることはありません。一度シードさえ渡せば、あとは正確な時間があるかぎり、Authenticatorは正しい確認コードを表示し続けます。確認コードの寿命は30秒のため、盗み見られたりしても悪用にはまず間に合いません。アイクラウドを使うならば、可能な限り2ファクタ認証のほうを利用しましょう。
Googleの「2段階認証プロセス」(図1)
グーグルの「2段階認証プロセス」を有効にすると、正しいパスワードを入力したあとに、「認証コード」を聞いてくるようになります。 よくサインインする安全なデバイスを設定しておくと、これを省くことができます。
Google Authenticator(図2)
Googleの2段階認証プロセスで使用するアプリ「Authenticator」。発行された6桁の数字を、サインイン時に入力することで、端末を認証します。
2ステップ認証と2ファクタ認証(図3)
2ステップ認証と2ファクタ認証の違いは右表のとおりです。次号で詳しく説明する予定ですが、2ファクタ認証では、現在認証を行おうとしている場所が大まかに表示されます。
【TOTP】
本文内のワンタイムパスワードの方式は、「TOTP(Time-based Onetime Password)」と呼ばれており、インターネットで使われる技術の標準を定めるIETF(Internet Engineering Task Force) から出される技術ドキュメント、RFC6238にて定義されています。本文中にあるように、シードと現在の時間を元に確認コードを計算するというものです。ワンタイムパスワードにはTOTP以外の方式もあり、たとえばRFC4226ではHOTP(HMAC-based One-Time Password)が定義されています。HOTPでは時間のかわりに認証に確認コードを使った回数を計算に使用するもので、毎回確認コードが変わります。
【さまざまな多要素認証】
多要素認証は2要素だけというわけでもなく、ワンタイムパスワードとも決まっていません。セキュリティを重視する企業などでは3要素や、さらに多い要素での確認もあります。たとえばスマートカードを使うのも多要素認証の一種です。パスワードの入力後に、電子署名の入ったスマートカードをカードリーダに提示することを認証の追加とするものです。また指紋や虹彩、顔といった身体を使った認証も多要素認証の一部に加えられることがありますが、顔や指紋を確認するにはカメラに写る、指紋リーダに指を乗せる必要があります。顔や指紋のデータをネットでやりとりするのはリスクがあるので、こうした認証は高いセキュリティを必要とする部屋への入室時など、物理的な局面で使われることが多いです。
文●千種菊理
本職はエンタープライズ系技術職だが、一応アップル系開発者でもあり、二足の草鞋。もっとも、近年は若手の育成や技術支援、調整ごとに追い回されコードを書く暇もなく、一体何が本業やら…。