Open bubichain opened 1 year ago
编号:
类型:标准
标题:星火数字身份插件钱包登录规范
作者:蒋海,jianghai@bubi.cn;王璟,wangjing@bubi.cn;赵正涌,zhaozhengyong@bubi.cn;胡楠,hunan@bubi.cn;
发布时间:
状态:
更新时间:2023-01-05
讨论地址:
依赖RFC:
本文规范了星火链网账户如何签署由范围、会话信息和安全机制等参数化的标准消息格式与链外服务进行身份验证。其目的是为集中式身份提供商提供一种自主定制的替代方案,提高基于星火链网账户认证的链外服务的互操作性,并为钱包供应商提供一致的机器可读消息格式,以实现改进的用户体验和授权管理。
在登录当前流行的非区块链服务时,用户通常会使用身份提供商(Idps),而这些身份提供商是对用户标识符具有最终控制权的中心化实体,比如大型互联网公司和电子邮件提供商等,其动机大多不一样,存在一定的信任安全风险。使用星火数字身份登录(Sign-in with Bid)是为希望对自己的数字身份承担更多控制权的用户提供一种新的自主管理规范。
使用星火数字身份登录工作方式如下:
钱包向用户提供结构化明文消息,用于使用ED25519签名算法进行签名,其中 message 必须包含Xinghuo bid、请求 domain、Version、URI、Nonce和Issued At
然后将签名提交给服务器,服务器检查签名的有效性和消息内容。
service.example.org 使用星火数字身份进行签名:
did:bid:zfQiEFySHXssUXbKEgM5uUgxez25KBru
我接受xxxxx团队的服务: https://service.example.org
URI=https://service.example.org/login
Version=1
Nonce=78372888
Issued At=2022-12-12 11:20:13
${domain} 使用星火数字身份进行签名:
${bid}
${statement}
URI=${domain}
Version=${version}
Nonce=${nonce}
Issued At=${issued-at}
Request ID=${request-id}
domain
是验证服务端域名
bid
是用于服务端进行验证的星火数字身份 BID
statement
[可选] 是展示给用户签名时的ASCII编码的文案,它不得包含'\n'(字节0x0a)
uri
登录目标的URI地址
Version
当前 message 的版本号,默认为1
Nonce
用于防止重放攻击的随机数,至少8个字母或数字字符。
Issued At
当前请求时间(ISO 8601格式)
Request ID
(可选)是登录时的唯一请求号。
必须检查消息是否符合签名体的规范,在解析后根据预期的术语值进行检查,并且必须验证其签名。
具体检查规则如下:
术语值检查:
bid
是否符合BID生成规范
statement
是可选参数,如果不为空时需要检测是否上下各空一行
Version
是否是1
Nonce
由服务端生成的字符串,其规范至少8个字母或数字字符,提交到服务端后需要校验其值的合法性及有效性
Issued At
当前请求时间,服务器根据自身业务安全规范,比较其请求有效性。即需要跟当前服务器时间进行对比,比如超过2分钟,就拒绝本次请求,节省服务器查询数据的消耗。
Request ID
由服务端生成的唯一性字符串,建议使用 UUID ,提交到服务端后需要校验其值的合法性及有效性
签名验证:
根据ED25519签名算法,对 message 转成的十六进制字符串后通过私钥对其签名,在服务端需要用签名账户公钥、签名原文(Message)以及签名串进行签名验证。
会话必须建立在 bid 基础之上,而不是绑定在一个可能会变动的资源标识上。
domain
钱包必须在处理签名请求时通过匹配术语来防止网络钓鱼攻击。例如,当处理以 开头的消息时"service.example.org 使用星火数字身份...",钱包会检查请求是否实际源自 service.example.org 。钱包必须在默认情况下并在签名之前向用户显示来自星火签名请求的以下条款(如果存在):domain、bid、statement
接受关于“星火数字身份插件钱包登录规范”的标准建议,现分配编号RFC-012。RFC-012进入接受阶段。
编号:RFC-012
类型:标准
标题:星火数字身份插件钱包登录规范
作者:蒋海,jianghai@bubi.cn;王璟,wangjing@bubi.cn;赵正涌,zhaozhengyong@bubi.cn;胡楠,hunan@bubi.cn;
发布时间:2023-01-05
状态:接受
更新时间:2023-01-05
讨论地址:https://github.com/caict-4iot-dev/bif-rfcs/issues/15
依赖RFC:无
作为“星火·链网”用户,在登录当前流行的非区块链服务场景时,会存在用户数字身份由于集中化管理可能带来集体泄露账户的风险以及访问过程可能存在被钓鱼的信任安全风险,为此需要一种星火数字身份插件钱包登录的标准规范,此规范为希望对自己的数字身份承担更多控制权的用户提供一种新的自主管理规范。
生命周期
提出日期:2023-1-5 演示日期:2023-1-5 接受日期:2023-1-5 采纳日期:2023-04-05