使用AES密钥安全工作(Android服务器)

ejk8hzay  于 2023-04-10  发布在  Android
关注(0)|答案(2)|浏览(109)

从Android -〉我加密我发送到服务器的文件,稍后我再次收到这些相同的文件,我必须能够解密它们。
从服务器-〉我保存这些加密的文件,以返回他们在必要时,也解密他们。
加密/解密的AES密钥必须被Android和服务器知道。目前我的AES和IV密钥是不安全的,并且是在代码中编写的。
请记住,如果我上传一个加密文件到服务器,我想下载它2个月后,我必须知道它被加密的密码。服务器不加密,只返回它收到的加密文件或解密它们用于其他操作。
我曾经想过在Android中生成AES密钥,然后Android通过RSA安全地将其发送到服务器。这是安全的吗?所以每个用户都有自己的AES密码用于所有文件,并且只会将其与RSA一起发送到服务器一次。
我如何才能做到这一点,以获得更多的安全性?

06odsfpq

06odsfpq1#

你真的需要加密数据吗?
https://www.schneier.com/blog/archives/2015/06/why_we_encrypt.html
正如您的问题所暗示的,如果您确实有*保密性*要求,那么您将继承其他挑战。其中最著名的是密钥分发、密钥轮换密钥协商
如果你决定,你需要加密数据,双方都需要密钥,我会看看...

  • 密钥协商协议;Diffie–Hellman。这为移动的应用程序带来了显著的好处;在Android/iOS环境中,当人们可以使用相对简单的方法来击败TLS或证书固定保护时,这特别有用。
  • 从代码中删除硬编码的密钥。首先,您对每个正在使用的应用程序都有一个密钥。您将如何轮换此密钥?如果您继续使用此路线,您可以考虑进一步加强。您可以找到在静态时加密字符串的库,以加强静态代码分析。尽管如此,这种保护对调试器搜索apk中的特定模式没有帮助。
  • 硬件支持的安全性。如果你只关心较新的Android设备,我会一直尝试使用硬件支持的加密来生成密钥或存储密钥。https://developer.android.com/training/articles/keystore。它具有密钥生成(https://developer.android.com/reference/javax/crypto/KeyGenerator)。

这里还有另一个稍微相关的Android加密问题:双重加密
PS -你可能想把这个贴在:https://security.stackexchange.com/

vwhgwdsa

vwhgwdsa2#

  • 如果你能在服务器端进行加密和解密,那就这么做吧。
  • 始终使用SSL在实体之间传输数据。
  • 尝试为每个会话使用唯一的密钥。
  • IV可以简单地发送。
  • 使用安全随机生成IV和密钥。
  • 不要使用ECB模式。
  • 使用标准填充模式。
  • 尝试密钥大小为256或更高的AES。
  • 当你发送加密文件到服务器时,尝试发送密钥并将它们存储在服务器端。你可以稍后获得密钥和加密文本。
  • 您可以使用PBKDF2等密钥推导算法从用户输入中生成手机上的密钥。这种方法不需要保存密码,但这需要每次从用户输入执行PBKDF2。
  • 永远不要试图通过模糊来实现安全性。

安全性是一步一步的方法,每一步都取决于您的数据的重要性。

相关问题