我的移动应用程序使用 3rd 方 API 来访问一些资源。它有一个公钥和一个私钥。对于每个请求,我使用私钥对一些特定数据进行一些哈希计算,并将结果发送到服务器。服务器将使用我的私钥验证结果,以确保请求有效。私钥不会通过网络发送。
但是,私钥应该保存在客户端中。我认为其他人通过一些逆向工程找到它并不是一件难事。使用私钥是否更安全?
如果密钥被盗,我可以更改私钥。但是原来的应用程序不能再使用了。这是解决这个问题的更好方法吗?
(我设置了自己的代理服务器可以解决部分问题。有没有更好的方法?)
我建议将第 3 方 API 访问卸载到您控制的 REST 服务。从那时起,您获得的私有 API 访问密钥被安全地锁定在您拥有的机器上,并且不太可能被泄露。
然后,您只需更新您的移动应用程序以通过明确定义的端口和地址联系您的服务器(可选地进行某种您想要处理流量的验证),然后根据需要转发该请求。这还允许您非常精细地控制您希望向最终用户公开的 3rd 方 API 的哪些特定部分。
分发用于 3rd 方 API 访问的私钥可能是一个非常糟糕的主意(并且可能违反您的服务条款),因为恶意客户端可能会通过胡乱乱搞服务而导致很多问题。
我对这件事不是很熟悉,但你不应该使用公钥在客户端编码你的东西而不是使用私钥吗?
这就是拥有公钥/私钥组合的意义:每个人都可以免费使用公钥来编码某些东西,但是一旦编码,消息只能使用私钥解码;它安全地存储在受保护良好的服务器上。