Encryption 对称AES加密概念

Encryption 对称AES加密概念,encryption,aes,Encryption,Aes,我有一个网站的项目,在Django上运行。它的一个功能需要为第三方网站存储用户/密码。所以它需要对称加密,因为它需要在自动化过程中使用这些凭证。 我知道,存储凭据从来都不是一个好主意,但对于这种情况,没有其他选择。 到目前为止,我的想法是,创建一个Django应用程序,它将保存并使用这些密码,而不做其他事情。有了它,我就可以拥有2个“Web服务器”,它们不会收到来自外部的任何请求,而只能通过redis或其他什么来完成任务。因此,我可以在某种程度上隔离它们(它们是唯一可以访问这个额外数据库的服务器

我有一个网站的项目,在Django上运行。它的一个功能需要为第三方网站存储用户/密码。所以它需要对称加密,因为它需要在自动化过程中使用这些凭证。 我知道,存储凭据从来都不是一个好主意,但对于这种情况,没有其他选择。 到目前为止,我的想法是,创建一个Django应用程序,它将保存并使用这些密码,而不做其他事情。有了它,我就可以拥有2个“Web服务器”,它们不会收到来自外部的任何请求,而只能通过redis或其他什么来完成任务。因此,我可以在某种程度上隔离它们(它们是唯一可以访问这个额外数据库的服务器,它们不会处理任何web请求,等等) 第一个问题:这个计划听起来可靠吗?还是存在重大缺陷

第二个问题是关于加密本身: AES的所有工作都需要加密密钥,这需要以某种方式进行“保护”。但我对静脉注射更感兴趣。 每个用户都可以在额外数据库中保存一个或多个凭据集。在用户id上使用某种排序哈希或其他方法来生成每个用户的自定义IV是一个好主意吗?大多数时候,我认为IV只是随机生成的。但是,我还必须将它们存储在钥匙之外的某个地方。 对我来说,这里有点混乱。我需要密钥和IV来解密,但我会以同样的方式“存储”它们。那么,如果一个人受到伤害,静脉注射也会受到伤害,这难道不是很可能吗?如果我在一个已知的程序上实时生成IV,会有什么不同吗?问题是,如果每个人都知道自己的用户id,他们就可以知道IV,因为代码将是开源的

最后,我需要一些指导,如如何处理每个用户的关键和最佳独特的IV。非常感谢您到目前为止的阅读:-)

这个计划听起来可靠吗,还是存在重大缺陷

存储使用凭据的需要是设计上的一个缺陷,至少我们都感谢您意识到这一点

在规定的条件下,使用带有专用数据存储的单独凭证服务似乎是最好的选择。我不喜欢存储用户凭据的选项,但让我们跳过学术讨论,转而讨论实际问题

AES的所有工作都需要加密密钥,这需要以某种方式进行“保护”

是的,整个问题都在这里

要生成每个用户的自定义IV

IV允许重复使用同一密钥进行多次加密,因此有效地说,它对于每个密文都必须是唯一的(如果用户有多个密码,则每个密码都需要一个IV)。通常在密文前面加上IV,因为需要解密密文

如果我在一个已知的程序上实时生成IV,会有什么不同吗

IV本身不需要保密


某些加密模式要求IV不可预测(例如CBC模式),因此最好将IV生成为随机。有些模式使用IV作为计数器,仅加密/解密部分数据(如CTR或OFB),但仍然要求IV对于每个密钥和加密都是唯一的。

第三方网站的用户/密码
-这些是应用程序的服务凭据还是您要求用户存储其外部应用程序的用户凭据?(代表他们做一些事情?这就是OAuth的用途)凭据是用于外部应用程序的。但是oauth需要在外部应用程序上实现,对吗?这就是我的问题,这个外部应用程序不提供任何api或基于令牌的身份验证。谢谢,这是一些有用的反馈。是的,它是有缺陷的,因为必须存储它们。但此功能是自愿的,并应为用户提供适当的警告。第三方只是不提供任何类型的api或oatuh。现在我得弄清楚如何储存静脉注射。。。没有什么是有意义的。。。将它们存储在db上,就像根本不使用它们一样(这是加密字符串和IV!),存储在磁盘上对我的设置不起作用,其他一切都是不稳定的:-/