このドキュメントは A P3P Assurance Signature Profile W3C Note 2 February 2001 http://www.w3.org/TR/2001/NOTE-xmldsig-p3p-profile-20010202/ の和訳です。 この文書には和訳上の誤りがありえます。 内容の保証はいたしかねますので、必ずW3C Webサイトの正式版文書を参照して下さい。 また、著作権等については本文書に含まれる記述に加え、こちらも必ず参照してください。 |
Copyright(C) 2001 W3C® (MIT, INRIA, Keio), All Rights Reserved. W3C 免責, 登録商標, 文書の使用 そして ソフトウエアライセンスに関する規則が適用される。
本書は P3P Assurance Signature Profileを述べたものである。意図した鍵の所有者の意味(保証)は
SignatureProperty
を通じて署名(Signature)に制約を受けている。
本文署は W3Cメンバーのレビュー用であり、標準拠の仕様を意図したものではないが、アプリケーションがどのようにして(署名のセマンティクとアルゴリズムプロファイルを定義している)必要事項を満たすXML Signature仕様書を使用するのかという事に関する著者の考えを述べたものである。 そして、アプリケーションの例はP3Pである。本書はワーキンググループの製品ではなく、引き渡すことのできるものでもない。また、XML SignatureのSignatureProperty
の使用法に関しての意見の一致を反映したものでもないが、より深く説明や話し合いを行う為に、XML Signature使用書で可能である(しかし、必須ではない)SignatureProperty
の使用を述べている。
本書の更新には何もなされていないが、何かコメントがあれば<reagle@w3.org>へ送られたし。
現 W3C 勧告とその他技術的文書は http://www.w3.org/TRを参照のこと。
本文書はP3P [P3P]Assurance Signature [XMLDSIG] プロファイルについて述べている。この仕様書への最も適した導入は前回の文書にある。それは:
Platform for Privacy Preferences Project (略称P3P)は、Webサイトが標準形式でそのサイトのプライバシープラクティスを表現することを可能にし、その標準形式データをユーザエージェントが自動的に取りこんだり、簡単に処理したりすることを可能にする。P3Pユーザエージェントはサイトのプライバシープラクティスを利用者に(マシンが読むことができる形式、及び人間が読むことのできる(ヒューマンリーダブルの)形式で)通知することができ、プライバシープラクティスが適切ならば、自動意思決定を行うことも可能である。P3Pユーザエージェントのこの自動意思決定機能を用いれば、利用者は、アクセスするサイトの総てのプライバシーポリシーを逐一読む必要が無くなる...この文章は、データ収集とデータ使用プラクティスをマシンが読み取ることのできるXML形式(これはP3Pポリシーとして知られている)でコード化するウェブサイトにひとつの方法を説明している。
また、XML Signatureからのこの引用文はXML Signature プロファイルがなぜ必要なのかの理由の導入でもある。
XML Signatureは鍵と参照されたデータ(オクテット)を関連づける手段である。XML Signatureは、鍵がどのようにして人や機関と関連付けられるのかということや、参照し、署名したデータの意味を標準的には述べていない。 そのため、この仕様書は安全なXMLアプリケーションの重要な部分ではあるが、この仕様書自身はセキュリティやトラスト関係のアプリケーションすべてを、特に署名されたXML(または他のデータフォーマット)、人と人とのコミュニケーションや同意の元として使用することに関して、十分に述べてはいない。そういったアプリケーションは追加の鍵や、アルゴリズム、処理、そしてレンダリングの必要事項を述べなければならない。
そのため、本書の目的は以下を設定することである:
読みやすく、簡潔にするために、本書はXML Signatures を参照するための"署名(signature)" という言葉を使用しており、そのアプリケーションのコンテキストをいつもP3Pであると仮定する。この仕様書を理解するには [XMLDSIG]を理解する必要がある。 [P3P] を理解することは自由である(必須ではない)が、その理解は本文書のモチベーションとなる。
本書はXML Schemas [XML-schema]を使用している。
本仕様書のデザインの原理と必要事項は以下である:
以下の問題にもふれなければならない:
この(この日付の)仕様書の実装が使用しなければならないXMLネーム空間[XML-ns] URI は以下である:
xmlns="http://www.w3.org/2001/02/xmldsig-p3p-profile"
間違いや愚かな考えは私のみが考えたものであり、ここに含むことは必ずしも、同意や合意をしているわけはないが、以下の方々のコメントに感謝する。
本章ではP3P Assurance Signature Profile、 XML SignatureおよびP3Pポリシーの概要を述べる。
以下はP3Pポリシーに関しての署名のP3P AssuranceセマンティクのXMLインスタンスである。このAssuranceはSignaturePropertyがP3Pポリシーを保証する、という事を述べる為にRDFデータモデルを使用する。
#Assurance1
<SignatureProperty Id="Assurance1" Target="#Signature1"
xmlns="http://www.w3.org/2000/09/xmldsig#">
<Assures
Policy="http://www.example.org/p3p.xml"
xmlns="http://www.w3.org/2000/10/xmldsig-p3p-profile/"/>
</SignatureProperty>
以下の短縮したSignatureはP3Pポリシーを示し、保証(assurance)(意味的に以下の短縮Signatureは保証 'assurance)に拘束される)を示している。
http://www.example.org/Signature.xml
<Signature Id="Signature1"
xmlns="http://www.w3.org/2000/09/xmldsig#">
<SignedInfo>
<CanonicalizationMethod
Algorithm="http://www.w3.org/TR/2000/WD-xml-c14n-20000907"/>
<SignatureMethod
Algorithm="http://www.w3.org/2000/09/xmldsig#dsa-sha1"/>
<Reference URI="http://www.example.org/p3p.xml">
<Transforms>
<Transform
Algorithm="http://www.w3.org/TR/2000/WD-xml-c14n-20000907"/>
</Transforms>
<DigestMethod
Algorithm="http://www.w3.org/2000/09/xmldsig#sha1"/>
<DigestValue>j6lwx3rvEPO0vKtMup4NbeVu8nk=</DigestValue>
</Reference>
<Reference URI="#Assurance1"
Type="http://www.w3.org/2000/09/xmldsig#SignatureProperties">
<DigestMethod
Algorithm="http://www.w3.org/2000/09/xmldsig#sha1"/>
<DigestValue>1234x3rvEPO0vKtMup4NbeVu8nk=</DigestValue>
</Reference>
</SignedInfo>
<SignatureValue>MC0CFFrVLtRlk=...</SignatureValue>
<KeyInfo>KeyInfo of the Disputes
Service</KeyInfo>
<Object>
</SignatureProperties>
<SignatureProperty Id="Assurance1"
Target="#Signature1"
xmlns="http://www.w3.org/2000/09/xmldsig#">
<Assures
Policy="http://www.example.org/p3p.xml"
xmlns="http://www.w3.org/2001/02/xmldsig-p3p-profile"/>
</SignatureProperty>
</SignatureProperties>
</Object>
</Signature>
以下の短縮例はポリシーが保証されていることを記述し、その署名(signature)を参照するためにp3p:verification
属性を使用している。
http://www.example.org/p3p.xml
<POLICY
xmlns="http://www.w3.org/2000/09/15/P3Pv1"
discuri="http://www.example.com/PrivacyPracticeBrowsing.html">
...
<DISPUTES-GROUP>
<DISPUTES resolution-type="independent"
service="http://www.PrivacySeal.example.org"
short-description="PrivacySeal.example.org"
verification="http://www.example.org/Signature.xml">
<IMG
src="http://www.PrivacySeal.example.org/Logo.gif"
alt="PrivacySeal's
logo"/>
<REMEDIES><correct/></REMEDIES>
</DISPUTES>
</DISPUTES-GROUP>
<STATEMENT>
<PURPOSE><admin/><develop/></PURPOSE>
<RECIPIENT><ours/></RECIPIENT>
<RETENTION><stated-purpose/></RETENTION>
<DATA-GROUP>
<DATA
ref="#dynamic.clickstream.clientip"/>
<DATA ref="#dynamic.http.useragent"/>
</DATA-GROUP>
</STATEMENT>
</POLICY>
保証(assurance )のセマンティクは
DISPUTE service
が列挙されたREMEDIES
に関わっていることを示す。このセマンティクの検証は次の(1)、(2)が必要である。(1)、(2)の場合の署名確認
(2)署名の鍵の所有者とP3P DISPUTE service
が同じである。この保証(assurance)コンテンツモデルによって、P3P ポリシーとXML Signatureを外部のファイル、または、内部のコンテンツとして参照できる。.
Schema Definition: <?xml version='1.0'?> <!DOCTYPE schema SYSTEM 'http://www.w3.org/1999/XMLSchema.dtd' > <schema targetNamespace='http://www.w3.org/2001/02/xmldsig-p3p-profile' version='0.1' xmlns='http://www.w3.org/2000/10/XMLSchema' xmlns:profile='http://www.w3.org/2001/02/xmldsig-p3p-profile' elementFormDefault='qualified'> <element name='Assured'> <complexType> <all> <element ref='profile:P3P-Policy' minOccurs='0' /> <element ref='profile:Signature' minOccurs='0' /> </all> <attribute name='via' type='URI'/> <attribute name='Id' type='ID' use='optional'/> </complexType> </element> <element name='P3P-Policy'> <complexType> <sequence> <any namespace='http://www.w3.org/2000/10/18/P3Pv1'/> </sequence> <attribute name='Id' type='ID' use='required'/> </complexType> </element> <element name='Signature'> <complexType> <sequence> <any namespace='http://www.w3.org/2000/09/xmldsig#'/> </sequence> <attribute name='Id' type='ID' use='required'/> </complexType> </element> </schema>
[XMLDSIG]は暗号方式のアルゴリズムを通じ、データオブジェクトに鍵を適用して、(主に)データオブジェクトの完全性を実現する方法を設定する。「私はUFOを見た」という文字を示す事実は、署名(signature)の作者(鍵の所有者)が実際にUFOを見たという事を意味していないし、また、UFOを見たことを信じているという事を意味しているわけではなく、恐らく、誰かがUFOを見たという事を話し、鍵の所有者がただ単に公証人のような役割をし、その発言を公的な記録に残したいと思うことであろう。そこで、問題はその人がどのようにしてUFOを見たという事を言うかと言うかとことである。どのようにして、その人はセマンティク(例えば、断言する、信じる、立証する、公証する、など)をその署名に結び付けたのか?どのようにしてその人は言明したこと(例えば「空が青い」など、)を述べた文書を保証したこと、または、話したことについての言明と実際に言ったこと(例えば、"彼は「空が青い」と言った"など)を区別するのか?
多くの場合、署名
の意味はコンテキスト(前後関)から推論される。例えば、支払いの申請は、仕様の一環として、支払い書類のauthorization
要素にSignatureが表示されれば、作者および鍵の所有者がその支払いを承認しているのであると決定する。別のコンテキストでは、鍵の所有者が一つ以上の鍵とそれに関連したセマンティクを持つことがある。例えば、一つの鍵は私が断言したことに対して使用され、もう一つの鍵は公的に承認した日時を記録する(タイムスタンプ)のに使用される。または、[RFC2459]のKeyUsageフィールドを示す事ができれば、一つの鍵は非放棄に、もう一つは証明の署名に使用される。しかしながら、これらの技術は(署名からの)外部の仕様または、アプリケーションの黙示のコンテキストに依存している。そのため、これらのセマンティクはコンテキストからはずれる。もし、これらのセマンティクがうまく設定されていなければ、同じアプリケーションの異なるユーザはそのセマンティクを共有すらしないかもしれない。適切な法的行為を使用して!
幸いにも、[XMLDSIG]は、署名されている簡単なビット間の意志決定をおこなうメカニズムと実際の署名作成に関する情報を見分けるメカニズムを提供する。このことによって、ビットと明示的に"bootstrap"の意味に完全性を与える環から外れる事が出来る。
SignatureProperty
要素は"署名の世代に関わる追加情報の項目を置くことができる"メカニズムを実現する。
私は署名の意図と意味を組み込むためにSignatureProperty要素を使用する。この"bootstrapping"はSignaturePropertyへのReference
がType="&dsig;SignatureProperties"
だと識別される場合に起こる。
SignatureProperty
に現れ、Type
を通じていると認識されているタイムスタンプは以前の完全性のあるものではないが、その署名のタイムスタンプである。署名のセマンティク("私は保証する"など)がSignatureProperty
に含まれ、示されていたら(そしてそのように認識されていたら)、署名のアプリケーションの中にはSignatureProperty
のこととなると、 "理解"せずに、(例えば、簡単なタイムスタンプサービスなど)データに署名をしたがっているものもあるが、そのアプリケーションは署名することに関して非常に慎重であるという事を意味している。(アプリケーションはSignaturePropertyに何があるかを理解すべきである。)"[XMLDSIG: 2.2 拡張された例((Object
およびSignatureProperty
))]
そのため、この仕様書によって、3章で定義している自然言語のセマンティクで、以下のXML構文をSignatureProperty
の一部として使用して署名のセマンティクを表す事ができる:
[i0] <SignatureProperties>
[i1] <SignatureProperty Id="Property-Assurance"
Target="#Signature1"
[i2]
xmlns="http://www.w3.org/2000/09/xmldsig#">
[i3] <profile:Assures
profile:Policy="http://www.example.org/p3p.xml"
[i4]
xmlns:profile="http://www.w3.org/2001/02/xmldsig-p3p-profile"
/>
[i5] </SignatureProperty>
[i6] </SignatureProperties>
上記は以下の[RDF]と同じ意味をもつ :
[r0] <rdf:Description
ID="Property-Assurance" about="#Signature1"
[r1]
xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#">
[r2] <profile:Assures
resource="http://www.example.org/p3p.xml"
[r3]
xmlns:profile="http://www.w3.org/2000/12/xmldsig-p3p-profile"
/>
[r4] </rdfDescription>
("文法的データモデルへ分解する)このステートメントの具体化は以下である:
[rA] <rdf:type
resource="rdf:Statement"/>
[rB] <rdf:subject resource="#Signature1"/>
[rC] <rdf:predicate resource="profile:Assures"/>
[rD] <rdf:object
resource="http://www.example.org/p3p.xml"/>
この仕様は[RDF]データモデルにセマンティクを作成する事を選ぶが、すべての署名のセマンティクが同じことをする必要はない。より正式な"profile:assures
"の定義が作成されれば、より明確なデザインとなり、エージェントが推理可能になるので、私はセマンティクを作成することにする。
また、ある人はHTMLのp
要素の(残念ながら、明確ではない)コンテキストの中に、自然言語のインスタンスを見る事があるかもしれない。
[n0] <SignatureProperties>
[n1] <SignatureProperty Id="Property-Assurance"
Target="#Signature1"
[n2]
xmlns="http://www.w3.org/2000/09/xmldsig#">
[n3] <p
xmlns:html="http://www.w3.org/1999/xhtml">I agree
with everything
signed</p>
[n5] </SignatureProperty>
[n6] <SignatureProperties>
P3P Signature Profile署名は以下のREQUIRED制約を持つ有効な署名 [XMLDSIG]である。
CanonicalizationMethod
は標準的なXMLである:SignatureMethod
はDSAもしくはRSAである。DigestMethod
はSHA-1であるTransforms
は以下である:
DSAKeyValue
もしくは RSAKeyValue
http://www.w3.org/2000/09/xmldsig#dsa-sha1注意、より詳しく説明する為に、European Directive 1999/93/ECで述べているように、"進歩した電子署名"の必要事項を満たすために、このプロファイルの改善を考えた。それには"それは適切な証明であった"と示している拡張子、X509Data
と署名の一部として、(1)保証者の署名ポリシーと(2)タイムスタンプに関するdsig:Reference
を使用する必要がある。本書でP3Pアプリケーションのコンテキストと署名のセマンティクを強調したいと思うことを考えると、しばらくはプロファイルの改善は見あわせる。
P3P Disputes
verification
属性は署名保証のURIであるべきである。[P3P]に関する制約や仕様の追加を行わないし、本仕様書のネーム空間を通じてセマンティクの追加もしない。