一、什么是对称加密技术?
对称加密采用了对称密码编码技术,它的特点是文件加密和解密使用相同的密钥。信息接收双方都需事先知道密匙和加解密算法,且其密匙是相同的,之后便是对数据进行加解密了。对称加密算法用来对敏感数据等信息进行加密。对称加密算法使用起来简单快捷,密钥较短,且破译困难。除了数据加密标准(DESData Encryption Standard
),另一个对称密钥加密系统是国际数据加密算法(IDEA),它比DES的加密性好,而且对计算机功能要求也没有那么高。
1️⃣优点:
算法公开、计算量小、加密速度快、加密效率高
2️⃣缺点:
在数据传送前,发送方和接收方必须商定好秘钥,然后使双方都能保存好秘钥。其次如果一方的秘钥被泄露,那么加密信息也就不安全了。另外,每组用户每次使用对称加密算法时,都需要使用其他人不知道的唯一秘钥,这会使得收、发双方所拥有的钥匙数量巨大,密钥管理成为双方的负担。
常见的对称加密算法有: DES、3DES、AES、Blowfish、IDEA、RC4、RC5、RC6
1️⃣DES 加密算法是 IBM 公司于 1975 年研究成功并公开发表的。DES 算法的入口参数有三个:Key、Data、Mode。其中 Key 为 8 个字节共 64 位,是 DES 算法的工作密钥;Data 也为 8 个字节 64 位,是要被加密或被解密的数据。数据加密标准,速度较快,适用于加密大量数据的场合。
2️⃣3DES(Triple DES)是三重数据加密算法(TDEA)密码的通称。它相当于是对每个数据块应用三次 DES 加密算法。由于计算机运算能力的增强,原版 DES 密码的密钥长度变得容易被暴力破解;3DES 通过增加 DES 的密钥长度来避免类似的攻击,而不是设计一种全新的块密码算法。
3️⃣AES:又称 Rijndael 加密法,是美国联邦政府采用的一种区块加密标准。用来替代原先的 DES。目前已然成为对称密钥加密中的算法之一。高级加密标准,是下一代的加密算法标准,速度快,安全级别高。
4️⃣RC2 是由密码学家 Ron Rivest 设计的一种传统对称分组加密算法,它可作为 DES 算法的建议替代算法。它的输入和输出都是 64 比特。密钥的长度是从 1 字节到 128 字节可变。
5️⃣RC4 加密算法是大名鼎鼎的 RSA 三人组中的头号人物 Ronald Rivest 在 1987 年设计的密钥长度可变的流加密算法簇。由于 RC4 核心部分的 S-box 长度可为任意,该算法的速度可以达到 DES 加密的 10 倍左右,且具有很高级别的非线性。
6️⃣RC5 分组密码算法是 1994 由麻萨诸塞技术研究所的 Ronald L. Rivest 教授发明的,并由 RSA 实验室分析。它是参数可变的分组密码算法,三个可变的参数是:分组大小、密钥大小和加密轮数。在 RC5 算法中使用了三种运算:异或、加和循环。
二、对称加密算法在电子商务交易过程中存在的问题
1️⃣要求提供一条安全的渠道使通讯双方在首次通讯时协商一个共同的密钥。直接的面对面协商可能是不现实而且难于实施的,所以双方可能需要借助于邮件和电话等其它相对不够安全的手段来进行协商。
2️⃣密钥的数目难于管理。因为对于每一个合作者都需要使用不同的密钥,很难适应开放社会中大量的信息交流。
3️⃣对称加密算法一般不能提供信息完整性的鉴别。它无法验证发送者和接受者的身份。
4️⃣对称密钥的管理和分发工作是一件具有潜在危险的和繁琐的过程。对称加密是基于共同保守秘密来实现的,采用对称加密技术的贸易双方必须保证采用的是相同的密钥,保证彼此密钥的交换是安全可靠的,同时还要设定防止密钥泄密和更改密钥的程序。
假设两个用户需要使用对称加密方法加密然后交换数据,则用户最少需要 2 个密钥并交换使用。如果企业内用户有 n 个,则整个企业共需要 n×(n-1) 个密钥,密钥的生成和分发将成为企业信息部门的恶梦。
三、什么是非对称加密技术非对称加密的典型应用是数字签名。
与对称加密算法不同,非对称加密算法需要两个密钥:公开密钥(public key)和私有密钥(private key)。公开密钥与私有密钥是一对,如果用公开密钥对数据进行加密,只有用对应的私有密钥才能解密;如果用私有密钥对数据进行加密,那么只有用对应的公开密钥才能解密。
因为加密和解密使用的是两个不同的密钥,所以这种算法叫作非对称加密算法。
非对称加密算法实现机密信息交换的基本过程是:甲方生成一对密钥并将其中的一把作为公用密钥向其它方公开;得到该公用密钥的乙方使用该密钥对机密信息进行加密后再发送给甲方;甲方再用自己保存的另一把专用密钥对加密后的信息进行解密。甲方只能用其专用密钥解密由其公用密钥加密后的任何信息。另一方面,甲方可以使用乙方的公钥对机密信息进行签名后再发送给乙方;乙方再用自己的私匙对数据进行验签。
1️⃣A要向B发送信息,A和B都要产生一对用于加密和解密的公钥和私钥。
2️⃣A的私钥保密,A的公钥告诉B;B的私钥保密,B的公钥告诉A。
3️⃣A要给B发送信息时,A用B的公钥加密信息,因为A知道B的公钥。
4️⃣A将用B的公钥加密过的消息发给B。
5️⃣B收到消息后,B用自己的私钥解密A的消息。其他所有收到这个报文的人都无法解密,因为只有B才有B的私钥。
四、非对称密码体制的特点
1️⃣算法强度复杂
2️⃣安全性高:安全性依赖于算法与密钥。但是由于其算法复杂,而使得加解密速度没有对称加解密的速度快。对称加密体制中只有一种密钥,并且是非公开的,如果要解密就得让对方知道密钥。所以保证其安全性就是保证密钥的安全;而非对称加密体制有两种密钥,其中一个是公开的,这样就可以不需要像对称加密那样传输对方的密钥了。这样安全性就大了很多。
3️⃣非对称加密算法的保密性比较好,它消除了最终用户交换密钥的需要。
常见的非对称加密算法有:RSA、ECC(椭圆曲线加密算法,移动设备用)、Diffie-Hellman、Elgamal、DSA(数字签名用)、背包算法、Rabin
RSA:由 RSA 公司发明,是一个支持变长密钥的公共密钥算法,需要加密的文件块的长度也是可变的。RSA 在国外早已进入实用阶段,已研制出多种高速的 RSA 的专用芯片。
ECC(Elliptic Curves Cryptography):椭圆曲线密码编码学。ECC 和 RSA 相比,具有多方面的绝对优势,主要有:抗攻击性强。相同的密钥长度,其抗攻击性要强很多倍。计算量小,处理速度快。ECC 总的速度比 RSA、DSA 要快得多。存储空间占用小。ECC 的密钥尺寸和系统参数与 RSA、DSA 相比要小得多,意味着它所占的存贮空间要小得多。这对于加密算法在 IC 卡上的应用具有特别重要的意义。带宽要求低。当对长消息进行加解密时,三类密码系统有相同的带宽要求,但应用于短消息时 ECC 带宽要求却低得多。带宽要求低使 ECC 在无线网络领域具有广泛的应用前景。
DSA(Digital Signature Algorithm):数字签名算法,是一种标准的 DSS(数字签名标准),严格来说不算加密算法。
五、Hash 算法(摘要算法)
散列算法,又称哈希函数,是一种单向加密算法。在信息安全技术中,经常需要验证消息的完整性,散列(Hash)函数提供了这一服务,它对不同长度的输入消息,产生固定长度的输出。这个固定长度的输出称为原输入消息的“散列”或“消息摘要(Message digest)”。散列算法不算加密算法,因为其结果不可逆,用户通过 hash 算法对目标信息生成一段特定长度的唯一 hash 值,却不能通过这个 hash 值重新获得目标信息。既然是不可逆的,那么当然不是用来加密的,而是签名。因此 Hash 算法常用在不可还原的密码存储、信息完整性校验等。
用途:主要用于验证,防止信息被修改。具体用途如:文件校验、数字签名、鉴权协议
常见的 Hash 算法有MD2、MD4、MD5、HAVAL、SHA。
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 不需要。
六、Base64 只能算是一个编码算法
Base64 其实不是安全领域下的加解密算法,只能算是一个编码算法,通常用于把二进制数据编码为可写的字符形式的数据,对数据内容进行编码来适合传输(可以对 img 图像编码用于传输)。这是一种可逆的编码方式。编码后的数据是一个字符串,其中包含的字符为:A-Z、a-z、0-9、+、/,共 64 个字符(26 + 26 + 10 + 1 + 1 = 64,其实是 65 个字符,“=” 是填充字符。Base64 要求把每三个 8 Bit 的字节转换为四个 6 Bit 的字节(38 = 46 = 24),然后把 6 Bit 再添两位高位 0,组成四个 8 Bit 的字节,也就是说,转换后的字符串理论上将要比原来的长 1/3。原文的字节最后不够 3 个的地方用 0 来补足,转换时 Base64 编码用 “=” 号来代替。这就是为什么有些 Base64 编码会以一个或两个等号结束的原因,中间是不可能出现等号的,但等号最多只有两个。其实不用 “=” 也不耽误解码,之所以用,可能是考虑到多段编码后的 Base64 字符串拼起来也不会引起混淆。)
Base64 编码是从二进制到字符的过程,像一些中文字符用不同的编码转为二进制时,产生的二进制是不一样的,所以最终产生的 Base64 字符也不一样。例如“上网”对应 utf-8 格式的 Base64 编码是“5LiK572R”, 对应 GB2312 格式的 Base64 编码是“yc/N+A==”。
标准的 Base64 并不适合直接放在 URL 里传输,因为 URL 编码器会把标准 Base64 中的“/”和“+”字符变为形如“%XX”的形式,而这些“%”号在存入数据库时还需要再进行转换,因为 ANSI SQL 中已将“%”号用作通配符。
为解决此问题,可采用一种用于 URL 的改进 Base64 编码,它不在末尾填充“=”号,并将标准 Base64 中的“+”和“/”分别改成了“-”和“_”,这样就免去了在 URL 编解码和数据库存储时所要作的转换,避免了编码信息长度在此过程中的增加,并统一了数据库、表单等处对象标识符的格式。
另有一种用于正则表达式的改进 Base64 变种,它将“+”和“/”改成了“!”和“-”,因为“+”,“*”以及前面在 IRCu 中用到的“[”和“]”在正则表达式中都可能具有特殊含义。
此外还有一些变种,它们将“+/”改为“-”或“.”(用作编程语言中的标识符名称)或“.-”(用于XML中的Nmtoken)甚至“_:”(用于XML中的Name)。
七、总结
加密算法是可逆的,用来对敏感数据进行保护。散列算法(签名算法、哈希算法)是不可逆的,主要用于身份验证。
对称加密算法使用同一个密匙加密和解密,速度快,适合给大量数据加密。对称加密客户端和服务端使用同一个密匙,存在被抓包破解的风险。
非对称加密算法使用公钥加密,私钥解密,私钥签名,公钥验签。安全性比对称加密高,但速度较慢。非对称加密使用两个密匙,服务端和客户端密匙不一样,私钥放在服务端,黑客一般是拿不到的,安全性高。
Base64 不是安全领域下的加解密算法,只是一个编码算法,通常用于把二进制数据编码为可写的字符形式的数据,特别适合在 http,mime 协议下的网络快速传输数据。UTF-8 和 GBK 中文的 Base64 编码结果是不同的。采用 Base64 编码不仅比较简短,同时也具有不可读性,即所编码的数据不会被人用肉眼所直接看到,但这种方式很初级,很简单。Base64 可以对图片文件进行编码传输。
https 协议广泛用于万维网上安全敏感的通讯,例如交易支付方面。它的主要作用可以分为两种:一种是建立一个信息安全通道,来保证数据传输的安全;另一种就是确认网站的真实性。
大量数据加密建议采用对称加密算法,提高加解密速度;小量的机密数据,可以采用非对称加密算法。在实际的操作过程中,通常采用的方式是:采用非对称加密算法管理对称算法的密钥,然后用对称加密算法加密数据,这样就集成了两类加密算法的优点,既实现了加密速度快的优点,又实现了安全方便管理密钥的优点。
MD5 标准密钥长度 128 位(128 位是指二进制位。二进制太长,所以一般都改写成 16 进制,每一位 16 进制数可以代替 4 位二进制数,所以 128 位二进制数写成 16 进制就变成了 128/4=32位。16 位加密就是从 32 位 MD5 散列中把中间 16 位提取出来);sha1 标准密钥长度 160 位(比 MD5 摘要长 32 位),Base64 转换后的字符串理论上将要比原来的长 1/3。