見出し画像

Web認証についての学びログ

こんにちは。
YUIDEAのWebディレクターRomiです。

唐突ですが、Webのトレンドは海を渡ってやってくる、と勝手に思っている私は、日頃からよく海外のIT関連ブログサイトやキュレーションサイトなどを覗きにいきます。
最近では、GoogleI翻訳やDeepL翻訳などのブラウザ拡張機能を使うと、殆どの英文サイトは和文で読めるので、難しい英単語やイディオムをググる必要もなくストレスフリー。本当に便利な世の中になりましたよね。

先日もMedium(日本でいうnoteのようなサイト)を久しぶりに覗きにいこうとしたのですが、ログイン情報がどうしても思い出せず…。
ならばGoogleアカウントでログインを、とパスワードを入力、、、ん?違う?
では再度入力、、、ん? 違うのっ!?
と、不覚にも2度の入力ミスをしてしまい、突如としてブラウザ画面に
「アカウントの復元」、「iPhoneでYoutubeアプリを開いてください」
という案内が表示されました。

因みにこのMediumは、過去にMedium Japanとして日本でも展開され、今でもサイト自体は存在しているのですが、残念ながら2017年に運営を停止しています。(https://medium.com/@MEJapan

その実際に行った手順が下図なのですが、Youtubeではログインをしようとしたデバイス・地域・時間の情報とともにリクエストを確認 。パスワードの再設定や認証コードのコピペ入力の必要もなく、ブラウザに表示されていた数字を選択すると、あっという間に「アカウントの復元」とやらが完了。

YoutubeはGoogleアカウトで登録を行う同一アカウントなので、ここまでのユーザーフレンドリーなUI/UXが実現できるのだなぁ、と感心したのですが、お恥ずかしながら、これまでにWeb認証について学ぶ機会のなかった私は、ふとWeb認証の方法や仕組みなどが気になり、自分なりに少し調べてみましたので、その内容を以下にまとめていきます。


🔑 Web認証とは?

今さら説明の必要はない気もしますが、Web認証とは、Web上で提供されるサービスやアプリケーションへのアクセスをリクエストしたユーザーの
識別(Identification)→ 認証(Authentication)→ 認可(Authorization)
を行うための仕組みのこと。

🔑 Web認証に使われる要素は大きく分けて3種類

(1)知識認証
 
ID、パスワード、秘密の質問などユーザーだけが知る情報
(2)生体認証
 
顔、指紋、虹彩、声紋などユーザーの身体的特徴の情報
(3)所持(所有物) 認証
 
免許証、マイナンバー、スマートフォン、トークンなどユーザーが所持する情報

🔑 Web認証の種類

主要なWeb認証方式を概要と合わせてリストアップしてみます。

【 パスワード認証 】
事前に登録されたIDとパスワードを入力して行う認証方式。
※ ID:Identity Document(身分証明書)の略字で、メールアドレスや認識番号、または任意の文字列など。

【 多要素認証(MFA:Multi-factor authentication) 】
知識・生体・所持の3つの要素のうちの、2つ以上の複数の要素を組み合わせた認証方式。

【 2要素認証(2FA:Two-factor authentication) 】
多要素認証の一種で、知識、生体、所持の3つの要素のうちの2つの認証要素を組み合わせた認証方式。

【 2段階認証(2-step verification) 】
私がMediumのログインに利用したのがこの方法。
2要素認証と混同されやすいのですが、認証ステップ(手順)を2段階に分けて行う認証方式で、要素の数は問われません。SMS、音声通話、Eメール、アプリケーション、トークンなど、その方法は多種多様です。

▼ 代表的な2段階認証用アプリケーション
Google Authenticator、Microsoft Authenticator など

▼ トークンを利用した2段階認証
サブスクリプションサービスや金融系サービスの2段階認証によく使われているのが、ソフトウェア・トークンと呼ばれる一度しか使えない認証用パスワード(ワンタイムパスワードなど)を利用して認証や認可などを行う方法。
自分の理解のためにもざっくりと簡単に図解してみます。

このしたトークンを使用した認証には、以下に代表されるようなWeb規格が使われています。

・ OAuth( オーオース:Open Authorization)
認可サーバーから発行されるアクセストークンを使用して、ユーザーのアクセス権限を検証し APIを介して認可を行うWeb規格。スマホやアプリに対応した進化版のOAuth2.0が主流になっています。例えば、ユーザーが第三者に対して自身のGoogleアカウントのカレンダー情報へのアクセス権を与える際などに、パスワードを公開せずに安全に許可することを可能にします。

・ OpenID Connect
OAuth 2.0の技術をベースに開発された、IDプロバイダーから発行されるIDトークンを使用してユーザー認証を行うWeb規格。例えば、ユーザーが取得したSNSや携帯電話の連絡先情報などを、新しいアプリケーションで自動取得することなどを可能にします。

・ SAML(Security Assertion Markup Language)
OASISによって独自に開発された、異なるインターネットドメイン間でのユーザー認証をIDトークンを使用して行うXMLベースのWeb規格。主に企業や組織などの社内ネットワーク内で利用されるSSO(シングルサインオン)などを可能にします。

【 生体認証 】
スマホなどデバイスに組み込まれた生体認証機能を利用した認証方式で、代表的なものはAppleのFace IDやTouch ID、Windows Helloなど。

【 FIDO(Fast IDentity Online)認証 】
FIDO Alliance(ファイド・アライアンス)という、パスワードレス認証の標準化を目指して設立された非営利業界団体が推進するWeb規格。
ユーザー側デバイスで生体認証機能を利用した認証を行い、認証サーバーには公開鍵のみが保存される、というパスワードに依存しない比較的新しい認証方式で、既に金融系のサービスやアプリなどでは多く導入されているように思います。
厚生労働省では以下のように定義し、その仕組みも簡潔に解説しています。

公開鍵暗号方式を用いた認証方式の一種である。認証に必要な秘密情報は認証を行う端末側のみに保存され、ネットワーク上での伝送やサーバー側での保存の必要がないことを特徴とする。

引用元:厚生労働省『次世代認証技術「FIDO」

【 FIDO2 認証 】
WebAuthnとCTAPの2つの要素で構成されるFIDOの最新バージョン。

・WebAuthn(ウェブオースン:Web Authentication API)
Web技術の標準化団体である「W3C」が策定した、WebブラウザとWebサーバー間でFIDO認証を行うためのAPI規格。

CTAP(シータップ:Client-to-Authenticator Protocol)
Web認証APIを呼び出す側のFIDO2対応デバイスと外部の生体認証端末(認証器)をBluetoothやUSBなどを通じて安全に通信させるためのWeb規格。

【  シングルサインオン(SSO:Single Sign On) 】
1セットのユーザー認証情報で、複数のアプリケーションやウェブサイトへのログインを可能にする認証ソリューション。
SAMLやOAuthなど様々なトークン型の認証技術を利用したものがあります。
参考元:https://aws.amazon.com/jp/what-is/sso/

例えば、Googleアカウントのログイン情報一つでGoogle Workspace、Slack、Zoomなど独立した複数のアプリケーションへのログインを可能にするため、多くのアカウントを管理する必要のある企業や組織で導入するに適した方式です。


🔑 まとめ

ざっとまとめた"学びログ"いかがでしたでしょうか?
サブスクリプション型のWebアプリケーションやポイントサービスの市場拡大などに伴い、ユーザーは複数のIDやパスワードの管理を余儀なくされ、パスワードを失念したり、面倒な手続きで登録を諦めたり、他者による不正なログイン被害にあったり、と抱える問題も多くなりました。

しかし、そんなユーザーの利便性と十分な安全性を担保するために、認証技術も日々進化し多様化しています。
今回リストアップした認証方式の他にも、分散型IDSSI(Self-Sovereign Identity)ゼロトラストセキュリティモデル、など、セキュリティの向上とユーザー体験の改善の両立を目的とした新しい次世代認証技術が続々と登場してきているなか、企業で導入を検討する際には、安全性・利便性・コストなどのバランスをとることが最も重要になってくるのではないでしょうか。


いいなと思ったら応援しよう!