0
  • 聊天消息
  • 系统消息
  • 评论与回复
登录后你可以
  • 下载海量资料
  • 学习在线课程
  • 观看技术视频
  • 写文章/发帖/加入社区
会员中心
创作中心

完善资料让更多小伙伴认识你,还能领取20积分哦,立即完善>

3天内不再提示

Secure Key Store安全密钥储存

jf_pJlTbmA9 来源:jf_pJlTbmA9 作者:jf_pJlTbmA9 2023-08-10 11:11 次阅读

密钥是系统安全的基础

一个安全系统的基础,在与其所拥有的密钥,用以提供系统身分的真实性与确保系统数据的机密性,其最基本需要具备的密钥,包括了:

Hardware Unique Key (HUK) 每个设备实体所拥有的专属密钥,具有唯一性与秘密性,用来生成不同应用所需的密钥与链接装置专属的加密数据

Root of Trust Public Key (ROTPK) 用以验证签章的公钥,在装置安全开机流程中,确保只有通过认证的软件能够在装置上执行

为了确保系统的安全,无论HUK或ROTPK,都必须不能被修改。

除此之外,因应各种应用,在系统中还可能存在各种不同功能的密钥,包括加、解密用的AES Key,验证签章用的RSA Key或ECC Key等等。

这些密钥架构在密码学的基础上,提供系统身分认证,数据保护,传输加密等等功能,是系统中,所有安全的基础,因此对密钥本身的储存与保护,更是整个系统中,最重要的一环,这里我们将储存密钥的地方,称之为Key Store。

Key Store的特点

为了确保密钥的安全,Key Store密需要具备几个特点

所储存的秘钥,必须是一个不可分割整体

在Key Store中的每一把密钥,都必须被视为一个整体来建立、更改与删除,因为,若一把密钥有机会被以已知的值取代其部分内容,便很容易被使用分割与暴力破解的方法攻击 (divide and conquer brute-force attack)。

根据密钥的种类,提供不同的储存类型,包括

静态储存

静态储存的密钥,必须具有不可更改的特性,这通常会使用ROM或Fuse的特性来达成。然而,虽然静态储存的密钥无法被更改,却仍必须可以被撤销,撤销后的密钥,将不再能够存取或利用,以确保密钥使用上的安全。

短期储存

短期储存的密钥,有较短的寿命,这可以是只存在当次联机期间,也可以只存在当次的上电周期,或是只存续在装置当次的注册期间内,这些特性,通常可透过使用Flash或SRAM为储存媒体来达成。

设定密钥属性,以限制密钥的使用范围

根据密钥的用途与对应的密码学算法,可限缩密钥的使用范围,包括限制只能用于AES加解密、只能用于ECC签章、只能用于验证等。这样的限制理由,主要基于下面几点

限制CPU对密钥的读取,可避免因软件漏洞造成密钥的暴露。

限制密钥的使用范围,可以降低当密钥被破解时,损失波及的范围。

一把密钥使用于不同的算法,将增加被攻击的危险。

一把密钥使用于不同的用途,可能造成密钥存续期间长短的冲突,因而需要延长其存续时间,造成密钥存续时间超过实务上最佳的存续期限。

防止物理攻击

Key Store内所储存的密钥,是整个系统安全的基础,不只要防范来自软件漏洞的暴露风险,也要防止来自物理性的攻击,包括利用物理特性的旁道攻击 (Side-Channel Attack)与打开封装,直接量测芯片储存内容的攻击。

Key Store实例

以Nuvoton M2354 为例,其中包含 Key Store 硬件单元,提供密钥储存的功能,能够储存由128 bits 到 4096 bits长度的密钥,以完整的key为单位,进行写key、删除与注销(Revoke),并具备完整性检测,只要密钥有任意的位出错,那么这把密钥,就会失效,无法使用。

Key Store 提供OTP、Flash与SRAM三种储存媒体,可因应不同密钥存续时间的需求,其中OTP可用来储存不可更改的密钥,例如HUK、ROTPK,而Flash可用来储存云端联机认证用的密钥等,而SRAM则可用来储存云端联机时,所使用的随机加密密钥。

此外,Key Store在建立密钥时,可以指定相关属性,限制秘钥只能由CPU或特定的加密引擎使用,进一步限制密钥的使用,以加强密钥的安全性。

针对旁道攻击, Key Store支持Silent Access功能,可以降低储存操作时,因为物理特性造成的信息泄露。而针对打开芯片封装,利用物理量测储存内容的攻击,则提供Data Scrambling来防护。更近一步,也可以设定Key Store在系统攻击侦测(Tamper Detection)触发时,直接硬件连动,清除、注销所有Key Store中的密钥,确保密钥不被泄露。

总结

现代的安全系统,仰赖密码学的保护,而再好密码学算法,还是要依靠密钥的安全储存,才能真正达到效果,一旦密钥暴露出来,所有架构于该密钥的秘密将不再安全,因此具备一个足够安全的Key Store来存放密钥,对整个系统而言,是一件相当重要事。

审核编辑:汤梓红
声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。 举报投诉
  • ROM
    ROM
    +关注

    关注

    4

    文章

    562

    浏览量

    85660
  • 安全系统
    +关注

    关注

    0

    文章

    410

    浏览量

    66902
  • 密钥
    +关注

    关注

    1

    文章

    137

    浏览量

    19737
收藏 人收藏

    评论

    相关推荐

    为什么在espconn_secure_accept创建的服务器上无法有多个安全连接?

    为什么在espconn_secure_accept创建的服务器上无法有多个安全连接?
    发表于 07-22 08:10

    鸿蒙开发:Universal Keystore Kit密钥管理服务 密钥删除C C++

    为保证数据安全性,当不需要使用该密钥时,应该删除密钥
    的头像 发表于 07-18 15:47 265次阅读

    鸿蒙开发:Universal Keystore Kit密钥管理服务 密钥删除ArkTS

    为保证数据安全性,当不需要使用该密钥时,应该删除密钥
    的头像 发表于 07-12 14:56 267次阅读

    鸿蒙开发:Universal Keystore Kit密钥管理服务 密钥派生介绍及算法规格

    在密码学中,密钥派生函数(Key derivation function,KDF)使用伪随机函数从诸如主密码或密码的秘密值中派生出一个或多个密钥
    的头像 发表于 07-11 16:30 298次阅读

    在ESP32-C3中安全启动v2支持三个密钥签名的提交,请问具体怎么操作?

    IDFv4.3.2版本中,在安全启动V2的文档中提到\"How To Enable Secure Boot V2\",但是在其中只有指定密钥,没有提到密钥烧录的位置。 那么我想烧录三
    发表于 06-17 06:19

    stm32l562运行NUTTX出现secure fault的原因?

    nuttx操作系统里面带有stm32l562 board,编译出该board的bin文件,然后按照board目录下,readme.txt中的操作通过TFM加载该bin运行,会出下面的的secure
    发表于 03-18 06:13

    LKT安全芯片密钥管理与分散过程简单描述

    密钥管理是数据加密技术中的重要一环,密钥管理的目的是确保密钥安全性(真实性和有效性)。
    的头像 发表于 02-23 13:43 400次阅读

    CysecureTools如何直接访问外部存储设备内的密钥呢?

    在 PSoC 64 Secure MCU 的 Secure_Boot 文档示例中,CysecureTools 在配置过程中以预先准备好的文件形式使用密钥。 但是,在实际操作场景中,公开文件格式的
    发表于 01-31 08:08

    详解全志R128 RTOS安全方案功能

    签名算法 key_type 后,在创建密钥执行 createkeys 时会自动根据配置文件生成对应的密钥,并在执行打包命令的时候会采用对应的签名校验算法进行固件打包签名。 信任链R128 整个
    发表于 12-28 15:59

    你真的懂网络安全吗?密钥的分配解析

    A 和 B 都是 KDC 的登记用户,A 和 B 在 KDC 登记时就已经在 KDC 的服务器上安装了各自和 KDC 进行通信的主密钥(master key) 的 KA 和 KB,下面统称主密钥
    发表于 12-13 10:31 1003次阅读
    你真的懂网络<b class='flag-5'>安全</b>吗?<b class='flag-5'>密钥</b>的分配解析

    【先楫HPM5361EVK开发板试用体验】2手把手实战密钥管理器 KEYM

    可以选择原始数据或者加扰。不同安全状态下,密钥管理器还支持单独配置密钥是否加扰,使用不同的加扰算法。就像给饮料加冰和不加冰的区别一样。 SEC_KEY_SEL[SMK_SEL] 位置
    发表于 12-11 09:18

    简单认识安全加密处理器

    安全加密处理器 (Secure Cryptoprocessor) 是一种本身不产生加密数据或程序指令,但产生密钥Key)的处理器,其应用产品有智能卡、ATM、电视机机顶盒、军事系统等
    的头像 发表于 12-06 09:19 1157次阅读

    Linux内核安全eCryptfs密钥管理

    密钥管理 从上节中我们了解到eCryptfs中核心机制中主要有两个KEY,即FEKEK和FEK,前者和用户输入passphrase_passwd有关,后者是每个文件唯一的随机数。下面结合
    的头像 发表于 11-29 11:46 671次阅读
    Linux内核<b class='flag-5'>安全</b>eCryptfs<b class='flag-5'>密钥</b>管理

    鸿蒙原生应用/元服务开发-AGC分发如何生成密钥和和证书请求文件

    Existing”选择已有的密钥库文件(存储有密钥的.p12文件),跳转至步骤4继续配置;如果没有密钥库文件,点击“New”,跳转至步骤3进行创建。 3.在“Create Key
    发表于 11-28 15:23

    鸿蒙原生应用/元服务开发-AGC分发如何配置签名信息

    时生成的.p12文件。 Store password:密钥库密码,需要与生成密钥和证书请求文件时设置的密钥库密码保持一致。 Key alia
    发表于 11-23 11:06