WeWorkBuddy

[程序员] 一个用于前端 wasm 的自创密码学算法,欢迎破解~

具体功能:在线网页测量用户的 CPU 主频,并挑战排行榜。 (查看演示) 要实现这个功能,最简单的办法就是用 js/wasm 跑一段消耗 CPU 周期比较稳定的程序,测量起始和结束的时间差,然后上报到服务端。 但这有个严重的问题:时间是在前端测量的,用户可以伪造。即便对程序加密混淆,现在也不难破解。所以必须用一些密码学机制,从原理上堵住这个漏洞。例如使用 VDF 函数进行计算,这样客户端必须老老实实执行每一步才能得出正确的结果。 但这还有另一个问题:这个算法是跑在网页里的,因此必须能被 JIT 充分优化,接近甚至达到原生程序的性能才行,否则作弊者可以用原生程序代替网页版。要符合这个条件,稍复杂一点的算法可能就不满足了。例如有些 VDF 函数基于大数运算,在原生程序里可充分利用 CPU 专用指令,比 wasm 版本快几倍。 因此这个算法必须足够简单,尽可能规避各种损耗。目前这个版本非常简单,只有纯粹的寄存器运算,在网页里和本地 C 程序几乎一样快;同时为了确保强度,模仿密码学中的 ARX (Add–Rotate–Xor) 运算,并且把加法换成了乘法,因为乘法的扩散效果更好,并且硬件实现也

阅读原始来源
原始网页截图: [程序员] 一个用于前端 wasm 的自创密码学算法,欢迎破解~
原始网页截图 · www.v2ex.com

来源记录

研究分析

来源记录

来源描述:具体功能:在线网页测量用户的 CPU 主频,并挑战排行榜。 (查看演示) 要实现这个功能,最简单的办法就是用 js/wasm 跑一段消耗 CPU 周期比较稳定的程序,测量起始和结束的时间差,然后上报到服务端。 但这有个严重的问题:时间是在前端测量的,用户可以伪造。即便对程序加密混淆,现在也不难破解。所以必须用一些密码学机制,从原理上堵住这个漏洞。例如使用 VDF 函数进行计算,这样客户端必须老老实实执行每一步才能得出正确的结果。 但这还有另一个问题:这个算法是跑在网页里的,因此必须能被 JIT 充分优化,接近甚至达到原生程序的性能才行,否则作弊者可以用原生程序代替网页版。要符合这个条件,稍复杂一点的算法可能就不满足了。例如有些 VDF 函数基于大数运算,在原生程序里可充分利用 CPU 专用指令,比 wasm 版本快几倍。 因此这个算法必须足够简单,尽可能规避各种损耗。目前这个版本非常简单,只有纯粹的寄存器运算,在网页里和本地 C 程序几乎一样快;同时为了确保强度,模仿密码学中的 ARX (Add–Rotate–Xor) 运算,并且把加法换成了乘法,因为乘法的扩散效果更好,并且硬件实现也

现有背景

没有附上可比较记录或结构化观测指标。

研究状态

这条记录尚不能可靠归入主类,未生成商业或性能结论。

缺失证据

需要核验主要事件、受影响对象与原始证据。

下一步

阅读原文,明确它支持什么决策,再选择对应分析框架。