乐趣区

关于wasm:Rust编译到WebAssembly可能出现侧信道攻击

许多工程师抉择 Rust 作为他们实现加密协议的首选语言,因为它具备弱小的平安保障。

只管 Rust 使平安的明码工程更容易,但仍有一些挑战须要留神。其中之一是:须要保留恒定工夫(constant-time)属性,这确保无论输出如何,代码都将始终破费雷同的工夫来运行。

这些属性在避免时序攻打(timing attack)方面很重要,但它们可能会受到编译器优化的影响。

如何阻止编译器优化毁坏代码的恒定工夫呢?有几种计划:
(1)应用 -C opt-level=0 敞开所有优化。这种计划根本不可行,因为咱们须要编译器的优化。
(2)应用来自 subtle crate 的结构来尝试阻止 LLVM 优化恒定工夫代码门路的尝试。
(3)语言内置私密类型来反对。之前有一个 Rust RFC 引入了 secret types,但这已被推延,期待 LLVM 反对。

在 node 中应用 WASM,意味着须要通过两次优化:
(1)由 Rust 通过 LLVM 编译为 WebAssembly;
(2)再由 V8 的 Turbofan JIT 编译器再次对 WAMS 进行编译优化。

退出移动版