GM∕T 0087-2020 浏览器密码应用接口规范.pdf
《GM∕T 0087-2020 浏览器密码应用接口规范.pdf》由会员分享,可在线阅读,更多相关《GM∕T 0087-2020 浏览器密码应用接口规范.pdf(27页珍藏版)》请在咨信网上搜索。
1、ICS 35.040 CCS L 80 中华人民共和国密码行业标准G/T 0087-2020 浏览器密码应用接口规范Browser cryptography API specification 2020-12-28发布2021-07-01实施%$ms r 国家密码管理局发布刮涂层查真伪G/T 0087-2020 目次前言皿1 范围2 规范性引用文件-3 术语、定义和缩略语13.1 术语和定义3.2 缩略语.1 4 概述.5 数据结构5.1 大整数.2 5.2 密钥对字典25.3 JsonWebKey字典2 5.4 算法字典Algorithm3 5.5 密码接口Crypto35.6 密钥算法Ke
2、yAlgorithm4 5.7 密钥接口CryptoKey46 密码接口6.1 接口定义6.2 加密方法66.3 解密方法66.4 签名方法76.5 验证签名方法6.6 杂凑方法6.7 生成密钥方法86.8 派生密钥方法86.9 派生比特方法6.10 导人密钥方法.6.11 导出密钥方法106.12 封装密钥方法106.13 解封密钥方法16.14 异常127 算法流程.12 7.1 SM3算法12 7.2 SM2加密算法u 7.3 SM2签名算法16 7.4 SM4算法20 7.5 SM中ECB算法nI G/T 0087-2020 目。吕本文件按照GB/T1.1-2020标准化工作导则第1部
3、分:标准化文件的结构和起草规则的规定起草。请注意本文件的某些内容可能涉及专利。本文件的发布机构不承担识别专利的责任。本文件由密码行业标准化技术委员会提出并归口。本文件起草单位:北京海泰方圆科技股份有限公司、元锡江南信息安全工程技术中心、格尔软件股份有限公司、成都卫士通信息产业股份有限公司、吉大正元信息技术股份有限公司。本文件主要起草人:柳增寿、蒋红宇、徐明翼、郑强、罗俊、赵丽丽。I nHU GM/ T 0087-2020 浏览器密码应用接口规范1 范围本文件定义了浏览器执行网页中的密码操作的JavaScript A凹,包括加密、解密、杂凑、签名、签名验证和随机数生成等操作。本文件定义的API适
4、用于浏览器中用户或服务的认证、文档或代码的签名、通信的机密性与完整性保证等。2 规范性引用文件下列文件中的内完过俨的规范性引用而构成本文件必不可少的条款想中驻日期的引用文件,仅该日期对应的服体通饵于本文件;不注日期的引用文件,其最新版本(包括E本文件。GB/ T 3290 GB/ T 329 3. 1 术语和定d3.1.1 字典一种使用键一值对3.1.2 承诺一种JavaScript范式,承诺(pr异步功能。3.2 缩略语下列缩略语适用于本文件。IDL 接口描述语言(InterfaceDescription Language) 4 概述、而王汇口j以实现浏览器脚本程序的本文件用于为网络应用中浏
5、览器JavaScript脚本提供密码操作能力。网络应用可以让用户利用浏览器内置密码能力在浏览器端来保护其身份数据和隐私数据。直接使用JavaScript实现密码功能的方式会导致安全缺陷和性能问题。因此有必要在浏览器上原生实现密码功能,并向avaScript程序提供GM/T 0087-2020 密码支撑。安全接口Crypto提供了WCAPI的通用加密功能的接口。该接口定义一个crypto对象开放给浏览器,在avaScript中可以全局访问。crypto对象包含生成随机数的方法和一个subtle对象。subtle对象实现了SubtleCrypto接口。SubtleCrypto接口提供了对若干具体的
6、密码计算的访问接口。用户avaScript程序可以使用的密码资源的层次关系见图1。取随机数类型访问权限算法加密、解密用法签名、验签杂凑密钥导入、密钥导出密钥封装、密钥解封密码接口密钥属性安全功能窗口对象图1密码资源的层次关系5 数据结构5.1 大整数IDL, typedef Uint8Array Biglnteger; 大整数Biglnteger定义为Uint8Array类型,保存任意长度的元符号整数,高字节在前。从API读取的数值应有最小的类型化数组的长度(即除了O之外,至多7个前导O比特)0 API应接受任意数目的前导O比特。5.2 密钥对字典IDL, dictionary CryptoK
7、eyPair CryptoKey publicKey; CryptoKey privateKey; CryptoKey Pair密钥对字典表示一对非对称密钥对,该密钥对由私钥和公钥两部分组成。5.3 JsonWebKey字典IDL, 2 GM/T 0087-2020 dictionaryRsaOtherPrimeslnfo DOMString r; DOMString d; DOMString t; dictionary J son W ebKey DOMString kty; DOMString use; sequenceDOMString) key_ops; DOMString alg;
8、boolean ext; DOMString crv; DOMString x; DOMString y; DOMString d; DOMString n; DOMString e; DOMString p; DOMString q; DOMString dp; DOMString dq; DOMString qi; sequence intcrflce (、rytoKeyrCldonly at tri butc KcyTypctypc; rcadonly lt tri bute boolcan cxtrlcta blc; rCldonly lttributc object algorith
9、m; rcadonly attribute objcct uSlgcs; 其中句GM/T 0087-2020 KeyType为密钥的类型。可识别的密钥类型值为public private和secret。非透明密钥包括对称算法密钥用secret表示,非对称算法密钥由公和私钥组成,分别由public或private表示。KeyUsage为密钥的操作类型。可识别的密钥用法包括encryptdecrypt sign verify deri-veKey deri veBi ts wrapKey和unwrapKey。每个CryptoKey对象有一个内部组成集合,用于存储密钥相关的信息。这些组成部分不作为标
10、准的一部分而暴露。他们表示具体实现本规范时的内部状态。内部组成通过双方括号内的名字进行表述。CryptoKey对象内部包括type刀,extractable,algorithm刀,algorithm_cached刀, usa-ges,usages_cached和handle。algorithm内部组成应为、或者继6.1 h血。usages内部组成的内容应为Se-quence类型。Type反映了【type 6 密码接口IDL: enu ,/ qu e b a nk eLbvd e KVJ 、A,/ae-Jr飞、tJ民Mm训oe 414、JPA门Usequence ieFIgorithm, Cry
11、ptoKey baseKey, AlgorithmI-dentifier derivedKeyType, boolean extractable, sequenceKeyUsage) keyUsages ); Promise any) deriveBitsC Algorithmldentifier algorithm, CryptoKey baseKey, unsigned long length) ; Promise any) importKeyC KeyFormatformat, C BufferSource or son WebKey) keyData, Al-gorithmldenti
12、fier algorithm, boolean extractable, sequenceKeyUsage) keyUsages ); Promiseany) exportKeyCKeyFormat format, CryptoKey key); Promiseany) wrapKeyCKeyFormat format, CryptoKey key, CryptoKey wrappingKey, Al-gorithmldentifier wrapAlgorithm) ; Promise any) unwrapKey C KeyFormat format, BufferSource wrappe
13、dKey, CryptoKey un-wrappingKey, Algorithmldentifier unwrapAlgorithm, Algorithmldentifier unwrappedKey-Algorithm, boolean extractable, sequence keyUsages); 5 GM/T 0087-2020 其中,KeyFormat指定密钥串行化的格式。可识别的密钥格式取值为:raw 非梢式化字节序列。用于秘密密钥。pkcs8 符合RFC5280格式的私钥信息格式的DER编码。jwk 密钥作为JsonWebKey对象并为JavaScript对象。6.2 加密方
14、法cncrypt加密方法返回一个新的承诺对象,该对象使用指定的A19ori thmldentifier和所提供的CryptoKey来加密数据。它应执行如下步骤:a) 将算法和密钥分别作为algorithm矛1key参数传递至加密方法;b) 将数据作为data参数的克隆数据结果传递至加密算法;c) 将normalizedAlgorithm作为正规化算法的结果,将alg设置为algorithm,将op设置为en一crypt ; c!) 若出错.返回带有normalizedAlgorithm的承诺拒绝;c) 设置promlsc为新的Promise;) 返回promlsc并异步完成余下的步骤;g) 若
15、余下的步骤或者调用的过程抛出异常或者拒绝承诺,则结束算法;h) 若normalizedAlgorithm的name成员不同于密钥的algorithmJJ内部组织的name属性,抛出InvalidAccessError;i) 若密钥的usagesJJ内部组织不包含encrypt条目,抛出I川alidAccessError;j) 将ciphcrtcxt设置为加密操作的结果,该操作过程指定了normalizedAlgorithm加密操作、密钥和明文;k) 用ciphcrtcxt作为Promise对象返回。6.3 解密方法dccrypt解密方法返回一个新的承诺对象,该对象使用A19ori thm Id
16、entifier和提供的CryptoKey对密文进行解密。它应执行下列步骤:6 a) 将算法和l密钥分别作为algorithm和kcy参数传递至解密方法;b) 将数据作为data参数的克隆数据结果传递至解密算法;c) 将normalizedAlgorithm作为正规化算法的结果,将alg设置为algorithm,将op设置为de-crypt ; d) 若出错,返回带有normalizedAlgorithm的承诺拒绝;e) 设置promlse为新的Promisc;) 返回promlse并异步完成余下的步骤;g) 若余下的步骤或者调用的过程抛出异常或者拒绝承诺,则结束算法;h) 若normaliz
17、edAlgorithm的name成员不同于密钥的algorithmJJ内部组织的namc属陀.抛出InvalidAccessError;i) 若密钥的 usagesJJ内部组织不包含decrypt条目,抛出InvalidAcccssError;j) 将plaintext设置为解密操作的结果,该操作过程指定了特定密钥、算法和密文下的normllizcc!Algorithm解密操作;k) 川plaintext作为Promise对象返回。GM/T 0087-2020 6.4 签名方法slgn签名方法返回一个新的承诺对象,该对象使用Algorithmldentifier和提供的CryptoKey对数据
18、进行签名。它应遵循下列步骤:a) 将算法和密钥分别作为algorithm和key参数传递至签名方法;b) 将数据作为data参数的克隆数据结果传递至签名算法;c) 将normalizedAlgorithm作为正规化算法的结果,将alg设置为algorithm,将op设置为sign,; d) 若出错,返回带有normalizedAlgori thm的承诺拒绝;e) 设置promlse为新的Promise;f) 返回promlse并异步完成余下的步骤;g) 若余下的步骤或者调用的过程抛出异常或者拒绝承诺,则结束算法;h) 若normalizedAlgorithm的name成员不同于密钥的algor
19、ithmJJ内部组织的name属性,抛出InvalidAccessError;i) 若密钥的【usagesJJ内部组织不包含sign条目,抛出I川alidAccessError;j) 将plaintext设置为解密操作的结果,该操作过程指定了特定密钥、算法和消息数据下的normalizedAlgorithm签名操作;k) 将Promise对象返回。6.5 验证签名方法verify验证签名方法返回一个新的承诺对象,该对象使用Algorithmldentifier和提供的CryptoKey对数据进行验签。它应遵循下列步骤:a) 将算法和密钥分别作为algorithm和key参数传递至验签方法;b)
20、 将签名数据作为签名参数的data克隆数据结果传递至验签算法;c) 将normalizedAlgorithm作为正规化算法的结果,将alg设置为algorithm,将op设置为verify; d) 若出错,返回带有normalizedA19ori th m的承诺拒绝;e) 将数据作为数据参数的数据克隆结果传递至验签方法;f) 设置promlse为新的Promise;g) 返回promlse并异步完成余下的步骤;h) 若余下的步骤或者调用的过程抛出异常或者拒绝承诺,则结束算法;i) 若normalizedAlgorithm的name成员不同于密钥的algorithmJJ内部组织的name属性,抛
21、出InvalidAccessError;j) 若密钥的usagesJJ内部组织不包含verify条目,抛出InvalidAccessError;k) 将result设置为验签操作的结果,该操作过程指定了特定密钥、算法、签名和消息数据下的normalizedAlgori thm验签操作;1) 将result作为Promise对象返回。6.6 杂凑方法digest散列方法返回一个新的承诺对象,该对象使用Algorithmldentifier对数据进行散列操作。它应遵循下列步骤:a) 将算法参数传递至散列方法;b) 将数据作为数据参数的data克隆数据结果传递至散列方法;c) 将normalized
22、Algorithm作为正规化算法的结果,将alg设置为algorithm,将op设置为digest; GM/T 0087-2020 d) 若出错,返回带有normalizedAlgorithm的承诺拒绝;e) 设置promlse为新的Promise;f) 返回promlse并异步完成余下的步骤;g) 若余下的步骤或者调用的过程抛出异常或者拒绝承诺,则结束算法;h) 将result设置为散列操作的结果,该操作过程指定了算法和消息数据下的normalizedAlgorithm验签操作;i) 将result作为Promise对象返回。6.7 生成密钥方法调用generateKey方法时,应执行如下步
23、骆a) 将算法、可提取性和用法袋,剔.-b) erateKey ; usage参数传递至生成密钥方法;c) 若出错,返回带有nftnalizedAlgorithm的承诺拒绝;d) 设置promise为新的Promise;e) 返回p.omis乡干异步完成余下的步骤;f) 若余下的步领或省调府的克、g) 将result设置为生成密钥操作的结果,该操作过程指定了算法和可提取性和用法下的nor-h) 若结果且结果、庐山at?、同时用法usages为空剿抛拙SyntaxEr-ror ; 若结果为Cryp钥为属Ptor性koy 内qsFeM对usE象a咚ge返s ; k) 且结果的私1) 将r年ult非
24、因。6.8 派生密钥方法8 调用deriveK町派生密钥方法时,应完成如下步骤:a)将algorithm,base1,ey, derivedKeyType, extractable和usagespble和keyUsages参数传递至derb) 将normalizedAl正or-,thm曹功4规化算法的结果,:Bits ; c) 若出错,返回带有normalizcdd) 将normalizedDerivedKeyAlgorithm作为正规化算法的结果,将alg设置为derivedKeyType,将op设置为importKey; e) 若出锚,返回带有normalizedDerivedKey Al
25、gori t hm的承诺拒绝;f) 设置promlse为新的Promisc;g) 返回promlse并异步完成余下的步骤;h) 若余下的步骤或者调用的过程抛出异常或者若余下的步骤或者调用的过程抛出异常或者拒绝承诺返回错误码,则结束算法承诺,则结束算法;i) 若normalizedAlgorithm的name成员不同于支持派生操作的注册算法,抛出NotSupported-Error; j) 若normalizedDerivedKeyAlgorithm的name成员不同于支持取得密钥长度操作的一个注册算法,抛出aNotSupportedError;GM/T 0087-2020 k) 若normal
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- GMT 0087-2020 浏览器密码应用接口规范 GM 0087 2020 浏览器 密码 应用 接口 规范
1、咨信平台为文档C2C交易模式,即用户上传的文档直接被用户下载,收益归上传人(含作者)所有;本站仅是提供信息存储空间和展示预览,仅对用户上传内容的表现方式做保护处理,对上载内容不做任何修改或编辑。所展示的作品文档包括内容和图片全部来源于网络用户和作者上传投稿,我们不确定上传用户享有完全著作权,根据《信息网络传播权保护条例》,如果侵犯了您的版权、权益或隐私,请联系我们,核实后会尽快下架及时删除,并可随时和客服了解处理情况,尊重保护知识产权我们共同努力。
2、文档的总页数、文档格式和文档大小以系统显示为准(内容中显示的页数不一定正确),网站客服只以系统显示的页数、文件格式、文档大小作为仲裁依据,平台无法对文档的真实性、完整性、权威性、准确性、专业性及其观点立场做任何保证或承诺,下载前须认真查看,确认无误后再购买,务必慎重购买;若有违法违纪将进行移交司法处理,若涉侵权平台将进行基本处罚并下架。
3、本站所有内容均由用户上传,付费前请自行鉴别,如您付费,意味着您已接受本站规则且自行承担风险,本站不进行额外附加服务,虚拟产品一经售出概不退款(未进行购买下载可退充值款),文档一经付费(服务费)、不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
4、如你看到网页展示的文档有www.zixin.com.cn水印,是因预览和防盗链等技术需要对页面进行转换压缩成图而已,我们并不对上传的文档进行任何编辑或修改,文档下载后都不会有水印标识(原文档上传前个别存留的除外),下载后原文更清晰;试题试卷类文档,如果标题没有明确说明有答案则都视为没有答案,请知晓;PPT和DOC文档可被视为“模板”,允许上传人保留章节、目录结构的情况下删减部份的内容;PDF文档不管是原文档转换或图片扫描而得,本站不作要求视为允许,下载前自行私信或留言给上传者【曲****】。
5、本文档所展示的图片、画像、字体、音乐的版权可能需版权方额外授权,请谨慎使用;网站提供的党政主题相关内容(国旗、国徽、党徽--等)目的在于配合国家政策宣传,仅限个人学习分享使用,禁止用于任何广告和商用目的。
6、文档遇到问题,请及时私信或留言给本站上传会员【曲****】,需本站解决可联系【 微信客服】、【 QQ客服】,若有其他问题请点击或扫码反馈【 服务填表】;文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“【 版权申诉】”(推荐),意见反馈和侵权处理邮箱:1219186828@qq.com;也可以拔打客服电话:4008-655-100;投诉/维权电话:4009-655-100。