openssl ccm加密字符串,如何保存标签?
openssl ccm encrypt a string, how to save tag?
我需要将加密文本写入文件,然后读取文件并解密文本。我想将经过身份验证的加密与带有 ccm 的 openssl evp 一起使用,但是 ccm 会生成一个标签,以后必须使用该标签来解密文本。
问题是 - 如何存储此标签并在隔离的 pc 环境(无互联网)中跨文件读取重用它?
我是加密新手,但在写入文件之前已经将标签附加到加密文本,然后在解密时忽略标签字节,有点糟糕的方法。任何提示如何解决这个问题?我不能要求用户在 writing/reading 文本之前提供密码。环境不是高度安全敏感
标签,说白了就是CCM(或者GCM)的重点。你可以
- 延迟写入文件,直到它被计算出来,在标签和随机数之前添加(解密时,读取标签,读取随机数,解密剩余)。
- 写随机数,然后是密文,然后是标签。适当恢复
- 将随机数 and/or 标记写入单独的文件。
- 以上任何一项,但结构比串联更多(例如 DER SEQUENCE)
如果您使用的是 CCM 或 GCM,则每次使用相同的密钥时,必须使用不同的随机数。如果不这样做可能会导致密钥泄露。 (而且没有 "well, I know that, but it doesn't matter in this case...",因为今天故意草率的代码一旦被复制(作为参考示例)到另一个位置,明天就会成为价值数百万美元的错误。
在同一消息中传输随机数、密文和标签(以及 "additional data")是很常见的,例如在 TLS 和 IPSEC 中。
我需要将加密文本写入文件,然后读取文件并解密文本。我想将经过身份验证的加密与带有 ccm 的 openssl evp 一起使用,但是 ccm 会生成一个标签,以后必须使用该标签来解密文本。 问题是 - 如何存储此标签并在隔离的 pc 环境(无互联网)中跨文件读取重用它?
我是加密新手,但在写入文件之前已经将标签附加到加密文本,然后在解密时忽略标签字节,有点糟糕的方法。任何提示如何解决这个问题?我不能要求用户在 writing/reading 文本之前提供密码。环境不是高度安全敏感
标签,说白了就是CCM(或者GCM)的重点。你可以
- 延迟写入文件,直到它被计算出来,在标签和随机数之前添加(解密时,读取标签,读取随机数,解密剩余)。
- 写随机数,然后是密文,然后是标签。适当恢复
- 将随机数 and/or 标记写入单独的文件。
- 以上任何一项,但结构比串联更多(例如 DER SEQUENCE)
如果您使用的是 CCM 或 GCM,则每次使用相同的密钥时,必须使用不同的随机数。如果不这样做可能会导致密钥泄露。 (而且没有 "well, I know that, but it doesn't matter in this case...",因为今天故意草率的代码一旦被复制(作为参考示例)到另一个位置,明天就会成为价值数百万美元的错误。
在同一消息中传输随机数、密文和标签(以及 "additional data")是很常见的,例如在 TLS 和 IPSEC 中。