国際化リソース識別子( IRI ) は、Uniform Resource Identifier (URI) プロトコルをベースに、使用可能な文字セットを大幅に拡張したインターネット プロトコル標準です。 [ 1 ] [ 2 ] [ 3 ]これは、2005 年にインターネット技術タスク フォース(IETF)によって RFC 3987 で定義されました。URIはUS-ASCII文字セットのサブセットに限定されています(そのセット外の文字は、未指定の文字エンコーディングに従ってオクテットにマッピングされ、パーセントエンコードされる必要があります) が、IRI には、中国語、日本語、韓国語、キリル文字を含む、 Universal Character Set (Unicode/ ISO 10646 )のほとんどの文字も含まれる場合があります。[ 4 ] [ 5 ]
IRIは、URIがASCIIに限定され、使用できる文字数がはるかに少なかったのに対し、ユニバーサル文字セットを使用してURIを拡張します。IRIはオクテットのシーケンスで表すことができますが、IRIは音声で話したり手書きしたりできるため、定義上は文字のシーケンスとして定義されます。[ 6 ]
IRIはURIにマッピングされ、新しいフォーマットをサポートしていないシステムとの下位互換性を維持します。[ 6 ]
IRIを直接使用できないアプリケーションやプロトコルの場合、IRIがUnicode形式でない場合は、まず正規化合成(NFC)を使用してUnicodeに変換する必要があります。
IRI内の非ASCIIコードポイントはすべてUTF-8でエンコードされ、結果として得られるバイト列はパーセントエンコードされて、有効なURIが生成されます。
例: IRI https://en.wiktionary.org/wiki/Ῥόδοςは URI https://en.wiktionary.org/wiki/%E1%BF%AC%CF%8C%CE%B4%CE%BF%CF%82になります
実装によっては、無効なURI文字であるASCIIコードポイントも同様にエンコードされる可能性がある。 [ 6 ]
この変換は簡単に元に戻すことができます。定義上、IRI を URI に変換して再び IRI に戻すと、表現が正確に異なる場合でも、意味的には元の IRI と同等の IRI が生成されます。[ 7 ]
プロトコルによっては、さらに変換処理が課される場合があります。例えば、DNSラベルにはPunycodeが使用されます。
URIをさまざまな言語で表示する理由はいくつかあります。主に、ラテン文字(A~Z)に馴染みのないユーザーにとって使いやすくなるためです。キーボードで任意のUnicodeを再現することがそれほど難しくないと仮定すると、これによりURIシステムのアクセシビリティが向上します。[ 8 ]
IRIとASCII URIを混在させることで、ユーザーが実際とは異なるサイトにアクセスしていると誤解させるフィッシング攻撃をはるかに容易に実行できます。たとえば、ASCIIの「a」をwww.myfictionalbank.comUnicodeの類似文字「α」に置き換えることで、悪意のあるサイトにIRIを誘導することができます。これはIDNホモグラフ攻撃www.myfictionαlbank.comとして知られています。
URIでは、ユーザーが自国の文字体系を使ってWebリソースを指定する方法が提供されない一方、IRIでは、必要な国際化文字を生成できないキーボードでWebリソースにアクセスする方法が明確ではありません。そのため、IRIは現在、さまざまな言語のテキストを扱う際にキーボード以外の入力方法が必要となる他の多くのソフトウェアと非常によく似た方法で処理されています。
IRI (国際化リソース識別子) [11] は近い将来 URI に取って代わる予定であることに留意してください。
この文書では、Uniform Resource Identifier (URI) を補完する新しいプロトコル要素である国際化リソース識別子 (IRI) を定義しています。IRI は、Universal Character Set (Unicode/ISO 10646) からの文字シーケンスです。IRI から URI へのマッピングが定義されているため、適切な場合には、URI の代わりに IRI を使用してリソースを識別できます。URI の定義を拡張または変更するのではなく、新しいプロトコル要素を定義するアプローチが選択されました。
この文書では、URI の構文をはるかに広い文字レパートリーに拡張することにより、国際化リソース識別子 (IRI) と呼ばれる新しいプロトコル要素を定義します。また、URI 参照など、[RFC3986] の他の構成要素に対応する「国際化」バージョンも定義します。IRI の構文はセクション 2 で定義され、IRI と URI の関係はセクション 3 で定義されます。
{{cite book}}: CS1 maint: 複数の名前: 著者リスト (リンク)