也不知道怎么就看到了这个问题,撞见了就回答一下。
我在美帝读博研究方向就是基于JS的浏览器和机器指纹的生成,@小爝的回答已经很详细了,我来补充下我几个月前在信息安全顶会发表的论文的最新进展吧。
说实话这方面研究已经很具体了,可以继续研究的余地不大,无非就是像@小爝说的那样,采集各种不同的feature ,将它们综合起来,得到一个最终的哈希值,以前的研究无非是用浏览器安装的插件,canvas 渲染结果,甚至声卡的渲染结果,浏览器的可用字体等等的吧。每一个feature 的熵值可能不高,综合起来就高很多了。我的最新的研究结果已经在99%以上的准确度了
但是这种做法有一个致命的缺点,就是稳定性太差,用户换个浏览器就不能fingerprint 这个用户了,所以我们的研究就用了很多跨浏览器特性,比方说显卡渲染结果,系统字体,声卡特性,屏幕,支持语言等等,最终达到同一个电脑不同浏览器也能获得同样指纹的目的。也就是说,就算你换了浏览器,我们也能一定程度上得到机器的指纹。(然而准确度我自己都觉得没法用,只能算是一个开始的尝试,后续我也会跟进这个方向)
知乎上已经有一个相关专栏文章说的是我们的项目。
(PS: 做这篇论文的时候我还是个硕士生,一作自然就成了教授。现在做了博士才知道这个一作多重要)
上边这个新闻有一个网站,可以试一下我们最新的成果
这个网站还没做完,服务器在美国,可能会被一定程度的墙,而且其中有大量的研究用的计算,所以中间会卡一会。机器指纹部分大部分没完成,也没有一个成熟的min.js可以拿出来用。开发者就我一个人,虽然我现在还在加班加点的开发。。。(捂脸逃。。。)
具体各种不同的feature都有多大的独特性在上述链接的图片里已经说的很清楚了。这里就不扯了。
现在这个话题其实是挺火的,很多大的公司也在关注这个方面。fingerprintjs2已经有跟多成熟的公司在用了。
同时还有一个很重要的问题,虽然我们在选取feature的时候已经在小心的用尽量稳定的feature了,实际上这些feature很不稳定,随便一个浏览器升级就可以轻松改变浏览器指纹,针对这个问题,我下一个研究就是动态指纹,尽量做到即使浏览器升级,电脑安装新软件,显卡升级等等,也能生成一样或者类似的指纹。但愿能够搞出点事情来。