AuthenticatorClientとAuthenticatorが明確に分かれていることにより,セキュリティキーのような外部デバイスを利用すると,ひとつのキーを別々の環境で利用できる相互運用性が生まれます。ユーザー認証の方法は,各Authenticatorにより異なり,生体認証を用いた認証やPINによる認証など,Authenticatorを入れ替えることによって,ユースケースにあった認証方法をサーバー側はほとんど意識することなく選択可能です。Protocol)として標準化されています。実際のところセキュリティキーのような外部デバイスだけがAuthenticatorではありません。Authenticatorと呼ばれる,「⁠Platform」に紐づいたAuthenticatorが定義されています(上図2⁠)⁠。「⁠Platform」とは,すなわち「Windows」や「Android」などであり,WebAuthn互換のAPIが各種プラットフォームに用意されています。ブラウザーがそれらのAPIを呼び出すことで認証を行います。これらのAPIは,CTAPのように標準化されているわけではないため,各ブラウザーやOSベンダーが独自に実装を行うことになります(※5⁠)⁠。※5独自にiOSのAuthenticatorを実装している方もいます(lyokato/WebAuthnKit⁠)⁠。いくつかのプラットフォーム上では実装が進んでおり,Android上ではモバイル版ChromeがAndroidのAPIを呼び出し,指紋やPINを利用して認証を行えます(ヤフージャパンで実装されたのは,こちらのAPIを利用しています⁠)⁠。HelloがAuthenticatorとして振舞います。MacOSではChromeがKeyChainのAPIを呼び出して認証を行います。いずれの場合においてもTEEやTPMといったセキュアデバイス,あるいはそれに準ずるセキュアな領域にキー情報を保存します。Authenticatorの例(Android)ところで,外部・内部Authenticatorを問わず,WebAuthnでは認証情報はデバイスに依存することになります。スマートフォン上で作成した認証情報は,そのスマートフォンでしか利用できません。ユーザー認証を行うための指紋やPINなどの情報もデバイスに紐づきます。これは従来のパスワード認証のような「デバイスを問わず利用できる認証情報」と大きく異なる点です。WebAuthnではデバイスを紛失した場合,認証情報も同時に失われます。そのため,デバイスの紛失に対するアカウントリカバリの方法も検討しなければなりません。GitHub上でも盛んに議論されており,秘密鍵をクラウド上にバックアップする仕様や,アカウントリカバリ用バックアップキーの仕様などが提案されています。その他にもセキュリティを担保するためには,デバイス紛失時には,直ちに対応するキーペアを無効化するなど,対策が必要になります。デバイスの紛失やアカウントリカバリの他にも,検討すべき点はあります。ユースケースとして,PC上のブラウザーやアプリケーションでのログインを,スマートフォンを利用して行いたいというケースがあるかと思います。その場合,WebAuthnのスペックのみでは,PUSH通知や認証情報の受け渡し等が足りず個別の実装が必要になります。上図の2,4はスペック外のため独自の実装となります。このような認証を単純に実装すると,ログイン画面を偽装し,本物のサービスとバイパスすることでフィッシングが可能になってしまいます。Push通知によるログインへのフィッシング攻撃フィッシングの可能性を指摘しましたが,このようなユースケースは決して非推奨ということではありません。ここで注目してほしいのは,WebAuthnはあくまで認証プロトコルであり,RPとClient,そしてAuthenticatorになるデバイスという経路においてはフィッシングを防げますが,それ以外の部分には関与しないという点です。インターネットを経由した他デバイスからの認証を実装する場合や,認証後の認可フローを検討する場合は,ユースケースに応じた対策が必要になります。このような攻撃を防ぐ方法の一つとして,スマートフォンをPCとCTAPプロトコルで接続することが考えられます。スマートフォンとPCがCTAPでつながると,先ほど話したとおりWebAuthnの認証は正しいrpIdとoriginの組み合わせでのみ行われるため,上記のような攻撃を防ぐことができます。この場合フィッシングに対しては強くなりますが,PCとスマートフォンを何かしらのインターフェイスで接続することが必要になります。現実的なのはBLEを利用することですが,通常BLEは事前のペアリングが必要で,利便性が高いとは言えません。それに対しChromeではcaBLEと呼ばれるBLEの接続方法を検討しているようです。著者プロフィール@watahaniもと本屋のソフトウェアエンジニア3年目。昨年からFIDOやWebAuthnといった認証技術について調査やコミュニティ活動を始める。YubiKey検定3級(自称)。2019」を開催しました。DAY1・DAY2の様子を注目セッションとともにお伝えします。LINEのエンジニア3名がイベントに先駆けて見どころを紹介します。コードの安全性・安定性を高める開発サイクル~テスト管理の効率を上げ,脆弱性診断を自動で行う~本連載では,連載「業務を改善する情報共有の仕掛け」を受けつつ,安全性・安定性を加えた開発サイクルについて考えていきます。若者世代から圧倒的な人気を誇るライブ配信&動画投稿コミュニティアプリ「MixChannel」(ミクチャ)の裏側(レコメンドシステムやサーバサイド開発など)について解説していきます。その他の連載CSS3アニメーションでつくるインターフェイス表現CSS3によるアニメーション表現を紹介していきます。その中でも,幅広い読者に応用してもらえるだろうインターフェイスを主なお題とします。MySQL道普請便り本連載では,MySQLを使ったアプリ開発・運用に関するノウハウをご紹介していきます。RecipeUbuntuの強力なデスクトップ機能を活用するための,いろいろなレシピをお届けします。JavaScriptセキュリティの基礎知識JavaScriptに関するセキュリティ上の問題はどこで発生し,どうすれば防ぐことができるのか?について解説していきます。〜システムをきちんと運用するための基礎知識システムは「作って終わり」ではなく,運用の中でさまざまな問題が発生します。問題の発生に備えて事前にどのような対応をしておくべきなのか,問題発生時に何をしなければならないのか,ポイントを解説していきます。きたみりゅうじの聞かせて珍プレーソフトウェア開発の現場で体験したトホホな失敗,思わずうなる珍プレーをきたみりゅうじ氏が四コママンガで紹介。Linuxのメンテナンスの傍ら,Linuxやオープンソースソフトと日々を過ごす著者が,その魅力とつきあい方を,エッセイ風味でお届けします。PRESS特別編集部員,さわやか笑顔のスーパーハカーはまちちゃんとネット大好き14歳わかばちゃんが,毎号,読者の皆さんから寄せられたおたよりを紹介します。皆さんの日頃の悩みにも答えちゃいますよ。]メールでのお知らせメールで次の案内をお送りしております。メールの配信を希望する方は,利用したい項目をチェックしてメールアドレスを入力し,[登録]ボタンをクリックしてください。UPDATES[ほぼ週間に1回]新刊メールマガジン[ほぼ週間に1回]電脳会議の各号案内[ほぼ1ヵ月半に1回]※変更する場合や停止する場合は,登録情報変更ページをご覧ください。※登録いただいたメールアドレスには,そのお知らせ以外,配信いたしません。Ltd.ページ内容の全部あるいは一部を無断で利用することを禁止します。個別にライセンスが設定されている記事等はそのライセンスに従います。