目录
一,对称加密
1,加密过程:
2,优缺点
3,常用的对称加密算法
二,非对称加密
1,区别
2,优缺点
3,常用的非对称算法
三,HTTPS
1,SSL加密方式
2,SSL握手流程
3,HTTP 和 HTTPS 的区别
4,扩展
一,对称加密
对称加密算法是应用较早的加密算法,技术成熟。在对称加密算法中,数据发信方将明文(原始数据)和加密密钥(mi yue)一起经过特殊加密算法处理后,使其变成复杂的加密密文发送出去。收信方收到密文后,若想解读原文,则需要使用加密用过的密钥及相同算法的逆算法对密文进行解密,才能使其恢复成可读明文。在对称加密算法中,使用的密钥只有一个,发收信双方都使用这个密钥对数据进行加密和解密,这就要求解密方事先必须知道加密密钥。
1,加密过程:
加密: 原文+密钥 = 密文
解密:密文-密钥 = 原文
常见的对称加密算法: DES, AES, 3DES等
2,优缺点
优点 :算法公开、计算量小、加密速度快、加密效率高。
缺点 :
1)交易双方都使用同样钥匙,安全性得不到保证。
2)每对用户每次使用对称加密算法时,都需要使用其他人不知道的惟一钥匙,这会使得发收信双方所拥有的钥匙数量呈几何级数增长,密钥管理成为用户的负担。对称加密算法在分布式网络系统上使用较为困难,主要是因为密钥管理困难,使用成本较高。
3,常用的对称加密算法
基于“对称密钥”的加密算法主要有DES、3DES(TripleDES)、AES、RC2、RC4、RC5和Blowfish等。
1)DES:数据加密算法,它是IBM公司于1975年研究成功并公开发表的。DES算法的入口参数有三个:Key、Data、Mode。其中Key为8个字节共64位,是DES算法的工作密钥;Data也为8个字节64位,是要被加密或被解密的数据;Mode为DES的工作方式,有两种:加密或解密。
1.1)算法原理:DES算法把64位的明文输入块变为64位的密文输出块,它所使用的密钥也是64位,其算法主要分为两步:
1.1.1)初始置换
其功能是把输入的64位数据块按位重新组合,并把输出分为L0、R0两部分,每部分各长32位,其置换规则为将输入的第58位换到第一位,第50位换到第2位……依此类推,最后一位是原来的第7位。L0、R0则是换位输出后的两部分,L0是输出的左32位,R0是右32位,例:设置换前的输入值为D1D2D3……D64,则经过初始置换后的结果为:L0=D58D50……D8;R0=D57D49……D7。
1.1.2)逆置换
经过16次迭代运算后,得到L16、R16,将此作为输入,进行逆置换,逆置换正好是初始置换的逆运算,由此即得到密文输出。
2)3DES:三重数据加密算法(TDEA,Triple Data Encryption Algorithm)块密码的通称。它相当于是对每个数据块应用三次DES加密算法。由于计算机运算能力的增强,原版DES密码的密钥长度变得容易被暴力破解;3DES即是设计用来提供一种相对简单的方法,即通过增加DES的密钥长度来避免类似的攻击,而不是设计一种全新的块密码算法。
2.1)算法原理:
使用3条56位的密钥对 数据进行三次加密。3DES(即Triple DES)是DES向AES过渡的加密算法(1999年,NIST将3-DES指定为过渡的加密标准)。
其具体实现如下:设Ek()和Dk()代表DES算法的加密和解密过程,K代表DES算法使用的密钥,P代表明文,C代表密文,这样:
3DES加密过程为:C=Ek3(Dk2(Ek1§))
3DES解密过程为:P=Dk1(EK2(Dk3©))
二,非对称加密
与对称加密算法不同,非对称加密算法需要两个密钥:公开密钥(publickey)和私有密钥(privatekey)。
公开密钥与私有密钥是一对,如果用公开密钥对数据进行加密,只有用对应的私有密钥才能解密;如果用私有密钥对数据进行加密,那么只有用对应的公开密钥才能解密。因为加密和解密使用的是两个不同的密钥,所以这种算法叫作非对称加密算法。
非对称加密算法实现机密信息交换的基本过程是:甲方生成一对密钥并将其中的一把作为公用密钥向其它方公开;得到该公用密钥的乙方使用该密钥对机密信息进行加密后再发送给甲方;甲方再用自己保存的另一把专用密钥对加密后的信息进行解密。甲方只能用其专用密钥解密由其公用密钥加密后的任何信息。
常见的给对称加密: RSA,ECC
1,区别
对称加密算法,加解密的效率要高很多。 但是缺陷在于对秘钥的管理上,以及在非安全信道中通讯时,密钥交换的安全性不能保障。 所以在实际的网络环境中,会将两者混合使用。
2,优缺点
优点 : 安全,即使密文和公钥被拦截,但是由于无法获取到私钥,也就无法破译到密文。
缺点 : 加密算法复杂,安全性依赖算法和密钥, 且加密和解密效率很低。
3,常用的非对称算法
1)RSA算法:目前最有影响力的公钥加密运算,将两个大素数相乘十分容易,但想要对其乘积进行因式分解却极其困难,因此可以将乘积公开作为加密密钥,即公钥,而两个大素数组合成私钥。公钥是可发布的供任何人使用,私钥则为自己所有。
1.1)算法原理:以 A 要把信息发给 B 为例,确定角色:A 为加密者,B 为解密者。首先由 B 随机确定一个 KEY,称之为私钥,将这个 KEY 始终保存在机器 B 中而不发出来;然后,由这个 KEY 计算出另一个 KEY,称之为公钥。这个公钥的特性是几乎不可能通过它自身计算出生成它的私钥。接下来通过网络把这个公钥传给 A,A 收到公钥后,利用公钥对信息加密,并把密文通过网络发送到 B,最后 B 利用已知的私钥,就能对密文进行解码。
2)DSA算法:是Schnorr和EIGamal签名算法的变种,基于整数有限域离散对数难题。不单单只有公钥,私钥,还有数字签字。
2.1)算法原理:
2.1.1) 使用消息摘要算法将发送数据加密生成数字摘要。
2.1.2) 发送方用自己的私钥对摘要再加密,形成数字签名。
2.1.3) 将原文和加密的摘要同时传给对方。
2.1.4) 接受方用发送方的公钥对摘要解密,同时对收到的数据用消息摘要算法产生同一摘要。
2.1.5) 将解密后的摘要和收到的数据在接收方重新加密产生的摘要相互对比,如果两者一致,则说明在传送过程中信息没有破坏和篡改。否则,则说明信息已经失去安全性和保密性。
3)ECC算法:
椭圆加密算法(ECC)是一种公钥加密算法,其数学基础是利用椭圆曲线上的有理点构成 Abel 加法群上椭圆离散对数的计算困难性。公钥密码体制根据其所依据的难题一般分为三类:大整数分解问题类、离散对数问题类、椭圆曲线类。它的主要优势是在某些情况下它比其他的方法使用更小的密钥,提供更高的安全。它的安全性高,处理速度快。
4)DH算法:他是一种确保共享KEY安全穿越不安全网络的方法,也就是密钥一致协议。
三,HTTPS
HTTPS = HTTP + SSL/TLS,其中TLS是SSL的升级版。HTTPS之所以可以保证安全,就是因为在HTTP协议的基础上增加了SSL
1,SSL加密方式
SSL采用的加密方式为:非对称加密 + 对称加密,通过非对称加密的方式来交换对称加密的密钥,然后进行正常的对称加密。
2,SSL握手流程
1)服务端给客户端发送公钥;
2)客户端浏览器校验该公钥的合法性,用该公钥加密一个对称密钥;
3)客户端用该公钥加密一个对称密钥(所谓对称密钥就是一个随机值),然后发送给服务端;
4)服务端根据私钥解密,得到该对称密钥;
5)此时双发都知道了对称密钥,但是对外是不可知的,此后就可以根据此对称密钥进行对称加解密了。
3,HTTP 和 HTTPS 的区别
1)加密: HTTPS 是 HTTP 协议的更加安全的版本,通过使用SSL/TLS进行加密传输的数据;
2)连接方式: HTTP(三次握手)和 HTTPS (三次握手+数字证书)连接方式不一样;
3)端口: HTTP 默认的端口是 80和 HTTPS 默认端口是 443
4,扩展
1)客户端证书:HTTPS 中还可以使用客户端证书。以客户端证书进行客户端认证,证明服务器正在通信的对方始终是预料之内的客户端,其作用跟服务器证书如出一辙。但客户端证书仍存在几处问题点。其中的一个问题点是证书的获取及发布。
2)由自认证机构颁发的证书称为自签名证书:如果使用 OpenSSL 这套开源程序,每个人都可以构建一套属于自己的认证机构,从而自己给自己颁发服务器证书。但该服务器证书在互联网上不可作为证书使用,可以通过OpenSSL 自己定制自己的加密方案,但是成本较高。