【256位加密有多安全?】

来自3Blue1Brown《微积分的本质》视频:https://space.bilibili.com/88461692

(点击最下阅读原文查看B站更多精彩内容) 这里特别感谢各位翻译的贡献:昨梦电羊,罗兹,Solara570,圆桌字幕组等。 有意的译者请移步B站进行联系!

[遇见数学]根据视频内容整理文字版, 方便各位同学学习, 先来看下视频吧.

正文在之前的《比特币背后的原理》中, 提到过为了攻破一个安全系统, 你必须得猜对一个256位的比特串. 第一次是在电子签名的部分提的, 第二次是在密码散列函数的部分提到的.

比如说,假如你想找到一条信息让它的SHA256 散列值(哈希值)等于某个 256位比特串的话, 没有其他办法,只能暴力猜测, 并检验结果. 这需要尝试 22562256 次.

这个数字比我们通常遇到的数都要大得多, 因此很难去体会它的规模. 不过我们不妨试一试, 22562256 也就是 232232 , 和它自己相乘 8 次

这样分解的好处在于我们知道 232232 大约是 40亿这样一个数量.

我们起码可以想象"小一点"这个数字吧, 嗯,再来就是去体会 40 亿连续相乘 8 次是怎样的概念?很多人知道,我们的电脑里的 GPU 可以飞速的进行大量的并行计算. 因此要请你专门让 GPU 反复计算密码散列函数. 一个性能很好的 GPU 每秒也许能算出接近 10 亿个散列值.

假如你拿上一堆这样的 GPU , 而让你这台超级电脑每秒能算 40 亿个散列值, 那么就开始的 40 亿代表了你这台超级电脑每秒算出的散列值的数目.

想象一下 40 亿台这样满载 GPU 的超级电脑, 跟 Google 对比下, 虽然谷歌没有对外公布他们的服务器数量, 但是有估计说大概有几百万台. 现实中他们大部分服务器的算力都不如我们满载 GPU 的电脑强, 我们假设谷歌把上百万个服务器全换成这样的超级电脑. 那么 40 亿台超级电脑大概是 1000 个这种打了鸡血后的谷歌. 我们就把这个算力叫做 "千谷歌"吧.

我们再往右看, 全世界的人口大概有73亿, 接下来我们假设一多半的人(40亿台)都拥有自己的千谷歌,

然后想象, 40 亿个这样的地球, 作为对比,银河系大约有 1000 到 4000 亿颗恒星, 虽然我们并不确定,但估算大致就在这个范围. 所以这相当于银河系的 1% 恒星, 并且每个地球上一半的人口都拥有自己的千谷歌.

接着想象, 40 亿个这样的银河系, 我们把它叫做"亿万星系超级计算机", 每秒能猜 21602160 次.

40 亿秒, 大概是 126.8 年, 它的 40 亿倍, 就是 5070 亿年, 差不多是宇宙年龄的37倍. 所以就算你有( GPU 满满的超级计算机) * (地球上超过一般人都拥有千谷歌) * (行星云集) * (亿万星系计算机) * (猜上 37 倍宇宙年龄的时间), 也只有 40 亿分之一的可能性猜测到正确的数字.

顺便一提, 目前比特币的散列算力把所有的矿工都加起来, 每秒能猜测并检验500 亿亿个散列值, 这相当于是三分之一个我之前提到的千谷歌.

这并不是因为真的有几十亿台满载 GPU 的超级电脑, 而是矿工们用的是比 GPU 好上大约 1000 倍的机器, 叫做"专用集成电路"(ASIC), 这些硬件是为比特币挖矿量身定做的. 别的不会, 就专门会计算 SHA256 散列值. 原来想要大幅提高效率计算散列值. 就放弃其他的处理计算要需求, 而为了单单一个任务来设计集成电路.

说到 2 的次方, 这里也介绍一下, 3Blue1Brown 的 Youtube 频道的订阅数最近突破列 218218 用户, 欢迎到那里订阅并互动.

(0)

相关推荐