我在工作中被要求保护保存在Mysql数据库中的敏感数据。这个数据库包含几个表,其中一个表中的关键数据只能使用Django中的API来访问。对于这个API,只有一定数量的人可以访问它,因此他们将是唯一能够访问这个表中的数据的人。
因此,目前的问题是每个人都可以访问数据库和该表,因此我们决定使用AES在AES_ENCRYPT()和AES_DECRYPT()函数的帮助下加密该表中的所有数据(根据https://dev.mysql.com/doc/refman/5.5/en/encryption-functions.html)。
所以....到目前为止,一切正常,但主要问题是如何存储用于加密/解密的AES密钥。在与我的同事和google进行了一番头脑风暴之后,我发现最好的做法是使用密钥包装器(http://en.wikipedia.org/wiki/keywrap),这包括使用属于能够访问与数据库表交互的API的人员的密钥来加密原始密钥(主密钥)。所以,我考虑使用每个人的公钥的公钥来加密这个密钥,并且将加密的版本存储到一个任何人都可以访问的表中。然后,当用户需要主密钥时,他/她只需要检索加密的密钥,用他/她的私钥解密,最后他/她将把密钥放入登录会话,这样他们就可以通过API使用它了。
我只是想知道是否有更好的替代方案。
使用一个密钥加密内容(“内容加密密钥”或CEK),然后用每个授权接收者的密钥(“密钥加密密钥”或KEK)加密该密钥的方法是一种很好的方法,它被用于许多标准协议中,如S/MIME、PGP等。
但是:在这种环境下,您会将授权用户的私钥存储在哪里?你将如何保持他们的隐私?
可行性取决于您的应用程序,但最好使用对称算法为每个用户加密CEK。每当用户想要访问CEK时,他们必须重新输入他们的密码,这样服务器就不会将他们的密钥完全存储。
问题内容: 我有一个Java属性对象,其中包含Web服务的身份验证信息。我需要对这些数据进行加密,但是我不知道该将加密密钥存储在何处才能保持安全。 关于加密和以安全方式检索数据的最佳实践是什么? 使用密钥库有什么好处吗? 问题答案: 您的问题很普遍。在Linux中,用户密码存储在纯文本文件中。尽管只存储了密码哈希,但是如果攻击者可以访问该文件,则使用脱机词典攻击可以很快发现一些密码。在这种情况下,
问题内容: 我想知道如何在Android中安全存储 加密密钥 吗?保护加密和秘密密钥的最佳方案是什么? 问题答案: 根据您的评论,您需要使用适用于当前Android版本和旧Android版本的本地密钥对数据进行加密 Android Keystore 旨在生成和保护您的密钥。但是它不适用于18级以下的API级别,并且在API 23级之前有一些限制。 您将需要一个随机对称加密密钥,例如AES。AES密
在flutter应用程序中存储key.jks文件对于flutter应用程序发布是安全的吗? 存储库密码、keyPassword、keyAlias 我的key.properties文件:
在一个应用程序中,我使用Android密钥库。我已经为整个密钥库和每个密码条目设置了密码。因为这些密码是字符串,所以它们存储在代码的字符串成员中。 显然,如果我想发布应用程序,这是不安全的,因为潜在的攻击者可以反编译apk并获取密码,因为它是硬编码在应用程序中的。 我的问题是: 在上面的场景中:攻击者是否能够读取我的密钥库文件,或者(在无根手机上)该文件是否只能由我的应用程序访问,因此仅密码是不够
我正在使用Xamarin android编写一个银行支付应用程序,该应用程序存储用户卡信息。我正在寻找一种安全可靠的存储数据的方法。我唯一发现的是下面的链接,该链接存储的帐户信息对我来说是无用的: https://developer.xamarin.com/recipes/cross-platform/xamarin-forms/general/store-credentials/
在阅读了以下内容之后:JWT:什么是好的密钥,以及如何将其存储在node.js/express应用程序中?关于如何存储“密钥”以分配JWT令牌。我有安全问题。我的数据(消息,用户名等...)将被加密(在数据库中),只有授权用户才能解密(基于他们的私钥)。由于JWT令牌是使用存储在服务器上的1个“秘密密钥”生成的,所以如果攻击者获得了“秘密密钥”并获得了数据库的控制权,则可以伪造令牌,因此可以绕过“