文档章节

ATECC508A芯片开发笔记(四):自定义配置508功能,规划DataZone数据存储

H
 HowieXue
发布于 2017/07/17 23:56
字数 1246
阅读 115
收藏 0

ATECC508A芯片开发笔记(四):自定义配置508功能,规划DataZone数据存储

  • 508A内部存储区介绍
  • Data Zone
  • Config Zone
  • 508A Config Zone配置(自定义)
  • -

ATECC508A芯片在使用之前,需要自定义配置ConfigZone与DataZone,并同Lock命令将两个区域锁住,否则无法正常使用功能。而一旦锁上就是永久性的,配置区不能够进行解锁操作,这也是为了考虑到安全因素。

一、508A内部存储区介绍

–由官方Datasheet可知,508A内部具有整片安全EERPOM和SRAM buffer。
–其中EEPROM总大小为11200 bits,并且分成三个区:Data、Configuration、OTP。(如下图,图片看不清可右键新窗口打开,不知道Markdown为啥会缩放图片)

这里写图片描述

如上图可知,Data Zone主要存放数据,而config Zone是决定芯片配置,并且决定Data zone存放什么数据的关键配置区。

Data Zone

–Data Zone共有1208 byte存储空间,以slot作为一个存储单元,每个508A内部共有16个slot。如下图:

这里写图片描述

–Slot 0-7每个空间大小为36 Byte,推荐用来存储私钥或secret;slot 8空间比较大(416byte),所以官方推荐用来存储整个证书等数据;9-15(72 Bytes)推荐存储一些公钥或者签名、证书subject。
如下图为Slot 0 的空间示意图:
这里写图片描述

Config Zone

–>Configuration zone共有128 byte的空间大小,里面包含了工厂生产数据、设备信息(如串号和I2C地址),以及我们需要配置的Data Zone Slot的读写权限配置等等。
–>Config Zone空间示意图如下:其中有淡红背景色的是不能更改的出厂数据

这里写图片描述

–》图中在I2C_Address之后就是我们可以自定义的空间了,比较重要的就是SlotConfigxx区域,每一个区域的配置都会影响到相应Slotxx的读写权限、命令执行以及功能的实现。
–》这也是为什么我们需要进行Provisional的原因,必须提前规划好,公私钥以及secret、证书信息存储在哪里。否则一旦配置后Lock,就不能更改了。

这里写图片描述

上图是config区剩下的空间分布,其中keyConfigxx就是对应了SlotConfigxx,Slot被配置成存储密钥后,还要进行Keyconfig来配置,该Slot能存储什么密钥,并且能执行什么命令、以及操作。是不是略复杂,嗯 大坑还在后面。

OTP Zone

OTP(One Time Programmable) Zone大小为64 Byte,是一个只读存储区,在ConfigZone里面配置使用该Zone,并且在ConfigZone Lock之前,OTP Zone是不能进行读写操作。
我实际使用中并没有用到过OTP Zone,所以不再展开介绍了


二、508A Config Zone配置(自定义)

这里主要讲重要的SlotConfig,其官方解释为:Two bytes of access and usage permissions and controls for each slot of the Data zone,如下图:

这里写图片描述

–>SlotConfig bits如下图(部分),根据官方Datasheet来看,SlotConfig每一个bit的配置都是与508应用功能息息相关,如想让508A 通过加密I2C通信方式去读取其中某一个Slot数据,则该Bit 6 必须设置为 1,否则EncryptRead命令执行会失败。
–>再比如,如果想利用该Slot完成ecdh操作,则Bit 2 必须为1等等。因此一开始的配置过程是非常耗时的,要非常仔细阅读Datasheet,才能根据功能一个一个去查询比对。希望Atmel今后能推出个自动化工具,能直接算出来。

这里写图片描述

–>KeyConfig Bits如下图,与slot config相对应,个人理解,Slotconfig就是规定了Slot能存什么,外界能够对该slot数据进行怎么样的读写,以及能执行什么命令。而KeyConfig就是规定了存的东西到底是什么,这个slot里面存储的什么密钥,该密钥能做什么等等。

–例如,Keyconfig第一个bit就表明了,该slot存储的key是否是ECC私钥,如果置位,则该slot就默认存储的是ECC 私钥,并且能够执行Sign、Genkey以及PrivWrite命令,否则就不能执行这些命令。实际应用中这些Bit之间 有很多都是相互牵制的。

这里写图片描述

这里不再一一 说明每个bit的功能,只是介绍需要这个流程去配置,才能正常使用508。我们实际中应用也没有相对复杂,而且由于我们的 security policy,不具体细说配置结果,正常使用就看datasheet自己配置就好。


下一节会介绍配置Provision的代码,只需一步实现508Provision,将公私钥、Secret、以及证书数据一次性写入508中,并在今后设备认证和数据通信中进行verify和加解密。

欢迎转载,Howie原创作品,本文地址:

http://blog.csdn.net/howiexue/article/details/75212476

谢谢

© 著作权归作者所有

H
粉丝 0
博文 13
码字总数 12540
作品 0
私信 提问
ATECC508A芯片开发笔记(九):加密读写芯片内容流程和原理

ATECC508A芯片开发笔记(九):加密读写芯片内容流程和原理 Contents Encrypted Read. 1.1 Standard Encrypted Read Flow. 1.2 Simple Encrypted Read Flow Diagram. 2. Encrypted Write. 2......

HowieXue
03/20
0
0
STM32打印二维码项目

STM32打印二维码项目规划 V1.00 一、 硬件结构框图 1、硬件电路框架结构如图示 硬件简单说明 1、主控芯片: 主控芯片采用stm32f103vet6。 2、电源部分: 通过外围电源适配器进行供电,电源适...

whereno
2017/02/28
6
0
JEPLUS平台首页规划之激活方式与框架设计介绍——JEPLUS软件快速开发平台

JEPLUS平台首页规划之激活方式与框架设计介绍 之前的笔记是简单介绍了JEPLUS平台首页规划的一些展示效果和配置信息的介绍,今天这篇笔记就开始从简单的配置开始为大家一一讲解首页规划的配置...

JEPLUS
2018/07/04
30
0
【北京】某互联网服务企业诚聘高级运维工程师

高级运维工程师 【工作职责】 1、网站服务器和应用的运维工作; 2、负责服务器、应用的规划、监控,数据备份,日志分析,故障排除,性能调优等工作; 3、研究运维相关技术,根据系统需求制定...

sabrinazhu
2012/04/26
517
5
博客导航——一站式搜索(所有博客的汇总帖)

博客导航——一站式搜索 以后博客肯定会越来越多的,所以这做一个整理,方便各位朋友能快速的锁定自己想要的资源 课程 巧用第三方快速开发Android App 热门第三方SDK及框架 Android Studio G...

qq_26787115
2016/01/08
0
0

没有更多内容

加载失败,请刷新页面

加载更多

关于ThinkPHP5.1+的Log无法记录SQL调试记录的小经历

项目开发阶段,除了基本编码外,性能也需要实时关注与优化。之前我的大部分项目都是使用ThinkPHP5.0以及ThinkPHP3.2,对于框架提供的日志记录和日志配置都差不多,然后使用ThinkPHP5.1的时候...

北桥苏
12分钟前
0
0
TiDB Binlog 源码阅读系列文章(四)Pump server 介绍

作者: satoru 在 上篇文章 中,我们介绍了 TiDB 如何通过 Pump client 将 binlog 发往 Pump,本文将继续介绍 Pump server 的实现,对应的源码主要集中在 TiDB Binlog 仓库的 pump/server.go...

TiDB
15分钟前
0
0
OSChina 周五乱弹 ——不知道假装开心,装的像么

Osc乱弹歌单(2019)请戳(这里) 【今日歌曲】 @巴拉迪维 :天黑了 你很忧愁, 你说世界上, 找不到四块五的妞, 行走在凌晨两点的马路上, 你疲倦地拿着半盒黄鹤楼。#今日歌曲推荐# 《四块...

小小编辑
今天
2.4K
18
Windows下学习C语言有哪些集成开发软件?

前言 初学者学习C语言遇到的最大困难想必就是搭建环境了,相当多的初学者就是被搭建环境导致放弃了学习编程,就我自己的经验而言,初学编程不应该受限于环境,使用成熟好用的环境就可以了,之...

Allen5G
昨天
2
0
Hello,Servlet!

Servlet来源 上文说过了servlet是什么,我们从servlet是什么中也可以了解到servlet的来源:servlet是Java的一个类,并且能够运行在web容器上,所以servlet是按照web容器的规范和Java的规范写...

蒙尘
昨天
1
0

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部