【问题标题】:Check if Android filesystem is encrypted检查 Android 文件系统是否已加密
【发布时间】:2012-09-20 09:06:59
【问题描述】:

我们正在开发适用于 Android 的安全应用程序。用户需要对其设备的文件系统进行加密,但我们必须检查这一事实并禁止使用 app。是否可以检查文件系统是否已加密?还有一些 Android

【问题讨论】:

    标签: android security encryption filesystems


    【解决方案1】:

    为了澄清 CommonsWare 的回答,您可以读取设备加密状态,无需任何 Android 权限。

    /**
     * Returns the encryption status of the device. Prior to Honeycomb, whole device encryption was
     * not supported by Android, and this method returns ENCRYPTION_STATUS_UNSUPPORTED.
     *
     * @return One of the following constants from DevicePolicyManager:
     * ENCRYPTION_STATUS_UNSUPPORTED, ENCRYPTION_STATUS_INACTIVE,
     * ENCRYPTION_STATUS_ACTIVATING, ENCRYPTION_STATUS_ACTIVE,
     * ENCRYPTION_STATUS_ACTIVE_DEFAULT_KEY, ENCRYPTION_STATUS_ACTIVE_PER_USER.
     */
    @TargetApi(11)
    private static int getDeviceEncryptionStatus(Context context)
    {
        int status = DevicePolicyManager.ENCRYPTION_STATUS_UNSUPPORTED;
    
        if (Build.VERSION.SDK_INT >= 11) {
            final DevicePolicyManager dpm =
                    (DevicePolicyManager) context.getSystemService(Context.DEVICE_POLICY_SERVICE);
            if (dpm != null) {
                status = dpm.getStorageEncryptionStatus();
            }
        }
    
        return status;
    }
    

    请参阅 DevicePolicyManagerencryption status flags 的文档。

    还值得一提的是,Android 已经从全盘加密转向 到基于文件的加密以支持直接启动等。 见File Based Encryption

    【讨论】:

    • 此代码似乎不适用于我的 2013 型号 Nexus 7。在这种情况下,似乎即使我已采取措施加密设备,dpm.getStorageEncryptionStatus() 也会返回 ENCRYPTION_STATUS_INACTIVE。
    【解决方案2】:

    如果您的应用注册为a device admin,您可以在DevicePolicyManager 上调用getStorageEncryptionStatus() 以了解设备的加密状态,适用于API 级别11 及更高级别。

    对于较低 API 级别的任何全设备加密,请联系设备制造商。

    【讨论】:

    【解决方案3】:

    澄清以前的答案 当设备已加密但未启用密码时,API getStorageEncryptionStatus() 返回 ENCRYPTION_STATUS_INACTIVE

    在 API >= 23 上它在这种情况下返回 ENCRYPTION_STATUS_ACTIVE_DEFAULT_KEY

    【讨论】:

    • ENCRYPTION_STATUS_ACTIVE_DEFAULT_KEY 未在三星设备上返回,例如如果未定义用于启动设备的 PIN,则 S7 与 Android 6。
    猜你喜欢
    • 2012-08-16
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多