one-wire协议和sha1算法在DS28E01上验证(一)

1.DS28E01简介
DS28E01通过1条单总线与MCU通信,单总线不多说了,要求时间非常严格,精确到us级别。DS28E01有四个存储区:数据存储器(EEPROM)(共分4页,每页32个字节)密钥存储器(secret)(8字节)含有特定功能和用户字节的寄存器页(register page)易失性暂存器(scratchpad)(8字节)MCU通过单总线只能读写暂存器,而不能直接读写其它存储区。向数据存储器写数据、载入初始密钥或者向寄存器页写数据时,先把数据写入暂存器,然后通过相应的命令,让芯片自行从暂存器拷贝数据至目的地址。
2.DS28E01工作原理
芯片内部有一个SHA-160加密模块,参与SHA算法的为512位特定格式的数据,这些数据包含8字节密钥,5字节用户指定的随机数,32字节EEPROM内容,7字节ROMID,1字节EEPROM的地址TA1及固定数。MCU可以读取芯片通过SHA加密后的20字节哈希值,并与MCU自己通过同样的算法计算出的哈希值进行比对。既然MCU要进行同样的加密操作,要么肯定要生成与芯片内部完全相同的55字节消息,怎么得来的呢?8字节密钥是自己生成并写进去的
5字节随机数是在芯片执行SHA之前写进暂存器的值.
32字节EEPROM数据,在读回20字节哈希值之前,芯片会传回这32字节内容。
7字节ROMID,可以在任何时候读到芯片的ROMID.
2字节固定值,看手册可以知道
1字节TA1,自己写进去的
3.其他
以上部分是从网络获取的,可以快速数据该器件的工作原理,详细技术文档请参考数据手册。
4.ROMID分析
fpga通过ila抓取8字节的romid为:F1000001B21B942F2F:器件码F1:crc校验码000001B21B:串行序列下面验证crc是否正确,crc计算器可在线计算,其参数配置和输入、输出结果如下:
在这里插入图片描述

输出结果为F1,与抓取到的数据一致
5.MAC验证
5.1验证MAC前crc16
写入A5命令后,器件输出32字节eeprom数据和一字节FF和两字节crc16校验,后面接着就是20字节的MAC值,要是继续读会返回AA如果是新的芯片,eeprom通常为0,但是不一定,这点要明确,可读eeprom查看值,这里为0。crc16校验输入数据为命令+地址+32字节数(0)+FF通过ila抓取到的数据如下图:
在这里插入图片描述
通过数据分析FF后面接着的为crc16校验0d6d通过crc16在线计算器,配置和输入、输出结果如下:
在这里插入图片描述

其中A5为命令,后面两字节为地址,接着为32字节0和一个字节FF输出结果为0d6d,验证正确

5.2验证MAC
读完MAC后,继续读,会返回AA,通过ila抓取的数据如下:
在这里插入图片描述
可见数据结尾为AAAA,剩下两字节22d2为crc16校验,剩下20字节为mac值crc校验采用crc16在线计算器,其配置和输入输出数据如下:
在这里插入图片描述
可见输入结果为22D2,与抓取的CRC一致

6.结果
通过以上步骤,基本实现了DS28E01的验证工作,具体细节参数需要参考设计文档
7.注意
在写入5A命令之后,最好延时10ms以上,再读取判断是否返回AA,本设计延时为40ms,测试了十几片都能正常工作,无问题发生

在这里插入图片描述

  • 0
    点赞
  • 13
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 4
    评论
评论 4
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

weixin_43189165

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值