Java Android应用程序中的Amazon访问凭据

Java Android应用程序中的Amazon访问凭据,java,android,security,amazon-web-services,Java,Android,Security,Amazon Web Services,亚马逊云服务(AWS)提供了现成的库,可以直接从Android应用程序调用SDB、S3、SNS等。这使得不熟悉web服务和web应用程序的移动开发人员很容易创建完全可伸缩的基于云的应用程序。 我们在这些API调用中提供Amazon访问凭据,以连接到我们的云帐户;我的问题是: 我如何在应用程序中有效地使用密钥轮换,因为我将分发应用程序,一旦密钥的更改可能意味着现有用户的周期中断 在代码中硬编码Amazon访问凭证(作为字段常量等)会使其容易被提取吗?通过反编译等 关于: 在代码中硬编码Amazon

亚马逊云服务(AWS)提供了现成的库,可以直接从Android应用程序调用SDB、S3、SNS等。这使得不熟悉web服务和web应用程序的移动开发人员很容易创建完全可伸缩的基于云的应用程序。 我们在这些API调用中提供Amazon访问凭据,以连接到我们的云帐户;我的问题是:

  • 我如何在应用程序中有效地使用密钥轮换,因为我将分发应用程序,一旦密钥的更改可能意味着现有用户的周期中断
  • 在代码中硬编码Amazon访问凭证(作为字段常量等)会使其容易被提取吗?通过反编译等
  • 关于:

    在代码中硬编码Amazon访问凭证(作为字段常量等)会使其容易被提取吗?通过反编译等

    是的,通过在二进制文件中查找字符串和模式。也进行反编译,但这通常不是必需的

    第一个问题是,你试图防范什么样的威胁?政府?付费黑客?或者你只是想让除通过应用程序之外的访问变得不容易

    • 将密钥的访问权限限制为仅访问应用程序所需的数据
    • 将应用程序中的密钥分几块存储。以某种方式修改它们(如ROT47),然后在发送到服务时重新组合
    • 不要将所有关键信息都放在应用程序中。需要使用其他安全设备,如
    • 安装监控以检测可能表示从应用程序外部访问的异常访问模式

    我与我们地区的亚马逊倡导者交谈,他告诉我,亚马逊客户端库不是专门为这个目的设计的

    • 它可以用于内部应用程序(未发布),如客户端演示应用程序
    • 如果要将凭据与要在公开市场上发布的应用程序捆绑(不推荐),请使用并创建一个访问受限的单独凭据
    • 如果你正在构建一个像这样的应用程序,你可能需要设置一个web服务器来代理你对Amazon的调用(实际上使客户端库变得无用)

    显然,我不是很信服。我认为整个客户端库到Amazon通信(绕过web服务器的需要)对于移动开发者来说可能是一个巨大的优势。

    这里的Amazon访问密钥就像是应用程序的访问登录,因为没有运行服务器/web服务,所有业务逻辑都是通过应用程序进行的,要点1和3与此无关。至于威胁,我指的是黑客。我现在也有同样的想法。两年后,你有什么建议吗?@uval我有机会和美国焊接学会的顶尖人士(包括沃纳·沃格尔)谈谈这件事。答案是Android SDK不是他们自己推荐的。它不适合做严肃的工作!所以我知道你最终被说服放弃这个想法。这确实是一个很大的优势。谢谢{感谢StackOverflow使这种交互成为可能!}