跳至主要内容

有关密码学 Cryptography

% Crypto 101% CUI Hao

密码学 Cryptography



加密:军事、商业保密、身份认证、日记...
  • 计算机出现前:加密人类语言文字
  • 计算机出现后:加密比特流(ASCII文本、网络协议)

古典替换式密码

凯撒密码

文本中每个字母在字母表上后移 k 个位置。

ATTACK -> DWWDFN (k=3)
IBM -> HAL (k=-1)

改进

重新排列字母表(单字母替换):


alphabet: ABCDEFGHIJKLMNOPQRSTUVWXYZ
  map to: RCPWUXNQBZFMYTLIEGVDJOAKHS
 example: ATTACK -> RDDRPF
"密码组合"有 26! 种之多。

维吉尼亚密码

每k个字母一组,与长度k的密码做加法


  ATTACKATDAWN (plaintext)
+ LEMONLEMONLE (key: LEMON)
= LXFOPVEFRNHR (ciphertext)
多个字母的凯撒密码。

替换式密码

substitution cipher

单字母替换/多字母替换/密码本...
  • 加密算法:映射
  • 密码:描述映射关系
  • 解密算法:反过来映射

另一种设计方案



也许是中国人发明的吧:
群书万卷常暗诵, 主人顾盼千金重。 药物楚老渔商市, 丸剑跳踯霜雪浮。
移位式密码 (transposition cipher)

列移位密码

按密码重新排列文本各列,然后竖着读出来:


 KEY: 6 3 2 4 1 5
TEXT: W E A R E D      CT:
      I S C O V E  ==> EVLNEACDTKESEAQROFOJDEECUWIREE
      R E D F L E 
      E A T O N C 
      E Q K J E U 
      (WE ARE DISCOVERED. FLEE AT ONCE)

密码分析

  • 系统是否安全?
  • 如何破解加密?

密码攻击 (COA)

仅仅获取到密文(ciphertext only attack),如何破解?
LetterFreq.
e12.702%
t9.056%
a8.167%
.............
样本越多,猜测越准确。

密码攻击 (CPA)

二战中,英国人对德国密码系统的种花攻击 (gardening):
  • 在A地放地雷
  • 截取密文 ...FRQALFFDSFGRE...
  • 在B地放地雷
  • 截取密文 ...FRQALFFDSFUGA...
选择明文攻击 (chosen plaintext attack):
试探设定的明文的加密结果,获取映射关系。

一致性破坏

不破解明文,仍可以有意地篡改解密结果,欺骗接收方:
  • PT: JOHN 1000; JACK 2000
  • CT: [01] [02]; [03] [04]
  • CT (modified): [01] [04]; [03] [02]
  • PT (modified): JOHN 2000; JACK 1000

极端的安全性



  • 经常更换密码 -> 一次性密码
  • 更大的密码空间 -> 超长的密码
  • 防止字典猜测 -> 密码随机选择

One Time Pad

维吉尼亚密码:使用和明文同样长随机字母串作为密码
计算机的维吉尼亚密码:加法 -> 按位异或


            U        S        T        C
 plaintext: 01010101 01010011 01010100 01000011
       key: 10110111 11110111 10111110 10011010
ciphertext: 11100010 10100100 11101010 11011001

OTP 为什么安全

非OTP:错误的密码 -> 无效的结果(乱码,无意义文本)
OTP:错误的密码 -> 可能得到看似正确的结果
  • 不可能被COA(密文得到很多看似正确的结果)
  • 不可能被CPA(一次性)


ciphertext: 11100010 10100100 11101010 11011001
 wrong key: 10101010 11110001 10111001 10001101
wrong text: 01001000 01010101 01010011 01010100
            H        U        S        T

一次性

异或运算的性质:(p1 xor k) xor (p2 xor k) = p1 xor p2
如果多次使用OTP,则可以通过密文间异或消去密码
已知的漏洞:
  • WIFI加密(WEP)
  • MS-PPTP(MSCHAP-v1)

实用性

  • Q: 如何安全地传送一次性密码?
  • A: 加密传输密码?死循环...
现实场景:密码应当便于交换和记录...
(其实可以通过量子密码实现绝对的OTP)

实际的加密方案

密码本模式

electronic code book, ECB

各种加密算法
  • 都可以归于替换式密码和移位式密码的复杂组合
  • 归根结底,就是多"字母"替换
实际的例子:
  • DES: 64位的替换单位
  • AES: 128/192/256 位的替换单位
缺点:同前

密码块链模式

cipher block chaining

为了避免ECB模式中移动块顺序篡改数据的风险:
  • 第i块明文加密之前,和上一块密文异或操作
  • 第1块明文和随机生成的初始向量 (Initial Vector) 做异或
既避免了篡改数据,还可以防止COA、CPA(相同数据两次加密结果不同)

流式密码

stream cipher

块密码中,如果任何一位传输错误,则会影响整个块(甚至下一块)的解密。
基于OTP的思路,设计一种伪OTP:
  • 密钥作为随机数种子
  • 通过伪随机数算法生成伪OTP密钥
  • 按照OTP的流程进行加密
为了避免重用攻击,也可以引入初始向量增加随机性。

其他模式

思考:文件系统加密,上述方法是否实用?

非对称加密



对称加密的矛盾:
  • 密钥必须被安全地保护起来
  • 密钥必须被分发给需要的用户
是否存在一种算法:
  • Decrypt(Encrypt(P, K1), K2) = P
  • 很难从K1推出K2
...以后再讲 (例:RSA)

生日悖论



如果一个房间里有23个或23个以上的人,那么至少有两个人的生日相同的概率要大于50%。


   n(p, d) = sqrt(2d ln(1/(1-p)))
 n(0.5, d) = 1.2 sqrt(d)
n(0.99, d) = 3.0 sqrt(d)
不要低估暴力穷举破解 (brute-force) 的危险性。

最后的话

公开算法

Kerckhoff 原则:密码学算法应当是公开的
  • 保密的是数据和密钥
  • 算法可以得到更多研究者的检验
不要对自己的轮子保有过度的信心。

密码学其他科技

  • 数字签名
  • DRM (蓝光加密算法 AACS)
  • 同态加密 (Homomorphic encryption)
  • ......

the End

谨慎采信本 slides 的内容:
似乎本 slides 没有出现 Alice 和 Bob




Popular posts from 产品随想的博客

BIM江湖演义——ArchiCAD vs Revit

原文 地址 江湖中历来不缺乏传奇。在建筑软件的这片江湖中,风云变幻,豪杰辈出,有两大世家始终屹立不倒——一个来自欧罗巴,名字低调:“图形软件”(Graphisoft),却继承了一身的艺术家气质,手握长剑白衣胜雪;一个来自美利坚,人称“自动桌子”(Autodesk),性格豪放不羁,七种武器样样精通。本文所说的,就是这两大世家的代表人物:ArchiCAD与Revit之间的较量。 这个论题本是老生常谈了,谈到BIM绕不过的就是Revit与ArchiCAD。两者的对比许多帖子都讨论过,但往往大而化之,原则性的东西多,细节的东西少,因此我想再作一次比较,希望能深入一点,具体一点,力争较为全面地反映两者的真实面貌。但这种对比往往两面都不讨好,你懂的,因此本文也多用戏说的语气,我姑妄说之,列位看官也就姑妄听之吧,有不当之处还请多多包涵! 先介绍一下本人对这两个软件的熟悉程度。我用ArchiCAD有4年了,出过几套施工图,都已竣工,编过一系列向日葵图库,颇受好评,对ArchiCAD的认识偏重于施工图;用Revit一年半,出过四个工程的土建及MEP模型,也用其API编了若干插件,对Revit的认识偏重于建模(包括结构及MEP建模)。应该说对ArchiCAD与Revit的认识都算深入了。 当然两者的深度比较是一个庞大的工程,而且个人看法难免有偏见,技术上也多有误解之处,因此希望各位能指正与补充。 1 软件的思想、架构对比 从软件的历史来说,无疑是ArchiCAD悠久得多,Revit是Autodesk在2002年才收购回来的,但Revit有一个强有力的东家,马上推出“BIM”这个很炫的口号,一下把ArchiCAD沿用多年的“虚拟建筑”这个老老实实的口号给打败了,于是ArchiCAD也只好宣称自己是个BIM软件,搞得在外人看来,倒像是Revit占了先机。 从软件设计的角度来看,两者也是差别巨大的。ArchiCAD从20多年前就致力于三维建筑设计,在这方面积累了足够多的经验,多年来也是沿用其架构做一些小更新、小完善、小整合。从我接触的7.0到最新的14.0,感觉比较大的变动就是10.0版整合PlotMaker、12版支持多核计算提升速度、12版新增幕墙工具、13版团队工作大幅改进。在界面上、使用习惯上一直差别不大,这也在一个侧面反映了ArchiCAD软件设计的一个“精英思路”——我本来就...

产品随想 | 周刊 第128期:将时间转化为知识和体验

自行车棚效应:我们为什么在小事上纠结,却对大事视而不见?   https://limboy.me/posts/bike-shedding Benz-Patent   https://www.mercedes-benz.com/en/innovation/milestones/benz-patent-motor-car/ 豐田博物館   https://toyota-automobile-museum.jp/tw/ 值得一去的汽车博物馆 一人公司   https://github.com/cyfyifanchen/one-person-company one-person-company, 一人公司 AI 工具系列 wujiaxian   https://wujiaxian.com/ 可能吧创始人的个人Blog,介绍自己的方式,很值得学习 日本京都10大設計熱點!「建築大師貝聿銘操刀美術館,皆川明設計旅館、選物店,還有全球最美的藍瓶咖啡店舖!」   https://www.elle.com/tw/life/style/g33846398/2020-kyoto-10-hotspots/ 京都真是非常美 Henry L. Stimson   https://en.wikipedia.org/wiki/Henry_L._Stimson?useskin=vector While Kyoto may have satisfied the military criteria for a useful target, Stimson objected, declaring in a meeting if the Interim Committee on June 1, 1945, "...there was one city that they must not bomb without my permission and that was Kyoto." 人性的努力保护了京都 Brooke Astor, 105, Aristocrat of the People, Dies   https://www.nytimes.com/2007/08/14/obituaries/14astor.html 值得尊敬...

产品随想 | 周刊 第52期:HP家的Linux笔记本

Products 腾讯柠檬清理   https://github.com/Tencent/lemon-cleaner 腾讯开源,那基本意味着不再维护了...... (据专业人士看,代码写的烂) Teclis   https://teclis.com/ 一个比较窄,但质量非常高的搜索引擎 Ina La Revue Des Médias   https://larevuedesmedias.ina.fr/ 挺小众的法语网站,对于媒体,对于新闻热点的解读,还挺好 Dashy   https://github.com/Lissy93/dashy A self-hostable personal dashboard built for you. Includes status-checking, widgets, themes, icon packs, a UI editor and tons more! 全定制化的看板,非常酷 OpenSnitch   https://github.com/evilsocket/opensnitch OpenSnitch is a GNU/Linux port of the Little Snitch application firewall 好用的Linux网络状态监控软件,帮助盯住不老实的App 这个工具的创作者,Simone Margaritelli,evilsocket,非常高产 emoji-supply   https://github.com/alcor/emoji-supply 把 Emoji 组合成漂亮的壁纸、封面图 Vue Color Avatar   https://github.com/Codennnn/vue-color-avatar 一个纯前端实现的头像生成网站 itty.bitty   https://github.com/alcor/itty-bitty Itty.bitty is a tool to create links that contain small sites Administrative-divisions-of-China   https://github.com/modood/Administrativ...

内网域名访问内网服务器

部门ftp服务器和远程服务器内网域名无法访问问题困扰我好久,钻研了几天,终于明白了一些,和大家做一个分享, 原帖子在这里 ,表示感谢

路由器与交换机区别

交换机和路由器的区别: 1.路由器可以给局域网自动分配IP,虚拟拨号,交换机只是用来分配网络数据的。 2.路由器在网络层,根据IP地址寻址,可以处理TCP/IP协议,交换机不可以。

分布式系统领域的经典论文【转载】

作者:严林  编辑于 2015-05-08 链接:https://www.zhihu.com/question/30026369/answer/46476717 来源:知乎 著作权归作者所有。商业转载请联系作者获得授权,非商业转载请注明出处。 分布式系统在互联网时代,尤其是大数据时代到来之后,成为了每个程序员的必备技能之一。分布式系统从上个世纪80年代就开始有了不少出色的研究和论文,我在这里只列举最近15年范围以内我觉得有重大影响意义的15篇论文(15 within 15)。 1. The Google File System: 这是分布式文件系统领域划时代意义的论文,文中的多副本机制、控制流与数据流隔离和追加写模式等概念几乎成为了分布式文件系统领域的标准,其影响之深远通过其5000+的引用就可见一斑了,Apache Hadoop鼎鼎大名的HDFS就是GFS的模仿之作; 2. MapReduce: Simplified Data Processing on Large Clusters: 这篇也是Google的大作,通过Map和Reduce两个操作,大大简化了分布式计算的复杂度,使得任何需要的程序员都可以编写分布式计算程序,其中使用到的技术值得我们好好学习:简约而不简单!Hadoop也根据这篇论文做了一个开源的MapReduce; 3. Bigtable: A Distributed Storage System for Structured Data: Google在NoSQL领域的分布式表格系统,LSM树的最好使用范例,广泛使用到了网页索引存储、YouTube数据管理等业务,Hadoop对应的开源系统叫HBase(我在前公司任职时也开发过一个相应的系统叫BladeCube,性能较HBase有数倍提升); 4. The Chubby lock service for loosely-coupled distributed systems: Google的分布式锁服务,基于Paxos协议,这篇文章相比于前三篇可能知道的人就少了,但是其对应的开源系统zookeeper几乎是每个后端同学都接触过,其影响力其实不亚于前三篇; 5. Finding a Needle in Haystack: Facebook's Photo Storage: ...

李录推荐阅读书单

李录推荐阅读书单 李录在《文明、现代化、价值投资和中国》的最后,列出了他推荐阅读的一些书目。这个书目的含金量非常之高,是培养一个多层次有深度思维很好的参考,特整理如下。 一. 科学、哲学、进化、人类文明史、人类历史 1. 《枪炮、病菌与钢铁:人类社会的命运》,贾雷德·戴蒙德 2. 《西方将主宰多久》,伊恩·莫里斯 3. 《文明的度量:社会发展如何决定国家命运》,伊恩·莫里斯 4. 《群的征服》,爱德华·奥斯本·威尔森 5. 《无穷的开始:世界进步的本源》,戴维·多伊奇 6. 《真实世界的脉络:平行宇宙及其寓意》,戴维·多伊奇 7. 《理性乐观派:一部人类经济进步史》,马特·里德利 8. 《科学发现的逻辑》,卡尔·波普尔 9. 《开放社会及其敌人》,卡尔·波普尔 10. 《自私的基因》,理查德·道金斯 11. 《人类简史:从动物到上帝》,尤瓦尔·赫拉利 12. 《文明》,尼尔·弗格森 13. 《当下的启蒙》,史蒂芬·平克 14. 《心智探奇:人类心智的起源与进化》,史蒂芬·平克 15. A history of knowledge, Charles Van Doren 16. 《神的历史》,凯伦·阿姆斯特朗 17. 《为什么佛学是真实的》,罗伯特·赖特 18. 《思考,快与慢》,丹尼尔·卡尼曼 19. Creating the Twentieth Century, Vaclav Smil 20. Transforming the Twentieth Century, Vaclav Smil 二. 中国文明、历史、文化 1. 《先秦诸子系年》,钱穆 2. 《中华文化十二讲》,钱穆 3. 《史记(白话本)》,司马迁 4. 《白话二十五史精选》,李解民等 5. 《四书章句集注》,朱熹 6. Waiting for the Dawn, William Theodore de Bary 7. 《中国的自由传统》,狄百瑞 8. 《万古江河——中国历史文化的转折和开展》,许倬云 9. 《黄宗羲全集》 10. 《余英时文集》 11. 《思想和人物》,林毓生 12. 《曾国藩全集》 13. 《万历十五年》,黄仁宇 14. 《天安门:知识分子与中国革命》,史景迁 15. The Search for Modern China, 史景迁 16. 《中国官僚政治研究》,王亚南 17. 《中...

产品随想 | 周刊 第130期:集结信徒,而非官僚

On Dyson, techno-centric design and social consumption   https://2earth.github.io/website/20250707.html 如何創造偉大的事物   https://ryolu.notion.site/1610a94b9c108079a95be4362afd4a26 集結信徒,而非官僚 Reflections on OpenAI   https://calv.info/openai-reflections 创业架构 Shui   https://github.com/rock-zhang/Shui 好好喝水 https://www.ghibli.jp/works/ 吉卜力作品的高清图 From Skeuomorphic to Liquid Glass: Apple's Strategic Bet on the Post-Touch Future   https://omc345.substack.com/p/from-skeuomorphic-to-liquid-glass 迄今为止关于苹果Liquid Glass变革的解读,最好的一篇 The Nueva School   https://en.wikipedia.org/wiki/The_Nueva_School?useskin=vector 看起来是很酷的一个学校 The Barbican   https://arslan.io/2025/05/12/barbican-estate/ 史蒂夫·乔布斯希望你阅读的 9 本书   https://www.douban.com/doulist/147158849/ 《禅者的初心》里有句话:“做任何事,其实都是在展示内心的天性,这是我们存在的唯一理由。” Chuck Feeney was one of the greatest philanthropists ever   https://www.gatesnotes.com/Remembering-Chuck-Feeney 慈善家 My new deadline: 20 years to give away virtually all my wealt...

《Becoming Steve Jobs》Chapter 13 Stanford

Steve was a natural performer who elevated business presentations to something close to high art. But what made him fidgety this day was the prospect of addressing the Stanford University graduating class of 2005. University president John Hennessy had broached the idea several months earlier, and after taking just a little time to think it over, Steve had said yes. He was offered speaking engagements constantly, and he always said no. In fact, he was asked to do so many commencement addresses that it became a running joke with Laurene and other friends who had college or graduate degrees: Steve said he’d accept one just to make an end run around them and get his PhD in a day, versus the years and years it had taken them. But in the end, saying no was simply a question of return on investment—conferences and public speaking seemed to offer a meager payoff compared to other things, like a dazzling MacWorld presentation, working on a great product, or being around his family. “If you loo...

写给大家看的中文排版指南

作者:Hindy 原文地址: http:// zhuanlan.zhihu.com/uici rcle/20506092 前言:很遗憾,我们的周围充斥着大量排版丑陋的文章。我国的字体排印与日本、美国等设计强国差距实在太大。我希望能够做些力所能及的小事,让更多人意识到“设计”的价值和其必要性,创造更美好的视觉环境。本文旨在帮助普及、提升大家对文字排版的认识,让大家在平时的学习工作中能有更专业的文字排版素养。 必看人群: 设计师、编辑、作家、撰稿人、教师、学生 目录: 1. 中文排版 1.1 引号 1.2 省略号与破折号 1.3 行首行尾禁则 2. 西文排版基础 2.1 西文撰写基础 2.2 西文标点相关 2.3 斜体的用法 2.4 大小写的区别 3. 中西文混排 3.1 基础原则 3.2 标点相关 1. 中文排版 1.1 引号 我国国家标准要求弯引号,个人建议使用直角引号。 示例:你竟然喜欢“苹果表”? 引号中再用引号使用双直角引号。 示例:我问他,“你竟然喜欢‘苹果表’?” 当引号表示讽刺、反语暗示时,使用弯引号(用法参考“西文排版”部分)。 示例:说真的,我也很 “喜欢”“苹果表”哦。 1.2 省略号(删节号)与破折号 省略号占两个汉字空间,包含六个点。 正确示例:中国设计还有太长路要走…… 错误示例:中国设计还有太长路要走… 破折号占两个汉字空间。 示例:中国设计还有太长路要走──加油罢。 1.3 行首行尾禁则 点号(顿号、逗号、句号等)、结束引号、结束括号等,不能出现在一行的开头。 错误示例: 排版时注意某些 符号不能在行首 ,别弄错了。 正确示例: 排版时注意某些 符号不能在行首, 别弄错了。 开始引号、开始括号、开始双书名号等,不能出现在一行的结尾。 错误示例: 她对我们说:“ 这书太赞了。” 正确示例: 她对我们说: “这书太赞了。” 2. 西文排版基础 2.1 西文撰写基础 句首字母大写。 单词间留空格。 示例:Have a question? 2.2 西文标点相关 点号后加一个空格(如逗号、句号等)。 示例:Hello everyone! Welcome to my blog....