認証(3)
シングルサインオン(SSO:Single Sign-On)
シングルサインオン
シングルサインオンとは
一つの認証情報(ID/パスワードなど)で、複数のシステムにログインできるようにすること
シングルサインオンの目的
- 統一的なセキュリティ管理
- 利用者の利便性の向上
シングルサインオンのデメリット
万が一、利用者IDとパスワードが流出したり破られたりしてしまうと、シングルサインオンできるすべてのアプリを簡単に不正利用されてしまうというリスクが伴う
シングルサインオンの2つの方式
クッキーを使ったシングルサインオン(エージェント型)
サーバごとの認証情報を含んだクッキーをサーバで作成し、各クライアント上で保存・管理する方式。
各Webサーバに"エージェント"と呼ばれる認証を代行するソフトをインストールしてシングルサインオンを実現する
仕組み
●最初のログイン時
- クライアントはWebサーバ(エージェント)にアクセス
- Webサーバはクライアントのユーザ情報をもとに認証サーバにアクセス
- 認証サーバはWebサーバに認証を許可する
- Webサーバはクライアントに権限情報等が書かれたCookieを返す
- クライアントはWebサーバにアクセス
●次から
- WebサーバではエージェントプログラムがCookieの内容を確認、アクセスの可否を判断
メリット
- 導入にあたってネットワーク構成を変更する必要がない
- 特定のサーバに負荷が集中することなく、システムの規模が大きくなっても対応可能
デメリット
- 各Webサーバにエージェントをインストールする必要がある
- エージェントが対応していないWebサーバには使用できない
制限事項
- クッキーが共有可能な範囲内(同一ドメイン内)でしか、SSOシステムが構築できない
- クライアントがクッキーの使用を制限している場合には、使用不可
リバースプロキシを使ったシングルサインオン(リバースプロキシ型)
シングルサインオン用に別途リバースプロキシサーバを立て、このサーバが代理で認証を行う方式
リバースプロキシを使ったシングルサインオンの場合、利用者認証においてパスワードの代わりにデジタル証明書を用いることができる
- 目的のWebサーバにアクセスする前に、リバースプロキシと呼ばれる認証サーバを必ず経由する
- 認証サーバでアクセス要求を中継する際にユーザ認証を行い、Webサーバへのアクセスを制御する
仕組み
- クライアントはリバースプロキシサーバにアクセスする
- リバースプロキシサーバは認証サーバにアクセスし、ユーザ認証を行う
- ユーザ認証が成功すると、リバースプロキシサーバはWebサーバに代理アクセスする
メリット
- Webサーバにソフトウェアなどをインストールする必要がない
- Webサーバに依存せずに使用可能
デメリット
- 認証サーバにアクセスが集中するため、認証サーバ本体や周辺のネットワークに負荷がかかる
- 認証サーバを精油した場合のみWebサーバにアクセスできるようにネットワーク構成を変更する必要がある
制限事項
- ネットワーク構成の制約により、複数のドメインにまたがったシステムでSSOを実現するのは困難
- 複数のドメイン間でいかにして安全に認証情報をやり取りするかが大きな課題
SAML(Security Assertion Markup Language)
標準化団体OASISによって策定された、認証情報を表現するためのXML仕様。認証情報の交換方法はSAMLプロトコルとしてまとめられており、メッセージの送受信にはHTTPもしくはSOAPが使われる。SAMLはユーザの認証や属性、認可に関する情報を記述するマークアップ言語で、WebサイトやWebサービスの間でこれらの情報を交換することで、一度の認証で複数のサービスが利用できるシングルサインオンを実現できる。
SAMLの認可サービス
- 認証アサーション(Authentication Assertion):認証情報伝達サービス
- 属性アサーション(Authorization Assertion):属性情報の伝達
- 許可決定アサーション(Authorization Decision Assertion):アクセス制御情報の伝達
仕組み
Webアプリ上には、SP(サービスプロバイダ)と呼ばれるモジュールが稼働しており、IdP(Idプロバイダ)と呼ばれるWebアプリと連携して、利用者認証を行う。
SP(Service Provider:サービスプロバイダ)
ユーザにサービス提供する
IDP (Identity Provider:アイデンティティプロバイダ)
ユーザのアカウント情報の管理、認証を行う
SAMLRequest
SAMLの要求メッセージ(プロトコル)
SAMLResponse
SAMLの応答メッセージ(プロトコル)
- ユーザは、Webアプリにサービスを要求する際、SP用のクッキーがあれば、それを提示する。
(提示したクッキーが有効であることが検証された場合はGに進む。) - SPは、SAML認証要求を生成(SAMLRequestメッセージ)する
- SAMLRequestメッセージをldPにリダイレクトする。
- SAML認証を解析する
- 利用者は,利用者IDとパスワードを入力し、認証を受ける。
- ldPは、利用者IDなどの属性を暗号化及びデジタル署名したSAMLResponseメッセージ(認証アサーション)を作成する
- 認証アサーションをユーザ経由でSPに転送する。
- SPは、SAMLResponseメッセージのデジタル署名などを検証し、サービスを提供する。
バインディングの種類
SAMLでは、IdPとSPの間で要求メッセージ・応答メッセージを送受信するためにHTTPやSOAP等のプロトコルにマッピングする方法をバインディングという。
- SOAPバインディング
SOAPを用いてアサーションを送る - HTTP Redirectバインディング
Base64エンコードしたアサーションをHTTP GETメソッドで送る - HTTP POSTバインディング
Base64エンコードしたアサーションをHTTP POSTメソッドで送る - HTTP Artifactバインディング
ArtifactをHTTPリダイレクトで送る アサーションそのものではなくArtifactを用いる(アサーションのサイズが大きいから)
Artifact
- アサーションへのリファレンス(参照)情報
- ランダムな文字列と発行したサイトの識別子
アイデンティティ管理(ID管理)概要
ディレクトリサービスやSSO認証システムなどの技術を活用するとともに、運用体制やワークフローなどを整備することでより効率的かつセキュアなユーザ情報の管理・コントロールを実現する。
ID管理のシステム
- ディレクトリシステム
ユーザの識別情報や属性情報(アイデンティティ情報)を一元的に管理する - プロビジョニングシステム
ユーザのアイデンティティ情報に基づいて、アクセス制限やリソースを適切に割り当てる - アクセス制限(管理)システム
ユーザのアイデンティティ情報に基づいて、システムリソースに対するアクセス制限を行う - ワークフローシステム
アイデンティティ情報の追加・変更・削除における申請・承認・差戻しなどのワークフローや、証跡の管理等を行う
プロビジョニング
あらかじめ何らかの設備やリソースなどを準備しておき、それをユーザ要求に応じて割り当てる(供給する)こと
- Facebookには本人確認の方法が特になく、自己申告であるため、なりすましが存在する
- Facebookでは、各ユーザが個人情報の公開範囲をコントロールするため、適切な設定をしていないと意図せず個人情報が公開される恐れがある
- 本人が注意して活用する必要がある。
人間には読み取ることが可能でも、プログラムでは読み取ることが難しいという差異を利用して、ゆがめたり一部を隠したりした画像から文字を判読させ入力させることで、人間以外による自動入力を排除する技術。人間は読み取ることができても、コンピュータ(プログラム)が読み取ることができない、右のような文字の画像をWebサイトに表示し、同じ文字を入力させることによって識別する
- Oauth(Open Authorization)とは、
- あるサービス(サービスA)上にエンドユーザが所有するリソースや、そのエンドユーザがアクセス権限を持つサービスAの各種機能に対し、
- エンドユーザの許可を受けたほかのサービス(サービスB)がアクセスする
ために
- エンドユーザがサービスBに対して許可を与え
- サービスBがサービスAの提供するAPIにアクセスする際に許可を受けていることを証明する という一連のフローを、セキュアに実現することを目的とした「アクセス権限の付与」のためのプロトコル。
一方の、OpenIDの場合は、認証の許可だけになります。
- OAuthは3つの要素で構成されている
OAuth Server:OAuthをサポートしたAPIを提供しているサービス(サービスA)
OAuth Client:OAuth Serverが提供するAPIを利用する側のサービス(サービスB)
Resource Owner:アクセス権限の付与を行うユーザ自身
- OAuthの基本的な流れ
※Oauth1.0はセキュリティ上の欠陥があり、Oauth2.0で改良された。
※シングルサインオンの仕組みではないのですが…
時刻認証
タイムスタンプは、以下のことを証明可能
- 電子ファイルがタイムスタンプの時刻に存在していたこと
- タイムスタンプの時刻以降に改ざんされていないこと
- 作成者が、電子文書の作成を否認することを防止する
用語の整理
- TSA(Time Stamp Authority):タイムスタンプ機関
- タイムスタンプトークン:電子データのハッシュ値に時刻情報を連結し、電子署名を付与した時刻証明情報
処理の流れ
- 電子データのハッシュをTSAに送付する
[電子データ]→HASHする→[電子データHASH]・・・これをTSAに送付する - TSAでは、電子データのHASHに時刻情報を付加して電子署名をする
『[電子データのHASH]+時刻情報』+電子署名※電子署名の中身は、『[電子データのHASH]+時刻情報』のハッシュを
TSAの秘密鍵で暗号化したもの
できあがったものは、タイムスタンプトークンと呼ばれる
タイムスタンプトークンの検証
タイムスタンプトークンの中身である『[電子データのHASH]+時刻情報』が改ざんされていないかを確認する
- 電子署名をTSAの公開鍵で復号する。
- 内容が一致すれば、改ざんされていないことが検証される。
- 公開かぎ証明書の有効期間が過ぎた後でも、領収書の保存期間内であれば、
「タイムスタンプ機関に、タイムスタンプトークンが存在し、改ざんされていないことを証明してもらう」
ことによって、領収書に付与されたタイムスタンプを確認できる。 - 設計書に付与されたタイムスタンプを、必要なときにいつでも検証可能にするためには、
・認証パスを構成する証明書の有効期限が切れる前に
・関連するすべての証明書と失効情報を集め
・タイムスタンプトークンとこれらに新たなタイムスタンプを付与する
ことが必要。
メッセージ認証
メッセージ認証は、メッセージ(文章)を認証するという意味。
メッセージ認証の目的
メッセージが改ざんされていないことを確認する。
メッセージ認証には、MAC(message authentication code)を使う。これは、デジタル署名と同じように、メッセージにハッシュをつけて送ることで、改ざんがされていないかがわかる。
メッセージ認証の仕組み
公開鍵基盤とハッシュ関数を利用したメッセージ認証の手法は
受信者は、ハッシュ関数を用いてメッセージからハッシュ値を生成し、送信者の公開鍵で復号したハッシュ値と比較する。
オンラインバンキングの認証
項番 | セキュリティ対策 | マルウェアJの感染に起因する 不正送金への対策としての評価 | マルウェアKの感染に起因する 不正送金への対策としての評価 |
---|---|---|---|
1 | 利用者ID パスワード認証 | 対策にならない | 対策にならない |
2 | クライアント証明書による認証 | 対策になる | 対策にならない |
3 | 乱数表による認証 | 対策にならない | 対策にならない |
4 | ワンタイムパスワード認証 | 対策になる | 対策にならない |
5 | リスクベース認証 | 対策になる | 対策にならない |
6 | 送金内容認証 | 対策になる | 対策になる |
※マルウェアJは、「Webインジェクト(Webインジェクション)」と言われる攻撃で、マルウェアKはMITB攻撃である。
※ただし、5はマルウェアJにて、その内容を入力させられる可能性があり、対策になるというのは限定的である。
ヒステリシス(Hysteresis:履歴)署名とは、デジタル署名を付与する際に、過去に生成したすべての署名情報を取り込んで署名間の連鎖構造を作る技術。
ヒステリシス署名でじゃ、あるデジタル署名の有効期限が切れたとしても署名間の連鎖構造を検証することにより電子文書の改ざんを検知できるため、単独の署名を行うよりも長期間にわたってデジタル署名の有効性を維持することが可能
 

