SE 即安全组件 (Security Element), 是安全应用系统中提供安全信息存储、密码运算 功能的芯片,用以实现数据加密、身份认证等功能。本文主要介绍基于宏思电子技术HSC32i1安全芯片开发的SE的特性和功能。
1.SE功能开发介绍
> 灵活的指令集,便于实现各种安全应用
> 以 SHA-256 算法实现密钥派生等功能,并实现加解密
> 以 SHA-256 算法生成 MAC (报文认证码)
> 以 SHA-256 算法实现 HMAC (基于哈希算法的加密消息认证)
> 12C 接口,典型使用100Kb/s, 最高速率支持400Kbps
1.1 应用场景
> 防伪造/克隆
用于确认可移除、可替换客户端组件的真实性。比如打印机墨盒、电子子卡、医药器材、及备件的防伪;也可用于鉴别软件、固件模块、存储器单元等。
> 固件或介质保护
引导时验证存储在存储器中的编码的完整性和正确性,以防止未经许可的修改(这也称为安全启动)。
> 交换会话密钥
安全方便地交换用于系统处理中的加解密密钥,以管理私密的通信链路、加密下载及类似项目。
> 数据安全存储
存储用于加解密的秘密密钥。也可用于存储配置、校准、电子钱包数据、消费数据或其他私密的少量数据,通过加密/认证的读和写操作实现可编程的保护。
> 校验用户口令
确认用于输入口令的正确性,将用户简单口令通过算法映射为复杂的数据,从而实现口令在链路上的安全传输。
1.2 安全特性
> 芯片通过国密安全二级和EAL4+ 标准检测
> 真随机数发生器,符合<<随机数监测规范>>和NIST 相关标准
> 唯 一 的9字节(72 -bit) 序列号
> 真随机数发生器
> 地址加扰,金属屏蔽层设计
> SPA/DPA/DFA 防护
> 安全版图
2. 电气特性
2.1极限参数
注:超过绝对最大额定值所列的负荷可对芯片造成永久性损坏。长期暴露在绝对最大额定下会影响芯片的可靠性。
2.2电性参数
2.3 DC 参数
2.4 通讯启动时间参数
上电复位时间: SE 从 VCC 上升至有效电压直到能够接收数据的时间。
3.I2C 接口
安全认证 SE 采用标准的 I2C 接口,利用两根线 SDA (数据线)和 SCL (时钟线)进行数据传输,以实现主控系统和安全认证 SE 之间各种指令交互功能。
3.1 I2C 状态
3.1.1 芯片休眠
> 当芯片休眠时,功耗下降。
> 支持地址匹配的中断唤醒。
3.1.2 芯片处于唤醒状态
当芯片处于唤醒状态时,它接受下面列出的条件:
> 数据0:如果当SCL 由低变高再变低时, SDA 为低且稳定,则总线上传输了一个比特0。SDA 可以当SCL 为低时改变。
> 数据1:如果当SCL 由低变高再变低时, SDA 为高且稳定,则总线上传输了一个比特1。SDA 可以当SCL 为低时改变。
图3-1.I2C 接口的数据比特传输
> Start 条件:当SCL 为高时 SDA 从高至低的跳变,就是Start 条件,它是主机端发送数据的开始条件。
> Stop 条件:当SCL 为高时SDA 从低至的高跳变,就是 Stop 条件。当芯片接收到此条 件之后,当前传输事务就结束了。在输入时,如果芯片有足够的字节空间来执行命令, 芯片就转到忙状态,开始执行。建议在任何一个包发送到芯片之后,主端发送一个 Stop条件。
图3- 2 .I2C 接口的 Start 和 Stop 条件
> 应 答 (ACK): 确认。在每一个地址或数据字节发送后的第9个时钟周期,接收方要将SDA 引脚拉低来确认正确地接收到了该字节。
> 无应答 (NACK): 非确认。在每一个地址或数据字节发送后的第9个时钟周期,接收方可以让 SDA 引脚保持为高,来表示该字节接收错误,或此字节完成了一次有效的命令及其应答。
图3-3.I2C 接口的确认和非确认条件
3.2 向 SE 发送数据
从系统向SE 的数据发送时序于下图中。发送顺序如下:
1. Start 条件。
2. 芯片地址字节。此字节选定 I2C 接口上的特定芯片。如果此字节的bit 7至1与配置分 区内的l2C Address 字节的 bit 7至1匹配,则该SE 芯片被选中。此字节的 bit O是标 准 I2C 的 RW 位,表示写操作应为0(芯片地址之后有从主机发往芯片的字节)。
3. 包类型字节(见下节)。
4. 可选的数据字节(1至N)。
5. Stop 条件。
注:在ACK 期间, SDA 被拉低。
发送到芯片的字节1是长度,在芯片接收到该数量的字节之后, SE 会忽略后续接收到 的字节,直至执行完成。
系统必须在最后一个命令字节后发送Stop 条件,以确保芯片开始命令计算。未发送Stop条件可能导致通讯异常。
3.2.1 包类型
在 I2C 发送数据包中, SE 将主机系统发送的(除地址外)首字节(0偏移)为包类型, 如下所述。
表3-2.包类型
休眠和待机的外在表现为功耗的差异以及是否保留当前的 TempKey.Valid。
如果用户没有敏感的功耗需求,可以忽略00,01和02类别的指令。
具体更多详情请与我方咨询。
关注微信号,惊喜等你来
x