首页 > 解决方案 > 如何以安全的方式获取日期?

问题描述

我想检查混淆的 python 脚本中的时间/日期。

datetime不可靠,因为很容易更改计算机时钟时间。

ntplib与类似 ntp 服务器一起使用europe.pool.ntp.org也不安全,因为用户可以更改 DNS 或类似的东西。

是否有一种可靠且安全的方法可以在 python 中获取当前日期?使用证书或类似的东西?我可以从unixtimestamp收集和解析数据并验证 SSL 证书,但我很确定这不是最干净的方法。

标签: pythonsecuritytimentp

解决方案


可以通过共享(对称)密钥验证 NTP 数据包的真实性和完整性。您必须发送密钥(或从您控制的服务中即时检索它),然后将其与一个或多个支持该密钥的 NTP 服务器一起使用。多个服务器和多个密钥是可能的。例如,NIST 运行支持此功能的服务。

虽然数据包身份验证可能足以缓解简单的攻击向量,但 NTP威胁模型非常广泛。敌对行为者可能不是客户端(设备)所有者......但您将收到的日期/时间可能仍然不正确。即使在提议的身份验证解决方案中,密钥也必须驻留在客户端的某个位置,并且坚定的攻击者甚至可以从内存中窃取它。缓解技术以及威胁模型中引用的某些问题是否与您相关,将取决于您在特定用例中对“可靠和安全”的定义。

长期解决方案是NTS,它为 NTP 添加了基于 TLS/AEAD 的安全性。


推荐阅读