OpenSSL CCM加密字符串,如何保存标签



我需要将加密的文本写入文件,然后随后读取文件并解密文本。我想与CCM一起使用openssl evp进行身份验证的加密,但是CCM会产生一个标签,后来必须使用该标签来解密文本。问题是 - 如何存储此标签并在文件中重复使用它在孤立的PC Env(没有互联网)中?

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

标签是CCM(或GCM)的点。你可以

  • 延迟写入文件,直到计算为文件,预先预先标记和nonce(在解密,读取标签,读取nonce,解密休息)。
  • 写下nonce,然后写下ciphertext,然后是标签。恢复适当的
  • 将nonce和/或标签写入单独的文件。
  • 上述任何一个,但结构多于串联(例如,der序列)

如果您使用的是CCM或GCM,则必须每次使用相同的密钥时都使用不同的nonce。不这样做会导致关键妥协。(而且没有"好吧,我知道,但是在这种情况下没关系……",因为今天有意的马虎代码是明天的数百万美元的错误(作为参考示例)到另一个位置)。

在同一消息中传输的nonce,ciphertext和tag(和"附加数据")很常见,例如在TLS和IPSEC中。

最新更新