眼见为实?也许并不那么简单。
在数字世界里,你的一切行为,可能都不简单,甚至危机四伏!
通过下面的例子,我们看看,最简单的文字信息可能会有怎样的风险,我们展示对话双方微信的截屏:
左面是苦主小冤大头的手机截屏(iPhone): 右面是黑心借款人的手机截屏(华为):
双方显示的金额是不一样的!!
神奇吗?恐怖吗?你眼中的28000 在人家的手机上就是 82000.
要说明的是:这不是PS,这不是魔术!也不是手机鄙视链!100%可以再现!
你看见的东西,也许并不是那么真实,或者说,它是100%真实的,不过不是你理解的那样。
我们说眼见为实,就是我们应该只相信看见的东西,但实际上,你看见了吗?诚然,你的眼睛没问题,但是你的(善良而简单的)眼睛看不见所有的东西。
上面的例子里面,你觉得是哪里出了问题?
手机系统问题,
微信做了过滤、替换(和谐?);
眼睛(脑子)坏了
偶然发现这个现象的时候,我们的反应是跟您一样的,一定是小概率的错误,甚至怀疑是程序员的玩笑或者彩蛋。
我们求证的过程是:
1.把发生错误的文字拷贝到notepad(一个最简单的编辑软件),再重新黏贴出来,通常这样能去掉一些不可见的格式和非文本(比如颜色、字体,这些在notepad里面都没有)。结果依然没有变化。
更诡异的事情是:
你只要把这段话贴在微信的编辑区,即使没有发送,内容就已经不一样了!
QQ上也是如此。
2.继续尝试,换掉文中发生错误的文字,(实际上用你输入的任何其他文字)都没发生这个现象,只是和原来的那一段(有毒)的文字有关,那么再来审视这句神奇的文字吧。
贴到Word、Excel中,发现显示不正常,在Word中几乎不能编辑,真有毒:
只能再进一步,用码农利器VSCode看看:
这下秒懂了!
这里面原来藏着两个不可见的Unicode字符 U+202E和U+202C(准确地说是UTF-8,至于UTF-8请自行度娘),我们先去去看看这个U+202E和U+202C 是何方神圣?
关于Unicode,可移步:
这两个码是在Unicode 的官方文档里面有说明:
Unicode - Unicode 字符百科 (unicode-table.com)
What?这个202E能够让字符从右向左排?ABC 变成 CBA?
更可笑(幽默)的是,网站上自己直接做了个示范:
而202C是取消这个格式,恢复原来的从左向右,防止一直从右向左。
脑补一下:Unicode是一个非常严格的字典(对照表),它几乎把所有目前各国的语言文字中的字、字母、常用符号都编了码,(但是东亚的古文字应该不在其中),如果不是各国各地各种软件普遍接受Unicode字典,全球不同语言环境下的沟通是不可能的。
比如:中文的“一”是Unicode中第一个中文字,其代码是:4E00,差不多是第19968个字符。
只有普遍接受这个Unicode字符集,我们才能轻易地从中文电脑上写出泰国人能看懂的泰文信,老外电脑也能显示我们的中文字符。甚至常见的表情符号(emoji),都是在Unicode里面定义的(ὠ0是1F600)。Unicode每年都会吸收新的字(符号)进去,因为Unicode可以容纳114112个字符,至少现在看起来是足够了。
但是真的所有人都明白上面这个淘气鬼(U+202E),从右向左强制格式符吗?为什么会有这个错误呢?
这个错误的出现,就是因为大家(各种软件和系统)没有达成一致。显然,windows、安卓、苹果的操作系统对Unicode的支持和容忍(所谓容忍:是说,我虽然看不懂你,但是我不清除你)是不一致的。
我们的分析,Windows和安卓是按照Unicode的本意进行了格式化,也就是进行了从右向左的排列,但是苹果完全忽略了这个格式符。可以想象,其他的操作系统和软件(是的,软件可能会有自己的过滤机制,比如word和excel就不一样),都可能出现不一样的处理方式。
那么问题就来了。
如果我从安卓手机发送的一条:“2万8“的信息中暗藏了格式符,其转义的意思应该是8万2,而在接收方的苹果手机上,由于忽略了格式符,显示出来就可能变成了“2万8”,苹果手机用户发送回这一条时,安卓手机上又变成了8万2。而且,由于发送手机的截屏和接收手机的截屏是不一样的(虽然信息是同一条),这就可能被坏人利用。这时,单方的截屏作为法律证据就完全不可信了。
是否还有更危险更隐蔽的方式?也许,我就不能在这里示范了,你懂的。
基于这个发现,我们有几点建议:
建议和各厂商统一对Unicode的处理方式;
对即时通信类应用,应约束对不可见Unicode的支持。毕竟超出了大部分人的应用场景。
向法律界提醒,单方的截屏作为证据,其可信度存疑。甚至云端的记录也不可信。
对普通用户来说,提高风险意识,在网络上不要无脑复制黏贴转发。
更深一步的思考:在数字世界里,存在不同的认识层次。文字看起来最直白,但是这个例子表明了,文字也可能不那么简单。
推广到语音、图片和视频,牵涉到更多话题:语音和图片是否经过篡改?是否侵犯了他人的知识产权?其复杂性又是文字所不能比拟的。这正是我们团队正在进行的研究方向之一:数字水印技术。我们研究的目的就是保护原作者的知识产权、防止篡改和侵权,同时让使用者留下痕迹,防止抵赖。
如果帖子中技术成分有点多,或者技术上有偏颇,都请谅解。我通过这个例子只为了说明:眼见并不为实。
在简单的文字下面,可能是个陷阱。同样在网上转来转去的视频和图片中,又有多少是真实的呢?
原帖:眼见并不为实!注意你的聊天记录! - 知乎 (zhihu.com)