我的系统用于确保程序生成的结果文件的完整性:
results.txt
的工作,其大小变为几千兆字节。results.txt
已关闭。gpg --sign --detach results.txt
的大小,这需要几分钟。弹出pinentry程序,并提示执行程序的人员输入密钥密码。时间流逝......结果文件已归档......
当我在Ubuntu上使用gpg 2.0.17(libgcrypt 1.5.0)开发此系统时,我了解到进入签名的时间戳基本上是在调用results.txt
时的时间戳。这很好用,因为我可以依赖于写入文件的时间戳和gpg签名开始之间不到1秒的时间,我认为任何手动篡改的时间都太少了。作为检查结果完整性的一部分,我检查了gpg签名时间戳在文件末尾写入的时间戳后不到1秒。这很有效,直到......
我使用gpg 2.0.27(Gpg4win 2.2.4,libgcrypt 1.6.3)将系统移植到Windows 7,我注意到在这个环境中,gpg签名中包含的时间戳实际上是在结束 gpg签名,或文件关闭后约2分钟。这是一段足够长的时间,可能会篡改文件。
有没有办法让gpg2在计算实际签名之前采用时间戳?
答案 0 :(得分:2)
您可以强制使用与--fake-system-time
选项一起使用的固定时间戳。
--faked-system-time epoch
This option is only useful for testing; it sets the system time back
or forth to epoch which is the number of seconds elapsed since the
year 1970. Alternatively epoch may be given as a full ISO time string
(e.g. "20070924T154812").
确定当前时间,并在执行签名操作时将其传递给GnuPG。