android - 安卓操作系统支持 TEE/HSM
问题描述
Android 具有硬件支持的安全概念,如 TEE,并且在最新的 Android 中,Android Pie 设备可以具有 HSM(Strongbox)。
1.TEE和HSM的实际区别是什么?
2.Android HSM 是否可以用作白盒解决方案等密码学解决方案?
解决方案
可信执行环境 (TEE):这是一个基于软件的构造,在运行时上下文的正常范围内实现。它可以使用纯软件,也可以使用 CPU 和特定的操作码(即Intel SGX或ARM 的 TrustZone)以提供“硬件支持的安全概念”[1]。它是围绕数据的一堵逻辑墙,只有在您信任 [2] 实现的情况下,您才能信任它。最多可能是 NIST FIPS 140-2 第 1 级(已批准的算法),但永远不会超过此值,除非整个设备都围绕它进行了强化。
硬件安全模块 (HSM):这是一个完全独立的运行时上下文。在这种情况下,它必须是可信平台模块 (TPM),因为我们讨论的是 Android 设备,包括设备上的附加硬件。在企业级别,HSM 是一个单独的计算环境,通常在 PCIe 卡上实现。TPM 可能可以达到 FIPS 140-2 级别 2(防篡改),但同样,只有在设备本身围绕 TPM 进行强化时,才能达到更高级别(3 和 4)。因为它是一个单独的运行时上下文,操作系统将向它发送数据,并且它包含的密钥将用于加密或签名或 hmac 或任何它被要求做的事情。如果发生篡改,它应该(如果是 2 级)删除密钥。
至于您问题的第二部分,没有任何真正的安全性,也没有作为“合理的密码协处理器”的任何用处。
TPM 上的存储、算法选择和处理速度将远低于集成 TPM 的主平台。考虑“三个或四个键”而不是数十、数百或数千个(尽管键的数量将受到 TPM 上的 NV RAM 的限制,因此将其归类为“不确定”)。
这是 Keymaster Strongbox 硬件抽象层 (HAL) 支持的算法列表:
- RSA 2048
- AES 128 和 256
- ECDSA P-256
- HMAC-SHA256(支持 8 字节到 64 字节之间的密钥大小,含)
- 三重 DES 168
所以没有 EdDSA (ed25519)。没有 RSA 4k 密钥。没有 SHA3 系列。它支持 3DES,所以忘记 FIPS 认证,它的包含意味着 Android 开发团队期望商品(便宜)TPM,因为包含 3DES 意味着它们支持 TPM <1.2,因此甚至不支持现代商品 TPM。
由于问题的第二部分——“我们可以将其用作密码学解决方案”,我不断提出 FIPS。
并且 TPM 将比主 CPU [3] 慢。
TPM 旨在保护它所连接的平台,而不是为第三方应用程序提供批量加密,除非有特定要求(静态数据加密、DH 密钥交换)。
[1] 硬件支持安全的概念,因为它可能使用特定的操作码,使用 CPU 动态解密/加密数据。即,在这种情况下,“硬件”是 CPU。
[2] “信任”是内置在标签中的。
[3] 是的,有时 ASIC 更快。但我们谈论的是大众市场的商品硬件。如果您需要大量且安全的加密货币,请购买真正的 HSM。
推荐阅读
- c# - LINQ 不同并更改结果类型
- python - Pandas 在索引上合并,但列移动了 1
- xamarin.forms - 我可以在 GestureRecognize 上删除和添加命令吗?
- css - Bootstrap 4中连续8列
- url - 如何编辑 .mp4 文件的 URL 以使其在浏览器中流式传输?
- java - 从 Spring 3.1.9 迁移到 Spring 4.2.4 时,@Autowired 不起作用。但适用于 Spring 3 和 Java7
- matplotlib - 并排定义单个子图的大小
- mysql - 在 MySQL 表中强制使用 2 位小数位格式
- aframe - 如何禁用设备方向权限对话框和进入 VR 按钮
- github - 如何使用代码管道将 sql 文件从 Github 存储库复制到 s3 存储桶