Ⅰ 2019-06-10 对称加密 和非对称加密
一、对称加密
AES加密
AES加密是一种高级加密标准,是一种区块加密标准。它是一个对称密码,就是说加密和解密用相同的密钥。WPA/WPA2经常用的加密方式就是AES加密算法。
二、非对称加密
RSA加密算法是一种非对称加密算法,非对称加密算法需要两个密钥:公共密钥和私有密钥。公钥和私钥是配对的,用公钥加密的数据只有配对的私钥才能解密。
RSA对加密数据的长度有限制,一般为密钥的长度值-11,要加密较长的数据,可以采用数据截取的方法,分段加密。
使用场景:
文件或数据在本地使用公钥或私钥加密,加密后的数据传送到服务器,服务器使用同一套密钥中的私钥或者公钥进行解密。
一、Https是什么?
1.HTTPS概念
HTTPS并不是一个单独的协议,而是对工作在一加密连接(SSL/TLS)上的常规HTTP协议。通过在TCP和HTTP之间加入TLS来加密。
2.SSL/TLS协议
SSL协议,是一种安全传输的协议,TLS是SSL v3.0的升级版。
4.HTTPS传输速度
1)通信慢
2)SSL必须进行加密处理,比HTTP消耗更多资源
二、TLS/SSL握手
1.密码学原理
1)对称加密
加密数据用的秘钥和解密数据用的密钥是一样的。
2)不对称加密
私有密钥:一方保管
共有密钥:双方公有
RSA算法。
2.数字证书
1)就是互联网通讯中标志通讯各方身份信息的一串数字,也是一个文件。
2)为什么有数字证书?
3)数字证书的颁发过程?
3.SSL与TLS握手的过程?
使用非对称加密,随机数不能被随便破解
Https双向认证的流程:
a. 客户端向服务端发送SSL版本等信息
b. 服务端给客户端返回SSL版本,同时也返回服务器端的证书
c. 客户端使用服务的返回的信息验证服务器的合法性,
a) 包括:证书是否过期,发型服务器证书的CA是否可靠,返回的公钥能正确解开返回证书中的数字签名,服务器证书上帝域名是否和服务器的实际域名想匹配
b) 验证通过后,将进行通信,否则终止通信
d. 客户端将自己的证书和公钥发送给服务端
e. 验证客户端的证书,通过验证后,会获得客户端的公钥
f. 客户端向服务端发送自己可以支持的对称加密方案给服务端,让服务端进行选择
g. 服务端在客户端提供的加密方案中选择加密程度高的加密方式
h. 将加密方案通过使用之前获取到的公钥进行加密,返回给客户端
i. 客户端收到服务端返回的加密方案后,使用自己的私钥进行解密,获取具体的加密方式,最后,产生加密方式的随机码,用作过程中的密钥,使用之前从客户端证书中获取到的公钥进行加密后,发送嘿服务端
j. 服务端收到客户端发来的消息后,使用私钥对加密信息进行加密,获得对称加密的密钥
k. 对称加密,确保通信安全
总结:https实际上就是在TCP层与http层之间加入了SSL/TLS来为上层的安全保驾护航,主要用到了对称加密,非对称加密,证书等技术进行客户端与服务器的数据加密传输,最终达到保证整个通信的安全性。
Ⅱ 电子合同中的数字签名技术是如何防止伪造信息的
数字签名的使用可以保证发送方不能否认和伪造信息,是一种安全措施。
在公钥密码学中,密钥是由公开密钥和私有密钥组成的密钥对。数字签名就是用私有密钥进行加密,接收方用公开密钥进行解密。由于公开密钥不能推算出私有密钥,所以公开密钥不会损坏私有密钥的安全,公开密钥无需保密可以公开传播,而私有密钥必须保密。
因此,当某人用其私有密钥加密信息,能够用TA的公开密钥正确解密就可以肯定该消息是经过某人签字的,因为其他人的公开密钥不可能正确解密该加密信息,其他人也不可能拥有该人的私有密钥而制造出该加密过的信息。
就其实质而言,数字签名是接收方能够向第三方证明接收到的消息及发送源的真实性而采取的一种安全措施,其使用可以保证发送方不能否认和伪造信息。
数字签名的主要方式是:报文的发送方从报文文本中生成一个散列值(或报文摘要),发送方用自己的私有密钥对这个散列值进行加密来形成发送方的数字签名,然后这个数字签名将作为报文的附件和报文一起发送给报文的接收方,报文的接收方首先从接收到的原始报文中计算出散列值(或报文摘要),接着再用发送方的公开密钥来对报文附加的数字签名进行解密,如果两个散列值相同,那么接收方就能确认该数字签名是发送方的。
Ⅲ 什么是AES算法
加密算法分为单向加密和双向加密。
单向加密 包括 MD5 , SHA 等摘要算法。单向加密算法是不可逆的,也就是无法将加密后的数据恢复成原始数据,除非采取碰撞攻击和穷举的方式。像是银行账户密码的存储,一般采用的就是单向加密的方式。
双向加密 是可逆的,存在密文的密钥,持有密文的一方可以根据密钥解密得到原始明文,一般用于发送方和接收方都能通过密钥获取明文的情况。双向加密包括对称加密和非对称加密。对称加密包括 DES 加密, AES 加密等,非对称加密包括 RSA 加密, ECC 加密。
AES 算法全称 Advanced Encryption Standard ,是 DES 算法的替代者,也是当今最流行的对称加密算法之一。
要想学习AES算法,首先要弄清楚三个基本的概念:密钥、填充、模式。
密钥是 AES 算法实现加密和解密的根本。对称加密算法之所以对称,是因为这类算法对明文的加密和解密需要使用同一个密钥。
AES支持三种长度的密钥:
128位,192位,256位
平时大家所说的AES128,AES192,AES256,实际上就是指的AES算法对不同长度密钥的使用。从安全性来看,AES256安全性最高。从性能来看,AES128性能最高。本质原因是它们的加密处理轮数不同。
要想了解填充的概念,我们先要了解AES的分组加密特性。AES算法在对明文加密的时候,并不是把整个明文一股脑加密成一整段密文,而是把明文拆分成一个个独立的明文块,每一个明文块长度128bit。
这些明文块经过AES加密器的复杂处理,生成一个个独立的密文块,这些密文块拼接在一起,就是最终的AES加密结果。
但是这里涉及到一个问题:
假如一段明文长度是192bit,如果按每128bit一个明文块来拆分的话,第二个明文块只有64bit,不足128bit。这时候怎么办呢?就需要对明文块进行填充(Padding)。AES在不同的语言实现中有许多不同的填充算法,我们只举出集中典型的填充来介绍一下。
不做任何填充,但是要求明文必须是16字节的整数倍。
如果明文块少于16个字节(128bit),在明文块末尾补足相应数量的字符,且每个字节的值等于缺少的字符数。
比如明文:{1,2,3,4,5,a,b,c,d,e},缺少6个字节,则补全为{1,2,3,4,5,a,b,c,d,e,6,6,6,6,6,6}
如果明文块少于16个字节(128bit),在明文块末尾补足相应数量的字节,最后一个字符值等于缺少的字符数,其他字符填充随机数。
比如明文:{1,2,3,4,5,a,b,c,d,e},缺少6个字节,则可能补全为{1,2,3,4,5,a,b,c,d,e,5,c,3,G,$,6}
需要注意的是,如果在AES加密的时候使用了某一种填充方式,解密的时候也必须采用同样的填充方式。
AES的工作模式,体现在把明文块加密成密文块的处理过程中。AES加密算法提供了五种不同的工作模式:
ECB、CBC、CTR、CFB、OFB
模式之间的主题思想是近似的,在处理细节上有一些差别。我们这一期只介绍各个模式的基本定义。
电码本模式 Electronic Codebook Book
密码分组链接模式 CipherBlock Chaining
计算器模式 Counter
密码反馈模式 CipherFeedBack
输出反馈模式 OutputFeedBack
如果在AES加密的时候使用了某一种工作模式,解密的时候也必须采用同样的工作模式。
AES加密主要包括两个步骤: 密钥扩展 和 明文加密 。
密钥扩展过程说明(密钥为16字节):
函数g的流程说明:
轮常量(Rcon)是一个字,最右边三个字节总为0。因此字与Rcon相异或,其结果只是与该字最左的那个字节相异或。每轮的轮常量不同,定位为Rcon[j] = (RC[j], 0, 0, 0)。(RC是一维数组)
RC生成函数:RC[1] = 1, RC[j] = 2 * RC[j – 1]。
因为16字节密钥的只进行10轮的扩展,所以最后生成的RC[j]的值按16进制表示为:
十轮的密钥扩展后,就能生成44个字大小的扩展密钥。扩展后的密钥将用于AES对明文的加密过程。
S盒是16×16个字节组成的矩阵,行列的索引值分别从0开始,到十六进制的F结束,每个字节的范围为(00-FF)。
进行字节代替的时候,把状态中的每个字节分为高4位和低4位。高4位作为行值,低4位作为列值,以这些行列值作为索引从S盒的对应位置取出元素作为输出,如下图所示:
S盒的构造方式如下:
(1) 按字节值得升序逐行初始化S盒。在行y列x的字节值是{yx}。
(2) 把S盒中的每个字节映射为它在有限域GF中的逆;{00}映射为它自身{00}。
(3) 把S盒中的每个字节的8个构成位记为(b7, b6, b5, b4, b3, b2, b1)。对S盒的每个字节的每个位做如下的变换:
ci指的是值为{63}的字节c的第i位。
解密过程逆字节代替使用的是逆S盒,构造方式为
字节d={05}。
逆向行移位将状态中后三行执行相反方向的移位操作,如第二行向右循环移动一个字节,其他行类似。
要注意,图示的矩阵的乘法和加法都是定义在GF(2^8)上的。
逆向列混淆原理如下:
轮密钥加后的分组再进行一次轮密钥加就能恢复原值.所以,只要经过密钥扩展和明文加密,就能将明文加密成密文,进行解密的时候,只需要进行逆向变换即可。
图[AES加密算法的流程]中还需要注意,明文输入到输入状态后,需要进行一轮的轮密钥加,对输入状态进行初始化。 前9轮的加密过程,都需要进行字节替代、行移位、列混淆和轮密钥加,但是第10轮则不再需要进行列混淆。
进行解密的时候,需要进行逆向字节替代,逆向行移位、逆向列混淆和轮密钥加。
Ⅳ PHP中哪种加密方式好
aes/des加密速度快,适合大量数据,des容易破解,一般用3重des,后来又出现了更快更安全的aes
rsa是公钥加密,速度慢,只能处理少量数据,优点是公钥即使在不安全的网络上公开,也能保证安全
常见情况是双方用rsa协商出一个密钥后通过aes/3des给数据加密。
bcrypt,是一个跨平台的文件加密工具。由它加密的文件可在所有支持的操作系统和处理器上进行转移。它的口令必须是8至56个字符,并将在内部被转化为448位的密钥。
综上所述用bcrypt还是好点,最好用md5安全性高,更多问题到后盾网论坛问题助专区http://bbs.hounwang.com/