常见国际密码算法

中科安永
中科安永
现代密码算法主要有对称密码算法(简称“对称密码”)、非对称密码算法(又称“公钥密码算法”,简称“公钥密码”)、密码杂凑算法(又称“散列算法、哈希算法”,简称“杂凑算法”)等。

密码算法是用于加密和解密的数学函数,密码算法是密码协议的基础,用于保证信息的安全,提供鉴别、完整性、抗抵赖等服务。本期内容将介绍现代密码算法中,常见的国际密码算法。

现代密码算法主要有对称密码算法(简称“对称密码”)、非对称密码算法(又称“公钥密码算法”,简称“公钥密码”)、密码杂凑算法(又称“散列算法、哈希算法”,简称“杂凑算法”)等。

一、对称密码算法

对称密码算法的加密过程与解密过程使用相同或容易相互推导得出的密钥,即加密和解密过程的密钥是“对称”的。对称密码主要有序列密码和分组密码。

图-1对称密码算法加解密过程

1、序列密码算法

序列密码也称为流密码(Stream Cipher),它是对称密码算法的一种。利用密钥产生一个密钥流Z=Z1Z2Z3…,然后利用此密钥流依次对明文X=X=X0X1X2…进行加密,这样产生的密码就是序列密码。

2、分组密码算法

分组密码(Block Cipher)是将明文数据分成多个等长度的块,这样的数据块叫作分组。每个分组以同样的处理过程、同样的密钥进行加密和解密。它的加解密过程一般采用混淆和扩散部件的多次迭代方式。但分组密码不用产生很长的密钥流。它的特点是适应能力强,可用于多种计算平台,易于标准化,多用于大数据量的加密场景。主要有SM1算法、SM7算法、SM4算法、DES算法、AES算法。

DES算法

DES(数据加密标准)是由IBM公司在70年代发展起来的。

DES分组长度为64比特,密钥长度为64比特,有效密钥长度为56比特。

TDES即Triple DES,三重数据加密算法。TDES的分组长度为64比特,密钥长度为128比特,有效密钥长度为112比特。

AES算法

AES(Advanced EncryptionStandard,高级加密标准),在密码学中又称Rijndael加密法。这个标准被用来替代原先的DES,已经被多方分析且广为全世界所使用。2006年,AES已然成为对称密钥加密中最流行的算法之一。

AES加密数据块分组长度必须为128比特,密钥长度可以是128比特、192比特、256比特中的任意一个(如果数据块及密钥长度不足时,自动补齐)。

RC系列算法

RC系列是Ron Rivest为RSA公司设计的一系列密码。

1)RC1从未被公开,以致于许多人们称其只出现在Rivest的记事本上;

2)RC2是变长密钥加密密法;(RC3在设计过程中在RSADSI内被攻破);

3)RC4是Rivest在1987年设计的变长密钥的序列密码;RC4算法密钥长度是可变的,通常密钥的长度为128比特。

4)RC5是Rivest在1994年设计的分组长、密钥长的迭代轮数都可变的分组迭代密码算法。

二、非对称密码算法

非对称加密(公钥加密):指加密和解密使用不同密钥的加密算法,也称为公私钥加密。非对称加密的缺点是加解密速度要远远慢于对称加密。

假设两个用户要加密交换数据,双方交换公钥,使用时一方用对方的公钥加密,另一方即可用自己的私钥解密。由于公钥是可以公开的,用户只要保管好自己的私钥即可,因此加密密钥的分发将变得十分简单。

图-2非对称密码算法加解密过程

1、RSA算法

Ron Rivest、Adi Shamir和Len Adleman于1977年研制并于1978年首次发表。RSA是一种分组密码,其理论基础是一种特殊的可逆模幂运算,其安全性基于分解大整数的困难性。既可用于加密,又可用于数字签名,已得到广泛采用。

基于特殊的可逆模幂运算,亚指数级,存储空间:2048-4096比特,密钥生成速度慢,加密解密速度一般。常用于公开密钥加密和电子商业。密钥长度为1024比特、2048比特,保证数据的机密性。

图-3 RSA算法加解密过程

三、杂凑算法

杂凑算法(也称杂凑函数或Hash函数),是一种把任意长的输入消息串变化成固定长的输出串的函数。输出串称为该消息的杂凑值,具有不可逆的性质。杂凑算法用于数字签名及验证、消息认证码生成及验证、随机数生成等。

1、MD5算法

MD5算法由美国密码学家罗纳德·李维斯特(Ronald Linn Rivest)设计,于1992年公开,用以取代MD4算法。MD5算法的输入消息可为任意长度,输出消息为128比特。

2004年,证实MD5算法无法防止碰撞(collision),因此不适用于安全性认证,如SSL公开密钥认证或是数字签名等用途。同年8月17日,王小云院士研究发现,可以在一个多小时找到MD5的“碰撞”,就是两个文件可以产生相同的“指纹”,也就是说签名相同但内容已完全不同,使伪造某一份合同成为可能。

2、SHA系列算法

SHA(安全散列算法)是一个密码散列函数家族,是FIPS所认证的安全散列算法。能计算出一个数字消息所对应到的,长度固定的字符串(又称消息摘要)的算法。

SHA家族的五个算法,分别是SHA-1、SHA-224、SHA-256、SHA-384和SHA-512。

SHA算法有如下特性:

1)不可以从消息摘要中复原信息;

2)两个不同的消息不会产生同样的消息摘要。

SHA-0

SHA-0算法在发布之后很快就被NSA撤回,并且由1995年发布的修订版本FIPS PUB 180-1(通常称为SHA-1)取代。

2005年二月,王小云和殷益群、于红波发表了对SHA-0破密的算法,可在的计算复杂度内就找到碰撞。

SHA-1

SHA-1算法,输入一个长度不超过比特的数据块,输出一个长度为160比特的散列值,通常用40个十六进制数表示。SHA-1在许多安全协议中广为使用,包括TLS和SSL、PGP、SSH和IPSec,曾被视为是MD5的后继者。

王小云院士利用MD5的破译技术,成功解决了SHA-1差分分析中的一种不可能差分,这是SHA类算法(SHA-1,SHA-0)一个的分析技术难点与瓶颈,并解决了难以确定的满足碰撞路线的明文条件以及明文修改技术。这些关键技术的解决最终导致了SHA-1全算法的破译,并大大提高了SHA-0的碰撞概率。

SHA-256

SHA-256算法,输入消息的最大长度不超过264比特,输出一个长度为256比特的哈希值,为消息摘要,32字节数组,长度为64比特的十六进制字符串表示。

SHA-256算法计算消息摘要的原理:对于任意长度(按bit计算)的消息,SHA-256都会产生一个32个字节长度数据,称作消息摘要。当接收到消息的时候,这个消息摘要可以用来验证数据是否发生改变,即验证其完整性。

SHA-384

SHA-384算法,输入的最大计算长度为比特,分组长度为1024比特,产生的信息摘要长度为384比特。

SHA-512

SHA-512算法,算法输入的最大计算长度为比特,分组长度为1024比特,产生的信息摘要长度为512比特。

THEEND

最新评论(评论仅代表用户观点)

更多
暂无评论