检查ntpd可执行文件对防篡改时间敏感信息的有效性 我写了一段C++代码,它将把访问密钥保存到加密的存档文件上,而不允许它在Linux系统的某个日期之前被查看。

检查ntpd可执行文件对防篡改时间敏感信息的有效性 我写了一段C++代码,它将把访问密钥保存到加密的存档文件上,而不允许它在Linux系统的某个日期之前被查看。,c++,ntpd,C++,Ntpd,完整的代码如下(是的,它很难看,有一个system()调用。我觉得这对于给定的情况是必要的): #包括//cout #包括//time\u t,time() #包括//系统() #包括//getuid() 使用名称空间std; int main(){ //更新系统时钟并捕获退出代码;必须为0才能继续 int tcheck=system(“ntpd-q-ipool.ntp.org”); //根据设置的时间戳(11/20/16@12 PM)检查更新的时间,并分别给出或拒绝访问密钥 如果((tchec

完整的代码如下(是的,它很难看,有一个
system()
调用。我觉得这对于给定的情况是必要的):

#包括//cout
#包括//time\u t,time()
#包括//系统()
#包括//getuid()
使用名称空间std;
int main(){
//更新系统时钟并捕获退出代码;必须为0才能继续
int tcheck=system(“ntpd-q-ipool.ntp.org”);
//根据设置的时间戳(11/20/16@12 PM)检查更新的时间,并分别给出或拒绝访问密钥
如果((tcheck==0)和&(getuid()=0)){
现在时间=时间(0);
if(现在<1479661235)

{cout考虑到网络必须随时可用才能使用该程序,请将所有安全性转移到服务器

wget https://www.yourserver.com/getkey?keyid=xxxxxxxxxxxxxxxxxxxxx

其中,
keyid
的参数是所需密钥的某个标识符(可能是加了一些秘密的SHA1,但不管怎样);只有在时机成熟时,服务器才会提供所需的密钥。

“具有sudo权限的用户必须无法访问该密钥(手头只有可执行文件)”您已经丢失了。静态地将必要的
ntp
代码链接到您的可执行文件中。即使使用最好的模糊处理技术,有足够动机的人也可以提取密钥。@OregonTrail:实际上,如果我要破解这个问题,我只需监视网络流量,注意对
pool.ntp.org
的请求并劫持它(自定义
/etc/hosts
LD_使用欺骗的DNS解析功能预加载
,无论什么)到我的私人ntp实例,给出我喜欢的任何时间。哈,当然。即使IP是硬编码的,你也可以欺骗它。
wget https://www.yourserver.com/getkey?keyid=xxxxxxxxxxxxxxxxxxxxx