SM2算法芯片
国密芯片卡
国密芯片卡国密芯片卡,是指采用国产SM2和SM4算法的芯片卡。
它是一种新型的密码芯片卡,具有较高的安全性和可靠性,广泛应用于政府、金融、电信等领域。
国密芯片卡采用了SM2算法,是中国自主研发的一种椭圆曲线公钥密码算法,是国家密码管理局指定的我国密码标准。
相较于传统的RSA算法,SM2算法具有更高的安全性和效率。
它利用了椭圆曲线上的离散对数问题,在保证安全性的同时,提高了加密和解密速度。
国密芯片卡还采用了SM4算法,是一种分组密码算法,也是国家密码管理局指定的我国密码标准。
相较于传统的AES算法,SM4算法具有更高的安全性和效率。
它以32位的密钥为基础,通过多轮迭代和S盒变换实现数据的加密和解密。
国密芯片卡除了采用了先进的密码算法外,还具有其他一些重要的特性。
首先,它具有硬件加密功能,利用专门的加密硬件芯片来进行加密运算,实现高速、安全的数据加密和解密。
其次,它具有物理隔离功能,将关键的加密密钥和数据存储在芯片内部,防止被非法获取和篡改。
再次,它具有多重认证功能,可以在芯片卡上存储多种认证方式,如指纹、密码等,增强了系统的安全性。
国密芯片卡在应用领域上具有广泛的应用前景。
首先,在政府领域,国密芯片卡可以用于身份证、护照等身份证明文件的加密存储和认证功能,提高了身份信息的安全性。
其次,在金融领域,国密芯片卡可以用于银行卡、电子钱包等支付工具的加密和认证功能,保护了用户的资金安全。
再次,在电信领域,国密芯片卡可以用于SIM卡的加密认证,防止SIM卡被复制和篡改。
总之,国密芯片卡是一种具有较高安全性和可靠性的密码芯片卡,广泛应用于政府、金融、电信等领域。
它采用了国产的SM2和SM4算法,在保证安全性的同时,提高了加密和解密速度。
国密芯片卡具有硬件加密、物理隔离和多重认证等功能,具有广阔的应用前景。
密码学SM2,SM3,SM4加密标准
课外实践五SM2、SM3及SM4加密标准一、概述1.SM2椭圆曲线公钥密码算法加密标准SM2算法就是ECC椭圆曲线密码机制,但在签名、密钥交换方面不同于ECDSA、ECDH等国际标准,而是采取了更为安全的机制。
SM2-1椭圆曲线数字签名算法,SM2-2椭圆曲线密钥交换协议,SM2-3椭圆曲线公钥加密算法,分别用于实现数字签名密钥协商和数据加密等功能。
SM2算法与RSA算法不同的是,SM2算法是基于椭圆曲线上点群离散对数难题,相对于RSA算法,256位的SM2密码强度已经比2048位的RSA密码强度要高。
椭圆曲线算法公钥密码所基于的曲线性质:椭圆曲线多倍点运算构成一个单向函数。
在多倍点运算中,已知多倍点与基点,求解倍数的问题称为椭圆曲线离散对数问题。
对于一般椭圆曲线的离散对数问题,目前只存在指数级计算复杂度的求解方法。
与大数分解问题及有限域上离散对数问题相比,椭圆曲线离散对数问题的求解难度要大得多。
因此,在相同安全程度要求下,椭圆曲线密码较其他公钥密码所需的秘钥规模要小得多。
2.SM3哈希算法加密标准SM3是一种密码散列函数标准。
密码散列函数是散列函数的一种。
它被认为是一种单向函数,也就是说极其难以由散列函数输出的结果,回推输入的数据是什么。
这种散列函数的输入数据,通常被称为消息,而它的输出结果,经常被称为消息摘要。
SM3适用于商用密码应用中的数字签名和验证消息认证码的生成与验证以及随机数的生成,可满足多种密码应用的安全需求。
为了保证杂凑算法的安全性,其产生的杂凑值的长度不应太短,例如MD5输出128比特杂凑值,输出长度太短,影响其安全性SHA-1算法的输出长度为160比特,SM3算法的输出长度为256比特,因此SM3算法的安全性要高于MD5算法和SHA-1算法。
一个理想的密码散列函数应该有这些特性:对于任何一个给定的消息,它都很容易就能运算出散列数值;难以由一个已知的散列数值,去推算出原始的消息;在不更动散列数值的前提下,修改消息内容是不可行的;对于两个不同的消息,它不能给与相同的散列数值。
PCI-E 密码卡 SM2 算法侧信道攻击缓解技术设计与研究
近年来,随着市场对高安全性的愈发重视,国家密码管理局颁布了安全三级密码模块相关标准,增加了对物理安全、环境失效性检测、抗侧信道攻击3 个方面的要求。
其中,抗侧信道攻击涉及对国密算法的研究和改造,因而难度较大,而国密算法中,又以非对称算法SM2 的原理和实现最为复杂。
行业内典型设计架构的外设组件互联高速总线(Peripheral Component Interconnect Express,PCI-E)密码卡一般采用多芯片设计架构,即采用一颗专用安全一级算法芯片来负责SM2 算法加速,一颗主控芯片来负责任务调度和敏感数据管理。
该架构下,多数算法专用芯片没有针对侧信道攻击进行加固,且密码卡在进行密码算法运算时,存在关键安全参数在芯片间传输等问题。
因此,研究缓解侧信道攻击的典型架构PCI-E 密码卡的SM2 算法设计,可使得现存的典型架构的PCI-E 密码卡在未来的市场应用上继续发挥作用。
本文首先简要地介绍PCI-E 密码卡的典型设计架构以及架构面临侧信道攻击时可能存在的风险;其次分别从SM2 算法的攻击原理[2]、抗侧信道攻击的针对性改造方法、Inspetor 工具验证3 个方面详细说明缓解技术的设计。
通过本文的介绍,可以填补典型架构的PCI-E密码卡在抗侧信道攻击方面的设计空缺,也可以指导安全二级PCI-E 密码卡的升级改造,使其具有安全三级的实用价值,满足国密检测规范和市场需求。
1典型PCI-E 密码卡设计架构因此,典型PCI-E 密码卡在更高级别安全要求下存在架构上的缺陷,可能导致关键安全参数在跨芯片传输时存在泄露的风险。
2SM2 算法攻击原理分析标准SM2 数字签名算法流程如图3 所示。
在签名过程中,设待签名的消息为M,它的数字签名(r,s),签名者A 的公私钥分别为为长度为v 比特的密码杂凑算法,G 为椭圆曲线的一个基点,其阶为素数,k 为临时私钥。
同时,攻击者也可以通过计时攻击,构建不同比特序列的伪密钥k' 对相同的消息M 进行签名运算,由于点乘运算中的点加运算次数与k 中比特1的位数相关,所以可以通过统计k'p 与kp 运算的时间来推测k 中1 的比特位,进而推断出密钥k。
关于国密算法SM1,SM2,SM3,SM4的笔记
关于国密算法SM1,SM2,SM3,SM4的笔记
国密即国家密码局认定的国产密码算法。
主要有SM1,SM2,SM3,SM4。
密钥长度和分组长度均为128位。
SM1 为对称加密。
其加密强度与AES相当。
该算法不公开,调⽤该算法时,需要通过加密芯⽚的接⼝进⾏调⽤。
SM2为⾮对称加密,基于ECC。
该算法已公开。
由于该算法基于ECC,故其签名速度与秘钥⽣成速度都快于RSA。
ECC 256位(SM2采⽤的就是ECC 256位的⼀种)安全强度⽐RSA 2048位⾼,但运算速度快于RSA。
SM3 消息摘要。
可以⽤MD5作为对⽐理解。
该算法已公开。
校验结果为256位。
SM4 ⽆线局域⽹标准的分组数据算法。
对称加密,密钥长度和分组长度均为128位。
由于SM1、SM4加解密的分组⼤⼩为128bit,故对消息进⾏加解密时,若消息长度过长,需要进⾏分组,要消息长度不⾜,则要进⾏填充。
SM2,SM3,SM4的相关⽂档可以参考如下链接:
SM2,SM3,SM4的C代码如下:
补充:
当使⽤特定的芯⽚进⾏SM1或其他国密算法加密时,若⽤多个线程调⽤加密卡的API时,要考虑芯⽚对于多线程的⽀持情况。
支持SM2椭圆曲线密码算法的通用产品名单(共352项)
2009/3/2
2009/3/4 2009/7/10 2009/7/22
2009/7/30
2009/8/5 2009/8/4 2009/8/5 2009/8/5
2009/10/30
2009/12/26 2009/12/26 2009/12/26 2009/12/26 2009/12/26 2009/12/26 2009/12/26 2009/12/26 2009/12/10
山东得安信息技术有限公司
智能密码钥匙
北京海泰方圆科技有限公司
智能IC卡
北京数码视讯科技股份有限公司
智能密码钥匙
北京华大信安科技有限公司
智能密码钥匙
北京华大智宝电子系统有限公司
PCI密码卡
北京三未信安科技发展有限公司
服务器密码机
上海普华诚信信息技术有限公司
服可务信器计密算码密机码支撑平 台安全认证网关
智能密码钥匙
航天信息股份有限公司
加密U盘
航天信息股份有限公司
PCI-E密码卡
山东渔翁信息技术股份有限公司
PCI密码卡
山东渔翁信息技术股份有限公司
服务器密码机
山东渔翁信息技术股份有限公司
智能密码钥匙
华翔腾数码科技有限公司
智能IC卡
北京得安信息技术有限公司/山东得 安信息技术有限公司
智能密码钥匙
北京得安信息技术有限公司/山东得 安信息技术有限公司
2011/6/2
2011/6/3
2011/6/12 2011/6/3 2011/6/3
2011/6/2
2011/6/12 2011/6/12 2011/6/14 2011/6/25 2011/6/25 2011/6/30 2011/6/30 2011/6/29 2011/6/29 2011/6/29 2011/6/29 2011/6/29 2011/6/25 2011/6/25 2011/6/30 2011/6/25 2011/6/25
SM2加密解密和数字签名验证的硬件设计
SM2加密解密和数字签名验证的硬件设计摘要:随着信息化时代的不断发展,加密解密技术和数字签名技术越来越重要。
本文提出了一种基于SM2加密解密和数字签名验证的硬件设计方案。
首先,文章介绍了SM2加密解密算法及其特点,然后阐述了数字签名算法的原理和应用,接着设计了基于FPGA芯片的SM2加密解密和数字签名验证的硬件电路,包括数据输入输出模块、加解密核心模块、数字签名验证核心模块、控制模块等。
最后,对设计过程中出现的一些问题进行了分析,并对设计方案的可行性和有效性进行评估。
关键词:SM2;加密解密;数字签名;FPGA;硬件设计1.引言随着互联网技术的迅速发展,信息安全问题也变得越来越突出。
加密解密技术和数字签名技术是保障信息安全的重要手段。
本文提出了一种基于SM2加密解密和数字签名验证的硬件设计方案。
2.SM2加密解密算法SM2加密解密算法是我国自主研发的一种非对称加密算法。
与RSA算法相比,SM2算法不仅具有相同的安全性,而且具有更高的运算速度和更小的存储空间。
SM2算法使用椭圆曲线密码学进行密钥生成和加密解密,其实现过程分为密钥生成、加密和解密三个部分。
3.数字签名算法数字签名算法是一种用于验证文档或消息真实性和完整性的方法。
数字签名通常由私钥生成,由公钥验证。
数字签名的主要目的是验证发送方的身份以及消息的完整性和真实性。
数字签名还可以防止抵赖,因为签名不能伪造或篡改。
4.基于FPGA芯片的硬件设计本文设计了一种基于FPGA芯片的SM2加密解密和数字签名验证的硬件电路。
硬件电路包括数据输入输出模块、加解密核心模块、数字签名验证核心模块、控制模块等。
数据输入模块用于接收待加密或待验证的数据,输出模块用于输出加密或验证结果。
加解密核心模块是整个电路的主要部分,用于实现SM2的加密和解密算法。
数字签名验证核心模块用于验证数字签名的真实性和完整性。
控制模块用于控制整个电路的运行和流程。
5.问题分析及可行性评估在设计过程中,我们遇到了许多问题,如设计难度、算法实现、电路布局和优化等。
国产商用密码算法SM2及其相关标准介绍
国产商用密码算法SM2及其相关标准介绍谢宗晓 李达 马春旺(中国金融认证中心)1 概述公钥密码算法的产生主要是为了解决密钥分发困难的问题1)。
1976年,Whitfield Diffie 和Martin Hellman 提出了公开密钥加密的设计思想,但当时并未能给出实现的算法。
之后,有多种算法被提出,但经得住考验得到大面积应用的主要是Ron Rivest、Adi Shamir 和Leonard Adleman 在1978年提出的RSA 算法。
直到现在,RSA 几乎成了公钥密码领域事实上的标准。
关于公钥密码算法的更多基础知识,请参考文献[1]。
RSA 算法的安全性,主要是基于大整数质因数分解的困难性,这意味着如果这个整数太小,就很容易受到暴力攻击。
所以,RSA 算法的密钥,越来越长。
NIST 2)建议在2010年12月31日前停止使用RSA1024,升级至RSA2048。
当然,到目前,也没有明确的证据表明RSA1024已经被破解了,但是从当前计算能力的升级速度推测,RSA1024确实已经不安全了。
密钥长度的不断增加意味着效率在不停地降低,与一味地增加密钥长度相比,寻求更合适的陷门单向函数是解决这个问题更佳途径。
Neal Koblitz 3)和Victor Miller 4)分别独立地在1985年将椭圆曲线引入密码学领域。
2 椭圆曲线密码学椭圆曲线密码学(Elliptic curve cryptography,ECC)的数学基础远没有RSA 算法那么易于理解。
首先,椭圆曲线和椭圆是两码事,两者之间联系不大。
最常见的椭圆曲线方程,如公式(1)典型的二元三次方程。
但是这个方程的几何表现形式并不是椭圆,或者说,跟椭圆基本没什么关系。
其图形如图1中的示例。
1)在Diffie& Hellman [4]发表于1976年论文中指出,在对称密码中,不仅存在“密钥分发困难”的问题,还存在一个问题是“密文中集成了密钥”。
BJCA—SM2算法升级的引领者
BJCA—SM2算法升级的引领者一、中国进入国产密码算法时代随着密码技术和计算技术的发展,1024位RSA公钥密码算法正面临日益严重的安全威胁。
RSA算法的安全性是基于大数因子分解的困难性,但是随着分布式计算能力的提高,大数因子分解的记录也在不断提高。
根据世界著名研究机构的报告,1024bitRSA密钥只应使用至2022年、2048bitRSA密钥只应使用至2030年、3072bitRSA密钥可使用至2030年之后。
随着分解大整数方法的进步及完善、计算机速度的提高以及计算机网络的发展,为了保障数据的安全,RSA的密钥需要不断增加,尽管通过增加密钥长度可以提高RSA密钥安全性,但随着密钥长度增加,分解的计算量也随之增大,从长远来看,RSA公钥密码算法将被淘汰已是大势所趋。
椭圆曲线密码学(Ellipticcurvecryptography,简称ECC)是基于椭圆曲线数学的一种公钥密码的方法,我国自主知识产权的SM2椭圆曲线密码算法即是ECC算法的一种。
ECC算法的安全性依赖于椭圆曲线离散对数问题,解椭圆曲线离散对数为指数级的难度,比因子分解更难;正是由于ECC算法和RSA算法这一明显不同,使得ECC算法的单位安全强度高于RSA算法,要达到同样的安全强度,ECC算法所需的密钥长度远比RSA算法低;同时,ECC算法在存储空间、带宽、计算量等方面都比RSA算法小,因而ECC算法具有更高的安全性和更快的性能。
ECC的这些特点使它必将取代RSA,成为通用的公钥加密算法。
2022年国家密码管理局下发了《关于做好公钥密码算法升级工作的函》(国密局函[2022]7号),规定2022年7月1日以后投入运行并使用公钥密码的信息系统,应使用SM2椭圆曲线密码算法;同时规定从2022年2月28日起在建和拟建公钥密码基础设施电子认证系统和密钥管理系统应使用SM2椭圆曲线密码算法、新研制的含有公钥密码算法的商用密码产品须支持SM2椭圆密码算法;文件中对于已投入运行并使用公钥密码的信息系统、已审批的商用密码产品,规定应尽快进行系统升级,使用SM2椭圆曲线密码算法(简称SM2算法);已审批的公钥密码基础设施电子认证系统和密钥管理系统应于2022年6月30日前完成系统升级。
A2000简介
A2000 (SSX1305) SM2算法芯片简介北京天一集成科技有限公司BEIJING AONE INTEGRATION CO., LTD主要规格A2000是高性能椭圆曲线密码算法(ECC)芯片,支持256位模长的国家公钥密码算法标准SM2,A2000同时支持高速国家散列算法标准SM3。
主要特性如下: 支持SM2加密、解密、签名、验证等运算和求模、模乘、求逆、点加、点积及KDF等基本运算;附带支持SM3散列算法;芯片内置多组公钥密码算法引擎,高速并行完成密码算法任务;芯片内提供4组私钥寄存器和20组公钥寄存器,可根据需要将私钥及公钥预置到芯片中,进一步提高运算效率;复位后自动执行自检,提高系统可靠性;提供两组32位总线实现输入输出,支持两种工作模式;内置锁相环PLL,外部时钟为3MHz;接口电平3.3V;最大工作电流500mA;所有与密码算法有关的运算均在芯片内完成,应用设计者无需研究算法的专业知识。
性能指标性能指标列表逻辑框图A2000片内逻辑框图工作原理A2000以操作协议方式工作,用户申请输入请求协议,当芯片内部存在空闲单元时启动输入过程。
完成计算后,芯片向片外申请输出,等待片外读取应答结果。
A2000最多可并行接收32个请求协议,每个请求协议的长度最多1KB。
由任务调度系统安排协议的并行操作。
无论已输入的请求协议是否处理完成,只要芯片内部存在空闲单元,即可继续向芯片内输入请求协议。
芯片计算完成后,通过应答协议输出计算结果。
由于每个协议执行时间不同,芯片在输出计算结果时不保证任务的先进先出,通过协议包中的任务流水号可实现请求协议和应答协议的一一对应。
A2000有单总线双向操作和双总线水操作两种工作模式。
单总线双向操作模式下并口A作为双向总线使用。
双总线流水操作模式下并口A作为输入端口,并口B作为输出端口。
在这种模式下,请求操作协议通过并口A写入,运算结果从并口B输出,实现流水线的形式运作。
面向SOC的SM2加解密算法的实现
面向SOC的SM2加解密算法的实现随着信息技术的高速发展,网络安全成为了一个日益重要的话题,加密算法也成为了保证网络安全的重要手段之一。
在众多的加密算法中,SM2被广泛应用于数字证书、电子邮件、电子签名等领域。
SM2加解密算法是一种基于椭圆曲线密码学的公开密钥算法,它采用了国密标准体系,适用于中国特有的政府、金融、电信、物联网等领域。
实现面向SOC的SM2加解密算法,则需要对SM2算法进行一定程度的优化,并将其应用于SOC芯片等具有特定用途的计算平台上。
为了展示SM2加解密算法的优秀性能和广泛应用,以下列举了三个面向SOC的SM2加解密算法的实现案例。
1. 基于ARM处理器的SM2算法实现该案例使用ARM Cortex-M系列处理器实现了SM2算法的加解密和签名验签功能。
通过对SM2算法中的模幂、模乘等运算进行优化,使其在ARM芯片上运行效率更高。
同时,该实现还采用了硬件加速模块,进一步提升了SM2算法的加解密速度,使其适用于低功耗、高效率的物联网设备。
2. 基于Xilinx FPGA的SM2算法实现该案例使用Xilinx FPGA芯片实现了SM2算法的加解密和签名验签功能。
利用FPGA芯片的可编程性,将SM2算法中的运算模块进行并行化,进一步提高了算法的性能。
同时,该实现还采用了FPGA芯片的硬核模块,将SM2算法中的乘法运算转化为硬件实现,使其运行效率更高。
3. 基于高通骁龙处理器的SM2算法实现该案例使用高通骁龙处理器实现了SM2算法的加解密和签名验签功能。
通过对SM2算法中的运算模块进行SIMD优化,使其能够更好地利用处理器中的多核心,提高算法的运行速度。
同时,该实现还采用了高通骁龙处理器上的硬件安全保护模块,加强了SM2算法在处理器上的安全性。
总之,面向SOC的SM2加解密算法的实现具有高效、安全、广泛应用等特点,可应用于物联网、金融、政府等多个领域,有效保障了信息的安全性。
同时,随着物联网和5G技术的发展,对SM2算法的要求也越来越高,需要在保证安全性的同时,考虑到处理器的低功耗、高效率等需求。
基于秘密共享的SM2和SM9密码协同计算研究与实现
(3)基于上述提出的几种方法,设计基于秘密共享的 SM2 和 SM9 密码系 统,提供秘密共享的数字签名和解密等功能。其中,参与进行秘密共享的装置 包含一个 CSP 密码客户端和多个密码服务器。CSP 密码客户端初始化私钥以得 到相关的秘密份额,并将秘密份额分配至本地以及密码服务器组,各装置分别 加密存储秘密份额。密码服务器组面向 CSP 密码客户端,在需要进行数字签名 或解密时,交互计算各自的秘密份额;CSP 密码客户端组合实现密码功能。
I
Abstract
In the information age, in order to realize the security and confidentiality of information, cryptography technology is used to encrypt and protect important information. Modern cryptography usually uses the public key cryptosystem to ensure the security of information. In public key cryptosystem, the security of user’s key is related to the security of the entire system. In order to protect the key, secret sharing technology is often used. It divides the key or secret related to the key into multiple secret shares. Secret shares are stored separately by a plurality of devices. When a cryptographic operation is required, the plurality of parties storing the secret share calculate separately and then combine to generate the final result of the operation. Two kinds of public key cryptosystem promulgated by the State Cryptographic Administration: the elliptic curve based on public key cryptosystem, SM2 algorithm and the bilinear mapping based on identification cryptosystem, SM9 algorithm, can realize digital signature and data encryption. Research on the protection of national secret algorithms and related keys is of great significance.
嵌入式系统芯片中SM2算法软硬件协同设计与实现
嵌入式系统芯片中SM2算法软硬件协同设计与实现作者:钟丽刘彦余思洋谢中来源:《计算机应用》2015年第05期摘要:针对现有的椭圆曲线算法系统级设计中开发周期长,以及不同模块的性能开销指标不明确等问题,提出一种基于电子系统级(ESL)设计的软硬件(HW/SW)协同设计方法。
该方法通过分析SM2(ShangMi2)算法原理与实现方式,研究了不同的软硬件划分方案,并采用统一建模语言SystemC对硬件模块进行周期精确级建模。
通过模块级与系统级两层验证比较软硬件模块执行周期数,得出最佳性能划分方式。
最后结合算法控制流程图(CFG)与数据流程图(DFG)将ESL模型转化为寄存器传输级(RTL)模型进行逻辑综合与比较,得出在180nm CMOS工艺,50MHz频率下,当算法性能最佳时,点乘模块执行时间为20ms,门数83000,功耗约2.23mW。
实验结果表明所提系统级架构分析对基于椭圆曲线类加密芯片在性能、面积与功耗的评估优势明显且适用性强,基于此算法的嵌入式系统芯片(SoC)可根据性能与资源限制选择合适的结构并加以应用。
关键词:SM2算法;SystemC;软硬件划分;电子系统级;周期精确中图分类号: TP302.1 文献标志码:AAbstract:Concerning the problem that the development cycle of existing elliptic curve algorithm system level design is long and the performanceoverhead indicators are not clear, a method of Hardware/Software (HW/SW) codesign based on Electronic System Level (ESL)was proposed. This method presented several HW/SW partitions by analyzing the theories and implementations of SM2 algorithm, and generated cycleaccurate models for HW modules with SystemC. Module and system verification were proposed to compare the executing cycle counts of HW/SW modules to obtain the best partition. Finally, the ESL models were converted to Rigister Transfer Level (RTL) models according to the CFG (Control Flow Graph) and DFG (Data Flow Graph) to perform logic synthesis and comparison. In the condition of 50MHz,180nm CMOS technology, when getting best performance,the execute time of pointmultiply was 20ms,with 83000 gates and the power consuption was 2.23mW. The experimental result shows that the system analysis is conducive to performance and resources evaluation, and has high applicability in encryption chip based on elliptic curve algorithm. The embedded SoC (System on Chip) based on this algorithm can choose appropriate architecture based on performance and resource constraints.Key words: SM2 algorithm; SystemC; hardware/software partition; Electronic System Level (ESL); cycleaccurate0 引言随着移动支付终端、智能卡、无线通信等嵌入式设备的普及,数据的安全性也面临越来越大的挑战。
用SM2算法芯片实现嵌入式系统的安全设计
用SM2算法芯片实现嵌入式系统的安全设计
随着网络技术,特别是互联网技术在我国的迅速推广和普及,各种网络应用,如电子商务、电子政务、网上银行、网上证券交易等项目,也在我国迅猛发展。
但是网络非法入侵、诈骗等事件严重影响了网络信息安全。
只有不断发展和提高网络信息安全技术,才能保证网络健康发展。
在信息安全技术领域,公开密钥基础没施(PKI)很好地为互联网提供了安全服务。
如今网络应用中的认证、数据的加解密、完整性验证、不可否认性等功能已经离不开PKI技术的支持。
随着PKI密码技术的发展,SM2算法(国际上称之为ECC
算法)应用越来越广,效率较之前的算法更高,破解难度更大、更安全。
本系统在嵌入式主板上实现SM2算法PKI技术,提供基于SM2算法的签名验证、数字信封和解封、数据加解密来实现身份认证,保证网络信息安全交互。
1 系统总体设计
本设计中嵌入式系统的CPU采用三星公司的S3C2440芯片,操作系统采
用嵌入式Linux作为平台,内存采用6 4 MB SDRAM,文件存储采用128 MB NANDFlash,HS32U2-U芯片提供SM2算法。
系统的总体设计结构框图如图1所示。
系统各部分结构功能如下:
◆CPU:系统为提供运行、计算以及和各个模块进行通信;
◆RAM:为操作系统提供运行空间;
◆Flash:提供boot启动程序、内核映像、文件系统;。
谈谈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+a62 离散的椭圆曲线上⾯的坐标系都是基于实数的,椭圆曲线看起来都是平滑的,如果我们限制曲线的点都必须是整数,曲线就变成离散的了,如图3所⽰:图3再进⼀步限制,要求整数必须⼤于0, ⼩于某个⼤整数P, 这样就形成了⼀个有限域F p.然后我们在这个有限域⾥定义⼀些点与点之间的加减乘除运算规则,⽐如A点加B点得到C点(记做A+B≡C (mod p)),或者A点乘以n得到K点(记做A×n≡K (mod p))。
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
SM2算法芯片用户手册(UART接口)
注意:用户在实际使用时只需通过UART口控制SM2算法芯片即可,控制协议及使用参考示例见下面
QQ:1900109344(算法芯片交流)
目录
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)
3.4. SM2算法操作指令 (5)
3.4.1. SM2_Sign SM2签名 (5)
3.4.2. SM2_Verify SM2验证 (5)
3.4.3. SM2_Enc SM2加密 (6)
3.4.4. SM2_Dec SM2解密 (6)
3.5. SM2_GetPairKey 产生SM2密钥对 (7)
3.6. SM2算法公钥导入 (7)
3.7. 校验/修改Pin指令 (8)
3.8. SM2算法使用示例 (9)
1.概述
本文档适用于使用SM2算法芯片进行终端产品开发的用户。
终端开发者通过Uart口发命令的方式操作SM2算法芯片进行数据交换,产品应用开发。
通过阅读本文档,终端开发者可以在无需考虑算法实现细节情况下,迅速完成产品开发。
2.基本特征
芯片的基本特征见下表:
串口波特率 115200 bps(默认)
供电电源 DC 3.3V,5V
通讯接口 UART
3.通信协议
3.1.物理层
SM2算法芯片采用系统供电方式,电压5V或者3.3V。
算法芯片串口与系统MCU串口相连,异步全双工通讯,波特率默认为115200bps。
数据格式为1位起始位、8位数据位和1位停止位,无校验位。
系统MCU向SM2算法芯片发送命令时,在同一个命令内,相连两个发送字符之间的间隔不应大于10个字符时间,否则芯片可能会认为命令超时导致无任何响应。
3.2.链路层
3.2.1.通讯数据包定义
通信数据包如下图所示:
STX(0x02) Len_Hi Len_Low Data LRC ETX(0x03)
通讯数据包项目、长度、含义说明对应见下表:
通讯数据包项目含义一览表
序号 项 目 长度(字节)说明
1 数据包头(STX) 1 常量:0x02
2 数据单元长度(Len) 2 需传输的数据单元Data部分的长度,高字节在前,低字节在后。
例如:0x0010表示Data部分有16个字节。
3
需传输的数据单元
(Data) 不定
长度由Len指出,数据单元头两个字节是
命令码(系统发送命令到芯片)或状态码
(芯片返回数据给系统),后面是其它参
数。
4 冗余检验值(LRC) 1 Data部分数据各字节异或值。
5 数据包尾(ETX) 1 常量:0x03
数据包总长度为: Len + 5字节,最长不能超过512字节。
3.2.2.协议描述
系统MCU首先发送一个命令数据包,发送完成后等待来自算法芯片的应答数据包。
算法芯片正确收到命令数据包后,便执行命令,然后回应应答数据包。
3.3.数据单元格式
3.3.1.命令单元格式
MCU向SM2芯片发送的数据包称为命令数据包,命令数据包的格式如下图所示:
STX(0x02) Len_Hi Len_Low CommandH CommandL Command Param LRC ETX(0x03)
命令单元格式见下表:
命令单元格式一览表
项目长度说明
CommandH 1字节命令类别
CommandL 1字节命令代码
【参数】不定长命令参数
3.3.2.应答单元格式
SM2芯片向系统MCU应答数据包,如下图所示:
STX(0x02) Len_Hi Len_Low StatusH StatusL Status Data LRC ETX(0x03)
应答单元格式见下表:
应答单元格式一览表
项目长度说明
StatusH 1字节状态码高字节
StatusL 1字节状态码低字节
【数据】不定长应答数据
3.4.SM2算法操作指令
3.4.1.SM2_Sign SM2签名
命令数据单元:
命令数据单元含义一览表
标识 内容 说明
CommandH 80H SM2算法指令
CommandL C6H SM2签名
data 20H 32字节待签名数据
应答数据单元:
应答数据单元含义一览表
标识 内容 说明
Status 00H,00H 签名成功
Status 00H,01H 命令格式不对
data 40H 64字节签名结果
3.4.2.SM2_Verify SM2验证
命令数据单元:
命令数据单元含义一览表
标识 内容 说明
CommandH 80H SM2算法指令
CommandL C8H SM2验证
32字节待签名数据+64字节签名data 60H
结果
应答数据单元:
应答数据单元含义一览表
标识 内容 说明
Status 00H,00H 验证成功
Status 00H,01H 命令格式不对
data 无 无
3.4.3.SM2_Enc SM2加密
命令数据单元:
命令数据单元含义一览表
标识 内容 说明 CommandH 80H SM2算法指令
CommandL CAH SM2加密
明文 P_Len P_Len字节的明文
应答数据单元:
应答数据单元含义一览表
标识 内容 说明
Status 00H,00H 加密成功
Status 00H,01H 命令格式不对
密文 E_Len E_Len=P_Len+97字节的密文 3.4.4.SM2_Dec SM2解密
命令数据单元:
命令数据单元含义一览表
标识 内容 说明 CommandH 80H SM2算法指令
CommandL CBH SM2解密
密文 E_Len E_Len字节的密文
应答数据单元:
应答数据单元含义一览表
标识 内容 说明
Status 00H,00H 验证成功
Status 00H,01H 命令格式不对
明文 P_Len P_Len= E_Len ‐ 97字节的明文 3.5.SM2_GetPairKey 产生SM2密钥对
命令数据单元:
命令数据单元含义一览表
标识 内容 说明 CommandH 80H SM2算法指令
CommandL CDH SM2密钥对生成 应答数据单元:
应答数据单元含义一览表
标识 内容 说明
Status 00H,00H 验证成功
Status 00H,01H 命令格式不对
data 40H 64字节公钥
3.6.SM2算法公钥导入
命令数据单元:
命令数据单元含义一览表
标识 内容 说明
CommandH 80H 密钥导入指令,
CommandL CEH SM2公钥导入
公钥 40H 64字节公钥
应答数据单元:
应答数据单元含义一览表
标识 内容 说明
Status 00H,00H 导入成功
Status 00H,01H 导入失败
3.7.校验/修改Pin指令
命令数据单元:
命令数据单元含义一览表
标识 内容 说明 CommandH 08H 校验/修改Pin指令
CommandL 00/01H 00校验Pin,01为修改Pin
Pin 08H/10H 8字节的校验Pin,或者16字节的Pin(原来的8字节Pin+8字节替换的Pin)
应答数据单元:
应答数据单元含义一览表
标识 内容 说明
Status 00H,00H 命令成功
Status 00H,01H 命令失败
3.8. SM2算法使用示例
说明:芯片出厂时的Pin是8字节:0x06 0x06 0x06 0x06 0x06 0x06 0x06 0x06,只有Pin 验证通过了才能生成SM2密钥对或导入64字节的SM2公钥,断电后,以后SM2的加解密都以此密钥来计算。
第一步:校验Pin的,Uart口命令流,红色部分为初始Pin
02 00 0a 08 00 06 06 06 06 06 06 06 06 08 03//校验Pin
返回:02 00 02 00 00 00 03//执行正确。