HTTPS的核心SSL/TSL协议
- 第一篇:加密和哈希
- 第二篇:数字签名和数字证书
- 第三篇:HTTPS的核心SSL/TSL协议
- 第四篇:iOS中的实际运用
逻辑图
加密(Encrypt)
加密的概念:简单来说就是一组含有参数k的变换E。信息m通过变换E得到c = E(m)。原始信息m为明文,通过变换得到的信息c为密文。从明文得到密文的过程叫做加密,变换E为加密算法,参数k称作秘钥。同一个加密算法,可以取不同的密钥,得出不同的加密结果。从密文c恢复明文m的过程称作解密,解密算法D是加密算法E的逆运算。解密算法也有参数,称作解密算法的秘钥。
加密的方式:私钥密码(对称加密)和公钥密码(非对称加密)。
私钥密码(对称加密)
私钥密码实例-凯撒(J.Caesar)密码:
1 | 公元前罗马皇帝凯撒(J.Caesar)曾用密码传递作战命令。他的加密方法是把每个字母按字母表的顺序向后移动3位,最后3个字母依次变成前3个字母。例如,"take action at middle night",经过加密变成"wdnhdfwlrqdwplqqohqljkw"(忽略掉空格)。(这个加密算法应该都不陌生,数据结构双向循环链表部分应该都实现过的) |
私钥密码
由以上例子可以看出。私钥加密的秘钥是对称的,只要知道加密秘钥就能推出解密秘钥(所以称为对称加密)。通信双方分别持有加密密钥和解密密钥,密钥对外是绝对保密的,必须通过秘密渠道传送 。常见的对称加密算法有:DES、3DES、TDEA、Blowfish、RC2、RC4、RC5、IDEA、SKIPJACK、AES。
公钥加密(非对称加密)
公钥加密概念
迪菲(W.Diffie)和赫尔曼(M.Hellman)于1976年提出公钥密码的思想,这种密码是非对称的,也就是说,不能从加密密钥推算出解密密钥,所以又称之为非对称加密。加密密钥不需要保密,可以公开,称之为公钥,只需要保守解密秘钥称之为私钥。公钥和私钥是成对的。常见的非对称加密算法有:RSA、Elgamal、背包算法、Rabin、D-H、ECC。
公钥加密简单举例:甲乙两人通信,甲将他的加密密钥(公钥)公布,任何想与甲通信的人都可以使用这个加密密钥将要传送的信息(明文)加密成密文发送给甲,只有甲自己知道解密密钥(私钥),能够把密文还原为明文。任何第三方即使截获到密文也不可能知道密文所传递的信息。
两种加密方式对比如下图(图1-0)所示:
基于公钥密码的加密和认证
加密和认证是两个不同的概念,其中加密是保证数据的安全性,认证是确保用户的真实性。只有通信双方确定是真正要通信的双方,通信才有进行下去的必要。这也就是认证的主要目的。
基于公钥密码的加密过程
比如有两个用户Alice和Bob,Alice想把一段明文通过公钥密码的技术发送给Bob,Bob有一对公钥和私钥,那么加密解密的过程如下:
1、Bob将他的公钥传送给Alice。
2、Alice用Bob的公钥加密她的消息,然后传送给Bob。
3、Bob用他的私钥解密Alice的消息。
Alice使用Bob的公钥进行加密,Bob用自己的私钥进行解密。
基于公钥密码的认证过程
认证和加密就不同了,主要是鉴别用户的真伪。还是Alice和Bob这两个用户,Alice有一对公私钥,Alice想让Bob知道自己是真实的Alice,而不是假冒的,因此Alice只要使用私钥对文件加密发送给Bob,Bob使用Alice的公钥对文件进行解密,如果可以解密成功,则证明Alice的私钥是正确的,因而就完成了对Alice的身份鉴别。
整个身份认证的过程如下:
1、Alice用她的私钥对文件加密,从而对文件签名。
2、Alice将签名的文件传送给Bob。
3、Bob用Alice的公钥解密文件,从而验证签名。
Alice使用自己的私钥加密,Bob用Alice的公钥进行解密。
基于公钥密码的加密和认证的思考
在加密过程中,思考如何保证Alice拿到公钥后就能确定是Bob的公钥,若是篡改的公钥,通信进行下去已经无意义。接下来的第二篇文章数字签名和数字证书来解答这个问题。
哈希(Hash)
哈希与加密是不同的,概括来说,哈希(Hash)是将目标文本转换成具有相同长度的、不可逆的杂凑字符串(或叫做消息摘要),而加密(Encrypt)是将目标文本转换成具有不同长度的、可逆的密文。
两者有如下重要区别:
1、哈希算法往往被设计成生成具有相同长度的文本,而加密算法生成的文本长度与明文本身的长度有关。
2、哈希算法是不可逆的,而加密算法是可逆的。
这里重点强调一下Hash和Encrypt的主要区别,因为接下来的文章要用到这两个概念,这里对此不做深究。详细介绍可看我下面参考的一篇文章哈希(Hash)与加密(Encrypt)的基本原理、区别及工程应用。
总结
第一篇讲解的都是一些常用的基本概念,做安全肯定是会经常遇见,后续的几篇文章也依赖于对这些概念的理解,所以这里先提一下。关于Hash也只强调了一下和加密的区别。
参考
屈婉玲,耿素云,张立昂. 离散数学:高等教育出版社
详解公钥、私钥、数字证书的概念
哈希(Hash)与加密(Encrypt)的基本原理、区别及工程应用