8.1. Side-Channel Leaks (侧信道泄露)
8.1. Side-Channel Leaks (侧信道泄露)
对于执行签名的实现而言, 私钥 (private key) 的保密性是根本性的。可以通过确保实现针对私钥的任意取值都执行完全相同的指令序列并执行完全相同的内存访问, 来防护某些侧信道攻击 (side-channel attacks)。
要使实现以这种方式在侧信道上保持静默 (side-channel silent), 模 p 算术不得使用任何数据依赖的分支, 例如与进位传播相关的分支。由于统一公式 (unified formulas), 侧信道静默的点加法是直接的。
标量乘法 (scalar multiplication), 即将点乘以整数, 需要额外工作才能以侧信道静默方式实现。一种简单做法是实现侧信道静默的条件赋值 (conditional assignment), 并将其与二进制算法一起使用, 每次检查整数的一位。
与其他签名方案相比, 避免数据依赖分支更容易, 因为 (在推荐曲线下) 侧信道静默的模 p 算术更容易, 并且具有完备加法公式 (complete addition formulas), 而不是大量特例。
请注意, 本文档中的示例实现并未尝试做到侧信道静默。