Large-scale online deanonymization with LLMs
Simon Lermen, Daniel Paleka, Joshua Swanson, Michael Aerni, Nicholas Carlini, Florian Tramèr
cs.CR, cs.AI, cs.LG
2026-02-19
ETH与Anthropic用LLM从非结构化文本做规模化去匿名。带搜索的agent在90%精度下把338个HN账号对上LinkedIn,召回67%;闭世界匹配最高68%,经典方法接近0。
伪匿名账号能活这么久,卡点一直是工程成本,不是理论上做不到。Netflix Prize那次,Narayanan和Shmatikov用几条影评偏好就能把匿名评分对上公开IMDb;Sweeney更早证明邮编、生日、性别能唯一锁定美国87%的人。这些攻击要么要结构化微数据,要么要熟练调查员花几个小时盯一个高价值目标。Reddit小号、匿名论坛、职业社交网站上的自我介绍,以前不值得批量做。
ETH Zurich和Anthropic的Nicholas Carlini把问题改写成:给一段非结构化文本,LLM能不能自己抽身份信号、在海量候选人里搜、再推理核对。如果能,而且单条成本掉到1到4美元,那「反正没人有空逐个去查」这条默认假设就失效了。
开放互联网那条线很直白。先把用户发言收成结构化档案,再抹掉姓名、个人主页、GitHub仓库这类一搜就能定位的标识,只留机构、兴趣、人口统计这类单独不够锁定的信息。然后把这份去标识档案丢给带网页搜索的agent,让它自己搜、交叉验证、决定报不报名字。这一步只用来证明威胁已经存在。攻击细节、prompt和工具配置都不公开。
闭世界那条线才是可量化的框架,叫ESRC,四步:
基线是把Netflix Prize攻击搬过来:职业属性做成332维稀疏向量做稀有度加权Jaccard,影评用评分和时戳核,Reddit时间切分用subreddit参与的稀有度加权交集。
开放互联网。338个在HN bio里挂过LinkedIn的用户,agent在90%精度下正确认出226人,召回67%,错25、弃权86。Reddit学术帖13/25,52%召回、72%精度;求职帖9/36,25%召回、90%精度。Anthropic Interviewer里33段科学家访谈认出9人,精度82%。先前Li用任务拆解打了24段、找回6人。单条档案1到4美元。
闭世界HN对LinkedIn,987个查询对约8.9万候选人:
| 方法 | 90%精度召回 | 99%精度召回 |
| Narayanan基线 | 0.1% | 0.1% |
| 仅Search | 26.3% | 4.4% |
| Reason(GPT-5.2高推理) | 54.2% | 45.1% |
候选人池缩到1k时,Reason在90%精度下召回68.3%,这就是摘要里「最高68%」的来源。池子放到8.9万仍有55.2%。按log-linear外推到100万约45%,到1亿约27%。
Reddit影评跨社区更难。9781个查询、平均只共享2.5部电影,高推理在90%精度下召回8.5%,99%精度2.8%。只共享一部电影时3.1%,共享十部以上跳到48.1%。时间切分Reddit(5000查询、1万候选人,中间空一年)是最干净的大规模数字:全管道90%精度召回67.3%,99%精度38.4%,经典基线分别是0.4%和0.2%。外推到100万候选人仍约35%召回(90%精度);即便先验匹配概率只有万分之一,召回仍能停在大约9%。
对写小号的人:持久用户名加一点点可拼接的微数据,已经够被批量对上。对平台:公开转储、宽松API、可爬的档案,现在对应的是可自动化的身份拼接,不再只是「被搜到」。对做安全的人:攻击拆成摘要、检索、排序这些看起来无害的步骤,拒答「去匿名化」几乎挡不住。
这不是新漏洞,是成本结构变了。熟练调查员本来就会看这些信号,LLM把单条成本压到几美元。
评估用的是已经自我链接的账号,再人工抹标识。召回可能偏高,因为这些人本来就没那么在意匿名。时间切分或社区切分也替代不了真小号:同站不同时段的发言,比主号和扔号更像。外推到百万、亿级候选人是log-linear拟合,论文自己说误差带很大。Anthropic访谈那9/33靠人工核验,有2个自报身份和档案打架,真召回不确定。HN和Reddit大概率进过预训练,记忆可能掺了一脚;推理预算一加数字就涨,说明不全是背出来的,但分不开。代码和数据不公开,复现只能靠文字。