首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >这种技术是否是一种安全的方法来确认用户的银行帐户详细信息,而不要求他们提供他们的凭据?

这种技术是否是一种安全的方法来确认用户的银行帐户详细信息,而不要求他们提供他们的凭据?
EN

Security用户
提问于 2017-12-08 18:48:46
回答 2查看 267关注 0票数 2

有许多金融服务可以通过询问用户的用户名和密码并代表他们登录来验证用户的银行帐户。一些例子是CoinbaseTransferWise

我已经想出了一种方法,让用户可以在不向第三方提供用户名和密码的情况下验证他们的银行账户细节。我想知道以下协议是否存在安全漏洞:

  • 第三方服务启动记录所有通信量的代理服务器。
  • 用户通过代理建立TLS连接,并验证银行的SSL证书。
  • 用户使用他们的用户名和密码登录,并保存他们的会话cookie。
  • 用户通过代理启动一个新的TLS连接,该代理使用不同的主秘密。
  • 用户使用当前会话cookie通过代理获取帐户详细信息。
  • 用户签出并使会话cookie无效。
  • 用户将最终的TLS连接的主秘密发送给第三方服务。
  • 第三方服务现在能够解密HTML并验证用户的详细信息,例如他们的全名、电话号码和帐户余额。

备注:

  • 如果银行允许从多个IP地址使用会话cookie,用户只需在自己的机器上登录和退出即可。
  • 用户将在自己的机器上查看代理页面,因此这也适用于双因素身份验证。
  • 一些在线银行网站可能无法在用户登录时正确地使会话cookie失效。然而,大多数(如果不是全部)银行在10-15分钟的不活动之后就会终止一个会话,因此用户只需等待会话过期才能泄露私钥。
  • 页面HTML可能会泄漏更多的数据,而不是必要的。对于不同的银行来说,解决这个问题的方法是多种多样的。许多银行为他们的移动应用程序提供了一个API,所以您只需代理一些特定的API请求,只需透露必要的信息。
  • 与其发送私钥并允许第三方解密所有的HTML和cookie,还可以创建一个加密的布尔电路,为记录的TLS会话提供零知识证明。第三方可以运行一个计算来验证TLS握手和证书,解密URL和HTML,然后检查是否存在某些字符串来验证用户的帐户详细信息。电路的结果要么是true,要么是false,第三方将无法发现有关加密会话的任何其他信息。或者,电路输出甚至可以是您的全名、电话号码和支票帐户余额的字符串。我将尝试使用利布斯纳克库来研究这种方法,因为这是一个非常吸引人的想法!

实现此功能的一种方法可能是创建一个基于WebKit的浏览器应用程序,用户可以下载和安装该应用程序。该应用程序可以在浏览器中设置一个协议处理程序,以便当用户单击像<verification scheme>://domain/path这样的URL时,应用程序就会打开。该应用程序适用于任何网站,但它也可以为不同的银行使用预先配置的食谱。

这也可以直接在Firefox和Chrome中实现,但这不太可能。还有更好的方法来做这件事。一些现代银行可以提供具有有限只读权限的OAuth令牌。银行甚至可以使用公钥密码体制来使用他们的私钥(可能是他们当前SSL证书的私钥)对您的帐户详细信息进行签名。

我认为上面描述的技术可能是有用的,因为它可以适用于任何网站(不仅仅是银行业务)。但是如果你能在这里发现任何安全问题请告诉我。我肯定我误解了TLS的一些地方,或者也许有一个更简单的方法来做到这一点。

EN

回答 2

Security用户

发布于 2017-12-08 20:12:05

我认为这一机制在理论上是可行的,前提是用户可以信任它的银行,即他们的站点是以某种方式设置的,这样就不会在“证明”会话中传输敏感信息。这至少意味着在验证会话中只包含与证明相关的信息,第三方不能使用HTTP会话id,并且没有进行TLS会话重用,即不使用相同的密钥来保护以前或之后的TLS会话。

这意味着,不仅用户需要特殊的软件来创建验证会话,而且银行也需要以一种安全的方式来支持这个证明。在我看来,这使得这个概念在实践中过于复杂和不可靠。

票数 1
EN

Security用户

发布于 2017-12-09 08:43:51

我看到了一个潜在的漏洞,尽管我不确定它是否真的可以被执行。风险不是在客户端,而是在第三方。事实上,我首先添加了一条评论,后来我删除了,因为我意识到我错了,这让我想到了这个漏洞。我删除的评论是,您不需要第三方代理,而是您可以作为用户自己注册TCP流量,然后将TCP流量的记录作为压缩文件发送给第三方,并将其与密钥建立握手一起发送,作为“上一次会话的证明”。但后来我意识到这不是证据,因为会话的实际内容是用对称密钥在TLS中加密的,所以,作为用户,您也可以随意修改它,因为您也拥有对称密钥。您也可以使用该密钥计算各种MAC。如果您的银行向您表示,您在会话期间逾期已久,您可以将其修改为帐户显示,并在您的帐户上显示500万美元。证书来自银行,协商的对称密钥是真实的,但是内容不仅可以由银行决定,也可以由您来决定。所以我删除了我的错误建议。

然而,我认为一个人可以通过代理来做同样的事情。如果您作为用户,在您的机器上设置了一个假的web套接字,而不是通过第三方代理与银行联系,您可以联系您的机器,该机器充当第二个代理,并将与银行联系,您可以在您自己的TLS会话上与该代理进行MITM攻击,因为您知道对称密钥,并按照您的意愿修改内容,就像在我删除的评论中一样。如果银行告诉您您已经过期了,您可以在代理中动态修改它,并显示500万美元的帐户余额,这是第三方将解密的TCP流。

当然,如果第三方注意,它可以看到你去的IP地址,不对应于银行的IP地址。但是它会有正确的证书和正确的密钥协商。

票数 0
EN
页面原文内容由Security提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://security.stackexchange.com/questions/175143

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档