互联网安全套路之加密、签名和证书

  互联网在为咱们的生活带来极大便利的状况下,也引入了不少安全隐患。好比信息在网络传输过程当中可能会被黑客截取并篡改,这会带来很严重的后果。为了解决信息在网络传输过程当中的安全问题,对应就产生了:加密算法、数字签名和数字证书。

1、加密算法

  加密简单理解就是将一串须要传递的明文信息转换为密文信息后再进行传输。接收方收到密文后,再按照规律进行解密,获得原始的明文信息。在这个信息的传输过程当中,若是被黑客截获,可是由于信息内容是密文,因此黑客也没法得知信息的具体内容,从而保障了信息的安全性。
  加密算法能够分为对称加密和非对称加密。
  对称加密算法的特色是:双方使用一样的秘钥(能够理解成一串随机数,由信息发送方生成)进行加解密,算法计算量小,加解密速度快,所以被普遍使用在加密内容较多的场景下。经常使用的对称加密算法有:AES、DES等。可是加密算法有个缺点,就是发送方该如何将秘钥交给接收方呢?由于秘钥自己在网络传输过程当中也有可能被黑客截获。
  非对称加密算法的特色是:双方使用不一样的秘钥(一对“公钥和私钥”)进行加解密。用公钥加密的内容只有对应的私钥才能解开,反之亦然。公钥是对外公开的,任何人均可以获取公钥,可是不能经过公钥反推出私钥(非对称性);而且一个公钥有且只有一个对应的私钥(惟一性)。非对称加密算法由于不须要向对方传输私钥,所以安全性要比对称加密算法高。可是算法要比对对称加密复杂,加解密速度慢,不适合须要大量加密的场景。经常使用的非对称加密算法有RSA、ESA等。
  综上咱们能够发现,对称加密算法效率高,适合用于大量加密内容,可是没法保证秘钥安全的传输给对方;而非对称加密算法不须要传输私钥,安全性好,可是算法复杂度高,加解密效率低,不适合用于大量加密。
  结合它俩的特色,之前的大神们想出了一个解决对称加密秘钥传输安全性的方法:先用接收方的公钥将对称加密秘钥加密,而后传输给对方;接收方收到后,用本身的私钥解密,就获得了发送方的对称加密秘钥,这样双方就可使用对称加密算法愉快的通讯了。这时候,即便对称加密秘钥在网络传输过程当中被黑客截获,可是秘钥被接收方的公钥加密过了,黑客没有接收方的私钥,没法破解。这个方法保证了秘钥传输的安全性,同时后续的通讯内容是用对称加密算法进行的,也兼顾了加密通讯的效率。
 
  上面的方法看起来已经万无一失了,黑客即便截获了秘钥,也没法破解。可是,黑客仍有办法搞事情---篡改信息。好比黑客虽然没法破解秘钥,可是由于接收方的公钥是公开的,黑客也能获取到,因此黑客能够本身伪造一份对称秘钥,而后使用接收方的公钥加密,再传给接收方。这时候接收方使用私钥解密后,获得的对称秘钥就是黑客传来的,而接收方彻底感知不到这点,后续使用黑客的秘钥加密传输内容,这就出问题了。
  为了解决这个问题,就须要用到数字签名大法。

2、数字签名

  1.摘要算法
  介绍数字签名以前,须要先提一下摘要算法。摘要算法能够简单理解为:一份源文本,通过摘要算法处理后,获得一串摘要值。(能够理解为哈希)
  摘要算法的特色:同一份源文本,使用一样的摘要算法,获得的结果相同;而不一样的源文本,即便使用相同的摘要算法,结果必然不一样。而且,没法从摘要值反推出源文本(这是摘要算法与加密算法的显著区别,加密算法通过解密后是能够获得初始明文的)。基于以上特性,摘要算法能够用来校验信息是否被篡改,由于篡改后的信息和摘要值确定没法匹配。
  经常使用的摘要算法有:MD五、SHA等。
  2. 数字签名
  上面提到摘要算法能够用来校验信息是否被黑客修改。可是万一黑客改完源文本后,连摘要值也一块儿篡改了呢?这时候数字签名就排上用场了。
  数字签名说白了就是加密后的摘要值。发送方使用摘要算法提取出源文本的摘要值后,使用本身的私钥对摘要值进行加密,获得源文本的数字签名,再使用接收方的公钥对源文本进行加密,这样源文本和摘要值都是密文了。在消息传输过程当中,将数字签名附上一块儿传输。
  即便信息被黑客截获,黑客经过发送方的公钥解密出了摘要值,但因为摘要算法的不可逆性,没法反推出源文本的内容。而若是黑客想要篡改信息,从新伪造一份源文本,就算他使用一样的摘要算法伪造了摘要值,可是由于他没有发送方的私钥,这时他是无法生成数字签名的。接收方收到篡改后的信息后,若是可使用发送方公钥正常解密数字签名,获得摘要值,再使用本身的私钥解密源文本,获得文本内容,最后再使用一样的摘要算法提取文本内容的摘要值和数字签名解密出来的摘要值作对比,两者一致就能够证实源文本没有被人篡改过;若是没法使用发送方的公钥解密数字签名,或者从新提取的摘要值和数字签名中的摘要值不匹配,这时候接收方就能够意识到信息多是被篡改过了。
  到了这里是否是看起来一切都没问题了?Naive。黑客仍是有办法搞事情的。由于接收方没法肯定本身用的公钥就是发送方的公钥。黑客彻底能够一开始就伪造一个发送方的公钥传给接收方。黑客再使用本身的私钥去伪造数字签名,附在伪造的源文本上一块儿传给接收方。由于接收方能够正常使用发送方的公钥(此时已经是黑客伪造的公钥)解密数字签名,而且伪造的数字签名和伪造的源文本是匹配的。这时候接收方仍是没法识别信息被篡改。
  能够发现,这时候问题的关键点在于如何确保发送方公钥的可靠性。为了解决这个问题,就须要用到数字证书大法。

3、数字证书

  数字证书是一份通过证书受权中心(CA)签发数字签名的,包含有公钥全部者信息以及公钥内容的文件。简单理解,数字证书里包含有:公钥、公钥全部者的信息、CA的数字签名、CA名称、证书有效期、序列号等信息。
  数字证书如何保证公钥的可靠性呢?关键在于CA的数字签名。CA使用摘要算法获得数字证书内容的摘要值,而后用本身的私钥进行加密,获得数字签名。这样证书的使用者在获得数字证书后,只要使用CA的公钥(任何人都能获取)解密数字签名,获得摘要值,再使用一样的摘要算法提取数字证书内容的摘要值,两者进行对比,就能够知道证书是否被篡改过了。
这里咱们可能又会发现,数字证书安全性的关键就是确保CA的私钥和公钥是可靠的。这一点的话能够由受信任的CA机构来负责保证,由于这是要给钱的,花钱保平安~
  申请商用证书实质上就是把本身生成的公钥等信息发给受信任的CA机构,由他们签署数字签名,这样一份可靠的数字证书就诞生了。(私钥不用发给CA,本身保存就好)

Ps:自签名证书

  顾名思义,本身给本身的证书签署数字签名。自签名证书中是没有受信任CA机构的信息的,因此使用自签名证书提供服务的时候,都会在浏览器上提示证书不安全之类的问题,这是由于浏览器没法在受信任的CA机构列表中找到证书中的CA机构信息,因此认为证书不安全。要想规避的话,只需将证书添加到受信任的CA机构列表中便可。可是要完全解决的话,仍是须要花钱去申请商用证书。
  自签名证书的优势:不要钱;缺点:证书可能在传输途中被篡改。
相关文章
相关标签/搜索