IDN 的全称是 Internationalized Domain Names,中文译作国际化域名,也有人叫多语种域名。它解决的是一个很实际的问题:最早的域名系统只认 ASCII 字符,也就是英文键盘上那些字母、数字和连字符。这意味着一个中文用户想访问“新华网”,得先在脑子里把它翻译成 xinhuanet.com 这样的拉丁字母串。IDN 要做的事情,就是让域名直接支持中文、阿拉伯文、斯拉夫文这些非英语文字,用户输入什么语言,域名就长什么样。
技术上实现这件事靠的是 Punycode 编码。Unicode 字符没法直接塞进 DNS 系统里跑,因为 DNS 只认 ASCII。Punycode 的作用就是把 Unicode 字符串转换成一串 ASCII 字符,转换之后的域名以 xn-- 开头,后面跟编码结果。比如“中文”这两个字,经过 Punycode 转换之后变成 xn--zfr164b 这样的形式。浏览器和 DNS 服务器在背后完成这个翻译,用户看到的还是“中文”,底层跑的是 ASCII,两边互不干扰。这个设计的好处是它不需要改动互联网的基础架构,DNS 该怎么跑还怎么跑,只是多了翻译的环节。

IDN 的技术标准定得不算晚。2003 年 IETF 发布了三份 RFC 文件,RFC 3490 定义了应用程序如何支持 IDN,RFC 3491 规定了域名的预处理规则,RFC 3492 就是 Punycode 的编码算法。中文域名的落地要更晚一些,2010 年 ICANN 才批准了第一批中文顶级域,.中国 和 .香港 是那一批里的代表。现在能注册的中文后缀比那时候多得多,.公司、.网络、.网址 这些都已经在跑了。
IDN 的初衷是好的,但它打开了一个潘多拉盒子,就是同形异义字攻击。Unicode 里有很多字符长得跟拉丁字母几乎一模一样,比如西里尔字母里的 а 跟拉丁字母的 a 肉眼基本分不出来,希腊字母的 ο 跟拉丁字母的 o 也是。攻击者注册一个用这些相似字符拼出来的域名,浏览器地址栏里显示的看起来是 apple.com,实际解析到的是一台完全不同的服务器。2026 年披露的一批针对 Office 365 用户的钓鱼攻击,就是利用 IDN 同形字加上零宽不可见字符,伪造出跟微软登录页视觉上几乎没有差别的域名,配合中间人代理技术截取会话令牌,连多因素认证都能绕过去。这类攻击之所以麻烦,是因为传统的基于拼写黑名单的检测机制对它们基本无效,字符底层编码不一样,但视觉观感一致,检测系统很难识别这类恶意域名。
防护措施分布在多个层面。浏览器端,Chrome 和 Firefox 在识别到混合脚本的 IDN 域名时,会选择展示 Punycode 原始编码,不再只展示Unicode字符,用户看到xn--开头字符串就能够提高警惕。DNSSEC可以从另一个维度提供安全保障,它会给DNS查询结果添加数字签名,确保解析过程没有被篡改,能够抵御域名劫持与域名伪造攻击。企业侧,如果安全设备支持Punycode流量检测,就能在同形字钓鱼页面加载之前完成拦截。
“idntify”这个写法在公开资料里找不到对应的产品。最接近的是 ID-entify,一个用 Bash 写的域名安全侦察工具,托管在 GitHub 上。它做的事情跟 IDN 域名完全是两个方向:你给它一个域名,它去被动收集跟这个域名相关的公开信息,包括电子邮件地址、IP 地址、子域名、Web 应用程序的技术栈、防火墙类型、NS 和 MX 记录。收集过程整合了 Fierce、Dnsrecon、OWASP Amass、Nmap、Whatweb 这些工具的输出,结果存在本地目录里,支持手动过滤和筛选。ID-entify 的名字里的 ID 大概率是 identity 或者 identification 的缩写,跟 Internationalized Domain Names 不是一回事。把这两个东西混在一起说,可能是搜索的时候关键词串了,或者有人把工具名记成了 IDN 的变体。IDN 是域名层面的协议标准,ID-entify 是安全研究用的信息收集脚本,领域不同,用途也不同,没必要硬扯到一起。