神奈川大学理学部情報科学科 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
© Copyright 2025 ExpyDoc