每个SDK中的应用程序密钥和秘密密钥的作用是什么?

9

我正在构建一个SDK,其中需要从将集成我的Android SDK的应用程序中获取应用程序ID和应用程序秘密密钥。

我看到每个SDK都在使用这个概念的应用程序ID和秘密密钥。 我不知道这有什么用? 这如何使系统更加安全?

有人可以帮我解决这个问题吗?

2个回答

8

App ID和密钥是两个不同的东西。让我分别解释一下,然后把它们联系起来。

App ID

App ID只是一个应用程序的唯一标识符。这是为了避免在应用商店和您的设备上出现重叠。如果两个应用具有相同的App ID,则可以将一个安装在另一个之上,从而有效地擦除旧应用程序,并可能劫持您的数据。 App ID只是确保安全性的第一步。为了确保绝对没有上述情况发生的方法,我们使用密钥。

密钥

密钥是一种安全实现,通常用于非对称加密。让我们看看维基百科关于非对称加密的定义:

公钥密码学,也称为非对称密码学,是一类基于需要两个单独密钥(其中一个是秘密或私有的,另一个是公共的)的算法的加密协议。尽管不同,这个密钥对的两个部分在数学上是相关联的。

密钥是密钥对的一部分,另一部分是公钥。公钥如其名称所示,是公开可用的。秘密密钥理想情况下仅应对一个人可用。

密钥对用于打开锁,例如“解锁”应用程序。每个应用程序都有一个唯一的非对称锁。非对称锁要么用秘密密钥锁定,用公钥打开,要么反之。其目的是识别。只有一个人可以拥有秘密密钥。因此,由此人创建的任何应用程序,我们知道肯定来自该人而不是某些黑客/可疑来源。这就是为什么密钥很重要。

因此,这两个概念共同努力带给您更好的安全性。当您使用API时,有时不需要密钥,只需要App ID,以便您正在使用API的主要服务知道您使用的确切产品。


但是任何人都可以在反编译apk之后获取秘钥(私钥),那么它怎么能够保证安全呢? - N Sharma
@Williams 有两件事。1. 你是用什么程序来反编译apk并获取秘钥的?2. 我暂时会保留这一点 ;) - bunbun
人们使用像 https://github.com/pxb1988/dex2jar 这样的工具,可以从源代码中看到你的秘钥。 - N Sharma
1
@Williams,那是由于糟糕的编程,与秘密密钥的概念完全无关。如果您将其留在应用程序中,您应该以一种掩盖此类信息的方式进行编码。 - bunbun
2
@bernlim 谢谢你的回答,但仍然不是我在问的问题。请阅读我上面的评论,你不能强迫任何人接受答案,直到提问者满意为止。我非常了解 stackoverflow 的工作原理,我已经在这个网络上活跃了3年。 - N Sharma
显示剩余9条评论

3

基本上它被用于授权。这反过来使SDK创建者对其用户拥有更多的控制。我可以想到一些原因,为什么一个SDK需要授权:

  • 防止/阻止SDK可能连接到的服务器上的垃圾邮件攻击
  • 限制SDK的使用
  • 跟踪使用情况以进行统计(例如使用频率)

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接