python - 如何以安全的方式获取日期?
问题描述
我想检查混淆的 python 脚本中的时间/日期。
datetime
不可靠,因为很容易更改计算机时钟时间。
将ntplib与类似 ntp 服务器一起使用europe.pool.ntp.org
也不安全,因为用户可以更改 DNS 或类似的东西。
是否有一种可靠且安全的方法可以在 python 中获取当前日期?使用证书或类似的东西?我可以从unixtimestamp收集和解析数据并验证 SSL 证书,但我很确定这不是最干净的方法。
解决方案
可以通过共享(对称)密钥验证 NTP 数据包的真实性和完整性。您必须发送密钥(或从您控制的服务中即时检索它),然后将其与一个或多个支持该密钥的 NTP 服务器一起使用。多个服务器和多个密钥是可能的。例如,NIST 运行支持此功能的服务。
虽然数据包身份验证可能足以缓解简单的攻击向量,但 NTP威胁模型非常广泛。敌对行为者可能不是客户端(设备)所有者......但您将收到的日期/时间可能仍然不正确。即使在提议的身份验证解决方案中,密钥也必须驻留在客户端的某个位置,并且坚定的攻击者甚至可以从内存中窃取它。缓解技术以及威胁模型中引用的某些问题是否与您相关,将取决于您在特定用例中对“可靠和安全”的定义。
长期解决方案是NTS,它为 NTP 添加了基于 TLS/AEAD 的安全性。
推荐阅读
- azure-pipelines - Azure Build Pipeline - 使用多个作业构建的多个存储库 - 如何重用每个构建的相同工作目录?
- python - 在基于类的视图上找不到页面 (404)
- python - 如何通过 SymPy 中的给定子表达式自动简化表达式
- wso2 - APIM 网关找不到公共证书来验证签名
- scala - Neo4J - 将 List[String] 传递给查询和 UNWIND
- php - 数组一维php排序
- python - 在 Python 中创建变量/数组名称
- libusb - 使用 libusb 的 CH340 握手
- java - 为什么带有参数 StringBuffer 的类 String 构造函数方法使用同步块而带有 StringBuilder 的构造函数不使用?
- python - 如何设置从 python 列表传递到 html 进度条的值