如果私钥被盗,我使用第三方API的移动应用程序会怎么做?

时间:2013-03-07 01:48:56

标签: android security rest oauth oauth-2.0

我的移动应用使用第三方API访问某些资源。它有一个公钥和一把私钥。对于每个请求,我使用私钥对某些特定数据进行一些哈希计算,并将结果发送到服务器。服务器将使用我的私钥验证结果,以确保请求有效。私钥不会通过网络发送。

但是,私钥应保存在客户端中。我认为通过一些逆向工程的其他人找到它并不困难。这是一种更安全的私钥使用方式吗?

如果密钥被盗,我可以更改私钥。但原来的应用程序不能再使用了。这是解决这个问题的更好方法吗?

(我设置自己的代理服务器可以解决部分问题。有没有更好的方法?)

2 个答案:

答案 0 :(得分:5)

我建议将第三方API访问权限卸载到您控制的REST服务。从那时起,您提供的私有API访问密钥将被安全地锁定在您拥有的计算机上,并且不太可能被泄露。

然后,您只需更新您的移动应用程序,即可在定义明确的端口和地址与您的服务器联系(可选择执行某种您想要处理流量的验证),然后根据需要转发该请求。这也允许您非常精细地控制您希望向最终用户公开的第三方API的特定部分。

分发用于第三方API访问的私钥可能是一个非常糟糕的想法(可能违反您的服务条款),因为恶意客户端可能会通过整理服务来引发许多问题。

答案 1 :(得分:1)

我不是很熟悉这个东西,但你不应该使用Public键在客户端编码你的东西而不是使用私钥吗?

这就是拥有公钥/私钥组合的要点:每个人都可以免费使用公钥进行编码,但只有编码后,才能使用私钥对消息进行解码。它安全地存放在受到良好保护的服务器上。