gpt4 book ai didi

android - 从移动应用程序使用 AWS(特别是 S3)的首选方式是什么?

转载 作者:塔克拉玛干 更新时间:2023-11-02 09:28:23 27 4
gpt4 key购买 nike

直接在应用程序代码中添加 AWS 访问 key 和 key 绝对不是一个好方法,主要是因为应用程序驻留在用户设备上(与服务器端代码不同),并且可以通过逆向工程来获取凭据,这可以然后被滥用。

虽然我到处都能找到这些信息,但我找不到解决这个问题的明确方法。我有哪些选择?我阅读了有关用于临时凭证的 token 自动售货机架构的信息,但我不相信它会更好。如果我可以对 key 进行逆向工程,那么我就可以对请求临时凭证的代码进行逆向工程。一旦我有了一组访问 S3 的临时凭据,我就好像拥有了 key 一样好。我可以一次又一次地请求临时凭证,即使它们很快就会过期。总而言之,如果一个应用程序可以做某事,我也可以像恶意用户一样做。如果说有什么不同的话,那就是 TVM 在管理方面可以做得更好(轮换凭据,以及在发生违规时更改 key 等)。请注意,我们可以对 key 设置相同的访问限制,就像我们计划在 TVM 临时凭证的情况下所做的那样。

此外,如果亚马逊不希望人们直接在应用程序中使用 key ,他们为什么不在他们的 SDK 中阻止它,并强制执行 TVM 或正确的解决方案。如果你留下一条路,人们就会使用它。我读了几篇这样的文章,想知道为什么?:http://blog.rajbala.com/post/81038397871/amazon-is-downloading-apps-from-google-play-and

我主要是web出身,所以对这个的理解可能有点瑕疵。请帮助我了解这是否更好,以及是否有针对此问题的完美(或可能是好的)解决方案。

PS:有没有TVM的rails实现?

最佳答案

在 App 代码中嵌入 S3 key 是非常危险的。任何人都可以轻松地从您的应用程序代码中获取该 key (不需要逆向工程或高技能),即使它是加密存储的,它仍然会受到损害,只是有人需要更加努力(取决于您如何加密)。

我希望您了解使用临时凭据访问 Amazon(S3 等)资源的优势(主要是安全性 + 其他一些,例如没有应用程序更新等)。我认为您对从 TVM 获取临时凭证的过程以及这比在代码中嵌入 key 更安全的过程感到更加困惑。

每个使用 TVM 的客户端首先需要向您托管的 TVM 服务器实现注册。应用程序(使用 TVM 客户端)和 TVM 服务器之间的通信是通过 SSL 进行的。

首先,应用通过提供 UUID 和 key 向 TVM 注册。请注意, key 未嵌入应用程序代码(我认为这是造成您混淆的主要原因),而是在注册时随机生成(使用 SecRandomCopyBytes 生成加密安全随机字节数组)(和十六进制编码) ).

一旦设备成功注册到 TVM,客户端 TVM 就会将生成的 UDID 和 key 存储在一个名为 iOS 的 Keychain 和 Android 的 Shared Preferences 的存储中。 iOS 中的钥匙串(keychain)是 iOS 提供的共享存储,用于安全(加密)存储信息(主要是 key 、密码等)。

注册和 UDID/Secret Key 存储后,App 可以通过发送 UDID、加密签名和时间戳从 TVM 获取 token 。加密签名是 HMAC hash使用 key 从时间戳生成。 TVM 可以使用 UDID 查找 key 并使用它来验证签名。 TVM 然后通过发回临时凭证来响应,这些凭证使用 key 加密(使用 AES )。应用程序使用 key 解密临时凭证,然后可以使用它们访问临时凭证获得授权的任何 AWS 服务。最终,这些临时凭证的到期时间将到达,此时应用程序可以根据需要获取新的临时凭证。

关于android - 从移动应用程序使用 AWS(特别是 S3)的首选方式是什么?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22762729/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com