《国密算法介绍.docx》由会员分享,可在线阅读,更多相关《国密算法介绍.docx(6页珍藏版)》请在优知文库上搜索。
1、国家商用密码算法简介密码学是研究编制密码和破译密码的技术科学,起源于隐秘消息传输,在编码和破译中逐渐开展起来。密码学是一个综合性的技术科学,与语言学、数学、电子学、声学、信息论、计算机科学等有着广泛而密切的联系。密码学的根本思想是对敏感消息的保护,主要包括机密性,鉴别,消息完整性和不可否认性,从而涉及加密,杂凑函数,数字签名,消息认证码等。一.密码学简介密码学中应用最为广泛的的三类算法包括对称算法、非对称算法、杂凑算法。1.1对称密码对称密码学主要是分组密码和流密码及其应用。分组密码中将明文消息进行分块加密输出密文区块,而流密码中使用密钥生成密钥流对明文消息进行加密。世界上应用较为广泛的包括D
2、ES、3DES、AES,此外还有SerPent,Twofish,MARS和RC6等算法。对称加密的工作模式包括电码本模式(ECB模式),密码反应模式(CFB模式),密码分组链接模式(CBC模式),输入反应模式(OFB模式)等。1.2非对称密码公钥密码体制由Diffie和Hellman所提出。1978年Rivest,Shamir和Adleman提出RAS密码体制,基于大素数分解问题。基于有限域上的离散对数问题产生了EIGamal密码体制,而基于椭圆曲线上的离散对数问题产生了椭圆曲线密码密码体制。此外出现了其他公钥密码体制,这些密码体制同样基于困难问题。目前应用较多的包括RSA、DSA、DH、EC
3、C等。1.3杂凑算法杂凑算法又称hash函数,就是把任意长的输入消息串变化成固定长的输出串的一种函数。这个输出串称为该消息的杂凑值。一个平安的杂凑函数应该至少满足以下几个条件。1)输入长度是任意的;2)输出长度是固定的,根据目前的计算技术应至少取128bits长,以便抵抗生日攻击;3)对每一个给定的输入,计算输出即杂凑值是很容易的;4)给定杂凑函数的描述,找到两个不同的输入消息杂凑到同一个值是计算上不可行的,或给定杂凑函数的描述和一个随机选择的消息,找到另一个与该消息不同的消息使得它们杂凑到同一个值是计算上不可行的。杂凑函数主要用于完整性校验和提高数字签名的有效性,目前己有很多方案。这些算法都
4、是伪随机函数,任何杂凑值都是等可能的。输出并不以可区分的方式依赖于输入;在任何输入串中单个比特的变化,将会导致输出比特串中大约一半的比特发生变化。二.商用密码算法为了保障商用密码平安,国家商用密码管理办公室制定了一系列密码标准,包括SSF33、SMl(SCB2)、SM2、SM3、SM4、SM7、SM9、祖冲之密码算法那等等。其中SSF33、SMl、SM4、SM7、祖冲之密码是对称算法:SM2、SM9是非对称算法;SM3是哈希算法。目前己经公布算法文本的包括祖冲之序列密码算法、SM2椭圆曲线公钥密码算法、SM3密码杂凑算法、SM4分组密码算法等。2.1SMl对称密码SMl算法是分组密码算法,分组
5、长度为128位,密钥长度都为128比特,算法平安保密强度及相关软硬件实现性能与AES相当,算法不公开,仅以IP核的形式存在于芯片中。采用该算法己经研制了系列芯片、智能IC卡、智能密码钥匙、加密卡、加密机等平安产品,广泛应用于电子政务、电子商务及国民经济的各个应用领域(包括国家政务通、警务通等重要领域)。2.2SM2.椭圆曲线公钥密码算法SM2算法就是ECC椭圆曲线密码机制,但在签名、密钥交换方面不同于ECDSA、ECDH等国际标准,而是采取了更为平安的机制。另外,SM2推荐了一条256位的曲线作为标淮曲线。ECC椭圆曲线密码体制Koblitz和Miller在1985年各自引入密码学。椭圆曲线的
6、Weierstrass方程为V+。四+a/=/+/+4+/,其上面的所有点和无穷远点构成一个加法交换群,其中无穷远点是加法零元。此群的加法法那么可以由弦切法所给出,具体见下列图。TT =Addition of distinct pointsAdding a point to itselfPQR=O左图中是两个Figure3.3:Thecompositionlaw.不同点P和Q的加法,右图为相同的点P和P的加法。由弦切法便可以给出椭圆曲线上的加法方程。多倍点运算是指:给定一点P和一个整数k,计算kP,即k个P点的和。椭圆曲线上的离散对数问题为:给定点P和kP,计算整数匕椭圆曲线密码体制的平安性便
7、是建立在椭圆曲线离散对数问题之上。SM2标准包括总那么,数字签名算法,密钥交换协议,公钥加密算法四个局部,并在每个局部的附录详细说明了实现的相关细节及例如。SM2算法主要考虑素域F和4”上的椭圆曲线,分别介绍了这两类域的表示,运算,以及域上的椭圆曲线的点的表示,运算和多倍点计算算法。然后介绍了编程语言中的数据转换,包括整数和字节串,字节串和比特串,域元素和比特串,域元素和整数,点和字节串之间的数据转换规那么。详细说明了有限域上椭圆曲线的参数生成以及验证,椭圆曲线的参数包括有限域的选取,椭圆曲线方程参数,椭圆曲线群基点的选取等,并给出了选取的标准以便于验证。最后给出椭圆曲线上密钥对的生成以及公钥
8、的验证,用户的密钥对为(s,sP),其中S为用户的私钥,SP为用户的公钥,由于离散对数问题从SP难以得到s,并针对素域和二元扩域给出了密钥对生成细节和验证方式。总那么中的知识也适用于SM9算法。在总那么的根底上给出了数字签名算法(包括数字签名生成算法和验证算法),密钥交换协议以及公钥加密算法(包括加密算法和解密算法),并在每个局部给出了算法描述,算法流程和相关例如。数字签名算法适用于商用应用中的数字签名和验证,可满足多种密码应用中的身份认证和数据完整性,真实性的平安需求。密钥交换协议适用于商用密码应用中的密钥交换,可满足通信双方经过两次或可选三次信息传递过程,计算获取一个由双方共同决定的共享秘
9、密密钥(会话秘胡I)。公钥加密算法适用于国家商用密码应用中的消息加解密,消息发送者可以利用接收者的公钥对消息进行加密,接收者用对应的私钥进行解,获取消息。数字签名算法,密钥交换协议以及公钥加密算法都使用了国家密管理局批准的SM3密码杂凑算法和随机数发生器。数字签名算法,密钥交换协议以及公钥加密算法根据总那么来选取有限域和椭圆曲线,并生成密钥对,具体算法,流程和例如见SM2标准。SM2算法和RSA、对称算法等强度比照方下。保密级别对称密钥长度RSA密钥长度ECC密钥长度保密年限808010241602023112112204822420301281283072256204019219276803
10、842080256256153605122J202.3SM3杂凑算法SM3密码杂凑算法给出了杂凑函数算法的计算方法和计算步骤,并给出了运算例如。此算法适用于商用密码应用中的数字签名和验证,消息认证码的生成与验证以及随机数的生成,可满足多种密码应用的平安需求。在SM2,SM9标准中使用。此算法对输入长度小于2的64次方的比特消息,经过填充和迭代压缩,生成长度为256比特的杂凑值,其中使用了异或,模,模加,移位,与,或,非运算,由填充,迭代过程,消息扩展和压缩函数所构成。具体算法及运算例如见SM3标准。2.4SM4对称算法此算法是一个分组算法,用于无线局域网产品。该算法的分组长度为128比特,密钥
11、长度为128比特。加密算法与密钥扩展算法都采用32轮非线性迭代结构。解密算法与加密算法的结构相同,只是轮密钥的使用顺序相反,解密轮密钥是加密轮密钥的逆序。此算法采用非线性迭代结构,每次迭代由一个轮函数给出,其中轮函数由一个非线性变换和线性变换复合而成,非线性变换由S盒所给出。具体流程图如下:其中陪为轮密钥,合成置换T组成轮函数。轮密钥的产生与上图流程类似,由加密密钥作为输入生成,轮函数中的线性变换不同,还有些参数的区别。SM4算法的具体描述和例如见SM4标准。2.5SM7对称密码SM7算法,是一种分组密码算法,分组长度为128比特,密钥长度为128比特。SM7的算法文本目前没有公开发布。SM7
12、适用于非接IC卡应用包括身份识别类应用(门禁卡、工作证、参赛证),票务类应用(大型赛事门票、展会门票),支付与通卡类应用(积分消费卡、校园一卡通、企业一通、公交一通)。2.6SM9非对称算法SM9是基于对的标识密码算法,与SM2类似,包含四个局部:总那么,数字签名算法,密钥交换协议以及密钥封装机制和公钥加密算法。在这些算法中使用了椭圆曲线上的对这一个工具,不同于传统意义上的SM2算法,可以实现基于身份的密码体制,也就是公钥与用户的身份信息即标识相关,从而比传统意义上的公钥密码体制有许多优点,省去了证书管理等。密码中双线性对e:GXG2TG,满足如下条件:双线性性:对任意的PeG,QeG?,以及
13、,beZ%有e(P,bQ)=e(P,Q);非退化性:e(RQ)xl,其中P为Gl的生成元,Q为Gz的生成元;可计算性:存在有效的算法计算e(RO)。其中G,g为椭圆曲线上的加法群,而GT为有限域的乘法群。在椭圆曲线对中,根据Gl与G2是否关系,以及椭圆曲线上的自同态,可以将对分成三种类型,需要考虑在超奇异椭圆曲线,常椭圆曲线上来选取对。常用的对有Weil对,TaIe对,Ate对,以及最优对等。基于对的标识密码算法建立在一些对的难解问题,例如双线性Diffie-Hellman问题,双线性逆DH问题等。MmeEFe1,e)以其中k为凤的嵌入次数。双线性对的双线性的性质是基于对的标识密码算法的根底。
14、SM2中的总那么局部同样适用于SM9,由于SM9总那么中添加了适用于对的相关理论和实现根底。椭圆曲线双线性对定义和计算在扩域上进行,总那么中给出了扩域的表示和运算,考虑0严和G上的椭圆曲线。数据类型转换同样包括整数与字节串,比特串和字节串,字节串和域元素,点和字节串之间的转换,其中字节串和域元素之间的数据类型转换涉及到扩域。系统参数的生成比SM2复杂,涉及到对的相关参数,验证也相应地复杂。并在附录B里面详细地描述了计算对的算法MilIer算法,并给出了Tate对,Ate的计算,以及适合对的椭圆曲线的生成。基于总那么中的椭圆曲线以及对的根本选取,给出系统参数组,系统主密钥和用户密钥的产生。用户密
15、钥由系统的主密钥和用户标识共同产生。SM9给出了数字签名算法(包括数字签名生成算法,数字签名验证算法),密钥交换协议,以及密钥封装机制和公钥加密算法(包括密钥封装算法,加密盒解密算法)。数字签名算法适用于接收者通过签名者的标识验证数据的完整性和数据发送者的身份,也适用于第三方确定签名及所签数据的真实性。密钥交换协议可以使用通信双方通过双方的标识和自身的私钥经过两次或者可选三次信息传递过程,计算获取一个由双方共同决定的共享秘密密钥。密钥封装机制和公钥加密算法中,利用密钥封装机制可以封装密钥给特定的实体。公钥加密和解密算法即基于标识的非对称秘密算法,该算法使消息发送者可以利用接收者的标识对消息进行加密,唯有接收者可以用相应的私钥对该密文进行解密,从而获取消息。基于对的算法中同样使用了国家密管理局批准的SM3密码杂凑算法和随机数发生器,密钥封装机制和公钥加密算法中使用了国家密码管理局批准的对称密码算法和消息认证码函数。基于对的数字签名算法,密钥交换协议以及密钥封装机制和公钥加密算法的具体算法,流程图和例如见SM9标准。2.7祖冲之对称算法祖冲之密码算法由中国科学院等单位研制,运用于下一代移动通信4G网络LTE中的国际标准密码算法。祖冲之密码算法(ZUC)的名字源于我国古代数学家祖冲之,祖冲之算法集是由我国学者自主设计的加密和完整性算法,是