嘉兴网站建设,php网站开发小程序,初学者3d建模要什么软件,可以做app的网站有哪些转载自 这可能是最生动的加密相关科普文章
谁都不想在通信过程中被别人“窃取”小秘密。本文借助一对情侣与八卦女、猥琐男的斗智故事#xff0c;为大家讲述科普密码学基础知识。既有料又有趣#xff0c;深入浅出#xff0c;相信你会喜欢。 一、背景
事情是这样的#…转载自 这可能是最生动的加密相关科普文章
谁都不想在通信过程中被别人“窃取”小秘密。本文借助一对情侣与八卦女、猥琐男的斗智故事为大家讲述科普密码学基础知识。既有料又有趣深入浅出相信你会喜欢。 一、背景
事情是这样的Alice 和 Bob 是一对 CP。两人之间难免要说一些 secret又不想被别人偷听怎么办呢本文就是讲述这对 CP 之间如何安全隐秘地聊天。如何跟无wěi聊suǒ份子们斗智斗勇的故事。先介绍一下将要登场的各个角色 Alice话唠严重的倾诉欲和 Bob 是 CP。 Bob沉默男理工男和 Alice 是 CP。 EveAlice 的室友热衷于偷听八卦。 Mallory猥琐男专业搞破坏 20 年。 Trent长者相当具有权威性大家都相信他。 二、如何不被窃听 —— 加密
刚开始时Alice 和 Bob 没有安全意识。平时说话聊天没有什么防范措施经常被 Eve 偷听。但碍于情面又不好直说为此烦恼不已。偷听过程如下 Bob 是个技术男想到一个办法。既然有人偷听那我为什么不加密呢说干就干他事先和 Alice 商定一个密钥key是个随机值别人猜不出来。从此这对 CP 之间聊天就用这个 key 进行加密保护如下 从图中可以看到Alice 在说话前先用 key 对消息内容进行加密。发送消息时不再直接传递“我刚买了个包包”这么直白的明文而是 “*2#%/Qw##” 这种谁都看不懂的密文。即使被 Eve 窃听她也完全看不懂神马意思只能表示 WTF。Bob 收到密文后先用 key 对其进行解密得到原始的消息内容“我刚买了个包包”。
旁白 这种加密方案在密码学里称为对称密码加密方和解密方使用的是相同的密钥。 知名的密码算法有 AES2001、Blowfish1993、DES1977再远一点有二战时期的恩尼格码转轮机原理德国、紫色密码转轮机原理日本以及著名的凯撒密码没错就是地中海北岸那个凯撒、栅栏密码等。后续会写文章专门进行各个算法的性能比较、安全性比较。 友情提示 密码学里的“密码”和现实生活中的“密码”不是一回事儿后者一般指的是口令password比如登录淘宝、QQ、ATA输入的那个东西。顺便说下有些耿直的 boy 会把自己的口令设置得炒鸡简单比如 12345678 、helloworld 等。这是万万不能够的小心被人猜出来。
言归正传一切看起来是那么完美。Alice 和 Bob 以为可以高枕无忧了却没想到道高一尺Eve 高一丈。 三、如何交换密钥 —— 非对称加密
自从 Alice 和 Bob 使用了“加密”这种秘密武器之后Eve 什么都听不到了。为此她寝食难安没有八卦的生活还有神马意义 还好Eve 不是普通的 Eve她并不只是一个八卦女她是个懂科技的 girl。思考几天之后Eve 意识到这对 CP 肯定是用了加密的。一不做二不休Eve 找到了破解办法请看下图。 Eve 观察到那对 CP 之间为了安全性会经常更换 key。为此她寻找一个合适的时机把 key 窃取到手。之后Eve 又可以愉快的窃听了终于可以睡个安稳觉。窃听过程如下 有 key 在手Eve 截获消息之后就可以像 Bob 一样把消息明文解密出来。
不过好景不长相对于 Eve 来说Bob 才是掌握核心科技的。他很快发现 Eve 的这一行为想到另一个办法 非对称加密。具体过程如下 Bob 事先生成一对公钥和私钥私钥 pri 由自己保管把公钥 pub 发给 Alice。 Alice 使用 pub 对消息内容进行加密Bob 用 pri 进行解密。 需要注意的是 只有私钥才可以解密所以即使 Eve 窃取到了 pub只有 pub 被传输而容易被窃取她也无法解密。
另外这种方式还有个显著优点。假使 Bob 还有很多别的女友严重抨击这种行为他可以把同一个公钥 pub 都发给她们各个女友都用这个 pub 和 Bob 进行通信。构成“多对一”的通信关系却不用担心女友 A 窃听到女友 B 和 Bob 之间的聊天内容因为 pub 无法解密。而在对称密码中Bob 必须为每个女友都分发一个不同的 key这很难保管。
旁白 这种加密方式在密码学里称为非对称密码所谓“非对称”指的是加密方和解密方用的密钥不一样。 知名的非对称算法有DSA数字签名算法只能用于签名1991、ECC椭圆曲线加密1985、RSA公钥加密算法1977等。 这些算法除了用于加密外还可以用于 数字签名本文后面会讲到。 非对称算法有个致命弱点 性能很低。实际应用中一般采用混合加密体制、哈希签名体制后续会写文章中进行介绍。
好了现在信道安全问题已经解决啦不用再担心 secret 被 Eve 偷听。但是情场多艰猥琐男 Mallory 现在隆重登场。 四、如何防止数据篡改 —— MAC
文章开头说了Mallory 是个专业搞破坏 20 年的男人这次也不例外。请看下图 Mallory 并不是八卦小女生他对偷听秘密没有任何兴趣。生而不羁他决定搞一些恶作剧篡改一下消息吧。于是他把 “我刚买了个包包” 改成“我决定跟你分手”但 Bob 却不知道已被篡改还以为是 Alice 的原话。那么问题来了求此刻 Bob 的心理阴影面积。
经过一番狗血的情感纠葛之后Alice 表示还是爱他的Bob 终于意识到有人在从中作梗。这还得了之前我们一直强调Bob 是个掌握核心科技的 boy他很快就想到了应对措施。请看下图为了简单起见本例仅展示防篡改的情况没有对 message 做加密 图中的 MAC 指的是 消息认证码Message Authentication Code你现在不需知道它的原理只要记住 1传入两个参数 message 和 key进行一系列计算后得到一个值叫 MAC。2只有 message 和 key 相同的情况下才能得到相同的 MAC。 跟对称加密一样这对 CP 之间会事先协商一个 key。 Alice 使用 key 对 message 计算出一个 MAC1并把 message MAC1 发给 Bob。 Bob 收到之后用自己的 key 对 message 计算出一个 MAC2再比较 MAC1 和 MAC2 是否一致。 根据 MAC 的性质如果 message 被篡改那么计算得到的 MAC2 一定不等于 MAC1验证失败Bob 得出结论有人篡改了消息。 由于仅 Alice 和 Bob 拥有 key所以别人无法篡改 message 后伪造出一个有效的 MAC。 在检测篡改方面还可以用HASH散列算法包括MD5、SHA1/224/256/384/512等。比如版本控制系统GIT就使用SHA1来检查文件是否有修改。
旁白 消息认证码有多种实现方式其中最常见的是 HMACHash MAC即使用哈希算法来实现 MAC还有一种是基于分组密码算法的 MAC不常见。 聪明如你肯定会想到如果 key 被窃取该怎么办这就涉及到 数字签名了后文会讲到。 五、如何校验身份 —— MAC
Mallory 还有个小伎俩那就是冒充身份恰好 MAC 也可以对付这个。且看下图 Mallory 发一个消息给 Bob说“亲爱的我是 Alice 哦balabala...”。如果没有校验措施Bob 可能就中招了。同样的Bob 可以用以下方式进行防范 只有 Alice 和 Bob 拥有相同的 key所以 Bob 只有在校验 MAC 成功时才会相信对方是 Alice。而 Mallory 没有这个 key伪造的 MAC 肯定会校验失败的所以计谋不能得逞。
旁白 MAC包含几种实现方式基于 HASH 的 MAC 称为 HMAC应用比较广泛。 有些同学应该接触过阿里云的 Access Key其实就是 HMAC 的原理。 有些同学在两个系统之间API调用时会使用同一个 key 做 md5 计算来实现 API 鉴权这称为“加盐HASH”可以简单理解为 HMAC 的简化版。 同样的如果 key 被窃取该怎么办这可以用 数字签名来解决。 六、更进一步 —— 数字签名
MAC 虽好但是遇到和对称密码同样的问题密钥如何交换。
其中一个解决方式就是 数字签名这个“签名”你基本可以想象成现实生活中的手写签名具有类似的作用。原理上和非对称加密有点像但有个很大的区别发送方是用 私钥进行签名而接收方用 公钥 进行验签这跟加密情况正好相反。
Bob 可以用数字签名来校验消息是否被篡改请看下图 原理上和图 6 差不多但区别在于由 Alice 事先生成一对公钥 pub 和私钥 pri并把 pub 发送给 Bob前者用 pri 加签后者用 pub 验签。验签失败说明消息被篡改。
也可以用于身份校验请看下图 Mallory 没有 Alice 的 pri所以无论如何他也没法冒充 Alice 的身份。
看到这里大家可能都松了一口气以为这小俩口终于没事儿了。但情场多变万一哪天 Alice 变心了呢她给 Bob 发了一条消息说“分手吧”如下图 可是发完之后又有点后悔但他们使用的不是 钉钉并没有消息撤回功能。怎么办所以说 Alice 还是有点 too naive她妄想可以矢口否认把 shit 盆子扣到破坏小王子 Mallory 身上声称“刚才那句话是 Mallory 说的” 等云云。
Mallory 虽然猥琐但也是个讲“原则“的 man你扣盆子也要讲基本法啊于是他跳出来说 “表冤枉我我又没有 Alice 的私钥”。
这是什么意思呢原来数字签名还具有“抗否认”的神奇功效Alice 讲的话里带有她的签名是不能否认的是不是有点类似现实生活中的手写签名。任何不讲基本法的栽赃陷害都是无效的... 八、公钥的身份证 —— 数字证书
如果你以为 Eve 和 Mallory 就此屈服于非对称加密和数字签名的威力那你就真的是图样了。所谓 “两汪战一虎四汪沉航母。六汪戏上帝八汪创世纪”他们决定联合起来找出公钥机制的破绽。伟大友谊自然会有效果他们果真找到了破解之法绝对不是剧情发展需要...。
没错就是 伪造公钥。我们先拿公钥加密来举例子图4 中讲到Bob 需要事先生成公钥 pub 和私钥 pri 然后把 pub 分发给 Alice。那么攻击过程就从这入手 Eve 生成自己的一对公钥 pub 和 私钥 pri截获 Bob 的 pub并用自己的 pub 冒充 Bob 的公钥发给 Alice。如下图 Alice 用 pub 加密消息发送出去。 Eve 截获 Alice 的数据并用 pri 解密得到消息明文。 Eve 伪造一个假数据“干嘛呵呵去洗澡”并用 pub 加密后发给 Bob。 Bob 用 pri 解密拿到伪造的数据以为是 Alice 发给他的。 这是个“偷天换日”的过程Eve 通过伪造公钥中间人攻击不光窃听到 Alice 的消息还能保证整个过程中 Alice 和 Bob 都没有察觉
再来看一下 Mallory 怎样用伪造公钥的方式来冒充身份。图10 中讲到Alice 需要事先把自己公钥发给 Bob所以攻击过程就从这入手 Mallory 生成自己的公钥 pub 和 私钥 pri截获 Alice 的 pub并用自己的 pub 冒充 Alice 的公钥发给 Bob如下图 Alice 用正常私钥 pri 进行签名并发给 Bob。 Bob 手里拿的是被伪造的公钥 pub所以对 Alice 的 sign 会验签失败认为对方不是 Alice。 Mallory 用自己私钥 pri 进行签名并发给 Bob。 Bob 用被伪造的公钥 pub 进行验签可以验签成功认为对方是 Alice。 这个过程中Mallory 通过伪造 Alice 公钥成功冒充了 Alice 的身份。
这种伪造公钥的攻击方式让 Bob 很头疼思考了很久终于想到一个办法。这次他找来了帮手 —— Trent。文章开头有介绍过Trent 非常具有权威性而且能保证自身不受攻击或者别人不敢攻击就像现实生活中的公安局。
Eve 不是喜欢伪造公钥吗Bob 这次就要请 Trent 为自己的公钥注册一张 “身份证” —— 数字证书。见证如见人哦不对见证如见公钥以下是注册数字证书的过程 Bob 请求 Trent 为自己的公钥 pub 注册一个证书。 Trent 收到请求后用自己的私钥 pri 对 pub以及身份信息 进行签名得到一个 sign。 Trent 把证书 certificate pub sign 颁发给 Bob。 Bob 把自己的证书 pub sign 发给 Alice。 Alice 使用 Trent 的公钥 pub 对 sign 进行验签如果校验成功则说明 pub 的确是 Bob 的公钥因为她相信 Trent 的权威性。
Eve 不可能找 Trent 为她办一个 Bob 的数字证书因为 Trent 不会同意的就像警察蜀黍不会给我办一张别人的身份证一样。所以Eve 无法伪造 Bob 的公钥。
同理为了防止 Mallory 伪造公钥来冒充身份Alice 也需要向 Trent 注册自己的公钥得到一个数字证书用于防止别人伪造公钥。
旁白 考虑到非对称算法的效率问题实际应用中一般是先对数据进行哈希然后才用私钥对哈希值摘要进行签名。 Trent 在密码技术领域中一般称为 认证机构Certification Authority即 CA。 以数字证书为基础业界制定了一系列的规范和规格比如由谁颁发证书、如何进行颁发、如何作废证书等称为 公钥基础设施Public-Key Infrastructure即 PKI。