GM-T 0080-2020 SM9密码算法使用规范.pdf
- 文档编号:14660736
- 上传时间:2023-06-25
- 格式:PDF
- 页数:16
- 大小:738.23KB
GM-T 0080-2020 SM9密码算法使用规范.pdf
《GM-T 0080-2020 SM9密码算法使用规范.pdf》由会员分享,可在线阅读,更多相关《GM-T 0080-2020 SM9密码算法使用规范.pdf(16页珍藏版)》请在冰点文库上搜索。
书书书犐犆犛犆犆犛犔中华人民共和国密码行业标准犌犕犜犛犕密码算法使用规范犛犕犮狉狔狆狋狅犵狉犪狆犺犻犮犪犾犵狅狉犻狋犺犿犪狆狆犾犻犮犪狋犻狅狀狊狆犲犮犻犳犻犮犪狋犻狅狀发布实施国家密码管理局发布目次前言引言范围规范性引用文件术语和定义缩略语的密钥对生成元主私钥主公钥用户私钥用户公钥数据格式密钥数据结构签名数据结构加密数据结构密钥封装数据格式预处理预处理杂凑函数犎预处理杂凑函数犎预处理对运算犲预处理用户验签预处理用户加密计算过程生成密钥数字签名签名验证密钥封装密钥解封加密解密密钥协商犌犕犜前言本文件按照标准化工作导则第部分:
标准化文件的结构和起草规则的规定起草。
请注意本文件的某些内容可能涉及专利。
本文件的发布机构不承担识别专利的责任。
本文件由密码行业标准化技术委员会提出并归口。
本文件起草单位:
上海信息安全工程技术研究中心、北京国脉信安科技有限公司、深圳奥联信息安全技术有限公司、无锡华正天网信息安全系统有限公司。
本文件主要起草人:
袁峰、王晓春、封维端、张立圆、王学进、药乐、蒋楠、程朝辉、蔡先勇、王一曲。
犌犕犜引言本文件是()基于标识的密码技术系列标准之一,及依托于信息安全技术标识密码算法第部分:
算法。
本文件的目标是保证密码算法使用的正确性,为密码算法的使用制定统一的数据格式和使用方法。
本文件从算法应用的角度给出密码算法的使用说明。
犌犕犜犛犕密码算法使用规范范围本文件定义了密码算法的使用方法,以及密钥、加密与签名等的数据格式。
本文件适用于密码算法的使用,以及支持密码算法的设备和系统的研发和检测。
规范性引用文件下列文件中的内容通过文中的规范性引用而构成本文件必不可少的条款。
其中,注日期的引用文件,仅该日期对应的版本适用于本文件;不注日期的引用文件,其最新版本(包括所有的修改单)适用于本文件。
信息安全技术密码杂凑算法信息安全技术分组密码算法(所有部分)信息安全技术椭圆曲线公钥密码算法信息安全技术标识密码算法第部分:
总则信息安全技术标识密码算法第部分:
算法术语和定义下列术语和定义适用于本文件。
算法标识犪犾犵狅狉犻狋犺犿犻犱犲狀狋犻犳犻犲狉用于标明算法机制的数字化信息。
犛犕密码算法犛犕犪犾犵狅狉犻狋犺犿一种采用双线性对的椭圆曲线公钥密码算法。
签名主密钥狊犻犵狀犪狋狌狉犲犿犪狊狋犲狉犽犲狔密钥管理基础设施的根签名密钥对,包括签名主私钥和签名主公钥,用于进行数字签名、验签和为用户生成用户签名密钥。
加密主密钥犲狀犮狉狔狆狋犻狅狀犿犪狊狋犲狉犽犲狔密钥管理基础设施的根加密密钥对,包括加密主私钥和加密主公钥,用于进行数字加密、解密和为用户生成用户加密密钥。
用户签名密钥狊犻犵狀犪狋狌狉犲犽犲狔其中私钥由密钥管理基础设施产生并下发给用户。
该类密钥包括用户签名私钥和签名公钥,用于数字签名和验签。
犌犕犜用户加密密钥犲狀犮狉狔狆狋犻狅狀犽犲狔其中私钥由密钥管理基础设施产生并下发给用户。
该类密钥包括用户加密私钥和加密公钥,用于加密、解密和密钥协商。
公开参数服务狆狌犫犾犻犮狆犪狉犪犿犲狋犲狉狊犲狉狏犻犮犲用于发布基于标识的密码技术中公开参数、私钥生成策略、用户标识信息和状态等数据的应用服务。
缩略语下列缩略语适用于本文件。
:
电子密码本方式():
椭圆曲线密码算法():
基于标识的密码技术():
用户身份标识():
密钥生成中心():
公开参数服务()犛犕的密钥对生成元犌上的生成元犘点,记为(,),数据格式的定义为:
,类型为,其内容是:
,其中,和分别标识点的分量和分量,每个分量长度为。
犌上的生成元犘点,记为(,),数据格式的定义为:
,类型为,其内容是:
,其中,、和、分别标识公钥的各个分量和分量,每个分量长度为,或,其中,、分别标识公钥的各个分量,每个分量长度为。
选取解压后的根值()中最右边位为的那个值。
还原后根值最右那个比特应用为,否则基域狇根,基域狇根。
或,其中,、分别标识公钥的个分量,每个分量长度为。
选取解压后的根值()中最右边位为的选项值。
还原后根值取最右一比特为的选项值,否则基域狇根,基域狇根。
犛犕主私钥包括签名主私钥和加密主私钥,都是一个大于或等于且小于的整数(是循环群犌、犌和犌犜的阶,其值见的附录),简记为,长度为。
犛犕主公钥包括签名主公钥犘狆狌犫和加密主公钥犘狆狌犫。
分别是犌和犌上的点,坐标表示为(,)和(,)。
其中签名主公钥的,坐标还分别包含两个分量即分量和分量,分量和犌犕犜分量,每个分量的长度为。
而加密主公钥,坐标值长度都是。
犛犕用户私钥包括用户签名私钥和用户加密私钥,分别是犌和犌上的点,坐标表示为(,)和(,)。
其中用户签名钥,坐标值长度都是。
而用户加密私钥的,坐标还分别包含两个分量即分量和分量,分量和分量,每个分量的长度为。
犛犕用户公钥在技术中,用户标识可唯一确定用户的公钥,应用中以此代表公钥。
基于双线性对坐标的表示可分为用户签名公钥坐标和用户加密公钥坐标,用户签名公钥坐标与签名主公钥坐标结构相同,坐标上还有各自的两个分量,记为犙,用户加密公钥与加密主公钥坐标结构相同,记为犙。
注:
这里给出用户公钥坐标的生成方法。
输入:
算法函数犎,狌狊犲狉犐犇,犺犻犱,主公钥犘狆狌犫犻,生成元犘犻犻,。
输出:
用户公钥犙犃。
计算方法:
犙犃犛犎(犐犇犃犺犻犱,犖)犘犘狆狌犫(犡犙犃,犢犙犃),签名公钥坐标用于签名验签。
犙犃犈犎(犐犇犃犺犻犱,犖)犘犘狆狌犫(犡犙犃,犢犙犃),加密公钥坐标用于密钥封装、加密解密。
数据格式密钥数据结构密钥类型分为签名、加密主密钥和签名、加密用户密钥:
)算法签名主私钥数据格式的定义为:
)算法签名主公钥数据格式的定义为:
为类型,内容为:
,其中,、和、分别标识公钥的各个分量和分量,每个分量长度为。
或,其中,、分别标识公钥的各个分量,每个分量长度为。
选取解压后的根值()中最右边位为的那个值。
还原后根值取最右那个比特为的值,否则基域狇根,基域狇根。
或,其中,、分别标识公钥的个分量,每个分量长度为。
选取解压后的根值()中最右边位为的选项值。
还原后根值取最右一比特为的选项值,否则基域狇根,基域狇根。
)算法加密主私钥数据格式的定义为:
)算法加密主公钥数据格式的定义为:
为类型,内容为:
,其中,和标识公钥的各个分量和分量,每个分量长度为。
,其中,标识公钥的分量,每个分量长度为。
选取解压后的根值中最右边犌犕犜位为的那个值。
还原后根值取最右那个比特为的值,否则基域狇根。
或,其中,分别标识公钥的分量,每个分量长度为。
选取解压后的根值中最右边位为的选项值。
还原后根值取最右一比特为的选项值,否则基域狇根。
)算法用户签名私钥数据格式的定义为:
)算法用户加密私钥数据格式的定义为:
签名数据结构算法签名数据格式的定义为:
,杂凑分量,算法是(见)签名结果(见)加密数据结构算法加密后的数据格式的定义为:
,加密方式,(见的),明文数据杂凑值密文为加密的方式,定义代表序列密码加密,、分别代表、,、分组密码模式。
分组密码加密的算法为,该部分在的中被称为。
为,使用算法对明文数据运算得到的杂凑值,其长度固定为。
,为加密密文。
密钥封装数据格式用户将一个随机数封装成后,并传递给用户,以便计算出密钥。
密钥封装数据格式的定义为:
,生成的密钥封装的交换密文作为用户保留的密钥。
作为交换密文传递给用户,用户利用可以生成。
预处理预处理杂凑函数犎验签、加密时应按的内容进行预处理计算。
输入:
犌犕犜比特串数据整型数据长度整型是循环群犌、犌和犌犜的阶输出:
字节串杂凑值,长度为,且预处理杂凑函数犎签名时应按的内容进行预处理计算。
输入:
比特串数据整型数据长度整型是循环群犌、犌和犌的阶输出:
整数预处理对运算犲应按的数字签名生成算法进行预处理计算。
对运算犲,通过用户标识公钥和犌、犌中的两个公开点犘和犘点计算出双曲线对和。
签名运算。
输入:
生成元犘签名主公钥输出:
比特串双线性对犌中元素计算结果,的长度()加密运算。
输入:
生成元犘加密主公钥输出:
比特串双线性对,长度为详细计算过程见的附录。
预处理用户验签犙犇将身份标识字符串变换为犌域上的点的运算,从而得到基于双线性对的用户验证签名所需的坐标值,用于验签计算过程中。
输入:
字节串用户身份标识串整数私钥生成函数公开标识,取值为整数是循环群犌、犌和犌犜的阶生成元犘签名主公钥输出:
犌犕犜预处理用户加密犙犈将身份标识字符串变换为犌域上的点的运算,从而得到基于双线性对的用户加解密所需的坐标值,用于密钥封装、加密、密钥交互计算过程中。
输入:
字节串用户身份标识串整数私钥生成函数公开标识,取值为整数是循环群犌、犌和犌犜的阶生成元犘加密主公钥输出:
计算过程生成密钥密钥生成包括主私公钥、用户私钥类型。
)主私钥生成签名主私钥和加密主私钥分别是由按照(所有部分)的方法产生的随机数,其大于或等于且小于犖的整数(犖为算法的阶),长度为。
输入:
无输出:
主私钥,如果为签名主私钥标识为,加密主私钥标识为)主公钥生成签名主公钥和加密主公钥分别由相对应的主私钥与犌的生成元点犘和犌的生成元点犘的积生成。
签名主公钥生成输入:
签名主私钥犘生成元点输出:
签名主公钥加密主公钥生成输入:
加密主私钥犘生成元点输出:
加密主公钥详细的计算过程见的第章。
)用户私钥生成用户私钥分用户签名私钥和用户加密私钥,用户分别由相对应的主私钥与犌的生成元点犘犌犕犜和犌的生成元点犘有关。
用户签名私钥生成输入:
签名主私钥字节串用户身份标识串整数私钥生成函数公开标识,取值为整数是循环群犌、犌和犌犜的阶犘生成元点输出:
用户签名私钥用户加密私钥生成输入:
加密主私钥字节串用户身份标识串整数私钥生成函数公开标识,取值为整数是循环群犌、犌和犌犜的阶犘生成元点输出:
用户加密私钥详细的计算过程见的第章。
数字签名签名是指使用预处理犲的结果和签名者私钥,通过签名计算得到签名结果的过程。
输入:
比特串对值整数是循环群犌、犌和犌犜的阶比特串待签名数据签名者私钥输出:
签名值详细的计算过程见的。
签名验证签名验证是指使用预处理犲的结果、签名值和被签数据,通过验签计算确定签名是否通过验证的过程。
输入:
字节串签名者标识整数私钥生成函数公开标识整数是循环群犌、犌和犌犜的阶比特串对值比特串被签名数据签名值犌犕犜输出:
为“真”表示“验证通过”,为“假”表示“验证不通过”。
详细的计算过程见的。
密钥封装密钥封装是指使用通过对运算生成密钥,并产生基于对方加密公钥坐标值的点的密文即加密封装的密文。
输入:
整型生成密钥的长度字节串对方身份标识比特串预处理的犘对值预处理对方用户加密公钥坐标值输出:
详细的计算过程见的。
密钥解封密钥封装是指使用通过对运算生成对称加密密钥,并产生基于对方加密公钥坐标值的点的密文即加密封装的密文。
输入:
字节串解封方身份标识解封方加密私钥加密封装的密文输出:
比特串密钥详细的计算过程见的。
加密加密是指使用指定公开密钥对明文进行特定的加密计算,生成相应密文的过程。
该密文只能由该指定公开密钥对应的私钥解密。
输入:
比特串明文整数明文长度整数对称加密算法类型,序列:
,分组:
比特串预处理的犘对值预处理对方用户加密公钥坐标值输出:
密文详细的计算过程见的。
解密解密是指使用指定私钥对密文进行解密计算,还原对应明文的过程。
输入:
犌犕犜字节串解密方身份标识整数对称加密算法类型,序列:
,分组:
解密方加密私钥加密封装的密文输出:
比特串明文整数明文长度详细的计算过程见的。
密钥协商密钥协商是在两个用户之间建立一个共享秘密密钥的协商过程,通过这种方式能够确定一个共享秘密密钥的值。
设密钥协商双方身份标识为、,分别预处理对应的得到和。
其加密密钥对分别为(,)和(,),双方需要获得的密钥数据的比特长度为。
密钥协商协议分为两个阶段。
第一阶段:
产生临时密钥对用户。
输入:
加密坐标输出:
临时密钥用户。
输入:
加密坐标输出:
临时密钥详细的计算过程见的。
第二阶段:
计算共享秘密密钥用户。
输入:
临时密钥临时密钥字节串身份标识字节串身份标识加密主公钥生成元用户加密私钥整型需要输出的密钥数据的比特长度输出:
比特串可选项,校验值,用于用户校验比特串可选项,用于对比的校验值比特串位长为的密钥数据详细的计算过程见的。
犌犕犜用户。
输入:
临时密钥临时密钥字节串身边标识字节串身边标识加密主公钥生成元用户加密私钥整型需要输出的密钥数据的比特长度输出:
比特串可选项,校验值,用于用户校验比特串可选项,用于对比的校验值比特串位长为的密钥数据详细的计算过程见的。
调用生成密钥算法产生临时密钥对(,),将和用户的用户身份标识发送给用户。
犌犕犜书书书犜犕犌中华人民共和国密码行业标准犛犕密码算法使用规范中国标准出版社出版发行北京市朝阳区和平里西街甲号()北京市西城区三里河北街号()网址总编室:
()发行中心:
()读者服务部:
()中国标准出版社秦皇岛印刷厂印刷各地新华书店经销开本印张字数千字年月第一版年月第一次印刷书号:
定价元如有印装差错由本社发行中心调换版权专有侵权必究举报电话:
()
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- GM-T 0080-2020 SM9密码算法使用规范 GM 0080 2020 SM9 密码 算法 使用 规范