对称加密是最快速, 最简单的一种加密方式, 加密 (encryption) 与解密 (decryption) 用的是同样的密钥 (secret key). 对称加密有很多种算法, 由于它效率很高, 所以被广泛使用在很多加密协议的核心当中. 自 1977 年美国颁布 DES(Data Encryption Standard) 密码算法作为美国数据加密标准以来, 对称密码体制迅速发展, 得到了世界各国的关注和普遍应用. 对称密码体制从工作方式上可以分为分组加密和序列密码两大类.
对称加密算法的优点: 算法公开, 计算量小, 加密速度快, 加密效率高.
对称加密算法的缺点: 交易双方都使用同样钥匙, 安全性得不到保证. 此外, 每对用户每次使用对称加密算法时, 都需要使用其他人不知道的惟一钥匙, 这会使得发收信双方所拥有的钥匙数量呈几何级数增长, 密钥管理成为用户的负担. 对称加密算法在分布式网络系统上使用较为困难, 主要是因为密钥管理困难, 使用成本较高. 而与公开密钥加密算法比起来, 对称加密算法能够提供加密和认证却缺乏了签名功能, 使得使用范围有所缩小.
对称加密通常使用的是相对较小的密钥, 一般小于 256 bit. 因为密钥越大, 加密越强, 但加密与解密的过程越慢. 如果你只用 1 bit 来做这个密钥, 那黑客们可以先试着用 0 来解密, 不行的话就再用 1 解; 但如果你的密钥有 1 MB 大, 黑客们可能永远也无法破解, 但加密和解密的过程要花费很长的时间. 密钥的大小既要照顾到安全性, 也要照顾到效率, 是一个 trade-off.
分组密码, 也叫块加密(block cyphers), 一次加密明文中的一个块. 是将明文按一定的位长分组, 明文组经过加密运算得到密文组, 密文组经过解密运算(加密运算的逆运算), 还原成明文组, 有 ECB,CBC,CFB,OFB 四种工作模式.
序列密码, 也叫流加密 (stream cyphers), 一次加密明文中的一个位. 是指利用少量的密钥(制乱元素) 通过某种复杂的运算 (密码算法) 产生大量的伪随机位流, 用于对明文位流的加密. 解密是指用同样的密钥和密码算法及与加密相同的伪随机位流, 用以还原明文位流.
常用对称加密算法包括 DES,3DES,AES
1. DES(Data Encryption Standard): 数据加密标准, 速度较快, 适用于加密大量数据的场合.
2. 3DES(Triple DES): 是基于 DES, 对一块数据用三个不同的密钥进行三次加密, 强度更高.
3. AES(Advanced Encryption Standard): 高级加密标准, 是下一代的加密算法标准, 速度快, 安全级别高, 支持 128,192,256,512 位密钥的加密.
算法特征
1. 加密方和解密方使用同一个密钥.
2. 加密解密的速度比较快, 适合数据比较长时的使用.
3. 密钥传输的过程不安全, 且容易被破解, 密钥管理也比较麻烦.
非对称加密(Asymmetric Key Encryption)
非对称加密为数据的加密与解密提供了一个非常安全的方法, 它使用了一对密钥, 公钥 (public key) 和私钥(private key). 私钥只能由一方安全保管, 不能外泄, 而公钥则可以发给任何请求它的人. 非对称加密使用这对密钥中的一个进行加密, 而解密则需要另一个密钥. 比如, 你向银行请求公钥, 银行将公钥发给你, 你使用公钥对消息加密, 那么只有私钥的持有人 -- 银行才能对你的消息解密. 与对称加密不同的是, 银行不需要将私钥通过网络发送出去, 因此安全性大大提高.
非对称加密算法的优点: 安全性更高, 公钥是公开的, 秘钥是自己保存的, 不需要将私钥给别人.
非对称加密算法的缺点: 加密和解密花费时间长, 速度慢, 只适合对少量数据进行加密.
对称加密算法相比非对称加密算法来说, 加解密的效率要高得多. 但是缺陷在于对于秘钥的管理上, 以及在非安全信道中通讯时, 密钥交换的安全性不能保障. 所以在实际的网络环境中, 会将两者混合使用.
非对称加密算法包括 RSA,Elgamal, 背包算法, Rabin,D-H,ECC(椭圆曲线加密算法), 常见的有 RSA,ECC.
分组加密的四种工作模式
ECB (Electronic Code Book, 电子编码本)
ECB 模式是最简单的加密模式, 明文消息被分成固定大小的块(分组), 并且每个块被单独加密. 每个块的加密和解密都是独立的, 且使用相同的方法进行加密, 所以可以进行并行计算, 但是这种方法一旦有一个块被破解, 使用相同的方法可以解密所有的明文数据, 安全性比较差. 适用于数据较少的情形, 加密前需要把明文数据填充到块大小的整倍数.
ECB 算法优点:
简单, 孤立, 每个块单独运算. 适合并行运算. 传输错误一般只影响当前块.
ECB 算法缺点:
同明文输出同密文, 可能导致明文攻击.
Encryption:
Decryption:
CBC (Cipher Block Chaining, 密码分组链接)
CBC 模式中每一个分组要先和前一个分组加密后的数据进行 XOR 异或操作, 然后再进行加密. 这样每个密文块依赖该块之前的所有明文块, 为了保持每条消息都具有唯一性, 第一个数据块进行加密之前需要用初始化向量 IV 进行异或操作. CBC 模式是一种最常用的加密模式, 它主要缺点是加密是连续的, 不能并行处理, 并且与 ECB 一样消息块必须填充到块大小的整倍数.
CBC 算法优点:
串行化运算, 相同明文不同密文.
CBC 算法缺点:
需要初始向量.
Encryption:
Decryption:
CFB (Cipher Feedback, 密码反馈)
CFB 模式和 CBC 模式比较相似, 前一个分组的密文加密后和当前分组的明文 XOR 异或操作生成当前分组的密文. CFB 模式的解密和 CBC 模式的加密在流程上其实是非常相似的.
CFB 算法优点:
同明文不同密文, 分组密钥转换为流密码.
CFB 算法缺点:
串行运算不利并行, 传输错误可能导致后续传输块错误.
Encryption:
Decryption:
OFB (Output Feedback, 输出反馈)
OFB 模式将分组密码转换为同步流密码, 也就是说可以根据明文长度先独立生成相应长度的流密码. 通过流程图可以看出, OFB 和 CFB 非常相似, CFB 是前一个分组的密文加密后 XOR 当前分组明文, OFB 是前一个分组与前一个明文块异或之前的流密码 XOR 当前分组明文. 由于异或操作的对称性, OFB 模式的解密和加密完全一样的流程.
OFB 算法优点:
同明文不同密文, 分组密钥转换为流密码.
OFB 算法缺点:
串行运算不利并行, 传输错误可能导致后续传输块错误.
Encryption:
Decryption:
来源: https://www.cnblogs.com/prettygirll/p/10589517.html