国際化ドメイン名(IDN)ホモグラフ攻撃(ホモグリフ攻撃とも呼ばれる)は、悪意のある第三者が、通信相手のリモートシステムの身元についてコンピュータユーザーを欺くために用いる手法です。これは、多くの異なる文字が似ているため、ユーザーが微妙な置換に気づきにくいという事実を悪用することで実現されます。例えば、キリル文字、ギリシャ文字、ラテン文字にはそれぞれ、形は同じだがコードポイントが異なる文字⟨o⟩があります。[ a ]
この種のなりすまし攻撃は、スクリプトなりすましとも呼ばれます。Unicodeは多数のスクリプト (文字体系) をサポートしており、いくつかの理由から、似たような文字 (ギリシャ文字の Ο、ラテン文字の O、キリル文字の Ξ など) は、同形文字であるにもかかわらず、それぞれ独自のコード ポイントを持っています。これらの文字の誤った使用や悪意のある使用は、セキュリティ攻撃の機会となる可能性があります。したがって、たとえば、exаmple.com ( exаmple.com)の通常のユーザーは、一見見慣れたリンクとして疑うことなくクリックしてしまう可能性がありますが、3 番目の文字がラテン文字の⟨ a ⟩ではなくキリル文字の⟨ а ⟩であり、意図したドメインとは全く異なるドメインであることに気づかない可能性があります。
同形ドメイン名の登録は、タイポスクワッティングに似ています。どちらの攻撃も、より確立されたドメインに似た名前を使用してユーザーを騙すからです。[ b ]主な違いは、タイポスクワッティングでは、攻撃者がURLを手動で入力する際によくある自然な転置エラーを利用して被害者を引き付けるのに対し、同形スプーフィングでは、攻撃者が視覚的に区別できないハイパーリンクを提示することで被害者を騙す点です。実際、たとえば、英語の単語の中にキリル文字を入力して、「b a nk」を「b аl/I nk」に変えてしまうようなことは、ウェブユーザーが誤って行うことは稀です。不正登録でタイポスクワッティングと同形スプーフィングの両方が使用されるケースもあります。 、、、のペアi/jは0/Oすべてキーボード上で近接しており、書体(コンピューターフォント)によっては、視覚的に区別するのが難しい、または不可能な場合があります。

インターネットやテキスト端末が登場する以前から存在していたこの種の初期の厄介事の一つに、「l」(小文字の「L」)/「1」(数字の「one」)と「O」(母音「o」の大文字)/「0」(数字の「zero」)の混同がありました。一部のタイプライターでは、小文字のLまたは大文字のOを入力できるように、数字の0と1が省略されていました。コンピューターでは、ゼロとOの区別が重要な場合が多いため、読み書きの際にOと明確に区別できるように、スラッシュ付きのゼロが広く使われるようになりました。[ 1 ]
さらに遡ると、手書き文字は混乱を招く機会を豊富に提供していた。顕著な例として、「 zenith 」という単語の語源が挙げられる。アラビア語の「samt」からの翻訳では、書記が「m」を「ni」と混同した。これは中世のブラックレター体でよく見られた現象で、文字「i」「m」「n」「u」の縦の列が繋がっていなかったため、複数個が並んでいると区別がつきにくかった。後者の混同、そして「rn」「m」「rri」(「RN」「M」「RRI」)の混同は、現代の高度なコンピュータ技術をもってしても、人間の目には依然として起こりうる。
Unicodeは、結合文字、アクセント記号、複数の種類のハイフンなどにより、同形異義語攻撃の一因となっている。これは、特にフォントサイズが小さい場合やフォントの種類が多岐にわたる場合、レンダリングのサポートが不十分なことが原因であることが多い。[ 2 ]
異なるアルファベットを用いた意図的な類似文字の置換は、さまざまな文脈で知られています。たとえば、偽キリル文字は娯楽や注目を集めるために使用され、キリル文字を類似したラテン文字で表す「Volapukエンコーディング」は、インターネットの初期の頃にキリル文字のサポート不足を克服する方法として使用されました。別の例として、自動車のナンバープレートには、キリル文字を使用する国での国内使用のためのキリル文字と、国際運転のためのラテン文字の両方が同じ文字で記載されている場合があります。ギリシャで発行されるナンバープレートは、ラテン文字に同形文字を持つギリシャ文字の使用に限定されています。これは、欧州連合の規制によりラテン文字の使用が義務付けられているためです。
ASCIIには、見た目が似ている文字や文字のペアがいくつかあり、これらは同形異義語(または同形グリフ)と呼ばれています。これらの類似性を利用したなりすまし攻撃は、同形異義語なりすまし攻撃と呼ばれます。例えば、数字の0と文字のO、小文字の「l」と「l」、大文字の「i」と「i」などが挙げられます。
架空の攻撃の典型的な例として、既存のドメインとほぼ同じように見えるが、実際には別の場所につながるドメイン名を登録するケースが考えられます。たとえば、ドメイン「rnicrosoft.com」は「m」ではなく「r」と「n」で始まります。他の例としては、フォントによってはGOOGLE.COMとよく似ているG00GLE.COMがあります。大文字と小文字を混ぜて使用するgoogIe.com (小文字のLではなく大文字のi )は、フォントによっては google.com とよく似ています。PayPalはこの脆弱性を悪用したフィッシング詐欺の標的となり、ドメインPayPaI.comが使用されました。Tahoma ( Windows XPのアドレスバーのデフォルト)のような特定の狭いスペースのフォントでは、j、l、またはiの前にcを置くと、 cl cj ci (dga)のような同形文字が生成されます。
多言語コンピュータシステムでは、異なる論理文字が同じ外観を持つ場合があります。たとえば、Unicode文字U+0430、キリル文字の小文字a("а"))は、Unicode文字U+0061、ラテン文字の小文字a("a")、英語で使用される小文字の"a")と同一に見える場合があります。したがってwikipediа.org、(ラテン文字xn--wikipedi-86g.org版)ではなくwikipedia.org(キリル文字版)となります。
この問題は、ユーザーの認識とコンピュータのプログラミングにおける文字の扱い方の違いから生じます。ユーザーの視点から見ると、ラテン文字の文字列中のキリル文字の「а」はラテン文字の「a」であり、ほとんどのフォントではこれらの文字のグリフに違いはありません。しかし、コンピュータは文字列を識別子として処理する際に、これらの文字を異なるものとして扱います。そのため、名前の視覚的な外観と名前の対象となる実体との間に一対一の対応関係があるというユーザーの想定が崩れてしまうのです。
国際化ドメイン名(IDN)は、ドメイン名がUnicode文字セット全体を使用できる後方互換性のある方法を提供し、この標準は既に広くサポートされています。しかし、このシステムによって文字の種類が単一のアルファベットの数十文字から、多くの文字体系の数千文字へと拡大したため、同形異義語攻撃の可能性が大幅に高まりました。
これは、フィッシング詐欺をはじめとする様々な種類の詐欺行為にとって、大きな機会を生み出す。攻撃者は、正規のウェブサイトとそっくりなドメイン名を登録できるが、そのドメイン名の一部の文字を別のアルファベットの同形異義語に置き換えることができる。そして、攻撃者は正規のサイトから送信されたように見せかけたメールを送信し、偽サイトに誘導する。偽サイトは、パスワードやアカウント情報などの情報を記録しながら、トラフィックを正規のサイトに転送する。被害者は、自分のアカウントで不審な行為や犯罪行為が発生するまで、その違いに気づかないかもしれない。
2001年12月、イスラエルのテクニオン大学のエフゲニー・ガブリロヴィッチとアレックス・ゴントマケルは、「同形異義語攻撃」 [ 1 ]というタイトルの論文を発表し、Unicode URLを使用してウェブサイトのURLを偽装する攻撃について説明した。この種の攻撃の実現可能性を証明するために、研究者らはキリル文字を組み込んだドメイン名microsoft.comのバリアントを登録することに成功した。
IDN導入以前からこうした問題は予想されており、レジストリに対して問題の回避または軽減を目的としたガイドラインが発行されていた。例えば、レジストリはUnicode文字すべてではなく、ラテン文字と自国の文字のみを受け入れるように勧告されていたが、主要なTLDはこの勧告を無視した。
2005 年 2 月 6 日、Cory Doctorow は、この脆弱性がハッカー会議Shmooconで 3ric Johanson によって明らかにされたと報告した。[ 3 ] [ 4 ] IDNA をサポートする Web ブラウザは、最初のa文字がキリル文字のаに置き換えられたURL http://www.pаypal.com/を有名な決済サイトPayPalのサイトに誘導しているように見えたが、実際には異なるコンテンツを持つ偽の Web サイトに誘導していた。人気のあるブラウザは、2017 年 4 月まで国際ドメイン名を正しく表示できない問題が続いた。[ 5 ]
以下のアルファベットには、なりすまし攻撃によく使用される文字が含まれていますが、他のアルファベットも使用される可能性があります。
キリル文字は、同形文字において圧倒的に最も一般的に使用されているアルファベットであり、その主な理由は、ラテン文字と同一またはほぼ同一の小文字が11個含まれているためである。
キリル文字の а 、 с 、 е 、 о 、 р 、 х 、 у は、基本ラテン文字に視覚的に対応する文字があり、 a、c、e、o、p、x、yとよく似ているか、または同一に見えます。キリル文字のЗ、Ч、б は、数字の3、4、6に似ています。イタリック体では、 д т п иまたはд т п и (標準体では д т п и) という同形文字がさらに多く生成され、d m n u に似ています(一部のフォントでは、дのイタリック体が小文字のgに似ているためдを使用できますが、ほとんどの主流フォントでは、д は代わりに偏微分記号∂に似ています)。
大文字も数えると、小文字のキリル文字の同形文字の大文字に加えて、A B C E H I J K M O P S T Xを代用できます。
キリル文字の非ロシア語の問題のある文字は、іとi、јとj、ԛとq、ѕとs、ԝとw、ҮとYであり、ҒとF、ԌとGは互いにいくらか似ています。IDN 自体が偽装されている場合、キリル文字のӓ ё ї ӧもä ë ï öを偽装するために使用できます。
コミデ(ԁ)、シュハ(һ)、パロチカ(Ӏ) 、イジツァ(ѵ )はラテン文字のd、h、l、vによく似ていますが、これらの文字は稀少または古風な文字であり、ほとんどの標準フォントでは広くサポートされていません(WGL-4には含まれていません)。これらを使用しようとすると、脅迫状のような効果が生じる可能性があります。
ギリシャ文字のうち、URLに使用される小文字のラテン文字と全く同じ形になるのは、オミクロン(ο)と、場合によってはニュー(ν )のみです。イタリック体のフォントでは、ギリシャ文字のアルファ(α)がラテン文字のaのように見えることがあります。
このリストは、 e i k n p t u w x y vに対して類似一致も許可される場合 (ギリシャ語のε ι κ η ρ τ υ ω χ γ νなど) に増加します。大文字を使用すると、リストが大幅に拡張されます。ギリシャ語Α Β Ε Η Ι Κ Μ Ν Ο Ρ Τ Χ Υ Ζは、ラテン語A B E H I K M N O P T X Y Zと同じに見えます。ギリシャ語Α Γ Β Ε Η Κ Μ Ο Π Ρ Τ Φ Χ は、キリル文字А Г В Е Н К М О П Р Т Ф Х (特定の幾何学的表現におけるキリル文字Л л ( Л л ) やギリシャ語Λと同様) に似ています。サンセリフ フォント)、ギリシャ文字κとο はキリル文字のкとоに似ています。このギリシャ語のτ、φ は、一部のフォントではキリル文字のт、фに似ている場合があり、ギリシャ語のδ はキリル文字のбに似ており、キリル文字のаもラテン語の対応するものと同じ斜体になるため、アルファの代わりに使用したり、その逆を行うことができます。シグマの三日月形Ϲϲは、ラテン文字のC cとキリル文字のС сの両方に似ています。特に現代の書体では、キリル文字のлはギリシャ文字のπと区別がつかないグリフで表現されています。
IDN自体が偽装されている場合、一部のフォントではギリシャ語のベータβがドイツ語のエスツェットßの代わりとして使用できます(実際、コードページ437ではこれらを同等とみなしています)。同様に、ギリシャ語の語末異形シグマςがçの代わりとして使用できます。アクセント付きのギリシャ語の代替文字ό ί άは、多くのフォントで通常ó í áの代わりに使用できますが、最後の(アルファ)は、イタリック体のaに似ているだけです。
アルメニア語のアルファベットには重要な文字もあります。օ、ո、սなどのアルメニア語の文字、大文字のՏとԼは、現代のフォントではラテン文字と完全に同じであることが多く、また、ghnoquのように見えるցհոօզս、j(ただしドットなし)に似ているյ、フォントによってはpまたはfに似ているք、キリル文字のшに似ているաなど、十分に似ているため、紛らわしい記号もあります。しかし、アルメニア語の使用は幸いにも信頼性がやや低くなっています。すべての標準フォントにアルメニア語のグリフが含まれているわけではありません(ギリシャ文字とキリル文字は含まれています)。Windows 7より前のWindowsでは、アルメニア語はSylfaenという別のフォントでレンダリングされていました。Sylfaen以外のフォントやUnicode書体を使用すると、アルメニア語とラテン語の混在が明らかに異なって見えます。 (これは身代金要求メッセージ効果として知られています。)Windows 7 で使用されている現在のバージョンのTahomaはアルメニア語をサポートしています(以前のバージョンはサポートしていませんでした)。さらに、このフォントはラテン文字のgとアルメニア文字の ց を区別します。
アルメニア語の2文字(Ձշ)は数字の2に似ており、Յは3に似ており、別の文字(վ)は数字の4に似ていることがある。
ヘブライ語の文字を偽造することは一般的に稀です。ヘブライ語のアルファベットで確実に使用できる文字は、サメフ(ס)(oに似ている場合がある)、発音記号付きのヴァヴ(וֹ)(iに似ている)、ヘス(ח)(nに似ている)の3文字だけです。他の英数字についても精度は劣りますが、近似文字は見つかることもありますが、これらは通常、外国のブランド名表記に使う程度にしか正確ではなく、代替文字としては使えません。さらに、ヘブライ語のアルファベットは右から左に書かれるため、左から右に書かれる文字と混ぜると問題が生じる可能性があります。

タイ文字は歴史的に多くのループや小さな装飾で独特の外観をしていましたが、1973年のManopticaから始まり、現代のIBM Plexに至るまで、タイ文字はラテン文字によく似たグリフで表現される簡略化されたスタイルをますます採用しています。ค (A)、ท (n)、น (u)、บ (U)、ป (J)、พ (W)、ร (S)、ล (a)は、ラテン文字に非常によく似たタイ文字の例です。
中国語は、多くの文字が繁体字(正書法)と簡体字の両方で存在するため、同形異義語の問題が生じる可能性があります。.orgドメインでは、一方のバリアントを登録すると、もう一方のバリアントは誰にも使用できなくなります。.bizでは、中国語の IDN を 1 つ登録すると、両方のバリアントがアクティブなドメインとして提供されます(ただし、ドメインネームサーバーと登録者は同じである必要があります)。. hk (.香港) もこのポリシーを採用しています。
同形異義語が見られるその他のUnicodeスクリプトには、数字形式(ローマ数字)、CJK互換性および囲まれたCJK文字と月(特定の略語)、ラテン文字(特定の二重音字)、通貨記号、数式英数字記号、およびアルファベット表示形式(活字合字)などがあります。
1文字のアクセント記号だけが異なる2つの名前は、特に点付きの文字 iの置換の場合、非常によく似ているように見えることがあります。 i の点 (ドット) は、注意深く調べないと検出できない発音記号 (グレイブアクセントやアキュートアクセントなど。ì と í はどちらもほとんどの標準文字セットとフォントに含まれています) に置き換えられることがあります。ほとんどのトップレベルドメインレジストリでは、wíkipedia.tld (xn--wkipedia-c2a.tld) と wikipedia.tld は、異なる登録者が所有できる 2 つの異なる名前です。[ 6 ]例外は.caで、ドメインのプレーンASCIIバージョンを予約することで、他の登録者が同じ名前のアクセント付きバージョンを主張することを防止できます。[ 7 ]
Unicodeには、ゼロ幅スペースなど、デフォルトでは表示されない文字が多数含まれています。一般的に、ICANNはTLDの種類に関わらず、これらの文字を含むドメインの登録を禁止しています。
2011年、匿名の人物(「完全匿名」という名前で登録)が、テレビ局KBOI-TVのドメイン名と同名のドメイン名を登録し、偽ニュースサイトを作成した。このサイトの唯一の目的は、アイダホ州知事がジャスティン・ビーバーの音楽の販売を禁止するというエイプリルフールのジョークを広めることだった。[ 8 ] [ 9 ]
2017年9月、セキュリティ研究者のAnkit Anubhavは、攻撃者がBetabotトロイの木馬を配信するためにadoḅe.comを登録したIDNホモグラフ攻撃を発見した。[ 10 ]
最も簡単な対策は、ウェブブラウザがIDNAなどの類似メカニズムをサポートしないようにするか、ユーザーがブラウザのサポートを無効にすることです。これはIDNAサイトへのアクセスをブロックすることを意味しますが、一般的にブラウザはアクセスを許可し、IDNをPunycodeで表示するだけです。いずれにせよ、これは非ASCIIドメイン名を放棄することに相当します。
追加の防御策として、Internet Explorer 7、Firefox 2.0 以降、および Opera 9.10 には、悪意のある Web サイトにアクセスした際にユーザーに警告を発するフィッシング フィルターが含まれています。[ 17 ] [ 18 ] [ 19 ] 2017 年 4 月の時点で、いくつかのブラウザ (Chrome、Firefox、Opera など) は、純粋にキリル文字で構成された IDN を通常どおり (punycode としてではなく) 表示し、なりすまし攻撃を可能にしていました。Chrome は、この攻撃を防ぐためにバージョン 59 で IDN の制限を強化しました。[ 20 ] [ 21 ]
これらの防御策はブラウザ内部にしか適用されません。悪意のあるソフトウェアを仕込んだ同質性URLは、Punycodeとして表示されずに、電子メール、ソーシャルネットワーク、その他のウェブサイトを通じて拡散される可能性があり、ユーザーが実際にリンクをクリックするまで検出されません。偽のリンクはクリックされるとPunycodeで表示されますが、その時点ですでにページはブラウザに読み込まれ始めています。
IDNホモグラフデータベースは、機械学習ベースの文字認識を使用して開発者がこれに対抗できるようにするPythonライブラリです。[ 22 ]
ICANNは、既存のラテン語TLDに似ていて同形異義語攻撃に悪用される可能性のある文字を国際化TLDが選択することを禁止するポリシーを導入しました。提案されたIDN TLDである.бг(ブルガリア)、. укр(ウクライナ)、. ελ(ギリシャ)は、ラテン語に似ているとみなされたため、却下または保留されました。これら3つ(およびセルビア語の.србとモンゴル語の.мон)は後に承認されました。[ 23 ] 3文字TLDは、通常のラテン語ISO-3166国別ドメインとの一致が難しいため、2文字TLDよりも安全であると考えられています。新しい汎用ドメインとの一致の可能性は残っていますが、そのような汎用ドメインは、第2レベルまたは第3レベルのドメインアドレスを登録するよりもはるかに高価であるため、不正ドメインを作成するためだけに同形異義語TLDを登録しようとすることは費用的に非現実的です(それ自体がICANNの監視の対象となります)。
ロシアのレジストリ運営者であるTLD RU調整センターは、トップレベルドメイン.рфに対してキリル文字の名前のみを受け付け、ラテン文字やギリシャ文字との混在を禁止している。しかし、 .comやその他のgTLDの問題は未解決のままである。[ 24 ]
鈴木らは2019年の研究で、IDNを認識するプログラムであるShamFinder [ 25 ]を紹介し、現実世界のシナリオにおけるIDNの普及状況を明らかにした。同様に、千葉ら(2019年)は、ドメイン内の多様な同形IDNを検出することに長けたシステムであるDomainScouter [ 26 ]を設計した。これは、570のトップレベルドメイン(TLD)にわたる推定440万の登録IDNを分析することで、英語以外の言語のブランドをターゲットにしたこれまで特定されていなかった多くのケースを含む8,284のIDN同形を正常に特定することができた。[ 27 ]
{{cite web}}: CS1 maint: タイトルとしてアーカイブされたコピー (リンク)、Communications of the ACM、45(2):128、2002年2月