OpenIDのアカウントハイジャック攻撃に関する研究

神奈川大学理学部情報科学科 2013 年度学士論文要旨
指導教員:松尾和人
OpenID のアカウントハイジャック攻撃に関する研究
2010
平本 勇貴
はじめに
1
近年のインターネットアプリケーションでは利用する
ユーザが利用するサイトごとに ID/パスワードを作り利
用している。しかし、それでは多くの ID/パスワードを
作るための個人情報の提示の手間やその ID/パスワード
の管理の手間など多くの負担がユーザにかかってしまう。
それを解消するのがシングルサインオンである。シングル
サインオンとは、ユーザが一度認証をすればそれに対応し
ている全てのサイトに同じ ID/パスワードを使って利用
できるという概念である。その一手法として OpenID[1]
がある。OpenID とはユーザが事前に OpenID Provider
(OP) というユーザの認証を代行するサイトで OpenID
を作成しておくことによって、ユーザはその ID/パスワー
ドを使い、Relying Party (RP) という OpenID に対応
図 1: OpenID 認証のプロセス
している全てのサイトに共通の ID、パスワードで、面
倒な個人情報の登録をせずに利用できるというものであ
る。このようにして OpenID はシングルサインオンを実
2.3
現している。
アソシエーションの確立
RP、OP 間でアソシエーションを確立すると共有秘密
近年、OpenID は世界中の多くのサイトで利用されてお
鍵が生成される。この時、RP がアソシエーションを形
り RP のみならず Yahoo!JAPAN をはじめとする OP も
成出来る場合と出来ない場合がある。形成出来る場合は
次々に増えてきている。そんな中、OpenID の脆弱性が
そちらの方が推奨されるが、出来ない場合には OP の直
少なからず報告されている。そこで、OpenID は本当に安
接検証という方法によって検証する必要がある。この仕
全なのか、個人情報の漏えいなどの可能性はないかなど
組みのことをステートレスモードという。
心配が出てくる。したがって、本論文では実際に OpenID
の接続実験を行うのと OpenID の脆弱性に関する資料を
もとに OpenID の安全性の検討をする。
2
OpenID [1]
2.1
OpenID の概要
3
OpenID の接続実験
OpenID の動作確認のために様々なサイトの接続実験
を行った。RP, OP の動作環境として Linux の CentOS
2.6.18-164.el5 上の python-openid 2.2.5 [3] を利用した。
れは様々なサイトに共通の ID を使って利用できるとい
OpenID の接続実験としてまず python-openid が提供す
る RP, OP をローカルホスト上で動作させ、その動作を確
認した。その後、用意した RP を利用して実際の OP との
う仕組みである。この OpenID を使うことでユーザは多
接続実験を行った。接続実験では OP として Google、Ya-
くの ID/パスワードを持つ必要がなくなり、共通の ID/
hoo!JAPAN、mixi、livedoor を利用した。ユーザは RP
パスワードを利用するので情報の管理もしやすくなる。
にログインする際に OP の identifier を RP に知らせる
この OpenID を利用するには、まずユーザが OpenID の
必要があるが、各 OP の identifier は Google は google.
com/accounts/o8/id、Yahoo!JAPAN は yahoo.co.jp、
OpenID とはシングルサインオンの一手法であり、こ
認証を代行している OP から事前に OpenID を入手して
おく必要がある。ここでは詳細な個人情報を提示するこ
とによって OpenID を入手することができる。そして、
mixi は mixi.jp、livedoor は livedoor.com である。RP
に identifier を送ると RP がユーザを OP の認証に転送す
この OpenID を使えば OpenID に対応している RP す
る。ユーザが OP の認証プロセスを実行すると、OP は
べてを共通の ID/パスワードで利用することが出来る。
ユーザの認証の有無の確認をするため図 2 のような認証
2.2
OpenID 認証のプロセス
OpenID のプロセスの概略を図 1 に示す。
の確認をユーザに求める。ユーザがそれに同意すると認
証が成功し、それぞれの Web サイトにアクセスすること
神奈川大学理学部情報科学科 2013 年度学士論文要旨
ができる。このときに OP から RP へ返された URL が
指導教員:松尾和人
ユーザ自身の OpenID であるが、実際には図 3 のような
スということを察知し、要求を拒否しなければならない
が実装によっては許可してしまう。 それぞれのユーザのプロフィールページの URL になっ
4.2
ている。
対策
文献 [4] の攻撃に対する対策としてユーザと RP には
取るべき対策は特になく、唯一、対策がとれるのが OP
である。OP はそれぞれの秘密鍵がどの RP と共有され
ているのかを管理しておくことによって、署名検証 API
で不正なメッセージを拒否することが出来る。
4.3
図 2: Yahoo!JAPAN 認証確認画面
アカウントハイジャック攻撃の実現性
OpenID の安全性を検討するにあたって上記のアカウ
ントハイジャック攻撃の実現性の検討を行った。アカウ
ントハイジャック攻撃では攻撃者は共有秘密鍵を使って
任意の ID に署名をつけ、それを用いて RP に認証要求
をすることで攻撃を始める。このため、攻撃者は最初の
ステップとして自身の RP から共有秘密鍵を得なければ
ならない。本研究では 2 章の接続実験において利用した
RP を用いてローカルホスト上の OP や実際の OP と共
有秘密鍵を共有することができた。また、python-openid
図 3: Yahoo!JAPAN プロフィール画面
OpenID のアカウントハイジャック攻撃
4
には署名関数が用意されているので、これを用いれば ID
に署名することが可能である。python-openid の RP は
ステートレスモードに対応しているものの OP がステー
トレスモードに対応していないため、実際の動作確認は
OpenID には安全性に関する既存研究が数多くあるが
その中でも [4],[5] のようなアカウントハイジャック攻撃
できなかった。しかし、文献 [4] で紹介された攻撃は一
の既存研究がある。
第三者によるアカウントの乗っ取り等の攻撃が提案され、
OP の実装には注意が必要であると考えられる。また実
験を行った結果、共有秘密鍵には有効期限が存在するこ
とが分かった。OP がこの期限を適切に設定することで
それを分析することにより、OpenID の脆弱性の評価を
攻撃をある程度防げるのではないかと思われる。
文献 [5] では署名要素にノンスを含めないことによる
している。文献 [4] は攻撃者が署名を付加した攻撃対象
者の ID で RP にアクセスすることによって任意の第三
者のアカウント乗っ取ってしまうという OpenID の脆弱
性をついた攻撃を紹介している。
以下 z では [4] で紹介された攻撃について検討する。
4.1
攻撃手段
般に入手可能なツールによって容易に実現可能であり、
参考文献
[1] OpenID Authentication 2.0 - 最 終 版,“http:
//openid-foundation-japan.github.io/
openid-authentication.html [2] OpenID is a safe, faster, and easier way to log in to
web sites.,“http://openid.net/ アカウントハイジャック攻撃とは攻撃者が自身の共有
秘密鍵を用いて任意のユーザの ID に署名を付加し RP
に不正アクセスする OpenID の脆弱性をついた攻撃であ
る。文献 [4] の攻撃は攻撃者がまず、自身の RP を用い、
OP との共有秘密鍵を作成しておく。そして、その共有
秘密鍵を用いて攻撃対象の ID に署名を付け RP にアク
セスする。アクセスされた RP は正規ユーザの ID なの
で、すでに登録されているユーザからのアクセスだと誤
認して OP に認証の署名検証を委託してしまう。(この
攻撃では RP は共有秘密鍵を保持できないステートレス
モードなので RP は OP に署名検証を委託する必要があ
る。)ここで OP は署名検証する際攻撃者の不正アクセ
[3] Pythondownloadsite“,
https://pypi.python.
org/pypi/python-openid/ [4] OpenID 2.0 の一部実装に脆弱性、その詳細と対策とは
“, http://www.atmarkit.co.jp/ait/articles/
1308/23/news013.html [5] Hyun-Kyung Oh ’*, Seung-Hun Jin* Information
Security Engineering,Korea University of Science
and Technology Digital ID Security Research Team,
Electronics and Telecommunication Research Institute“, “,The Security Limitations of SSO in OpenID