RSA真会被量子计算机杀死吗?我研究了三个月后想法变了

🔑 关键词:量子计算机,后量子密码,RSA破解,格密码,Shor算法

📖 摘要:从个人折腾GPG加密的经历切入,对比RSA与格密码的底层逻辑,指出密码学本质是时间游戏而非数学难题。包含具体参数和现实思考,不吹不黑。

上个月整理硬盘,翻出十年前用GPG加密的一个压缩包。密码写在纸条上,纸条不知道夹在哪本书里了。我盯着屏幕上的提示,试了十几个可能的密码,全部失败。那一刻我突然意识到:密码学最难的从来不是算法,而是你自己怎么管理那把钥匙。也正因为这个挫败,我花了整整三个月去读Katz和Lindell那本厚得像砖头的教材,又把NIST后量子竞赛的三轮报告翻了个底朝天,最后得出的结论可能跟主流风向不太一样——大家天天喊RSA要死了,但真正该死的其实是那种"用一把锁锁一辈子"的思维方式。

图片

先说说RSA为什么让我觉得美又让我觉得恨。RSA-2048的两个大素数p和q,每个都有1024比特长,把两者乘起来做模数n只需要毫秒,但反过来从n分解出p和q,用目前最好的普通算法大概需要十亿年。这个不对称性很性感,1999年研究人员分解了512比特的RSA,2010年分解了768比特,现在大家都在赌谁先分解到1024。Shor算法确实能把分解复杂度降到多项式时间,理论上需要约4099个逻辑量子比特才能破解RSA-2048,但注意是逻辑量子比特——要跑通一个逻辑比特得用上千个物理比特做纠错,而现在的超导量子计算机只能勉强凑出几十个逻辑比特。所以有人说量子威胁还早,这话一半对,一半错。对的是工程进展确实比摩尔定律要慢,错的是你不该只盯着RSA,因为很多系统里RSA只是用来握手,对称加密的根密钥才是真正要命的东西。

图片

接下来是格密码。说实话,我第一次读LWE(带错误学习)问题的时候,心里是骂娘的——怎么能在向量上加个随机噪声就算安全了?但后来我用CRYSTALS-Kyber的参考实现跑了个demo,才明白它的妙处。Kyber-768的封装公钥只有1184字节,密文是1088字节,比RSA-2048的256字节大出一截,但性能上反而吊打:在普通笔记本上,Kyber的密钥生成可以做到每秒好几万次,而OpenSSL里的RSA-2048密钥生成还得反复找素数,慢的时候能让人等出幸福感。格密码的困难在于最短向量问题(SVP),这个问题的复杂度在量子算法下并没有指数级下降,所以它被当作后量子主力。但我不觉得格密码就是终极答案——它的参数选择很敏感,稍微配错噪声分布就可能被攻击,而且实现时用常数时间处理数组比RSA的模幂难多了,那些故意加随机延迟的"保护措施"反而可能泄露功耗特征。

图片

不过越研究越觉得,密码学真正解决的不是数学问题,而是时间问题。摩斯电码在发明那一刻也是绝对安全的,因为全世界就几个人懂,但等电信公司铺满海底电缆,它就成了笑话。量子计算机不会在明天突然破解RSA,但威胁的时间尺度被从十亿年压缩到了几十年,这就足够了。很多银行到现在还在用3DES的原因不是安全,而是合规和软件包太老;很多物联网设备用ECC曲线,但私钥直接烧死在flash里,破解跟读说明书一样简单。算法再后量子,只要你还把密码写在便利贴上,一切等于零。我那个GPG压缩包就是活生生的例子,数学上完美,人却败给了自己的记忆。

图片

所以我的独立观点可能被骂:与其焦虑"要不要换成后量子密码",不如先接受"所有密码都自带过期日期"这个事实。技术标准永远在追着攻击者跑,今天的Kyber明天也可能被某个代数结构攻击直接卷走。真正可靠的是把安全设计成一种动态过程——协议里同时保留RSA和格密码的双栈机制,定期做密钥轮换,哪怕切换时产生一点点兼容性代价。上次我在自己的服务器上折腾出双协议栈,证书签发了两次,一台旧手机死活连不上,那一刻我反而挺高兴,因为至少我清楚自己卡在哪个环节。密码学的地基是秘密,但秘密一旦存在就有被泄露的可能,唯一能做的只是让泄露的成本高过泄密的价值。这条路没有终点,但好玩就好玩在它永远有下一关。

图片

🏷️ 标签: