Comments
Description
Transcript
- XMLコンソーシアム
応用技術部会 セキュリティWG活動 ∼ XML関連セキュリティ規格∼ 2004年5月24日 XML Consortium 応用技術部会 セキュリティWG: 上田 隆司 (コニカミノルタビジネステクノロジーズ株式会 社) 本日の報告内容 z セキュリティ関連XML規格 – 規格マップ – 規格標準化状況 z SAMLの概要 – SAMLの仕様 – SAML関連用語 – SAMLモデル z 適用例 © Copyright XML Consortium 応用技術部会セキュリティWG 2004/05/24 1 セキュリティ関連XML規格一覧 情報アクセス ポリシー 認証と承認 SAML 1.1 OASIS:標準 2003-09-02 鍵の登録 証明書 C サイト SAML 2.0 OASIS:WD12 2004-05-17 D サイト XACML OASIS:標準 2003-02-06 XACML 1.1 OASIS:CD 2003-08-07 XACML 2.0 OASIS:WD11 2004-05-14 認証 機関 情報 SOAPの 暗号・署名・認証情報 XKMS 2.0 W3C:勧告候補 2004-04-05 電子署名 A 企業 XML-Signature W3C:勧告、RFC3275 2002-02-12 XPath Filter 2.0 W3C:勧告 2002-11-08 コンテンツの 詳細指定 WS-Security 1.0 OASIS:標準 2004-04-06 XML Encryption W3C:勧告 2002-12-10 暗号・復号 Exclusive XML C14n 1.0 W3C:勧告 2002-07-18 Canonical XML 1.0 W3C:勧告、RFC3076 2001-03-15 © Copyright XML Consortium XML文書の 正規化 応用技術部会セキュリティWG B 企業 Decryption Transform W3C:勧告 2002-12-10 署名後の 暗号・復号 2004/05/24 2 規格標準化状況 セキュリティ関連規格 XML Encryption XML Signature Exclusive XML C14n Canonical XML XKMS 2003年度 勧告候補:W3C (2002/3/4) 勧告:W3C (2002/2/12) 勧告:W3C (2002/10/10) 勧告候補:W3C (2002/5/24) 勧告:W3C (2001/5/15) 勧告:W3C (2002/7/18) 勧告:W3C (2001/3/30) 2.0 作業案:W3C (2002/3/18) WD:W3C (2003/4/18) 勧告候補:W3C (2004/4/5) 草案:業界団体 (2002/4/5) WD11:OASIS (2003/3/3) 標準:OASIS (2004/4/6) ドラフト:OASIS (2002/7/1) 標準:OASIS (2002/11/5) 1.0 1.1 LC:OASIS (2003/5/3) 1.0 標準:OASIS (2003/9/2) WD12:OASIS (2004/5/17) 2.0 XACML 2004年度 1.0 WS-Security SAML 2002年度 ドラフト:OASIS (2002/7/1) 標準:OASIS (2003/2/6) 1.1 CD:OASIS (2003/8/7) 2.0 WD11:OASIS (2004/5/14) LC:Last Call CD:Committee Draft WD:Working Draft © Copyright XML Consortium 応用技術部会セキュリティWG 2004/05/24 3 SAMLの概要 z Security Assertion Markup Language ‐ ユーザの認証、属性、許可情報を表現するXMLボキャブラリ ‐ 発行者と利用者でのメッセージ交換プロトコル 他 z 何を実現するものか? ‐ 異なる組織間でユーザ情報を共有する • ユーザの認証状態 by Authentication Assertion • ユーザの属性 by Attribute Assertion • ユーザの持つ権利 by Authorization Decision Assertion – WWWサイト間のシングルサインオン(SSO) • Cookieが使えない場合 z OASISによって標準化 (OASIS Standard) – V1.0: 2002/11/5 – V1.1: 2003/9/2 © Copyright XML Consortium 応用技術部会セキュリティWG 2004/05/24 4 SAML仕様書 (1) z Assertions and Protocol – Assertions • • Assertions Statements – Protocol • • • z Requests Queries Responses Security and Privacy Considerations – Security Considerations • • • • • Authentication Confidentiality Data Integrity Notes on Key Management TLS/ SSL Cipher Suites © Copyright XML Consortium 応用技術部会セキュリティWG 2004/05/24 5 SAML仕様書 (2) z Bindings and Profiles – Bindings • SOAP over HTTP protocol binding – Profiles • • z z Browser/ Artifact Profile Browser/ POST Profile Glossary Conformance Program Specification © Copyright XML Consortium 応用技術部会セキュリティWG 2004/05/24 6 SAML関連用語解説 z Subject – セキュリティドメインにおける認証/ 承認の対象となる実体 z Assertion – SAML Authorityが作るデータ • Subjectを認証した行為 • Subjectに関する属性情報 • 特定のResource (資源)にSubjectがアクセスすることの認可 z SAML Authority (SAML権限) – Assertionを出す抽象的なシステム実体 • Attribute Authority (属性権限) • Authentication Authority(認証権限) • PDP (ポリシーに基づいた権限委譲の判断) © Copyright XML Consortium 応用技術部会セキュリティWG 2004/05/24 7 SAMLモデル ④Profile ③Binding Authority Authority ② Response ②Response ① Assertion ①Assertion Requestor Requestor ② Request ②Request User User ① ② ③ ④ SAML Assertion SAML Protocol SAML Binding SAML Profile © Copyright XML Consortium : : : : 認証、属性、許可情報を表現 アサーションを交換するための交換プロトコル トランスポートプロトコルにどのように乗せるかを規定 実際のサービスを実現するための一連のプロセス規定 応用技術部会セキュリティWG 2004/05/24 8 SAML Protocol z SAML Assertionを獲得するためのRequest/Response型 のメッセージプロトコルフォーマット Authority Authority SAML Protocol Request Request Assertionの 種類に応じたQuery Response Response Assertion Assertion 処理の成否情報と 各種Assertion (認証、認可、属 性・・・) Requestor Requestor © Copyright XML Consortium 応用技術部会セキュリティWG 2004/05/24 9 SAML Profile z 実際のサービスを実現するための一連のプロセス ‐ アサーションをどのように利用するか ‐ プロトコルやシーケンスにマッピングするか z 現在、Webブラウザでシングルサインオンを実現するため の,2つのProfileが定義されている – Web Browser SSO Profiles of SAML • Browser/ Artifact Profile of SAML • Browser/ POST Profile of SAML z 特徴:Cookieの仕 組みは利用しない 今後、次のようなProfileが定義される予定 – SOAP Profile of SAML • SAMLを用いてWebサービスをセキュアにするための”方法” © Copyright XML Consortium 応用技術部会セキュリティWG 2004/05/24 10 SAML-Defined Identifiers z 認証方法 (Authentication Method Identifiers) – – – – – – – z Password Kerberos Secure Remote Password Hardware Token SSL/TLS証明書によるClient認証 公開鍵(X.509, PGP, SPKI, XKMS) XML電子署名 アクション (Action Namespace Identifiers) – Read, Write, Execute, Delete, Control – Get, Head, Put, Post – UNIX File Permissons © Copyright XML Consortium 応用技術部会セキュリティWG 2004/05/24 11 適用例 (1/4):B2C z ユーザが複数のサイトを用いて、旅行の予約を行う ‐ シングルサインオン ‐ ユーザ情報の共有 旅行代理店サイト ユーザ 情報 SAMLメッセージ シングルサインオン <認証情報> ユーザは旅行代理店で 認証されました。 ユーザ 飛行機予約 サイト 属性情報の参照 <属性情報> ユーザのメンバタイプは ゴールドです ホテル予約 サイト © Copyright XML Consortium 応用技術部会セキュリティWG 2004/05/24 12 適用例 (2/4):B2Eポータル z 社外提携サービスへのシングルサインオンや属性情報交換 社員ポータル ファイナンシャル (財形、401K) 福利厚生・健保 出張・引越し手配 教育・研修 © Copyright XML Consortium SAML システム <属性情報> ID=shimodaの 名前は下田 裕介で 住所は...です. 社内サービス 認証 DB 応用技術部会セキュリティWG 2004/05/24 13 適用例 (3/4): ASP連携における認可情報提供 z コンテンツポータルとコンテンツ配信サービスとの連携 コンテンツプロバイダサイト 認証・課金 コンテンツ配信サービス(ASP) <認可情報> コンテンツプロバイダは ユーザAにコンテンツの 配信を認めました. Content Store コンテンツ管理・配信 ID+パスワード ASP:Application Service Provider © Copyright XML Consortium 応用技術部会セキュリティWG 2004/05/24 14 適用例 (4/4):権限委譲 z コミュニティメンバ同士で権限委譲 SAML拡張 <権限委譲情報> 署名 発行者名: 坂田 対象者 : 下田 権限 : サッカーチケット購入 利用制限:1000円まで、決済機能付 チケットサイト 日本代表応援 ネットコミュニティ 請求書 決済会社サイト 請求書 請求書 © Copyright XML Consortium 応用技術部会セキュリティWG 2004/05/24 15 応用技術部会 セキュリティWG活動 ∼ SAML, XML Signature, XML Encryptionの実装∼ 2004年5月24日 XML Consortium 応用技術部会 セキュリティWG: 山口 英子 (日本テレコム株式会社) 本日の報告内容 z 背景と目標 – 活動概要 – 実績と今年度の目標 z 開発したデモシステム – – – – z ストーリー セキュリティ上の課題と対応 システム構成 個別システム デモ © Copyright XML Consortium 応用技術部会セキュリティWG 2004/05/24 1 本日の報告内容 z 背景と目標 – 活動概要 – 実績と今年度の目標 z 開発したデモシステム – – – – z ストーリー セキュリティ上の課題と対応 システム構成 個別システム デモ © Copyright XML Consortium 応用技術部会セキュリティWG 2004/05/24 2 セキュリティWG 活動概要 活動内容・目的 セキュリティ関連XML技術を中心に、 ・規格調査と普及への啓蒙活動 ・実装ノウハウの収集と相互運用性の検証 を行なう。 メンバー(五十音順) ・ ・ ・ ・ ・ 池上(沖電気工業) 岡村(ネット・タイム) 小堀(リコーシステム開発) 坂田(日立製作所) 山口(日本テレコム) © Copyright XML Consortium ・ 上田(コニカミノルタビジネステクノロジーズ) ・ 河村(ロココ) ・ 坂田(NTTデータ) ・ 道村(富士ゼロックス) 応用技術部会セキュリティWG 2004/05/24 3 活動実績と今年度の目標 z 昨年度迄の活動実績 2001年度 2002年度 2003年度 XKMSを使った 電子署名システム XML暗号による部分暗号と SAMLによるSSOの実現 SAML z 今年度の目標 – 昨年度迄の成果を集大成として結集したデモシステムを開発 ・ XML Signature ・ XML Encryption ・ SAML © Copyright XML Consortium 応用技術部会セキュリティWG 2004/05/24 4 実装目標 z コミュニティメンバ同士で権限委譲 SAML拡張 <権限委譲情報> 署名 発行者名: 坂田 対象者 : 下田 権限 : サッカーチケット購入 利用制限:1000円まで、決済機能付 チケットサイト 日本代表応援 ネットコミュニティ 請求書 決済会社サイト 請求書 請求書 © Copyright XML Consortium 応用技術部会セキュリティWG 2004/05/24 5 計画 z z 月に一回の応用技術部会のミーティングとメールで活動 調査や設計、実装は、自分で工夫した時間で 2003年 7月 8月 9月 2004年 10 月 11 月 12 月 1 月 2月 3月 4月 5月 6月 テーマ選定 仕様検討・設計 エンジン調査・実装 AP実装 接続試験 © Copyright XML Consortium 応用技術部会セキュリティWG 2004/05/24 6 本日の報告内容 z 背景と目標 – 活動概要 – 実績と今年度の目標 z 開発したデモシステム – – – – z ストーリー セキュリティ上の課題と対応 システム構成 個別システム デモ © Copyright XML Consortium 応用技術部会セキュリティWG 2004/05/24 7 デモシステム:ストーリー z 2005年5月オリンピックカメラ勤務の下田さんはスポーツバーで サッカーファン仲間と2006年開催の“ワールドカップ”の話題で 盛り上がった・・ ‐ 下田さんが「皆でドイツに行ってワールドカップを観戦しようよ」と提案 ‐ 下田さんは全員分の“2006 World Cup Germany”のチケットを手配す ることに – チケット代金も下田さんがまとめて決済 z 適用した仕様 1. XML Signature(権限委譲情報に付与) 2. XML Encryption(カード番号等は下田さんやチケット会社に見せない) 3. SAML拡張(権限委譲情報の記述) © Copyright XML Consortium 応用技術部会セキュリティWG 2004/05/24 8 システム上の課題と対応(1/3) ∼電子署名による改竄検出∼ z データの受信者は電子署名を検証することで、途中経路で の改竄がないことを確認 下田 申込書+Card No. 委任状 「下田」署名 ワールドチケット BEGINNER この申込書は途中で 改竄されていないコトを確認 電子署名の検証 電子署名の付与 与信 請求書+Card No. 「下田」署名 「ワールドチケット」署名 下田さんの情報も途中で 改竄されていないコトを確認 © Copyright XML Consortium 応用技術部会セキュリティWG 「ワールドチケッ ト」 署名の検証 「下田」署名の 検証 2004/05/24 9 システム上の課題と対応(2/3) ∼暗号化によるデータの秘匿∼ z データの送信者は受信者の公開鍵で暗号化することで、 途中経路で見せたくないデータを秘匿 下田 ワールドチケット BEGINNER 申込書+Card No. 委任状 Card No.の暗号 暗号 申込書+Card No. 委任状 Card No.は解らなくても 処理は可能 与信 請求書+Card No. 暗号 Card No.の復号 復号したCard No.の 有効性を検証 © Copyright XML Consortium 応用技術部会セキュリティWG 与信 請求書+Card No. 2004/05/24 10 システム上の課題と対応(3/3) ∼認証要求と認証許可の記述(前半)∼ z サービスの意思決定に必要な属性情報の交換を 安全に実現する 友人 下田 認証オーソリティ 属性オーソリティ ログイン(認証Query) 「下田さん」に、「5万円以内」の 「ワールドカップサッカー」の チケット購入の委任状を登録 認証Assertion 委任状 ログイン(認証Query) 認証Assertion 委任状要求(属性Query) 「下田さん」宛ての 委任状を送信 © Copyright XML Consortium 属性Assertion 委任状 応用技術部会セキュリティWG 「下田さん」の 認証状態を確認 2004/05/24 11 システム上の課題と対応(3/3) ∼認証要求と認証許可の記述(後半)∼ z サービスの意思決定に必要な属性情報の交換を 安全に実現する 下田 属性オーソリティ ワールドチケット PDP 属性Assertion 委任状 申込書+Card No. 属性Assertion 委任状 委任状の確認 (下田さんの権限認 可) 認可決定Query No. 属性Assertion 委任状 「属性情報」と 「委任状」を 切り出す 認可決定Assertion © Copyright XML Consortium 応用技術部会セキュリティWG 2004/05/24 12 システム構成(1/2) 認証オーソリ ティ 属性オーソリ ティ ポリシー決定点 委任状 確認要求 委任状要求 委任状 確認結果 委任状 認証 委任状 委任状 カード会社 (BEGINNER) 友人A 認証 与信 友人B 与信結果 支払情報 利用者・友人 利用者・友人 © Copyright XML Consortium 利用者・幹事 (下田) 応用技術部会セキュリティWG チケット販売 (ワールドチケット) 2004/05/24 13 システム構成(2/2) z 言語・ライブラリ 実装する機能 言語・ライブラリ類 OS 友人1 SAML(ログイン、 XML 署名) 委任状作成(XML 署名・暗号) Java(J2SE 1.5β、JavaCard 2.1.1) SAML:OpenSAMLをベースに拡張 XML署名・暗号:Apache XML Security+独自実装 ICカードアクセス:OpenCard Framework 1.2 Windows 2000 Professional JCOP 21id 友人2 SAML(ログイン、XML署名) 委任状作成(XML署名・暗号) Java(J2SE build 1.4.2_04-b05) SAML:独自実装、XML署名・暗号:TSIK Windows 2000 Professional 下田さん SAML(ログイン、委任状取得) XML 署名・暗号 Microsoft Visual Studio .NET 2003 Windows2000 Professional +SP4 認証オーソリ ティ SAML認証 XML署名・暗号 Java(J2SDK 1.4.2_03) Windows XP SAML:OpenSAML、XML署名・暗号:Apache XML Security、 Professional SP1 SOAP:Apache Axis、 JCAプロバイダ:BauncyCastle 属性オーソリ ティ SAML属性クエリ処理 XML署名 Java Apache XML Security, Axis 1.1,Tomcat 5.0 Windows2000 ポリシー決定点 SAML認可 XML署名・暗号 Java アプリケーションサーバ:日立 Cosminexus V6 SOAP、XML署名・暗号: 同上 SAML:OpenSAMLをベースに拡張 Windows2000 Server チケット会社 SAML認可要求 XML署名 Java(J2SDK 1.4.2_03) TSIK1.10, Tomcat5.0 Windows2000 Professional カード会社 XML署名・暗号 © Copyright XML Consortium ポリシー決定点と同様 応用技術部会セキュリティWG 2004/05/24 14 個別システム 各担当者の資料をご参照ください © Copyright XML Consortium 応用技術部会セキュリティWG 2004/05/24 15 応用技術部会 セキュリティWG活動 ∼ SAML, XML Signature, XML Encryptionの実装∼ (友人編) 2004年5月24日 XML Consortium 応用技術部会 セキュリティWG: 岡村 和英 (株式会社ネット・タイム) 担当箇所 認証オーソリティ 属性オーソリティ ポリシー決定点 委任状 確認要求 委任状要求 委任状 確認結果 委任状 認証 委任状 委任状 カード会社 (BEGINNER) 友人A 認証 与信 友人B 与信結果 支払情報 利用者・友人 利用者・友人 © Copyright XML Consortium 利用者・幹事 (下田) 応用技術部会セキュリティWG チケット販売 (ワールドチケット) 2004/05/24 1 設計のポイント z SAMLプロトコルを用いた認証処理 – 認証クエリと電子署名を組み合わせることにより、クエリ要求者を識 別・認証することが可能に。 z SAMLオーソリティを用いた委任状の交換 – 相手(下田さん)と直接通信することなく、安全な経路で委任状の受け 渡しが可能に。 z XML暗号、XML電子署名の利用 – 委任状に含まれるクレジットカード情報部分はクレジットカード会社の 公開鍵で暗号化されており、途中経路での解読を防止。 – 委任状全体に自分の電子署名を付与することにより、改竄を防止。 © Copyright XML Consortium 応用技術部会セキュリティWG 2004/05/24 2 実装のポイント z JavaCardの利用 – Javaプログラムを格納・実行可能なICカード。 – RSA非対称鍵ペアをICカード内部で生成可能。 ¾ 秘密鍵がカード外部に出力されない為、機密性が非常に高い。 (但し、今回は検証実験の都合上、外部で生成した鍵をインポートして利用) – クレジットカード情報(XML文書)をICカード内部で生成・暗号化。 ¾ ICカード内で生成された秘密鍵(3DES鍵)でカード情報を暗号化。 ¾ 秘密鍵は事前にICカードに登録されたクレジットカード会社の公開鍵で 暗号化した状態でのみ取り出し可能。 ¾ ユーザのPCのメモリ上を含む全経路で、カード情報を機密化。 – 電子署名値をICカード内部で演算。 ¾ 署名演算に必要な秘密鍵がカード外部に出力されない。 © Copyright XML Consortium 応用技術部会セキュリティWG 2004/05/24 3 システム構成 z PC側アプリケーション – – – – – – – z Windows 2000 Professional SP4 J2SDK 1.5.0β1 OpenSAML 1.0 Apache XML Security 1.1 Apache Axis 1.1 Xerces 2.6.2 DOM3 OpenCard Framework 1.2 JavaCard – IBM JCOP 21id (JavaCard 2.1.1 & Open Platform 2.0.1) – IBM JCOP Development Tools 3.0 for Eclipse © Copyright XML Consortium 応用技術部会セキュリティWG 2004/05/24 4 ログイン(認証) PC 友人 JavaCard 認証オーソリティ 属性オーソリティ 認証クエリ生成 SignedInfo生成 電子署名 SOAP呼び出し 署名検証 認証アサーション生成 認証アサーション確認 © Copyright XML Consortium 応用技術部会セキュリティWG 2004/05/24 5 委任状の登録 PC 友人 JavaCard 認証オーソリティ 属性オーソリティ 暗号鍵生成 カード情報生成 委任状生成 暗号化 SignedInfo生成 電子署名 SOAP呼び出し 署名検証 属性登録 応答確認 © Copyright XML Consortium 応用技術部会セキュリティWG 2004/05/24 6 考察と感想 z 苦労した点、工夫した点 – JavaCard ¾ 暗号化の際のメッセージパディングがISO9097方式にしか対応していなかった為、 カードアプリケーション側でISO10126方式を実装。 ¾ 3DES暗号処理が2Key方式のみの対応であったため、鍵暗号化の際に 2Key→3Keyに拡張。(DES処理の組み合わせで3Keyへの対応を行うことも可能で あったが、煩雑になるため今回は未実施。) – Apache XML Security ¾ 作業対象となるエレメントをDOMツリー上でドキュメントエレメントとなるように配置 しておかないと正しく処理できない。 → ドキュメントエレメントを都度remove/appendしながら処理。 ¾ 内部変数を多用しており、一見無関係に見えるAPIが動作に影響しあっているの で要注意。 – OpenSAML ¾ 0.9はバグだらけだったが、1.0になってだいぶ安定してきた。しかしまだ、スキーマ と合致していない箇所があるので要注意。 – Axis ¾ javax.xml.soapパッケージを利用したが、DOMとの互換性がないのはとても不便。 → インターフェースの実装実体であるorg.apache.axis.messageパッケージにキャ スト。 ‐ GUIの実装 ¾ 接続実験完了後に実装・・・・ なんとか間に合った。 © Copyright XML Consortium 応用技術部会セキュリティWG 2004/05/24 7 応用技術部会 セキュリティWG −SAML, XML Signature, XML Encryptioの実装− (友人編) 2004年5月24日 XML Consortium 応用技術部会 セキュリティWG: 道村 唯夫 (富士ゼロックス株式会社) 報告内容 z デモシステム – 自分の担当箇所の説明(シーケンス図) z 設計と実装 – – – z 内容 活動実績 実装環境 規模 クラス図 考察と感想 – – – – 苦労した点など 今後の計画 感想 謝辞 © Copyright XML Consortium 応用技術部会セキュリティWG 2004/05/24 1 デモでのデータフロー 友人 下田 認証オーソリティ 属性オーソリティ ワールドチケット PDP BEGINNER ログイン(認証Query) 認証Assertion 委任状 カード情報等は 暗号化 ログイン(認証Query) 認証Assertion 友人のチケットの 決済も行なう 委任状要求(属性Query) 属性Assertion 委任状 「下田さん」宛の 委任状を送付 申込書+Card No. 委任状 委任状確認(認可決定Query) 認可決定Assertion この与信は本当に 「ワールドチケット」か ら? ⇒送信者確認 与信 請求書+Card No. 電子チケット送付 決済完了通知 © Copyright XML Consortium チケット決済完了 応用技術部会セキュリティWG 与信結果 2004/05/24 2 システム構成 認証オーソリ ティ 属性オーソリ ティ ポリシー決定点 委任状 確認要求 委任状要求 委任状 確認結果 委任状 認証 委任状 委任状 カード会社 (BEGINNER) 友人A 認証 与信 友人B 与信結果 支払情報 利用者・友人 利用者・友人 © Copyright XML Consortium 利用者・幹事 (下田) 応用技術部会セキュリティWG チケット販売 (ワールドチケット) 2004/05/24 3 設計と実装 z 内容 – 認証オーソリティへの認証要求の作成と送付 • SMAL Requestの生成 • XML Signatureの付与 – 認証オーソリティからの応答の受信と検証 • XML Signatureの検証 • SAML Responseの解析 – 属性オーソリティへの委任状の作成と送付 • 内容の生成 • XML Encryptionによる暗号化 • XML Signatureの付与 – 属性オーソリティからの応答の受信と確認 • 内容の確認 © Copyright XML Consortium 応用技術部会セキュリティWG 2004/05/24 4 設計と実装(続き) z 活動実績 – 部会の活動にはほとんど参加できず、メンバの方々にはご迷惑をかけた – メンバの方々の設計・実装が進んだ2004年5月に入ってから実装を開始 2003年 6月 7月 8月 部会参加 部会参加 お休み z 9月 2004年 10 月 11 月 12 月 1 月 2 月 3月 忘年会 お休み 4月 5月 実装 お休み 発表 試験 実装環境 – オペレーティングシステム: Microsoft Windows 2000 Professional (SP4) – プログラミング言語: Java (Java2 SE build 1.4.2_04-b05) – ライブラリ • Cryptographic Algorithms: Bouncy Castle Crypto Package (1.23 for Java 1.4) • SOAP / Signature / Encryption: TSIK (VeriSign Inc.) • SAML: 独自実装 © Copyright XML Consortium 応用技術部会セキュリティWG 2004/05/24 5 設計と実装(続き) z 規模 (資料作成時) – 実装/接続試験: 22H / 12H – 総ライン数: 1415 lines z クラス図 (概略) SAMLObject Attorney XML SAMLLogin Entrust SOAPClient Login AttorneyDialog SecurityDemo LoginFrame © Copyright XML Consortium 応用技術部会セキュリティWG 2004/05/24 6 考察と感想 z 苦労した点など – 既存のツールをそのまま使ったため、柔軟性に欠ける • 完全に最新規格/勧告に適合させることができなかった – SOAPAction、Content-Type、saml:ReferenceIDなど – XML Encryptionの暗号、復号の接続性確保 • ツール、実装が異なると接続性の確保が困難 • 直接/間接の接続相手が増えると、確認作業がたいへん – 接続相手nの場合、「n × (n – 1) ÷2」の作業が必要 – TSIKについて • 理解が容易で洗練されたインタフェース – 微調整は困難だが、TSIKどうしであれば、必ず同じ結果が得られる • 必要充分な機能を持つ – しかし、最新規格/勧告への追従は? • パッケージに含まれているサンプルが少なく、他に公開されたものもほとんどない © Copyright XML Consortium 応用技術部会セキュリティWG 2004/05/24 7 考察と感想(続き) z 今後の計画 – 応用部会の活動への継続的な参加が厳しい – チャンスがあれば、オープンソースの実装(Apache XML Security、OpenSAML など)をもとに、改良を加えながらの設計・実装を実施したい • Open SourceのPackageの存在は重要 z 感想 – 今回のシステム(担当部分)としては、「なんとか接続ができること」を目標にした ため、設計・実装ともにあまり良いものではなかったように思う – 署名、暗号仕様は、曖昧さもなく、一般的なものになってきたが、、、 • 仕様が広範なため、応用、ライブラリ開発には工夫と割り切りが必要 • まだまだ相互接続性の確認が重要 – 接続間で環境(ツールやライブラリ)、実装を揃えておくと、苦労が少なくてすむ – 規格/勧告を応用するにあたり、適用方法の設計が重要である • 特に、SAMLは適用範囲が広く、他の規格/勧告との組み合せ方の考慮も必要 z 謝辞 – 応用技術部会/セキュリティWGのみなさまに感謝しています © Copyright XML Consortium 応用技術部会セキュリティWG 2004/05/24 8 最後に z Java 及びすべてのJava関連の商標及びロゴは,米国及びその他の国 における米国Sun Microsystems,Inc.の商標または登録商標です z Windowsは,米国およびその他の国における米国Microsoft Corp.の登 録商標です z VeriSignは、米国VeriSign Inc.の登録商標です z その他、記載されている会社名、製品名は各社の登録商標または商標 です © Copyright XML Consortium 応用技術部会セキュリティWG 2004/05/24 9 応用技術部会 セキュリティWG −SAML, XML Signature, XML Encryptioの実装− 2004年5月24日 XML Consortium 応用技術部会 セキュリティWG:河村 博文 (株式会社ロココ) デモシステム 友人 下田 認証オーソリティ 属性オーソリティ PDP ワールドチケット BEGINNER ログイン(認証Query) 「友人」署名 認証Assertion 「認証オーソリティ」署名 「友人」署名の 検証 Assertionの 生成 認証オーソリティ 認証しています。 ログイン(認証Query) 認証Assertion © Copyright XML Consortium 確かに認証オーソリ ティが発行しています。 「下田」署名の 検証 Assertionの 生成 応用技術部会セキュリティWG 2004/05/24 1 設計と実装1 z 作業内容について ‐ SAML認証オーソリティ z 処理手順 ‐ ユーザよりSOAPメッセージで送信されたRequestを取得 ‐ Requestの署名を検証 ‐ Requestの署名の検証が成功した場合 StatusにSccessを表示し OpenSAMLによるAssertionの作成 Assertionを付加しResponseを作成 XMLSecurityを使用し、認証オーソリティ側の鍵で署名を添付 以上を行い、返信する ‐ Requestの署名の検証が失敗した場合、Falseのメッセージを返信する © Copyright XML Consortium 応用技術部会セキュリティWG 2004/05/24 2 設計と実装2 z クラス図 SAMLSignedObject SAMLSOAP -ks : KeyStore +signForXMLCon(String alg, Key k, String keyName) +chkSAMLMessage(byte[] elem) +verify(Certificate cert) chkSAMLMessageにユーザから送られたRequestを取得 取得したRequestの署名をSAMLSignedObjectのverifyにより検証 署名の検証に成功すると Assertionを作成 Assertionを付加してResponseを作成 SAMLSignedObjectのsignForXMLConにより署名の作成 以上をし、Responseを返す © Copyright XML Consortium 応用技術部会セキュリティWG 2004/05/24 3 設計と実装3 z 実装環境 – Windows XP Professional SP1 – J2SDK 1.4.2_03 – Apache Tomcat 4.1.30 – Apache Axis 1.1 Final – Apache XML Security2.0 – Open SAML © Copyright XML Consortium 応用技術部会セキュリティWG 2004/05/24 4 考察と感想 z 苦労した点 – 動作環境の調査と構築 – 署名検証を通す為正規化方式を ALGO_ID_C14N_EXCL_OMIT_COMMENTSから ALGO_ID_C14N_OMIT_COMMENTSに変更した点 z 計画と状況 – 当初メッセージの送受信をElementにて行う予定であったが、 SOAPにAxisを使いJWSで実現しようとしたが至たらず Base64 RPC Encodingにて送受信を行っている。 © Copyright XML Consortium 応用技術部会セキュリティWG 2004/05/24 5 応用技術部会 セキュリティWG活動 -SAML,XML Signature, XML Encryptionの実装∼ .NET編∼ 2004年5月24日 XML Consortium 応用技術部会 セキュリティSWG: 池上 勝美 (沖電気工業株式会社) 報告内容 z z デモシステム 設計と実装 © Copyright XML Consortium 応用技術部会セキュリティWG 2004/05/24 1 デモシステム z ストーリ ‐ 下田さんが「皆でドイツに行ってワールドカップを観戦しようよ」と提案 ‐ 下田さんは全員分の“2006 World Cup Germany”のチケットを手配す ることに ‐ チケット代金も下田さんがまとめて決済 ・ チケットを注文 ・ 自身の代金はクレジットカードで決済 ・ 友人の代金は委任状を取り寄せて処理 z 処理概要 ‐ システムへのログイン(SAML Authentication) ‐ 委任状の取得(SAML Assertion) ‐ 申し込み書の作成(XML Signature、XML Encryption) © Copyright XML Consortium 応用技術部会セキュリティWG 2004/05/24 2 デモシステム z 構成 認証オーソリティ 属性オーソリティ ポリシー決定点 委任状 確認要求 委任状要求 委任状 確認結果 委任状 認証 委任状 委任状 カード会社 (BEGINNER) 友人A 認証 与信 友人B 与信結果 支払情報 利用者・友人 利用者・友人 © Copyright XML Consortium 利用者・幹事 (下田) 応用技術部会セキュリティWG チケット販売 (ワールドチケット) 2004/05/24 3 デモシステム(続き) z 処理シーケンス 下田 署名の付与と検証 属性オーソリティ 認証オーソリティ ワールドチケット ログイン(認証Query) 認証Assertion 委任状要求(属性Query) 属性Assertion 委任状 署名の付与と検証 申込書+Card No. 属性Assertion 委任状 委任状の確認 (下田さんの権限認可) 暗号化 署名の付与 © Copyright XML Consortium 応用技術部会セキュリティWG 2004/05/24 4 設計と実装 z 目標 ‐ SAML Authentication、SAML Assertionの開発 – XML Signature、XML Encryption実装 • XML Signature:2001年度開発済み • XML Encryption:2002年度開発済み z 環境 ‐ Windows 2000 Professional SP4 – Microsoft Visual Studio .NET 2003 – C# © Copyright XML Consortium 応用技術部会セキュリティWG 2004/05/24 5 設計と実装(続き) z クラス図 Login:SAML Purchase SOAPHttpClientProtocol AttorneyLetter: SAML XML Encryption XML Signature KeyStore © Copyright XML Consortium 応用技術部会セキュリティWG 2004/05/24 6 設計と実装(続き) z 工夫した点:Requestメッセージへの署名 工夫した点: Subject 署名の 範囲 AttibuteDesignator AttributeQuery Request サービスのインタフェース ResponceType Request( AttributeQuery aq) { } 課題: AP(Loginクラス)から署名対象のド キュメントが取得できない 対処: SOAPExtentionでSOAPメッセージを 取得した後に署名 Body Envelope © Copyright XML Consortium SAMLExtention SOAPExtention 応用技術部会セキュリティWG 2004/05/24 7 設計と実装(続き) z 工夫した点:“RequestId”への署名 署名対象は“RequestId” <Request xmlns="urn:oasis:names:tc:SAML:1.0:protocol" IssueInstant="2004-5-140T03:47:21.2889792Z" MajorVersion="1" MinorVersion="1" RequestId="b8023c717f2df0d448c49da277c1"> <AttributeQuery> <Subject xmlns="urn:oasis:names:tc:SAML:1.0:assertion"> ・・・・・・・・・・・・・・・ </Subject> <AttributeDesignator AttributeName="AttorneyLetter" xmlns="urn:oasis:names:tc:SAML:1.0:assertion"/> </AttributeQuery> <Signature xmlns="http://www.w3.org/2000/09/xmldsig#"> <SignedInfo> ・・・・・・・・・・・・・・・ <Reference URI="#b8023c717f2df0d448c49da277c1"> ・・・・・・・・・・・・・・・ </Reference> </SignedInfo> ・・・・・・・・・・・・・・・ </Signature> < /Request> © Copyright XML Consortium 課題: SignedXmlのEnvelopedSignatureは“Id” 属性から署名対象を取得する。 RequestId:SAMLに対して署名できない。 対処: SingedXmlを継承したSignedXmlExで、 GetIdElementを拡張し、RequestIdへの署 名を実現。 応用技術部会セキュリティWG 2004/05/24 8 設計と実装(続き) z 実装結果:プログラム – コア部分 • 新規:ログイン、認証、SAMLExtention、Parchase(自動生成分を除く) – クラス数:4 – ライン数:約300 • 変更流用:XML Signature – パッケージ数:1 – 変更ライン数:約100 • 流用:XML Encryption、KeyStore – デバック用 • 新規:テストアプリケーション、テストサーバ – ライン数:約300(予定) z 実装結果:開発時間 注)5/20現在 – 調査:60H – コーディング:20H © Copyright XML Consortium 応用技術部会セキュリティWG 2004/05/24 9 応用技術部会 セキュリティWG −SAML, XML Signature, XML Encryptionの実装− 2004年5月24日 XML Consortium 応用技術部会 セキュリティWG: 坂田 祐司 作成 (株式会社 NTTデータ) システム構成 認証オーソリティ 属性オーソリティ ポリシー決定点 (PDP) 委任状 確認要求 委任状要求 委任状 確認結果 委任状 認証 委任状 委任状 カード会社 (BEGINNER) 友人A 認証 与信 友人B 与信結果 支払情報 利用者・友人 利用者・友人 利用者・幹事 (下田) チケット販売 (ワールドチケット) PDP:Policy Decision Point © Copyright XML Consortium 応用技術部会セキュリティWG 2004/05/24 1 デモでのデータフロー 友人 下田 認証オーソリティ 属性オーソリティ PDP ワールドチケット Beginner ログイン(認証Query) 認証Assertion 委任状 ログイン(認証Query) 認証Assertion 委任状要求(属性Query) 属性Assertion 委任状 申込書+Card No. 委任状 委任状確認(認可決定Query) 認可決定Assertion 決済完了通知 © Copyright XML Consortium チケット決済完了 応用技術部会セキュリティWG 与信 請求書+Card No. 与信結果 2004/05/24 2 作業実績と問題点 z 作業内容 – 属性オーソリティの開発 – 委任状の取得 9 委任状を登録要求を受け取り、要求者の署名を検証 9 委任されたユーザ(下田さん)の属性として委任状を登録 9 委任状の発行 9 委任状取得要求をSAMLクエリとして受け取る 9 要求者の署名を検証し、署名者が委任されているユーザである事を確認 9 委任状を添付したSAML Assertionを要求者に返却 z 障害となった点 – SAMLのXML署名の互換性 Apache XML Securityは、SAMLのID属性(AssertionID等)を署名箇所と して指定するためには独自の作りこみが必要。 © Copyright XML Consortium 応用技術部会セキュリティWG 2004/05/24 3 応用技術部会 セキュリティWG −SAML, XML Signature, XML Encryptionの実装− 2004年5月24日 XML Consortium 応用技術部会 セキュリティWG: 坂田 匡通 (株式会社日立製作所) 報告内容 z デモシステム – 自分の担当箇所の説明(シーケンス図) z 設計と実装 - 作業内容について - 実装環境・規模 など z 考察と感想 – 苦労した点 – 工夫した点 など © Copyright XML Consortium 応用技術部会セキュリティWG 2004/05/24 1 システム構成 担当 報告者担当 認証オーソリティ 属性オーソリティ ポリシー決定点 (PDP) 委任状 確認要求 委任状要求 委任状 確認結果 委任状 認証 委任状 委任状 カード会社 (BEGINNER) 友人A 認証 与信 友人B 与信結果 支払情報 利用者・友人 利用者・友人 利用者・幹事 (下田) チケット販売 (ワールドチケット) PDP:Policy Decision Point © Copyright XML Consortium 応用技術部会セキュリティWG 2004/05/24 2 デモでのデータフロー 友人 下田 認証オーソリティ 属性オーソリティ PDP ワールドチケット BEGINNER ログイン(認証Query) 認証Assertion 委任状 ログイン(認証Query) 認証Assertion 委任状要求(属性Query) 属性Assertion 委任状 委任状の内容を検 証し、認可決定を 行う。(署名検証) 申込書+Card No. 委任状 暗号化されているク レジット情報を復号 化し、与信を行う。 (3人分) 委任状確認(認可決定Query) 認可決定Assertion 決済完了通知 © Copyright XML Consortium チケット決済完了 応用技術部会セキュリティWG 与信 請求書+Card No. 与信結果 2004/05/24 3 設計と実装 z 環境 – – – – – OS:Windows 2000 Server 開発言語:Java アプリケーションサーバ: 日立 Cosminexus V6 SOAP、XML署名・暗号: 同上 SAML:OpenSAMLをベースに拡張 Windowsは,米国およびその他の国における米国Microsoft Corp.の登録商標です。 Java 及びすべてのJava関連の商標及びロゴは,米国及びその他の国における米国Sun Microsystems,Inc.の商標または登録商標です。 OpenSAML:http://www.opensaml.org/ © Copyright XML Consortium 応用技術部会セキュリティWG 2004/05/24 4 作業実績 z 作業内容 – ポリシー決定点およびクレジットサービスの開発 9 委任状の内容を検証し、SAML認可Assertionを発行。 9 クレジット情報のXML暗号を復号化し、与信を行う。 – オフラインでの互換性試験 – オンラインでの接続試験 z 新規開発規模 – ライン数:約500ステップ – クラス数:3 © Copyright XML Consortium 応用技術部会セキュリティWG 2004/05/24 5 障害となった点、工夫した点など 前年度はSAMLを用いたシングル・サインオンを実装。 →今回は新たにSAML認可の利用、XML暗号にチャレンジ。 障害となった点 • SAMLのXML署名の互換性 ツールによりSAMLのID属性(AssertionID等)を署名箇所として 指定できない場合がある。 →AssertionIDをIDとして判定できるように、独自にSAMLIDResolverを開発 <Reference URI=“#assertionId”>の解釈を可能にした。 仕様の疑問点 • SAMLでは認可クエリーで指定できる情報が少ない。 (条件など細かい指定ができない) →細かいアクセス制御はXACMLを利用した方が良い。 © Copyright XML Consortium 応用技術部会セキュリティWG 2004/05/24 6 応用技術部会 セキュリティWG活動 ∼ TSIKによるSAML, XML Signatureの実装∼ 2004年5月24日 XML Consortium 応用技術部会 セキュリティWG: 山口 英子 (日本テレコム株式会社) 本日の報告内容 z z z デモシステム - 担当箇所の説明 設計と実装 - 作業内容 - シーケンス図 - メッセージの解説 感想 - 苦労した点など © Copyright XML Consortium 応用技術部会セキュリティWG 2004/05/24 1 担当箇所(1/2) 認証オーソリ ティ 属性オーソリ ティ ポリシー決定点 委任状 確認要求 委任状要求 委任状 確認結果 委任状 認証 委任状 委任状 カード会社 (BEGINNER) 友人A 認証 与信 友人B 与信結果 支払情報 利用者・友人 利用者・友人 © Copyright XML Consortium 利用者・幹事 (下田) チケット販売 (ワールドチケット) 応用技術部会セキュリティWG 2004/05/24 2 担当箇所(2/2) z ワールドチケットの役割 1. 2. 3. 4. z 下田さんから申込書を受信 申込書に付与されている委任状の権限を確認 カード会社へ与信データを送付 与信が完了したら、下田さんへ手続完了をお知らせ 適用した仕様 1. XML Signature(署名の記述/署名の検証) 2. SAML(委任状の利用権限の認可) ※ XML Encryption →カード情報は本人とカード会社にしか見せないため、 ワールドチケットは暗号化されたデータをそのまま処理 © Copyright XML Consortium 応用技術部会セキュリティWG 2004/05/24 3 作業内容 調査 z z z SAMLの理解 TSIKの調査 - 昨年も利用したため、バージョンアップのみ SOAPの理解 - PDP/BEGINNERカードとのやりとりはSOAPで実施 設計と実装 z z Attribute AssertionからAuthorization Decision Queryを生成 SOAPでの送受信を実装 © Copyright XML Consortium 応用技術部会セキュリティWG 2004/05/24 4 ワールドチケットの実装 下田 ワールドチケット PDP カード情報等は 暗号化 友人のチケット購入 に関する権限認可 BEGINNER 暗号 申込書+Card No. 属性Assertion 委任状 認可決定Query No. 属性Assertion 委任状 「属性情報」と 「委任状」を 切り出す 認可決定Assertion 与信 請求書+Card No. 暗号 チケット決済完了 電子チケット送付 © Copyright XML Consortium 与信結果 決済完了通知 応用技術部会セキュリティWG 2004/05/24 5 メッセージの解説(1/2) z PDPへ送るSOAPメッセージ(認可決定Query) <?xml version=“1.0” encoding=“UTF-8” ?> <s:Envelope xmlns:s=“http://schemas.xmlsoap.org/soap/envelope/”> <s:Header /> <s:Body> <samlp:Request IssueInstant=“2004-05-13T07:21:48Z” MajorVersion=“1” MinorVersion=“0” RequestID=“3234b750-a4ae-11d8-8124-09a59c9c58c9” xmlns:samlp=“urn:oasis:names:tc:SAML:1.0:protocol”> <samlp:RespondWith xmlns:saml=“urn:oasis:names:tc:SAML:1.0:assertion”>saml:SuthorizationDecisionQuery</samlp:RespondWith> <ds:Signature xmlns:ds=“http://www.w3.org/2000/09/xmldsig#”> 署名本体、鍵情報など </ds:Signature> <samlp:AuthorizationDecisionQuery Resource=“http://www.jfb.co.jp/wc-ticket/”> <saml:Subject xmlns:saml=“urn:oasis:names:tc:SAML:1.0:assertion”> <saml:SubjectConfirmation> <saml:ConfirmationMethod>urn:oasis:names:tc:SAML:1.0:am:password</saml:ConfirmationMethod> </saml:SubjectConfirmation> </saml:Subject> <saml:Action Namespace=“urn:oasis:names:tc:SAML:1.0:action:rwedc” xmlns:saml=“urn:oasis:names:tc:1.0:assertion”>Execute</saml:Action> <saml:Evidence xmlns:saml=“urn:oasis:names:tc:SAML:1.0:assertion”> 委任状 </saml:Evidence> </samlp:AuthorizationDecisionQuery> </samlp:Request> </s:Body> </s:Envelope> © Copyright XML Consortium 応用技術部会セキュリティWG 2004/05/24 6 メッセージの解説(2/2) z 与信情報(カード会社へ送信) <?xml version=“1.0” encoding=“UTF-8” ?> <XMLPayRequest xmlns=“http://www.verisign.com/XMLPay/”> <RequestData id=“WTSign”> : <PurchaseData xmlns=“http://www.xmlconsortium.org/app-sec”> <Purchase Id=“UserSign”> 下田さんの情報、購入希望チケットの情報 <PaymentMethod> <CreditInfo CardType=“BEGINNER”> <EncryptedData xmlns=“http://www.w3.org/2001/04/xmlenc#”> 暗号化した情報、鍵の情報 </EncryptedData> </CreditInfo> 友人のカード情報(委任状の認可情報) </PaymentMethod> </Purchase> 下田さんの署名 </PurchaseData> : 下田さんの 署名対象 WorldTicketの 署名対象 </RequestData> <RequestAuth> <ds:Signature xmlns=“” xmlns:ds=“urn:oasis:names:tc:SAML:1.0:assertion”> <ds:SignedInfo><ds:Reference URI=“#WTSign”>・・・</ds:Reference></ds:SignedInfo> <ds:SignatureValue>署名の値</ds:SignatureValue> <ds:KeyInfo>鍵情報</ds:KeyInfo> </ds:Signature> </RequestAuth> </XMLPayRequest> © Copyright XML Consortium 応用技術部会セキュリティWG 2004/05/24 7 感想 z z z z z z TSIKを用いた、署名の付与&検証は昨年度とほぼ同じ 新しく取り組んだのは、SAMLとSOAP TSIKはSAMLに関するAPIにもあまり情報が記載されていない 明示的にNamespaceを記述しなければならない点など、 知らないと永遠に悩みつづけてしまう可能性がある 署名に関しては、XML Signatureというよりも、 署名位置や検証位置を示すXPath, XPointerの理解が必要不可欠 SOAPサーバを保持していなかったため、 他のメンバーに負担をかけてしまった →簡単に使えるSOAPサーバがあったら良いなぁ。 © Copyright XML Consortium 応用技術部会セキュリティWG 2004/05/24 8 本日の報告内容 z 背景と目標 – 活動概要 – 実績と今年度の目標 z 開発したデモシステム – – – – z ストーリー セキュリティ上の課題と対応 システム構成 個別システム デモ © Copyright XML Consortium 応用技術部会セキュリティWG 2004/05/24 9 デモンストレーション (参考) リンク OASISのSAML標準化技術コミッティのWWWサイト http://www.oasis-open.org/committees/security/ SAML1.1の仕様 http://www.oasis-open.org/specs/index.php#samlv1.1 SAMLの日本語解説 「SAML技術解説」SAML技術解説,XMLコンソーシアム 技術解説書 http://www.xmlconsortium.org/websv/kaisetsu/C10/content.html Liberty Alliance http://www.projectliberty.org/ OpenSAML http://www.opensaml.org/ TSIK(Trust Service Integration Kit) http://www.xmltrustcenter.org/developer/verisign/tsik/index.htm © Copyright XML Consortium 応用技術部会セキュリティWG 2004/05/24 11