根据https://source.android.com/devices/tech/config/uicc.html,
AR-DO(E3)扩展为包括PERM-AR-DO(DB),它是一个8字节的位掩码,代表64个独立的权限。
有没有人知道PERM-AR-DO的规格?
GlobalPlatform安全元素访问控制规范版本1.0和1.1不包含它。对于访问规则数据对象AR-DO(0xE3),仅定义了标记0xD0和0xD1。
答案 0 :(得分:3)
数据对象PERM-AR-DO(标记0xDB),就像在UICC Carrier Privileges page(带有SHA-256和PKG-REF-DO的DeviceAppID-REF-DO)上定义的其他数据对象一样,是特定于Google的GP安全元素访问控制规范扩展。因此,您不会在GP规范中找到有关这些DO的任何信息。
您链接的页面实际上为常见问题解答部分提供了问题的答案:
我们假设我们可以授予对所有基于运营商的权限的访问权限,或者拥有更细粒度的控制权。什么将定义位掩码和实际权限之间的映射呢?每班一次许可?每种方法有一个特权吗?从长远来看,64个单独的权限是否足够?
答:这是为未来保留的,我们欢迎提出建议。
所以答案是PERM-AR-DO的解释尚未定义。这也反映在解析访问规则的Android源代码中(在UiccCarrierPrivilegeRules.java on lines 591-601中):
} else if (rule.startsWith(TAG_AR_DO)) {
TLV arDo = new TLV(TAG_AR_DO); //E3
rule = arDo.parse(rule, false);
// Skip unrelated rules.
if (!arDo.value.startsWith(TAG_PERM_AR_DO)) {
return null;
}
TLV permDo = new TLV(TAG_PERM_AR_DO); //DB
permDo.parse(arDo.value, true);
} else {
此代码解析AR-DO并提取PERM-AR-DO,但随后只删除提取的值(permDo
)。
同样,生成的AccessRule
对象包含值accessType
,该值始终设置为0:
long accessType = 0;
[...]
AccessRule accessRule = new AccessRule(IccUtils.hexStringToBytes(certificateHash),
packageName, accessType);
此外,在课程AccessRule
内,除了字段accessType
之外还有一条注释,表示该字段为“当前未使用”:
public long accessType; // This bit is not currently used, but reserved for future use.