FIDO UAF Extension

来源:互联网 发布:金十数据软件 编辑:程序博客网 时间:2024/06/05 00:36

 Extension结构

FIDO扩展在很多地方出现,包括UAF协议消息,认证器命令或由认证器签名的断言等。每个扩展都有一个标识符,扩展标识符的命名空间是FIDO UAF全局的(例如命名空间不依赖于)扩展消息在哪里出现)。

扩展的处理方式可被定义为:如果一个处理实体不理解特定扩展的意义,那么它必须终止处理,或指定一种可以(安全)忽略未知扩展的方式。

在每个允许扩展的部分都定义了扩展的处理规则。

通用扩展用于各种各样的操作中。

Extension结构成员

id类型为required DOMString

string[1..32]。标识扩展

data类型为required DOMString

包含客户端和服务器端语义一致的任意数据。该数据是以base64url编码的。该字段可能为空。

fail_if_unknown类型为required Boolean

表明未知扩展必须被忽略(false)或必须导致一个错误(true)。

false值 表示未知的扩展必须被忽略

true值 标识未知扩展必须导致一个错误

FIDO UAF客户端可能(a)处理扩展或(b)将扩展传递给ASM。未知扩展必须予以传递通过。

ASM可能(a)处理扩展或(b)传递扩展给FIDO认证器。未知扩展必须予以传递通过。

FIDO认证器必须处理扩展或忽略(只有不知道如何处理而且没有设置fail_if_unknow,才可以忽略)。如果FIDO认证器不能理解扩展的含义,并且设定了fail_if_unknow值,就必须产生一个错误。

当传递扩展给下一个实体时,必须保留fail_if_unkonw标记。

FIDO协议消息是不签名的。如果安全性依赖于一个已知的或者处理过的扩展,那么该扩展应该在认证器断言中附有一个相关(有签名的)扩展(例如TAG_UAFV1_REG_ASSERTION,TAG_UAFV1_AUTH_ASSERTION)。如果安全性提高了(例如,FIDO认证器根据元数据声明中的描述支持多个手指,但是在特定的情况下注册时使用的手指也用户鉴别),就没有必要标记扩展为fail_if_unkonw(例如应该使用0x3E1标签[UAFAuthnrCommands])。如果安全性降低(例如FIDO认证器根据元数据声明中的描述只支持使用注册时的手指用于鉴别,但在特定的情况下使用不同的手指进行了鉴别),扩展必须标记fail_if_unkonw(例如必须使用tag0x3E11标签[UAFAuthnrCommands])。

MatchCriteria结构

代表用于服务器策略的匹配条件。

如果对象中的所有字段都被认为是匹配的(正如在特定字段中的表明的一样),那么MatchCriteria对象则被认为是与一个认证器匹配的、

dictionary MatchCriteria{AAID[] aaid;DOMString[] vendorID;KeyID[] keyIDs;unsigned long userVerification;unsigned short keyProtection;unsigned short matcherProtection;unsigned long attachmentHint;unsigned short tcDisplay;unsigned short[] authenticationAlgorithms;DOMString[] attestationTypes;unsigned short authenticatorVersion;Extension[] exts;}
MatchCriteria结构成员

aaid类型为AAID数组

AAID列表将匹配限制在某些特定AAIDs中。如果至少一个数组中的AAID记录与AuthenticatorInfo.aaid相匹配,则匹配成功[UAFASM].

vendorID类型为DOMString数组

vendorID将匹配限制在给定供应商的认证器型号中。AAID的前4个字符是vendorID(参考AAID)

如果至少一个AAID记录与数组中的AuthenticatorInfo.aaid的前4个字符相匹配,则匹配成功。

keyIDs类型为KeyID数组

认证器KeyIDs列表将被限制在一组给定的KeyID实例集中。如果数组中至少有一条记录匹配,则匹配成功。

userVerification类型为unsigned long数组

32位标志的集合,当匹配应该被用户验证方法限制时需要设置

该字段值按如下方式从Metadata.userVerificationDetails中获得:

1.如果MetadataStatement.userVerificationDetails含有多条记录,那么:

(1)如果一条或多条记录MetadataStatement.userVerificationDetails[i]含有多条记录,那么立刻停止因为无法直接提取。必须通过提供匹配的AAIDs列表来产生MatchCriteria对象。

(2)如果所有MetadataStatement.userVerificationDetails[i]只含有单条记录,那么用按位或操作记录

MetadataStatement.userVerficationDetails[0][0].userVerfification到MetadataStatement.userVerficationDetails[N-1][0].userVerfification的所有条目混合成为单独的值。

2.如果MetadataStatement.userVerificationDetails包含一条单独的记录,那么用按位或操作将MetadataStatement.userVerficationDetails[0][0].userVerfification到MetadataStatement.userVerficationDetails[N-1][0].userVerfification的所有条目混合成为单独的值,然后标记为USER_VERIFY_ALL。

这个方法不允许匹配实现了用户验证方法的复杂组合的认证器,例如PIN AND(Fingerprint OR Speaker Recognition)。如果这种特定的匹配规则是必须的,则需要通过提供匹配认证器的AAID来指定。

keyProtection类型为unsigned short

16位的标记集,当匹配应该被使用密钥保护限制时需要设置。如果至少一位标记与AuthenticatorInfo.keyProtection的值匹配,则匹配成功。

matcherProtection类型为unsigned short

16位的标记集,当匹配应该被匹配程序保护限制时需要设置。如果至少一位标记与Authenticator.matcherProrection的值匹配,则匹配成功。

attachmentHint类型为unsigned long

32位标记的集合,当匹配应该被认证器连接机制所限制时需要设置。如果至少一位标记与AuthenticatorInfo.attachmentHint值相匹配,则匹配成功。

tcDisplay类型为unsigned short

16位的标记集,当匹配应该被交易确认显示可用性和类型限制时需要设置。如果至少一位标记与AuthenticatorInfo。tcDisplay值相匹配,则匹配成功。

authenticationAlgorithms类型为unsigned short

包含支持鉴证算法TAG值的数组,当匹配应该被支持的鉴证算法限制时需要设置(参考[UAFRegistry],前缀为UAF_ALG_SIGN)。

如果数组至少一条记录与AuthenticatorInfo.authenticationAlgorthm相匹配,则匹配成功。

assertionSchemes类型为DOMString

支持断言机制的列表,当匹配应该被支持机制限制时需要设置。如果数组中至少一条记录与AuthenticatorInfo.assertionScheme相匹配,则匹配成功。

attestationTypes类型为DOMString

支持断言机制的列表,当匹配应该被支持限制时需要设置。如果数组中至少一条记录与AuthencatorInfo.assertionScheme相匹配,则匹配成功。

authentcatorVersion类型为unsigned short

包含认证器版本号,当匹配应该被正在使用的认证器版本限制时需要设置。如果该值小于等于TAG_UAFV1_REG_ASSERTION或TAG_UAFV1_AUTH_ASSERTION中AuthenticatorVersion字段的值或其他不同断言方案中的对应值,则匹配成功。

exts类型为Extension数组

匹配策略的扩展

0 0
原创粉丝点击