来自 DDOS 2022-05-17 23:00 的文章

ddos防御_301免备案_无限

ddos防御_301免备案_无限

如何在10天内将整个系统扫描速度提高6倍

在过去几周内,我们一直在调整avast!5发动机;在执行此操作时,我们发现其性能(即按需扫描的持续时间)存在一些隐藏的保留。avast 5的一个重要新功能是持久缓存,这一机制允许我们跳过对某些文件的重新扫描。特别地,这适用于我们内部白名单上的文件,以及由可信出版商进行数字签名的文件(我们维护一个相对较短的我们信任的软件发行商列表,并且我们认为由这些出版商生产和数字签名的任何文件都是安全的)。我们使用操作系统(称为"wintrust")提供的加密服务对数字签名进行实际验证。但我们知道这并不理想——特别是因为我们意识到,如果底层系统受到某种程度的破坏,任何这样的系统API都可能被恶意软件重定向/劫持,因此相信它并不是100%防弹的。出于这个原因,我们一直致力于自己的签名验证器实现。一开始看似简单的任务实际上是一个相当大的项目,有上万行代码,需要数月的工作。

这方面的工作大约在一个月前完成,经过一些额外的可靠性测试,作为4月19日定义更新(上周一)的一部分,我们最终向公众发布了它。有趣的是,这一变化不仅提高了可靠性(这也是我们决定首先实现它的原因),ddos攻击有办法防御,而且还显著提高了性能。在我们的测试系统(配备Intel Core i7 CPU、4GB RAM和Windows 7的Dell工作站)上,整个系统扫描时间的持续时间突然从39:35变为16:03,这意味着几乎2.5倍的加速!

我们还没有对造成这种情况的真正原因进行全面的分析,ddos防御测试,但我们目前的假设是,性能的提高与签名目录的检查有关。Wintrust API可能会在每次检查文件时重新打开/重新读取目录,而我们的实现只读取一次目录,并在整个扫描期间将其缓存在内存中。

现在,这本身就引起了人们对探索是否可以进一步改进的兴趣。因此,我们再次访问了验证代码,发现该代码大部分时间都在一个负责计算SHA-1哈希的函数中。这并不奇怪,因为目前几乎所有的签名证书都基于SHA-1算法,而实际的哈希是验证过程中最昂贵的部分。

因此下一个逻辑步骤是优化she SHA-1算法的实现。有趣的是,英特尔性能团队的一位工程师最近发表了一篇很好的文章,描述了通过在奔腾4处理器中添加SSE2指令来加速SHA-1的可能性。利用这些想法,我们能够进一步优化代码,使其运行速度提高约30%(尤其是在最新的Core 2和i7 CPU上)。

在进行所有这些测试时,我们还注意到一件奇怪的事情:在第一次和所有后续运行期间,整个系统扫描几乎在同一时间运行。但事实并非如此——持久缓存应该让第二次扫描和所有后续扫描运行得更快。不像快速扫描那样引人注目(因为设置了完整系统扫描,所以默认情况下它不信任持久缓存),但仍然非常重要,因为我们不应该在这些重复扫描期间验证文件的数字签名。因此,我们审查了相关代码,并非常惊讶地发现,验证任务确实是每次都执行的,而不仅仅是第一次。解决了这个问题(在昨天的引擎更新中,4月24日),我们能够将参考机器上的扫描时间缩短到6分54秒-这意味着几乎6倍的加速(当然,对检测率没有影响)

对我们来说,这是一个展示软件工程之美的伟大实践。有时候,如果你真的很努力,你可以做出很大的改变。

顺便说一句,我鼓励你进行完整的系统扫描,并在下面的评论部分报告你的发现。当然,ddos防御如何过滤假ip,网站cc防御软件,您的里程数可能会有所不同(这完全取决于您的硬件配置,但一般来说,高端硬件的加速比越高,服务器的ddos防御,您应该期望的加速比越大),但我们预计,在几乎所有系统上,至少应该可以测量2-3倍的加速比。此外,请记住,第一次扫描所需时间要长得多,因此,如果您从未运行过完整的系统扫描,最好运行两次并比较结果。

提示:要使完整的系统扫描更快,请将其配置为实际利用持久缓存。要执行此操作,请打开完整的系统扫描详细信息,单击设置按钮并选中性能页面上的"使用持久缓存加快扫描"框。