现代的加密技术主要有三种:对称加密,非对称加密,单项加密。
这三种加密解密技术的组合就是现在电子商务的基础,它们三个有各自最适应的领域,而且所要完成的功能也是不同的,大家都知道,只要我们连上互联网,那么我们就相当于是大门洞开,我们的一些隐私,跟其他人对话内容等都可能会被人窃取到,最常见的比如man in the middle(中间人),它主要是因为双方身份无法验证的时候会话被劫持造成的,就是说通信双方都以为是在跟对方交流,其实内容都可能已经被这个“中间人”修改过了,一些重要的信息也被这个“中间人”所获得,这对于现在的电子商务来说是致命的,所以我们必须找到一种解决方案来解决这个问题。
对称加密:指的是加密方和解密方使用的是同一个密钥,其优点是加密和解密的速度很快;但是如果两个从未通信过的用户要进行通信的时候,该如何把解密的密钥传输给对方呢(密钥仍然要在网络上传输,所以密钥还是可能会被“中间人”截获),这是对称加密最大的缺点;常见的对称加密算法有:
DES:使用56位的密钥,2000年的时候被人破解了,所以现在基本不再使用。
AES:高级加密标准,可以使用128,192,256三种不同长度密钥。
其他的还有blowfish,Twofish和RC6,IDEA(商业算法),CAST5等。
非对称加密:非对称加密方式解决了对称加密的“软肋”,它的加密和解密密钥是不同的,比如对一组数字加密,我们可以用公钥对其加密,然后我们想将其还原,就必须用私钥解密,并且公钥和私钥是配对使用的(读者可以把其想像成一把钥匙一把锁的关系),常见的非对称加密算法有:
RSA:既可以用来加密解密,又可以用来实现用户认证。
DSA:只能用来加密解密,所以使用范围没有RSA广。
非对称加密的长度通常有512,1024,2048,4096位,最常用的就是2048bit,长度固然可以增加安全性但是需要花费很长时间来进行加密/解密,和对称加密相比来说,加密/解密的时间差不多是对称加密的1000倍,所以我们通常用其作为用户认证,用对称加密来实现数据加密/解密。
单项加密:单项加密就是用来计算一端数据的特征码的(读者可以把这段特征码想象成一个人的身份证),为了防止用户通过“暴力破解”的方式来解密,所以单项加密一般具有“雪崩效应”,就是说:只要被加密内容有一点点的不同,加密所得结果就会有很大的变化。单项加密还有一个特点就是无论被加密内容多长/短,加密的结果(就是提取的特征码)是定长的。用途:用于验证数据完整性。常用的单项加密算法:
MD5:message digest 这种加密算法的固定长度为128bit。
SHA1:secure hash algorithm这种解密算法的固定长度是160bit。
下图是作者为了解释三种加密算法在我们internet上的使用所作的一个说明:
解释如下,先说BOB和ALICE通信阶段。
黑框A:表示要传输的数据。
黑框B:就是单项加密对这段数据提取的特征码,这段特征码同时运用了非对称加密,具体过程是用BOB的私钥加密,传输给ALICE,只要到达后ALICE能解密,表明对方确实是BOB。这一过程同时起到了用户认证和数据完整性的校验。黑框B又称为数字签名。
红框A:这一阶段会生成一段很长的随机数(密钥)然后配合对称加密算法对黑框A和黑框B加密,但是我们如何把加密的密钥传输给ALICE呢?这就要用到红框B了。
红框B:这一阶段是用ALICE的公钥加密这串随机数(对称加密阶段的密钥),ALICE接受到数据后如果能用自己私钥解密,那就证明接受者确实ALICE。
加密过程:
第一步:用单向加密算法提取数据(黑框A)的特征值。
第二步:用自己的私钥加密这段特征值形成黑框B。
第三步:用对称加密算法,对黑框A和黑框B来加密,得到红框A。
第四步:用ALICE的公钥来加密第三步所用的密钥,得到红框B。
进行完上述内容厉害的读者会发现一个问题就是BOB和ALICE如何获得对方的公钥,或者说如何证明获得的公钥就是对方,这就需要引入另一方证书颁发机构CA,下面是对证书颁发机构跟BOB/ALICE之间的解释。
黑框C:代表要颁发给BOB/ALICE的公钥,组织,地址等信息。
黑框D:是对黑框C进行单向加密后得到的数字签名,然后用自己的私钥对其加密,传输给BOB和ALICE,拿着这个证书颁发机构的公钥(这些证书颁发机构的公钥一般已经被microsoft事先放在windows里面,当然其他操作系统也是一样的)的BOB和ALICE如果能对这个证书进行解密,说明这个证书颁发机构不是冒充的。
红框E:表示颁发给BOB和ALICE的证书。
传输阶段跟BOB和ALICE之间通信相似,同样是用到了单向加密,对称加密,非对称加密技术。