我认为这里的问题应该更多地从营销而不是安全角度来回答。
总的来说,我会说谷歌可能会使用一个相对简单的 API 密钥来提高可用性/可访问性,以便让广大开发人员更容易实现他们的服务(并从中赚钱)。
亚马逊可能更关心他们的 API 的使用,并使用不同的公钥和密钥系统。使用密钥确实增加了一定的保护,不能直接被认为是混淆安全(虽然技术上大多数安全基本上是一种混淆形式)。
要在评论中回答您的问题:
我真的很想知道为什么有人想让公共(有利可图的)服务难以使用。除了复杂性之外,使用密钥对 VS 进行签名还有什么其他好处?
对此,我想到了两个原因:
第一个可能是它给人一种安全感,这可能是公司选择更难实现的服务而不是易于实现的服务的原因。因为它被认为“更安全”。这提出了一个问题,如果安全功能实际上增加了额外的安全层,或者它们只是使事情变得不必要地复杂化。
第二个可能是它实际上可以增加额外的安全性。例如,当我们使用一项为每个请求收费的服务并且唯一的身份验证是一个密钥时。然后,如果密钥泄漏,任何人都可以使用我的密钥使用该 API,因此我将为此付费。额外安全层的一个示例是结合密钥的 IP 白名单。这至少缓解了任何人都可以滥用我的密钥的问题。SSL (HTTPS) 为服务器和客户端之间的通信添加了一层加密(可能减轻中间人攻击)。其他可能的功能或措施可以是 DNSSEC、自定义加密、时间框架、密钥/凭证到期等,所有这些都增加了实际的安全性以减轻不同的攻击。
对于供应商而言,它(通常与安全性一样)是可用性和安全性之间的持续考虑。他们会考虑以下事项:
- 在不偏执的情况下,我们可以而且应该走多远?
- 我们需要走多远来保护我们提供的服务(数据)?
- 如果我们走到这一步,开发人员是否仍然可以接受?