搜档网
当前位置:搜档网 › 谈谈PBOC3.0中使用的国密SM2算法 .

谈谈PBOC3.0中使用的国密SM2算法 .

谈谈PBOC3.0中使用的国密SM2算法 .
谈谈PBOC3.0中使用的国密SM2算法 .

谈谈PBOC3.0中使用的国密SM2算法

一知识准备

SM2是国密局推出的一种他们自己说具有自主知识产权的非对称商用密码算法。本身是基于ECC椭圆曲线算法的,所以要讲sm2, 先要弄懂ECC。

完全理解ECC算法需要一定的数学功底,因为涉及到射影平面坐标系,齐次方程求解, 曲线的运算规则等概念。这里不做过多的数学分析(主要是我自己也没有完全整明白)。想要深入了解ECC的我推荐网名为ZMWorm的大牛在多年前写的<<椭圆曲线ECC加密算法入门介绍>>。此人是早年看雪论坛中的一个版主,对算法和密码学很有研究。

本篇的主旨还是希望能以简单通俗的语言,讲清楚PBOC3.0认证过程中,所用到的SM2的相关概念,包括它的实现,使用等。

1 椭圆曲线到底是什么样的

图1

图2

上面是两个不同椭圆曲线在坐标系中的几何表示, 不过这个坐标系不是二维坐标系,而是射影坐标系。可以用空间思维想像一下(但是注意不是三维坐标系),打个比方,你晚上站在一个路灯前面,地上有你的影子,你本身是在一个二维坐标系(把你想像成一个纸片),和你的影子一起构成一个射影坐标系。

曲线的每一个点, 用三个参量表示, (X,Y,Z)。我们知道在二维坐标系里的每个图形都遵循一个方程,比如直接的二元一次方程是y=kx+b, 圆的方程是(x-a)2+(y -b)2=r2, 椭圆曲线在射影坐标系里也有自己的定义:

Y2Z+a1XYZ+a3YZ2=X3+a2X2Z+a4XZ2+a6Z3

所有椭圆曲线上的点都满足上述方程,a1,a2,a3,a4,a6是系数,决定曲线的形状和位置。

二维坐标和射影坐标有一个对应关系,即x=X/Z, y=Y/Z, 这样就可以把上面的方程转成普通的二维坐标系方程:

y2+a1xy+a3y= x3+a2x2+a4x+a6

2 离散的椭圆曲线

上面的坐标系都是基于实数的,椭圆曲线看起来都是平滑的,如果我们限制曲线的点都必须是整数,曲线就变成离散的了,如图3所示:

图3

再进一步限制,要求整数必须大于0, 小于某个大整数P, 这样就形成了一个有限域F p.然后我们在这个有限域里定义一些点与点之间的加减乘除运算规则,比如A点加B点得到C点(记做A+B≡C (mod p)),或者A点乘以n得到K点(记做

A×n≡K (mod p))。至于具体规则细节可以不用关心,只要知道有这样的操作即可。

选一条曲线,比如

y2=x3+ax+b

把它定义在F p上, 要求a,b满足:

4a3+27b2≠0(mod p)

我们把这样的曲线记为Ep(a,b)

加解密是基于这样的数学难题,K=kG,其中K,G为Ep(a,b)上的点,k 是整数,小于G点(注意区分,不是我们平常说的那个意思)的阶(不用关心什么是点的阶)。给定k和G,计算K很容易;但给定K和G,求k 就困难了。这样,G就叫做基点,k是私钥,K是公钥。

最后总结。描述一条Fp上的椭圆曲线,有六个参量:

T=(p,a,b,G,n,h)。

p 、a 、b 用来确定一条椭圆曲线,

G为基点,

n为点G的阶,

h 是椭圆曲线上所有点的个数m与n相除的整数部分)

知识准备阶段知道这么多就可以了。

二SM2在PBOC认证中的使用

1 签名和验签的原理

前面提到根据系数的不同,ECC曲线可以有很多,SM2使用其中一种,这就表明它的曲线方程,以及前面说到的六个参量都是固定的。根据国密局给出的规范定义如下:

[cpp]view plaincopyprint?

1.y2=x3+ax+b

2.

3.p=FFFFFFFE FFFFFFFFFFFFFFFF FFFFFFFF FFFFFFFF 00000000 FFFFFFFF FFFFF

FFF

4.a=FFFFFFFE FFFFFFFFFFFFFFFF FFFFFFFF FFFFFFFF 00000000 FFFFFFFF FFFFF

FFC

5.b=28E9FA9E 9D9F5E344D5A9E4B CF6509A7 F39789F5 15AB8F92 DDBCBD41 4D9

40E93

6.n=FFFFFFFE FFFFFFFFFFFFFFFF FFFFFFFF 7203DF6B 21C6052B 53BBF409 39D5

4123

7.Gx=32C4AE2C 1F198119 5F990446 6A39C994 8FE30BBF F2660BE1 715A4589 334C

74C7

8.Gy=BC3736A2 F4F6779C 59BDCEE3 6B692153 D0A9877C C62A4740 02DF32E5 21

39F0A0

这里容易引起一个误解,会认为参数都固定了,公私钥是不是只能有一对?当然不是,注意前面提到的K=kG的模型,K才是公钥,所以公钥其实是曲线在离散坐标系中,满足条件的一个曲线上的点。可以有很多个。另外, 从这几个参量可以获知PBOC 3.0的公钥长度都是256位。

基于这种离散椭圆曲线原理的SM2算法一般有三种用法,签名验签,加解密, 密钥交换。PBOC 3.0中的脱机数据认证只用到签名验签的功能。终端关心的是如何验签,卡片则要考虑如何实现生成签名。

2 基于openssl实现sm2

这里给出一个基于openssl的sm2实现, 如果不了解openssl,可以先搜索一下相关知识,这里不讲解。openssl已经实现ECC算法接口,也就是核心已经有了,实现sm2其实并不难,关键是理解它里面各种接口如何使用。下面就分析一个终端验签的sm2实现。另外需要说明这里给出的只是代码片段,仅供理解用。

函数接口

[cpp]view plaincopyprint?

1.int SM2_Verify(BYTE* Px,BYTE* Py, BYTE* DataIn,DWORD DataLen, BYTE* sigrs)

前两个参数是K的坐标值,也就是公钥。Datain和datalen分别是明文数据和其长度,最后一个参数是待验证的签名。

曲线的参数常量定义如下:

[cpp]view plaincopyprint?

1.////////////////////////////////////////////////////////////////

2.static const char *group_p ="FFFFFFFEFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF0000

0000FFFFFFFFFFFFFFFF";

3.static const char *group_a ="FFFFFFFEFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF0000

0000FFFFFFFFFFFFFFFC";

4.static const char *group_b ="28E9FA9E9D9F5E344D5A9E4BCF6509A7F39789F515A

B8F92DDBCBD414D940E93";

5.static const char *group_Gx ="32C4AE2C1F1981195F9904466A39C9948FE30BBFF26

60BE1715A4589334C74C7";

6.static const char *group_Gy ="BC3736A2F4F6779C59BDCEE36B692153D0A9877CC6

2A474002DF32E52139F0A0";

7.static const char *group_n = "FFFFFFFEFFFFFFFFFFFFFFFFFFFFFFFF7203DF6B21C

6052B53BBF40939D54123";

8.static const char *ENTL_ID ="008031323334353637383132333435363738";

9.#define SM2_KEY_LENGTH 32 //256位曲线

10.////////////////////////////////////////////////////////////////

ENTL_ID是pboc规范中指定的用于SM3产生摘要的报文头数据。

[cpp]view plaincopyprint?

1.strcpy(szBuff, ENTL_ID);

2.strcat(szBuff,group_a);

3.strcat(szBuff,group_b);

4.strcat(szBuff,group_Gx);

5.strcat(szBuff,group_Gy);

6.AscToBcd(szDataForDigest,(unsigned char *)szBuff, nLen);

7.

8.….

9.

10.SM3(szDataForDigest,nLen+SM2_KEY_LENGTH*2, digestZA);

11.

12.memcpy(szDataForDigest,digestZA, ECC_LENGTH);

13.memcpy(szDataForDigest+ECC_LENGTH,DataIn, DataLen);

14.

15.SM3(szDataForDigest,DataLen+ECC_LENGTH, digestH);

第一步,对上述数据用sm3做摘要,摘要的结果与数据拼接后再做摘要。

[cpp]view plaincopyprint?

1.p = BN_new();

2. a = BN_new();

3. b = BN_new();

4.group = EC_GROUP_new(EC_GFp_mont_method());

5.

6.BN_hex2bn(&p, group_p))

7.BN_hex2bn(&a, group_a))

8.BN_hex2bn(&b, group_b))

这里是把定义的曲线常量转换成大数表式,这样才能使用openssl中的接口。Group是ECC中的曲线组,它是ECC算法的核心,为什么这么说呢?因为这

个group里的所有字段就确定了曲线的所有信息,后面会看到,这里只是用EC_GROUP_new生成一个空的group, 然后由p,a,b等参数来填充group, 再以这个group为基础去生成曲线上的点。

[cpp]view plaincopyprint?

1.if (!EC_GROUP_set_curve_GFp(group, p, a, b,ctx))

2.{

3. gotoerr_process;

4.}

5.

6.P = EC_POINT_new(group);

7.Q = EC_POINT_new(group);

8.R = EC_POINT_new(group);

9.if (!P || !Q || !R)

10.{

11. gotoerr_process;

12.}

这一段就确定了group的所有信息,并且根据group生成三个曲线上的点(点一定在曲线上,这个很重要)。

[cpp]view plaincopyprint?

1. x = BN_new();

2. y= BN_new();

3. z= BN_new();

4. if(!x || !y || !z)

5. {

6. gotoerr_process;

7. }

8.

9. //Gx

10. if(!BN_hex2bn(&x, group_Gx))

12. gotoerr_process;

13. }

14.

15. if(!EC_POINT_set_compressed_coordinates_GFp(group, P, x, 0, ctx))

16. {

17. gotoerr_process;

18. }

19.

20. if(!BN_hex2bn(&z, group_n))

21. {

22. gotoerr_process;

23. }

24. if(!EC_GROUP_set_generator(group, P, z, BN_value_one()))

25. {

26. gotoerr_process;

27. }

28.

29. if(!EC_POINT_get_affine_coordinates_GFp(group, P, x, y, ctx))

30. {

31. gotoerr_process;

32. }

这一段首先是设置n到group, n前面讲过,是曲线的阶。另外就是由G点坐标x,y确定点P,这里我其实也有点不太明白,G点坐标y本来就是已知的,为什么要再通过曲线变换表式生成y,是不是想要对比前面的group信息是否正确?只是为了校验?

[cpp]view plaincopyprint?

1.if ((eckey = EC_KEY_new()) == NULL)

2. {

3. gotoerr_process;

4. }

5. if(EC_KEY_set_group(eckey, group) == 0)

6. {

7. gotoerr_process;

8. }

9.

10.EC_KEY_set_public_key(eckey, P);

11. if(!EC_KEY_check_key(eckey))

13. gotoerr_process;

14. }

15.

16.

17. if(SM2_do_verify(1, digestH, SM2_KEY_LENGTH, signature, sig_len, eckey) != 1

)

18. {

19. gotoerr_process;

20. }

这段比较好理解,生成公钥eckey,并由eckey最终验签。验签的执行函数

sm2_do_verify有点复杂,这里不做过多的解释(其实是我解释不清楚, 哇哈哈),在一个国外的网站上找到一个比较好的描述,拿过来用用。

3 脱机数据认证使用sm2的具体流程

我假设看这篇文章的人对PBOC 2.0中基于RSA国际算法的脱机数据认证流程已经比较了解,相关概念不再过多描述,重点关注二者的差异性。

另外,简单说一下sm3,因为下面会用到。sm3是一个类似hash的杂凑算法,即给定一个输入(一般很长),产生一个固定长度的输出(sm3是32个字节,hash是20个字节)。它有两个特点:

1 不可逆性,即无法由输出推导出输入。

2 不同的输入,产生不同的输出。

下面就拿终端SDA认证卡片来看看sm2如何在pboc中使用的。

首先,发卡行公钥等数据(还包括公钥,算法标识,有效期等信息)被CA私钥签名(注意不是加密)生成发卡行公钥证书,这个证书会个人化到ic卡中。这些数据如下图所示:

图4

签名其实就是对这个表里的数据做一系列运算,最终生成一个64字节的数据,分别由各32字节的r和s拼接而成(r和s只是个符号而已,没有特别意思)。这64字节的签名拼接到图4后面就是发卡行公钥证书。

这里与国际算法的公钥证书就有明显的区别了。国际算法证书是密文的,发卡行公钥用rsa加密。而国密的公钥证书完全是明文。用数据举例,下面这些数据来自pboc3.0的卡片送检指南,就是检测时要求个人化到卡里的数据。

[plain]view plaincopyprint?

1.【发卡行公钥】 :

2.173A31DD681C6F8FE3BA6C354AD3924A4ADFD15EB0581BC1B37A1EB1C88DA2

9B47155F62FCF4CCCD201B134351A049D77E81F6A6C66E9CB32664F41348DA11F 3.

4.【CA哈希值】(r||s) :

5.3499A2A0A7FED8F74F119B416FF728BA98EF0A32A36BCCB8D0110623D466425C

A44C68F8E49121D9BFA9484CAEF9B476C5EB576D1A8DD6BC4A0986AF4134AB

AF

6.

7.【Tag_90 】(发卡行公钥证书) :

8.1262280001122000000204001140173A31DD681C6F8FE3BA6C354AD3924A4ADFD1

5EB0581BC1B37A1EB1C88DA29B47155F62FCF4CCCD201B134351A049D77E86A6

C66E9CB32664F41348DA11F63499A2A0A7FED8F74F119B416FF728BA98EF0A32A

36BCCB8D0110623D466425CA44C68F8E49121D9BFA9484CAEF9B476C5E56D1A8

DD6BC4A0986AF4134ABAF

可以自己的解析一下,看看是否和上面表格中的数据一致, 并且都是明文。

终端在读记录阶段获取发卡行公钥证书,国际算法需要用rsa公钥解密整个证书,然后验证hash,通过后取出发卡行公钥。而国密算法,终端只要用sm2公钥验64字节的签名,通过后直接取明文发卡行公钥,所以国密的验签的动作其实就相当于国际里的rsa解密和hash对比两个动作。

接着终端进行静态数据签名的验证,情况类似,对于国密,这些数据都是明文形式,后面拼接64字节的sm2签名,这64字节是用发卡行私钥对明文数据签名得到的。终端要做的就是拿刚刚获取的发卡行公钥对这64字节数据验证即可,验证通过就表示SDA通过。

四PBOC为什么要选择国密

首先从技术角度,实现同样的计算复杂度,ECC的计算量相对RSA较小,所以效率高。RSA现在在不断的增加模长,目前都用到了2048位。并不是说现在一定要用2048位才是安全的,只是它的安全性更高,破解难度更大,这个要综合考虑,位数高也意味着成本高。有些不差钱的大公司比如谷歌就已经未雨绸缪的

把2048位用在了它们的gmail邮箱服务中。PBOC3.0 认证中目前只用到1984位,其实也是相对安全的。

不过这个观点目前还存在争议。前段时间在清华大学听了一个关于密码算法的课,清华有个教授认为sm2并不见得比rsa更高级,只是sm2的原理比rsa难理解,所以大部分人认为它会相对安全些。一旦椭圆曲线被大家研究透了,sm2的光环也可能就此褪去。当然这个也是他个人的观点。

另外一个因素,要从国家战略的角度考虑,RSA之前一直被传与美国安全局合作,在算法中加入后门,这种事是宁可信其有的。国密算法咱起码是自己研发的东西,所有的过程细节都一清二楚, 不用担收后门的事情。

央行现在非常重视国产安全芯片的推进工作,前些天央行的李晓枫还公开强调未来金融IC卡芯片要国产化,国密算法是其中很关键的一步。未来国产芯片加国密算法,才会有真正自主, 安全的国产金融IC卡产品。

国密算法(国家商用密码算法简介)

国家商用密码算法简介 密码学是研究编制密码和破译密码的技术科学,起源于隐秘消息传输,在编码和破译中逐渐发展起来。密码学是一个综合性的技术科学,与语言学、数学、电子学、声学、信息论、计算机科学等有着广泛而密切的联系。密码学的基本思想是对敏感消息的保护,主要包括机密性,鉴别,消息完整性和不可否认性,从而涉及加密,杂凑函数,数字签名,消息认证码等。 一.密码学简介 密码学中应用最为广泛的的三类算法包括对称算法、非对称算法、杂凑算法。 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)给定杂凑函数的描述,找到两个不同的输入消息杂凑到同一个值是计算上不可行的,或给定 杂凑函数的描述和一个随机选择的消息,找到另一个与该消息不同的消息使得它们杂凑到同一个值是计算上不可行的。 杂凑函数主要用于完整性校验和提高数字签名的有效性,目前已有很多方案。这些算法都是伪随机函数,任何杂凑值都是等可能的。输出并不以可辨别的方式依赖于输入;在任何输入串中单个比特

国密SM2密码算法的C语言实现

龙源期刊网 https://www.sodocs.net/doc/3514109801.html, 国密SM2密码算法的C语言实现 作者:邢维哲 来源:《中国新通信》2017年第18期 【摘要】 N.Koblitz和https://www.sodocs.net/doc/3514109801.html,ler在1985年各自独立地提出将椭圆曲线应用于公钥密码系统。SM2椭圆曲线密码算法是国家密码管理局批准的一组算法,在电力自动化通讯中得到了 广泛应用。本文介绍了SM2椭圆曲线公钥密码算法和加密解密算法中一部分过程的C语言实现。 【关键词】椭圆曲线 SM2 密码算法公钥加密解密 Implementation of Public Key Cryptographic Algorithm SM2 based on C language XINGWEIZHE (1. XINGWEIZHE COLLEGE OF ENGINEERING, PEKING UNIVERSITY,BEIJING,100871) Abstract: Applying elliptic curves on public key cryptosystem was put forward independently by Koblitz and https://www.sodocs.net/doc/3514109801.html,ler in 1985. Public Key Cryptographic Algorithm SM2 is Public Key Cryptographic Algorithm SM2, as the Chinese national cryptographic standard, is widely used in communications of automation system. This paper introduces elliptic curve cryptosystem and gives an implementation based on C language. Key word: elliptic curve cryptosystem; Public Key Cryptographic Algorithm SM2; elliptic curve

国密算法和国际密码算法在车载单片机上应用的对比研究

n C tinfo security 技术研究2019年第8期\_________________________________________________________________________________________________________■doi:10.3969/j.issn.1671-1122.2019.08.010 国密算法和国际密码算法在车载单片机上 应用的对比研究 ---------------------------吴志红,赵建宁,朱元,陆科---------------------------- (同济大学,上海201800) 摘要:文章介绍了车载网络安全和密码学应用的研究现状,结合前人的研究分析了国密SM4、SM3、SM2算法和对应国际密码算法的差异。在可编程的硬件加密模 块上进行实验,从软件执行时间、运行内存占用等方面对比了国密算法和国际密码算 法的性能。结果表明,国密SM系列算法和对应国际密码算法占用大小相当的运行内存, 任何一种国密算法和对应的国际密码算法在软件执行速度方面都存在差异,但算法执 行时间的差别最大不超过31%。文章研究可为基于国密算法的车载和车联网安全通信 提供基础,也可为开发国密算法的硬件加密模块提供参考。 关键词:车联网;国密算法;国际密码算法;车载单片机 中图分类号:TP309文献标识码:A文章编号:1671-1122(2019)08-0068-08 中文引用格式:吴志红,赵建宁,朱元,等.国密算法和国际密码算法在车载单片机上应用的对比研究[J]. 信息网络安全,2019,19(8):68-75. 英文引用格式:WU Zhihong,ZHAO Jianning,ZHU Yuan,et https://www.sodocs.net/doc/3514109801.html,parative Study on Application of Chinese Cryptographic Algorithms and International Cryptographic Algorithms in Vehicle Microcotrollers卩].Netinfb Security 2019,19(8):68-75. Comparative Study on Application of Chinese Cryptographic Algorithms and International Cryptographic Algorithms in Vehicle Microcotrollers WU Zhihong,ZHAO Jianning,ZHU Yuan,LU Ke (Tongji University,Shanghai201800,China) Abstract:This paper introduces the research status of in-vehicle cybersecurity and cryptography applications,and analyzes the differences between the Chinese cryptographic algorithms-SM4,SM3,SM2and corresponding international cryptographic algorithms based on previous study.Experiments are carried out on the programmable hardware encryption module.The performance of the Chinese cryptographic algorithms and corresponding international cryptographic algorithms is compared in terms of software execution time and running memory occupation.There is a difference in software execution speed between 收稿日期:2019-3-2 基金项目:国家重点研发计划[2017YFE0101400] 作者简介:吴志红(1961—),男,浙江,教授,博士,主要研究方向为电机传动、嵌入式系统安防机制;赵建宁(1989—),男,河南,博士研究生,主要研究方向为汽车网络安全防扒车载安全协议、密码学应用;朱元(1976—),男,江苏,副教授,博士,主要研究方向为电机传动、汽车功能安全、信息安全;陆科(1983—),男,江苏,博士,主要研究方向为汽车功能安全、信息妥全。 通信作者:赵建宁1510810@https://www.sodocs.net/doc/3514109801.html, 68

基于国密算法、数字证书的安全问题理解

基于国密算法、数字证书的安全问题理解 1. 国密算法发展背景 随着金融安全上升到国家安全高度,近年来国家有关机关和监管机构站在国家安全和长远战略的高度提出了推动国密算法应用实施、加强行业安全可控的要求。摆脱对国外技术和产品的过度依赖,建设行业网络安全环境,增强我国行业信息系统的“安全可控”能力显得尤为必要和迫切。 密码算法是保障信息安全的核心技术,尤其是最关键的银行业核心领域长期以来都是沿用3DES、SHA-1、RSA等国际通用的密码算法体系及相关标准,为从根本上摆脱对国外密码技术和产品的过度依赖。2010年底,国家密码管理局公布了我国自主研制的“椭圆曲线公钥密码算法”(SM2算法)。为保障重要经济系统密码应用安全,国家密码管理局于2011年发布了《关于做好公钥密码算法升级工作的通知》,要求“自2011年3月1日期,在建和拟建公钥密码基础设施电子认证系统和密钥管理系统应使用SM2算法。自2011年7月1日起,投入运行并使用公钥密码的信息系统,应使用SM2算法。” 2. 国密算法 安全的本质是算法和安全系统 保证安全最根本的方法是基础软件和基础硬件都是自己控制,目前我国无法短期国产化的情况下,数据加密是最好的方式。如果加密算法以及实现都是外国提供的,安全性从何说起,所以我国国家密码局发布了自主可控的国密算法 国密算法:为了保障商用密码的安全性,国家商用密码管理办公室制定了一系列密码标准,包括SM1(SCB2)、SM2、SM3、SM4、SM7、SM9、祖冲之密码算法(ZUC)那等等。 其中SM1、SM4、SM7、祖冲之密码(ZUC)是对称算法;SM2、SM9是非对称算法;SM3是哈希算法。 目前SM1、SM7算法不公开,调用该算法时,需要通过加密芯片的接口进行调用 3. 国密算法的现状 虽然在SSL VPN、数字证书认证系统、密钥管理系统、金融数据加密机、签名验签服务器、智能密码钥匙、智能IC卡、PCI密码卡等产品上改造完毕,但是目前的信息系统整体架构中还有操作系统、数据库、中间件、浏览器、网络设备、负载均衡设备、芯片等软硬件,由于复杂的原因无法完全把密码模块升级为国产密码模块,导致整个信息系统还存在安全薄弱环节。 4. 浏览器与SSL证书 SSL证书的作用就是传输加密 如果网站安装了SSL证书,就启用了https访问,那么你的访问就更加安全了。

国密算法应用流程

RJMU401国密算法应用流程 一、国密芯片RJMU401数据加密传输、身份认证及数据完整性保证 1、传输信道中的数据都采用SM4分组加密算法,保证数据传输时数据的机密性; 2、使用散列算法SM3保证数据的完整性,以防止数据在传输的过程中被篡改; 3、使用非对称算法SM2的私钥签名来保证数据的不可抵赖性,确保数据是从某一个确 定的车载用户端发出; 4、具体流程如下: a、用户数据使用SM3进行散列运算得到数据摘要,再使用非对称算法SM2进行 摘要签名; b、同时使用对称算法SM4的密钥对数据摘要进行加密并传输给安全模块; c、使用同一个对称算法SM4密钥对用户数据进行加密,并将加密后的密文传输给 监控端; d、监控端收到数据密文后,使用对应的密钥进行对称算法SM4解密,并使用散列 算法对解密后的数据进行运算得到数据摘要1; e、监控端对收到的摘要签名进行对称算法SM4解密,再经过非对称算法解密得到 最初的数据摘要2; f、对比数据摘要1和数据摘要2,若两者相等则认为传输数据具备完整性;否则 认为数据出错; 图1、数据加密传输、数据完整性及签名认证流程 补充说明: 1、需要有一主机发起认证指令,监控端收到对应指令后,会产生一个随机数(会话密 钥),可用该随机数作为对称加密SM4的单次密钥,用于加密传输的数据; 2、此SM4的会话密钥不会明文传输,监控端查找对应车载用户端的公钥进行加密,传 给对应的车载用户端,车载用户端收到数据后,用自己的SM2私钥解密,即可得到此次会话密钥。(会话密钥采用非对称密钥机制进行传输) 3、每一个车载用户端存放一个或者两个SM2密钥对,可采用CA证书形式。证书在车 载用户端生产时候预置进安全芯片RJMU401,监控端存储所有的车载用户端的SM2密钥对(证书)。

国密算法

国密算法(SM1/2/4)芯片用户手册(UART接口) 注意:用户在实际使用时只需通过UART口控制国密算法芯片即可,控制协议及使用参考示例见下面 QQ:1900109344(算法芯片交流)

目录 1.概述 (3) 2.基本特征 (3) 3.通信协议 (3) 3.1.物理层 (3) 3.2.链路层 (4) 3.2.1.通讯数据包定义 (4) 3.2.2.协议描述 (4) 3.3.数据单元格式 (5) 3.3.1.命令单元格式 (5) 3.3.2.应答单元格式 (5) 3.4.SM1算法操作指令 (6) 3.4.1.SM1 加密/解密 (6) 3.4.2.SM1算法密钥导入指令 (6) 3.5.SM2算法操作指令 (7) 3.5.1.SM2_Sign SM2签名 (7) 3.5.2.SM2_V erify SM2验证 (7) 3.5.3.SM2_Enc SM2加密 (8) 3.5.4.SM2_Dec SM2解密 (9) 3.5.5.SM2_GetPairKey 产生SM2密钥对 (9) 3.5.6.SM2算法公钥导入 (10) 3.6.SM4算法操作指令 (10) 3.6.1.SM4加密/解密 (10) 3.6.2.SM4算法密钥导入指令 (11) 3.7.校验/修改Pin指令 (11) 3.8.国密算法使用示例(Uart口命令流) (12) 3.8.1.SM1算法操作示例 (12) 3.8.2.SM2算法操作示例 (13) 3.8.3.SM4算法操作示例 (14) 3.9.参考数据 (15) 3.9.1.SM1参考数据 (15) 3.9.2.SM2参考数据 (15) 3.9.3.SM4参考数据 (17)

数据存储及码流数据传输中的国密算法安全应用

? 160 ? ELECTRONICS WORLD ?技术交流 数据存储及码流数据传输中的国密算法安全应用 深圳市东进技术股份有限公司 王良田 前言:国密算法作为现代行业核心领域通用的密码算法,为进一步提升密码算法的可控性能,工作人员采用实时数据加密处理的方法,有效降低信息传输风险,增强数据信息的安全性。本文主要针对数据存储及码流数据传输中国密算法的运用进行分析。 工作人员在进行数据传输时,及时采用动态密钥方式进行数据加密处理,并加强密钥、算法等体系的设计和研究,在多次现场实践的基础上,信息安全得到可靠保障。码流信息传输中,国密算法作为主要技术支撑,通过借助信息隐藏理论构建码流信息安全管理框架,并对相应的码流信息有效分类,从而快速掌握关键技术。国密算法是信息隐蔽传输的载体,以信息伪装形式,并通过信道渠道,将相应信息进行密钥处理,大大提升码流数据信息的机密性。 1.国密算法的相关介绍 1.1 国密算法概念 国密算法主要包括SM2、SM3、SM4等多种算法原理,建立在密钥体系之上,相应人员在采用国密算法的环节,需全面掌握对称加密算法SM4、非对称加密算法SM2、摘要算法SM3等基础理论,SM2\SM3\SM4是经过国家认定的国产密码算法,其工作任务是:加密、解密、签名、验签、摘要等操作。1.2 主要类型 SM2属于非对称加密算法类型,密钥长度:公钥长度是32字节,私钥长度为32字节,是一种基于椭圆曲线理论实现的非对称算法,加密强度是256位,目前在密钥体系中主要用于密钥交换;SM3属于摘要算法类型,密钥长度不明确,对输入数据无要求,输出数据是固定长度:32字节,实际工作中主要对于给定长度位的码流信息再经过填充、迭代、选裁等处理,最终生成摘要值,加密强度为256比特,目前在码流信息传输中,人员为保证相应信息的完整性,将SM3加密算法进行广泛运用,确保工作信息不被篡改;SM4属于对称加密算法类型,密钥长度为16字节,输出数据的长度为16字节整数倍,加密强度为128比特,采用的是32轮非线性迭代结构,现如今被广泛运用于码流数据信息加密操作中。 2.国密算法在数据存储及码流数据传输中的应用现状 传统的码流数据传输中,人员为提高数据存储的安全性,主要采用人工巡查方式,每日进行安全巡查,然而导致大量人力和物力浪费,更为严重的是,码流信息传输的安全性得不到保障。行业领域内的数据安全成为社会关注的话题,也是行业发展中需要解决的问题,运用国密算法的基础上,工作人员及时掌握传感器获得信息参数,并对数据存储及码流信息传输等过程实行信息安全监控,监控中发现:传输过程迅速,同时安全性有保障,工作信息免受外界环境干扰。 现阶段国密算法在数据存储及码流数据传输中的应用现状:管理人员加强信息安全体系研究,注重对国密算法的运用,积极掌握自动化监控系统的关键技术。比如在码流信息存储及传输环节,工 作人员广泛运用国密算法进行数据加密,大大提升码流信息传输的便捷性和安全性。 3.国密算法在数据存储及码流数据传输中的应用策略 3.1 安全体系架构 (1)为保证国密算法在数据存储中的有效运用,工作人员及时了解安全体系架构的知识,以提升传输层安全、数据层安全、管理安全等的目标出发。(2)认真完成身份认证,促进码流数据信息传输的完整性、不可否认性、保密性。(3)认真做好授权管理,充分发挥管理职能,综合考虑系统功能,快速推进安全体系构架。(4)广泛运用国密算法,对于传输层、数据层、管理层涉及到的安全问题提高重视,及时做好隐患排查,进一步完善码流信息传输的安全强度。图1 所示为安全体系架构。 图1 安全体系架构 3.2 算法安全设计 (1)加密设计:工作人员采用多算法多层次加密,提高码流信息传输的安全性,提升信息加密强度,比如人员利用SM4算法、SM2算法完成码流文件信息的加密、解密、验证、存储等操作,验证成功后方可使用私钥进行签名。(2)算法运用设计:算法运用中,数据加密处理中,使用预先存储的第一对密钥,码流信息加密时及时输入原文,借助密码卡快输出密文,验证签名时,快速输出签名结果,在卡内进行运算过程,保证了整个加密、计算过程的保密性。(3)码流文件设计:对相应码流文件信息进行加密、解密等操作时,首先服务端输入密码卡,然后送入对称密钥,同时输出密文,解密时,有效输出明文,并由客户端进行码流文件信息加 密,最终输出了明文,整个操作环节,都以信息安全为主要考虑。(4)密钥设计:密钥体系设计中,采用权限分散、多人共管的基本原则,对密钥体系进行有效分层,比如将密钥体系分为有效的系统根密钥、文件保护密钥、系统主密钥、用户证书密钥、通讯会话密钥等多种类型,强化码流文件信息安全保护,在系统内将相应信息及时存储下来,同时进行及时加密处理,采用有效的通讯会话密钥,加强码流信息传输过程保护,及时形成科学完善的密钥体系。3.3 数据加密方式 芯片在码流信息传输中起到非常重要的作用,是加密引擎系 (下转第163页)

国产密码算法及应用

国产密码算法及应用 商用密码,是指能够实现商用密码算法的加密、解密和认证等功能的技术。(包括密码算法编程技术和密码算法芯片、加密卡等的实现技术)。商用密码技术是商用密码的核心,国家将商用密码技术列入国家秘密,任何单位和个人都有责任和义务保护商用密码技术的秘密。 商用密码的应用领域十分广泛,主要用于对不涉及国家秘密内容但又具有敏感性的内部信息、行政事务信息、经济信息等进行加密保护。比如各种安全认证、网上银行、数字签名等。 为了保障商用密码安全,国家商用密码管理办公室制定了一系列密码标准,包括SSF33、SM1(SCB2)、SM2、SM3、SM4、SM7、SM9、祖冲之密码算法等等。其中SSF33、SM1、SM4、SM7、祖冲之密码是对称算法;SM2、SM9是非对称算法;SM3是哈希算法。 目前已经公布算法文本的包括SM2椭圆曲线公钥密码算法、SM3密码杂凑算法、SM4分组密码算法等。 一、国密算法简介 1.SM1对称密码 国密SM1算法是由国家密码管理局编制的一种商用密码分组标准对称算法,分组长度为128位,密钥长度都为128比特,算法安全

保密强度及相关软硬件实现性能与AES相当,算法不公开,仅以IP 核的形式存在于芯片中。 采用该算法已经研制了系列芯片、智能IC卡、智能密码钥匙、加密卡、加密机等安全产品,广泛应用于电子政务、电子商务及国民经济的各个应用领域(包括国家政务通、警务通等重要领域)。 2.SM2椭圆曲线公钥密码算法 SM2算法就是ECC椭圆曲线密码机制,但在签名、密钥交换方面不同于ECDSA、ECDH等国际标准,而是采取了更为安全的机制。国密SM2算法标准包括4个部分,第1部分为总则,主要介绍了ECC 基本的算法描述,包括素数域和二元扩域两种算法描述,第2部分为数字签名算法,这个算法不同于ECDSA算法,其计算量大,也比ECDSA 复杂些,也许这样会更安全吧,第3部分为密钥交换协议,与ECDH 功能相同,但复杂性高,计算量加大,第4部分为公钥加密算法,使用ECC公钥进行加密和ECC私钥进行加密算法,其实现上是在ECDH 上分散出流密钥,之后与明文或者是密文进行异或运算,并没有采用第3部分的密钥交换协议产生的密钥。对于SM2算法的总体感觉,应该是国家发明,其计算上比国际上公布的ECC算法复杂,相对来说算法速度可能慢,但可能是更安全一点。 设需要发送的消息为比特串M,len为M的比特长度。为了对明文M进行加密,作为加密者的用户应实现以下运算步骤: 步骤1:用随机数发生器产生随机数k∈[1,n -1];

国密算法芯片

国密算法芯片 用户手册 注意:用户在实际使用时需要通过UART口控制国密算法芯片,控制协议见下面说明,芯片本身只包含其中某几个算法,需要在购买时说明。 通过UART口发命令即可,方便用户使用,价格便宜 QQ:2425053909(注明加密芯片)

目录 1.概述 (2) 2.基本特征 (2) 3.通信协议 (2) 3.1.物理层 (2) 3.2.链路层 (3) 3.2.1. 通讯数据包定义 (3) 3.2.2. 协议描述 (3) 3.3.数据单元格式 (4) 3.3.1. 命令单元格式 (4) 3.3.2. 应答单元格式 (4) 4.国密芯片加解密指令 (5) 4.1.SM1算法操作指令 (5) 4.2.SM4算法操作指令 (5) 4.3.SM7算法操作指令 (6) 4.4.SSF33算法操作指令 (7) 4.5.SM3算法操作指令 (7)

1.概述 本文档适用于使用国密算法芯片进行终端开发的用户。终端开发者通过发送串口命令的方式操作国密芯片进行数据交换,国密产品应用开发。通过阅读本文档,终端开发者可以在无需考虑国密算法实现细节情况下,借助国密芯片来迅速改造现有系统使之适合国密应用。 2.基本特征 芯片的基本特征见下表: 3.通信协议 3.1.物理层 国密芯片采用系统供电方式,电压5V或者3.3V。国密芯片串口与系统MCU 串口相连,异步全双工通讯,波特率默认为115200bps。数据格式为1位起始位、8位数据位和1位停止位,无校验位。 系统MCU向国密芯片发送命令时,在同一个命令内,相连两个发送字符之间的间隔不应大于10个字符时间,否则国密芯片可能会认为命令超时导致无任何响应。

国密算法在金融IC卡应用的根CA技术要求

国产密码算法根CA系统技术要求 2012年7月

目次 1范围 (3) 2技术要求性引用文件 (3) 3术语及定义 (3) 3.1 发卡机构标识代码Bank Identification Number;BIN (3) 3.2 EMV (3) 3.3 入网机构标识码institution identification code (3) 3.4 成员机构(Member organisation) (4) 3.5 金融IC卡借记/贷记应用根CA(Financial IC Card Debit/Credit Applications Root CA) 4 3.6 发卡机构(Issuer) (4) 3.7 收单机构(Acquirer) (4) 3.8 主账号primary account number;PAN (4) 3.9 RID, Registered application provider identifier (4) 3.10 公钥密码算法(Public key cryptographic algorithm) (4) 3.11 哈希算法(Hash algorithm) (4) 3.12 静态数据认证,Static data authentication;SDA (4) 3.13 动态数据认证,Dynamic data authentication;DDA (4) 3.14 CDA, Combined dynamic data authentication/application cryptogram generation .4 4符号和缩略语 (4) 5根CA系统涉及密码算法的环节 (5) 6根CA的SM2密钥对 (5) 6.1 根CA的SM2私钥 (5) 6.2 根CA的SM2公钥 (5) 7根CA公钥文件 (5) 7.1 根CA公钥文件命名 (5) 7.2 根CA公钥文件内容 (6) 7.3 根CA公钥证书验证 (6) 8发卡行公钥证书申请 (7)

基于国密算法的文件安全系统研究与实现

基于国密算法的文件安全系统研究与实现 徐学东1,季才伟2 (1.长春工程学院机电学院,吉林长春,130012;2.长春易申软件有限公司,吉林长春,130012) 摘要:针对网络环境下电子文件的安全需求,研究基于国密算法的文件安全系统。提出C/S架构的系统模型,针对公共信道交互的安全性问题,提出“新鲜性标识符+挑战应答模式”的认证及密码协议方案,并完成了算法、密钥体系安全性设计和产品开发,目前已并通过了国密测试。 关键词:国密算法;公共信道;挑战应答模式;密钥体系 Research on the file security system based on the National commercial cipher algorithm Xu Xuedong1,Ji Caiwei2 (1.School of Mechanical&Electrical Engineering Changchun institute of Technology,ChangChun,130012; 2.Changchun E-sun Software Co.,ChangChun,130012) Abstract:According to the security requirement of the electronic file in the network environment,Analysis the file security system based on the national commercial cipher algorithm. Present C/S structure of the system model, “the fresh identifier + challenge response mode”authentication and cryptographic protocol is put forward to solve the problem of the safety of public channel interaction,and gives the algorithm and key security system design and specific implementation process.At present, has passed the testing of National commercial cipher algorithm. Keywords:National commercial cipher algorithm;Common channel;Challenge response mode;Key system 0 引言 重要电子文件传输、存储等过程中存在非法访问、窃取的风 险,需要通过密码产品进行保护。我国《商用密码管理条例》规定, 对信息进行加密保护或认证所使用的密码技术和产品,只能使用 经国家密码管理局审批认定的商用密码产品。商密产品必须基于 国密商用算法,且需通过国密产品检测获得产品型号。 国密商用算法是指国密 SM 系列算法。在国密产品检测中, 除了应用国密算法,基于PKI的加密体系,公共信道双向认证、算 法和密钥管理安全性和性能均有很高的要求。研究基于国密算法 的电子文件安全系统的设计方案,确保可信认证及无漏洞交互, 达到国密产品检测的要求。 1 系统架构设计 网络环境下,电子文件一般采取集中管理、分布使用的管理 方式。基于SC/SS架构模型,系统由服务端和客户端构成。总体 架构如图1。服务端负责用户的身份认证,权限控制,电子文件的 加密存储和行为审计。客户端负责文件的解密,监控文件的使用。 两者共同完成用户身份认证、会话协商密钥和客户端系统的安全 监控、防破解功能。 系统的加解密环节则需要在服务端和客户端分别实现。服务 端密码运算采用国密局审批通过的SJK1238加密卡,负责与客户 端协商会话密钥,验证客户端身份,对文档进行加解密。客户端采 用SJK1104 USBkey,负责与服务端协商会话密钥时的数字签名、 通讯数据加解密及客户端文档解密。为确保性能及密钥的安全 性,密码运算采用硬件加密。具体算法为:公钥密码算法为SM2, 杂凑算法为SM3,对称密码算法为SM4。 2 公共信道认证及密码协议 由于客户端和安全服务器的交互必须通过公共信道,其安全 设计至关重要。传统通过公共信道实现基于本地身份的交互认证 问题的研究已经较为深入。无密钥的安全传输机制也取得一些成 果。本设计的目标是简洁、高效、确保认证防止内部攻击。 2.1 新鲜性标识符概念 基于细粒度新鲜性的认证及密码协议是通过公共信道交互 的有效方案。其中新鲜性的概念是:协议运行期间,新鲜性标示 符N在产生时间t0之间没有被使用过。如果交互双方都相信新 鲜性标识符重复概率很低,攻击者在协议运行期间找到一个使用 过的标识符是实践上不可行的,则该新鲜性标识符只有若干合法 的主体拥有。 2.2 基于新鲜性标识符的挑战应答模式 挑战应答(Challenge/Response)模式是常用的认证方式,就 是每次认证时认证服务器端都给客户端发送一个"挑战"字串, 客户端程序收到这个"挑战"字串后,做出相应的"应答",认 证服务器将应答串与自己的计算结果比较,判断是否通过认证。 根据Dolev-Yao模型,每次交互过程双方均采用“新鲜性挑战”字 串,如加密算法完善,不同消息之间的格式不能相同,每个主体能 区分消息是否是由自己产生,则基于该新鲜性标识符进行双向认 证的过程就是安全的。 本系统客户端与服务器通讯采用标准双向认证协议,使用挑 战应答模式协商会话密钥,交互双方在交互过程中各产生一个新 鲜性随时数,作为签名验证的标识符。协商成功后通讯的数据均 使用会话密钥进行加密。协商过程如下: 基金项目:吉林省科技攻关计划项目(20140204060SF);吉林省教育厅科研规划项目(吉教科合字[2014]第337号)DOI:10.16520/https://www.sodocs.net/doc/3514109801.html,ki.1000-8519.2016.18.029

国密算法高速加密芯片

国密算法 --TF32A09系列芯片 赵玉山1371 899 2179 芯片概述: TF32A09系列芯片采用独有的数据流加解密处理机制,实现了对高速数据流同步加解密功能,在加解密速度上全面超越了国内同类型芯片。 TF32A09系列芯片集成度高、安全性强、接口丰富、加解密速度快,具有极高的性价比。该系列芯片可广泛的应用于金融、电子政务、电子商务、配电、视频加 密、安全存储、工业安全防护、物联网安全防护等安全领域。 芯片架构:

关键特性: ?CS320D 32位安全内核,外部总线支持8位/16位/32位访问; ?工作频率可达到100MHz; ?64k Byte ROM,可将成熟固件或受保护代码掩膜到ROM,密码算法使用MPU保护; ?20kByte 片内SRAM,从容完成高速数据处理; ?512kByte Nor Flash,满足不同客户应用要求; ?拥有两个USB—OTG 接口,可根据应用需求设置成Host或Device ; ?集成多种通信接口和多种信息安全算法(SM1、SM2、SM3、SM4、3DES、RSA等),可实现高度整合的单芯片解决方案; ?支持在线调试,IDE 调试环境采用CodeWarrior。 内部存储器: ?20KB SRAM ?64KB ROM ?512KB FLASH 芯片外部接口:

技术参数: 1. 工作电压: 2.4V~ 3.6V 2. 频率:最高可达100MHZ 3. 外形尺寸:TF32A9FAL1(LQFP176,20X20X1.4mm ) TF32A9FCL1(LQFP80,10X10X1.4mm ) TF32A9FDL1(LQFP64,10X10X1.4mm ) 芯片优势: ? 自主设计,国产安全芯片 ? 专利设计,加密传输速度快 ? 拥有两个USB —OTG 接口,高速流加密 ? 接口丰富 ? 集成国密算法 外设模块 176Pin 芯片 80Pin 芯片 64Pin 芯片 USB1 ● ● ● USB2 ● ● 7816-1(智能卡) ● ● ● 7816-2(智能卡) ● ● SPI1 ● ● ● SPI2 ● UART1 ● ● ● UART2 ● ● NFC(nandFlash) ● ● I2C ● ● ● KPP(键盘) ● GPIO 32 16 2

车联网安全之国密算法与其他算法的区别

车联网安全之国密算法与其他算法的区别 概述: 在车联网中,不管是端到云、还是云到车,每个环节、每个节点的信息安全保障都离不开加解密算法的支持,加解密算法的合理使用以及其计算能力直接影响车联网的性能和用户的体验。 今天和大家讨论一下国密算法与其他加解密算法(即国际算法是美国的安全局发布,是现今最通用的商用算法)的差别,以便于车联网的设计者们在不同的环节、节点采用最优的算法,从而提高产品的性价比。 国密算法: 即国产密码算法,是国家密码局制定标准的一系列算法,其中包括了对称加密算法,椭圆曲线非对称加密算法,杂凑算法等,在金融领域目前主要使用公开的SM2、SM3、SM4三类算法,分别是非对称算法、哈希算法和对称算法。在车联网中,目前还没有车厂采用国密算法,但作者认为随着互联网安全作为国家属性的重要度提升,未来国密算法将是车联网安全领域的发展趋势。 与国际算法差别: SM1是国家密码管理部门审批的分组密码算法,分组长度和密钥长度都为128比特,算法安全保密强度及相关软硬件实现性能与AES相当,该算法不公开,仅以 IP核的形式存在于芯片中; 图1:SM1与AES的比较 SM2算法和RSA算法都是公钥密码算法,SM2算法是一种更先进安全的算法,在我们国家商用密码体系中被用来替换RSA算法。SM2性能更优更安全:密码复杂度高、处理速度快、硬件性能消耗更小。

图2:SM2与RSA的比较 注: 1. 亚指数级算法复杂度低于指数级别的算法。 2. RSA秘钥生成速度较慢。例:主频1.5G赫兹的话,RSA需要2-3秒的,这在车联网中是根本无法接受的,而SM2只需要几十毫秒。 SM3是摘要加密算法,该算法适用于商用密码应用中的数字签名和验证以及随机数的生成,是在SHA-256基础上改进实现的一种算法。SM3算法采用Merkle-Damgard结构,消息分组长度为512位,摘要值长度为256位。 图3:SM3与Sha256的比较 SM4分组密码算法是我国自主设计的分组对称密码算法,用于实现数据的加密/解密运算,以保证数据和信息的机密性,是专门为无线局域网产品设计的加密算法。

相关主题