- c - 在位数组中找到第一个零
- linux - Unix 显示有关匹配两种模式之一的文件的信息
- 正则表达式替换多个文件
- linux - 隐藏来自 xtrace 的命令
我想知道是否有一种简单的方法(也许是一个库)可以用 Python 编写常量时间程序。特别是,我希望能够指定 if-else 流必须始终在 if 条件为 True
或 False
的同一时间持续。
例如:
if condition:
foo1()
else:
foo2()
foo3()
constant-time 的想法是,在执行中,直到它命中 f3()
所花费的时间应该与 condition< 的评估结果无关地花费相同的时间
。这将防止时间泄漏作为泄露其他信息的旁路(参见 timing attacks)。
最佳答案
由于您的问题是关于安全性的,我假设我们可以撇开性能并非常天真地引入最少的时间来花在所有可能的分支上。实现此目的的一种方法是使用 context managers :
你的问题可以写成:
with ConstantTime(0.1):
if condition:
foo1()
else:
foor2()
foo3()
使用这样定义的上下文管理器:
import threading
import time
class ConstantTime():
def __init__(self, length):
self.length = length
def __enter__(self):
self.timer = threading.Thread(target=time.sleep, args=[self.length])
self.timer.start()
def __exit__(self, exc_type, exc_value, traceback):
self.timer.join()
当然,您必须根据您正在做的事情将实际时间调整为实际值。
一般来说,您不能确定所选分支不会超过您的最短时间,因为 Python 是一种非常高级的语言,您可能不会在实时操作系统中运行它,但是如果您设法覆盖平均运行时间,您应该显着减少从时序分析中收集的信息。
关于python - python中的恒定时间 `if-else`,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25218397/
要求: 我们在数据库中有值 Chennai Baroda Bangalore New Delhi São Paulo, Lisboa San Jose 等... 所以我想将这些字符串转换成一个唯一的短
我需要通过 TCP 加密和发送数据(每条消息从几百字节到几百兆字节)以 block 从 Java 到 C++ 程序,并且需要发送的大小提前发送数据,以便收件人知道何时停止读取当前消息并处理它,然后等待
我不太知道如何问这个问题,因此我将其作为示例: 想象在一个应用程序中您有一个Country对象。此对象有两个属性:Name和'Bordering Countries'集合。稍后可能会添加更多属性,但这
我们正在尝试使用 IoT 中心、流分析和表存储来处理仪表板上的事件驱动图标(开/关/事件)。我无法让实际过程在 6 秒内完成。流分析的水印恒定为 5 秒。该网站声称即时处理。 https://azur
我正在尝试获取一个 JTabbedPane,其中所有选项卡(实际选项卡,而不是组件)具有相同的宽度(最宽标签所需的最小宽度或恒定宽度)。 我试图覆盖 BasicTabbedPaneUI.getTabB
你好安卓开发者, 我正在使用 OpenGLES 1.0 在 Eclipse 中为 Android 开发一个简单的游戏。我正在使用 Samsung Galaxy S2 Android(2.3) 作为开发
我正在尝试使用 ColorMatrix 为整个图像设置一个恒定的色调值。我的目标是使整个图像看起来颜色相同,而不会失去任何区域的亮度。我找到了一种使用 ColorMatrix 来移动图像的色调值的方法
我最近将我的 Postgres 数据库从 Windows 迁移到 CentOS 6.7。在 Windows 上,数据库从不使用太多 CPU,但在 Linux 上,我看到它使用恒定的 ~30% CPU(
你好,我正在用 SDL2 开发一款很棒的游戏,我添加了一个 FPS 调节器以使其在每台机器上都能流畅运行,但后来我创建了一个示例程序来输出 fps(不是调节,只是输出以查看电流的功率机器运行 ) 我在
我在 IntelliJ IDEA 13.0 中开发了一个应用程序,但是当我在我的设备上运行该应用程序时,它会不断等待调试器(如果我在 Debug模式下运行,调试器连接时没问题)但是如果远离计算机,我无
我想在 stat_密度2 图中绘制多个组,其中 alpha 值与每组中的观察计数相关。然而,由 stat_密度2d 形成的水平似乎已标准化为每组中的观察数量。例如, temp <- rbind(mov
我是一名优秀的程序员,十分优秀!