有谁知道有关PERM-AR-DO的详细信息?

时间:2016-10-11 19:43:52

标签: android specifications access-control sim-card globalplatform

根据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。

1 个答案:

答案 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.