あなたの目の前にある2つの文字列 binance.com と binаnce.com の違いが分かりますか?後ろの а はキリル文字で、ラテン文字の a とほぼ完全に同じです。これが同形異字(Homograph)攻撃——肉眼でのごまかしの中で最も防ぎにくいものです。本記事では識別と防御方法を教えます。普段からまずは検証済みの入口から Binance公式サイト に入り、モバイル版は Binance公式APP を、iOSでアプリがない場合は iOSインストール手順 をご覧ください。
一、同形異字の原理
国際化ドメイン名(IDN)は、ドメインに非ASCII文字を含めることを許可しています。本来の目的は、中国語/日本語/ロシア語のユーザーが現地語でドメインを登録できるようにすることです。問題は:多くの文字が視覚的には英字と完全に一致しているのに、エンコーディング上は異なる文字であることです。
ドメインのレベルでは、ブラウザはこれらの文字をPunycodeに変換します:
binаnce.com(キリル文字の а を含む)は実際にはxn--binnce-b8a.comgoogĺe.com(アクセント記号付きの ĺ を含む)は実際にはxn--googe-x9a.com
しかしデフォルトでは、ブラウザはUnicode形式で表示するため、ユーザーが見るのは依然として binаnce.com であり、binance.com とまったく同じです。
二、最も置き換えられやすいラテン文字
以下の表は、同形異字攻撃で最もよく使われる置き換えの対照表です:
| 元の文字 | 視覚的に似ている文字 | エンコーディング文字セット |
|---|---|---|
| a | а / α | キリル / ギリシャ |
| e | е / ё | キリル |
| o | о / ο / 0 | キリル / ギリシャ / 数字 |
| i | і / ί / l / 1 | キリル / ギリシャ / ラテン L / 数字 1 |
| c | с / ϲ | キリル / ギリシャ |
| p | р / ρ | キリル / ギリシャ |
| n | η / n | ギリシャ / 全角 |
| b | Ь / b | キリル / 全角 |
Binanceのドメインである b/i/n/a/n/c/e のすべての文字が置き換えられる可能性があります。組み合わせ次第でフィッシングの変種は驚くほどの数になります。
三、同形異字を見破る2つの方法
方法 A:ブラウザのPunycode表示を有効にする
Firefoxが最も確実です。アドレスバーに about:config と入力し、network.IDN_show_punycode を検索して true に変更します。設定後、すべての非ASCIIドメインは xn-- 形式で表示されるため、肉眼ですぐに異常が分かります。
Chromeにはネイティブな設定はありませんが、ドメインにラテン文字と非ラテン文字が混在している場合は自動的にPunycodeで表示されます。すべて非ラテン文字の「純粋なキリル文字ドメイン」はそのまま表示されるため、拡張機能の補助が必要です。
方法 B:テキストエディタにコピー&ペーストする
アドレスバーのURLをメモ帳やコードエディタ(VS Codeを推奨)にコピー&ペーストし、別のフォントで表示させます。VS Codeの等幅フォントなら、а と a に微妙な違いが現れます。または16進数表示プラグインを使えば、各文字のUnicodeコードポイントが一目瞭然です。
方法 C:肉眼での補助確認
ドメインの上にマウスを置き、各文字を注意深く見ます:
- a の丸みが標準的か
- e の横線の位置が正常か
- o が標準的な丸か
- i の上の点が中央にあるか
どの文字でも少しでも違和感があれば警戒してください。
四、ブラウザレベルでの追加強化
Chrome拡張機能
- EnGuard(PhishFort):同形異字を自動検出し警告
- Punycode Alert:アドレスバーにPunycodeのヒントを挿入
システムレベル
- hostsファイルで既知のフィッシング変種をブラックホール化する:
0.0.0.0 xn--binnce-b8a.com - Pi-holeのような家庭用DNSゲートウェイでフィッシング対策ブラックリストを購読する
パスワードマネージャー
1PasswordやBitwardenは、ドメインが厳密に一致する場合のみ自動入力をポップアップさせます。もし同形異字のドメインを開いた場合、パスワードマネージャーは反応しません——これが自然な「識別アラーム」になります。
五、モバイル端末の特殊性
スマートフォンのアドレスバーは短く、文字表示も小さいため、同形異字はさらに見分けにくくなります。以下を推奨します:
- 完全にAPPのみを使用し、ブラウザでドメインを入力しない
- ブラウザで「完全なURLを表示する」を有効にする
- リンクを受け取った場合は長押ししてターゲットURLをプレビューし、直接クリックしない
iOSのSafariではリンクを長押しするとプレビューがポップアップし、完全なURLを確認できます。AndroidのChromeも同様に長押しでプレビュー可能です。
六、すでに同形異字ドメインにアクセスしてしまった場合
以下の順序で対処してください:
- 直ちにアドレスバーのスクリーンショットを撮り、完全なURLをコピーして保存する
- ページを閉じ、ブラウザの該当ドメインのCookieをクリアする
- そのページで情報を入力したか確認する——入力した場合は、アカウント盗難時の緊急対応手順に従って処理する
- クリーンなブラウザで binance.com を開き、アカウントの状態を確認する
- そのURLをBinanceヘルプセンターの報告チャネルを通じて提出する
FAQ
Q1:なぜブラウザはPunycodeではなくUnicodeをデフォルトで表示するのですか? 非英語圏のユーザーの利便性のためです。もしロシアのユーザーのドメインが常に xn--xxxx 形式で表示されたら、非常に使い勝手が悪くなります。そのためデフォルトではUnicodeを表示しますが、混在文字列は自動的にPunycode化します。
Q2:FirefoxでPunycodeを強制表示にすると、英語以外のサイトに影響はありますか? 通常の英語サイトはまったく変わりません。中国語やロシア語などのドメインは xn-- 形式で表示されます。これらのドメインにアクセスしないのであれば、まったく影響ありません。
Q3:HTTPS証明書で同形異字を識別できますか? 可能です。証明書のSubjectフィールドは実際のエンコーディング文字列であり、肉眼で見えるものとは異なります。証明書の詳細を注意深く見れば見破ることができます。
Q4:APP内でも同形異字攻撃を受けますか? APPはドメインの入力に依存せず、すべての接続はコードに組み込まれたAPIエンドポイントを経由します。同形異字はAPPユーザーには基本的に無効です。