Python常量时间是整数比较吗?

时间:2015-06-13 05:36:29

标签: python cryptography

是Python常量时间的整数比较吗?我是否可以使用它来比较用户提供的int令牌与服务器存储的int加密,就像我将来自constant_time_compare的字符串与django.utils.crypto进行比较一样,即没有遭受时间攻击?

或者,转换为字符串然后使用上述函数是否更安全?

1 个答案:

答案 0 :(得分:4)

对于给定大小的整数,答案是肯定的 - 默认情况下,变大的python整数变为long然后具有潜在的无限长度 - 然后比较时间随着大小而增长。如果您将整数的大小限制为ctypes.c_uint64ctypes.c_uint32,则情况并非如此。

请注意,与0进行比较是一种特殊情况,通常要快得多,因为硬件操作许多CPU都有0 的特殊标志,但是如果您使用/允许种子或令牌您要求麻烦的值为0.