V8引擎亲手拆了加密库的墙

原创
alex 15小时前 阅读数 7 #头条
我写了一个号称常数时间执行的JS加密库,本以为逻辑正确就万事大吉,结果V8直接把我耍了。JIT编译器在幕后做了大量内联、常量折叠和分支消除,那些精心设计的掩码操作、无条件分支、防时序攻击的套路,在它眼里全是可以"优化"掉的冗余。你花了数周对齐字节访问模式,它一秒钟就把整段代码重写成完全不同的机器指令。最讽刺的是——V8这么做完全"合法",它只是正常地执行优化策略,没有任何恶意,但你的安全保证已经被它单方面撕碎了。这让我不得不重新思考:在V8之上写安全关键代码,你信任的到底是自己的算法,还是引擎的优化决策?答案很可能是后者。

原文:The V8 JavaScript Runtime Undermined My Constant-Time JavaScript Library · 来源:Hacker News

版权声明

所有资源都来源于爬虫采集,如有侵权请联系我们,我们将立即删除