当您使用密钥时,如果您的代码分支不均等,它可能会通过侧通道泄露密钥位。因此,对于某些算法,它应该独立于密钥统一分支。
在 C/C++/Rust 上,您可以使用汇编来确保没有编译器优化会干扰分支。但是,在 Java 上,情况就很困难了。首先,它在桌面上执行 JIT,在 Android 上执行 AOT,因此代码有两种可能以不可预测的方式进行优化,因为 JIT 和 AOT 总是在变化,并且对于每个设备可能不同。那么,如何在 Java 上防止利用分支的侧通道攻击呢?
当您使用密钥时,如果您的代码分支不均等,它可能会通过侧通道泄露密钥位。因此,对于某些算法,它应该独立于密钥统一分支。
在 C/C++/Rust 上,您可以使用汇编来确保没有编译器优化会干扰分支。但是,在 Java 上,情况就很困难了。首先,它在桌面上执行 JIT,在 Android 上执行 AOT,因此代码有两种可能以不可预测的方式进行优化,因为 JIT 和 AOT 总是在变化,并且对于每个设备可能不同。那么,如何在 Java 上防止利用分支的侧通道攻击呢?