什么是哈希洪水攻击?(Algorithmic complexity attack或Hash-Flooding Attack)

【在知乎看到的,觉得那个菜鸟驿站的回答很不错,想自己也来写一篇。】 学校版 你是一名在校学生,有很多作业要做。什么语文的数学的英语的。 你有一份课程表,上面写着每门课每个章节多久教授完。由于每个章节教授完就要布置一次作业,第二天上交,于是你就把这些日期记到自己本子上,写成固定长度。例如化学习题册第二章11月19日完课,要11月20日交作业,你就写成1120,数学试卷第一章要求11月21日交,于是你就写成1121,你根据课程安排计划,写成的作业上交日期计划的这个过程叫哈希(hash),你写下的值就叫哈希值。这些值放在一起就成了哈希表(hash table)。 【不过请注意,哈希表的真正算法并不是这样的,以上的例子只是通俗的理解。】 你知道作业布置计划,即每个章节讲授完立马布置作业,于是你只要知道你学的某个章节多久教授完,就知道那个章节的作业要多久交。这个方法效率很高。 然而有可能恰好一天完结两个章节,例如语文第一章和数学第一章恰好都在11月20日完课,作业都要11月21日交,那么你的笔记本上就有了两个“1121”,有两个相同的值,这就叫哈希碰撞( collision ) 如何尽量让一天不要做一张以上卷子,减少哈希碰撞呢?于是一位老师建议说,作业布置慢一点,这个学期的作业下个学期交也可以,那么两份不同作业要在同一天上交的概率也更小了。这就是 扩大哈希值的取值空间 。 一天做一张卷子对你来说压力并不大,你做完卷子完全可以活蹦乱跳地出去找女朋友玩(如果你有的话)。 然而事情没那么简单。 另一位丧心病狂的负责调课的老师注意到了这点,希望大家用每分每秒的时间来学习,所以原本身体健康的体育老师突然就生病了,星期五的体育课也被改成了数学课。其他音乐老师美术老师也都不是外出考察去了就是家里有事,这些课统统被换成了主课。两个章节在同一天完成的概率就很高了,那么你现在一天要做一张以上的卷子的概率也就很高了。这就叫 哈希洪水攻击。(Algorithmic complexity attack或Hash-Flooding Attack)…

Continue Reading →

稳定的磁悬浮陀螺Spin stabilized magnetic levitation

Levitron是一种了不起的玩具,它是在空中悬浮着的22 g旋转的永磁体,呈小手纺陀螺的形式。顶部在永久磁铁基座上的提升板上旋转,然后升至悬浮高度。顶部在底部上方约3.2 cm处浮动约2分钟,其旋转速度由于约1000 rpm的空气阻力而下降。而早期的磁铁玩具需要一个止推轴承板来稳定沿一个方向的运动,2,但这款磁性陀螺可自由漂浮在基础磁铁上方,并完全被困在三个维度中(见图1!)。

Continue Reading →

猜想中的生物化学Hypothetical types of biochemistry

假设类型的生物化学是被认为具有科学可行性但目前尚不存在的生物化学形式。[2]目前地球上已知的各种生物都使用碳化合物来实现基本的结构和代谢功能,使用水作为溶剂以及使用DNA或RNA来定义和控制其形式。如果生命存在于其他行星或卫星上,则其化学性质可能相似;也可能存在具有完全不同化学性质的生物[3],例如,涉及其他类别的碳化合物,另一种元素的化合物或另一种溶剂代替水。

Continue Reading →