【问题标题】:Client side decryption客户端解密
【发布时间】:2016-01-03 01:45:11
【问题描述】:

我的 android 应用程序从服务器下载一些加密消息并将其存储在本地。即使在离线期间,应用程序也需要稍后解密消息。该应用程序将公开分发,因此任何用户都可以解密该消息。

我应该使用嵌入客户端应用程序的通用密码还是将密钥与加密消息一起存储在服务器中?对于这个问题,我最好的选择是什么?我理解这两种做法都是不好的做法,如果有更好的解决方案,我将不胜感激。

----- 编辑-----

我无法透露我做了什么,但这应该足以描述这个场景。但是,实际信息并不那么敏感和私密。

  1. 任何用户都可以上传他们的银行账户余额并用他们的网上银行密码锁定。加密后的密码将在线存储在数据库中。
  2. 应用程序将在互联网可用时下载加密密码。
  3. 即使离线,任何用户都可以访问其他用户的银行账户余额。密码解密和解锁在后台进行。

加密的目的是对所有用户隐藏密码,使任何用户都无法使用解密后的密码访问某些用户的网上银行。

【问题讨论】:

  • 您似乎对加密相关主题的了解有限。如果任何客户端都可以解密消息,那么您要向谁隐藏信息?如果解密密钥存储在客户端,任何人都可以解密您的客户端和服务器之间的流量。
  • 您在保护谁的数据?如果没有更具体的信息,您将无法获得好的答案。在问题中添加矿石信息。
  • 我添加了更多关于我的问题的描述。如果使用 TLS 加密,客户端和服务器之间的连接应该没问题。我的问题是如何在客户端解密任何密码并将其对所有用户或任何黑客隐藏,因为所有密码都将存储在客户端。

标签: android encryption


【解决方案1】:

嵌入密钥根本不是一个好主意,这是 snapchat 开发人员犯下的不可原谅的错误。在您的情况下,使用 TLS 连接可以解决问题,然后您可以通过该安全连接共享密钥,而无需暴露于进一步的过程。我创建了另一个基于非对称密钥的安全协议,用于在公共网络上共享密钥,而无需为 android 使用 TLS 协议。在这里你可以研究代码:

https://github.com/Spentas/securechat/tree/master/app/src/main/java/com/spentas/javad/securechat

如果你想使用,TLS 实现也包含在 websocket 包下的源代码中。

【讨论】:

  • 感谢TLS连接的建议。但是,我需要将这些加密信息存储在客户端,从服务器下载后,一切都应该脱机工作。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2015-10-29
  • 1970-01-01
  • 1970-01-01
  • 2022-11-10
  • 1970-01-01
  • 2016-03-22
  • 2020-01-10
相关资源
最近更新 更多