首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
社区首页 >问答首页 >用密匙加密文件时,AES-256-CBC加密IV与salt

用密匙加密文件时,AES-256-CBC加密IV与salt
EN

Security用户
提问于 2016-09-02 14:35:02
回答 1查看 8.5K关注 0票数 0

我正在编写一个小类来添加到我的应用程序中,它将处理诸如配置秘密之类的事情。(我不想进入这个话题,因为很多研究已经深入到我们决定为此采取的方法上。)

其中一个要求是对文件机密进行加密。(假设是TLS证书密钥或PGP密钥。)我能够生成(并解密)一个秘密密钥,该密钥可用于使用AWS KMS服务对应用程序之外的文件进行加密/解密。(有关实际返回的信息,请参见此:https://docs.aws.amazon.com/cli/latest/reference/kms/generate-data-key.html)

所以,按照我的想法,这仅仅意味着我需要将加密的密钥与文件一起存储,这样我就可以解密密钥,使用它来解密文件时。

我的困惑来自于由于IV而对文件数据使用了openssl加密/解密函数。在过去的几天里,我阅读了很多关于IV的内容,并理解了它的一般用途,但我仍然有许多问题试图将它与我在“现实世界”中看到的东西调和起来。

当我从命令行使用openssl对文件进行加密时,我已经阅读了以下内容:

openssl aes-256-cbc -salt -in secrets.txt -out secrets.txt.enc

注意,没有传入IV,尽管-salt参数可能具有类似的用途?

但是,当我解密同一个文件时,我使用如下命令:

openssl aes-256-cbc -d -in secrets.txt.enc -out secrets.txt.new

注意没有-salt参数,没有IV,或者任何类似的东西,那么它如何能够在没有这些信息的情况下解密文件呢?

在PHP中的openssl加密/解密函数以及围绕IV的其他讨论中,似乎强烈建议在加密数据时使用IV,这意味着我在解密数据时也需要存储/使用IV,但这不是从命令行执行的,那么这是如何工作的呢?上面的命令行是否不太安全?我是否需要使用一个IV,因为每个文件都有自己的安全加密密钥?

EN

回答 1

Security用户

回答已采纳

发布于 2016-09-02 15:11:29

如本线程所述

OpenSSL开发人员倾向于从密码中派生IV,就像密钥一样(也就是说,他们从密码中产生一个长序列,他们将其分成两部分,一半是加密密钥,另一半是IV)。

不需要为解密提供IV,因为OpenSSL从密码中派生它。线程还提到了使用OpenSSL的文件加密方法的一些缺点,这是值得考虑的,比如没有MAC来验证加密文件的完整性。

票数 2
EN
页面原文内容由Security提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://security.stackexchange.com/questions/135708

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档