2013-08-16 35 views
0

我有一个移动应用程序和一个服务器。移动应用程序通过SSL通过Web服务框架与服务器进行通信。使用数字签名的公用私钥

移动应用程序允许客户支付交易费用。服务器通过用户名,密码,设备ID和数字签名在每次Web服务呼叫中验证移动应用程序。

设备ID确保移动帐户正在从用于创建帐户的设备访问。因此,即使他知道移动账户的用户名和密码,黑客也需要物理访问智能手机。

数字签名是使用在移动应用程序内硬编码的私钥计算的。从移动应用程序发送的每条消息都伴随有使用此私钥计算的数字签名。这确保了消息来自移动应用程序,并且消息的内容在传输过程中未被更改。

如果发现此私钥会导致什么后果?黑客是否能够修改通过SSL传输的信息,并仍然使用此私钥重新计算有效的数字签名?如果移动应用程序生成一个公钥 - 私钥对并将公钥发送到服务器,会不会更好?或者这会不必要?非常感谢。

+4

这个问题似乎是题外话题,因为它是关于一个安全方案,而不是编程本身。尝试security.stackexchange.com。 –

回答

1

如果黑客无限制地访问设备,那么黑客总是可以伪造他的账户从他的电话到你的服务器的请求。

但是,如果所有电话共享相同的密钥进行签名,黑客也可以做的一件事是假如他知道另一个电话的设备ID,则他无法访问另一部电话的请求。

解决此问题的简单方法是每个电话都有它自己的密钥,用于在安装消息时生成的身份验证。

你可能已经在做这件事,但你没有真正地说你的问题。

+0

谢谢你的回答。如果我关闭WSDL文档协议,您是否认为第二段中描述的场景可以发生?如果WDSL文档协议处于关闭状态,则新应用程序将无法发现Web服务。但是,编译的应用程序仍然可以使用它。 – Matthew

+0

或者黑客有可能修改移动应用程序并硬编码另一个设备ID? – Matthew

+0

@Matthew禁用文档不会阻止它,黑客只需查看应用中的代码即可了解哪些端点可用。对于你的第二个问题,我假定设备ID是一段“公开”的信息,黑客可以在不访问电话的情况下获得另一部电话的信息。这就是为什么每个设备都需要一个单独的唯一密钥进行签名的原因,因此黑客能够知道密钥的唯一途径是他需要物理访问设备,正如我所说的,没有办法阻止黑客伪造出现的消息来自他有权访问的设备。 –