我玩过openssl来制作pub / prv密钥,并创建文件的签名并对其进行了验证。我玩弄了Cryptophane(Windows gnupg前端),并听说了密钥服务器+玩了签名文本。
但是,我从未签署过文件存档。如果我要发布档案(7z,rar或zip,没关系),并且我希望我的用户或软件能够检查该档案是否已签名,我该怎么做?显然,公钥需要公开。但是,将签名添加到存档中使我感到困扰。是否有任何软件+存档允许我签名和验证压缩的存档文件?
我玩过openssl来制作pub / prv密钥,并创建文件的签名并对其进行了验证。我玩弄了Cryptophane(Windows gnupg前端),并听说了密钥服务器+玩了签名文本。
但是,我从未签署过文件存档。如果我要发布档案(7z,rar或zip,没关系),并且我希望我的用户或软件能够检查该档案是否已签名,我该怎么做?显然,公钥需要公开。但是,将签名添加到存档中使我感到困扰。是否有任何软件+存档允许我签名和验证压缩的存档文件?
Answers:
一种常见的方法是在文件中创建分离的签名.sig
(通常gpg -b
很少使用– X.509 进行PGP签名),并在相同位置提供两个文件。例如:
ftp://ftp.gnupg.org/gcrypt/gnupg/gnupg-2.0.19.tar.bz2
ftp://ftp.gnupg.org/gcrypt/gnupg/gnupg-2.0.19.tar.bz2.sig
可以与任何类型的文件一起使用,但是用户必须使用手动验证签名gpg --verify
。
不幸的是,在目前使用的那些格式中,没有一个档案格式(我知道)支持使用PGP或X.509的内置签名。(这不包括CAB,CAB在Windows内部使用,但实际上在其他地方都没有使用,并且签名非常复杂)。WinRAR 4能够使用专有格式添加“真实性验证”记录,但它使用WinRAR许可证作为签名密钥,该密钥已被反复破解。(更新:由于不安全,此功能已从 WinRAR 5 中删除。)
在Windows(以及后来的Mac OS X)上,可以创建“自解压档案”(一种数字签名的可执行文件,从其内部提取档案),例如,这就是Windows上的软件安装程序的工作方式。但是,SFX仅限于单个操作系统,因此它们仅适合分发程序,而不适合分发文档或图片。(Java程序可以签名并且可以跨平台,但是很少有系统仍然具有Java运行时。)
使用Java jar工具构建的jar归档实际上是zip归档,并且有一个工具jarsigner对其进行签名。
以下是一些有用的链接:
首先看起来有点复杂(“我需要keeytool做什么?还有什么?”),但是很容易按照简单的方式执行解决问题的步骤。有用。然后,您可以更深入地研究问题。
manual verification
?有什么选择?一个自动弹出窗口,每10分钟会进行一次验证?操作系统是否应在启动时自动验证存档?收到存档时-是从CD,电子邮件附件,下载中...吗?它应该是您的病毒扫描程序中的插件吗?
.deb
必须先验证软件包签名dpkg
,而无需用户采取任何其他措施。
您可以通过以下两个命令使用jarsigner对文件进行签名:
keytool -genkeypair -alias <key-alias> -keyalg RSA -keystore <keystore> -validity 180
jarsigner -verbose -sigalg SHA256withRSA -digestalg SHA-256 -keystore <keystore> <file-to-sign> <key-alias>
您需要在您的PC中安装Java JDK。
-第一个命令在当前目录中创建密钥存储(假设它不存在)。它使用算法SHA-256生成公用/专用密钥对。
-第二个文件使用相同的算法,密钥库和第一个文件生成的别名对文件签名。
要验证使用密钥库签名的文件,可以运行以下命令:
jarsigner -keystore <keystore> -verify -verbose -certs <file-signed>