惯性聚合 高效追踪和阅读你感兴趣的博客、新闻、科技资讯
阅读原文 在惯性聚合中打开

推荐订阅源

Hugging Face - Blog
Hugging Face - Blog
Vercel News
Vercel News
C
Check Point Blog
G
Google Developers Blog
博客园 - 司徒正美
量子位
Engineering at Meta
Engineering at Meta
S
SegmentFault 最新的问题
Google DeepMind News
Google DeepMind News
F
Fortinet All Blogs
A
About on SuperTechFans
美团技术团队
D
DataBreaches.Net
Stack Overflow Blog
Stack Overflow Blog
Jina AI
Jina AI
Y
Y Combinator Blog
奇客Solidot–传递最新科技情报
奇客Solidot–传递最新科技情报
Apple Machine Learning Research
Apple Machine Learning Research
J
Java Code Geeks
MongoDB | Blog
MongoDB | Blog
人人都是产品经理
人人都是产品经理
H
Hackread – Cybersecurity News, Data Breaches, AI and More
The Cloudflare Blog
U
Unit 42

少数派

派早报:Google 发布 Fitbit Air 等 - 少数派 「新人报到」確認需求,再開始 - 少数派 从 SOLO 独立开发者社区,我看到了越来越多开发者开始做自己的产品 - 少数派 我怎么管理那些"不常做,但总会忘"的生活事项 - 少数派 人形机器人量产元年,数据才是具身智能的“生死线” - 少数派 BuhoLaunchpad 高度还原 Mac 启动台:开发历程与思考 - 少数派 五年陪伴依然不舍,DIY 换壳后让罗技 MX Master 3 继续服役 - 少数派 新玩意 240|少数派的编辑们最近买了啥? - 少数派 一日一技|为什么你应该关闭 iOS 的键盘声音 - 少数派 我做了个插件和 Skills,一键提取任何网站的设计规范 Design.md - 少数派 住在三四线城市的你,该开始录播客了 - 少数派 甘南秘境,大白高国 - 少数派 AI的审美:谁让把我变成川内倫子 - 少数派 返工怎能不烦恼,打工人片单总有一部是你的「嘴替」 - 少数派 为了让「上厕所」更健康,我做了一个小工具 - 少数派 AI + Skill,能够让生成的文章去除 AI 味吗? - 少数派 新玩意|韶音OpenDots ONE 耳夹式耳机 - 少数派 《美满》| 在每一个春天的晚上相爱(362) - 少数派 新玩意|优篮子 PS01 MagSnap 磁吸支架 - 少数派 自我整合手记 | 我开始早睡了:用稳定规则,为自由托底 - 少数派 用龙虾(OpenClaw)两个多月,我最深的12个体会 - 少数派 听歌时间到,12 张你可能错过的 2025 华语乐坛好专辑 - 少数派 承诺能追吗 - 少数派 macOS 26启动台没了? 我做了个不一样的App启动器 - Keboard - 少数派 《四海为家的人》| INTJ对话INTJ(361) - 少数派 你发过的那些黑历史,是时候一次清干净了 - 少数派 新玩意:安安静静玩,越玩越专注:计客密码机 - 少数派 iPad 用户首次体验 Android 平板:vivo Pad6 Pro - 少数派 数据逻辑强 - 少数派 极北行+ | 一路向北,探访日本至北之地 | 001 - 少数派
写给大家看的公钥加密算法原理 - 少数派
2017-05-06 · via 少数派

相信很多朋友和我一样,都有传递情书的经历。在我中小学那个还没有陌陌的时代,写纸条应该算是与女同学建立感情的最佳手段——至少是之一。

既然是传递纸条就难免会假他人之手,尤其是在上课这种不方便走动,班主任又有意把长得有夫妻相的男女生分在不同角落的情况下。是以这种原始的通讯手段虽然能使大名鼎鼎而或臭名昭著的「棱镜」计划丧失用武之地,但却躲不过最原始的监控手段——直接打开看。中国人好奇心最大的地方莫过于别人的私生活,可以想象纸条上不可能有什么秘密存在,肉麻的情话最终往往会成为大家的笑柄。如何才能有效传递情书,但又不让情书的信息在传递过程中泄露出去就成了困扰我很长时间的问题。

我想到的第一种方法是,用密码的形式写情书。每五位数字代表一个字,前三位数字代表该字在新华字典的页码,后两位数字代表该字在这一页的第几个。新华字典是当时学生必备,只要事先约定好,我们就可以用这种方式沟通。但这一听就是一种找抽的方式。我的第一封密文情书大约一百个字,写了一节课还没写完。更糟糕的是,小姑娘收到情书之后,又花了两节课时间破译,等破译完之后,你的情书内容已经不重要了:一个精疲力尽的人往往会丧失各种欲望。好在她觉得这种加密方式很好玩,并没有觉得心烦,但我却再也不敢尝试第二次了:女人心烦往往连理由都不需要,我就别硬塞一些理由给她了。

第一种方法宣告不可行之后,我想到了一种更原始的方式。我找个可以锁上的小木盒,把情书放在木盒子里传递。这个方式可以称之为找抽方式之二。完美的解决的加密的问题,同时也通过一个在课堂上传递的盒子告诉了老师,你们俩之间有亲密关系。老师是一种比猫还多疑的动物,又不像猫一样温顺,踢一脚就乖乖卧在角落里思考人生——正相反,挨踢的往往是你。

不过这种新型找抽方式让我想到一种类似的解决方案。当时市面上刚好出现一种带密码锁的笔记本,我们只要预先沟通好密码,完全可以在这个笔记本上传递消息,同时这个笔记本还能成为我们俩爱情的见证。可惜年幼无知的我上当受骗了,买回来没多久我就发现这个密码锁只能算是一个装饰。它的加密装置是上下两组a到z字母,所谓密码就是特定两个位置的组合,也就是说最多试二十六次就可以把密码试出来。顺便提一句,这种把密码所有可能性挨个试过去的破解密码方式叫做暴力破解法。这种方式是最笨最原始的破解密码方式,但理论上可以破解任何密码。就这个只有二十六组可能性的密码而言,用纯手工的方式,暴力破解连一分钟都用不了。想想我初中那个爱在学生不在的时候搜查学生抽屉的班主任是精通概率论的数学老师,我就吓出一身冷汗。

刚被骗的人往往会比较聪明,所以我一下子想到这其实并不是加密方式的问题,而是选错了密码锁的问题。于是我拿出当时仅有的一点积蓄,买了一个四位数字加密的密码锁,替换了原来的锁。如前面所说,暴力破解当然是有可能的,但帮忙传递情书的人不太可能在短短几分钟内把密码试出来,毕竟你帮别人传递东西,不好意思把这东西拿在手上试一两个小时。若破译密码的时间超过某一个我们认可的有效时间,我们就说这种密码是「实际上」无解的。从这个意义上讲,「爱你爱到死」和「爱你一万年」可以认为是一个意思,尽管事实上人的寿命和一万年是两个不同的时间段。举个其他例子,战场上用密码加密了明天的作战计划,但要破译这份密码需要三天时间,这时这个密码就可以认为是实际上无解的。因为三天后这个作战计划早已经不是秘密了。我们加密一个东西,一般来说,只需要这个密码实际上无解即可。

就这样我用一种相对较简单的方式加密了我们的传递情书过程,同时也在事实上避免了暴力破解密码的可能性。但有时候破解密码根本不需要暴力。当时几乎所有的密码锁都有一个特性,无论开还是锁,都需要先把密码对到正确的位置上。这样我的同桌只要一不小心扫一眼我锁笔记本时候的密码状态,然后再一不小心给其他同学一讲,密码立刻又形同虚设。这时,我不免会想,有没有一种新的方式能够解决掉这个问题?

一个理论上的解决方案是,我上锁的时候用一组密码(密码 A),对方开锁的时候用另一组密码(密码 B)。密码 A 只负责上锁,密码 B 只负责开锁。这样的话,即使密码 A 被所有人都知道了,也只能望洋兴叹。尽管我当时没有找到这样的密码锁卖,但是这样的加密解密方法在生活中已经无处不在了。如果你留意的话,你会发现这种新的加密解密方法与前面提到的所有的方法都有一个显著的不同:前面提到的所有方法, 你一旦了解了加密规则,也就知道了解密规则, 加密解密都需要一个共同的密码,这样的加密方式我们称之为「对称加密算法」;而最后提到的这种方法,加密和解密要使用两套不同的规则,即使加密规则(密码 A)被所有人知道了,如果不知道解密规则(密码 B ),也对破译密码无可奈何,这种方式我们称之为「非对称加密算法」。我们假设甲乙两人之间利用这种「非对称加密算法」传递信息,这种算法的原理可以表述为:

甲有两把密钥(可以想象为例子中的密码),我们称之为公钥(密码 A )和私钥(密码 B )。公钥是公开传递的,所有人都可以或者至少有机会获得;而私钥是保密的,只有甲一个人知道。

乙从甲处得到公钥,并利用公钥对所传递信息加密。

甲得到乙加密的信息后,利用私钥解密以获取原始信息。

由于加密使用的是公钥,所以「非对称加密算法」又称「公钥加密算法」。这种算法可以说是远距离传输私密信息的基石,在互联网(尤其是电子商务)上得到了广泛的应用,几乎任何需要传递保密信息的领域都少不它的身影。可以说只要你上过网,几乎就一定接触过这种算法。目前最流行的公钥加密算法是「RSA 加密演算法」,大名鼎鼎的 google 数字证书以及 Gmail 等服务用的就是这种加密演算法。而比特币的加密机制基于「椭圆曲线加密算法」,相比 RSA,同等大小的密钥可以提供更高的安全级别。也就是说,如果你信任 google 的加密系统,那么对于比特币的加密机制也大可放心。

2013 年 7 月 2 日