【问题标题】:openssl ccm encrypt a string, how to save tag?openssl ccm 加密字符串,如何保存标签?
【发布时间】:2016-11-23 15:09:58
【问题描述】:

我需要将加密文本写入文件,然后读取文件并解密文本。我想通过带有 ccm 的 openssl evp 使用经过身份验证的加密,但是 ccm 会生成一个标签,以后必须使用该标签来解密文本。 问题是 - 如何存储此标签并在隔离的 pc 环境(无互联网)中跨文件读取重复使用它?

我是加密新手,但在写入文件之前已经将标签附加到加密文本中,然后在解密时忽略标签字节,有点不好的方法。任何提示如何解决这个问题?在写/读文本之前,我不能要求用户提供密码。环境对安全性不是很敏感

【问题讨论】:

    标签: encryption openssl aes


    【解决方案1】:

    坦率地说,标签是 CCM(或 GCM)的点。你可以

    • 延迟写入文件直到它被计算出来,预先添加标签和随机数(解密时,读取标签,读取随机数,解密休息)。
    • 写入随机数,然后是密文,然后是标签。适当恢复
    • 将 nonce 和/或标签写入单独的文件。
    • 以上任何一种,但结构多于串联(例如 DER 序列)

    如果您使用 CCM 或 GCM,则每次使用相同的密钥时必须使用不同的 nonce。不这样做可能会导致密钥泄露。 (并且没有“嗯,我知道,但在这种情况下没关系......”因为今天故意草率的代码一旦被复制(作为参考示例)到另一个位置,明天就会出现数百万美元的错误) .

    在同一消息中传输随机数、密文和标签(以及“附加数据”)是很常见的,例如在 TLS 和 IPSEC 中。

    【讨论】:

    • “延迟写入文件直到它被计算出来,预先添加标签和随机数......在同一条消息中传输随机数、密文和标签是很常见的” - 在认证加密模式下操作分组密码时,如 CCM、EAX 和 GCM,您不能泄露密文和标签。 {ciphetext,tag} 对是加密的产物。如果您不出示标签,则消息将无法解密。 CCM 通常无法流式传输,因为它需要格式化的标头。最好坚持使用 CCM 或 EAX 模式。
    • 哇,我很惊讶直觉上我走在正确的轨道上 - 非常感谢!
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2017-06-22
    • 2022-11-25
    • 2022-10-22
    • 1970-01-01
    • 2010-11-12
    • 1970-01-01
    • 2012-04-23
    相关资源
    最近更新 更多