首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如果HTTPS可由第三方解密,则安全PIN验证

如果HTTPS可由第三方解密,则安全PIN验证
EN

Security用户
提问于 2016-06-30 11:38:24
回答 1查看 142关注 0票数 -1

我正在开发一个系统,移动应用程序可以通过HTTPS与服务器进行通信。通信由两个阶段组成:首先,应用程序在服务器上“注册”:在其他内容中,用户选择自己的PIN并将其发送到服务器并存储在那里。现在让我们假设这个阶段是安全的,所有的信息都已经安全地交换了,并且没有泄露任何信息。

通信的第二阶段在登记后开始。App向服务器发送请求,在每个请求中,用户都被请求输入PIN,该PIN被添加到请求中,以便对用户进行身份验证(这实际上只是验证步骤之一,因为我们还使用了client身份验证)。我的问题如下:如果攻击者能够解密我们的HTTPS通信,是否有可能防止该PIN被暴露?大多数解决方案似乎都失败了,因为攻击者能够枚举PIN,因为它们通常有4-6个字符长(例如,通过PIN的散列会因此失败)。

根据需要,我们可以在注册阶段交换一些额外的数据。

EN

回答 1

Security用户

回答已采纳

发布于 2016-06-30 11:57:30

除了TLS提供的加密之外,您还可以实现自己的加密层。既然您说“我们可以在注册阶段交换一些额外的数据”,我认为最简单的解决方案是在注册期间共享对称加密密钥(例如AES),然后加密所有的进一步通信。(第四章将防止暴力行为,即使可能的明文数量有限。)

请注意,当PIN和密钥被交换时,这完全取决于原始对分的安全性。如果失败了,这个计划就失败了。另一种选择是将您的公钥硬编码到应用程序中。让应用程序生成一个随机对称密钥,用您的公钥对其进行非对称加密,并将其发送到服务器。这可以只做一次,或者每个会话一次。但现在我们开始建立一个完整的密码协议..。

这将是一些工作,也许不值得付出努力。最主要的威胁可能不是TLS破坏,而是用户电话被恶意软件感染或服务器被黑客攻击。

相反,我建议您正确处理TLS,这样攻击者一开始就无法解密它。在移动应用程序中,您可以同时控制客户端和服务器,这比web应用要容易得多。我建议采取以下步骤:

  • 选择一套小的安全密码套装,只允许客户机和服务器接受这些密码。
  • 只允许TLS 1.2 (或更高)
  • 实现公钥钉扎
票数 1
EN
页面原文内容由Security提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

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

复制
相关文章

相似问题

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