0

我面临的问题是一个有趣的问题,我的安全知识很强,但我的理解很薄弱。也就是说,我理解理论,但在这方面几乎没有实际应用。我已经存储了密码,使用盐传输它们,验证了它们的哈希值等。我在这里的需求相似但具体。

我有一个应用程序,其他外部应用程序可能会通过 ContentProvider URI “挂钩”。任何人都可以开发外部应用程序,因此我无法控制它们。但是,我想限制对订阅者的某些访问。为了方便这一点,每个“订阅”的应用程序都将有一个注册到其包名称的密钥。ContentProvider 然后需要验证此密钥是否有效。

我的问题是:由于它是通过 URI 传递的,因此很容易拦截传输中的密钥。此外,我的订阅者需要一种无需连接到安全服务器即可存储自己的密钥的方法。当然,他们不能将密钥作为文字存储在他们的应用程序中,因为这很容易造成漏洞。我试图提供尽可能多的解决方案,而不必“信任”这些其他应用程序的安全性。

那么,我们如何在我的数据库和他们的外部应用程序中存储一个密钥,并允许他们将它发送给我以进行专门验证的查询?我认为我理解如何做到这一点的问题是持久存储方面以及它如何影响模型。也就是说,对于密码模型,密码是输入的,通常不存储。

模糊逻辑

4

1 回答 1

1

在加密的质询/响应中处理密钥。

客户端请求使用预先确定的每个应用程序公钥加密的质询值。如果客户端随后将正确的值返回给使用客户端特定服务器的公钥加密的服务器,则握手成功。

使用每个应用程序的私钥/公钥和挑战值指南之类的东西,很难复制。

除非最初注册应用程序开发人员,否则密钥永远不会易手。

于 2011-10-20T20:21:13.027 回答