我正在寻找一个现有的工具,最好是开源的,它可以对文件的不同部分进行加密(文本文件或像tar这样的存档),使用不同的密钥进行递归加密等等。
我不知道这类事情的现有术语,所以我正在创造“异源加密”,或“异种加密”。如在“递归异形的文本文件或档案”中一样。
也许一个例子会有所帮助:想象一个XML文本文件,它包含各种帐户、密码、注释等:
<BUNDLE>
<ACCOUNT>
<HOSTNAME>crypto.stackexchane.com</HOSTNAME>
<USERNAME>Alice.B.Cryplas</USENAME>
<PASSWORD>restaurant</PASSWORD>
</ACCOUNT>
<ACCOUNT>
<HOSTNAME>google.com</HOSTNAME>
<USERNAME>Alice.B.Cryogenic</USENAME>
<PASSWORD>anything</PASSWORD>
</ACCOUNT>
</BUNDLE>存储密码不是我心目中的应用程序--或者至少不是我心目中的主要应用程序--但它激发了一些简短的例子。
我可能希望对整个文本文件进行加密:
<ENCRYPTED>
<CIPHERTEXT> 9877 5644 8787 ... </CIPHERTEXT>
<AUTHENICATION>if you really want it</AUTHENTICATION>
<ENCRYPTED>我可能想解密整个文件。
我可能想解密文件的“顶层”,这样我就可以看到主机名和用户名,但是密码字段仍然是加密的:
<BUNDLE>
<ACCOUNT>
<HOSTNAME>crypto.stackexchane.com</HOSTNAME>
<USERNAME>Alice.B.Cryplas</USENAME>
<ENCRYPTED field="PASSWORD> 4334 8787 ... </ENCRYPTED>
</ACCOUNT>
<ACCOUNT>
<HOSTNAME>google.com</HOSTNAME>
<USERNAME>Alice.B.Cryogenic</USENAME>
<ENCRYPTED field="PASSWORD> 8878 5454 2323 ... </ENCRYPTED>
</ACCOUNT>
</BUNDLE>诸若此类。
注意:我指的不仅仅是查看器,在这里,整个文件都是用一个密钥加密的,而查看器只是选择要显示的字段。
我指的是一种文件格式,其中每个字段,或至少某些字段子集,都可以使用不同的密钥进行单独加密。使用查看器和/或编辑器,可以查看和编辑某些字段,而不允许访问其他字段的明文。
虽然我给出了一个简单的XML文件格式作为示例,但它与存档文件(如tar文件)是同构的,后者可能包含二进制文件和文本文件。(同构,因为任何层次文件系统都可以线性化为XML文本。)
还请注意,我也希望支持递归。目前我没有一个简单的示例,但是在归档文件示例中,您可以想象加密一个文件,然后加密包含该文件的父目录(PDIR,持有PDIR/ THIS ),然后加密包含该文件的祖父母目录(GPDIR,包含GPDIR/PDIR,以及GPDIR/PDIR/THIS),等等。
(无层次文件系统的有趣可能性,例如硬链接。)
问:是否有任何相当知名的XML文本文件格式、归档格式或一组工具可以实现这一点?
无论是否有这样一个现有的工具集,我也在思考一些设计上的考虑:
最重要的考虑是关键管理。我们可能希望用相同的密钥加密几个字段--例如,所有密码的一个密钥。在非加密安全性的术语中,这样的密钥将是一种功能。或者,所有密码的密钥,用于打开特定密码的密钥“字典”。
您是否会有这样一个密钥管理系统,将其与异源加密文件分开?或者您可以将加密的密钥字典存储在文件本身的主密钥下面吗?在这种情况下,您可能会将操作这样一个异构文件的程序至少分为两个部分--一个部分管理密钥,这个部分是小的和有限的,以便您能够正式地证明它,并根据需要将密钥提供给工作程序,以便它们能够解密他们工作所需的字段和区段。
您是否会用可供密钥管理系统使用的ID信息标记加密的块,以确定需要哪些密钥?
<ENCRYPTED field="PASSWORD> 4334 8787 ... </ENCRYPTED>还是加密的小块应该完全不透明?
经过认证的加密?我假设加密-然后MAC (EtM)。(实际上,我很喜欢MtEtM,但这可能是另一篇文章。)
加密的blob是否应该包含上下文信息,以便加密的密码blob不能简单地从一个帐户移动到一个完全不同的帐户?如果是这样的话,这种上下文信息应该包括哪些内容?在密码示例中,系统名和用户名都可能随着时间的推移而更改,并且由不应该访问加密密码的软件更改。我怀疑,可能必须有一个唯一或几乎唯一的标识符与包含这样一个密码blob的记录相关联,该标识符是加密的,或者至少是通过密码blob进行身份验证的。
通常,是否有方法表示文件的结构完整性,防止恶意字段交换,但仍然允许编辑和重构?
递归加密安全吗?我知道,我见过的文件反复显示加密并不总是一件好事,因为定点。
这可能是必要的管理,不仅是密钥,而且盐类或非对加密的小块和小块。
我很想拥有这样的工具。我可能会喜欢写这样的工具。但当然,如果它已经存在,我想知道。
如果这个主题不是密码学,而是密码应用程序,我很抱歉。虽然我怀疑它对加密方案有一些一般的兴趣,但与在加密文件系统和加密内存中开始工作后创建“微调密码学”的方式大致相同。
发布于 2017-03-18 20:18:46
你要找的听起来特别具体..。不太可能有什么东西能做你想要做的事情。但是,如果您愿意编写一些代码,这可能不会太难。
虽然大多数加密软件都是围绕着您正在加密整个文件的假设而设计的,但我记得gpg有内置的功能来加密短字符串的文本。我相信最初的想法是,加密电子邮件的一部分是有用的,但仍然有其他的部分是纯文本的(也许是为了向你发电子邮件的人解释如何解密它!)
因此,基本上,您必须编写一个简单的程序,查找要加密的XML文档(或其他部分),并通过gpg运行它们。
https://softwarerecs.stackexchange.com/questions/25897
复制相似问题