对称密码体制和非对称密码体制
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
对称密码体制和⾮对称密码体制
⼀、对称加密 (Symmetric Key Encryption)
对称加密是最快速、最简单的⼀种加密⽅式,加密(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。
三、分组加密的四种⼯作模式
1、ECB (Electronic Code Book,电⼦编码本)
ECB 模式是最简单的加密模式,明⽂消息被分成固定⼤⼩的块(分组),并且每个块被单独加密。
每个块的加密和解密都是独⽴的,且使⽤相同的⽅法进⾏加密,所以可以进⾏并⾏计算,但是这种⽅法⼀旦有⼀个块被破解,使⽤相同的⽅法可以解密所有的明⽂数据,安全性⽐较差。
适⽤于数据较少的情形,加密前需要把明⽂数据填充到块⼤⼩的整倍数。
ECB算法优点:
简单、孤⽴,每个块单独运算。
适合并⾏运算。
传输错误⼀般只影响当前块。
ECB算法缺点:
同明⽂输出同密⽂,可能导致明⽂攻击。
Encryption:
Decryption:
2、CBC (Cipher Block Chaining, 密码分组链接)
CBC 模式中每⼀个分组要先和前⼀个分组加密后的数据进⾏XOR异或操作,然后再进⾏加密。
这样每个密⽂块依赖该块之前的所有明⽂块,为了保持每条消息都具有唯⼀性,第⼀个数据块进⾏加密之前需要⽤初始化向量IV进⾏异或操作。
CBC模式是⼀种最常⽤的加密模式,它主要缺点是加密是连续的,不能并⾏处理,并且与ECB⼀样消息块必须填充到块⼤⼩的整倍数。
CBC算法优点:
串⾏化运算,相同明⽂不同密⽂。
CBC算法缺点:
需要初始向量。
Encryption:
Decryption:
3、CFB (Cipher Feedback, 密码反馈)
CFB 模式和CBC模式⽐较相似,前⼀个分组的密⽂加密后和当前分组的明⽂XOR异或操作⽣成当前分组的密⽂。
CFB模式的解密和CBC模式的加密在流程上其实是⾮常相似的。
CFB算法优点:
同明⽂不同密⽂,分组密钥转换为流密码。
CFB算法缺点:
串⾏运算不利并⾏,传输错误可能导致后续传输块错误。
Encryption:
Decryption:
4、OFB (Output Feedback, 输出反馈)
OFB 模式将分组密码转换为同步流密码,也就是说可以根据明⽂长度先独⽴⽣成相应长度的流密码。
通过流程图可以看出,OFB和CFB⾮常相似,CFB是前⼀个分组的密⽂加密后XOR当前分组明⽂,OFB是前⼀个分组与前⼀个明⽂块异或之前的流密码XOR当前分组明⽂。
由于异或操作的对称性,OFB模式的解密和加密完全⼀样的流程。
OFB算法优点:
同明⽂不同密⽂,分组密钥转换为流密码。
OFB算法缺点:
串⾏运算不利并⾏,传输错误可能导致后续传输块错误。
Encryption:
Decryption:。