openssl ccm加密字符串,如何保存标记?

时间:2016-11-23 15:09:59

标签: encryption openssl aes

我需要将加密文本写入文件,然后读取文件并解密文本。我想使用带有ccm的openssl evp进行身份验证加密,但ccm会生成一个标记,以后必须使用该标记来解密文本。 问题是 - 如何存储这个标签,并在隔离的电脑env(没有互联网)的文件读取中重复使用它?

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

1 个答案:

答案 0 :(得分:1)

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

  • 在文件计算之前延迟写入文件,添加标签和随机数(在解密,读取标签,读取现时,解密休息)。
  • 写下nonce,然后是密文,然后是标签。适当恢复
  • 将随机数和/或标记写入单独的文件。
  • 上述任何一种,但结构多于连接(例如DER SEQUENCE)

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

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