Checking that functions are constant time with Valgrind
8 months ago
- #Cryptography
- #Valgrind
- #Security
- 通过时序侧信道的信息泄露可能是致命的,它允许通过网络窃取RSA密钥、内核的dm_crypt密钥和AES密钥。
- 编写常量时间函数要求分支和内存访问与秘密输入无关,但这具有挑战性且容易出错。
- 通过将秘密数据视为未初始化数据,可以重新利用Valgrind的memcheck工具来检测依赖秘密的分支和内存访问。
- Valgrind补丁通过拦截对ct_poison和ct_unpoison的调用来标记秘密数据,从而捕获函数中的时序侧信道。
- 测试表明,即使是OpenSSL中的BN_mod_exp_mont_consttime等函数也可能并非完全恒定时间,这凸显了该工具的实用性。