PICSラベル配布、ラベルの仕様と通信プロトコル
PICS Label Distribution Label Syntax and Communication Protocols
Version1.1
W3C Recommendation 31-October-96
この文書の位置づけ
この文書は、
W3Cメンバと他の利害関係者によってレビューされており、ディレクタによってW3C推薦として指定されている。 W3C推薦の文書は、別の文書で参考資料として使われるか、規範的参照として引用されるものである。 推薦を作る際のW3Cの役割は、仕様へ注意を引き、広範囲にわたる展開を促進することである。これは、Webの機能性と操作性を高めるものである。
http://www.w3.org/pub/WWW/TR/
で、現在のW3C推薦と、他の技術的な文書のリストを見つけることができる。
要約
この文書は、
PICS(Platform for Internet Content Selection)技術分科会によって作成された。 これはPICSラベルとラベルを転送する3つの方法の一般的なフォーマットを定義したものである。
目次
概要
一般的なフォーマット
例
詳細な文法
PICS
ラベルとラベルリストの意味HTML
埋込みラベルHTTP
を使用したラベル付き文書の要求ラベル要求
MICs
とディジタル署名用語集
謝辞
付録A:
ラベルビューロのロケーティングアルゴリズム付録
B: ラベルビューロの要求と応答のサンプル
概要
この文書は、
PICS(Platform for Internet Content Selection)の技術分科会によって作成された。 これはPICSラベルとラベルを転送する3つの方法の一般的なフォーマットを定義したものである。
一般的なフォーマット
ラベルはサービス識別子、ラベルオプション、およびレイティングで構成されている。サービス識別子とは、ユニークな識別子としてレイティングサービス
(“レイティングサービスとレイティングシステム”を参照)が選択しているURLである。ラベルオプションには、文書を評価した時間のようなレイティングされている文書の属性を記述する。レイティングは、1つ以上の次元に沿って文書を記述する一連の属性値対である。1つ以上のラベルがリストとしてに配布されてもよい。ラベルリストの一般的なフォームは以下のとおりである(エラーステータスコードは表示していない)。
(PICS-1.1
<service url> [option...]
labels [option...] ratings (<category> <value> ...)
[option...] ratings (<category> <value> ...)
...
<service url> [option...]
labels [option...] ratings (<category> <value> ...)
[option...] ratings (<category> <value> ...)
...)
specific
ラベルは1つの文書にのみ適用される。HTMLで記述された文書は、外部参照(例えば、<A href=...>タグを用いて)によって他の文書を参照するかもしれなく、また、インライン表示(例えば、<img...>または<object ...>タグを用いて)を要求するかもしれない。ラベルはその文書にのみ適用されるもので、参照する文書には適用されない。
generic
ラベル(genericオプションの使用によって識別される)は、(forオプションで指定した)特定の文字列で始まるURLで示されるすべての文書に適用される。genericラベルは、specificラベルによって無効にすることができる“デフォルト”ラベルとしての意味を持たない。クライアントが両方のラベルにアクセスすることで、specificラベルがgenericラベルを無効にするが、クライアントに2つのラベルが別々に配布されてしまうため、 genericラベルにのみアクセスしてしまうかもしれない。サーバはデフォルトの値を持ち、これをもとにしたローカルデータベースで無効にされないspecificラベルを作成することができる。しかしながら、サイト、あるいはディレクトリでそれがすべて文書に当てはまれば、サイトあるいはディレクトリのためのgenericラベルが配布されるべきである。
レイティングサービスは、与えられた
URLをプレフィクスとしてgenericラベルを規定することができ、また、そのURLに1つのspecificラベルを規定することもできる。文書のspecificラベルが見つけられた場合、それはどんなgenericラベルよりも優先して使われるべきである。いくつかのPICSクライアントソフトウェアは、genericラベルの使用を制限するかもしれない。例えば、2つ以上のURLツリーレベルのノード上に文書が位置する場合、クライアントは、genericラベルを無効にするかもしれない。
ラベルオプションは
3つのグループに分割することができる。最初のグループは、ラベルが付けられた文書についての情報を供給する。第2のグループは、ラベル自身についての情報を供給する。最後のグループは、その他の情報を供給する。
例
“
PICSレイティングサービスとレイティングシステム”で記述するレイティングシステムの例として、2つの文書のラベルリストが、次のとおりであったとする。(すべての例で、スペーシングとインデンテーションが読みやすいように入れられている。複数のスペースは1つのスペースとして扱う。)
(PICS-1.1 "http://www.gcf.org/v2.5"
by "John Doe"
labels on "1994.11.05T08:15-0500"
until "1995.12.31T23:59-0000"
for "http://w3.org/PICS/Overview.html"
ratings (suds 0.5 density 0 color/hue 1)
for "http://w3.org/PICS/Underview.html"
by "Jane Doe"
ratings (subject 2 density 1 color/hue 1))
同じラベルリストは、よりコンパクトにすべての改行とインデント文字を1つのスペースに変換し、単語“
labels”を“l”に、“ratings”を“r”というように長いオプション名称を省略形で置き換えて転送してもよい。それは、転送のため、さらに、すべてのオプション情報を別の文書に取り去り、URLによってその文書を参照するように圧縮してもよい。
(PICS-1.1 "http://www.gcf.org/v2.5" l
full "http://www.gcf.org/labels/13242123"
r (suds 0.5 density 0 color/hue 1)
full "http://www.gcf.org/labels/123412278"
r (subject 2 density 1 color/hue 1))
最後に、ラベルの情報内容を減らして転送量をより小さくするため、オプション情報はすべて省略してもよい。そのとき、結果として作成されるラベルリストは、以下のようになる。
(PICS-1.1 "http://www.gcf.org/v2.5"
l r (suds 0.5 density 0 color/hue 1)
r (subject 2 density 1 color/hue 1))
詳細な文法
以下に
modified BNFを使用したラベルの文法を記述する。
ノート:
labellist
:: '(' version service-info+ ')'version :: 'PICS-1.1'
service-info :: 'error' '(no-ratings' explanation* ')'
| serviceID service-error
| serviceID option* labelword label*
serviceID :: quotedURL
labelword :: 'labels' | 'l'
label :: label-error | single-label | '(' single-label* ')'
single-label :: option* ratingword '(' rating+ ')'
ratingword :: 'ratings' | 'r'
quotedURL :: '"' URL '"' “レイティングシステムとレイティングサービス”で拡張したものをを記述している。
option
:: labeloption | documentoption | otheroptionlabeloption ::
'by' quotedname
| 'generic' boolean | 'gen' boolean
| 'for' quotedURL
| 'on' quoted-ISO-date
| 'signature-RSA-MD5' "base64-string"
| 'until' quoted-ISO-date | 'exp' quoted-ISO-date
documentoption ::
'at' quoted-ISO-date
| 'MIC-md5' "base64-string" | 'md5' "base64-string"
otheroption ::
'comment' quotedname
| 'complete-label' quotedURL | 'full' quotedURL
| 'extension' '(' mand/opt quotedURL data* ')'
mand/opt :: 'optional' | 'mandatory'
data :: quoted-ISO-date | quotedURL
| number | quotedname | '(' data* ')'
quoted-ISO-date :: '"'YYYY'.'MM'.'DD'T'hh':'mmStz'"'
ISO8601:1988の日付と時間の基準を基礎として、フォームを限定した。
YYYY |
:: |
4 桁の年 |
MM |
:: |
2 桁の月 (01=1月、etc.) |
DD |
:: |
2 桁の日 (01〜31) |
hh |
:: |
2 桁の時間 (00〜23) (am/pmは許していない) |
mm |
:: |
2 桁の分 (00〜60) |
S |
:: |
UTC からのタイムゾーンオフセットの符号 (‘+’ or ‘-‘) |
tz |
:: |
4 桁のUTCからのオフセット |
( 例えば、1512は15時間12分を意味する) |
例えば、
”1994.11.05T08:15-0500”は、米国東部標準時で1994年11月5日8:15を示す、quoted-ISO-dateである。注意
: ISO基準は、ここで記述したものより大きな柔軟性を許している。 PICSはここで記述されたシンタックスを正確に必要とする。──時間も時間帯も省略されてはならない、互換フォーマットは許されてなく、ここで指定したように句読点がなければならない。rating
:: transmit-name number| transmit-name '(' multi-value* ')'
multi-value :: number | number ':' number
transmit-name :: transmit-name-char+ ['/' transmit-name]
number :: [sign]unsignedint['.' [unsignedint]]
sign :: '+' | '-'
unsignedint :: [0-9]+
quotedname :: '"' urlchar-or-space+ '"'
alphanumpm :: 'A' | ... | 'Z' | 'a' | ... | 'z'
| '0' | ... | '9' | sign
transmit-name-char :: alphanumpm | '.' | '$' | '、' | ';'
| ':' | '&' | '=' | '?' | '!' | '*' | '~' | '@'| '#'
| '_' | '%' hex hex
注意
: シングルあるいは2重引用符、あるいは括弧を挿入するために”%”エスケープ(%のあとに、ASCII文字セットで文字を表わす2つのHex数字を付加する)を使用する。urlchar
:: transmit-name-char | '(' | ')'hex :: '0' | ... | '9' | 'A' | ... | 'F' | 'a' | ... | 'f'
urlchar-or-space :: urlchar | ' '
base64-string :: as defined in RFC-1521.
service-error :: 'error'
'(' 'request-denied' explanation* ')'
| 'error' 'service-unavailable'
label-error :: 'error'
'(' 'request-denied' [quotedURL explanation*] ')'
| 'error' '(' 'not-labeled' quotedURL* ')'
explanation :: quotedname
PICSラベルとラベルリストの意味
ラベルリスト
がPICSラベルの集まりを転送するために使用される。 ここで記述するフォーマットは、MIMEタイプ ”application/pics-labels” としてIANAで登録されるものである。 これは、ラベルとラベルが存在しない場合その理由を転送するときに使用する。また、ラベルを文書と一緒の転送、またはPICSラベルビューロから転送しなければならない時に使用するフォーマットである。ラベルリストは、常に括弧によって囲まれ、PICSバージョン番号(この仕様での1.1)で始まる。
ラベルリストは、ラベルが存在しない
(例えば、“error(no-rating ...)”)、または、セクションに分けられたラベル(セクションはそれぞれレイティングサービスに該当する)のいずれかである。 それぞれのサービスのURLは、(serviceIDで)指定されなければならない。そして、なぜそのサービスにラベルが存在しないか(service-error)を示すエラーメッセージ、あるいは、すべてのオプション情報(option*)、キーワード “labels”(または “l”)、そしてサービスから渡されたlabelsのどちらかが続く。サービスから渡されたオプション情報は、もしspecificラベルで無効にしなければ、すべてのラベルに適用される。
ラベルには3つの種類がある。最初は、個々の
URLでラベルを参照した時のエラーである(label-error)。第二は、もっとも一般的なものであるが、単語 ”ratings”(または “r”)とレイティング結果自身(カテゴリ名と値のリスト)で構成されるオプション(サービスで記述したものを無効にする)を含むsingle-label。最後に、文書全体のツリーの評価が要求された場合の特別な例であるが、括弧で囲まれたいくつかのsingle-labelsを転送することができる。このケースは、“ラベル要求”のセクションでより詳細に記述されている。
ラベルは特定の
URLに対応するものか、あるいはgenericである。genericラベルは、プレフィクスで指定されたすべてのURLの暗黙の評価を行う。例えばURL“http://w3.org”のgenericラベルは、そのサイトのすべての文書に暗黙の評価を与える。同じURL“http://w3.org”のspecific(genericでない)ラベルは暗黙の評価を与えない。それは単に、ホストw3.org.へHTTPで、”GET /”を送信して持ってくるホームページを評価したものである。genericラベルは、どのURLにラベルを適用するかを指定する ”for” オプションを含んでいなければならない。上で言及したように、もし、ラベルのforオプションで指定された文字列から始まるURLのすべての文書に評価を正当に適用することができるならば、genericラベルが使用されるべきである。
multi-value
で値が渡される場合、数と数の範囲(”:”で範囲の終わりを記述する)のどんな組み合わせでも指定されてよい。
(PICS-1.1 "http://www.gcf.org/v2.5" l
r (suds 0.5 density 0 color/hue 1 subject (0.5:1.5 2)))
すべての
subjectは、0.5と1.5の(両方の端点を含めて)の間のすべての値、か2となる。“レイティングサービスとレイティングシステム”で記述したサービスの例では、“water”(subject value 1)と“soapdish” (subject value 2)の2つのsubjectが採用される。3番目の“soap”はsubject valueが0であるため、採用されない。
RFC-882ヘッダー
電子インターネットメール、ハイパテキスト転送プロトコル、
USENETニュースのような多くのプロトコルが、RFC-822で記述されているUS-ASCIIヘッダーを使用している。 そのようなプロトコルで使用するため、我々は、この文書でラベルについて記述した新しいヘッダー“PICS-Label”を定義する。文法は次の通りである。
PICS-Label: <labellist>
labellist
の部分の文法は上に記述している。 RFC-822で提示された仕様にしたがって、行頭は連続した空白で始まってよい。
HTML埋込みラベル
HTML
記述で定義されているMETA要素を使用し、 ラベルをmeta情報としてHTMLファイルに埋め込んでもよい。 埋め込みには、HTTPヘッダー機構を使用する。
<META http-equiv="PICS-Label" content='labellist'>
content
属性の記述にシングルクォートを使うことに注意しなければならない。なお、PICSラベルの文法では、ダブルクォートを使用している。contentに記述する以下の文字は、SGMLで指定した方法でエスケープしなければならない。
‘ |
' |
/* single quote */ |
& |
& |
/* ampersand */ |
> |
> |
/* greater than */ |
“
HTML2.0標準提案”を参照のこと。
通常、ラベルは指定された
URLに適用されるため、文書に埋め込まれているラベルでは“for”オプションを省略するかもしれない。文書に埋め込まれたspecific(genericでない)ラベルは、その文書に位置付ける時に使用したURLとは無関係に、その文書に適用される。genericラベルが “ホーム” URL(URLパスが‘/’で終了する)で参照することができる文書に埋め込まれている時、ホームURLをプレフィクスに含んでいるすべてのURLに適用される。
例えば、クライアントが文書“
http: //www.greatdocs.com/foo/bar/bat.htm”のラベルに興味を持った場合、最初に、その文書がspecificラベルを埋め込んでいるか否かチェックする。もしなければ、クライアントは文書“http: //www.greatdocs.com/foo/bar/”の文書を要求する。サーバは、foo/barのホーム文書を送り返す。これが、foo/bar/index.html、foo/bar/home.html、あるいは他の何かであるかはサーバに依存する。もしその文書が埋め込まれたgenericラベルを含んでいれば、クライアントは、文書bat.htmに適用できると解釈する。もしクライアントがgenericラベルを見つけることができなければ、“http: //www.greatdoc.com/foo/”、あるいは“http://www.greatdocs.com/”というようにさらに上へ階層をチェックすることになる。
Web
サイトオペレータは、そのWebサイトHTML文書にspecificラベルが埋め込まれることを望むであろうし、また、そのサイト、あるいはサイトのサブ部分について、できるだけ多くのレベルの階層のホーム文書がgenericラベルを含んでいることを望むであろう。次のセクションで記述するが、HTTPヘッダーでラベルを送信する場合、より優雅で機能的な方法を使うように奨励されている。
HTTPを使用したラベル付き文書の要求
クライアントが、
1つ以上のラベルを含む文書を要求するための簡単な拡張をHTTPに規定する。ここではHTTPプロトコルだけ取り扱う。 他のプロトコルでも同様の拡張が実施されることを希望する。HTTPサーバは、クライアントから要求されたときのみ、ヘッダーにPICSラベルを含んでいるべきで、また、クライアントが要求したサービスのラベルのみを含んでいるべきである。クライアントは、ラベルの“for”オプションで指定されたURLには無関係に、要求した文書のHTTPヘッダーで帰されたラベルを、文書に埋め込まれたラベルと仮定することができる。
例
クライアントから
PICS機能を持つHTTPサーバwww.greatdocs.comに送信:
GET /foo.html HTTP/1.0
Protocol-Request: {PICS-1.1 {params full
{services "http://www.gcf.org/v2.5"}}}
サーバからクライアントへの応答:
HTTP/1.0 200 OK
Date: Thu
、 30 Jun 1995 17:51:47 GMTLast-modified: Thursday
、 29-Jun-95 17:51:47 GMTProtocol: {PICS-1.1 {headers PICS-Label}}
PICS-Label:
(PICS-1.1 "http://www.gcf.org/v2.5" labels
on "1994.11.05T08:15-0500"
exp "1995.12.31T23:59-0000"
for "http://www.greatdocs.com/foo.html"
by "George Sanderson
、 Jr."ratings (suds 0.5 density 0 color/hue 1))
Content-type: text/html
...contents of foo.html...
例の説明
クライアントは文書
foo.htmlを要求し、加えて、レイティングサービス ”http: //www.gcf.org/v2.5” についての文書のfullラベルを要求する。サーバは、文書と同様にPICS-Labelヘッダーでラベルを送り返す。文書に(いくつかの)ラベルが存在しない時、サーバがHTTPエラーステータスを生成するのは不適当である。このため、 PICS-Labelヘッダーフィールド(labellist)のフォーマットでは、サーバがラベルか、ラベルが利用できない説明のどちらかを応答することを許可している。
通常の
HTTPでのHEADとGETとの違いにしたがって、完全な文書を参照する前にレイティング値を調べることを望むクライアントは、要求する時の単語GETをHEADに置き換えることができる。 サーバは正確に上に示されたヘッダーを返答するが、foo.htmlの文書は送り返さない。
ラベル付き文書要求のためのHTTPの詳細な文法
以下に、
modified BNFで、文書と関連するラベルを要求するためにHTTPのヘッダーラインに追加した文法を記述する。
request-header
::'Protocol-Request: {PICS-1.1 {params ' [completeness]
extension*
services '}}'
completeness :: 'minimal' | 'short' | 'full' | 'signed'
extension :: '{' token-or-quoted-string+ '}'
token-or-quoted-stringの先頭は'services'ではない。
token-or-quoted-string
:: token | quotednametoken :: alphanumpm+
services :: '{' 'services' quotedURL+ '}'
minimal
ラベルが要求された場合、 genericラベルが返されるのでなければ、すべてのオプションが省略される。genericラベルが返される場合、genericオプションとforオプションがラベルに含まれていなければならない。shortラベルは、 minimalラベルに含まれているすべてに加え、サーバが適切と考える追加のオプションを含んでいる。complete-label(または full)オプションで、fullラベルが要求された場合、可能な限りの情報がラベルで返却される。ただし、signature-RSA-MD5オプションは必要とされていない。
signed
ラベルが要求された場合、 fullラベルのすべての情報がラベルのディジタル署名と共に送られる。signedラベルは、ラベルの一部として(署名を計算した値を含んだ)情報が転送されなければならない。 complete-label(またはfull)オプションは送られてもよいが、それは余分であろう。 ラベルの署名についての詳細を、セクション“MICsとディジタル署名”に記述している。
サーバにとって、オプションが送信されないことで、
completenessを無視することは好ましいことである。もしcompletenessが省略された場合、minimalが与えられたように扱われる。将来の拡張で、completenessオプションの値として、どんな英数字の文字列でも使われるかわからない。completenessの値を受け取るサーバがこれを認識することができない場合、minimal指定されたように扱わなければならない。
extension
は、将来、プロトコルを拡張のためにある。 サーバが認識できない拡張は無視しなければならない。 実験的拡張では 拡張の記述を参照するURLを最初のtoken-or-quoted-stringとして使用することが推奨されている。
service
に記述されているquotedURLには、クライアントが文書のラベルを要求したレイティングサービスが記述される。 たくさんのレイティングサービスから1つのHTTP要求で複数のラベルを要求することが可能であって、 serviceに要求と同数のquotedURL部の繰り返しがあるかもしれない。
ラベル付き文書のHTTP応答ヘッダーに関する詳細な文法
2
つの追加ヘッダーを記述する。
protocol-header
:: 'Protocol: {PICS-1.1 {headers PICS-Label}}'label-header :: 'PICS-Label: ' labellist
ラベル要求
参照する文書とは切り離し、
PICSラベルのみを参照することができる。この方法でラベルを要求するためには、クライアントはラベルビューロにアクセスする。ラベルビューロは、以下に記述する特殊な参照文を認識するHTTPサーバである。ラベルビューロは、HTTP以外のプロトコルを通して文書にアクセスし、他のサーバに存在する文書のラベルを供給する。 多くのレイティングサービスについて作り出されたラベルを、“有名な”ラベルビューロが(おそらく有料で)分配すると予測される。
レイティングサービスは、自身のラベルへのオンラインアクセスを提供することで、ラベルビューロとして動作するよう推奨されている。既定値では、レイティングサービスの識別子である
URLは、ラベルビューロの識別子である。クライアントがレイティングサービスのURLを要求すれば、“レイティングサービスとレイティングシステム”で記述するように、人間が判読可能なサービスの説明が返却される。一方、クライアントが同じURLで、以下に定義する問い合わせパラメータを含んだ要求を実施すれば、それはラベルを要求したものと認識される。しかしながら、レイティングサービスは、ラベルビューロとして動作することを要求されていない。そして、ラベルビューロとしての動作は、異なったURL(たぶん異なったHTTPサーバで)で実現するかもしれない。
問い合わせの例
(
さらに複雑な問い合わせと応答は、付録Bを参照)
ここでは、
http://www.labels.org/RatingsのURLで識別される、レイティングサービスを仮定している。このレイティングサービスは、(少なくとも)自身の文書のラベルを配布するために、ラベルビューロを動作させている。次の問い合わせのサンプルは、HTTPサーバwww.labels.orgへの要求の実例である(改行が提示目的のため挿入されている)。
GET /Ratings?opt=generic&
u="http%3A%2F%2Fwww.questionable.org%2Fimages"&
s="http%3A%2F%2Fwww.gcf.org%2Fv2.5"
HTTP/1.0
http://www.labels.org/Ratings
に対して、サイトwww.questionable.org.の階層imagesのすべてに適用されるsingle labelを送信するよう問い合わせている。要求するラベルは、サービスhttp://www.gcf.org/v2.5によって作られたものである。“:”の表示に%3Aを、“/”の表示に%2Fを使用していることに注意しなければならない。これは、URLの文字をエンコードしたものである。RFC-1738を参照のこと。
ラベルビューロは、タイプ“
application/pics-labels”の文書を返送する。返却されるラベルは、できるだけ多くのオプションを含んでいるか、complete-label(またはfull)オプションが与えられたときのように、完全であるべきである。
HTTPラベル問い合わせの詳細な文法
以下に、
modified BNFで、ラベルビューロに対して要求するGETとPOSTの文法を記述する。POST要求の使用方法は、GET要求を取り扱うことのできないHTTPサーバとの互換性のためだけに記述している。POSTの使用は、HTML2.0仕様(”for use in submitting forms”、セクション8.2.1と8.2.3を参照)で批判されている。
request
:: get | postget :: 'get' url-fragment '?' [opt] [format]
extension* url+ service+
post :: 'post' url-fragment crlf crlf formencodeddata
url-fragment :: HTTP1.0で指定された、ホスト名のあとのオリジナルURLの部分。
crlf
:: 改行(hex D) 復帰 (hex A)opt :: 'opt=' option
option :: 'generic' | 'normal' | 'tree' | 'generic+tree'
format :: [and] 'format=' form
form :: 'minimal' | 'short' | 'full' | 'signed'
extension :: token '=' token-or-quoted-string
token
は、opt、format、u、またはsのいずれかではない。また、token-or-quoted-stringは、RFC-1738で記述した規則でクォートされたものである。token-or-quoted-string
:: token | quotednametoken :: alphanumpm+
url :: [and] 'u=' encodedURL
service :: [and] 's=' encodedURL
boolean :: 't' | 'f' | 'true' | 'false'
and :: '&' 問い合わせが ’?’の直後につづくものでなければ、これがなければならない。
encodedURL
:: クォートされたURL。RFC-1738にあるように、URL中の引用符といくつかの特殊文字は、”%xx” という表記法を用いてエンコードされる。アルファベット文字、数字、および特殊文字 $_-.+!*'() はクォートする必要はないが、他の文字はクォートしなければならない。コロン(:)を%3Aに、スラッシュを%2Fにエンコードしなければならないのは、このためである。formencodeddata ::get
で記述した問い合わせ、ただし、HTML2.0のセクション8.2.1、8.2.3で記述してあるように、MIMEタイプapplication/x-www-form-encodedにエンコードされている。
ラベル問い合わせに対する応答
MICsとディジタル署名
この仕様では、
PICSシステムで発生すると思われる問題を防止するため、2つの独立したセキュリティ機能を記述している。2つの機能は単独で使用してもよいし、一緒に使用してもよい。2つの機能は特許を取得した暗号化技術に頼っており、その使用がいろいろな法律の制限(米国からの輸出制限を含む)受けやすいものである。PICS技術分科会は、コード、あるいはアルゴリズムの正確な法律的な問題について、情報を提供することができない。
米国の
RSA研究所(100 Marine Parkway、 Redwood City、 CA、 94065-1031)は、PICS仕様中の暗号化コンポーネントを実装するとき必要となるすべてのコードを提供する、RSAREFと呼ばれるソースコードキットを配布している。RSAデータセキュリティ社 社長のJim Bidzos氏は、我々に“RSAREFをPICS仕様の実装に使用する場合は、費用なしで利用できるだろう”と語った。法律問題などについての質問は、Bidzos氏にすること。
最初の問題は、文書が検査されラベルが作成されたのち、文書がラベルを更新せずに修正された場合に発生する。これは正当な
(例えば、タイムワーナーは、タイム誌の最新号のページに更新し、ラベルはまだ有効と考えている)ことかもしれないし、権限を与えられていない者によって文書が勝手にいじられた結果かもしれない。PICSラベルは、この種の問題の防止のため、3つのオプションフィールドを持っている。
At
もし対象の文書が単に更新されたものであれば、
atフィールドに格納されている文書の最終更新日付はラベルが作成されたときのものである。最終更新日付が正確にメンテナンスし続けられていると仮定すると、ラベルが作成された後で、文書が更新されたことを見つけることができる。
Until
または expもし文書が、まれに、あるいは定期的に更新されるものであれば、文書が次に更新される前にラベルを無効にさせる有効期限を含むことができる。この方法も、悪意をもった計画的なアタックに対応することはできない。
MIC-md5
またはmd5もしラベルが実際に評価されたデータだけへ適用されるものならば、ラベルが作成される時のデータのチェックサム
(“メッセージダイジェスト”と呼ぶ)を適用することができる。メッセージダイジェストは、MIME base-64エンコーディングを使用したUS-ASCII文字列に変換され、MIC-md5(またmd5と呼ぶ)フィールドに格納される。文書が後に参照される時、同じアルゴリズムでメッセージダイジェストを再計算し、2つのダイジェストを比較することができる。もし文書がどんな方法ででも勝手にいじられていれば、2つのダイジェストが同じ値にはならないことを考慮し、MD5アルゴリズムは設計されている。このテクニックは暗号の社会では有名で、
MOSS( MIME Object Security Services)仕様として、電子メール社会に取り入れられている。 電子メールで使用するには、メールが配達される前に電子メールのゲートウェイがデータを修正(例えば、行の折り返し)することができるため、2つのメッセージダイジェストが一致すること保証するための精巧なテクニックが要求される。我々は、大きくはこの複雑さのために、PICSに直接MOSSを取り入れないことにした。代わりに、我々は、ソース文書から
base64エンコーディングへの変換について、直接、MD5アルゴリズムを使用することを推奨している。この結果として作成される文字列は、直接、mic-md5(md5)ラベルオプションに格納される。MD5アルゴリズムによるUS-ASCII文字列への変換は、RSAREF(バージョン2.0)ソフトウェアで提供されている。PICS
ラベルはラベル付けする文書に埋込むことができるので、すべてのPICSラベルを文書から取り除いて、メッセージダイジェストを計算なければならない。これは、HTML文書では、PICSラベルを格納しているすべてのMETA要素(と、各々のMETA要素の直後につけられている、いくつかの空白)を取り去った後で、ダイジェストが計算されなければならないことを意味している。
第
2の問題は、ラベルを勝手に変更することと、捏造することである。ここに記述する問題は、エンドユーザに対して、受け取ったラベルが要求したレイティングサービスで作成され、その後、変更されなかったことを何らかの方法で保証することである。PICSは、ラベルに “ディジタル署名をする” ことを要求している。ディジタル署名は、現在のところ法律的に認知されていないが、厳密に保証することのできる暗号化テクニックである。RSA署名テクニックは、次のように動く。
key
の配布に関する問題(そして、もし、サービスのkeyが危険になった場合無効にする)は、商業的競争の領域である。今日、確立された利用可能な解決策は存在しないため、PICSはそれぞれのサービスが何らかの方法でpubic keyを配布すると仮定している。また、キーは無効にされる必要はないと仮定している。これは、明らかに完全な解決ではないが、特定の独占されている技術に依存することなく、今日実現できる限界であると考えている。
以上に概説したディジタル署名で、1つ、追加される問題がある。もし、レイティングサービスが、他者にその名前で、ラベルを作成することを許すならば
(例えば、サービスがコンテンツ製作者による、セルフレイティングをサポートする)、ラベルはサービスとコンテンツ製作者の両者が署名する必要があるであろう。これ(おのおのが他者の署名なしにラベルに署名すること)は実現できるが、署名を確認するために必要なpublic keyを配布することが難しくなる。PICS仕様は、この問題の解決案も提案していない。(これも、商業的競争の領域である。)
署名の詳細
用語集
application/pics-labels
1
application/pics-service
レイティングサービスの記述に使用する新しい
MIMEデータタイプ。“レイティングサービスとレイティングシステム”で定義している。BNF
Backus-Naur Form (
カテゴリ
(category)レイティングで使用する一つ一つの基準を記述した、レイティングシステムの一部。
例えば、あるレイティングシステムは、“性的な素材”、“暴力”、および“言葉”と名づけられる3つのカテゴリを持っているかもしれない。“次元”とも呼ぶ。コンテントラベル
(content label)与えられた文書の内容についての情報を含んでいるデータ構造。
レイティング、あるいはコンテントレイティングとも呼ぶ。 コンテントラベルは、文書を含むか、別れて存在している。コンテントレイティング
(content rating)コンテントラベル
を参照。次元(dimension)
カテゴリ
を参照。文書(document)
URLによって参照することができるアイテム。別の文章では、“ハイパテキストページ”、あるいは“リソース”として知られている。
HTML
HyperText Markup Language
HTTP
HyperText Transfer Protocol
ハイパテキスト
(hypertext)リンクを通じて接続される文字列、グラフィック、およびその他のメディア。
ラベル
(label)コンテントラベル
を参照。ラベルビューロ(label bureau)
コンピュータネットワーク経由で文書の評価を供給するコンピュータシステム。文書自身は供給しないかもしれない。
MD5
RFC1321
MIC
Message Integrity Check
MIME
Multimedia Internet Message Extension
PICS
Platform for Internet Content Selection
レイティング
(rating)コンテントラベル
を参照。レイティングサーバ(rating server)
ラベルビューロ
を参照。レイティングサービス(rating service)
いくつかのレイティングシステムによるラベルを選択し、配布する個人、あるいは組織。おそらく、配布はラベルビューロ、あるいは
CD-ROM経由で行われる。レイティングシステム(rating system)
情報を評価する方法。
レイティングシステムは、一つ以上のカテゴリで構成されている。スケール(scale)
カテゴリの値が取りうる範囲。
SGML
Standard Generalized Markup Language.
転送名称
(transmission name)ネットワーク上でカテゴリを参照するときの
(カテゴリの)短い名称。カテゴリの名称とは違って、転送名称は、言語には関係なくUS-ASCIIにエンコードされ、合理的に可能な限り短くされたものでなければならない。1つのレイティングシステムの中で、すべてのカテゴリの転送名称は異なったものでなければならない。URLは、一般的に要求されるものより長いため、転送名称として使用することができる。それゆえに転送名称はcase sensitiveである。URL
Uniform Resource Locator
参考文献
謝辞
次の方々からのコメントと提案に深く感謝する。
Bob Atkinson
, MicrosoftAnselm Baird-Smith
, W3CBrenda Baker
, LucentScott Berkun
, MicrosoftTim Berners-Lee
, W3CRoxana Bradescu
, AT&TDaniel W. Connolly
, W3CRoy Fielding
, W3CJay Friedland
, SurfWatchHenrik Frystyk Nielsen
, W3CPhilip Gladstone
, Raptor SystemsMichael Gordon
, ProdigyWayne Gramlich
, SunWoodson Hobbs
, NewViewDavid Karger
, MITRohit Khare
, W3CCharlie Kim
, AppleJohn C. Klensin
, MCIBreen Liblong
, IFSIAnn McCurdy
, MicrosoftRich Petke
, CompuServeEric Prud'hommeaux
, W3CDave Raggett
, W3CGordon Ross
, NetNannyBob Schloss
, IBMDavid Singer
, IBMRay Soular
, SafeSurfMichael Smith
, ProdigyMarcy Swenson
, Providence SystemsJason Thomas
, MIT
付録A: ラベルビューロのロケーティングアルゴリズム
PICS
の使用が増加するにしたがい、我々は総合的なネットワークパフォーマンスへの影響を考慮しなければならない。概して、追加するPICSヘッダーは、通常、数100バイトのデータを含み、文書自身は、ほとんどが数千バイトのデータであるので、文書でラベルを転送するPICSテクニックは、ネットワークにほんの少しのトラフィックを増加させる。さらに、ラベルは文書と同じソースから受け取ることができるので、PICSによってネットワーク上のホットスポット (人気のあるサーバ自身は、既にホットスポットである)が作られることはない。
しかしながら、ラベルビューロは、
PICSによって提案された新しいコンポーネントである。そして、もし、1つのラベルビューロに人気がでるようになれば、そこがホットスポットになり、PICSシステムのパフォーマンスボトルネックとなるという重大な危険性がある。インターネットはこの問題に対するよい解決策を必要としている。長期的に見ると問題を解決するかもしれない仕事が進行している。
しかしながら、短期的に見ると本当によい解決はない。次の提案は、
MIT David Karger教授によるものである。これは、システムの負荷を分配するためのいくつかの有名なアルゴリズムを変形したものである。
最初に、人気のあるラベルビューロがネットワーク上に多くのミラーサイトを設立することができると仮定する。これは、既に一般的な認識であり、サイトを決定する方法や、新しいラベルが作成されたとき、それらを更新する方法の詳細について提案する必要はない。我々のアルゴリズムは単純で、ミラーサイトが存在し、等価なもので、そしてネットワークのドメインネイムシステム
(DNS)が、通常の方法で、ラベルビューロの1つの名称から、複数のインターネットアドレスへ位置付けるレコードを持っていると仮定している。
クライアントソフトウェアがスタートする時、クライアントソフトウェアは、
DNSを通して、使用する(我々は1つのラベルビューロを仮定しているが、アルゴリズムは既知の手法で複数のビューロに展開している)ラベルビューロの名前を解析するべきである。もし、複数のホストアドレスを受け取った場合、それを完全なリストとして保存し、“プライマリ”、”セカンダリ” とラベル付けしたビューロをランダムに2つ選択する。これらは、ソフトウェアがスタートしたとき有効とされるクライアントソフトウェアのコンフィギュレーションパラメータとなるかもしれない。そして、60分をラベルビューロとして受け取ったアドレス総数で割り、この値をタイマにセットし“敷居”値とする。
クライアントは、常に、以下に記述するラベルビューロと接続を取る。もしタイマが敷居値より下であれば、プライマリビューロのアドレスを使用する。そうでない場合、問い合わせはプライマリとセカンダリの両方のラベルビューロに送られる。最初の応答が到着したとき、両方のラベルビューロとの接続は閉じている。最初に回答したビューロがプライマリビューロとなる。いずれにせよ、新しいセカンダリビューロのアドレスがランダムに選択され、タイマは敷居値にリセットされる。
おそらく、遠からず、このアルゴリズムの簡単な変形が、実現されるだろう。
HTTPプロトコルが、サーバに対して、“keep alive” 接続を許すよう変更される時、PICSクライアントは、可能な限りプライマリラベルビューロへの接続を保持するようになる。そのときには、(より注意深く測定しなければならないが)最初の応答をプライマリビューロのものと、単純に解釈する。問い合わせを送り、応答を受け取るまでの所要時間は、全体の処理時間よりも測定しなければならないものである。接続のセットアップコストは高価である。そして、もし、すでに接続されているプライマリビューロとの往復時間と、接続設立を含めたセカンダリビューロとの往復時間を比較してしまえば、測定はゆがめられたものになってしまう。
付録B: ラベルビューロの要求と応答のサンプル
次に述べる問い合わせと応答は、クライアントと、文書とは別にラベルを配布するラベルビューロとの相互作用の特徴を説明したものである。
3つの同じサービスによって供給され、3つのサービスが提供する3文書について、4種類の問い合わせを行う。問い合わせは、問い合わせモード(Generic、Normal、Tree、Generic+Tree)だけで異なっている。
次の
URLのラベルを問い合わせる。
次のサービスの問い合わせを行う。
サーバは、次の関連したラベルを持っている。
持っていない。
問い合わせは、印刷して判読することができるものを応答する。
’;’ で始まる注釈は、応答の説明を加えたものである。問い合わせと応答は提示のため複数行に分割しているが、実際は(非常に長い)1行で送信される。
Generic問い合わせ
この問い合わせは、
3つの文書に当てはまるfull genericラベルについてのものである。
クライアントからサーバへの問い合わせ:
GET /ratings?opt=generic&format=full&
u="http%3A%2F%2Fwww.w3.org%2Fpub%2FWWW%2F+&"
u="http%3A%2F%2Fwww.w3.org%2Fpub%2FWWW%2FTheProject.html&"
u="http%3A%2F%2Fwww.w3.org%2Funknown&"
s="http%3A%2F%2Fwww.ages.org%2Four-service%2Fv1.0%2F&"
s="http%3A%2F%2Fwww.rsac.org%2Fv1.0&"
s="http%3A%2F%2Funknown.com" HTTP/1.0
サーバからクライアントへの応答:
HTTP/1.0 200 OK
Content-Length: 550
Content-Type: application/pics-labels
Server: Jigsaw 0/0
Date: 15 Apr 1996 18:20:47 GMT
(PICS-1.1
"http://www.ages.org/our-service/v1.0/" ;
第一のサービスlabels
for "http://www.w3.org/pub/WWW/"
generic true
by "abaird@w3.org"
ratings (age 11)
;
第一のラベルの末尾。'ratings' は常にラベルの最終部である。;
同じgenericラベルがhttp://www.w3.org/pub/WWW/TheProject.html;
で始まるすべてのURLに適用される。for "http://www.w3.org/pub/WWW/"
generic true
by "abaird@w3.org"
ratings (age 11) ;
第二のラベルの末尾
error (not-labeled "http://www.w3.org/unknown")
;
第三の文書のラベルは存在しない;
要求された3つのサービスについて、第一のサービスは終了した"http://www.rsac.org/v1.0"
labels
for "http://www.w3.org/pub/WWW"
generic true
by "abaird@w3.org"
ratings (v 0 s 0 n 0 l 0)
for "http://www.w3.org/pub/WWW"
generic true
by "abaird@w3.org"
ratings (v 0 s 0 n 0 l 0)
error (not-labeled "http://www.w3.org/unknown")
;;
第三のサービスにラベルは存在しないerror (no-ratings "unknown service"))
Normal問い合わせ
この問い合わせは、各々の文書の
full specificラベルについてのものである。
クライアントからサーバへの問い合わせ:
GET /ratings?opt=normal&format=full&
u="http%3A%2F%2Fwww.w3.org%2Fpub%2FWWW%2F+&"
u="http%3A%2F%2Fwww.w3.org%2Fpub%2FWWW%2FTheProject.html&"
u="http%3A%2F%2Fwww.w3.org%2Funknown&"
s="http%3A%2F%2Fwww.ages.org%2Four-service%2Fv1.0%2F&"
s="http%3A%2F%2Fwww.rsac.org%2Fv1.0&"
s="http%3A%2F%2Funknown.com" HTTP/1.0
サーバからクライアントへの応答:
HTTP/1.0 200 OK
Content-Length: 569
Content-Type: application/pics-labels
Server: Jigsaw 0/0
Date: 15 Apr 1996 18:20:54 GMT
(PICS-1.1
"http://www.ages.org/our-service/v1.0/"
labels
;; specific
ラベルが存在しないため、genericラベルを返却する。for "http://www.w3.org/pub/WWW/"
generic true
by "abaird@w3.org"
ratings (age 11)
;; specific
ラベルが存在しないため、genericラベルを返却する。for "http://www.w3.org/pub/WWW/"
generic true
by "abaird@w3.org"
ratings (age 11)
error (not-labeled "http://www.w3.org/unknown")
"http://www.rsac.org/v1.0"
labels
;; specific
ラベルが存在しないため、genericラベルを返却する。for "http://www.w3.org/pub/WWW"
generic true
by "abaird@w3.org"
ratings (v 0 s 0 n 0 l 0)
;;
ここではspecificラベルを返却する。for "http://www.w3.org/pub/WWW/TheProject.html"
generic false
by "abaird@w3.org"
ratings (v 0 s 0 n 0 l 0)
error (not-labeled "http://www.w3.org/unknown")
error (no-ratings "unknown service"))
Tree問い合わせ
この問い合わせは、要求されたプレフィクス
URLを持っているすべてのURLのfull specificラベルを要求するものである。 このラベルビューロは、問い合わせされたツリーについて、カレントディレクトリの文書のラベルのみを返却する。
クライアントからサーバへの問い合わせ:
GET /ratings?opt=tree&format=full&
u="http%3A%2F%2Fwww.w3.org%2Fpub%2FWWW%2F+&"
u="http%3A%2F%2Fwww.w3.org%2Fpub%2FWWW%2FTheProject.html&"
u="http%3A%2F%2Fwww.w3.org%2Funknown&"
s="http%3A%2F%2Fwww.ages.org%2Four-service%2Fv1.0%2F&"
s="http%3A%2F%2Fwww.rsac.org%2Fv1.0&"
s="http%3A%2F%2Funknown.com" HTTP/1.0
サーバからクライアントへの応答:
HTTP/1.0 200 OK
Content-Length: 1075
Content-Type: application/pics-labels
Server: Jigsaw 0/0
Date: 15 Apr 1996 18:21:00 GMT
(PICS-1.1
"http://www.ages.org/our-service/v1.0/"
labels
;;
いくつかのラベルが()で区切られている(for "http://www.w3.org/pub/WWW/"
generic true
by "abaird@w3.org"
ratings (age 11)
for "http://www.w3.org/pub/WWW/Overview.html"
by "abaird@w3.org"
generic false
ratings (age 12)
by "abaird@w3.org"
for "http://www.w3.org/pub/WWW/PICS"
generic true
ratings (age 5)
by "abaird@w3.org"
for "http://www.w3.org/pub/WWW/Daemon"
generic true
ratings (age 5))
;;
ディレクトリhttp://www.w3.org/pub/WWW/ のラベルの末尾;; http://www.w3.org/pub/WWW/TheProject.html
をプレフィクスとするラベ;;
ルは存在しないerror (not-labeled "http://www.w3.org/pub/WWW/TheProject.html")
error (not-labeled "http://www.w3.org/unknown")
"http://www.rsac.org/v1.0"
labels
(for "http://www.w3.org/pub/WWW"
generic true
by "abaird@w3.org"
ratings (v 0 s 0 n 0 l 0)
for "http://www.w3.org/pub/WWW/TheProject.html"
generic false
by "abaird@w3.org"
ratings (v 0 s 0 n 0 l 0)
for "http://www.w3.org/pub/WWW/Daemon"
generic true
by "abaird@w3.org"
ratings (v 0 s 0 n 0 l 0)
for "http://www.w3.org/pub/WWW/PICS"
generic true
by "abaird@w3.org"
ratings (v 0 s 0 n 0 l 0))
error (not-labeled "http://www.w3.org/pub/WWW/TheProject.html")
error (not-labeled "http://www.w3.org/unknown")
error (no-ratings "unknown service"))
generic+tree
この問い合わせは、要求されたプレフィクス
URLを持っているすべてのURLのすべてのgenericラベルを要求するものである。ここでは、(genericの場合についてのみ)直前のの問い合わせで返却されたラベルのサブセットが返却されている。
クライアントからサーバへの問い合わせ:
GET /ratings?opt=generic%2Btree&
format=full&
u="http%3A%2F%2Fwww.w3.org%2Fpub%2FWWW%2F+&"
u="http%3A%2F%2Fwww.w3.org%2Fpub%2FWWW%2FTheProject.html&"
u="http%3A%2F%2Fwww.w3.org%2Funknown&"
s="http%3A%2F%2Fwww.ages.org%2Four-service%2Fv1.0%2F&"
s="http%3A%2F%2Fwww.rsac.org%2Fv1.0&"
s="http%3A%2F%2Funknown.com" HTTP/1.0
サーバからクライアントへの応答:
HTTP/1.0 200 OK
Content-Length: 872
Content-Type: application/pics-labels
Server: Jigsaw 0/0
Date: 15 Apr 1996 18:38:28 GMT
(PICS-1.1
"http://www.ages.org/our-service/v1.0/"
labels
(for "http://www.w3.org/pub/WWW/"
generic true
by "abaird@w3.org"
ratings (age 11)
by "abaird@w3.org"
for "http://www.w3.org/pub/WWW/PICS"
generic true
ratings (age 5)
by "abaird@w3.org"
for "http://www.w3.org/pub/WWW/Daemon"
generic true
ratings (age 5))
error (not-labeled "http://www.w3.org/pub/WWW/TheProject.html")
error (not-labeled "http://www.w3.org/unknown")
"http://www.rsac.org/v1.0"
labels
(for "http://www.w3.org/pub/WWW"
generic true
by "abaird@w3.org"
ratings (v 0 s 0 n 0 l 0)
for "http://www.w3.org/pub/WWW/Daemon"
generic true
by "abaird@w3.org"
ratings (v 0 s 0 n 0 l 0)
for "http://www.w3.org/pub/WWW/PICS"
generic true
by "abaird@w3.org"
ratings (v 0 s 0 n 0 l 0))
error (not-labeled "http://www.w3.org/pub/WWW/TheProject.html")
error (not-labeled "http://www.w3.org/unknown")
error (no-ratings "unknown service"))
Webmaster
$Date: 1996/12/09 03:45:13 $