https里面的一些基本概念

现在大多数网站都已经从http升级为https了,https最大的一个优点就是安全。因此了解一下为什么https要比http安全还是十分重要的。下面是一些基本的概念性的东西。

1.加密

加密,是以某种特殊的算法改变原有的信息数据,使得未授权的用户即使获得了已加密的信息,但因不知解密的方法,仍然无法了解信息的内容。————来自百度百科。

2.加密算法

现在的加密算法应该主要分为两种,对称加密算法和非对称加密算法。两者的区别就是前者服务器和客户端使用的时候同一个密钥,后者双方各有一对公钥和密钥。

①对称加密

加密算法需要双方在通信前确定一个双方公用的加密算法,然后双方在后续的通信中统一使用这种算法,双方就可以正常通信。我们可以称为这个算法为公钥。如果公钥泄露,那么任何人都可以破解通信的内容。这也是加密算法的一个缺点:安全性完全依赖公钥的安全性。但同时加密算法的也很明显:计算量小,加密速度快,效率高。

正因为他的效率高,所以被广泛用于一些协议的基本传输里面,前提是保证使用的公钥的安全性。

常见的加密算法包括,DES、AES等。具体算法的原理可以看下面的链接,里面的大神讲得很好。

②非对称加密

非对称加密双方维护一个公钥和一个密钥。并且保证公钥和密钥是一对一的关系,且无法通过公钥反推出密钥。最重要的就是密钥加密的数据只可以通过公钥解密,反之公钥加密的数据只可以通过密钥解密。这样即使对方截取了你的数据,他因为不知道你的私钥也无法破解你的数据。但是安全提高的同时也使非对称加密相比对称加密的效率上降低了。常用的非对称加密的算法包括RSA,DSA等。

3.摘要算法

虽然上面的非对称加密算法已经很安全了,但是还有一种可能会导致数据被破解。假设双方在沟通的过程中,中间人拦截到了通信的数据,但是发现无法破解。但是我可以修改啊,然后就把原始数据替换成自己的数据,并且用公钥加密后传递给另一方,那么另一方接收到数据就会出现错误。那怎么防止数据在传输过程中被篡改呢?摘要算法出现了。

摘要算法是一种单向算法,是把任意长度的数据转化为一定长度的数据,并且这个过程是不可逆的。

摘要算法两个特点:1.无法通过加密后的数据推算出源数据 2.两份不同的数据加密后一定是不相同的值。

常用的摘要算法包括:MD5、SHA1等。

这样甲方在传递数据的时候会把数据通过摘要算法计算出来的散列值使用自己的私钥加密。这样乙方在接收到数据的时候会使用甲方的公钥进行解密,用同样的摘要算法对接收到数据进行计算,然后再跟传递过来的散列值进行比对从而确定信息是否被篡改。因为私钥是安全的,所以这样就可以保证信息不被篡改了。

*散列值:是一种从任何一种数据中创建小的数字“指纹”的方法

4.数字签名

数字签名就是对非对称加密和摘要算法的一种应用,能够确保信息在发布后不会被篡改(摘要算法特性),保证数据的完整性和可信性;同时也可以防止数据被他人伪造(非对称加密算法特性);列如,我们有一段授权文本需要发布时,为了防止中途篡改发布的内容,保证发布文本的完整性,以及文本是由指定的发布者发布的。那么,可以通过摘要算法得到发布内容的摘要,得到摘要之后,发布者使用私钥加密得到密文(签名),这时候将源文本、密文(签名)以及公钥一起发布出去即可。注意:生成的摘要是自己的私钥加密的,而需要传输的数据是对对方的公钥加密的。这样即使中间人即使拦截了你的数据,他即无法破解的数据(因为只有对方的私钥才可以解密你的数据)也没办法替换你的摘要(因为你的私钥是安全的,他如果修改了摘要,对方通过你的公钥就没办法解密摘要了)。

验证过程如下图

 

5.数字证书

数字证书就是通过数字签名实现的数字化的证书,在现实生活中公章可以被伪造,但是在计算数字世界中,数字签名是没办法被伪造的,比如上述证书中,在一个证书文件中写明了证书内容,颁发证书时,教育部门用他们的私钥对文件的摘要信息进行签名,将签名和证书文件一起发布,这样就能确保该证书无法被伪造。验证证书是否合法时,首先用教育部门的公钥(公钥是公开的谁都可以获取到)对签名进行解密得到一个摘要信息,使用教育部门同样的摘要算法得到证书的另一个摘要信息,对比两个摘要信息是否一致就能确定该证书是否合法。在一般的证书组成中部分中,还加入了一些其他信息,比如证书的有效期。

6.CA

数字证书也有很多的签发机构,不同的签发机构签发的证书,用途也是不一样的,比如iOS开发中,使用到的ipa文件签名证书,需要到苹果申请。而在Web访问中为了防止Web内容在网络中安全传输,需要用到的SSL证书则需要向几家公认的机构签发。这些签发机构统称为CA(Certificate Authority)

7.数字证书的验证

数字证书的验证

申请证书是为了验证,比如Web应用相关的SSL证书验证方是浏览器,iOS各种证书的验证方是iOS设备。因为数字证书是基于数字签名的,所有数字证书的合法性验证就是验证数字证书的签名是否正确,对于签名的验证在是需要签发机构的公钥才能验证;

对于iOS开发证书来说,申请完签名证书后,还需要安装苹果的公钥证书(XCode安装后会自动安装),这样才能确保我们申请的证书是可以被验证通过的(合法的),可用来进行ipa文件签名的。对于Web相关的证书签名的验证,则是由浏览器来验证,对于国际公认的几个证书签发机构浏览器会内置其公钥证书,用来验证数字证书的可信性。

当数字证书通过验证后,便可以用数字证书做对应的事情,iOS开发证书可以用来对APP进行签名,SSL证书可以用来做Web内容加密处理相关的事情。所以有了这些证书之后,能保证在数据的传输过程中,数据是不会被篡改的,并且信息来源也是不能不修改的,从而确保信息安全。

 

总结:数字证书其实就是基于非对称加密算法和摘要算法实现加密和防止对内容的篡改的。数字证书在https里面也很重要,同样https在传递私钥的过程也使用了非对称加密算法。

我也是一个菜鸟,如果有写错的,希望大佬指正。

最后非常感谢  http://www.enkichen.com/2016/02/26/digital-certificate-based/  这篇文章的大佬作者,我获益颇丰。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值