国際化ドメイン名をハンドル設定する
独自ドメインを所有している人、もしくはその管理ができる人は、アカウントのハンドルをその独自ドメイン、もしくはサブドメインを付けたドメインにすることができます。
具体的な方法は、こちらを参照してください。
また、逆にハンドルに設定できる文字列には、ドメイン文字列として使用できる形式に準拠するという制約もあります。
通常のアルファベットと数字、ハイフン、および区切りとなる "." ピリオドのみで構成されたドメインをハンドルとして設定する場合は、問題なく指定したドメインの文字列がハンドルとなります。
問題があるのは、、国際化ドメイン名と言われる、半角アルファベット、数字以外の言語の文字を使ったドメインのことです。
国際化ドメイン名の例: 日本語.com
こういったUnicode文字列を使ったドメインが自由に取れるようになったのは、元々のドメイン名に使える文字と形式の制限の中で、多言語文字を扱えるような仕組みをあとから追加したからです。
実際には、元々の使える文字であるアルファベットと数字、ハイフン、および区切りとなる "." ピリオド以外の文字を、この文字とドメインの形式内で扱える形式に変換(エンコード)、それを元のUnicode文字列に復元(デコード)する方法を導入しました。
punycode というエンコードです。内容は結構複雑なので、Punycode - Wikipedia を参照してください。ここでは、xn-- が頭に付く アルファベットと数字、ハイフン で構成される文字列に変換されると言うことがわかればいいです。 上の日本語.com をpunycode でエンコードすると、xn--wgv71a119e.com というドメイン文字列になります。
国際化ドメインをハンドルに設定するとどうなるの?
この日本語.com ドメインを所有している人が、ハンドルとしてこのドメインを設定すると、実際にはpunycode エンコードされた @xn--wgv71a119e.com というハンドルになります。
Bluesky のサーバにもこの形式で記録され、クライアントでのハンドルの表示も、現在のところは、このコードのまま表示されます。
実際に試された方がいて、その通りになっていました。
変換すると何が問題なの?
punycode エンコードされた @xn--wgv71a119e.com というハンドルだと、カスタムドメインと言うことはわかりますが、元のブラウザなどで表示される日本語文字列のドメインとは異なってしまします。
では、変換方法は決まっているのだから、ハンドルの表示の時にも復元して表示すればいいのでは?と考えます。
基本的には変換・復元は一対一で決まっているので、そう変換して表示してもかまわないのかもしれません。
@xn--wgv71a119e.comというハンドルを受け取ったクライアントが、それを@日本語.comというハンドルとして表示し、このようなUnicode文字列が含まれているハンドルが入力もしくはコピペされたときは、内部とサーバに送るときには @xn--wgv71a119e.comに変換して送る、というのをきちんとおこなえばいいはずです。
もちろん変換したり戻したりという処理を挟むと、いろいろな画面や処理に影響が広がって、変換処理を入れたときには関連バグが多く出ることが考えられます。そういったプログラムコスト的な問題がある一方で、もう一つ考えなければいけない問題があります。
ホモグラフ攻撃
ホモグラフ攻撃という、有名なドメインによく似た文字列で構成された別のドメインをでっち上げて、偽サイトや詐欺サイトに誘導するという手口です。これまでもアルファベットと数字だけのドメインでも、よく似た文字を使った別のドメインが作られました。
Google.com -> Googie.com l (小文字のL) を i (小文字のアイ) に置き換える
Google.com -> Gooogle.com o が一個多い
こんな感じです。
また、Twitterでは、自由にハンドルを設定できたので、有名どころの公式アカウントのハンドル @xxxx のあとに "_" アンダースコアをつけた @xxxx_ とかいうアカウントをでっち上げて、偽アカウントとして人を集めたり、プレゼントと称して詐欺の入り口に使うこともありました。
Unicodeの文字の中には、ちがう言語のちがう文字なのだけれど、見た目が非常に似ていて判別が難しい文字というのがたくさん存在します。その分だけ、ドメインを似た別の文字で置き換えた偽ドメインを作る手段も広がります。
Google.com -> Gооgle.com アルファベットの o を キリル文字の о に置き換え
見た目は全然わかりませんが、別のドメインで、偽サイトにいってしまいます。
Blueskyのハンドルの場合にも、同じ問題が起こります。
一般人だと、所有ドメインの所有者であるから、このアカウントは捨て垢ではないくらいの感じですが、企業などの公式アカウントが入ってきて、公式の証拠として自社のドメインを使用する場合に、ホモグラフ攻撃の手段となり得ます。
もちろんこれは、クライアントでの処理だけで済むことなので、将来的に国際化ドメインのハンドルをUnicodeに変換して表示する公式クライアントやサードパーティクライアントも出てくるかもしれません。