对称算法与非对称算法

一、密码学术语

中文英文中文英文
发送者sender接收者receiver
消息message窃听者eavesdropper
破译者cryptanalyst密码破译cryptanalysis
加密encrypt解密decrypt
明文plaintext密文ciphertext
算法algorithm密钥key
对称密码symmetric cryptography公钥密码public-key cryptography
非对称密码asymmetric cryptography混合密码系统hybrid cryptosystem

 

二、对称算法


2.1 定义

对称算法,加解密双方使用一个密钥。即加密秘钥和解密秘钥相同。

对称加密又分为:分组加密和流加密

2.2 分组加密

分组加密是每次只能处理特定长度的一块数据的一类密码算法,这里的“一块”就称为分组(block)。一个分组的比特数就称为分组长度(block lenght)。

常见的分组算法有:DES、3DES、DESX、Blowfish、IDEA、RC2、RC5、RC6和AES,以及中国的SSF33、SM1、SM4。

分组加密又可以根据其迭代模式分为ECB,CBC,OFB,CFB,CTR。

这里我们只介绍常用的两种算法:DES和3DES

2.2.1 DES算法

DES是一种将64比特的明文加密成64比特的密文的对称密码算法,它的密钥长度是56比特。尽管从规格上来说,DES的密钥长度是64比特,但由于每个7比特会设置一个用于错误检查的比特,因此实质上其密钥长度是56比特。

(DES已经能够被暴力破解,因此现在不应该再使用DES了。)

2.2.2 3DES算法

三重DES是为了增加DES的强度,将DES重复3次所得到的一种密码算法,通常缩写为3DES,当三重DES中所有的密钥都相同时,三重DES就等同于普通的DES了。这是因为在两步加密、解密之后,得到的就是最初的明文。因此,以前用DES加密的密文,就可以通过这种方式用三重DES来进行解密,也就是说三重DES对DES具备向下兼容性。
  按照使用的密钥,分为DES-EDE2和DES-EDE3。如果密钥1和密钥3使用相同的密钥,而密钥2使用不同的密钥(也就是只使用两个DES密钥),这种三重就称为DES-EDE2。密钥1、密钥2、密钥3全部使用不同的比特序列的三重DES称为DES-EDE3。

2.3 迭代模式

分组密码算法只能加密固定长度的分组,但是我们需要加密的明文长度可能会超过分组密码的分组长度,这时就需要对分组密码算法进行迭代,以便将一段很长的明文全部加密。而迭代的方法就称为分组密码的迭代模式(mode)。

2.1 电子密码本模式 Electronic Code Book(ECB)

这种模式是最早采用和最简单的模式,它将加密的数据分成若干组,每组的大小跟加密密钥长度相同,然后每组都用相同的密钥进行加密。
其缺点是:电子编码薄模式用一个密钥加密消息的所有块,如果原消息中重复明文块,则加密消息中的相应密文块也会重复,因此,电子编码薄模式适于加密小消息。

2.2 加密块链模式 Cipher Block Chaining(CBC)

CBC 模式的加密首先也是将明文分成固定长度的块,然后将前面一个加密块输出的密文与下一个要加密的明文块进行异或操作,将计算结果再用密钥进行加密得到密文。
第一明文块加密的时候,因为前面没有加密的密文,所以需要一个初始化向量。跟 ECB方式不一样,通过连接关系,使得密文跟明文不再是一一对应的关系,破解起来更困难,
而且克服了只要简单调换密文块可能达到目的的攻击。

2.3 加密反馈模式 Cipher Feedback Mode(CFB)

面向字符的应用程序的加密要使用流加密法,可以使用加密反馈模式。在此模式下,数据用更小的单元加密,如可以是 8 位,这个长度小于定义的块长(通常是 64 位)。其加密步骤是:
a) 使用 64 位的初始化向量。初始化向量放在移位寄存器中,在第一步加密,产生相应的 64 位初始化密文;
b) 始化向量最左边的 8 位与明文前 8 位进行异或运算,产生密文第一部分(假设为 c),然后将 c 传输到接收方;
c) 向量的位(即初始化向量所在的移位寄存器内容)左移 8 位,使移位寄存器最右边的 8 位为不可预测的数据,在其中填入 c 的内容;
d) 第 1-3 步,直到加密所有的明文单元。
解密过程相反

2.4 输出反馈模式 Output Feedback Mode(OFB)

输出反馈模式与 CFB 相似,惟一差别是, CFB 中密文填入加密过程下一阶段,而
在 OFB 中,初始化向量加密过程的输入填入加密过程下一阶段

三、非对称算法

1. 定义

非对称算法也叫公钥算法,在公钥密码系统中,加密和解密使用的是不同的密钥,这两个密钥之间存在着相互依存关系:即用其中任一个密钥加密的信息只能用另一个密钥进行解密。

这使得通信双方无需事先交换密钥就可进行保密通信。其中加密密钥和算法是对外公开的,人人都可以通过这个密钥加密文件然后发给收信者,这个加密密钥又称为公钥;

而收信者收到加密文件后,它可以使用他的解密密钥解密,这个密钥是由他自己私人掌管的,并不需要分发,因此又成称为私钥,这就解决了密钥分发的问题。

2. 分类

主要的公钥算法有: RSA、 DSA、 DH 和 ECC。

2.1 RSA算法

当前最著名、应用最广泛的公钥系统 RSA 是在 1978 年,由美国麻省理工学院(MIT)的Rivest、 Shamir 和 Adleman 在题为《获得数字签名和公开钥密码系统的方法》的论文中提出的。

它是一个基于数论的非对称(公开钥)密码体制,是一种分组密码体制。其名称来自于三个发明者的姓名首字母。 它的安全性是基于大整数素因子分解的困难性,而大整数因子分解问题是数学上的著名难题,

至今没有有效的方法予以解决,因此可以确保 RSA 算法的安全性。

RSA 系统是公钥系统的最具有典型意义的方法,大多数使用公钥密码进行加密和数字签名的产品和标准使用的都是 RSA 算法RSA 算法是第一个既能用于数据加密也能用于数字签名的算法,

因此它为公用网络上信息的加密和鉴别提供了一种基本的方法。它通常是先生成一对 RSA 密钥,其中之一是保密密钥,由用户保存;

另一个为公开密钥,可对外公开,甚至可在网络服务器中注册,人们用公钥加密文件发送给个人,个人就可以用私钥解密接受。

为提高保密强度, RSA 密钥至少为 500 位长,一般推荐使用 1024/2048 位。
 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

苏克贝塔

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值