问题在于,这两种方法都无法阻止第三方获取证书,如果将其视为风险可接受,则消除了进行双向SSL的必要性(因为任何人都可以拥有客户端证书)。
整个安全协议应该如下所示:
- HTTPS 2-way SSL用于验证应用程序
- 基于OTP(令牌)的用户注册(在此步骤生成客户端密钥对)
- SOAP / WSS XML-Signature(使用早期生成的密钥签名请求)
您有关于如何建立第一层安全性(HTTPS)的任何想法吗?
好的,为了回答我的问题...
事实证明,安全性没有固定的度量标准。只要破坏系统的代价显著高于做这件事情所能得到的奖励,就可以满足安全要求。
在我的情况下,我们谈论的是电子银行系统,但月限额相对较低(几千美元)。正如我在问题中提到的,HTTPS之上将有另一层安全性,其中包括WSS XML签名。注册用户和接受其公钥的过程也是分步进行的。在第一步中,用户发送他的电话号码以及从我的客户端某处检索的代码。然后向用户发送带有确认代码的短信。用户将确认代码输入OTP计算器,该计算器会产生OTP代码,用于识别用户。然后将公钥与OTP代码一起发送到服务器。从此以后,每个请求都将由先前发送到服务器的公钥的私有对应项签名。
因此,整个过程最大的弱点是如果有人反向工程应用程序并检索用于SLL的客户端证书。唯一可能引起的问题是某人可能观察用户的交易。但是,为了使某人进行交易,他需要用户的私钥,该私钥已生成、加密并存储在钥匙链中。而破解此安全级别的代价非常高。
我们还将考虑如何在更高的级别上保护用户数据(例如使用WSS加密),但是对于开始,我认为我们的当前解决方案很好。
您有任何意见吗?
问候
https并不是这样工作的。简而言之,您连接到由知名机构签名证书的安全服务器。
如果您使用苹果(iPhone)的类来实现此目的,则只会接受'好'的证书。好指的是苹果认为可以接受的证书。如果您不使用它们(在SDK中有替代方案),则将无法连接(除非在拥有“企业”开发者许可证的情况下,但我无法百分之百肯定,因为我没有足够查看该许可证)
要继续,请使用正确签名的网站上的https连接,然后建立某种带有内置用户名/密码的登录或基于iPhone等设备的唯一ID的挑战/响应,并使用该连接交换密钥。
请注意,这意味着您的应用程序必须查询新的证书,以保持它们最新(每次连接/每隔X次连接/每月/应用程序指定的时间间隔)。然后,您可以使用这些证书连接到更安全的服务器。
[编辑]
检查this的帖子-可能包含您要求做的更多信息
【编辑】
【第二次编辑】
请注意,请求的是iPhone应用程序,不是OSX - 应用商店的批准是一个问题。
【编辑结束】