【问题标题】:What are the standard encryption file formats?标准的加密文件格式有哪些?
【发布时间】:2009-08-20 15:13:47
【问题描述】:

我对加密文件格式有点困惑。

假设我想使用 AES-256 加密文件。我通过加密算法运行文件,现在我有一个加密字节流。

我显然可以将该字节流写入文件,但任何第三方加密应用程序都不会理解它,因为它不期望只是原始的加密字节流。

我可以把它写成什么文件格式,以便其他加密工具可以理解?

我知道的(我认为)是:

PKCS#7
ASN.1
DER
PEM
PKCS#8

但我不确定它们之间的关系如何。

显然 AESCrypt 实用程序也有一种格式,它似乎是它自己的专有格式: http://www.aescrypt.com/aes_file_format.html

这些东西的任何地方都有备忘单吗?我一直在谷歌上搜索并找到了一些零碎的东西,但从来没有觉得我拥有完整的图片。

【问题讨论】:

    标签: encryption cryptography


    【解决方案1】:

    PKCS#8 不是加密文件格式,它是一种私钥格式。

    ASN.1 和 DER 是将结构化消息转换为二进制的规则。尽管它们用于定义和描述文件格式,但它们本身并不是一种文件格式。

    PKCS#7 与 PEM 密切相关,它们都是公钥加密文件的格式。它们是根据 base-64 封装的 DER 编码的 ASN.1 消息定义的。它们是用于安全 Internet 邮件的 S/MIME 格式的基础。 (见RFC3851

    与 S/MIME 并行的是 OpenPGP 文件格式,它也主要用于公钥加密文件。 (见RFC4880

    在 S/MIME 和 OpenPGP 格式中,都有一个包含对称密钥加密数据的块。可以创建仅包含此块的有效 S/MIME 或 OpenPGP 文件。这样,S/MIME(又名 PKCS#7)和 OpenPGP 格式也可以用于对称密钥加密。

    【讨论】:

      【解决方案2】:

      AES 是一种加密算法,而不是一种文件格式。

      正如您所指出的,算法上有很多旋钮和杠杆 - 关键强度是其中之一。 AES-256 仅表示具有 256 位密钥的 AES 算法。但是还有很多其他的旋钮。模式,一。 AES 有多种模式:CBC、ECB、OFB、CFB、CTR 等。另一个是 IV,它适用于某些模式。填充是另一个。通常,对于您使用的任何框架,这些旋钮都暴露在 AES api 中。

      在大多数情况下,AES 与其他加密技术相结合 - 例如,基于密码的密钥派生 (PBKDF2) 通常用于生成密钥或 IV。 MAC 通常用于验证加密数据的完整性。

      不同的工具使用 AES 进行加密,如果他们希望他们的数据可读,他们会发布他们使用的旋钮列表,以及如何设置它们,以及如何使用任何相关的加密技术。

      创建文件格式时,如果您希望其他应用程序可以读取您的文件,则需要存储或发布这些内容。

      【讨论】:

      • 是的 - 但没有基于标准的文件格式吗?以便打开文件的程序可以发现算法、使用的参数等?这就是我要问的 - 是否有可以写入加密数据的格式,并期望另一个程序能够理解它(假设它以相同的方式实现该算法,用户已获得密钥或公钥包括在内等)。如果存在此类格式,我在哪里可以找到我的选项的摘要?还是总是“自己动手”?感谢您的帮助。
      • 嗯,当然。例如,WinZip 可以使用 AES,并记录了它是如何使用的。 winzip.com/aes_info.htm PKCS#7 记录在 RFC 2315 中。tools.ietf.org/html/rfc2315 MS-Word 使用 AES 加密。 download.microsoft.com/download/6/7/f/…我不确定您是否有特定的格式,或者..您想了解很多格式,或者什么。
      【解决方案3】:

      您可能想查看在 2019 年底标准化的 Crypt4GH

      Crypt4GH,一种来自 Global 的新标准文件容器格式 基因组学与健康联盟 (GA4GH),允许基因组数据 在整个生命周期内保持安全,从最初的测序到 与外部组织的专业人士分享。

      据我所见,它与 NaCl 的 crypto_box 相似(就加密而言),但具有在磁盘上形成文件格式的优势。

      【讨论】:

        【解决方案4】:

        JSON Web Encryption RFC 7516 是一种 IETF 标准,可以满足您的需求,它可以处理 AES 以及其他加密算法。

        JSON Web Encryption (JWE) 使用 JSON 表示加密内容-
        基于数据结构 [RFC7159]。 JWE 加密机制
        加密并为任意序列提供完整性保护 八位字节。

        JWE 以多种语言实现,例如在 Java 中,您可以使用 nimbus

        【讨论】:

          猜你喜欢
          • 2012-03-06
          • 2012-10-11
          • 1970-01-01
          • 2021-06-28
          • 2011-12-17
          • 1970-01-01
          • 2019-04-08
          • 1970-01-01
          • 1970-01-01
          相关资源
          最近更新 更多