-
Notifications
You must be signed in to change notification settings - Fork 4
/
865.txt
352 lines (257 loc) · 16.4 KB
/
865.txt
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
266
267
268
269
270
271
272
273
274
275
276
277
278
279
280
281
282
283
284
285
286
287
288
289
290
291
292
293
294
295
296
297
298
299
300
301
302
303
304
305
306
307
308
309
310
311
312
313
314
315
316
317
318
319
320
321
322
323
324
325
326
327
328
329
330
331
332
333
334
335
336
337
338
339
340
341
342
343
344
345
346
347
348
349
350
351
352
[1] [[RFC 4287]] では、 [[Atom 1.0]] として [[Atomフィード文書]]と
[[Atomエントリー文書]]の2種類の[[文書]]を定義しています
[SRC@en[[[Atom 1.0]] 2.]]。
[2] [[Atom 0.3]] で定義されていた [[Atomフィード文書]]は [[Atomフィード文書]]に相当します。
[47] [[RFC 5005]] では[[Atomフィード文書]]の集合の分類として、[[完全フィード]]、
[[ページ付けされたフィード]]、[[アーカイブされたフィード]]を定義しています。
[[アーカイブされたフィード]]は[[購読文書]]と[[アーカイブ文書]]によって構成されています。
[3] [[AtomPub]] では[[分類文書]]と[[サービス文書]]の2種類の[[文書]]が定義されています
[SRC@en[[[AtomPub]]]]。
[REFS[
- [48] [CITE@en[RFC 5023 - The Atom Publishing Protocol]] ([TIME[2008-11-20 18:52:14 +09:00]] 版) <http://tools.ietf.org/html/rfc5023#section-6.1>
]REFS]
[39] [[RFC 6721]] では[[削除済みエントリー文書]]が定義されています。
* Atom 文書と XML
[17]
[[Atomフィード文書]]と [[Atomエントリー文書]]は [[XML 1.0]]
[[整形式]]でなければ[['''なりません''']]。
[SRC@en[[[Atom 1.0]] 2.]]
[16]
[[AtomPub]] の [[XML文書]]は[[名前空間整形式]]でなければ[['''なりません''']]
[SRC@en[[[AtomPub]]]]。
[40] [[削除済みエントリー文書]]は [[XML 1.0]] [[整形式]]でなければ[['''なりません''']]。
[SRC[[[RFC 6721]]]]
* 処理指令と注釈
[44] [[Atom 1.0]] は[[処理指令]]と[[注釈]]について言及しておらず、[[Atom文書]]において利用して良いとも悪いとも明記されていません。
[46] [[Atom 0.3]] では[[処理指令]]は原則として利用する[['''べきではない''']]、[[注釈]]はどこでも利用してよいと明記されていました [SRC[>>45]]。
[REFS[
- [45] [CITE[I-D/Published/atom-format/draft-nottingham-atom-format-02.xml at master · mnot/I-D]] ([TIME[2014-03-16 08:09:14 +09:00]] 版) <https://github.com/mnot/I-D/blob/master/Published/atom-format/draft-nottingham-atom-format-02.xml#L183>
]REFS]
* Atom 文書と XML 保安性
[18] [[RFC 4287]] の 5. では [[XML]] の[[保安性]]に関する規格との関係が述べられています。
実際には [[XML]] の[[保安性]]のための仕様は限られた分野でしか使われておらず、
[[Atom]] と併用できる実装がどれだけあるのかも不明です。今後これらの規格が普及する見込みもなく、
[[政治的正当性]]のために記述を追加しただけかもしれません。
** 仕様書
[REFS[
- [20] [CITE@en[RFC 4287 - The Atom Syndication Format]] ([TIME[2009-08-20 17:27:51 +09:00]] 版) <http://tools.ietf.org/html/rfc4287#section-5>
- [41] [CITE@en[RFC 6721 - The Atom "deleted-entry" Element]] ([TIME[2012-12-31 01:08:20 +09:00]] 版) <http://tools.ietf.org/html/rfc6721#section-5>
]REFS]
** 利用例
[19] [[RFC 4287]] の 5. には、[[割引クーポン]]を[[デジタル署名]]するだとか、
[[銀行]]が[[暗号化]]するだとか、実際にはとてもありそうにない例がいくつか紹介されています。
** デジタル署名
[21] [[Atom文書]]の[[根要素]]や [CODE(XMLe)@en[[[atom:entry]]]]
[[要素]]や [CODE(XMLe)@en[[[at:deleted-entry]]]] [[要素]]は、
[RUBYB[[[XML署名・構文処理]]]@en[XML-Signature and Syntax Processing]]仕様書に従い[RUBYB[[[封入署名]]]@en[[[Enveloped Signature]]]]を有して[['''構いません''']]
[SRC[[[RFC 4287]] 5.1., >>41]]。
[22] [[Atom処理器]]は、[[署名]]を含む [[Atom文書]]や [CODE(XMLe)@en[[[at:deleted-entry]]]] [[要素]]を、
[[署名]]の検証ができなくても拒絶しては[['''なりません''']]。
処理を継続しなければ[['''なりません''']]し、
[[署名]]の検証に失敗したと[[利用者]]に通知しても[['''構いません''']]
[SRC[[[RFC 4287]] 5.1., >>41]]。
[23] 言い換えると、[[名前空間]] [CODE(URI)@en[[[http://www.w3.org/2000/09/xmldsig#]]]]、
[[局所名]] [CODE(XMLe)@en[[[Signature]]]] の[[要素]]が[[文書要素]]の[[子要素]]として存在しても、
それだけを理由に処理を止めては[['''なりません''']] [SRC[[[RFC 4287]] 5.1., >>41]]。
[24] [[Atom文書]]のそれ以外の[[要素]]は、特に規定がない限り、[[署名]]しては[['''なりません''']]
[SRC[[[RFC 4287]] 5.1.]]。
[25] [[XML署名・構文処理]]仕様書の6.5.1節で[[正準XML]]への対応が義務付けられていますが、
[[XML文書]]が[[署名]]された上で他の [[XML文書]]に含まれていると、
[[署名]]された[[文書]]の[[署名]]が壊れてしまうため、多くの実装はこれを使っていません。
ですから、[[Atom文書]]の[[署名]]を検証する [[Atom処理器]]は、
[[排他的XML正準化法]] [SRC[[[排他的XML正準化]]]] ([[URI]]
[CODE(URI)@en[[[http://www.w3.org/2001/10/xml-exc-c14n#]]]])
によって[[正準化]]することができなければ[['''なりません''']]
[SRC[[[RFC 4287]] 5.1., >>41]]。
[26] [[集約器]]などが途中で[[エントリー]]に [CODE(XMLe)@en[[[atom:source]]]]
[[要素]]を追加すると、[[エントリー]]や [CODE(XMLe)@en[[[at:deleted-entry]]]]
[[要素]]の[[署名]]は壊れてしまいます。
ですから、各[[エントリー]]の[[出版者]]が[[署名]]する時は予め
[CODE(XMLe)@en[[[atom:source]]]] [[要素]]を追加しておくことを十分検討するべきです
[SRC[[[RFC 4287]] 5.1., >>41]]。
[27] 実装者は [CODE(XML)@en[[[xml]]]] [[名前空間]]の[[マーク付け]]の利用と[[正準化]]の関係にまつわる問題にも気をつけるべきです
[SRC[[[RFC 4287]] 5.1., >>41]]。
[28] [[XML署名・構文処理]]仕様書の4.4.2節では [[DSA署名]]への対応が要求されると共に
[[RSA署名]]への対応が推奨されていますが、 [[RSA]] の方が [[DSA]]
よりよく普及していることを鑑みて、 [[Atom文書]]の[[署名]]を[[検証]]する
[[Atom処理器]]は [[RSA署名]]を[[検証]]できなければ[['''ならず''']]、
[[DSA署名]]は[[検証]]できなくても構いません。
[29] [[MAC認証]]の keying material が正しく扱われなかった場合の[[保安性]]上の問題を避けるため、
[[Atom文書]]では[[署名]]に [[MAC]] を使う[['''べきではありません''']]
[SRC[[[RFC 4287]] 5.1., >>41]]。
** 暗号化
[30] [[Atom文書]]や[[削除済みエントリー文書]]の[[根要素]]は、
[RUBYB[[[XML暗号化構文・処理]]]@en[XML Encryption Syntax and Processing]]仕様書に従い[[暗号化]]を行って[['''構いません''']]
[SRC[[[RFC 4287]] 5.2., >>41]]。
[31] [[XML暗号化構文・処理]]仕様書の5.1節は [[TripleDES]]、[[AES-128]]、
[[AES-256]] への対応を義務付けています。 [[Atom文書]]を[[解読]]する
[[Atom処理器]]は [[Cipher Block Chaining]] ([[CBC]]) モードの [[AES-128]]
を[[解読]]できなければ[['''なりません''']]。 [SRC[[[RFC 4287]] 5.2., >>41]]
[32] [[XML暗号化構文・処理]]に基づく[[暗号化]]では元の[[文書]]の[[一貫性]]は保障されません。
[[メッセージ]]を[[解読]]できなくても、[[解読]]された[[メッセージ]]の一部または全部が異なる意味を成すような変更を行う[[暗号学的攻撃]]が知られています。
ですから、[[Atom文書]]を[[解読]]する [[Atom処理器]]は、
[[文書]]の[[署名]]に含まれる[[ハッシュ値]]があればそれを[[検証]]したり、
[[文書]]に含まれる[[文書]]の[[ハッシュ値]]があればそれを[[検証]]したりすることで、
[[解読]]した[[文書]]の[[一貫性]]を検査する[['''べきです''']]。
[SRC[[[RFC 4287]] 5.2., >>41]]
** 署名と暗号化
[33] [[Atom文書]]に[[署名]]と[[暗号化]]の両方が施されるときは、
普通は[[文書]]に[[署名]]を加えた上で[[暗号化]]するのがいいです。
そうすると[[暗号化]]を行いつつもとの[[文書]]の[[一貫性]]の保証が署名者の識別も含めて行えます。
なお、認証に [[MAC]] を用いる場合には、[[署名]]の後に[[暗号化]]を行い、その逆の順序では行わないようにしなければ[['''なりません''']]。
[SRC[[[RFC 4287]] 5.2., >>41]]
* [CODE(MIME)@en[application/atom+xml]] 媒体型
[34] [[Atom文書]]を [[XML 1.0]] で[[直列化]]したものは
[DFN[[CODE(MIME)@en[[[application/atom+xml]]]]]] [[媒体型]]で識別できます
[SRC[[[RFC 4287]] 7.]]。
[4] [CODE(MIME)@en[[[application/atom+xml]]]] は [[RFC 4287]]
では [[Atomフィード文書]]と [[Atomエントリー文書]]の共通の[[媒体型]]として規定されていましたが、
[[実装経験]]から両者を区別できた方がいいことがあるとわかったため、
[CODE(MIME)@en[[[type]]]] [[引数]]が [[RFC 5023]] で規定されています。
[SRC@en[[[AtomPub]]]]
[36]
:状態:[[IETF]] [[提案標準]]
:[[媒体型]]:[CODE(MIME)@en[[[application/atom+xml]]]]
:[[拡張子]]:[CODE(file)[[[.atom]]]]
:[[Macinroshファイル型]]:[CODE@en[[[TEXT]]]]
:[[素片識別子]]:[CODE(MIME)@en[[[application/xml]]]] と同じ
** 仕様書
-[35] [CITE@en[RFC 4287 - The Atom Syndication Format]]
-- '''<http://tools.ietf.org/html/rfc4287#section-7>'''
-[5] [CITE@en[RFC 5023 - The Atom Publishing Protocol]]
-- <http://tools.ietf.org/html/rfc5023#section-12>
-- <http://tools.ietf.org/html/rfc5023#section-16.6>
** 引数
[51] 次の[[引数]]があります。
[FIG(short list)[
- [CODE(MIME)@en[[[charset]]]]
- [CODE(MIME)@en[[[kind]]]]
- [CODE(MIME)@en[[[profile]]]]
- [CODE(MIME)@en[[[type]]]]
]FIG]
*** [CODE(MIME)@en[charset]] 引数
[37] [CODE(MIME)@en[[[charset]]]] [[引数]]は [CODE(MIME)@en[[[application/xml]]]]
と同じと定義されています [SRC[[[RFC 4287]] 7.]]。
*** [CODE(MIME)@en[type]] 引数
[6] [DFN[[CODE(MIME)@en[type]] [[引数]]]]は、 [[Atom文書]]の種類を指定します。
[7] 仕様書:
[CITE@en[RFC 5023 - The Atom Publishing Protocol]] ([TIME[2008-11-20 18:52:14 +09:00]] 版) <http://tools.ietf.org/html/rfc5023#section-12.1>
*** 引数値
[8] 次の値が定義されています。
[SRC@en[[[AtomPub]]]]
:[CODE(MIME)@en[[[entry]]]]:[[Atomエントリー文書]]を表します。
:[CODE(MIME)@en[[[feed]]]]:[[Atomフィード文書]]を表します。
[9] 値は[[大文字]]・[[小文字]]を区別しま''せん''。
[SRC@en[[[AtomPub]]]]
*** 既定値
[10] この[[引数]]が指定されていない場合、型は未指定であり、
実際に[[根要素]]を調べる必要があります。
[SRC@en[[[AtomPub]]]]
[12] [[Atomエントリー文書]]の[[生産者]]は、この[[引数]]を使う[['''べきです''']]。
[SRC@en[[[AtomPub]]]]
*** 処理モデル
[13] [CODE(MIME)@en[[[type]]]] [[引数]]を認識しない [[Atom処理器]]は、
[[根要素]]によって[[文書型]]を決定しなければ[['''なりません''']]。
[SRC@en[[[AtomPub]]]]
[14] [CODE(MIME)@en[[[type]]]] [[引数]]を認識する [[Atom処理器]]は、
[[根要素]]と [CODE(MIME)@en[[[type]]]] の不整合を検出し報告する[['''べきです''']]。
[SRC@en[[[AtomPub]]]]
*** 関連
[11] 新しい仕様書は [CODE(MIME)@en[[[type]]]] の使用を要求しても[['''構いません''']]。
[SRC@en[[[AtomPub]]]]
[42] [[削除済みエントリー文書]]には [CODE(MIME)@en[[[application/atomdeleted+xml]]]]
が別途用意されています。
** 素片識別子
[38] [CODE(MIME)@en[[[charset]]]] [[引数]]は [CODE(MIME)@en[[[application/xml]]]]
と同じと定義されています [SRC[[[RFC 4287]] 7.]]。
* Atom 文書でよく用いられる名前空間
** Atom 1.0 フィード文書でよく用いられる名前空間
[FIG[
- [[既定名前空間]] or [CODE(XML)@en[[[atom]]]] [CODE(URI)@en[[[http://www.w3.org/2005/Atom]]]]
- [CODE(XML)@en[[[batch]]]] [CODE(URI)@en[[[http://schemas.google.com/gdata/batch]]]]
- [CODE(XML)@en[[[gCal]]]] [CODE(URI)@en[[[http://schemas.google.com/gCal/2005]]]]
- [CODE(XML)@en[[[gd]]]] [CODE(URI)@en[[[http://schemas.google.com/g/2005]]]]
- [CODE(XML)@en[[[openSearch]]]] [CODE(URI)@en[[[http://a9.com/-/spec/opensearchrss/1.0/]]]]
-[CODE(XML)@en[[[pheedo]]]] [CODE(URI)@en[[[http://www.pheedo.com/namespace/pheedo]]]]
- [CODE(XML)@en[[[xhtml]]]] [CODE(URI)@en[[[http://www.w3.org/1999/xhtml]]]]
- [CODE(XML)@en[[[xml]]]] [CODE(URI)@en[[[http://www.w3.org/XML/1998/namespace]]]]
- [CODE(XML)@en[[[xmlns]]]] [CODE(URI)@en[[[http://www.w3.org/2000/xmlns/]]]]
]FIG]
** Atom 1.0 フィード文書で使える名前空間
[15] 複数用例があれば前節に移動する。
[FIG[
- [CODE(XML)@en[[[at]]]] [CODE(URI)@en[[[http://purl.org/atompub/tombstones/1.0]]]]
- [CODE(XML)@en[[[sx]]]] [CODE(URI)@en[[[http://www.microsoft.com/schemas/sse]]]]
]FIG]
** Atom 0.3 文書でよく用いられる名前空間
[FIG[
- [[既定名前空間]] [CODE(URI)@en[[[http://purl.org/atom/ns#]]]
- [CODE(XML)@en[[[dc]]]] [CODE(URI)@en[[[http://purl.org/dc/elements/1.1/]]]]
-- [CODE(XMLe)@en[dc:[[subject]]]] を見かけました。
]FIG]
[43] [CITE@en[draft-wilde-atom-profile-02 - Profile Support for the Atom Syndication Format]]
( ([TIME[2013-08-14 16:15:26 +09:00]] 版))
<http://tools.ietf.org/html/draft-wilde-atom-profile-02>
[49] [CITE@en[2.2.5.1 Accept]]
( ([TIME[2014-03-24 09:58:51 +09:00]] 版))
<http://msdn.microsoft.com/en-us/library/dd541269.aspx>
[FIG(quote)[
[FIGCAPTION[
[50] [CITE@en-US[OPDS Catalog 1.1]]
([TIME[2015-11-18 17:57:32 +09:00]] 版)
<http://opds-spec.org/specs/opds-catalog-1-1-20110627/>
]FIGCAPTION]
> Links to Acquisition Feeds SHOULD use the "type" attribute "application/atom+xml;profile=opds-catalog;kind=acquisition".
]FIG]
[FIG(quote)[
[FIGCAPTION[
[52] [CITE@en-US[OPDS Catalog 1.1]]
([TIME[2015-11-19 00:32:46 +09:00]] 版)
<http://opds-spec.org/specs/opds-catalog-1-1-20110627/#Acquisition_Feeds>
]FIGCAPTION]
> Links to Acquisition Feeds SHOULD use the "type" attribute "application/atom+xml;profile=opds-catalog;kind=acquisition".
]FIG]
[FIG(quote)[
[FIGCAPTION[
[53] [CITE@en-US[OPDS Catalog 1.1]]
([TIME[2015-11-19 00:49:59 +09:00]] 版)
<http://opds-spec.org/specs/opds-catalog-1-1-20110627/#Search>
]FIGCAPTION]
> <Url type="application/atom+xml;profile=opds-catalog"
> template="http://example.com/search?q={searchTerms}" />
]FIG]
[FIG(quote)[
[FIGCAPTION[
[54] [CITE@en-US[OPDS Catalog 1.1]]
([TIME[2015-11-19 00:57:47 +09:00]] 版)
<http://opds-spec.org/specs/opds-catalog-1-1-20110627/#The_OPDS_Catalog_Profile_Parameter>
]FIGCAPTION]
> Relations to OPDS Catalog Feed Document and OPDS Catalog Entry Document Resources SHOULD use a "profile" parameter following Section 4.3 of '''['''RFC4288''']''' with the value "opds-catalog". This profile parameter provides clients with an advisory hint that the Resource should be a component of an OPDS Catalog.
> The complete media type for a relation to an OPDS Catalog Entry Document Resource SHOULD be:
> application/atom+xml;type=entry;profile=opds-catalog
> The complete media type for a relation to an OPDS Catalog Feed Document Resource SHOULD be:
> application/atom+xml;profile=opds-catalog
]FIG]
[FIG(quote)[
[FIGCAPTION[
[55] [CITE@en-US[OPDS Catalog 1.1]]
([TIME[2015-11-19 00:58:04 +09:00]] 版)
<http://opds-spec.org/specs/opds-catalog-1-1-20110627/#The_OPDS_Kind_Parameter>
]FIGCAPTION]
> In addition to the new "profile" parameter, this specification also introduces a new "kind" parameter following Section 4.3 of '''['''RFC4288''']''' with the value "acquisition" or "navigation". This "kind" parameter provides clients with an advisory hint whether the Resource should be an Acquisition Feed or a Navigation Feed.
> The complete media type for a relation to an Acquisition Feed SHOULD be:
> application/atom+xml;profile=opds-catalog;kind=acquisition
> The complete media type for a relation to a Navigation Feed SHOULD be:
> application/atom+xml;profile=opds-catalog;kind=navigation
]FIG]
[FIG(quote)[
[FIGCAPTION[
[56] [CITE[Protocol Summary - Salmon Protocol]]
([TIME[2017-03-30 17:22:57 +09:00]])
<http://www.salmon-protocol.org/salmon-protocol-summary>
]FIGCAPTION]
> Content-Type: application/atom+xml
> <?xml version='1.0' encoding='UTF-8'?>
> <me:env xmlns:me="http://salmon-protocol.org/ns/magic-env">
> <me:data type='application/atom+xml'>
]FIG]