TEE-OS 入门前置篇密码学基础核心承接上一篇的安全基础概念本篇我们来讲解所有安全技术的核心工具——密码学。如果说隔离是安全的城墙那么密码学就是城墙上的锁和卫兵。TEE的所有安全能力从安全启动到安全存储从支付签名到生物识别本质上都是密码学技术的具体应用。作为一名工程师你不需要成为密码学家不需要精通每一个算法的数学原理但你必须准确理解每个算法的特性、适用场景和常见陷阱。90%的安全漏洞不是因为算法本身被破解而是因为开发者用错了算法。一、密码学的核心目标所有密码学算法最终都是为了实现上一篇讲到的安全三要素机密性加密算法保证信息不被未授权读取完整性哈希算法和数字签名保证信息不被未授权篡改不可否认性数字签名保证行为主体无法否认自己的操作二、对称加密大数据量加密的首选1. 核心原理对称加密使用同一把密钥进行加密和解密。明文 密钥 → 加密算法 → 密文密文 同一把密钥 → 解密算法 → 明文2. 核心特性速度极快比非对称加密快1000倍以上适合加密大数据量文件、视频、固件等密钥分发困难通信双方必须通过安全通道交换密钥无法提供身份认证和不可否认性3. 主流算法详解1AESAdvanced Encryption Standard地位全球通用的对称加密标准被所有国家和行业认可密钥长度128位AES-128、192位AES-192、256位AES-256安全强度AES-128足以抵御目前所有已知的攻击AES-256用于最高安全级别场景TEE应用安全存储、OTA升级包加密、DRM内容解密、硬盘加密2SM4地位中国国家密码管理局发布的国密对称加密标准密钥长度128位安全强度与AES-128相当应用场景国内金融、政务、军工等必须使用国密算法的领域MTK平台支持所有联发科芯片都内置了SM4硬件加速引擎4. 关键概念分组加密工作模式对称加密算法只能加密固定长度的数据块AES和SM4都是128位。要加密任意长度的数据需要使用工作模式。工作模式特点安全性推荐程度ECB最简单每个块独立加密极差相同明文块生成相同密文块绝对禁止使用CBC每个块与前一个密文块异或后再加密中等需要IV向量不推荐用于新系统GCM认证加密模式同时提供加密和完整性校验极高强烈推荐所有新系统的首选重要警告永远不要在生产环境中使用ECB模式。它会泄露明文的统计特征即使不知道密钥也能破解部分信息。5. TEE中的最佳实践所有大数据量加密统一使用AES-256-GCM或SM4-GCMIV向量必须是随机生成的且每个加密操作使用不同的IV永远不要自己实现加密算法使用TEE内核提供的硬件加速接口三、非对称加密解决密钥分发问题1. 核心原理非对称加密使用一对密钥公钥和私钥。公钥可以公开给任何人私钥必须严格保密永远不能泄露公钥加密的内容只能用对应的私钥解密私钥签名的内容只能用对应的公钥验签2. 核心特性解决密钥分发问题不需要安全通道交换密钥提供身份认证和不可否认性速度极慢比对称加密慢1000倍以上不适合加密大数据量3. 主流算法详解1RSA地位最经典、应用最广泛的非对称加密算法密钥长度2048位最低安全要求、3072位推荐、4096位最高安全缺点密钥太长计算量大速度慢现状正在被ECC逐步取代但在很多老系统中仍在使用2ECCElliptic Curve Cryptography椭圆曲线加密地位现代非对称加密的主流标准核心优势在相同安全强度下密钥长度比RSA短得多安全强度对比ECC密钥长度RSA等效密钥长度256位3072位384位7680位常用曲线secp256r1NIST P-256全球通用标准secp256k1比特币使用的曲线TEE应用密钥交换、数字签名、身份认证3SM2地位中国国密非对称加密标准基于椭圆曲线安全强度与ECC secp256r1相当应用场景国内金融、政务、军工领域MTK平台支持所有联发科芯片都内置了SM2硬件加速引擎4. 最常见的使用误区绝对不要用非对称加密直接加密大数据。非对称加密的正确用法是生成一个随机的对称密钥会话密钥用对称密钥加密大数据用对方的公钥加密会话密钥将加密后的会话密钥和密文一起发送给对方对方用自己的私钥解密会话密钥再用会话密钥解密大数据5. TEE中的最佳实践所有新系统优先使用ECC secp256r1或SM2RSA只用于兼容老系统且密钥长度至少2048位私钥永远不要离开TEE所有私钥操作都在TEE内部完成四、哈希算法完整性校验的基石1. 核心原理哈希算法将任意长度的输入数据转换为固定长度的输出哈希值。2. 三个核心特性单向性无法从哈希值反推出原始数据抗碰撞性无法找到两个不同的输入数据生成相同的哈希值确定性相同的输入永远生成相同的输出3. 主流算法详解1SHA-256地位全球通用的哈希算法标准输出长度256位32字节安全强度极高目前没有有效的破解方法TEE应用数据完整性校验、密码存储、数字签名、OTA升级包校验2SM3地位中国国密哈希算法标准输出长度256位安全强度与SHA-256相当应用场景国内金融、政务、军工领域4. 绝对禁止使用的算法MD5已被完全破解碰撞攻击非常容易SHA-1已被破解2017年谷歌发布了SHA-1碰撞攻击这两个算法只能用于校验非安全相关的数据绝对不能用于任何安全场景5. 典型应用场景1数据完整性校验发送方计算文件的SHA-256哈希值 → 发送文件和哈希值 接收方计算收到文件的SHA-256哈希值 → 与发送的哈希值对比 如果相同说明文件没有被篡改如果不同说明文件被篡改2密码存储永远不要明文存储密码也不要用加密的方式存储密码。正确的做法是 存储密码 随机盐 → SHA-256哈希 → 存储哈希值和盐 验证用户输入密码 存储的盐 → SHA-256哈希 → 与存储的哈希值对比五、数字签名身份认证与不可否认性1. 核心原理数字签名是非对称加密和哈希算法的结合。2. 完整签名与验签流程签名流程发送方计算原始数据的SHA-256哈希值用自己的私钥对哈希值进行加密生成签名将原始数据和签名一起发送给接收方验签流程接收方计算收到的原始数据的SHA-256哈希值用发送方的公钥对签名进行解密得到发送方计算的哈希值对比两个哈希值如果相同说明数据确实是由持有对应私钥的发送方发送的身份认证数据在传输过程中没有被篡改完整性发送方无法否认自己发送了这个数据不可否认性3. 为什么要先哈希再签名非对称加密速度慢只加密哈希值32字节比加密整个原始数据快得多大多数非对称加密算法只能加密固定长度的数据无法加密任意长度的原始数据4. TEE中的核心应用数字签名是TEE中最重要的安全机制之一安全启动每一级固件在加载前都会验证签名OTA升级升级包在安装前会验证签名TA验证每个TA在加载前都会验证厂商签名支付签名交易信息在TEE中用支付私钥签名六、密钥管理与安全存储TEE的核心价值密码学算法本身是公开的系统的安全最终取决于密钥的安全。如果密钥被泄露再强的算法也毫无意义。这正是TEE存在的核心价值——保护密钥的安全。1. 密钥分级体系现代安全系统采用分层密钥管理体系不同级别的密钥有不同的安全要求最高安全级别 ↑ 根密钥HUK ↑ 设备加密密钥DEK ↑ 用户密钥UK ↑ 会话密钥SK ↑ 最低安全级别1根密钥Hardware Unique Key, HUK存储位置烧录在芯片的efuse中一次性可编程特性每个设备唯一永远无法读取永远无法修改作用整个系统的信任根用于派生所有其他密钥安全级别最高只有TEE内核可以访问2设备加密密钥Device Encryption Key, DEK生成方式由HUK派生而来存储位置加密存储在RPMB分区中作用用于加密所有用户密钥和安全存储数据安全级别高只有TEE内核可以访问3用户密钥User Key, UK生成方式用户创建或导入的密钥如支付密钥、加密密钥存储位置用DEK加密后存储在普通文件系统中作用用于加密用户数据和执行安全操作安全级别中只有对应的TA可以访问4会话密钥Session Key, SK生成方式每次会话随机生成存储位置TEE内部内存中作用用于单次会话的加密安全级别低会话结束后立即销毁2. TEE安全存储的实现原理这是TEE最核心的功能也是很多人最困惑的地方为什么即使root了Android系统也无法读取TEE中的安全存储数据答案很简单加密密钥永远不会出现在非安全世界。完整的安全存储流程用户需要存储一个敏感数据TA将数据发送给TEE内核TEE内核用HUK派生的DEK加密数据TEE内核将加密后的数据返回给TATA将加密后的数据存储在普通的文件系统中如/data/tee/读取流程TA从文件系统读取加密后的数据TA将加密数据发送给TEE内核TEE内核用DEK解密数据TEE内核将解密后的明文数据返回给TATA使用明文数据使用完成后立即从内存中清除关键点DEK永远不会离开TEE内核非安全世界只能看到加密后的数据。即使攻击者获得了Android系统的root权限也无法获取DEK也就无法解密安全存储的数据。3. 密钥管理的铁律密钥永远不要出现在非安全世界所有密钥操作都必须在TEE内部完成永远不要硬编码密钥任何密钥都不能写在代码或配置文件中最小权限原则每个TA只能访问自己的密钥不能访问其他TA的密钥密钥生命周期管理密钥必须有明确的生成、使用、更新、销毁流程永远不要备份私钥私钥一旦泄露整个系统的安全就不复存在七、本篇总结与下一篇预告本篇核心要点对称加密速度快适合加密大数据非对称加密解决密钥分发问题提供身份认证哈希算法提供数据完整性校验是数字签名的基础数字签名同时提供身份认证、完整性和不可否认性系统的安全最终取决于密钥的安全TEE的核心价值就是保护密钥永远不要自己实现密码学算法使用经过验证的标准实现三个密码学素养不要发明密码学算法即使是最优秀的密码学家也很难设计出安全的算法不要修改密码学算法的参数任何对标准算法的修改都可能引入安全漏洞永远怀疑密钥的安全性假设密钥总有一天会泄露设计相应的应急方案
TEE-OS 入门前置篇:密码学基础核心
发布时间:2026/6/14 16:03:02
TEE-OS 入门前置篇密码学基础核心承接上一篇的安全基础概念本篇我们来讲解所有安全技术的核心工具——密码学。如果说隔离是安全的城墙那么密码学就是城墙上的锁和卫兵。TEE的所有安全能力从安全启动到安全存储从支付签名到生物识别本质上都是密码学技术的具体应用。作为一名工程师你不需要成为密码学家不需要精通每一个算法的数学原理但你必须准确理解每个算法的特性、适用场景和常见陷阱。90%的安全漏洞不是因为算法本身被破解而是因为开发者用错了算法。一、密码学的核心目标所有密码学算法最终都是为了实现上一篇讲到的安全三要素机密性加密算法保证信息不被未授权读取完整性哈希算法和数字签名保证信息不被未授权篡改不可否认性数字签名保证行为主体无法否认自己的操作二、对称加密大数据量加密的首选1. 核心原理对称加密使用同一把密钥进行加密和解密。明文 密钥 → 加密算法 → 密文密文 同一把密钥 → 解密算法 → 明文2. 核心特性速度极快比非对称加密快1000倍以上适合加密大数据量文件、视频、固件等密钥分发困难通信双方必须通过安全通道交换密钥无法提供身份认证和不可否认性3. 主流算法详解1AESAdvanced Encryption Standard地位全球通用的对称加密标准被所有国家和行业认可密钥长度128位AES-128、192位AES-192、256位AES-256安全强度AES-128足以抵御目前所有已知的攻击AES-256用于最高安全级别场景TEE应用安全存储、OTA升级包加密、DRM内容解密、硬盘加密2SM4地位中国国家密码管理局发布的国密对称加密标准密钥长度128位安全强度与AES-128相当应用场景国内金融、政务、军工等必须使用国密算法的领域MTK平台支持所有联发科芯片都内置了SM4硬件加速引擎4. 关键概念分组加密工作模式对称加密算法只能加密固定长度的数据块AES和SM4都是128位。要加密任意长度的数据需要使用工作模式。工作模式特点安全性推荐程度ECB最简单每个块独立加密极差相同明文块生成相同密文块绝对禁止使用CBC每个块与前一个密文块异或后再加密中等需要IV向量不推荐用于新系统GCM认证加密模式同时提供加密和完整性校验极高强烈推荐所有新系统的首选重要警告永远不要在生产环境中使用ECB模式。它会泄露明文的统计特征即使不知道密钥也能破解部分信息。5. TEE中的最佳实践所有大数据量加密统一使用AES-256-GCM或SM4-GCMIV向量必须是随机生成的且每个加密操作使用不同的IV永远不要自己实现加密算法使用TEE内核提供的硬件加速接口三、非对称加密解决密钥分发问题1. 核心原理非对称加密使用一对密钥公钥和私钥。公钥可以公开给任何人私钥必须严格保密永远不能泄露公钥加密的内容只能用对应的私钥解密私钥签名的内容只能用对应的公钥验签2. 核心特性解决密钥分发问题不需要安全通道交换密钥提供身份认证和不可否认性速度极慢比对称加密慢1000倍以上不适合加密大数据量3. 主流算法详解1RSA地位最经典、应用最广泛的非对称加密算法密钥长度2048位最低安全要求、3072位推荐、4096位最高安全缺点密钥太长计算量大速度慢现状正在被ECC逐步取代但在很多老系统中仍在使用2ECCElliptic Curve Cryptography椭圆曲线加密地位现代非对称加密的主流标准核心优势在相同安全强度下密钥长度比RSA短得多安全强度对比ECC密钥长度RSA等效密钥长度256位3072位384位7680位常用曲线secp256r1NIST P-256全球通用标准secp256k1比特币使用的曲线TEE应用密钥交换、数字签名、身份认证3SM2地位中国国密非对称加密标准基于椭圆曲线安全强度与ECC secp256r1相当应用场景国内金融、政务、军工领域MTK平台支持所有联发科芯片都内置了SM2硬件加速引擎4. 最常见的使用误区绝对不要用非对称加密直接加密大数据。非对称加密的正确用法是生成一个随机的对称密钥会话密钥用对称密钥加密大数据用对方的公钥加密会话密钥将加密后的会话密钥和密文一起发送给对方对方用自己的私钥解密会话密钥再用会话密钥解密大数据5. TEE中的最佳实践所有新系统优先使用ECC secp256r1或SM2RSA只用于兼容老系统且密钥长度至少2048位私钥永远不要离开TEE所有私钥操作都在TEE内部完成四、哈希算法完整性校验的基石1. 核心原理哈希算法将任意长度的输入数据转换为固定长度的输出哈希值。2. 三个核心特性单向性无法从哈希值反推出原始数据抗碰撞性无法找到两个不同的输入数据生成相同的哈希值确定性相同的输入永远生成相同的输出3. 主流算法详解1SHA-256地位全球通用的哈希算法标准输出长度256位32字节安全强度极高目前没有有效的破解方法TEE应用数据完整性校验、密码存储、数字签名、OTA升级包校验2SM3地位中国国密哈希算法标准输出长度256位安全强度与SHA-256相当应用场景国内金融、政务、军工领域4. 绝对禁止使用的算法MD5已被完全破解碰撞攻击非常容易SHA-1已被破解2017年谷歌发布了SHA-1碰撞攻击这两个算法只能用于校验非安全相关的数据绝对不能用于任何安全场景5. 典型应用场景1数据完整性校验发送方计算文件的SHA-256哈希值 → 发送文件和哈希值 接收方计算收到文件的SHA-256哈希值 → 与发送的哈希值对比 如果相同说明文件没有被篡改如果不同说明文件被篡改2密码存储永远不要明文存储密码也不要用加密的方式存储密码。正确的做法是 存储密码 随机盐 → SHA-256哈希 → 存储哈希值和盐 验证用户输入密码 存储的盐 → SHA-256哈希 → 与存储的哈希值对比五、数字签名身份认证与不可否认性1. 核心原理数字签名是非对称加密和哈希算法的结合。2. 完整签名与验签流程签名流程发送方计算原始数据的SHA-256哈希值用自己的私钥对哈希值进行加密生成签名将原始数据和签名一起发送给接收方验签流程接收方计算收到的原始数据的SHA-256哈希值用发送方的公钥对签名进行解密得到发送方计算的哈希值对比两个哈希值如果相同说明数据确实是由持有对应私钥的发送方发送的身份认证数据在传输过程中没有被篡改完整性发送方无法否认自己发送了这个数据不可否认性3. 为什么要先哈希再签名非对称加密速度慢只加密哈希值32字节比加密整个原始数据快得多大多数非对称加密算法只能加密固定长度的数据无法加密任意长度的原始数据4. TEE中的核心应用数字签名是TEE中最重要的安全机制之一安全启动每一级固件在加载前都会验证签名OTA升级升级包在安装前会验证签名TA验证每个TA在加载前都会验证厂商签名支付签名交易信息在TEE中用支付私钥签名六、密钥管理与安全存储TEE的核心价值密码学算法本身是公开的系统的安全最终取决于密钥的安全。如果密钥被泄露再强的算法也毫无意义。这正是TEE存在的核心价值——保护密钥的安全。1. 密钥分级体系现代安全系统采用分层密钥管理体系不同级别的密钥有不同的安全要求最高安全级别 ↑ 根密钥HUK ↑ 设备加密密钥DEK ↑ 用户密钥UK ↑ 会话密钥SK ↑ 最低安全级别1根密钥Hardware Unique Key, HUK存储位置烧录在芯片的efuse中一次性可编程特性每个设备唯一永远无法读取永远无法修改作用整个系统的信任根用于派生所有其他密钥安全级别最高只有TEE内核可以访问2设备加密密钥Device Encryption Key, DEK生成方式由HUK派生而来存储位置加密存储在RPMB分区中作用用于加密所有用户密钥和安全存储数据安全级别高只有TEE内核可以访问3用户密钥User Key, UK生成方式用户创建或导入的密钥如支付密钥、加密密钥存储位置用DEK加密后存储在普通文件系统中作用用于加密用户数据和执行安全操作安全级别中只有对应的TA可以访问4会话密钥Session Key, SK生成方式每次会话随机生成存储位置TEE内部内存中作用用于单次会话的加密安全级别低会话结束后立即销毁2. TEE安全存储的实现原理这是TEE最核心的功能也是很多人最困惑的地方为什么即使root了Android系统也无法读取TEE中的安全存储数据答案很简单加密密钥永远不会出现在非安全世界。完整的安全存储流程用户需要存储一个敏感数据TA将数据发送给TEE内核TEE内核用HUK派生的DEK加密数据TEE内核将加密后的数据返回给TATA将加密后的数据存储在普通的文件系统中如/data/tee/读取流程TA从文件系统读取加密后的数据TA将加密数据发送给TEE内核TEE内核用DEK解密数据TEE内核将解密后的明文数据返回给TATA使用明文数据使用完成后立即从内存中清除关键点DEK永远不会离开TEE内核非安全世界只能看到加密后的数据。即使攻击者获得了Android系统的root权限也无法获取DEK也就无法解密安全存储的数据。3. 密钥管理的铁律密钥永远不要出现在非安全世界所有密钥操作都必须在TEE内部完成永远不要硬编码密钥任何密钥都不能写在代码或配置文件中最小权限原则每个TA只能访问自己的密钥不能访问其他TA的密钥密钥生命周期管理密钥必须有明确的生成、使用、更新、销毁流程永远不要备份私钥私钥一旦泄露整个系统的安全就不复存在七、本篇总结与下一篇预告本篇核心要点对称加密速度快适合加密大数据非对称加密解决密钥分发问题提供身份认证哈希算法提供数据完整性校验是数字签名的基础数字签名同时提供身份认证、完整性和不可否认性系统的安全最终取决于密钥的安全TEE的核心价值就是保护密钥永远不要自己实现密码学算法使用经过验证的标准实现三个密码学素养不要发明密码学算法即使是最优秀的密码学家也很难设计出安全的算法不要修改密码学算法的参数任何对标准算法的修改都可能引入安全漏洞永远怀疑密钥的安全性假设密钥总有一天会泄露设计相应的应急方案