有什么方法可以远程验证文件是否加密?
我有一个非常复杂的问题,但这里有一个简化的场景可以说明这一点:
我有一台服务器,它会产生非常大的视频文件。我希望在下载之前在文件级别对这些文件进行加密。(可能是非安全连接。)我知道这些文件的密钥,我应该能够解密任何文件。
在通过不安全的网络传输文件之前,有什么方法可以验证文件是否确实加密?
答案1
你如何加密它们?例如,如果你使用gpg
,文件命令会识别加密格式(甚至可以区分 ASCII 装甲和非装甲输出):
[madhatta@risby tmp]$ ls -la > foo
[madhatta@risby tmp]$ gpg -e -r fred foo
[madhatta@risby tmp]$ gpg -e -r fred --no-armor foo
[madhatta@risby tmp]$ file foo foo.asc foo.gpg
foo: ASCII text
foo.asc: PGP message
foo.gpg: GPG encrypted data
编辑:我想我明白你在问什么,但我不太明白重点。假设你能以某种方式建立一个认证机构来识别每个文件,并颁发某种“加密”证书,你会如何使用它?要识别它认证的文件是否可靠,它必须包含某种校验和,要评估该校验和,你必须获取原始文件。最好只获取原始文件,然后对其进行评估。
当然,你可以在证书中嵌入路径名,但随后必须根据实时 CRL 检查每个证书,以避免有人简单地解密文件就地并保留旧证书;而其他系统则必须不断监督文件更改并更新该 CRL。不,如果您想远程执行此操作,我建议:
ssh server file foo.asc
答案2
大多数(所有)对称加密的链接模式都可以在文件的截断版本上正常工作。
因此,原则上,您可以下载文件的开头,在本地解密,并验证它是否对应于截断的明文。然后,您至少可以证明文件的开头是正确加密的;如果没有,您只泄露了一小部分数据。
具体细节取决于您使用的加密格式。至少,要进行适合所用分组密码大小的截断,并且您可能需要考虑一些标头。