各平台密钥管理与安全硬件支持详解

各平台密钥管理与安全硬件支持详解

摘要:本文分析了主流操作系统平台(Windows、Linux、macOS、Android、iOS和鸿蒙OS)的密钥管理组件、安全硬件支持以及对国密算法(特别是SM2)的兼容情况,吐槽一下这些鸡肋。

引言

最近一直在研究基于密钥签名的去中心化权限认证方案。查了各大操作系统提供了专用密钥存储组件和安全硬件支持。不得不写篇文章来吐槽一下。

各平台密钥管理与安全特性对比

下表对主流平台的密钥管理组件、安全硬件和算法支持进行了对比:

平台密钥存储组件安全硬件安全硬件私钥导出ECDSA支持SM2支持密钥导入限制权限控制
WindowsCNG/KSPTPM不允许需扩展TPM生成的密钥不可导入基于用户,不区分应用
LinuxPKCS#11/密钥环TPM不允许需特定库依赖TPM实现用户级隔离,部分实现支持应用隔离
macOS/iOSKeychainSecure Enclave不允许SE密钥仅内部生成,不可导入应用沙箱隔离,可设置共享组
AndroidKeystoreTEE/StrongBox不允许部分厂商硬件保护密钥不可导入应用级隔离,系统权限严格控制
鸿蒙OS统一密钥管理服务TEE (TrustZone)不允许TEE生成的密钥不可导入分布式设备身份与应用隔离结合

从表中可以看出,各个平台基本有这样几个特点:

  • 1、基本都不支持SM2,所以国内国密场景压根就没法用设备自带的安全硬件,只能用外接的硬件。对于消费者来说浪费设备资料、对于开发者来说开发适配成本就更高了。
  • 2、都不支持密钥导入、导出,也就是说一个人有3台设备,就会至少3组密钥,别说开发者看到这么多密钥头疼,用户自己都会搞晕。虽说不能明文导出是为了保障安全,但好歹给一个设备与设备间加密传输密钥的接口呀,让密钥从一个安全环境直接进入另一个安全环境。
  • 3、PC系统基本都是基于用户进行权限管理,用户登录后如果运行木马程序,很容易造成安全风险。

Windows 平台

密钥存储组件: CNG与CAPI

Windows平台的密钥管理主要依赖于两个关键组件:较新的Cryptography API: Next Generation (CNG) 和传统的CryptoAPI (CAPI)。

CNG (Cryptography API: Next Generation)

CNG是Windows Vista及更新版本中引入的现代密码学API,提供了更灵活、可扩展的密码学服务:(注意:CNG的软件模式下的持久化密钥是存在硬盘上的,只有与TPM、HSM配合才是用硬件存储)

  • 密钥存储提供程序(KSP): 负责密钥的存储和管理
  • 算法提供程序: 实现各类密码算法
  • 存储提供程序: 如用于保存凭证的Windows凭证管理器

主要特性:

  • 支持 FIPS 140-2 认证的加密算法
  • 支持ECC(椭圆曲线密码学)
  • 支持硬件安全模块(HSM)集成
  • 可扩展架构允许添加第三方密码提供程序
TPM集成

Windows对可信平台模块(TPM)提供了深度集成:

  • BitLocker驱动器加密: 利用TPM保护全盘加密密钥
  • Virtual Smart Card: 将TPM用作虚拟智能卡
  • Platform Crypto Provider: 通过CNG接口访问TPM密码功能

算法支持:

  • 标准算法: RSA、ECDSA、AES、SHA系列算法全面支持
  • 国密算法: Windows原生CNG不支持SM2/SM3/SM4,需通过第三方密码提供程序扩展实现

Linux 平台

Linux平台的密钥管理呈现分散化特点,不同发行版可能采用不同的解决方案。

PKCS#11与密钥环系统

  • PKCS#11: 提供标准化接口访问密码令牌
  • GNOME Keyring: GNOME桌面环境的密码管理服务
  • KDE Wallet: KDE桌面环境的密码管理服务
  • 系统密钥环(System Keyring): 用于存储系统级密钥

TPM支持

Linux通过TPM2.0 Software Stack (TSS)提供TPM支持:

  • tpm2-tools: 命令行工具集
  • tpm2-tss: TPM2.0软件栈核心库
  • tpm2-abrmd: 资源管理器守护进程

算法支持:

  • 标准算法: 通过OpenSSL支持主流密码算法
  • 国密算法: 需通过特定的OpenSSL分支(如"GmSSL")或第三方库实现SM2/SM3/SM4支持
  • 挑战: Linux内核中的硬件密钥管理功能对国密支持有限

macOS/iOS 平台

Apple生态系统提供了统一的安全架构,核心是Keychain服务和Secure Enclave。

Keychain 服务

  • 系统级密钥管理: 集中存储密码、证书、密钥等
  • 应用沙盒集成: 应用可访问自己的Keychain项
  • iCloud Keychain同步: 跨设备安全同步
  • 访问控制列表(ACL): 精细的访问权限控制

Secure Enclave

A7及更新芯片中的安全协处理器:

  • 物理隔离: 与主处理器分离的安全区
  • 密钥生成与存储: 密钥在Secure Enclave内生成,私钥永不离开
  • 生物识别集成: Touch ID/Face ID验证直接在Secure Enclave处理

算法支持:

  • 标准算法: 全面支持RSA、ECDSA、AES等
  • 国密算法: 官方Security框架不支持SM2/SM3/SM4,需通过应用层实现
  • 关键限制: Secure Enclave不允许导入外部生成的密钥,仅支持内部生成

Android 平台

Android通过Keystore系统提供密钥管理功能。

Android Keystore系统

  • 应用隔离: 每个应用的密钥相互隔离
  • 硬件支持: 可利用设备TEE或安全元件
  • 密钥用途限制: 可限制密钥的使用场景和条件
  • 身份认证绑定: 密钥可与设备解锁状态或生物识别绑定

硬件支持

  • TEE (可信执行环境): 如高通的QSEE、华为的iTrustee
  • StrongBox Keymaster: 专用安全硬件实现(如Titan M)

算法支持:

  • 标准算法: 支持RSA、EC、AES等主流算法
  • 国密算法: AOSP版本不支持SM2/SM3/SM4
  • 厂商定制: 部分国内厂商在定制Android系统中添加了国密支持

鸿蒙OS (HarmonyOS)

作为新兴操作系统,鸿蒙OS在设计之初就考虑了安全特性。

统一密钥管理服务

  • 分布式密钥管理: 支持跨设备安全协同
  • 多级安全架构: 从芯片到应用的纵深防御
  • 设备认证体系: 基于密钥的可信设备认证

硬件安全能力

  • TEE环境: 基于ARM TrustZone技术
  • 安全存储区: 提供密钥隔离存储
  • CC EAL5+认证: 部分核心安全组件获得高级别安全认证

算法支持:

  • 标准算法: 支持国际主流密码算法
  • 国密算法: 原生支持SM2/SM3/SM4系列国密算法
  • 硬件加速: 部分设备提供国密算法硬件加速

跨平台开发挑战与解决方案

主要挑战

  1. 密钥不可导出、导入,导致共享密钥困难: 多数平台的硬件安全存储区不允许导出私钥,无法共享复制密钥,设备一旦丢失、损坏,密钥就无法恢复。
  2. 算法支持差异: 国密算法SM2基本没有得到支持
  3. API不一致: 各平台密钥管理API设计理念差异大
  4. 安全等级控制: 有些系统对密钥的使用控制过于宽泛,容易被恶意程序攻击。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值