我想建立一个简单的系统,其中是否有明显的安全漏洞?这种哈希机制在没有任何其他加密层的情况下会相当安全吗?
我有一个简单的模块,人们可以在其中输入代码,还有一个服务器,它保存允许的代码列表(只使用一次,添加新代码,但不重复使用)。假设模块和服务器之间的wifi连接不安全。
下面是验证代码的步骤:
(只使用散列的原因是黑客不可能将允许/拒绝消息直接发送到模块。盐被使用,这样中间的人就不能输入随机的代码,然后传送他们自己的sha1散列)
我避免了SSL的复杂性,因为该模块将在一个非常简单的没有操作系统的嵌入式系统上运行。
更新后的示例更有意义:允许UPS快递员扫描包裹的跟踪数量以解锁门,这样他们就可以放下包裹。只有已知的追踪号码是允许的,这样劫匪就不能简单地扫描一个不相关的包来闯入。
发布于 2016-01-07 04:10:05
如果攻击者能够在中间攻击中执行一个人(如果wifi连接不安全,他可以执行此操作),那么它就不安全:
如果我以您的例子为例:当UPS信使扫描包裹时,攻击者可以使用散列删除消息,但保留哈希以供以后使用。模块将拒绝UPS信使的访问,他可能会简单地离开。现在攻击者可以到房子里,用散列发送信息来解锁门。
但这只是你的系统的一个明显的漏洞,这应该告诉你为什么不应该使用你自己的密码。
(我建议你阅读这个答案:https://security.stackexchange.com/a/18198/91783 )
如果您的系统不可能使用TLS/SSL,我认为您应该使用经过良好测试的现有身份验证协议的实现。代码就像密码一样,它是验证服务器上用户的令牌。
看看维基百科的协议列表:https://en.wikipedia.org/wiki/Authentication_协议
发布于 2016-01-06 23:43:42
在您的描述中,我没有注意到您正在加密您的通信量。你要把你的哈希送出去吗?如果是这样的话,我在想,是什么阻止窃听者拦截哈希并重用它呢?
另一个问题是,您如何尝试保留“不断更改”的允许密码列表?
发布于 2016-01-06 23:39:14
第一个漏洞是使用SHA1哈希。与现代计算能力相比,基于SHA1哈希的碰撞的概率相对较高。请参阅SHA1 1-碰撞
这意味着流氓党可以在铁丝网上捕捉到这些哈希,然后用蛮力强迫他们。更糟糕的是,如果攻击者进入您的服务器并获得允许的有限集,则会显着地缩小问题。
https://security.stackexchange.com/questions/109921
复制相似问题