加密算法
常见的加密算法可以分成三类:对称加密算法、非对称加密算法、Hash算法
1. 对称加密算法
对称加密是使用 同一个秘钥 对信息进行加密解密。
这就类似于,我们对一个压缩包进行加密时输入一个密码,那么我们在解密时输入同一个密码进行解密,一个道理。
加密过程:明文+秘钥a,进行加密,输出密文。
解密过程:密文+秘钥a,进行解密,输出明文。
特点:
1.在多方通信中,秘钥的管理也会非常的麻烦。在数据传送前,发送方和接收方必须商定好秘钥,然后使双方都能保存好秘钥。其次,如果一方的秘钥被泄露,那么加密信息也就不安全了。
2.每对用户每次使用对称加密算法时,都需要使用其他人不知道的唯一秘钥,也就是说每一组收发方所使用的秘钥都是唯一的。例如:A电脑与B、C、D都有通信,那么A就要存储与B、C、D三台电脑通信所用的3个秘钥。这会使得收发方所拥有的秘钥数量巨大,秘钥管理成为双方的负担。
优点: 速度快,适合加密大量数据。
缺点: 秘钥的传递存在着安全隐患,若在网络上传输,秘钥泄露,则消息内容泄露。
常见算法:
DES(Data Encryption Standard):数据加密标准,速度较快,适用于加密大量数据的场合。
3DES(Triple DES):是基于DES,对一块数据用三个不同的秘钥进行三次加密,强度更高。
AES(Advanced Encryption Standard):高级加密标准,是下一代的加密算法标准,速度快,安全级别高。
2. 非对称加密算法
2.1 公钥加密,私钥解密
可以在不直接传递秘钥的情况下完成解密。这能够确保信息的安全性,避免了直接传递秘钥所造成的被破解的风险。
与对称加密算法不同,是一对秘钥来进行加密解密的过程,分别称为公钥和私钥。两者之间有数学相关,该加密算法的原理就是对一极大整数做因数分解的困难性来保证安全性。
一般有如下2种用法:
- 公钥加密,私钥解密。
- 私钥加密,公钥解密。
即如果用公钥对数据进行加密,只有用对应的私钥才能解密;
如果用私钥对数据进行加密,只有用对应的公钥才能解密。
从理论上讲,生成的公钥和私钥是对等的,只是两个数而已。把它们哪个公开出去用于加密,哪个保留起来用于解密都是一样的。但是,严格的讲,“私钥加密、公钥解密”这种说法是错误的。实际上,公钥和私钥在安全等方面,有完全不同的要求。故,我们常用的用法是:公钥加密,私钥解密
通常个人保存私钥,公钥是公开的(可能同时多人持有)。如下图所示:

公开的公钥,可以被多人(B、C、D)用于数据加密,生成的密文,只能由对应的私钥进行解密,而私钥只有A知道,我们可以通过网络传递公钥,但私钥从始至终没有传递,所以,在安全性上避免了私钥泄露导致数据泄露。
优点: 非对称加密与对称加密相比,其安全性更好,可以避免秘钥在传递过程中泄露。
缺点: 加密和解密花费时间长、速度慢,只适合对少量数据进行加密。
算法过程: B是发送方,A是接收方,A、B都有各自的公钥和私钥,B使用A的公钥对信息进行加密传输,A收到密文后使用A的私钥解密。
快记法则: 公钥加密,私钥解密。
常见算法:
RSA:由 RSA 公司发明,是一个支持变长秘钥的公共秘钥算法,需要加密的文件块的长度也是可变的。RSA 在国外早已进入适用阶段,已研制出多种高速的 RSA de 专用芯片。
DSA(Digital Signature Algorithm):数字签名算法,是一种标准的 DSS(数字签名标准)严格来说不算加密算法。
ECC(Elliptic Curves Cryptography):椭圆区县密码编码学。ECC 和 RSA 相比,具有多方面的优势,主要有:抗攻击性强。相同的秘钥长度,其抗攻击性要强很多倍。计算量小,处理速度快。ECC 总得速度比 RSA、DSA 要快得多。存储空间占用小。ECC 的秘钥尺寸和系统参数与RSA、DSA相比要小得多,意味着它所占的存储空间要小得多。这对于加密算法在IC卡上的应用具有特别重要的意义。带宽要求低。当对长消息进行加密解密时,三类密码系统有相同的带宽要求,但应用于短消息时ECC带宽要求却低得多。带宽要求低使ECC在无线网络领域具有广泛的应用前景。
2.2 数字签名防止信息被篡改
上述非对称加密方式看起来,安全性上似乎完美。但是实际上存在一个问题。我们还是以上图为例进行说明。
公钥是公开的,任何人可以获取,那就意味着,除了B、C、D以外的其他人,也可以轻易拿到公钥。那么,假设是在战场的场景下,别有用心的人就可以利用公钥将假的指令进行加密传递给A,虽然B、C、D传递的消息没有泄露,但是却不能避免别人篡改消息,A就不知道收到的消息到底是真的还是假的。
所以,在非对称加密的基础上进行了改进,解决密文在传输过程中可能被篡改的问题。那就是,对消息内容进行数字签名,证明这个数据的来源是B、C、D。
2.2.1 数字签名
数字签名的过程,如下图所示:

可以与第一小节中图所示对比,可以发现,B使用A的公钥加密数据前,增加了签名的步骤,将摘要信息用发送者B的私钥加密,与原始数据m一起,再使用接收者A的公钥进行二次加密,将密文传送给接收者A。
在进行数字签名时,我们常使用的是私钥签名,公钥验签。即:用私钥对摘要信息进行加密,用对应的公钥进行解密,得到摘要信息。注意与上一节中“公钥加密,私钥解密”使用场景进行区别。
注意:
签名:等同于加密;验签:等同于解密。
摘要信息的计算,在下一节介绍,此处只需要知道就是计算算法就行。
2.2.2 验签
验签的过程,如下图所示:

接收者A首先使用自己的私钥,对密文进行解密,得到签名+数据m,然后使用发送者B的公钥,对签名进行解密,得到摘要1;同时采用相同的摘要计算方式,计算数据m的摘要,得到摘要2。
比较摘要1和摘要2是否相同,如果相同,则说明原始数据m没有被篡改,这条消息不是伪造的,的确是由B发送。因为B的私钥,只由B自己保管,其他人只有公钥无法正确加密摘要信息。
小结:
快记法则:私钥签名,公钥验签。
数字签名过程:
- B生成一对秘钥(公钥和私钥),私钥不公开,B自己保留。公钥为公开的,任何人可以获取。
- B用自己的私钥对消息加签,形成签名,并将加签的消息和消息本身一起传递给A。
- A收到消息后,再获取B的公钥进行验签,如果验签出来的内容与消息本身一致,证明消息是B发送的。
所以在实际应用中,要根据实际情况,也可以同时使用加密和签名,达到既不泄露也不被篡改的效果,更能保证消息的安全性。
3. Hash加密算法(摘要算法)
上文中,我们提到的摘要算法,即此处的Hash算法。
3.1 单向算法,密文长度固定
Hash算法特别的地方就是它是一种单向算法,用户可以通过hash算法对目标信息生成一段特定长度的唯一hash值,却不能通过这个hash值重新获得目标信息。因此,Hash算法常用在不可还原的密码存储、信息完整性校验等。
Hash算法是不可逆的,而其他加密算法是可逆的。比如,常见的MD5,可以产生出一个128位(16字节)的散列值(hash value),用于确保文件内容的完整一致性。但无法由MD5值解密出文件的内容。
常见的Hash算法:
MD5:MD5是一种不可逆的加密算法,目前是最牢靠的加密算法之一,尚没有能够逆运算的程序被开发出来,它对应任何字符串都可以加密成一段唯一的固定长度的代码。
SHA1:是由NISTNSA设计为同DSA一起使用的,它对长度小于264的输入,产生长度为160bit的散列值,因此抗穷举(brute-force)性更好。SHA-1设计时基于和MD4相同原理,并且模仿了该算法。SHA-1是由美国标准技术局(NIST)颁布的国家标准,是一种应用最为广泛的Hash函数算法,也是目前最先进的加密技术,被政府部门和私营业主用来处理敏感的信息。而SHA-1基于MD5,MD5又基于MD4。
HMAC:是密钥相关的哈希运算消息认证码(Hash-based Message Authentication Code),HMAC运算利用哈希算法,以一个密钥和一个消息为输入,生成一个消息摘要作为输出。也就是说HMAC是需要一个密钥的。所以,HMAC_SHA1也是需要一个密钥的,而SHA1不需要。
CRC:(Cyclic Redundancy Check,循环冗余校验)算法出现时间较长,应用也十分广泛,尤其是通讯领域,现在应用最多的就是 CRC32 算法,它产生一个4字节(32位)的校验值,一般是以8位十六进制数,如FA 12 CD 45等。CRC算法的优点在于简便、速度快,严格的来说,CRC更应该被称为数据校验算法,但其功能与数据摘要算法类似,因此也作为测试的可选算法。
3.2 数字签名中使用的Hash算法
在2004年,证实MD5算法无法防止碰撞,因此不适用于安全性认证,如SSL公开秘钥或是数字签名等用途。
故而,目前,SHA-1是流行的用于创建数字签名的Hash算法。
文章详细介绍了加密算法的三种主要类型:对称加密(如DES、3DES、AES)、非对称加密(如RSA、DSA、ECC)以及Hash(包括MD5和SHA-1)。非对称加密中的数字签名概念被提出,用于防止信息篡改,而Hash算法因其单向性和固定长度的特性,常用于密码存储和信息完整性校验。
3643

被折叠的 条评论
为什么被折叠?



