我有一个关于AES何时生成密钥和IV的问题,用户将如何知道密钥是什么,或者程序如何知道要生成哪个密钥。例如,如果有加密方法加密文件并生成密钥和IV。当程序重新启动或在另一天使用时,他们会想要使用解密,但你怎么知道或者程序知道那个文件的密钥。
我通过查看来理解解密和加密。我只是不知道存储信息的位置来检索密钥?
答案 0 :(得分:1)
Key management是任何加密相关协议的重要组成部分。需要一本书才能解释。
最着名的方法之一是使用密码(请参阅PKCS#5中的基于密码的加密,其中密钥是从(存储的)盐生成的,迭代次数,当然还有密码(编码为字节)另一种选择是将密钥存储在某些可移动设备上,如USB密钥。
通常主密钥不用于加密数据,但使用称为数据或会话密钥的中间密钥。例如,PGP encryption生成数据密钥并使用非对称密钥对的公钥对其进行加密。
然后有智能卡,TPM模块,HSM,密钥容器(可能由操作系统提供),密钥共享协议等等。
所以......这取决于。
有时将密钥视为另一个秘密更容易。通过加密某些内容,您只需将您的较大秘密(您的明文)“压缩”为您必须保留和管理的较小秘密(密钥)。然而,该秘密可能是事先生成的,或者可能是通过其他方式生成的。如果您只是在与密文相同的时间和位置生成密钥,那么您还没有解决任何问题,只会让您的秘密更小。
IV更容易,IV可以简单地与密文一起存储(通常在前面)。