密码学的算法是公开的,安全性全部押在密钥长度上;所以各国管制的也是密钥长度。 40 位只要几微秒,56 位不到一秒,64 位半分钟——这三个长度今天都不该再出现。
07.09 前两节讲的是「环保门槛」,这一节讲「贸易门槛」。 它听起来离技术很远,但它会直接决定「这台设备能不能卖到某个国家」。
一、破解时间可以直接算
密钥空间是 2 的 n 次方,除以每秒能试的密钥数,就是破解时间。 假设有一台每秒试 10 的 18 次方个密钥的机器(远超现有算力):
密钥长度 破解时间 通俗说明
40 位 1.1 微秒 一瞬间 56 位 0.07 秒 一眨眼 64 位 18 秒 半分钟 80 位 14 天 两周左右 128 位 10 的 13 次方年 远超宇宙年龄 256 位 10 的 52 次方年 再平方一次
每增加一位,破解时间翻一倍;增加 8 位,翻 256 倍。 所以密钥长度是按「指数」算的,不是按「线性」算的。
128 位的破解时间已经是 10 的 13 次方年,而宇宙年龄才 10 的 10 次方年。 256 位是把密钥空间再平方一次,多出来的安全边际几乎用不完。
二、为什么管密钥长度不管算法
算法是公开论文,管不住:AES、RSA 的规范人人可查,代码人人可写。
而密钥长度决定强度,可以按档划线:「多少位以上需要许可」是一条可执行的规定。
划线的目的不是「不让别人知道算法」,而是「不让强加密流到不该去的地方」。 所以管制的对象是「产品」,不是「知识」。
历史上大致分三档:56 位以下基本不管、56 到 64 位报备即可、64 位以上需要许可或例外。 现在多数国家对商用强加密已经放开,但政府采购、金融、涉密场景仍会看清单。
三、采购时怎么应对
第一,被问到「用了什么加密、多少位」是正常流程,不是刁难: 准备好「算法名称 + 密钥长度 + 用途」三件事就能答。
第二,分清「设备内部加密」与「对外提供加密功能」: 一台只做内网加密的设备,通常不受限制;一台带 VPN 且能跨境使用的设备,才需要看清单。
第三,注意「出口」与「进口」是两套规则: 出口看的是「你的设备卖出去」;进口看的是「对方的设备进来」,很多国家还会要求认证。 两边都合规,才算真的能通关。
最后一句:出口管制管的是「产品能不能卖出去」,不是「设备内部用了多强的加密」。 这两件事在讨论时经常被混为一谈。
四、动手 Demo:加密出口管理,算法公开但密钥长度分档
这段按「每秒 10 的 18 次方个密钥」的假设算各档密钥长度的破解时间,并把它换算成人类能理解的单位。
rate = 1e18
space = bits * math.log10(2)
seconds = 10 ** (space - math.log10(rate))
if seconds < 0.001:
txt = u"%.1f 微秒" % (seconds * 1e6)
elif seconds < 3600:
txt = u"%.0f 秒" % seconds
else:
txt = u"10 的 %.0f 次方 年" % math.log10(seconds / 3.15e7)
实跑输出:
--------------------------------------------------------------------
加密出口管理,算法公开但密钥长度分档
--------------------------------------------------------------------
**密码学的算法是公开的,安全性全部押在「密钥长度」上。**
**所以各国管制的也是密钥长度,不是算法。**
**暴力破解的代价可以直接算出来。**
**假设有一台每秒试 10 的 18 次方个密钥的机器**(远超现有算力):
密钥长度 密钥空间 破解时间 通俗说明
----------------------------------------------------------------------
40 位 10 的 12.0 次方 1.1 微秒 一瞬间
56 位 10 的 16.9 次方 0.07 秒 一眨眼
64 位 10 的 19.3 次方 18 秒 半分钟
80 位 10 的 24.1 次方 14 天 两周左右
128 位 10 的 38.5 次方 10 的 13 次方 年 远超宇宙年龄
256 位 10 的 77.1 次方 10 的 52 次方 年 再平方一次
**40 位只要几微秒,56 位不到一秒,64 位半分钟。**
**这三个长度今天都不该再出现。**
**128 位的破解时间已经是 10 的 13 次方年,而宇宙年龄才 10 的 10 次方年。**
**256 位是把密钥空间再平方一次,多出来的安全边际几乎用不完。**
**这也是为什么加密强度看位数就够——位数对应的是密钥空间的数量级。**
**为什么是「密钥长度」被管,不是「算法」**:
算法是公开论文,管不住。
密钥长度决定强度,可以按档划线。
划线的目的是「不让强加密流到不该去的地方」,而不是「不让别人知道算法」。
**出口管制的三档历史(大致口径)**:
档位 典型密钥长度 管制程度
--------------------------------------------
弱 56 位以下 基本不管
中 56 到 64 位 报备即可
强 64 位以上 需要许可或例外
**现在多数国家对商用强加密已经放开**,但政府采购、金融、涉密场景仍会看清单。
**所以采购时被问到「用了什么加密、多少位」,是正常流程,不是刁难。**
**还有一件常被忽略的事**:出口管制管的是「产品能不能卖出去」,**不是「设备内部用了多强的加密」。**
一台只做内网加密的设备,通常不受限制。
一台带 VPN 且能跨境使用的设备,才需要看清单。
用对数算是必须的:2 的 256 次方这个数连浮点数都表示不全,直接算会溢出。 所以这段全程在「以 10 为底的对数」上做加减,最后才还原。
注意分档的单位是「人类能理解的」:微秒、秒、小时、天、年,逐级上升。 因为「10 的 52 次方年」这个数字,只有换成「宇宙年龄的多少次方」才有感觉。
最后提醒一个常见误解:「位数越多越安全」是对的,但「安全」不等于「够用」。 128 位已经远超需要,256 位的意义主要在「抗量子计算的预期」上。 所以选型时不必追最高位,够用且合规即可。
30 秒实验
- 查一下你常用的 HTTPS 网站用的是多少位的证书。
- 看一下你单位 VPN 用的加密算法与密钥长度。
- 想一想:为什么管制的对象是产品,不是算法?
常见误区
- 以为算法保密才安全。算法是公开的,安全押在密钥长度上。
- 以为位数越多越好。128 位已远超需要,追高位的意义有限。
- 把「设备内部加密」与「对外提供加密」混为一谈。管制的对象是后者。
自测三问(点开对答案)
1. 64 位与 128 位的破解时间差多少? —— 约 18 秒对 10 的 13 次方年,差了几十个数量级。 2. 为什么各国管制的是密钥长度而不是算法? —— 算法公开管不住,密钥长度决定强度且可以按档划线。 3. 历史上的三档管制大致是什么? —— 56 位以下基本不管、56 到 64 位报备、64 位以上需许可或例外。下一节:设备买回来之后——维护与备件怎么算。
- ☐ (本节完,下一节 07.10.01 网络硬件的维护)