[12] [DFN[IDNA2008]] は、 [[IDNA]] の2008年頃の改訂版です。 ;; [13] 2008年「頃」というのは、この種の仕様の例に漏れず、仕様策定に時間がかかって2008年に完成していないからです。 [14] [[IDNA2008]] は [[IDNA2003]] を改訂して置き換えるものですが、非互換な変更を含んでいるため、 [[IDNA2003]] も引き続き実装されて残っています。 * 仕様書 - [6] [CITE@en[RFC 5890 - Internationalized Domain Names for Applications (IDNA): Definitions and Document Framework]] ([TIME[2010-08-05 01:32:35 +09:00]] 版) - [7] [CITE@en[RFC 5891 - Internationalized Domain Names in Applications (IDNA): Protocol]] ([TIME[2010-08-05 01:32:40 +09:00]] 版) - [8] [CITE@en[RFC 5892 - The Unicode Code Points and Internationalized Domain Names for Applications (IDNA)]] ([TIME[2010-08-05 01:32:32 +09:00]] 版) - [9] [CITE@en[RFC 5893 - Right-to-Left Scripts for Internationalized Domain Names for Applications (IDNA)]] ([TIME[2010-08-05 01:32:45 +09:00]] 版) - [10] [CITE@en[RFC 5894 - Internationalized Domain Names for Applications (IDNA): Background, Explanation, and Rationale]] ([TIME[2010-08-05 01:32:43 +09:00]] 版) - [11] [CITE@en[RFC 5895 - Mapping Characters for Internationalized Domain Names in Applications (IDNA) 2008]] ([TIME[2010-09-15 04:55:59 +09:00]] 版) - [15] [[IDNA2003]] のうち [[Punycode]] ([[RFC 3492]]) は [[IDNA2008]] でも使われています。 * Unicode の版 [58] [[IDNA2008]] の [[RFC]] は [[Unicode]] 5.2 を引用していますが、特に版を限定はしておらず、 [[Unicode]] が更新されても使えることになっています。 [60] [[IDNA2008]] の実装は [[Unicode]] の[[特性]]などを利用して処理を行うこととなりますが、 この情報については [[Unicode]] の版はいずれか特定の版でなくてはならず、 部分的に新しい版になっているなどの齟齬が生じていてはいけません。 [SRC[>>10 7.1.2, 7.1.3]] [59] [[登録]]に当たっては、[[レジストリー]]は新しい[[版]]で追加された[[文字]]を扱う必要がない限り、 [[Unicode]] の版を更新する必要はありません。 [SRC[>>10 7.1.2]] * 処理モデル [61] [[国際化ラベル]]の項を参照してください。 * IDNA2003 からの主要な変更点 ** 用語の整理 [19] 伝統的に[[ドメイン名]]関係の用語はバリエーションが多く定義が曖昧で混乱しており、 [[IDN]] 関連用語も例外ではありません。 [[IDNA2008]] では [[IDN]] 関連用語が整理され、 [[IDNA2003]] よりも体系的に説明されてわかりやすくなりました。 とはいえ、依然として不明瞭な部分や曖昧な用法も残っています (例えば[[未検証Aラベル]])。 [49] 詳しくは[[ラベル]]の項を参照してください。 ** 登録プロトコルと lookup プロトコルの分離 [37] [[ドメイン名]]の[[登録]]と [[lookup]] の手順が別々に定義されるようになりました [SRC[>>36]]。 [[IDNA2003]] でも [[AllowUnassigned]] のような[[フラグ]]があったとはいえ、基本的には[[登録]]も [[lookup]] も共通の手続きとして規定されていました。これが [[IDNA2008]] では完全に別々の手続きとして定義されています。 ** Unicode の版の非依存化 [35] [[IDNA2003]] は [[Unicode 3.2]] という特定の[[版]]に依存していましたが、 [[IDNA2008]] は特定の[[版]]には依存しなくなったとされています [SRC[>>36, >>10 1.1, >>10 7.1]]。 [50] [[Unicode 3.2]] に束縛された [[Stringprep]]/[[Nameprep]] を廃し、 [[Unicode]] の[[特性]]から機械的に導かれる[[導出特性値]]による定義に切り替えられました。 このため、 [[Unicode]] の新しい版になってもほぼ自動的に対応できることになっています。 [51] ただし、[[導出特性値]]の変更については[[指定専門家]]が評価した上で[[IETF評価]]プロセスを経る必要があるとされており、 通常の [[IETF]] の完全な[[標準化過程]]よりは (おそらく) 高速に進められるのでしょうが、 (公式には) ただちに最新版に追随できるわけではなさそうです。 ** 使用できる文字の決定方法の変更 [40] [[ラベル]]での使用を認める[[文字]]の決め方が「予めすべて手動で決める」から 「[[Unicode]] の[[特性]]に従い決める、ただし例外を除く」に変わりました [SRC[>>36]]。 [53] [[IDNA2003]] では [[Unicode 3.2]] のうち使用してはいけない[[文字]]のリストを決める形で使用可能な文字が定義されており、 これは「exclusion model」と呼ばれています。一方で [[IDNA2008]] では使用してよい[[文字]]のリストを決める形になっていて、 「inclusion model」 [SRC[>>10 3.]] と呼ばれています。 ;; 実際には使用しても良い[[文字]]を決めるというよりは、すべての[[文字]]について使用しても良いか悪いかを決める形になっています。 [54] その決め方も、 [[IDNA2003]] では [[IETF]] で[[文字]]のリストを決めていましたが、 [[IDNA2008]] では[[文字]]のリストの導出方法を決めています。これにより [[Unicode]] の新しい版に機械的に追随できるようになっています。詳しくは[[導出特性値]]の項をご覧ください。 ;; [55] ただし新しい版と古い版の互換性のための調整を行うことが認められているために、 完全に機械的に新しい版に移行できるわけではありません。 [[BackwardCompatible]] を参照してください。 この作業には [[IETF評価]]が必要ですが、完全に仕様全体を改訂するよりは楽です。 十分な運用実績が蓄積された後にはその過程も簡易化されることが示唆されています [SRC[>>10 7.1]]。 ** 大文字・小文字の区別のプロトコルからの分離 [52] [[IDNA2003]] では[[大文字・小文字の不区別]]が[[プロトコル]]に含まれていて、 [[小文字]]に[[正規化]]する方法が正確に規定されていました。しかし [[IDNA2008]] では、[[大文字]]と[[小文字]]の対応は[[言語]]により異なることを理由に、 [[プロトコル]]の一部ではなく、[[アプリケーション]]側で事前に行っておくべき作業としています [SRC[>>10 1.1]]。 その具体的な対応関係は規定から外されています。 ** bidi 制約の変更 [42] [[IDNA2003]] の [[bidi]] に関する制約によれば、[[ラベル]]の末尾に[[結合文字]]を使うことができず [SRC[>>10 4.5.]]、これが原因で [[Dhivehi]] や [[Yiddish]] の一般的な単語の表記 [SRC[>>36]] に支障が生じていていましたが、規制の緩和によりこれが認められるようになりました。 ** fallback [20] [[IDNA2003]] と [[IDNA2008]] の間の非互換変更により、 [[IDNA2003]] における解釈を期待していた[[ドメイン名]]が [[IDNA2008]] では解釈できなくなる場合があります。その場合、 [[lookup]] は[[失敗]]としても構いませんし、 失敗したら [[IDNA2003]] で [[lookup]] し直しても構いませんし、最初から [[IDNA2003]] と [[IDNA2008]] の両方で [[lookup]] しても構いません。ただし、 解釈の違いを突いた攻撃ができるかもしれないので注意が必要です。 ;; [CITE@en[RFC 5890 - Internationalized Domain Names for Applications (IDNA): Definitions and Document Framework]] ;; [21] [[IDNA2003]] 使っても良いとか本当にそんな姿勢でいいのか・・・? ** XXX - [38] 原則として[[記号]]と[[句読点]]を認めないようになりました [SRC[>>36]] - [39] [[文字]]の[[写像]]と[[正規化]]を[[プロトコル]]からは削除し、 [[アプリケーション]]が必要に応じて事前に行うこととされました [SRC[>>36]] - [41] 特定の文脈でのみ利用可能な[[文字]]という概念が導入されました [SRC[>>36]] - [44] [[bidi]] な[[ドメイン名]]が異常な感じで表示されにくくなりました [SRC[>>36]] - [45] [[点分離子]]をプロトコル自体からは削除しました [SRC[>>36]] - [46] 現在は妥当な[[ラベル]]ながら実際には [[IDNAラベル]]でないものを[[非妥当]]としました [SRC[>>36]] ;; [36] [CITE@en[RFC 5891 - Internationalized Domain Names in Applications (IDNA): Protocol]] * 歴史 [1] [CITE@en-us[UTS #46: Unicode IDNA Compatible Preprocessing]] ([TIME[2008-12-10 08:56:55 +09:00]] 版) [2] [CITE@en-us[Unicode IDNA Compatible Preprocesssing]] ([TIME[2009-09-30 06:24:51 +09:00]] 版) [3] [CITE@en[draft-ietf-idnabis-mappings-04 - Mapping Characters in IDNA]] ([TIME[2009-09-29 08:04:24 +09:00]] 版) [4] しかしなんで連中はこう、[[非互換変更]]が好きなのかねぇ。 [5] [CITE[Security Degradations with IDNA2008 (Macchiato)]] ([TIME[2010-01-29 03:18:08 +09:00]] 版) * 各種仕様書・実装の対応 [16] [[Web Applications 1.0]] は現在でも [[IDN2003]] を採用しています。 [TIME[2011-03-19T10:39:25.300Z]] * メモ [17] [[IDNA2008]] は [[IDNA2003]] からいくつかの[[文字]]の解釈を変更しているので、 [[ゾーン管理者]]は注意する[RUBYB[べき]@en[should]]です。 ;; [18] [CITE@en[RFC 5890 - Internationalized Domain Names for Applications (IDNA): Definitions and Document Framework]] [22] [[IDNA2008]] の [[RFC]] はすごく読みにくい。 - [23] 複数の [[RFC]] に分かれているせいで話題がまとまっていない -- [47] 他の [[RFC]] を読まないとまったく理解できない話題が突然登場したりするので、なぜ分割されているのかわからない -- [48] 内容がきっちり分離できるとか、どちらかが完全に部分集合になってるとかじゃないと複数に分割する意味はないんじゃないの - [24] 同じ概念を表す用語と思われるもののぶれが大きく、わざわざ別の表現で言い直したり -- [25] [[非妥当Uラベル]]などはわざわざ数種類の同じ意味の表現を導入している -- [26] 定義されているのはまだましな方で、殆どの場合は本当に同じ意味なのかどうか文脈で推測するしかない - [27] 他の場所への言及がわかりにくい -- [28] 「第○節のチェック」というのはましな方で、「以降のチェック」とか「○○文書の一覧表」など曖昧なポインターを多用している --- [34] しかもそのポインターが、同じとみられるものでも場所によって違う表現になっている -- [29] せめて何か相互参照用の名前か数字でも付けて欲しいものだ - [30] 手順の説明に補足説明や関連する話題が混じったり、手順内での条件分岐がよく読まないと気づかなかったりで、読んで容易に追えるようになっていない - [33] 何が要件でいつそれが満たされなければならないのか明確でない -- [31] 実装依存の要件が多く、その要件に依存した要件や説明があったりして難解過ぎる -- [32] [[RFC 2119]] の[[助動詞]]を使っていたり、[[小文字]]の[[助動詞]]を使ったりして、何に従えばいいのかわからない - [56] 想定読者の種類が多すぎるにも関わらず誰に対する説明か不明瞭である -- [57] [[登録]]作業を行う人、[[登録]]の手続きを決める人、[[IDNA]] 対応プロトコルを作る人、[[IDNA]] 対応プロトコルを実装する人、 [[IDNA]] 対応プロトコルに対応したアプリケーションを実装する人、...