查看原文
其他

留在网上的每个字,都在泄露你的身份

2018-01-01

作者 Mike Erard

本文来自果壳网,地址在这里,编译自Write yourself invisible,原作者为Mike Erard,译者为红猪

他是天才、资产过十亿、不愿面对镜头:这些是我们对比特币的创始人中本聪(Satoshi Nakamoto)略微知道的几件事——但我们依然不知道中本聪到底是男是女,又或者到底是不是人。中本聪在金融界制造了一场振荡,但是自2011年起他就不再露面了,许多人想要追查这个名字背后的真人,可是谁也没有确切的证据。

最近又有人称,这个世界上最隐秘的富豪终于被揭开了面纱,这都是因为他的写作风格。

2014年,在司法语言学家杰克·格里夫(Jack Grieve)的带领下,英国阿斯顿大学的一组学生分析了中本聪在2008年发表的一篇关于比特币的学术论文。他们统计了诸如“仍然”(still)、“只有”(only)之类不起眼的小词出现的频率,并分析了文中的标点模式,比如在“和”(and)和“并”(but)之前的逗号使用,从而发现了揭开作者身份的线索。他们指出,这篇论文的笔触**符合密码货币领域的博学大师尼克·绍博(Nick Szabo)的风格。 **

尼克·绍博刚刚开发了一种通过无线电传输比特币的办法。图片来源:bitconnect.co

就在今年早些时候,美国企业家兼政治评论员亚历山大·缪斯(Alexander Muse)也宣称美国国家安全局运用类似技术破解了中本聪的身份,不过却并未公布他们的分析是否也指向绍博。

对中本聪的追查引出了几个有趣的问题,它们牵涉到每次我们写下文字时是如何泄漏身份的。从一个作者的文章风格,我们能对他了解多少?随着数字通讯的普及,我们的推特、电邮和短信中又暗含了多少可能出卖我们的线索?新兴软件已经能分析大量数据,从中找出模式。在它们面前,我们还能够隐身吗?

我们每次说话或者写作时,都会泄露大量关于自己身份、职业和家乡的信息。侦探利用文字破案已经有了千百年的历史,但是在近几十年中,计算机接过了一部分重任,负责在我们产出的大量数字信息中分析模式。

这种计量文体学分析(stylometric analysis是计算机科学本科课程里的常见内容,也是大学和出版社每天都在使用的剽窃监察软件的核心功能。另外,刑侦专家也利用罪犯在网上留下的文字确认他们的身份。

这类分析最常见的用途,一是精确认定是谁写了某段文本,二就是总结一个未知作者的文笔特征:他的年龄、性别、教育程度、母语为何。分析的第一步一般是列出可能的作者和他们的文字样本,再由专家或软件从中提取出显著的特征。接着将待确认的文本与这些段落比对,任何匹配的作者都用概率表示,而不是一个绝对的“是”或“否”最后,这些结果还要和案件涉及的其他证据一起考察,比如某某作者当时是否有不在场证明。“如果全部证据都指向同一个方向,你就能相当肯定地说出作者是谁了。”伊利诺伊理工学院的计算语言学家施洛莫·阿伽蒙(Shlomo Argamon)说道。

路边草地透露的消息

所谓“显著的语言学特征”在不同的案件中可能也不相同。这方面有一个著名的例子:某绑匪写了一封勒索信,要求人质的家属把赎金放在“devil strip”上。警方找到华盛顿特区乔治城大学的语言学家罗杰·舒伊(Roger Shuy)帮忙。舒伊刚好知道“devil strip”指的是人行道和车道之间的那片草地,这个说法极其罕见,罕见到只有俄亥俄州阿克伦市(Akron)的居民才会用。他问警方是否有嫌犯来自阿克伦,他们惊讶得连嘴都合不拢了。他们果然有这么个嫌犯,他后来也招供了。

如果你不想被自己的文字出卖,光是避免方言或其他特殊词汇还是不够的。因为暴露你身份的线索往往是那些容易受到忽视的文本特征,而这些特征又是我们不会有意控制的,比如哪些单词大写,标点后空几格,段落前要不要缩进等等。“像‘devil strip’之类的词语是极少见的。”阿伽蒙说。“那次真是运气。”

比文本特征透露更多信息的,是所谓“功能词”(function words)出现的相对频次,它们的作用是将句子黏合在一起。阿伽蒙指出:“功能词就是介词、连词和人称代词。这些词语本身没有意思,只发挥语法功能。”这些词之所以对分析贡献良多(至少在英语里)是因为它们的数量十分庞大:加到一起,它们超过我们所写单词的一半。

德州大学奥斯丁分校的詹姆斯·彭尼贝克(James Pennebaker)在研究中指出,这些看似没有意义的语言成分能够指出某人的人格类型、健康状况、甚至会否自杀之类的将来行为

还有人利用泄露身份的奇特语言特征渗透互联网上的犯罪网络。同样来自阿斯顿大学的蒂姆·格兰特(Tim Grant)训练卧底警察在网上假扮已经被抓获的恋童癖,以此引出其他罪犯,有时他们也会假扮成潜在的受害者诱使犯人上钩。格兰特归纳了这些罪犯的写作风格,并训练警官修正自己的模仿技巧。“那些人都在互不信任的环境中交流,你一旦说错了话就会使他们很警惕。”他说,“如果你在词语挑选或者沟通行为上出了错,和他们的互动就会变得很不顺利。”

这些显著的模式,无论是字词选择、句子结构还是作者无意间使用功能词的频率,都指明了语言的高度灵活性。语言学家曾经认为,我们都是先学会一套标准的语法,再从这套标准上偏离出来表达个性的。不过现在更加普遍的观点却认为,我们从一开始就对母语有了一套自己的心智模型,我们习得母语的社会环境和情绪环境各不相同,使这套模型也和他人有了细微却重要的差别

亚利桑那大学的计算机科学家陈炘钧(Hsinchun Chen)指出,正是这个差别造成了富于个性的文笔,他还首次提出了“笔纹”(writeprint)的概念。所谓笔纹就是语言的指纹,它是我们写作风格中的细微差异,包括词汇、句长和段落铺陈等的不同。

用看似没有意义的语言成分(如所谓的“功能词”)来揭示作者身份,这种分析方法已经有些年头了。2013年,宾州杜肯大学的帕特里克·尤奥拉(Patrick Juola)用类似的方法指出J.K·罗琳是长篇小说《杜鹃的呼唤》的作者,使这项技术进入了大众视野。

但如果作者已经死去,再要以此说服大众就比较困难了。比如《圣诞前夜》(Twas the Night Before Christmas)这首十九世纪诗歌,历来认为它的作者是克莱门·克拉克·摩尔(Clement Clark Moore)。但到了2016年,新西兰的文学学者麦克唐纳·杰克逊 (Macdonald Jackson)却发表了一份详尽分析,通过“that”和“the”之类的单词以及几对音素的使用认定诗的作者是亨利·利文斯顿(Henry Livingston)。

这个结论不是所有人都接受的。研究梅尔维尔作品的专家司各特·诺斯沃西(Scott Norsworthy)就嘲笑了杰克逊(和他的电脑)对于“无意义成分的分析”,说这些成分“无关紧要,在文本中的分布可能完全是随机的。”


在风格中隐身

那么,当有人想要采集你的语言指纹时,你又该如何脱身呢?阿伽蒙表示,从某种意义上说,这很容易做到。假设有100位作者,每人提交了一段文字,你身为其中的一员,不想让别人知道哪一段是你写的,那么“你要做的,只是让自己的文字看起来像那99位中的一位

这种做法有时候效果很好。萨迪亚·阿弗隆兹(Sadia Afronz)现在供职于加州大学伯克利分校的国际计算科学研究所,她在宾州的德雷塞尔大学工作期间曾和同事开展过一项研究,她们要求参与者写下自己当天早晨的经历,并模仿美国作家科马克·麦卡锡(Cormac McCarthy)的文笔。结果这些文字骗过了一款已经学习过麦卡锡作品的计量文体分析程序:它认为这些都是麦卡锡的原作。 

可惜的是,一般人在这一点上总显得业余,很少有人能用恰当的修改伪装自己比如在“devil strip”的案子里,那个勒索者故意拼错了一些单词(把“cop”拼成“kop”,“can”拼成“kan”),想以此伪装成一个文化程度不高的人。但这个文字计谋并未得逞,因为他反倒把一些难词拼对了,这个矛盾戳穿了他的伪装。 

阿伽蒙指出:“当一个人想要掩盖自己的文风、模仿别人的笔触时,他却往往会在无意中流露出更多表明身份的特征。”蒂姆·格兰特回想了2003年和同事杰克·格里夫参与调查吉米·斯塔巴克(Jamie Starbuck)一案的经历。斯塔巴克在近三年的时间里周游世界,其间用妻子黛比的邮箱给别人发送电邮,而实际上他已经在31个月前、也就是两人结婚仅一周后杀死了黛比。直到黛比的亲戚产生怀疑,他才开始模仿她的文体。“黛比很喜欢用分号,而且用的方式很古怪。”格兰特说,“而吉米突然开始大量使用分号,但用的方式又和妻子不同。”他终于在返回英国后被捕,判处终身监禁。

那么,我们可不可以用计算机本身来修改文本、骗过计量文体分析程序呢?可以,你只要上传自己的文字,然后按照程序的指示修改就行了。这现在已经是一个蓬勃发展的领域,称为“反向计量文体学”(adversarial stylometry),阿弗隆兹就是推动这个领域的研究者之一。她说,因为这项目工作,老是有人要求她揭开中本聪的真实面目,最后她在自己的网站上贴出了一则公告,表明拒绝。“我研究计量文体学的目的,一是向人们指出它的危害,二是考察机器学习的弱点,三是开发工具改善匿名性。”她这样写道。


代码也会泄露程序员的身份?

保护匿名性可以是符合正当职业利益的,比如学界人士就希望能对基金和论文的同行评议保持匿名。而对那些检举者甚至程序员,匿名性可能同样死攸关。

你或许认为计算机源代码是纯粹功能性的,但其实它们同样会泄露编码的人或者团体的许多信息。就像写作者有“笔纹”一样,编码者也有独特的“码纹”(code print),因为同样一段程序,编写的方式却有很多。

“根据程序员的舒适水平及编程技术的不同,他们也会选择不同的编程方式。”加州大学伯克利分校国际计算科学中心的萨迪亚·阿弗隆兹说道。

码纹中可能包含一些看似琐碎的选择,比如用空格键而不是制表键(tab)来缩进代码,这些选择都会留下独特的数字痕迹即便是对计算机下达的底层指令,也会因为编写者的不同而呈现差异。

2015年,谷歌举办了一年一度的编程大赛(Google Code Jam),来自宾州德雷塞尔大学的一组计算机科学家也用软件分析了1600名参赛者的编程风格。软件考察了代码中的关键字和句法等特征,最后成功把近93%的代码和它们的作者匹配了起来。

通过分析程序员在一段时间内的作品,这支团队还发现了程序员们的编程风格会在几年之内维持不变。码纹的这种稳定性有时很有参考价值,因为可能某个程序员的已知代码样本都是几年前获得的。

可是,程序员又为什么要保持匿名呢?我们或许立刻会想到那些恶意软件的作者逃避法律制裁的例子,但实际上也有正派的程序员想要隐藏身份,而且理由完全正当。比如有的地区认定开源软件非法,那么这些软件的开发者就可能不想公开身份。

因此,有人呼吁开发对文本做匿名化处理的软件,也就顺理成章了。


问题是,这类软件真的有效吗?

到今天为止,唯一向公众发布的匿名工具只有“Anonymouth”,它由德雷塞尔大学的隐私、安全和自动化实验室开发。这款工具于2012年发行,旨在将计量文体分析的准确性下降到随机猜测的水平。为达到这个目的,Annonymouth使用了一款称为“JStylo”的风格分析软件,它能通过采集几篇文章样本,评估其中的句子长度、词语选择和某些字母的使用频率等特征,绘出一个作者的肖像。接着再由Annoymouth指导作者修改文字,告诉他怎样才能让作品不符合自己的肖像,比如把时态由过去时换成现在时,或者少用某个人称代词等等。

开发者宣称,JStylo只要采集6500字的样本,就能将一段文字和它已经研究过的一众作者做对比甄别,结果能达到80%至85%的准确率今年早些时候,另有开发者宣布了一个名叫“艾玛身份”(Emma Identity)的人工智能项目,号称只凭8000字就能为一名作者建立肖像,在和匿名文本对比时的准确率达到85%。

这样的成功率还远谈不上十全十美,但它们已经比随机猜测高得多了。能有这么高的成功率,是因为分析都是在类似实验室的环境中进行的,软件要寻找怎样的计量文体特征,都有明确的指导。然而现实世界就不同了,用来训练JStylo或艾玛的样本可能只是一篇短文、或是匆匆打出的一封邮件,而需要甄别的匿名文本却可能是一封认真撰写的信件或是一篇科学论文。

在将来,我们或许还会见到“反向作者分析(adversarial authorship)技术,一边是识别作者的技术,一边是为作者掩饰的技术,两边开展不断加速的军备竞赛。北卡罗来纳州立农业技术大学正在开发一款名叫“作者网络”(AuthorWeb)的工具,能用来帮助作者规避计量文体分析。它会给写作者设立风格目标,以一块视觉仪表盘提供实时反馈,告诉他们写下的文字和某些特征的匹配程度。这应该能帮助写作者在较长的时间内轻松而统一地隐藏自己的文风。

与此同时,阿伽蒙指出,躲避计量文体分析的最佳手段依然是联合写作:一个人写下文本,再由另一个人编辑。你不必依靠机器帮忙或自己动手来修改文风,只要找人合作,那么两个或更多个作者的语言指纹就自然会相互抵销。

这或许也是令中本聪藏身如此之久的策略:已经有人猜想藏在比特币背后不是一个人,而是一个群体。因为语言指纹互相覆盖,他们或许还能安全地潜伏在暗处,继续窥视那些追踪者。


数据采集

【视频教程】用python批量抓取简书用户信息

【视频讲解】Scrapy递归抓取简书用户信息

【视频讲解】在scrapy框架中如何使用selenium?

【实战视频】使用scrapy写爬虫-爬知乎live

美团商家信息采集神器

使用gevent实现高效异步请求

selenium驱动器配置详解

爬虫神器PyQuery的使用方法

pyquery爬取豆瓣读书

pyquery一些自定义的用法

【视频】猫途鹰网站评论数据抓取

简易SQLite3数据库学习

【视频教程】对视频进行基本操作

【视频】抓包小练习-B站评论数据抓取

【视频】爬取饿了么平台上的门店信息

如何抓取视频资源-以头条视频为例

当爬虫遭遇验证码,怎么办

【视频】手把手教你抓美女~

【视频】有了selenium,小白也可以自豪的说:“去TMD的抓包、cookie”

北邮人论坛爬虫实操:session代替cookies

【视频】快来get新技能--抓包+cookie,爬微博不再是梦


文本处理分析

gensim:用Word2Vec进行文本分析

RAKE:快速自动抽取关键词算法

对于中文,nltk能做哪些事情

如何对csv文件中的文本数据进行分析处理

复杂网络分析数据准备篇

文本分析之网络关系

用词云图解读“于欢案”

基于共现发现人物关系的python实现

用pyecharts制作词云图

图片数据处理

OpenCV:快速入门图片人脸识别

好玩的OpenCV:图片操作的基本知识(1)

好玩的OpenCV:图像操作的基本知识(2)

OpenCV:计算图片有多色

如何对数据进行各种排序?

其他

迅雷不给力,我DIY了个下载器

【视频】初学者必看:python环境配置

开扒皮自己微信的秘密

初识装饰器函数

计算运行时间-装饰器实现

花十分钟,给爱机安装个MongoDB

chardet库:轻松识别文件的编码格式

使用Python登录QQ邮箱发送QQ邮件

WTF Python: 开启你的懵逼模式

8行代码实现微信聊天机器人

使用Python+OpenCV进行面部合成

优雅简洁的列表推导式

【资源帖】简单易懂的机器学习视频教程


    您可能也对以下帖子感兴趣

    文章有问题?点此查看未经处理的缓存