国密算法 国家商用密码算法简介
国产商用密码算法及其相关标准介绍

标准咨询国产商用密码算法及其相关标准介绍谢宗晓(中国金融认证中心)董坤祥(山东财经大学管理科学与工程学院)甄杰(重庆工商大学管理科学与工程学院)1 概述《中华人民共和国密码法》第六条中规定:密码分为核心密码、普通密码和商用密码。
同时,在第七条和第八条中规定:核心密码、普通密码属于国家秘密,商用密码用于保护不属于国家秘密的信息。
因此,在常见应用中,商用密码得到了大面积的推广,以至于,在实践中,提到“国密”,经常就被默认为国产商用密码算法。
在现代密码系统中,密码算法、密码协议和密钥管理是三个不可或缺的部分,而在这三者之中,最为核心的毫无疑问就是密码算法。
虽然实践证明,绝大部分的安全漏洞都产生于实现和部署过程中,但是,算法的安全与否,直接决定了一个密码系统的基础是否安全。
例如,选用SHA-1、MD4、MD5、RC4和密钥长度小于2048位的RSA 等不安全的算法,不可能实现安全的密码系统。
已经发布的国产商用密码算法,按照类别可以分为:1)对称密码算法,主要包括ZUC 和SM4;2)非对称密码算法,主要包括SM2和SM9;3)密码杂凑算法,主要包括SM3。
2 对称密码算法对称密码(symmetric cryptography)是用相同的密钥(或方法)进行加密解密,这在逻辑上非常清晰,也最直观,有时候也被称之为共享密钥密码,对称密码算法的基本过程如图1所示。
1) 注意,RC4算法已经证明不安全。
图1 对称密码的工作过程已经发布国产商用密码算法中属于对称密码算法的有ZUC 和SM4。
ZUC(祖冲之密码算法)属于序列密码,也称为“流密码”,与之类似的国外密码算法如RC41)。
ZUC 对应的国家标准、行业标准,如表1所示。
SM4属于分组密码,也称为“块密码”,与之类似的国外密码算法如DES(数据加密标准),TDEA/3DES(三重数据加密标准)以及AES(高级加密标准)等。
SM4对应的国家标准、行业标准,如表2所示。
国密应用原理

国密应用原理国密,即国家密码局认定的国产密码算法,主要包括SM2、SM3、SM4等加密算法。
这些算法被广泛应用于政务、金融、电子商务等领域,以保护敏感信息的安全。
下面详细介绍国密的应用原理:1.SM2算法:SM2是一种基于椭圆曲线的公钥密码算法,包括数字签名、密钥交换和加密三种功能。
在应用中,SM2主要用于生成密钥对、数字签名和加密通信。
发送方使用接收方的公钥对信息进行加密,接收方使用自己的私钥进行解密,确保信息在传输过程中的安全。
2.SM3算法:SM3是一种密码杂凑算法,用于生成数据的摘要。
在应用中,SM3主要用于验证数据的完整性和身份认证。
发送方将数据通过SM3算法生成摘要,然后与原始数据一起发送。
接收方收到数据后,使用相同的SM3算法再次生成摘要,并与发送方提供的摘要进行对比,以验证数据的完整性。
3.SM4算法:SM4是一种分组密码算法,用于对数据进行加密和解密。
在应用中,SM4主要用于保护数据的机密性。
发送方使用密钥将数据通过SM4算法进行加密,生成密文。
接收方使用相同的密钥和SM4算法对密文进行解密,还原出原始数据。
国密算法的应用原理可以概括为以下几点:1.使用国家认定的加密算法:国密算法经过国家密码局的认证和授权,具有较高的安全性和可靠性。
在应用中,选择使用国密算法可以确保敏感信息的安全。
2.生成密钥对:在公钥密码算法中,需要生成一对密钥,即公钥和私钥。
公钥用于加密和验证签名,私钥用于解密和生成签名。
密钥对的生成需要遵循一定的算法和规则,以确保其安全性和随机性。
3.加密通信:在通信过程中,使用加密算法对敏感信息进行加密,确保信息在传输过程中的安全。
接收方使用相应的解密算法对密文进行解密,还原出原始信息。
4.验证身份和完整性:使用杂凑算法和签名算法可以验证数据的完整性和身份认证。
发送方将数据通过杂凑算法生成摘要,并使用私钥对摘要进行签名。
接收方使用公钥验证签名并重新生成摘要进行对比,以验证数据的完整性和发送方的身份。
数据存储及码流数据传输中的国密算法安全应用

数据存储及码流数据传输中的国密算法安全应用1. 引言1.1 数据存储及码流数据传输中的国密算法安全应用在当今信息化时代,数据安全已经成为各个领域中不可忽视的重要问题。
特别是在数据存储和码流数据传输过程中,数据的安全性显得尤为关键。
为了保障数据在存储和传输过程中的安全性,国密算法应运而生,成为一种重要的加密算法。
国密算法是指我国自主设计、自主开发推出的密码算法,其安全性经过严格测试和认证。
在数据存储方面,一些重要的数据可能会被存储在云端或其他存储设备中,国密算法可以用来加密这些数据,防止被未经授权的用户访问和篡改。
在码流数据传输中,国密算法可以用来加密数据传输过程中的数据流,确保数据传输的安全性。
通过对国密算法在数据存储和码流数据传输过程中的应用进行分析和评估,可以发现国密算法在提高数据安全性方面具有显著的效果。
未来,随着数据安全需求的不断增加,国密算法有望在数据安全领域得到更广泛的应用,为数据安全保驾护航。
2. 正文2.1 国密算法概述国密算法,全称为商用密码基础设施的分组密码算法,是中国自主研发的密码算法标准。
国家密码管理局制定的商用密码算法标准采用了SM1、SM2、SM3、SM4四种算法。
SM1是分组密码算法,SM2是非对称加密算法,SM3是杂凑算法,SM4是分组密码算法。
这些算法经过严格的安全性验证和性能测试,已经成为中国境内商用密码算法标准。
国密算法在数据存储和码流数据传输中发挥着重要作用。
在数据存储中,使用SM4算法可以对数据进行加密存储,保护数据的机密性和完整性。
SM3算法可以对数据进行杂凑运算,验证数据的真实性和完整性。
在码流数据传输中,SM2算法可以用于对数据进行加密传输,保护数据的安全性。
SM1算法可以用于对数据进行加密处理,确保数据在传输过程中不被篡改。
国密算法在数据存储及码流数据传输中提供了安全可靠的加密解决方案,帮助用户保护数据的安全性和机密性。
随着国密算法的不断发展和完善,相信它在未来的数据安全领域将会得到更广泛的应用。
国密算法介绍

国密算法介绍
一、总体介绍
1、国密即国家密码局认定的国产密码算法。
主要有SM1,SM2,SM3,SM4。
密钥长度和分组长度均为 128 位。
2、SM1 为对称加密,其加密强度与 AES 相当。
该算法不公开,调用该算法时,需要通过加密芯片的接口进行调用。
3、SM2 为非对称加密,基于ECC。
该算法已公开。
由于该算法基于ECC,故其签名速度与秘钥生成速度都快于RSA。
ECC 256位(SM2 采用的就是 ECC 256 位的一种)安全强度比 RSA 2048 位高,但运算速度快于RSA。
4、SM3 消息摘要。
可以用 MD5 作为对比理解。
该算法已公开。
校验结果为 256 位。
5、SM4 无线局域网标准的分组数据算法。
对称加密,密钥长度和分组长度均为128位。
二、SM2
1、SM2 算法和 RSA 算法比较
SM2 性能更优更安全:密码复杂度高、处理速度快、机器性能消耗更小。
2、生成 SM2 私钥
openssl ecparam -genkey -name SM2 -out priv.key
3、生成 SM2 公钥
openssl ec -in priv.key -pubout -out
pub.key (SAW:Game Over!)。
网络安全之国密算法

国密算法国密算法总结概念说明国密算法是指我国定制的商用加密算法,用于金融行业。
包括SM1、SM2、SM3、SM4。
其中SM1是硬件实现的算法,我里不与讨论,而SM2、SM3、SM4等可以使用软件实现。
国际算法比较国际加密算法:RSA、SHA/MD5、DES等常用算法,RSA是非对称算法(签名和验签),SHA/MD5为摘要算法(HASH值),DES为对称加密(数据加密)。
国密算法的SM2对应于RSA,SM2对应于SHA,SM3对应于DES。
非对称算法 RSA密钥目前建议使用2048 BIT(公钥明文256 byte 私钥明文512 byte),生成的加密数据为密钥长度的整数倍,签名数据与密钥长度一致。
SM2密钥长度为32字节(公钥明文64字节,私钥明文32字节),生成的加密数据结果为32*3+明文长度,签名数据与私钥长度一致64字节。
对称加密DES加密的密钥必须是8/16/32的倍数对应于DES/3DES/3DES加密,输入数据长度必须是密钥长度的整数倍;而SM4的密钥长度是16字节,输入数据必须是16字节的倍数。
摘要算法 SM3计算结果为32字节的HASH值。
关键参数SM2 椭圆曲线参数(规范推荐值)、userID(推荐值:1234567812345678)、私钥、公钥(可通过私钥生成)知识点SM2密钥对的生成是基于一些算法参数,这些数据在规范内是有推荐值的。
所以在使用SM2算法的前提是双方都使用的是相同的推荐参数,否则计算结果是不会对的。
具体参数可查看规范。
SM3对称加密算法的密文数据,如果长度为明文长度+1(16字节的整数倍+1),则第一个字节是一个标识(0x04)。
所以在处理SM3解密的时候要注意,有些工具或API在解密时可能需要加上标识符。
SM2加密结果数据的组成:1 BYTE(0x04) + 64 BYTE(2个大整数) + 密文(与明文长度相同) + 32 BYTE(密文的HASH值)。
我国商用密码SMS4

8、安全性
①国家专业机构设计。算法简洁,以字和字节为处理单位, 对合运算,符合当今分组密码主流。 ②专业机构进行了密码分析,因此是安全的。 ③民间学者对21轮SMS4进行了差分密码分析。 ④尚需经过实践检验。
三、我国商用密码SMS4
作业:
1、分析SMS4在密码结构上与DES、AES有何异同? 2、根据SMS4算法,编程研究SMS4的S盒的以下特性:
①明文输入改变1位,密文输出平均改变多少位? ②S盒输入改变1位,S盒输出平均改变多少位? ③L输入改变1位,L输出平均改变多少位? ④对于一个输入,连续施加S盒变换,变换多少次时出现输出等 于输入?
3、我国公布商用密码算法有何意义? 提交: 源代码和实验报告。
545b6269, c4cbd2d9, 343b4249, a4abb2b9, 141b2229, 848b9299, f4fb0209, 646b7279
产生规则:Ckij= (4i+j)×7(mod 256) ,i=0,1,2…31,j=0,1,…3 。
三、我国商用密码SMS4
7、实例:
• 明文: 01 23 45 67 89 ab cd ef fe dc ba 98 76 54 32 10 • 密钥: 01 23 45 67 89 ab cd ef fe dc ba 98 76 54 32 10 • 密文: 68 1e df 34 d2 06 96 5e 86 b3 e9 4f 53 6e 42 46
① (K0,K1,K2,K3)=(MK0⊕FK0,MK1⊕FK1,MK2⊕FK2,MK3⊕FK3) ② For i=0,1…,30,31 Do iki= Ki+4= Ki⊕T’(Ki+1 ⊕Ki+2 ⊕ Ki+3 ⊕ CKi)
商用密码算法 国际标准

商用密码算法国际标准在当今信息时代,数据的安全性成为了各个行业和个人所面临的重要问题。
为了保护敏感数据的安全,商用密码算法被广泛应用于信息安全领域。
本文将介绍商用密码算法的概念及其在国际上的标准化情况。
1. 商用密码算法的定义商用密码算法是指用于加密和解密敏感数据的数学算法。
其目的是通过将原始数据转化为看似无规律的数据,以达到保护数据的安全性。
商用密码算法需要满足以下几个方面的要求:1) 提供足够的安全性,即使攻击者能够获取到一部分加密的数据,也无法推导出原始数据。
2) 必须具备高效性,即在提供足够安全性的前提下,能够在合理的时间内进行加密和解密操作。
3) 应该是可信的,即商用密码算法的设计和实现需要经过广泛的评审和验证,确保其没有后门以及其他漏洞。
2. 商用密码算法的国际标准化为了统一密码算法的应用和推广,国际上已经制定了并广泛采用了一系列商用密码算法的标准。
以下为几个典型的国际标准化组织和其所推荐的商用密码算法:2.1. NIST密码标准(美国国家标准与技术研究院)NIST密码标准是美国国家标准与技术研究院制定的商用密码算法标准。
其中最著名的是AES(Advanced Encryption Standard)算法,它是一种对称密钥算法,已被广泛应用于商业和政府机构的数据加密领域。
2.2. ISO密码标准(国际标准化组织)ISO密码标准由国际标准化组织制定,其中最著名的是ISO/IEC 18033标准。
该标准涵盖了多种商用密码算法,包括对称密钥算法、公钥算法以及基于椭圆曲线的密码算法等。
2.3. ECMA密码标准(欧洲计算机制造商协会)ECMA密码标准由欧洲计算机制造商协会制定,其最著名的密码算法是ECMA-340标准,该标准定义了一种基于RSA密码体制的公钥算法。
3. 商用密码算法的应用领域商用密码算法广泛应用于各个行业和领域,其中最常见的应用包括:3.1. 网络通信安全商用密码算法在保护网络通信安全方面发挥了重要的作用。
SM系列国密算法

SM系列国密算法SM系列国密算法众所周知,为了保障商⽤密码的安全性,国家商⽤密码管理办公室制定了⼀系列密码标准,包括SM1(SCB2)、SM2、SM3、SM4、SM7、SM9、祖冲之密码算法(ZUC)那等等。
其中SM1、SM4、SM7、祖冲之密码(ZUC)是对称算法;SM2、SM9是⾮对称算法;SM3是哈希算法。
⽬前,这些算法已⼴泛应⽤于各个领域中,期待有⼀天会有采⽤国密算法的区块链应⽤出现。
其中SM1、SM7算法不公开,调⽤该算法时,需要通过加密芯⽚的接⼝进⾏调⽤;⽐较少⼈了解这些算法,在这⾥对这些国密算法做简单的科普1 SM1对称密码SM1 算法是分组密码算法,分组长度为128位,密钥长度都为 128 ⽐特,算法安全保密强度及相关软硬件实现性能与 AES 相当,算法不公开,仅以IP核的形式存在于芯⽚中。
采⽤该算法已经研制了系列芯⽚、智能IC卡、智能密码钥匙、加密卡、加密机等安全产品,⼴泛应⽤于电⼦政务、电⼦商务及国民经济的各个应⽤领域(包括国家政务通、警务通等重要领域)。
2 SM2椭圆曲线公钥密码算法SM2算法就是ECC椭圆曲线密码机制,但在签名、密钥交换⽅⾯不同于ECDSA、ECDH等国际标准,⽽是采取了更为安全的机制。
另外,SM2推荐了⼀条256位的曲线作为标准曲线。
SM2标准包括总则,数字签名算法,密钥交换协议,公钥加密算法四个部分,并在每个部分的附录详细说明了实现的相关细节及⽰例。
SM2算法主要考虑素域Fp和F2m上的椭圆曲线,分别介绍了这两类域的表⽰,运算,以及域上的椭圆曲线的点的表⽰,运算和多倍点计算算法。
然后介绍了编程语⾔中的数据转换,包括整数和字节串,字节串和⽐特串,域元素和⽐特串,域元素和整数,点和字节串之间的数据转换规则。
详细说明了有限域上椭圆曲线的参数⽣成以及验证,椭圆曲线的参数包括有限域的选取,椭圆曲线⽅程参数,椭圆曲线群基点的选取等,并给出了选取的标准以便于验证。
最后给椭圆曲线上密钥对的⽣成以及公钥的验证,⽤户的密钥对为(s,sP),其中s为⽤户的私钥,sP为⽤户的公钥,由于离散对数问题从sP难以得到s,并针对素域和⼆元扩域给出了密钥对⽣成细节和验证⽅式。
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
国家商用密码算法简介密码学是研究编制密码和破译密码的技术科学,起源于隐秘消息传输,在编码和破译中逐渐发展起来。
密码学是一个综合性的技术科学,与语言学、数学、电子学、声学、信息论、计算机科学等有着广泛而密切的联系。
密码学的基本思想是对敏感消息的保护,主要包括机密性,鉴别,消息完整性和不可否认性,从而涉及加密,杂凑函数,数字签名,消息认证码等。
一.密码学简介密码学中应用最为广泛的的三类算法包括对称算法、非对称算法、杂凑算法。
1.1 对称密码对称密码学主要是分组密码和流密码及其应用。
分组密码中将明文消息进行分块加密输出密文区块,而流密码中使用密钥生成密钥流对明文消息进行加密。
世界上应用较为广泛的包括DES、3DES、AES,此外还有Serpent,Twofish,MARS和RC6等算法。
对称加密的工作模式包括电码本模式(ECB 模式),密码反馈模式(CFB 模式),密码分组链接模式(CBC 模式),输入反馈模式(OFB 模式)等。
1.2 非对称密码公钥密码体制由Diffie和Hellman所提出。
1978年Rivest,Shamir和Adleman提出RAS密码体制,基于大素数分解问题。
基于有限域上的离散对数问题产生了ElGamal密码体制,而基于椭圆曲线上的离散对数问题产生了椭圆曲线密码密码体制。
此外出现了其他公钥密码体制,这些密码体制同样基于困难问题。
目前应用较多的包括RSA、DSA、DH、ECC等。
1.3杂凑算法杂凑算法又称hash函数,就是把任意长的输入消息串变化成固定长的输出串的一种函数。
这个输出串称为该消息的杂凑值。
一个安全的杂凑函数应该至少满足以下几个条件。
1)输入长度是任意的;2)输出长度是固定的,根据目前的计算技术应至少取128bits长,以便抵抗生日攻击;3)对每一个给定的输入,计算输出即杂凑值是很容易的;4)给定杂凑函数的描述,找到两个不同的输入消息杂凑到同一个值是计算上不可行的,或给定杂凑函数的描述和一个随机选择的消息,找到另一个与该消息不同的消息使得它们杂凑到同一个值是计算上不可行的。
杂凑函数主要用于完整性校验和提高数字签名的有效性,目前已有很多方案。
这些算法都是伪随机函数,任何杂凑值都是等可能的。
输出并不以可辨别的方式依赖于输入;在任何输入串中单个比特的变化,将会导致输出比特串中大约一半的比特发生变化。
二.商用密码算法为了保障商用密码安全,国家商用密码管理办公室制定了一系列密码标准,包括SSF33、SM1(SCB2)、SM2、SM3、SM4、SM7、SM9、祖冲之密码算法那等等。
其中SSF33、SM1、SM4、SM7、祖冲之密码是对称算法;SM2、SM9是非对称算法;SM3是哈希算法。
目前已经公布算法文本的包括祖冲之序列密码算法、SM2椭圆曲线公钥密码算法、SM3密码杂凑算法、SM4分组密码算法等。
2.1 SM1对称密码SM1 算法是分组密码算法,分组长度为128位,密钥长度都为128 比特,算法安全保密强度及相关软硬件实现性能与AES 相当,算法不公开,仅以IP 核的形式存在于芯片中。
采用该算法已经研制了系列芯片、智能IC 卡、智能密码钥匙、加密卡、加密机等安全产品,广泛应用于电子政务、电子商务及国民经济的各个应用领域(包括国家政务通、警务通等重要领域)。
2.2 SM2椭圆曲线公钥密码算法SM2算法就是ECC椭圆曲线密码机制,但在签名、密钥交换方面不同于ECDSA、ECDH等国际标准,而是采取了更为安全的机制。
另外,SM2推荐了一条256位的曲线作为标准曲线。
ECC椭圆曲线密码体制Koblitz和Miller在1985年各自引入密码学。
椭圆曲线的Weierstrass方程为23213246y a xy a y x a x a x a++=+++,其上面的所有点和无穷远点构成一个加法交换群,其中无穷远点是加法零元。
此群的加法法则可以由弦切法所给出,具体见下图。
左图中是两个不同点P和Q的加法,右图为相同的点P和P的加法。
由弦切法便可以给出椭圆曲线上的加法方程。
多倍点运算是指:给定一点P和一个整数k,计算kP,即k个P点的和。
椭圆曲线上的离散对数问题为:给定点P和kP,计算整数k。
椭圆曲线密码体制的安全性便是建立在椭圆曲线离散对数问题之上。
SM2标准包括总则,数字签名算法,密钥交换协议,公钥加密算法四个部分,并在每个部分的附录详细说明了实现的相关细节及示例。
SM2算法主要考虑素域p F 和2m F 上的椭圆曲线,分别介绍了这两类域的表示,运算,以及域上的椭圆曲线的点的表示,运算和多倍点计算算法。
然后介绍了编程语言中的数据转换,包括整数和字节串,字节串和比特串,域元素和比特串,域元素和整数,点和字节串之间的数据转换规则。
详细说明了有限域上椭圆曲线的参数生成以及验证,椭圆曲线的参数包括有限域的选取,椭圆曲线方程参数,椭圆曲线群基点的选取等,并给出了选取的标准以便于验证。
最后给出椭圆曲线上密钥对的生成以及公钥的验证,用户的密钥对为(s ,sP ),其中s 为用户的私钥,sP 为用户的公钥,由于离散对数问题从sP 难以得到s ,并针对素域和二元扩域给出了密钥对生成细节和验证方式。
总则中的知识也适用于SM9算法。
在总则的基础上给出了数字签名算法(包括数字签名生成算法和验证算法),密钥交换协议以及公钥加密算法(包括加密算法和解密算法),并在每个部分给出了算法描述,算法流程和相关示例。
数字签名算法适用于商用应用中的数字签名和验证,可满足多种密码应用中的身份认证和数据完整性,真实性的安全需求。
密钥交换协议适用于商用密码应用中的密钥交换,可满足通信双方经过两次或可选三次信息传递过程,计算获取一个由双方共同决定的共享秘密密钥(会话秘钥)。
公钥加密算法适用于国家商用密码应用中的消息加解密,消息发送者可以利用接收者的公钥对消息进行加密,接收者用对应的私钥进行解,获取消息。
数字签名算法,密钥交换协议以及公钥加密算法都使用了国家密管理局批准的SM3密码杂凑算法和随机数发生器。
数字签名算法,密钥交换协议以及公钥加密算法根据总则来选取有限域和椭圆曲线,并生成密钥对,具体算法,流程和示例见SM2标准。
SM2算法和RSA 、对称算法等强度对比如下。
保密级别对称密钥长度 RSA 密钥长度 ECC 密钥长度 保密年限 8080 1024 160 2010 112112 2048 224 2030 128128 3072 256 2040 192192 7680 384 2080 256256 15360 512 21202.3 SM3杂凑算法SM3密码杂凑算法给出了杂凑函数算法的计算方法和计算步骤,并给出了运算示例。
此算法适用于商用密码应用中的数字签名和验证,消息认证码的生成与验证以及随机数的生成,可满足多种密码应用的安全需求。
在SM2,SM9标准中使用。
此算法对输入长度小于2的64次方的比特消息,经过填充和迭代压缩,生成长度为256比特的杂凑值,其中使用了异或,模,模加,移位,与,或,非运算,由填充,迭代过程,消息扩展和压缩函数所构成。
具体算法及运算示例见SM3标准。
2.4 SM4对称算法此算法是一个分组算法,用于无线局域网产品。
该算法的分组长度为128比特,密钥长度为128比特。
加密算法与密钥扩展算法都采用32轮非线性迭代结构。
解密算法与加密算法的结构相同,只是轮密钥的使用顺序相反,解密轮密钥是加密轮密钥的逆序。
此算法采用非线性迭代结构,每次迭代由一个轮函数给出,其中轮函数由一个非线性变换和线性变换复合而成,非线性变换由S盒所给出。
具体流程图如下:rk为轮密钥,合成置换T组成轮函数。
轮密钥的产生与上图流程类似,由加密密钥作为输其中i入生成,轮函数中的线性变换不同,还有些参数的区别。
SM4算法的具体描述和示例见SM4标准。
2.5 SM7对称密码SM7算法,是一种分组密码算法,分组长度为128 比特,密钥长度为128 比特。
SM7的算法文本目前没有公开发布。
SM7适用于非接IC卡应用包括身份识别类应用(门禁卡、工作证、参赛证),票务类应用(大型赛事门票、展会门票),支付与通卡类应用(积分消费卡、校园一卡通、企业一卡通、公交一卡通)。
2.6 SM9非对称算法SM9是基于对的标识密码算法,与SM2类似,包含四个部分:总则,数字签名算法,密钥交换协议以及密钥封装机制和公钥加密算法。
在这些算法中使用了椭圆曲线上的对这一个工具,不同于传统意义上的SM2算法,可以实现基于身份的密码体制,也就是公钥与用户的身份信息即标识相关,从而比传统意义上的公钥密码体制有许多优点,省去了证书管理等。
密码中双线性对12:T e G G G ´®满足如下条件:双线性性:对任意的1P G Î,2Q G Î,以及,N a b Z Î,有(,)(,)ab e aP bQ e P Q =;非退化性:(,)1e P Q ¹,其中P 为1G 的生成元,Q 为2G 的生成元;可计算性:存在有效的算法计算(,)e P Q 。
其中1G ,2G 为椭圆曲线上的加法群,而T G 为有限域的乘法群。
在椭圆曲线对中,根据1G 与2G 是否关系,以及椭圆曲线上的自同态,可以将对分成三种类型,需要考虑在超奇异椭圆曲线,常椭圆曲线上来选取对。
常用的对有Weil 对,Tate 对,Ate 对,以及最优对等。
基于对的标识密码算法建立在一些对的难解问题,例如双线性Diffie-Hellman 问题,双线性逆DH 问题等。
椭圆曲线上的双线性对为*:()[]()/()k k k kq q q q e E F r E F rE F F ´® 其中k 为()q E F 的嵌入次数。
双线性对的双线性的性质是基于对的标识密码算法的基础。
SM2中的总则部分同样适用于SM9,由于SM9总则中添加了适用于对的相关理论和实现基础。
椭圆曲线双线性对定义和计算在扩域上进行,总则中给出了扩域的表示和运算,考虑m p F 和3m F 上的椭圆曲线。
数据类型转换同样包括整数与字节串,比特串和字节串,字节串和域元素,点和字节串之间的转换,其中字节串和域元素之间的数据类型转换涉及到扩域。
系统参数的生成比SM2复杂,涉及到对的相关参数,验证也相应地复杂。
并在附录B 里面详细地描述了计算对的算法Miller 算法,并给出了Tate 对,Ate 的计算,以及适合对的椭圆曲线的生成。
基于总则中的椭圆曲线以及对的基本选取,给出系统参数组,系统主密钥和用户密钥的产生。
用户密钥由系统的主密钥和用户标识共同产生。
SM9给出了数字签名算法(包括数字签名生成算法,数字签名验证算法),密钥交换协议,以及密钥封装机制和公钥加密算法(包括密钥封装算法,加密盒解密算法)。