㈠ 数字签名/数字证书/对称/非对称加密/CA 等概念明晰
此次不深入源码、不分析原理、只厘清一些易混淆概念及其关联。
本次将从通信演变历史的角度出发,一步步阐述概念及其作用。
通过本篇文章,你将了解到:
大部分时候,咱们交流都是靠嘴对嘴,信息完全暴露在他人的耳朵里。
拉拉家常无关紧要,但要是涉及重要、私密的信息就不能这样子了。
此时可能想到,那我们就说悄悄话吧。
悄悄话只能是俩人近距离才能实现,若是天各一方怎么才能将信息安全送给对方呢?
大家或多或少地看过谍战片,那会儿卧底如何将信息传给组织呢?答案是通过密码本。
双方约定好用一个密码本,密码本其实是个映射关系:
此时双方通信是经过加密的,我们称为密文通信。第三者想要破解信息,就需要拿到密码本或是破译出密码本映射关系,从而将密文转为明文。
随着科学技术的发展,人们的交流由书信逐渐过渡为电子通信。
当我们在键盘上敲击一段文字后,这段信息会通过网络发送给对方,怎么保证这段信息不被别人轻易知道呢?
我们想到了加密,双方在传输信息前商量好一个密钥,发送方用密钥将信息进行加密形成密文后再发送,接收方在收到密文后使用之前协商的密钥进行解密。
举个简单例子:
小明现在将信息进行对称加密:
那么将明文hello,每个字符+1,得出如下结果:
hello--->ifmmp
小红拿到密文ifmmp后,她知道密钥X=1,因此她将密文每个字符-1,得出如下结果:
ifmmp--->hello
至此,小明和小红成功进行了交流。
此时小刚想知道小明和小红聊了啥,于是截获了信息:
但是由于小刚拿到的是密文信息:ifmmp。因为不知道密钥,因此无法反推出明文:hello。因此小明和小红的信息交流安全得到了保证。
当然对称加密算法没那么简单,常见的对称加密算法有如下几种:
似乎使用对称加密就可以解决咱们通信安全问题,但引入了另一个问题:
是否有种方式可以光明正大地传递信息呢?
答案是:非对称加密。
接着来看看小明和小红如何使用非对称加密来实现安全通信。
小明和小红分别生成自己的公私钥:
由上可知,用小红的公钥加密的信息只能由小红的私钥解开,只要小红的私钥没有泄漏,那么小明和小红的通信是安全的。
当然了,真正非对称加密算法并没有那么简单,常见的几种非对称加密算法:
小明和小红的通信真是安全的吗?
此时小刚又来搞事情了:
以上信息表明:
小明和小红一合计,想出来了一个办法:
消息摘要(Message Digest)特点:
常见的消息摘要算法:MD5、SHA1。
虽然采用了消息摘要,但是小刚依然能够自己伪造信息,并生成对应的消息摘要,小红收到后验证摘要是正确的,便认为是小明发的,这种做法还是有漏洞。
在前边用到了小红的公钥、私钥,而没用到小明的公钥、私钥。
在消息摘要的基础上,想办法让小明的公私钥也参与到通信过程中来:
与消息摘要过程对比,此时多了一个步骤:
用私钥加密的信息的过程我们称之为:数字签名
数字签名具有不可抵赖性的特点。根据前面的描述,用私钥加密的信息,只有对应的公钥才能解开。
因此,若是小红使用了小明的公钥解开了密文,那么说明该消息肯定是小明发过来的。反之,小明使用私钥加密后发出去,代表这信息是确认是自己发的,这就是他的签名。
常见的数字签名算法:RSA、DSA、ECDSA。
老规矩,用图来看看小明与小红如何使用数字签名的。
小明发送信息过程:
小红处理信息过程:
由上可知:
数字签名有两个作用:
整个流程小明的公私钥、小红的公私钥都参与了。
因为小刚没有小明的私钥,所以他无法生成小明的数字签名,最终无法通过小红对数字签名的验证。
这么看来小刚是无能无能为力了?非也!
回顾一下之前说的对称加密的痛点:如何传递对称密钥?
实际上非对称加密也存在问题:如何传递公钥?
可见,无论是对称加密还是非对称加密都需要解决密钥传递问题。
若是小刚伪造了小红的公钥,情况如下:
因为公钥被伪造了,所以小刚可以为所欲为。
小明如何才能知道自己收到的公钥是小红的呢?
这时候就需要引入权威机构:CA(Certificate Authority) 证书授权中心
有了CA,小红发布公钥的流程变了:
用图表示如下:
图上5个步骤,有些同学对第4步不太理解:
似乎又回到了原点:如何安全传递公钥的问题。
其实,信任是有起点的。
CA 不仅为他人生成证书,也生成自己的证书,CA 为自己生成的证书里包含了CA的公钥。
CA 的证书在电脑、手机等设备出场的时候就会预置在系统里、浏览器里。
因此,当小明验证小红的证书时,会在系统里寻找能够解开小红证书的CA 公钥,若是找到则说明小明证书的颁发机构是可信任的,既然信任了该证书,那么从证书里取出的公钥,小明也认可是小红的。
至此,小红的公钥就安全地传给了小明,后面就可以愉快地通信了。
系统里找不到对应的证书会有什么影响?大家还记得12306网站刚开始运行的时候,用浏览器访问时浏览器会提醒说该网站不受信任,12306提示用户安装自己的根证书。
这也从侧面说明了,咱们不要轻易更改系统里的证书。
对称加密存在密钥传送被泄漏的风险,非对称加密虽然不需要传递私钥,但是需要传递公钥,也存在被中间人攻击的风险。
为此,引入了CA 生产证书解决了非对称加密公钥传递问题。
然后非对称加密速度慢,适合加密数据量少的信息,对称加密速度快,适合加密数据量大的信息。
如何将对称加密与非对称加密结合起来打造一个安全的通信链路,下篇我们将重点分析其中的典型:SSL/TLS 的原理与应用。
㈡ 区块链 --- 分布式金融(DeFi)
DeFi是decentralized finance(分布式金融) 一词的缩写,通常是指基于以太坊的数字资产和金融智能合约,协议以及分布式应用程序(DApps)。
简单来说,DeFi就是将传统金融搬到区块链网络里,但相比传统金融,它通过区块链实现了去中心化,也就是去掉了中间人的角色,从而降低了中间环节带来的巨额成本。
DeFi最终要实现的是资产通证化,以智能合约功能性替代传统中心化的金融机构,使用户以更低的成本享受到金融服务,并且提升整个金融体系的运行效率,降低运行成本。同时打造一个面向全球开放的无国界金融体系,以打造开放、透明、安全全新的去中心化系统,让所有人都可以自由地进行交易。
随着区块链的迅速发展,DeFi的应用场景也在不断地丰富,而金融业是其中最有前景的行业。
与银行相似,用户可以存钱并从其他借入其资产的用户那里获得利息。但是,在这种情况下, 资产是数字的 ,智能合约将贷方与借款人联系起来,执行贷款条款并分配利息。这一切都发生了,而无需彼此信任或中间人银行。而且,由于区块链提供的透明性,通过减少中间商,贷方可以赚取更高的回报,并更清楚地了解风险。
去中心化交易所,简称DEX,DEX是使用智能合约执行交易规则,执行交易并在必要时安全处理资金的加密货币交易所。当使用DEX进行交易时,没有中心化交易所运营商,也无需注册,没有身份验证或提款费用。
DEX可以使用订单薄进行交易,比如你要用10个A换15个B,那么我记下来。然后一会又来了一个人说我要用15个B换10个A,我说太好了,正好配对上了。于是,我就在链上生成一笔交易,把你们俩的币互换。这个时候汇率其实就是给交易的双方做参考用的——建议你用这个汇率容易找到配对。这样一来,去中心化交易所只是把交易双方的需求匹配了一下放上链,就不存在智能合约读取链外汇率信息的问题了。
这方法有很多缺陷。无论这个DEX做得多么用户友好,它对比中心化交易所效率一定是很差的,首先币价波动的时候很难找到匹配,其次小币种肯定也很难找到匹配,然后交易延迟应该也不小。 但相对于中心交易所,它还是有唯一的优势——靠谱。
DEX还可以使用AMM(自动做市商)交易,即按照自己的供求关系计算汇率,以保证自己手中的币不会被别人低价买空。最简单的办法就是永远保证自己的A币和B币的数量是个定值,这样就算卖空了,亏损也是有限的,而且,市场总会把价格调到合适的水平——因为反正如果汇率低了就会有人买,汇率高了就会有人卖。
通过这种简单的方法,可以获得一个不需要从链外获得汇率信息就可以自动根据供求关系调整的市场。当然,这东西的弱点也很明显——如果一开始的汇率不在市场汇率附近,就会承受大量的亏损。而且AMM中还存在“无偿损失”。
稳定币是旨在保持特定价值的代币,通常与美元等法定货币挂钩。
例如,DAI是与美元挂钩并抵押以太坊(ETH)链上数字资产的稳定币。它的发行是通过一个借贷的智能合约,来实现的:每个人都可以通过抵押一定数量的ETH(以太币)来换取和美元1:1锚定的DAI。这里,DAI采用的是 超额抵押 的形式,对于每个DAI,在MakerDAO智能合约中锁定有1.50美元的以太坊作为抵押。
如果你抵押价值150美元的以太币,那么只能换来价值100美元的DAI。然后,这个智能合约中写定了,如果你在某个时间内归还这100美元的DAI并且付一部分利息,那么你就可以拿回自己抵押的以太币。
但是这里面有个问题——以太坊的价格是会变动的。而且,虚拟货币的价格变动可是相当剧烈的,如果遇上以太坊暴跌了怎么办?那么原本值150美元的以太坊可能瞬间就不到100美元了,这个时候抵押的资产不如我贷出来的资产多,DAI的价格就不可能再锚定美元,因为大家都能看到:DAI不值那么多钱了。
怎么解决这个问题呢?超额抵押的作用就显出来了——即便以太坊价格波动幅度再大,但是从150美元跌到100美元总归还需要些时间。而这就给资产清算的空间:首先,我们规定抵押物不得少于150%的贷款,也就是如果以太坊涨了没关系,但是一旦跌了,你得立刻补仓到150%,否则你的抵押物会进入清算的智能合约。
用来装DeFi的虚拟资产,可以用于转账等。
资产管理工具(也叫看板)就是专门提供钱包扫描服务,可以查看钱包的明细,还有历史记录。
最主要的三大资产管理工具是Debank、Zerion以及 Zapper。
一般来说,市场上会有很多挖矿的机会,这也是大家理财赚钱的机会。这时候,就有做资产管理,或者是提供理财的金融服务的机器人站出来说,我是专门帮你做赚钱生意的,只要你把钱给我,我就会去市场上找赚钱的机会,帮你去赚钱。
YFI是其中最主要的一种理财工具。
区块链世界的机器人都是去中心化治理的,也就是说,没有明确是归属于谁的。这种情况下,如果机器人出故障了,我们应该找谁的责任?应该怎么做?损失谁来负责?这种情况下,就需要保险机器人了,它是专门就是为其他机器人投保了。
区块链世界的机器人都是去中心化的,且公开透明的,自动执行的。这些机器人的升级、维护应该怎么做?如何来确保机器人的去中心化呢?
一般,是由很多人围着同一个机器人一起磋商,投票决定如何让机器人去升级、提供服务。DAO机器人就是帮助这些人跟机器人之间形成一种去中心化的治理关系的机器人。
专门提供一种资产价格的机器人,比如,刚刚举例的小c机器人收到一个比特币的时候,它是需要知道一个比特币到底值多少钱。否则,是没办法计算应该给小明贷款多少钱的。这种时候,预言机机机器人就会跑到小c面前,输入一个价格,告诉小c机器人,比特币现在价值1万美金。
以太坊是一个维护数字价值共享账本的区块链网络,几乎所有DeFi应用程序(称为智能合约或Dapp)都建立在以太坊区块链上,组成网络的参与者代替了中心权力机构,以分散的方式控制网络本地加密货币以太(ETH)的发行。
defipulse公布的 DeFi排名 ,该排名跟踪锁定全球DeFi智能合约中的实时价值。
MakerDAO在DeFi领域是毫无疑问的龙头,MakerDAO之于DeFi就如比特大陆之于 矿圈。
MakerDAO 成立于2014年,是以太坊上 自动化抵押贷款平台 ,同时也是稳定币 Dai 的提供者。MakerDAO 是建立在以太坊上的去中心化的衍生金融体系,它采用了双币模式,一种为稳定币 Dai,另一种为权益代币和管理型代币 MKR。Dai 于2017年12月主网上线。通过双币机制,MakerDAO使得整个去中心化的质押贷款体系得以运转。
Dai和美元进行1:1锚定,和其他稳定币一样,Dai也存在价格波动。和其他稳定币不一样的是,Dai是通过 超额抵押 加密数字货币,从而获得价值。USDT、TrueUSD 和 GUSD 这一类的中心化稳定币每发行1美元的代币背后都存在1美元的法币作为储备,而1 Dai背后是以超出1美元的数字资产作为储备。
与USDT、TrueUSD等不同的是,Dai的运行机制是公开透明的,这也是 Dai的优势之一。不仅 Dai本身透明,换取 Dai的抵押物以太坊的价值波动和数量也一样透明,对外公开可见。
Compound协议打造的是一个无中介的贷款平台,借方获得利益,贷方支付利息。(头等仓注:通常我们把代币存入借贷池的一方称为借方,向借贷池中借代币的一方称为贷方。)
Compound的新ERC-20代币简称cToken,使用户能更简便的进行借贷操作。例如,支持cDAI与DAI交换,DAI持有者就可以将代币借给cDAI用户。不是所有的钱包都支持交换,但在Eidoo钱包中,用户可以轻松地用cDAI交换DAI,从而出借DAI换取利息。如今,Compound总共支持8种cToken,锁定资产合计高达约等值于2亿美元:cDAI、cETH、cUSDC、cBAT、cWBTC、cSAI、cREP、cZRX。
借方可以随时从Compound中提取代币,自动、瞬时计算利息。如果是通过像Eidoo这样的非托管钱包来提币,无需任何中介(因为以太坊的去中心化协议就能做到)。
贷方则必须锁定代币作为抵押品,根据基础资产的雄厚薄弱,获取50-75%的信贷。
Compound协议还设有10%的利息作为准备金,而剩余的90%利息归借方。无任何费用,无协议代币。基于以太坊的信贷市场,形成了一个真正的去中心化流动池,以一种无中介、自主、快速的方式发放和获得贷款。
Synthetix是基于以太坊的 合成资产发行协议 。Synthetix目前支持发行的合成资产包括法币、加密货币、大宗商品。其中法币主要有美元(sUSD)、欧元(sEUR)、日元(sJPY),不过目前基本上以sUSD为主。加密货币方面有比特币(sBTC)和以太坊(sETH)等,此外,还有反向的加密资产,例如iBTC,当BTC价格下跌,iBTC价格上涨,从而获利。大宗商品方面当前以金(sXAU)和银(sXAG)为主。
Synthetix上交易是去中心化的模式进行的,且无须交易对手存在,也不用担心流动性和滑点问题。在其交易所上的交易都是通过智能合约执行的,是对智能合约的交易,而不是订单簿交易。这些都有其独特的交易体验和部分优势。
Synthetix跟其他资产发行协议一样,也需要进行资产抵押才能发行,例如MakerDAO协议要生成dai,需要抵押ETH。Synthetix也类似,但它抵押的是其原生代币SNX。用户只要在其智能合约中锁定一定量的SNX,即可发行合成资产。其中其质押率非常高,是其发行资产的750%,只有达到750%的目标阀值才有机会获得交易手续费和SNX新代币的奖励。
TVL就是每个DeFi协议的锁仓总价值,越高越好。
Dex就是交易量,越高越好。
活跃地址数量代表以太坊上的DeFi用户数,越多越好。
手续费越低越好。
以太坊作为一个基础设施,它的市值可以很高,但是,说到它与DeFi市值的比例,那以太坊的市值应当是越低越好,越高就说明这个市场越成熟。
参考链接:
https://zhuanlan.hu.com/p/206910261
https://zhuanlan.hu.com/p/366412971
https://zhuanlan.hu.com/p/377856331
https://www.hu.com/question/324838085/answer/1526607416
如有不对,烦请指出,感谢~
㈢ 加密、签名、证书的作用及运用场景
本文主要是简单介绍了常见的加密类型、各自的运用场景、为什么需要数字签名和数字证书、HTTPS涉及到的加密流程等。这里主要从使用者的角度出发,对算法本身不做过多介绍。
对称/非对称加密均属于 可逆加密,可以通过密钥将密文还原为明文 。
有时候,我们希望明文一旦加密后,任何人(包括自己)都无法通过密文逆推回明文,不可逆加密就是为了满足这种需求。
不可逆加密主要通过 hash算法实现:即对目标数据生成一段特定长度hash值 ;无论你的数据是1KB、1MB、1GB,都是生成特定长度的一个Hash值(比如128bit)。这里大家应该能感受到一点 不可逆 的味道,加密后128bit的hash值显然无法还原出1个G甚至更大的不规则数据的, hash可以看做是原来内容的一个摘要 。
常见算法:
小明给小红写信:
经过九转十八弯后,信的内容有可能:1. 被窥视 2. 被篡改(冒充小明发送假消息) :
小红先 生成对称加密的密钥key1 ,然后通过一个安全的渠道交予小明。
传输数据时,小明 使用key1加密 ,而小红收到后再 使用key1解密 。
这时候 中间者既看不到原来的内容,也没办法篡改 (因为没有密钥):
【对称加密】实现简单,性能优秀 ,算法本身安全级别高。然而对 密钥的管理 却是个很头疼的问题:一旦密钥交到对方手里,对方对密钥的保管能力 我方是没办法控制 的,一旦对方泄露的话,加密就形同虚设了。
相对而言,【非对称加密】的公钥就没有这个忧虑,因为 公钥 的设计就是为了 可以公开的 ,尽管对方泄露,我方也不会有任何损失。
小红生成一对公私钥,自己持有私钥(pri_key1),将公钥(pub_key1)交予小明。
传输数据时,小明使用 公钥加密 ,小红使用 私钥解密 。
因为 中间者没有私钥,公钥加密的内容是无法获取的 。此时达到了 防窥视 的效果:
然而因为 公钥是可以公开的 ,如果 中间者知晓公钥 的话,尽管没有办法看到原来的内容,却 可以冒充小明发送假消息 :
这时小红在想,如果小明发送消息时,能带上 只有他自己才能生成 的数据(字符串),我就能 验证是不是小明发的真实消息 了。
通常这个 能证实身份的数据(字符串) 被称之为 数字签名(Signature)
小明再生成一对公私钥 ,自己持有私钥(pri_key2),将公钥交予小红(pub_key2)。
当小明传输数据时(可能很大),除了公钥加密明文之外,还要带上签名:(1) 对明文做一个hash摘要 (2)对摘要进行私钥加密,加密结果即签名(传输内容=内容密文+签名)
小红收到后:(1) 解密签名获取hash (2)解密内容密文,对解密后的明文进行hash;如果两个hash一致,说明验签通过。
尽管中间者修改了传输内容,但因为签名无法冒认(没有私钥),小红验签失败,自然不会认可这份数据:
通常 非对称加密要做到防窥视和防篡改,需要有两对公私钥 :对方的公钥用于内容加密,自己的私钥用于签名(让对方验证身份)。
因为HTTP协议明文通信的安全问题,引入了HTTPS:通过建立一个安全通道(连接),来保证数据传输的安全。
服务器是 没办法直接将密钥传输到浏览器的 ,因为在 安全连接建立之前,所有通信内容都是明文的 ,中间者可窥视到密钥信息。
或许这时你想到了非对称加密,因为公钥是不怕公开的:
然而在第2步, 中间者可以截取服务器公钥,并替换成了自己的公钥 ,此时加密就没意义了:
为了 防止公钥被假冒,数字证书(digital certificate )便诞生了 。
当服务器需要告诉浏览器公钥时,并不是简单地返回公钥,而是响应 包含公钥信息在内的数字证书 。
证书主要包含以下内容:
浏览器通过 【颁发机构的公钥】进行解密验签 ,验签通过即说明证书的真实性,可以放心取 证书拥有者的公钥 了。( 常用CA机构的公钥都已经植入到浏览器里面 )
数字证书只做一件事: 保证 服务器响应的 公钥是真实的 。
以上保证了 [浏览器⇒服务器] 是加密的,然而 [服务器⇒浏览器] 却没有(上图第4步);另外一个是 性能问题 ,如果所有数据都使用非对称加密的话,会消耗较多的服务器资源,通信速度也会受到较大影响。
HTTPS巧妙地结合了非对称加密和对称加密,在保证双方通信安全的前提下,尽量提升性能。
HTTPS(SSL/TLS)期望 建立安全连接后,通信均使用【对称加密】 。
建立安全连接的任务就是让 浏览器-服务器协商出本次连接使用的【对称加密的算法和密钥】 ;协商过程中会使用到【非对称加密】和数字证书。
特别注意的是:协商的密钥必须是不容易猜到(足够随机的):
其中比较核心的是随机数r3(pre-master secret),因为之前的r1、r2都是明文传输的, 只有r3是加密传输 的。至于为什么需要三个随机数,可以参考:
以上是一个比较简单的HTTPS流程,详细的可以参考文末的引用。
参考资料:
[1] 数字证书应用综合揭秘
[2] SSL/TLS协议运行机制的概述
[3] 图解SSL/TLS协议
[4] 《图解HTTP》
㈣ 灏忔槑鎶婅嚜宸眖q绌洪棿锷犲瘑浜嗭纴灏忕孩鐪嬩笉鍒板ス镄勫姩镐侊纴浣嗘槸灏忕孩鍙戠殑锷ㄦ侊纴灏忔槑鑳戒笉鑳界湅鍒般
鍙浠
㈤ 小明同学在自己的电脑上使用word文档写了一篇日志。他想不让别人轻易看到里面的内容。你能帮他想想办法吗
如果自己的文档中有不愿让人看见的小秘密,或者所编辑的文件涉及到单位或公司的机密,往往需要防止别人查看我们的文档。只有对Word文档进行加密,才能够实现对Word文档的保护。给Word文档加密主要有以下几个方法:文件加密文件菜单设置:1、打开需要加密的Word文档。2、选“文件”的“另存为”,出现“另存为”对话框,在“工具”中选“常规选项”,出现“保存”选项卡。3、分别在“打开权限密码”和“修改权限密码”中输入密码(这两种密码可以相同也可以不同)。4、再次确认“打开权限密码”和“修改权限密码”。按“确定”退出“保存”选项卡。5、文件存盘。
由工具菜单设置:1、打开需要加密的Word文档。2、选“工具”菜单的“选项”命令,出现“选项对话框”。3、在“选项”对话框中选“保存”选项卡。4、分别在“打开权限密码”和“修改权限密码”中输入密码,点“确定”退出。5、将文件保存。
㈥ HTTPS加密原理
HTTP、HTTPS在我们日常开发中是经常会接触到的。
我们也都知道,一般 Android 应用开发,在请求 API 网络接口的时候,很多使用的都是 HTTP 协议;使用浏览器打开网页,也是利用 HTTP 协议。看来 HTTP 真是使用广泛啊,但是,HTTP 是不安全的。利用网络抓包工具就可以知道传输中的内容,一览无余。比如我经常会使用 Fiddler 来抓包,搜集一些有趣的 API 接口。
那么问题来了,如何保证 HTTP 的安全性呢?基本上所有的人都会脱口而出:使用 HTTPS 协议。99.9% 的人都知道 HTTPS 会将传输的内容进行加密,但是接着问具体加密的过程和步骤,很多人就哑口无言了。
为了防止出现这种尴尬的局面,所以今天你就要好好看看这篇的内容了。以后就可以装个逼,哈哈!
先科普一下,加密算法的类型基本上分为了两种:
对称加密的意思就是说双方都有一个共同的密钥,然后通过这个密钥完成加密和解密,这种加密方式速度快,但是安全性不如非对称加密好。
举个例子,现在学霸小明这里有一道数学题的答案:123 。他想把答案传给自己一直暗恋的小红。所以他们双方在考试开考前,约定了一把密钥:456 。那么小明就把答案内容经过密钥加密,即 123 + 456 = 579 ,将 579 写在小纸条上扔给小红。如果此时别人捡到了小纸条,不知道他们是加密传输的,看到上面的 579 ,会误以为答案就是 579 ;如果是小红捡到了,她拿出密钥解密,579 - 456 = 123 ,得到了正确的答案。
这就是所谓的对称加密,加解密效率高,速度快,但是双方任何一方不小心泄露了密钥,那么任何人都可以知道传输内容了。
讲完了对称加密,我们看看啥是非对称加密。
非对称加密就是有两把密钥,公钥和私钥。私钥自己藏着,不告诉任何人;而公钥可以公开给别人。
经过了上次作弊后,小红发现了对称加密如果密钥泄露是一件可怕的事情。所以她和小明决定使用非对称加密。小红生成了一对公钥和私钥,然后把公钥公开,小明就得到了公钥。小明拿到公钥后,把答案经过公钥加密,然后传输给小红,小红再利用自己的私钥进行解密,得到答案结果。如果在这个过程中,其他人得到传输的内容,而他们只有小红公钥,是没有办法进行解密的,所以也就得不到答案,只有小红一个人可以解密。
因此,相比较对称加密而言,非对称加密安全性更高,但是加解密耗费的时间更长,速度慢。
对称加密和非对称加密的具体应用我还是深有体会的,因为所在的公司是做金融支付方面的,所以加解密基本上算是天天见了。
说完加密类型后,我们再来看看 HTTPS 。
我们先来看一个公式:
HTTPS = HTTP + SSL
从这个公式中可以看出,HTTPS 和 HTTP 就差在了 SSL 上。所以我们可以猜到,HTTPS 的加密就是在 SSL 中完成的。
所以我们的目的就是要搞懂在 SSL 中究竟干了什么见不得人的事了?
这就要从 CA 证书讲起了。CA 证书其实就是数字证书,是由 CA 机构颁发的。至于 CA 机构的权威性,那么是毋庸置疑的,所有人都是信任它的。CA 证书内一般会包含以下内容:
正好我们把客户端如何校验 CA 证书的步骤说下吧。
CA 证书中的 Hash 值,其实是用证书的私钥进行加密后的值(证书的私钥不在 CA 证书中)。然后客户端得到证书后,利用证书中的公钥去解密该 Hash 值,得到 Hash-a ;然后再利用证书内的签名 Hash 算法去生成一个 Hash-b 。最后比较 Hash-a 和 Hash-b 这两个的值。如果相等,那么证明了该证书是对的,服务端是可以被信任的;如果不相等,那么就说明该证书是错误的,可能被篡改了,浏览器会给出相关提示,无法建立起 HTTPS 连接。除此之外,还会校验 CA 证书的有效时间和域名匹配等。
接下来我们就来详细讲一下 HTTPS 中的 SSL 握手建立过程,假设现在有客户端 A 和服务器 B :
到此,SSL 握手过程就讲完了。可能上面的流程太过于复杂,我们简单地来讲:
我们可以发现,在 HTTPS 加密原理的过程中把对称加密和非对称加密都利用了起来。即利用了非对称加密安全性高的特点,又利用了对称加密速度快,效率高的好处。真的是设计得非常精妙,令人赞不绝口。
好了,HTTPS 加密原理到这就讲的差不多了,不知道电脑前的你有没有看懂呢?
如果有哪里不明白的地方,可以在底下留言交流。
bye ~~