4

我需要建立从我的 iPhone 应用程序到客户服务器的 HTTPS 2 路 SSL 连接。但是,我没有看到任何安全的方式将客户端证书传递给应用程序(它是一个电子银行应用程序,因此安全性确实是一个问题)。到目前为止,我发现应用程序能够访问证书的唯一方法是将其与应用程序本身预先捆绑在一起,或者公开一个可以从中获取它的 URL(带有 SSL 客户端证书的 iPhone 应用程序) .

问题是这两种方式都不能阻止某些第三方获取证书,如果将其作为风险接受,则无需 2-way SSL(因为任何人都可以拥有客户端证书)。

整个安全协议应如下所示:
- HTTPS 2-way SSL 验证应用程序
- 基于 OTP(令牌)的用户注册(在此步骤生成客户端密钥对)
- SOAP / WSS XML 签名(由密钥签名的请求之前生成的)

关于如何建立第一层安全(HTTPS)的任何想法?

4

2 回答 2

2

好的,所以回答我自己的问题......

事实证明,证券没有固定的衡量标准。只要制动系统的成本大大高于这样做的奖励,就可以满足安全要求。

在我的情况下,我们谈论的是电子银行系统,但每月限额较低(几千美元)。正如我在问题中提到的那样,HTTPS 之上还有另一层安全层,它将具有 WSS XML 签名。注册用户和接受他的公钥的过程也分几个步骤完成。在第一步中,用户将他的电话号码与以某种方式从我的客户那里检索到的鳕鱼一起发送。然后将带有确认码的 SMS 发送给用户。用户将确认代码输入到 OTP 计算器中,该计算器将生成用于识别用户的 OTP 代码。然后将公钥与 OTP 代码一起发送到服务器。从这里开始,每个请求都将由之前发送到服务器的公钥的私有对应方签名。

So the biggest weakness for the whole process is that of someone reverse engineers the application and retrieves the client certificate used for the SLL. The only problem arising from this is that someone might observe users' transactions. However in order for someone to make a transaction he would need the user's private key, which is generated, encrypted and stored into the keychain. And the price for braking this security level is VERY HIGH.

We will additionally think on how to protect the users' data on a higher level (e.g. using WSS Encryption), but for the start I thing we are good with the current solution.

any opinion ?

regards

于 2010-05-07T11:58:05.767 回答
-2

https 并没有真正以这种方式工作。简而言之,您连接到一个安全服务器,证书由知名机构签署。

如果您为此使用 Apples (iPhone) 类,它们将只接受“好”证书。好的,我的意思是苹果认为可以接受的。如果您不使用它们(SDK 中有替代方案),您将无法连接(除非您拥有“企业”开发人员许可证 - 但我不能这样说100% 确定,因为我没有看足够的许可证来确定)

要继续,请使用您的 https 连接到您正确签名的网站,然后使用内置用户名/密码进行某种登录,或根据 iPhone 的唯一 ID(例如)进行质询/响应,并使用该连接交换密钥。

请注意,这意味着您的应用程序必须在(每个连接/每 X 个连接/每个月/应用程序指定的时间间隔)查询新证书以使它们保持最新。然后,您可以使用这些证书连接到更安全的服务器。

[编辑]

检查这篇文章 - 可能有更多关于你要求做什么的信息

[/编辑]

[编辑2]

请注意,请求是 iphone,而不是 OSX - 应用商店批准是一个问题

[/编辑2]

于 2010-05-05T16:57:01.523 回答