首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >这个假设的系统安全吗?

这个假设的系统安全吗?
EN

Security用户
提问于 2016-01-06 23:30:26
回答 3查看 163关注 0票数 -3

我想建立一个简单的系统,其中是否有明显的安全漏洞?这种哈希机制在没有任何其他加密层的情况下会相当安全吗?

我有一个简单的模块,人们可以在其中输入代码,还有一个服务器,它保存允许的代码列表(只使用一次,添加新代码,但不重复使用)。假设模块和服务器之间的wifi连接不安全。

下面是验证代码的步骤:

  • 模块向服务器发送代码的sha1散列。
  • (如果有效的话)服务器以代码的sha1哈希+硬编码盐(模块所知,但黑客所不知道)进行响应。
  • 模块可以验证这一点,并接受或拒绝用户

(只使用散列的原因是黑客不可能将允许/拒绝消息直接发送到模块。盐被使用,这样中间的人就不能输入随机的代码,然后传送他们自己的sha1散列)

我避免了SSL的复杂性,因为该模块将在一个非常简单的没有操作系统的嵌入式系统上运行。

更新后的示例更有意义:允许UPS快递员扫描包裹的跟踪数量以解锁门,这样他们就可以放下包裹。只有已知的追踪号码是允许的,这样劫匪就不能简单地扫描一个不相关的包来闯入。

Notes

  • 我想“密码”不是正确的词,它只是一次使用代码。是的,盐是硬编码的,我希望避免加密。发送回代码的原因是,不管黑客向模块发送了什么内容,除非他知道盐,否则就不可能进行身份验证。
  • 至于认证发生在哪里:服务器将知道代码是否有效,但模块只接受salt +代码的哈希,这样模块就知道答案来自服务器,而不是黑客,而且黑客也找不到salt。
EN

回答 3

Security用户

回答已采纳

发布于 2016-01-07 04:10:05

如果攻击者能够在中间攻击中执行一个人(如果wifi连接不安全,他可以执行此操作),那么它就不安全:

如果我以您的例子为例:当UPS信使扫描包裹时,攻击者可以使用散列删除消息,但保留哈希以供以后使用。模块将拒绝UPS信使的访问,他可能会简单地离开。现在攻击者可以到房子里,用散列发送信息来解锁门。

但这只是你的系统的一个明显的漏洞,这应该告诉你为什么不应该使用你自己的密码。

(我建议你阅读这个答案:https://security.stackexchange.com/a/18198/91783 )

如果您的系统不可能使用TLS/SSL,我认为您应该使用经过良好测试的现有身份验证协议的实现。代码就像密码一样,它是验证服务器上用户的令牌。

看看维基百科的协议列表:https://en.wikipedia.org/wiki/Authentication_协议

票数 1
EN

Security用户

发布于 2016-01-06 23:43:42

在您的描述中,我没有注意到您正在加密您的通信量。你要把你的哈希送出去吗?如果是这样的话,我在想,是什么阻止窃听者拦截哈希并重用它呢?

另一个问题是,您如何尝试保留“不断更改”的允许密码列表?

票数 0
EN

Security用户

发布于 2016-01-06 23:39:14

第一个漏洞是使用SHA1哈希。与现代计算能力相比,基于SHA1哈希的碰撞的概率相对较高。请参阅SHA1 1-碰撞

这意味着流氓党可以在铁丝网上捕捉到这些哈希,然后用蛮力强迫他们。更糟糕的是,如果攻击者进入您的服务器并获得允许的有限集,则会显着地缩小问题。

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

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

复制
相关文章

相似问题

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