跳至主要内容

有关密码学 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 产品随想的博客

BG投资十问(Baillie Gifford)

  1,公司是否能正面推动经济、社会或者文化发 展? 如果做不到,BG可能就不会再往下看了。比如军火、赌博类公司再便宜,BG不会去看。 2,公司销售额在5年之内能否翻倍? 为什么要讨论销售额?因为BG关注公司成长,销售额是比较简单直观的指标,而利润可有一些方法调节。所以,BG主要先关注销售额,再看现金流。 3,公司5年之后会怎么样? 这是未来5到10年或者5到15年的中间维度,一是看公司的成长空间究竟还有多大,二是考虑5年之后,公司的短期估值会不会下降,会不会变得成熟。 4,公司的竞争优势到底是什么?随着时间会变 强还是变弱? BG认为,如果公司的竞争优势是不断变弱的,将来在更远期挣回现金流的可能性就更低了。 5,公司是否有非常独特的文化?文化是否能够进化? 毕竟要投资这么长时间,对创始人和公司管理文化是非常关注的。特别喜欢创始人领导的公司,而不是说创始人什么都不干,创始人在做房地产,找了一些人在做新公司,要尽量避免这样的公司。 谈到进化在BG看来,大部分公司都会有大公司病,需要看它怎么能维持比较灵活的管理,变大之后还能够保持非常快速的成长,比如亚马逊的day one文化(注:就是始终处在 创业启动状态,充满迷茫和压力,但是充满创造力和颠覆思想 )。 6,公司过去的回报率怎么样? 一方面是考虑到公司的ROE(净资产收益率),二是考虑公司的Margins(利润),看它的过去是不是值得投资,如果每年ROE都不到10个点,可能长期来看也没什么意思。 7,ROE能不能随着时间增长? 有些公司一开始没有盈利,一直在烧钱,5年之后说不定ROE会到20%或者更高,它是一个动态过程。这样的公司BG也会投资,包括一些早期项目,很多公司都是没有盈利的。 8,公司怎么分配资本? 资本现金流无非就是5种方法:再投资、收购、还债、分红、回购股份,要看公司在某个阶段的资本分配是不是最优的。 如果公司明明可以发展更多,结果乱分红了;或者是明明到了特别成熟的时候,还不愿意分红,都是错误的分配资本。 9,公司怎样才能长成5倍? BG关注的是怎样,而不是能不能。这会强迫BG每个人去设想一些未来的可能性,包括公司现在的底层架构能不能够延伸到更多的业务。 比如,早期的亚马逊或者是阿里,连一个概念都没有,BG会考虑这个公司有没有这种机遇,以后去扩展到可触及的市场。 10,市场对公司有哪些误解,哪些事...

CAD 天正与 AI 工作流

基本步骤   1. 天正导出 T3 .dwg 文件,尽量在2007版本   2. AI 打开,打开时候可以选择比例,因为 AI 画布是基于真实尺度   3. AI 打开 .dwg 后,更改画布到所需要的大小   4. 之后用 PS 打开 AI 文件,可以维持想要的大小和比例   5. 而且 AI 可以读取天正的图层 课外了解   1. ETH 风格平面图   2. 日本创新性的停车方式   3. AI中的实时上色功能去了解

Steve Jobs: `There's Sanity Returning', 1998

Nobody can doubt the charisma of Steven P. Jobs. The interim CEO of Apple Computer Inc., who returned to the company last July after his ignominious 1985 ouster, has brought back his legendary vision, impatience, and infectious passion for the Macintosh. Jobs spoke to Business Week Correspondent Andy Reinhardt in Apple's stark, fourth-floor boardroom, just after the company rolled out its new software strategy on May 11. Note: This is an extended, online-only version of the Q&A that appears in the May 25, 1998, issue of Business Week. Q: Now that you've introduced the new, bold-looking iMac, are you going to do some radically different products? A: There's a lot of talk about such things -- about handhelds, set-top boxes. A lot of computer companies have been searching for a consumer product. My view is that the personal computer has been the most successful consumer product of the last 10 years. What we have to do, what the industry stopp...

产品爱好者周刊 第36期:走进Linux

Products OpenShot   https://github.com/OpenShot/openshot-qt OpenShot Video Editor is an award-winning free and open-source video editor for Linux, Mac, and Windows 开源的视频剪辑工具,跨平台 Run   https://github.com/The-Run-Philosophy-Organization/run 润学全球官方指定GITHUB,整理润学宗旨、纲领、理论和各类润之实例 Dozer   https://github.com/Mortennn/Dozer Hide menu bar icons on macOS ThisIsWin11   https://github.com/builtbybel/ThisIsWin11 Win11的隐私保护 RoundedTB   https://github.com/torchgm/RoundedTB Add margins, rounded corners and segments to your taskbars! Droptop Four   https://github.com/Droptop-Four/Basic-Version Droptop Four is the fourth iteration of the popular dropdown app launcher for Windows & Rainmeter. LibreTube   https://github.com/Libre-tube/LibreTube An alternative frontend for YouTube, for Android. nheko   https://github.com/Nheko-Reborn/nheko Quaternion   https://github.com/quotient-im/Quaternion 多平台的Matrix客户端 FluffyChat   https://fluffychat.im/ Phone端的Matrix...

产品随想 | 周刊 第62期:求索于主义与问题间

Products OpenRailwayMap   https://www.openrailwaymap.org/ 全世界的铁路基础设施地图 中国铁路地图   http://cnrail.geogv.org/zhcn/about 中文播客榜   https://xyzrank.com/#/hot-podcasts 欣慰,梁文道排名还挺靠前 NetGuard   https://github.com/M66B/NetGuard/ NetGuard provides simple and advanced ways to block access to the internet - no root required. Applications and addresses can individually be allowed or denied access to your Wi-Fi and/or mobile connection. ffmpeg buddy   https://evanhahn.github.io/ffmpeg-buddy/ a friend to help you build ffmpeg commands MaoXian Web Clipper   https://github.com/mika-cn/maoxian-web-clipper?auto_subscribed=false A web extension to clip information from web page. Save it to your local machine to avoid information invalidation. Not bored registration, Not charged. Pake   https://github.com/tw93/Pake 很简单的用 Rust 打包网页生成很小的 Mac App 潮流周刊   https://weekly.tw93.fun/ 挺不错的周刊,推荐之 Mackup   https://github.com/lra/mackup Keep your application settings in sync (OS ...

毕设采访问卷自己的回答

1.      提一个作品中的有意思的设计点。       毕设中,自己觉得最有趣的一点是,尝试将商业建筑的一层开放给城市绿色空间,让其 作为 公园的一部分,让建筑的入侵感变弱。       很期待上海以后能出现这样的设计,尽管这样的设计短期看对于开发商没有利益,但我认 为 长期看对于城市使用者、对于城市管理者是有好处的,而我也还在思考,怎样去弥补这样 的 设计对于开发商造成的损失,希望能塑造共赢的局面,这个思考、设计的过程自己非常开 心,觉得有意思。 2.      如何看待城市发展过程中新旧交织的困局?设计师能做什么?        城市发展一般是从无到有,发展到一定阶段,最开始的就成了旧的,不可避免地会和新的产生冲突。        作为建筑设计师,面对旧的,我们常思考的是,它好不好?如果好,那新的要与他保持和谐,形式可能有新旧,但内核、设计语言是一致的;如果旧的不好,我们的思维是,趁着新的发展,一并改造、更新,让新旧作为整体面向城市。总的来说,就是设计师要整体考虑,对于旧的不能一味保留,也不能一味摈弃。 3.      完成毕设过程中遇到的困难以及如何解决的?从中收获了什么?        遇到最大的困难是城市总平面设计中,对于基地新旧建筑的考虑,自己常希望能多保留一些,但设计中又发现如何把握度有些困难,后来解决方法是制定一个标准,旧的能不能提供新价值,如果不能,果断抛弃;如果能,留下。        按这样思路,困难算成功克服,小小收获是当你很贪心地想多留东西时,想想它是不是累赘,想清楚就不累了。 4.      导师在你完成毕设过程中的角色?(可以举一个例子)        我的毕设导师是王林教授,她一直是我毕设中的鼓励者和点拨人。     ...

书房拾遗-第42至45期

  书房拾遗-第42至45期 42期 网络说:持有平安的人,大概率持有万科,而持有平安和万科的人,大概率也持有格力。 后来想通了,这类投资者,内心基本是将“龙头+白马+低市盈率+从股价高点已经大幅调整”这几个条件叠加,然后将其等同于正宗的“价值投资”,所以自然而然地汇总到同一条路上了。 网友:uta:老唐,请问企业价值为什么用现金流折现,而不是用净利润折现? 唐朝:因为净利润不是钱,净利润是账。账不是价值,钱才是价值。 地魔:请问在你的投资体系里,一家公司的ROE低于多少就不值得研究或者投资了? 唐朝:通常低于8%我就不大关注了。 43期 唐朝:银行非常常见的操作。放贷款的同时拉存款,降低了实际贷款额,提高了真实贷款利率。 WDS:没看懂,怎么提高贷款利率? 唐朝 :你获得银行贷款100万,利率5%。但同时要求你存款30万,存款利息2%,你实际贷款多少,成本多少? 唐朝:你一年支付5万利息,收到0.6万利息,实际使用资金70万,所以,你的贷款利率是4.4/70=6.29%。说这个是小学数学,不算夸张吧? 44期 Uta:是不是投资港股市场的股票风险要比A股的股票大? 唐朝:核心在于自己的理念。理念不对,A股港股都是风大浪大;理念对了,港股A股都是闲庭信步。 唐朝:主要是招股书披露的基础知识特别详细,一般我会看看,学习一些行业基础知识。和普通年报一样,没啥特别要注意的地方。 45期 数字货币替代的是现金,微信支付宝可以作为现金支付手段,也可以作为数字货币支付手段。货币的形式和支付的形式,是两码事。 数字货币不是微信支付宝的对手,它是运钞车、ATM机、点钞员、印刷厂……的对手。 Lei:老唐,对于初学者来说的话是先多看财报,还是先多看书籍比较好。谢谢 唐朝:我认为多看财报,不懂的时候查书,是进步最快的方式。 老唐从2017年1月首次介入腾讯至今,只有买入没有卖出,最低买过197.3港币,最高买过607港币,平均买入位置大概在465~470港币之间(就是去年底约480港币的平均买入位置减去所分京东股票价值),目前持有腾讯的市值是八位数,亏损是七位数。 但不装不端,我真没有任何压力。如前所述,真要是爆发核战争,拿股票现金黄金房子都是一码事,没区别;如果没有核战争,等上几年后我几乎100%确定我会是赚钱的,区别无外乎也就是赚几千万还是赚几百万而已。

不靠运气的财富自由

创造财富的目标是自由,自由是关于你如何成为你自己 资产:睡觉时依然可以为你赚钱的企业和资产 不能一味地索取,需要去创造 致富的技能 坚持不懈地实干、努力 早有预备的运气 必须有点异乎寻常,才能独自走在前沿 必须拥有公司的股权,才能获得财务自由 我们应该升级自己的自由,而不是生活方式 想清楚你能提供的产品,然后考察如何扩大规模 通过做自己来规避无意义的竞争 寻找财富游戏中的长期战友 长期游戏中,每个人在让彼此富有 短期游戏中,每个人在让自己富有 选择智慧、精力充沛和正直的伙伴 读你喜欢的内容,直到你爱上阅读 找到让你富有、健康和有创造力的爱好 (找到三个爱好) 一个让你赚钱 一个让你健康 一个让你更加聪明

自己动手搭建Samba服务器

终于开始搭建Samba服务器,这里记录下基本的思路 1. yum install samba 安装Samba 2. 路由器上开放相应端口,并设置端口映射

Rhino_GH从入门到精通听课笔记_二

一. 基础操作   1. Rhino F6精确更改相机视野   2. 中键和左菜单栏弹出时间都是可以自己设置缩短的 二. 软件技巧   1. GH搭配生成楼梯,柱子,栏杆   2. SU\3DS\OBJ 均可被Rhino识别   3. 已命名工作位置很有用,和和已命名是图标是不一样的   4. Rhino等轴测做法          显示——投影——改为平行          旋转改为0/360          视图——等角视图 三. 奇技淫巧   1. 善用微信搜索,比如“地形制作”,第三讲前半部分讲解利用高程点制作地形   2. Rhino转折剖制作方法,用面split模型,即模型被切成两个,类似于佐罗刀   3. 转折剖模型制作时间很久,工作量比较大 四. Rhino命令   1. worksession  链接文件进来,以一个图层显示,类似于SU里面的另存再载入的操作,可       以节省运算量,比ctrl+c ctrl+v快   2. ctrl+w  局部放大   3. hatch  嵌面