安全是有分量的

防ddos攻击_游戏高防服务器_精准

2022-01-14 02:10栏目:科技报

防ddos攻击_游戏高防服务器_精准

这是我第一篇关于安全密码散列的帖子的后续内容。我们现在关注的是安全性要求和设计选择,这将是即将到来的密码哈希竞赛(PHC)哈希方案设计者感兴趣的内容。本文的一些内容也将出现在我在PasswordsCon和Black Hat 2013的演讲中。

密码分析安全

密码功能的首要要求是安全性。尽管密码散列方案(PHS)不同于一般用途的加密散列函数,但它们确实符合加密函数的条件,vps防御ddos程序,因为它们保护机密,因此必须满足许多安全要求。

遵循PHC调用中所需的API函数,小灵通至少应输入

一个编码为可变位长p字符串的密码一种固定位长s

的salt,它应该产生一个h位的散列值。

理想情况下,phsh()应该表现为从{0,1}n+s到{0,1}h的随机函数。这意味着它不应该有任何特定的"结构",尤其是

发现碰撞需要大约2小时/2小时的H()评估查找随机h位值的前像需要对h()进行大约2小时的计算找到一个输入,使输出有一个特定的模式并不比一个"理想"函数(如Keccak或BLAKE2)容易;CICO问题

为设计者提供了这种模式的一个例子,这意味着密码和salt在PHS中的作用并不不同。因此,可以创建一个算法,将单个字符串作为输入,然后将该字符串设置为密码和salt的串联,并在两个字符串之间进行适当的域分隔,局域网ddos防御方法,对每个值进行无歧义编码;它必须足够长。到目前为止,128位散列已经足够了,因为安全性不仅由散列长度定义,而且主要由密码的分布来定义(密码的熵通常远低于128)。攻击者的工作就是定义一种尽可能接近真实分布的抽样方法。

泄漏恢复能力

添加特征通常意味着处理更多信息和执行更多操作,这反过来又增加了攻击面。例如,

如果支持任意长度的密码,则执行时间必须取决于密码的长度,而仅支持(比如)128字节密码的哈希可以构造为单个压缩函数,而不是迭代构造。如果使用大量内存进行不可预测的访问,即依赖于输入的访问(读取和写入),以尽量减少攻击者的投资回报,缓存计时攻击方法可能会泄漏密码信息。

在这两种情况下,监视执行时间的攻击者(例如共享同一台计算机的另一个无权限用户,或同一主机上的另一个VM)可能会获取密码信息,php怎么防御cc,特别是当他可以影响CPU和/或共享内存负载时。

缓解缓存定时攻击的一个简单对策是首先通过低内存单向转换传递密码,这样攻击者最多可以恢复该中间哈希上的信息。然而,如果哈希可以作为字典攻击的参考,这并不能真正解决问题。

正如PHC的FAQ中所解释的,内存"硬度"不仅取决于所需的总存储量,还取决于读取(加载)次数、写入(存储)次数、读取和写入的数据块大小,局域网内ddos防御,地址访问的顺序、地址的可预测性等。所有这些因素可以结合在一起,使攻击者受到的惩罚最大化,对防御者的影响最小化。

并行性

密码破解问题显然是令人尴尬的并行性,这意味着加速比与可用的内核数成线性关系。换言之,使用N个核使开裂的速度是使用单个核的N倍。如果防御者和攻击者使用相同的硬件,每个防御者有一个内核,每个攻击者有多个内核,那么可并行散列可以为攻击者提供一些折衷方案,但不能提供根本的好处:如果密码散列方案支持N路并行,然后,对于N个核心,攻击者可以每个实例使用一个核心,也可以每个实例使用N个核心,但只要PHS的评估使用的内存可以忽略不计,则总体吞吐量(以每单位时间的哈希表示)保持不变。

现在假设defender有多个可用核心(服务器CPU最多可以有8个或16个物理核心),想象两种密码散列方案:

算法A不能并行化,服务器使用8核CPU的一个内核散列密码(因为使用2核、3核或更多核不会加快散列速度)。算法B可以并行化,这样4核的速度是单核的4倍。服务器利用Haswell CPU的所有4个内核对密码进行哈希运算,其速度与算法a一样快,但每单位时间进行的操作要多得多。

让我们看看攻击者:使用N个内核,他们并行计算算法a的N个实例,但在相同的时间内只计算算法B的N/4个实例。

当然现实情况更为复杂:攻击者与防御者使用的"核心"不同;将繁忙服务器的几个核心分配给密码散列并不一定是一个好主意;算法的并行评估可能需要对共享资源的并发访问;不同的应用有不同的要求。例如低散列率的应用程序,如全磁盘加密或私钥保护,通常可以使用多个核心。

极端方法

我们总结出一些超越"速度慢"和"使用大RAM"的想法。

可编程散列

这是我和Samuel Neves讨论过的想法,但其他人可能以前就想到过。