命名的硬件软盘(或者至少有几种型号)允许我存储PGP密钥。
假设我使用这样一个秘密密钥来对数据进行签名(不管是什么)。据我所知,操作发生在硬件本身,而PGP密钥不会离开设备。
现在假设我正在签署几个数据的GiB,这是否意味着所有的数据都通过硬件压缩,因此硬件dongle成为一个瓶颈,或者签名实际上与签名数据的散列(散列在我的主机上被计算)相同?
概括地说:
gpg-agent的介入会改变什么吗?例如,假设我在host2上签名内容,host1连接到D6上,该D6具有插入PGP秘密密钥的硬件连接。发布于 2020-07-14 00:53:54
GnuPG signatures 将签署文件摘要,而不是文件本身。.当您尝试对一个大型文件进行签名时,GnuPG将创建该文件的摘要(通常使用哈希),然后只对其签名。
我们还可以使用--detach-sig选项来显示(分离的)签名大小相同,而不考虑文件的初始大小:
$ gpg --sign --detach-sig testfile-2M.sig testfile-2M
gpg: using "MYKEY" as default secret key for signing
$ gpg --sign --detach-sig testfile-512M.sig testfile-512M
gpg: using "MYKEY" as default secret key for signing
$ ls -lh .
total 1052792
-rw-r--r-- 1 kazwolfe wheel 2.0M Jul 13 17:33 testfile-2M
-rw-r--r-- 1 kazwolfe wheel 566B Jul 13 17:41 testfile-2M.sig
-rw-r--r-- 1 kazwolfe wheel 512M Jul 13 17:33 testfile-512M
-rw-r--r-- 1 kazwolfe wheel 566B Jul 13 17:42 testfile-512M.sig在验证文件时,GnuPG将执行类似的操作。它将独立计算摘要,然后根据该摘要验证签名。
加密工作以类似的方式。RSA或其他不对称算法的速度相当慢,特别是相对于其他(对称)算法,如AES。因此,GnuPG将选择生成一个会话密钥,该会话密钥实际上将对文件进行快速加密。然后使用公钥对此会话密钥进行加密。
您也可以尝试这样做:如果您用多个收件人加密一个(大型)文件,那么加密该文件的时间实际上不会发生多大变化,因为会话密钥只是在每个接收方之间被回收。
$ time gpg -r MYKEY --encrypt testfile-512M
11.58 real 10.43 user 1.08 sys
$ time gpg -r ... -r ... -r ... -r ... --encrypt testfile-512M
11.83 real 10.55 user 1.17 syshttps://security.stackexchange.com/questions/234638
复制相似问题