1. 加密概述加密应用场景 1) 密码加密,常用于登录密码和支付密码等,此类加密的特点是希望密码加密之后不能被解密,因此可以比较安全的保存密码而不会泄漏明文,因此适合用不可逆加密算法,且不需要密钥,目前这类加密算法唯一的破解方法是暴力破解,即用密码字典等手段 不可逆的加密算法有md5 2) 网络传输报文加密 网络传输如果用明文,容易被截取,之后泄漏用户敏感信息,因此对于交易类等安全要求较高的报文传输,要对其进行加密,且要选择可逆的加密算法,服务端需要解密,可以选择的加密算法有rsa,3des等 3des加密的缺陷: 3des属于对称加密算法,即加密和解密都是用的同一密钥,因此,分发和传递密钥中会泄密密钥。 假想方案一:双方约定一个加密密钥,密钥可以通过线下密函分发,这样只要双方保证密钥不被泄漏,那么加密将是安全的 但是该方案仍然存在如下缺点: 1. 密钥如果长期不更换,容易泄漏,那么又要分发一次密钥,这是不安全的 2. 如果客户端为普通用户使用,那么就无法保证密钥的安全性,因此不适合用3des 这里指的是持久化保存密钥。 假想方案二:每次请求都产生一个随机的密钥,通过网络将密钥和传输到服务端,这样客户端就不需要保存密钥,然后网络传输密钥仍然是不安全的 Rsa加密的缺陷: Rsa加密报文的速度很慢,适合用户少量数据加密 那么有没有更好的方案呢,当然有,那就是将rsa和3des结合起来加密 用3des加密报文,用rsa加密3des的密钥,这样在传输过程中,可以保证3des的密钥不被泄漏,从而保证报文的密文不被破解 加密方式举例: 请求报文:rsa公钥(3des加密密钥)|3des(报文明文) 响应报文:3des(报文明文) 具体方案流程: 1) 首先客户端在每次请求服务端的时候,随机产生一个3des密钥,且在客户端程序的内存中暂时保存该密钥 2) 然后用3des对报文明文进行加密得到密文m 3) 用rsa公钥对3des密钥进行加密得到密文n 4) 将m和n拼接起来发送给服务端 5) 服务端用rsa私钥将3des的密钥解密 6) 并用3des密钥解密报文 7) 响应时,用3des对响应报文进行加密 8) 客户端用保存起来的3des密钥对响应报文解密 9) 解密之后丢弃3des密钥 2. 签名概述签名的意义: 数字签名可以保证信息的原始性、完整性,因此,数字签名可以解决否认、伪造、篡改及冒充等问题。具体要求:发送者事后不能否认发送的报文签名、接收者能够核实发送者发送的报文签名、接收者不能伪造发送者的报文签名、接收者不能对发送者的报文进行部分篡改、网络中的某一用户不能冒充另一用户作为发送者或接收者 具体方案: 方案一(md5加密算法+密钥进行签名): 首先在数据的发送方,将报文和密钥拼接起来,再进行md5加密,加密之后的报文就叫签名,然后签名和原报文拼接起来发送至服务端,服务端也有一个密钥,对签名进行验签,这样即使报文传输过程中被篡改,由于篡改者不知道密钥,也就没办法算出正确的签名,因此服务端验签就不过,而且这个签名是跟客户端绑定的,也就保证了报文来自合法的客户端 方案1的效果: 保证数据传输的完整性 保证数据来源于合法的客户端,即其他用户(除服务端外)无法伪造或者篡改 但是客户端可以抵赖,因为服务端可以模拟该签名 此方案典型的案例就是md5签名 方案二(mac签名) 采用一个密钥,将报文分段用des加密 和方案1差不多,由于该方案中,密钥与报文加密的算法更复杂,因此较md5更安全 方案三(rsa+md5) 用md5算法将报文加密得到一个串m,用rsa私钥对m加密得到签名s 接收者对报文用md5加密得到m1,用rsa公钥解密s得到m2,比较m1和m2 该方案达到了方案1的效果,且加密算法也是安全的,而且由于发送者的密钥是唯一的,即使是接收者,也不能伪造签名,因此发送者不能抵赖自己的签名 3. 加密算法分类对称与非对称 从密钥的角度来看,加密算法分为对称加密和非对称加密 对称加密: 加密密码和解密密码是相同的 Des 3des 非对称加密: 加密密码和解密密码是不相同的 Rsa 可逆与不可逆 从可逆角度来看,可以分为不可逆和可逆算法 不可逆:md5,加完密之后不可解密 可逆加密: Rsa,des,3des 加完密之后可解 4. md5加密用途:常用于密码加密和签名 基本算法为求余 原理请参考文章:http://www./blog/index.php/2271-md5jiamisuanfa-2.html 5. des原理 DES 使用一个 56 位的密钥以及附加的 8 位奇偶校验位,产生最大 64 位的分组大小。这是一个迭代的分组密码,使用称为 Feistel 的技术,其中将加密的文本块分成两半。使用子密钥对其中一半应用循环功能,然后将输出与另一半进行“异或”运算;接着交换这两半,这一过程会继续下去,但最后一个循环不交换。DES 使用 16 个循环,使用异或,置换,代换,移位操作四种基本运算。 详情请参考:http://aub./blog/1131504 6. 3des比des加密更安全的一种加密算法 7. rsa加密:公钥加密,私钥解密,知道公钥,密文,明文无法推导私钥,只有私钥才能进行解密,只要保管好私钥,密文将不会泄密,加密安全度高 原理请参考文章: RSA算法原理1http://www./blog/2013/06/rsa_algorithm_part_one.html RSA算法原理2 http://www./blog/2013/07/rsa_algorithm_part_two.html 8. httpshttps也是基于非对称加密算法(如rsa)和对称加密算法(如3des)进行加密的 |
|