U 盘作为信息化条件下移动载体被广泛使用, 在带来便利的同时, 也给信息资料的安全性带来严重隐患, 市面上各类安全 U 盘, 在硬件和安全模型方面还无法保证信息的绝对安全, 在特殊保密领域, 研发一款高安全性和健壮性, 能够保存高涉密信息的安全 U盘成为一项紧迫工作. SSX20-D 安全芯片是采用Acra2S 内核的多功能安全处理平台, 多应用于银行、电子商务的 USB KEY 和加密机中, 通过 USB KEY 协议、U 盘协议分析和硬件集成改造, 将 KEY 安全芯片的安全体系拓展到大容量FLASH芯片中, 实现移动加密存储的高安全性, 对于信息安全保密具有重大意义.
1 安全模型概述
安全模型最终的保护对象是存储的数据, 以数据的整体安全为中心, 从纵深来解决加密、控制、认证问题. 设计了存储数据安全保护、U 盘密钥参数保护和 U 盘使用控制管理三层次的安全模型. 采用了数据加密、U 盘参数保护、加密密钥保护、口令硬件使用控制、U 盘抗攻击等安全机制.
安全模型特点为 SSX20-D 芯片内置高强度 SM1算法与真随机数发生器, 支持数据流硬件加密及加密密钥随机生成; 密码算法运算及身份认证等所有安全性相关操作都在设备内完成, 独立于主机, 可以较好的保护敏感数据; 支持多级基于硬件的代码保护机制与最大为四级的用户权限管理.
2 安全模型设计与实现
2.1 存储加密设计
2.1.1 系统整体存储密码结构
安全模型采用了两级密钥结构, 口令密钥 KA, 数据加密密钥密文 KF. 当大容量 FLASH 数据要进行加/脱密处理时, 首先, 口令密钥通过 SM1 算法脱密数据加密密钥密文得加密密钥明文, 用加密密钥明文通过SM1 算法生成过程密钥, 将过程密钥暂存于 SSX20-D安全芯片内, 用过程密钥加/脱密,进/出大容量 FLASH的数据流.
2.1.2 FLASH 存储加密
为防止非法用户利用其他手段直接读取 FLASH存储芯片, 单纯的 U 盘访问控制机制并不能从根本上解决安全 U 盘的安全隐患, 存储数据还需要进行加密处理. 数据加密是该安全 U 盘的核心, 安全 U 盘按照功能设计要求, 采用 SM1 分组加密算法, 分组长度128-bit, 算法主密钥长度为 128-bit; U 盘数据加密密钥密文、用户口令的杂凑值存储在 SSX20-D 安全芯片安全存储区内, 当向 FLASH 芯片内写入数据时, 首先调用 SM1 算法, 对数据流进行加密后, 然后调用底层写函 数 ( 物 理 地 址 对 底 层 FLASH 的 写 函 数udisk_write_2k), 将数据写入 FLASH; 当由 FLASH 芯片内读出数据时, 首先调用底层读函数(物理地址对底层 FLASH 的读函数 udisk_read_2k), 然后调用 SM1 算法, 将读出数据流进行脱密后, 送入到主机.
2.2 控制模块设计
对于此安全模型来说, 安全管理模块, 也即固件控制程序的设计是关键.
1) 固件工作原理
安全 U 盘初始化完成后, 首先需要对用户进行身份认证. 验证通过, 启动安全管理模块, 实现对 U 盘的安全访问. 再继续接受主机命令, 并进行相关操作.
2)固件的基本工作流程
安全 U 盘的工作流程如图 5 所示. 安全 U 盘初始化完成后, 固件控制程序开始接受主机命令, 完成相应操作并返回状态和数据. 使用安全 U 盘时, 首先要进行用户口令验证, 完成用户身份认证. 当验证通过后, 用户口令与其低 128-bit 的杂凑值异或(异或运算时, 口令不足 128-bit 的高位用0x00补齐, 多于128-bit 的则裁减其高位), 将所得结果调用 SM1 算法脱密数据加密密钥密文, 然后将得到的数据加密密钥进行 SM1 算法密钥调度, 生成 160 字节的过程密钥暂存于 SSX20-D 安全芯片的安全 FLASH 区内; 安全 U盘继续接受主机命令, 并进行相应操作, 如 FLASH 内数据的删除或读写、安全 U 盘内口令设置、重新初始化等. 命令执行完成后, 安全 U 盘根据命令向主机(或存储器)返回状态或数据, 然后继续等待主机命令.
2.3 密钥管理设计
安全模型采用三级密钥方式. 一级密钥为口令密钥, 二级密钥为基本密钥, 三级密钥为数据加密密钥.用户口令经 SSX20-D 安全芯片的 SHA-256 算法模块处理后, 得到 256-bit 杂凑值, 存储于 SSX20-D 安全芯片的安全FLASH 区; 当安全U 盘启用时, 验证登录口令杂凑值与安全 FLASH 区的杂凑值一致时,判断为合法用户, 固件控制程序取口令杂凑值的低 128-bit 与用户口令(128bit补0x00,高于128-bit取其低128-bit)相异或得到的密钥为口令密钥. 数据加密密钥由随机发生器产生, 而将口令密钥调用 SM1 算法加密数据加密密钥, 得到 128-bit 的数据加密密钥密文并存储于安全FLASH 区内. 安全 FLASH 区具有读写可控制的特性,非法使用者难以获得其内部有效数据; 在合法用户通过认证后, 在固件控制程序调度下, 提供给 SM1 密码算法, 生成 160 个字节的过程密钥, 将过程密密钥临时存储在 SSX20-D 安全芯片内, 用以正确的实施数据加/脱密.
3 模型安全性分析与验证
3.1 安全策略分析
研究Flash的数据流程, 我们会发现在缓冲区的处理上, 移动存储介质是比较特别的. 当我们从介质中读数据时直接从Flash存储芯片中读就行了, 数据并不需要经过缓冲区, 而写数据时由于Flash擦除机制的原因, 必须先将数据块复制到缓冲区中, 修改好了再写入Flash. 为此我们设计的安全U盘存储数据加密方案为: 在主控制器修改缓冲区中数据的时候加密, 在主控制器向 PC 机送数据即从控制器管道读的时候对数据进行脱密. 密钥由安全芯片存储, 长度固定, 由应用程序向加密 U 盘发送的命令流控制字通知密钥的读取与修改. 结合安全 U 盘的实际情况, 本方案采用SM1 分组密码算法对存储数据进行加密, 分组长度为128-bit.
3.2 密钥安全分析
在系统设计中, 用 SSX20-D 安全芯片中 SHA-256算法对用户口令进行杂凑运算后存储,要使用安全 U盘, 首先要进行口令认证. 产品采用二级密钥来进行管理, 口令密钥长度固定为 128-bit, 与用户口令密切相关, 口令长度为 8 个字符至 64 个字符之间, 口令的修改会使口令密钥发生变化, 口令密钥在安全 U 盘合法用户认证通过后在 SSX20-D 安全芯片内合成, 密钥分量以密文的形式存储于 SSX20-D 安全专用 FLASH区内, 非法用户难以获得.
3.3 数据安全性分析
安全U盘中的数据均由SSX20-D安全芯片加密后存储, 即使将存储芯片拆离安全 U 盘, 也不能读出其中的数据; 用于其加密的数据加密密钥采取二级密钥保护的方式进行, 且密钥的整个生命过程均在SSX20-D 安全芯片内进行; 安全 U 盘利用 SSX20-D 安全芯片, 在 SSX20-D 安全芯片内部实现基于硬件的加、脱密全过程, 不会出现数据泄露问题.
4 结语
安全模型采用存储数据安全保护、U 盘密钥参数保护和 U 盘使用控制管理三层次的安全模型. 通过对安全芯片的Flash区划分并进行权限设定, 采用固件程序访问机制, 防止外部程序读写, 从硬件层实现 U 盘安全, 满足了高涉密领域对移动存储设备的安全需求.