database - 将用户公钥存储在数据库中不会使加密在数据泄露时变得毫无意义吗?
问题描述
我正在研究加密我的数据库的策略。到目前为止,使用公钥/私钥对似乎是我见过的最常用的解决方案。例如,如何在 Firebase 中加密用户数据,建议将用户 A 公钥存储在 Firebase 中,并由任何想要向他发送消息的用户获取。
用户 A 登录后,他的手机上会生成一个随机的公钥私钥对。例如:使用 Ecc Curve25519 来自 A 的私钥安全地存储在他的手机上 来自 A 的公钥存储在 firebase 中,任何与 A 聊天的人都可以访问。如果 X 向 A 发送消息,他会从 A 获取公钥from firebase 在本地加密 A 的消息,并将加密的消息存储在来自 A 的收件箱中的 firebase 上
据我了解,如果攻击者访问数据库,他可以解密整个数据库,因为他可以访问所有公钥。如果是这种情况,那么加密它有什么意义呢?
相反,如果使用的加密/解密密钥没有存储在数据库中,那么攻击者只会获取加密数据,对吗?在第二种情况下,为用户提供此密钥的最安全方法是什么?非常感谢。
解决方案
推荐阅读
- python - 查找字长
- asp.net - ASP.NET MVC - IIS Express(谷歌浏览器)
- acumatica - 如何在 SOLine_RowUpdated 事件中跳过基本逻辑
- php - 连接受限环境中的 PHP MySQL 连接
- java - 无法找到或加载主类 - java - gradle -
- opengl-es - 获取多个片段的 Vulkan/OpenGL 子通道
- python - sshuttle 可以使用现有的 SSH 隧道吗?
- c++ - 与同一类的私有数据成员具有相同名称的成员函数的变量会发生什么?
- groovy - 是否可以禁用属性语法以访问 groovy 中的 getter?
- google-apps-script - 如何使用 App Scripts 获取 Google Sheet 的最后一个受保护范围之后的第一行号