一个推行了二十年的安全政策为何被NIST正式废弃

2017年8月,美国国家标准与技术研究院(NIST)发布了一份修订版的数字身份指南。在密密麻麻的技术规范中,有一行不起眼的文字:“验证者不应要求记忆型密码被随意更改(例如定期更改)。” ...

10 min · 4729 words

DNS 缺乏身份验证的后果:为什么三十年前设计的协议至今仍在制造安全危机

1983年,Paul Mockapetris在RFC 882和883中定义了Domain Name System(DNS)。这个协议的核心目标简单明确:将人类可读的域名映射为机器可读的IP地址。在那个只有几百台联网主机的ARPANET时代,Mockapetris和他的同事们做了一个影响至今的设计决策——DNS查询和响应不需要任何形式的身份验证。 ...

17 min · 8492 words

零拷贝:让数据"走捷径"的三十年技术演进

1995年,一名程序员在测试文件服务器时发现了一个令人困惑的现象:服务器CPU利用率高达80%,但实际的数据传输速度却远低于硬件理论带宽。追踪后发现,超过60%的CPU时间花在了同一个操作上——memcpy()。 ...

10 min · 4550 words

Wirth定律:为什么硬件升级永远追不上软件膨胀的速度

1995年,Niklaus Wirth在《Computer》杂志上发表了一篇名为《A Plea for Lean Software》的文章。他在文中感叹:软件已经膨胀到以兆字节计。他引以为傲的Oberon操作系统——包含编辑器和编译器——只有200千字节。 ...

10 min · 4818 words

没有全局时钟的世界:分布式系统如何定义"先"与"后"

1978年7月,Leslie Lamport在《Communications of the ACM》上发表了一篇论文,标题是《Time, Clocks, and the Ordering of Events in a Distributed System》。论文开篇就抛出了一个反直觉的论断:分布式系统中,事件的"先后顺序"本质上是一个相对概念。 ...

10 min · 4654 words

为什么一个「不合理」的键盘布局统治了世界150年

1936年,华盛顿大学教育学教授August Dvorak获得了一项专利,声称自己发明的键盘布局比当时通用的QWERTY布局快74%。他甚至用数据说话:海军的一项研究表明,让打字员重新学习他的布局,只需10天就能收回培训成本。 ...

10 min · 4797 words

布隆过滤器:用 9.6 个比特存储一个不确定的「是」

1970年,计算机科学家Burton Howard Bloom在《Communications of the ACM》上发表了一篇论文,标题是"Space/Time Trade-offs in Hash Coding with Allowable Errors"。论文只有五页,提出的问题却出奇地实用:如果你想在一个有限的内存空间里存储大量数据,并且允许偶尔犯错,能做到什么程度? ...

11 min · 5332 words