ICS 35.040 GM CCS L 80 中华人民共和国密码行业标准 GM/T 0087—2020 浏览器密码应用接口规范 Browser cryptography API specification 2020-12-28 发布 2021-07-01实施 国家密码管理局 发布 GM/T 0087—2020 目 次 前言 II 1 范围 2 规范性引用文件 术语、定义和缩略语· 3.1 术语和定义 3.2 缩略语 概述 数据结构 5.1 大整数 5.2 密钥对字典 5.3 JsonWebKey字典 5.4 算法字典Algorithm 5.5 密码接口Crypto 5.6 密钥算法KeyAlgorithm 5.7 密钥接口CryptoKey 6 密码接口 6.1 接口定义 6.2 加密方法 6.3 解密方法 6.4 签名方法 6.5 验证签名方法 6.6 杂凑方法 6.7 生成密钥方法 6.8 派生密钥方法 6.9 派生比特方法 6.10 导入密钥方法 6.11 导出密钥方法 6.12 封装密钥方法 6.13 解封密钥方法 11 6.14 异常 12 算法流程· 12 7.1 SM3算法 12 7.2 SM2加密算法 13 7.3 SM2签名算法 16 7.4 SM4算法 20 7.5 SM4-ECB算法 22 GM/T 0087—2020 前言 本文件按照GB/T1.1一2020《标准化工作导则第1部分:标准化文件的结构和起草规则》的规定 起草。 请注意本文件的某些内容可能涉及专利。本文件的发布机构不承担识别专利的责任, 本文件由密码行业标准化技术委员会提出并归口。 本文件起草单位:北京海泰方圆科技股份有限公司、无锡江南信息安全工程技术中心、格尔软件股 份有限公司、成都卫士通信息产业股份有限公司、吉大正元信息技术股份有限公司。 本文件主要起草人:柳增寿、蒋红宇、徐明翼、郑强、罗俊、赵丽丽。 Ⅲ GM/T0087—2020 浏览器密码应用接口规范 1 范围 本文件定义了浏览器执行网页中的密码操作的JavaScriptAPI,包括加密、解密、杂凑、签名、签名 验证和随机数生成等操作。 性保证等。 2规范性引用文件 下列文件中的内容通过文中的规范性引用而构成本文件必不可少的条款。其中,注日期的引用文 件,仅该日期对应的版本适用于本文件;不注日期的引用文件,其最新版本(包括所有的修改单)适用于 本文件。 GB/T32918(所有部分) 信息安全技术SM2椭圆曲线公钥密码算法 GB/T3290 信息安全技术 SM3密码杂凑算法 GB/T3290 信息安全技术 SM4分组密码 3术语、定义和缩略语 3.1术语和定义 下列术语和定义适用于本文件。 3.1.1 字典 种使用键-值对作为元素的集合。 3.1.2 承诺 种JavaScript范式,承诺(promise)代表一个任务结果。通过本范式可以实现浏览器脚本程序的 异步功能。 3.2缩略语 下列缩略语适用于本文件。 IDL接口描述语言(InterfaceDescriptionLanguage) 4概述 本文件用于为网络应用中浏览器JavaScript脚本提供密码操作能力。网络应用可以让用户利用浏 览器内置密码能力在浏览器端来保护其身份数据和隐私数据。直接使用JavaScript实现密码功能的方 式会导致安全缺陷和性能问题。因此有必要在浏览器上原生实现密码功能,并向JavaScript程序提供 GM/T 0087—2020 密码支撑。 安全接口Crypto提供了WCAPI的通用加密功能的接口。该接口定义一个crypto对象开放给浏 览器,在JavaScript中可以全局访问。crypto对象包含生成随机数的方法和一个subtle对象。subtle 对象实现了SubtleCrypto接口。SubtleCrypto接口提供了对若干具体的密码计算的访问接口。 用户JavaScript程序可以使用的密码资源的层次关系见图1。 取随机数 类型 访问权限 算法 加密、解密 用法 签名、验签 杂漆 密钥导入、密钥导出 密钥封装、密钥解封 密码接口 密钥属性 安全功能 窗口对象 图1 密码资源的层次关系 5数据结构 5.1 大整数 IDL: typedef Uint8Array Biglnteger; 大整数BigInteger定义为Uint8Array类型,保存任意长度的无符号整数,高字节在前。从API读 取的数值应有最小的类型化数组的长度(即除了0之外,至多7个前导0比特)。API应接受任意数目 的前导0比特。 5.2 密钥对字典 IDL: dictionaryCryptoKeyPair CryptoKey publicKey; CryptoKeyprivateKey; ; CryptoKeyPair密钥对字典表示一对非对称密钥对,该密钥对由私钥和公钥两部分组成 5.3JsonWebKey字典 IDL: 2 GM/T0087—2020 dictionaryRsaOtherPrimesInfo DOMString r; DOMString d; DOMString t; ; dictionary Json WebKey DOMString kty; DOMString use; sequence<DOMString> key_ops; DOMString alg; boolean ext; DOMString crv; DOMString x; DOMString y; DOMString d; DOMString n; DOMString e; DOMString p; DOMStrinβg q; DOMString dp; DOMString dq; DOMString qi; sequence<RsaOtherPrimesInfo>oth; DOMString k; 1; JsonWebKey字典提供了一种表示和交换表示为JSON网页密钥机构的密钥的方法,同时允许在 浏览器密码API应用中进行本地的高效调用。 5.4 算法字典Algorithm 算法对象是一个网页IDL字典对象,它用于为特定操作来指定算法和附加参数 IDL: typedef (object or DOMString) AlgorithmIdentifier; typedef AlgorithmIdentifier HashAlgorithmIdentifier; dictionary Algorithm (required DOMString name;/; 其中name为待用的已注册算法的名字。 5.5 密码接口Crypto IDL: [NolnterfaceObject] interface GlobalCrypto readonly attribute Crypto crypto; 3 GM/T 0087—2020 1; Window implements GlobalCrypto; WorkerGlobalScope implements GlobalCrypto; [Exposed=(Window,Worker)] interface Crypto readonly attribute SubtleCrypto subtle; ArrayBufferViewgetRandomValues(ArrayBufferViewarray); ; 密码接口提供了通用密码功能的接口,其中包含了 个使用真随机值作为种子的密码学强伪随机 数生成器, 其中,getRandomValues方法用于生成随机数。该方法应遵循: 若array不为整数类型(如Int8Array,Uint8Array,Int16Array,Uint16Array,Int32Array,或 Uint32Array),则抛出TypeMismatchError异常并结束计算。 若数组的byteLength大于65536,则抛出QuotaExceededError异常并结束算法。 d) 返回array subtle属性提供了SubtleCrypto接口的 例该接口提供了底层的密码功能和算法, 5.6 密钥算法KeyAlgorithm KeyAlgorithm字典表示与 个给定的Ory yptoKey对象的内容相美信息。 IDL KeyAlgorithm字典用 月手将Cryptokey的固定公开属性进行归档,实际字典的类型并不向应用进 行开放。 5.7 密钥接口CryptoKey IDL: enum KeyType"public","private","secret"}; enum KeyUsage "encrypt","decrypt","sign","verify","deriveKey", "deriveBits","wrapKey","unwrapKey" ; [Exposed=(Window,Worker) interface CryptoKey readonly attribute KeyTypetype; readonly attribute boolean extractable; readonly attribute object algorithm; readonly attribute object usages; 1; 其中,
GM-T 0087-2020 浏览器密码应用接口规范
文档预览
中文文档
28 页
50 下载
1000 浏览
0 评论
309 收藏
3.0分
温馨提示:本文档共28页,可预览 3 页,如浏览全部内容或当前文档出现乱码,可开通会员下载原始文档
本文档由 人生无常 于 2025-08-02 12:51:36上传分享