加密芯片的功能和基本原理

原理:AT88SCxx(AT88SC0104~25616)具有协议认证和数据密文传送的功能,使得盗版者即使盗取了单片机程序代码和CPLD代码仍然无法盗版复制整机,因为AT88SCxx(AT88SC0104C.html">AT88SC0104C~25616)无法复制。


1. 加密芯片的功能和基本原理. 


      加密芯片主要用来保护烧进Flash里面的程序即使被盗版者读走, 在非法板上也不能运行, 从而达到保护自己劳动成果的目的. 

本文主要内容:

一.    加密芯片的工作原理

二.    中配置区的寄存器配置

三.    接口描述

四.    DES和自定义算法.


一.    加密芯片的工作原理.

1.       硬件连接

AT88SC0104C的封装外型和内部结构模块图如下:


不能拷图~~~~~~



连接好电源和地后, 将SDA和SCL与主控HOST的GPIO连接好就可以了.


2.       AT88的工作模式和工作机制

AT88SC的工作模式有三种,  标准, 认证和加密三种模式, 标准模式下可以将该芯片视为一个常用的EEPROM来访问. 不过访问时序要按招它自己的Write/Read User Zone命令来读写数据. 认证模式则要复杂的多, 讨论认证模式之前要先研究下这个加密芯片的算法F2.


F2算法的输入是一个系统产生的随机数Q0, 还有从加密芯片0x50,0x60,x070,x080位置读出来的8个字节的密文Ci和一个种子Gc, 芯片内部一共四组用户访问区, 因此对应着四组访问寄存器AR和密码寄存器PR, 以及四组密码寄存器CryptogramCi和四组密文种子Gc.

它的输出是一个八位的新密文Q1, 主机在调用F2时生成Q1, 同时将Q0和Q1用Verify Authentication命令送给AT88, AT88收到认证命令后内部根据保存在密文区的Ci值和种子Gc做同样的运算生成Q2, 同时生成一个密钥Sk, 然后Q2与Q1作对比, 如果结果一直说明认证成功, 它用Q2更换掉密文区的Ci, 同时生成新的密文更新Session Encryption Key配置区. 

第三中模式是加密模式, 它是在认证的基础上在利用Sk替代Gc再做一次F2运算, 并将结果用Verify Encryption命令送给AT88,如果这次运算成功, 芯片内部会启动加密机制, 对总线上传输的数据进行加密\解密.


3.       访问用户数据区.

以AT88SC0104为例, 它的数据存储区分成四个分区, 每个数据区有32字节容量. 大小为4*32=128B=1028b

先看用户区相关的几个配置寄存器

AR: 访问寄存器,  


PM1

PM0

AM1

AM0


ER


WLM


MDF


PGO



Bit7







Bit0


PM1-PM0: 用来设置用户区的读写是否需要密码.

AM1-AM0:用来设置用户区的访问是否需要认证.

ER,WLM,WDF, PGO请参考NDA文档


PR:


AK1

AK0

POK1

POK0


res


PW2


PW1


PW0



Bit7







Bit0


AK1-AK0:选择四个种子中的一个作为认证的输入.

POK1-POK0:双向认证时使用

PW2-PW0:选择8套密码之一作为验证密码.


设置好AR寄存器后就可以通过下面的命令步骤来对用户区读写.

1.       SetUserZone

2.       如果需要认证加密启动认证命令

3.       读写数据

4.       发送checksum

具体可以参考我的代码.


二.    AT88SC0104的配置.

加密芯片的使用阶段包含三个阶段.

1.开发阶段

这个阶段主要用来调试代码, 这个时候要非常注意不要随便的访问某些寄存器, 因为超过某些次数寄存器如AAC, PAC的计数次数之后, 这个片子会被锁死, 这样unlock配置区会失败. 所以调试时要非常小心..


主要用ATSC88来进行认证, 我把所有的种子都设成一个值, AR0-3 PR0-3也设成一样, 这样就可以用一个种子访问整个128字节空间.

AR PR分别设成认证不需要密码模式, 见下面的代码

        data[0]=0xDF;//ARnormal authentication, encrypted required

        data[1]=0x23;//PR

        cm_WriteConfigZone(0x20, data, 2, 0);

        data[1]=0x63;//

        cm_WriteConfigZone(0x22, data, 2, 0);

        data[1]=0xa3;//

        cm_WriteConfigZone(0x24, data, 2, 0);

        data[1]=0xe3;//

        cm_WriteConfigZone(0x26, data, 2, 0);

NC设成0xff 0xff 0xff 0xff 0x00 0x00 0x00然后每出厂一个NC值加一.

其它比如Ci Sk等寄存器可以用默认值, 因为在芯片工作起来之后它们时动态变化的.

DCR寄存器要用它的默认值0xFF, 对访问出错次数进行限制. 但是在调试阶段可以设成0x0F.

最重要的一个寄存器时种子Gc, 它是根据Nc用自定义的算法和一个密钥运算得出的,  这组寄存器对于整个加密芯片非常关键, 因为熔断后它是不可读的,  只能通过自定义算法算出.

2. 熔断阶段

   完成上边的配置后就可以用熔断命令对芯片进行熔断操作. ****这里要非常注意一定要确认自定义算法是否唯一能够算出Gc.*****

3. 出厂阶段.

   做好熔断后就可以将加密芯片焊到板上了.



三.    接口描述.

对于应用层, 只能看到下面四个接口:

int SE_Load_Data(int zone, puchar data, uchar len);

int SE_Save_Data(int zone, puchar data, uchar len);

int SE_Auth_Done()

int SE_Auth_Init();


int SE_Auth_Init();

这个函数主要完成硬件GPIO的初始化, 并且对AT88SC的时序和类型进行测试.

int SE_Auth_Done()

这是个认证函数, 每调用一次, 主机会发起一次加密认证操作.

int SE_Load_Data(int zone, puchar data, uchar len);

int SE_Save_Data(int zone, puchar data, uchar len);

这两个函数时用来读写用户区数据, 他采用的时加密认证, 没有密码, 对时序加密.



四.    自定义算法

void des_GcCal(uchar *Ncc, uchar *Key, uchar *dataO);

这是DES算法的变种, 它的输入是Ncc---从芯片内部读出的卡号.

         Key---加密密钥, 这组数据用来对Ncc加密, 整个DVS项目采用一个相同的私钥来加密所有Ncc. 这样得到的dataO就是种子Gc.

这个算法可以公开, 但是Key需要保密. 后记: 其实这里面有很多东西我没有弄清楚的, 比如AR寄存器里面有个ER位的用法, 我把它设成0之后就出现问题了,
还有AM1-AM0都为00时的双向认证模式. 调试这颗芯片要特别小心, 不然很容易把它锁死废掉了.
  • 1
    点赞
  • 9
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
### 回答1: 电能表是现代社会中不可或缺的电力测量设备,而esam加密芯片成为了电能表中的重要组成部分。该加密芯片的应用,既确保了电能表使用过程中的数据安全性和防篡改性,也提高了设备的整体性能。下面,我们来了解一下电能表esam加密芯片使用手册。 首先,电能表esam加密芯片使用手册需要详细介绍芯片基本功能和工作原理,包括芯片的主要组成部分、数据加解密过程、密钥管理等方面的内容。同时,该手册还应该阐述芯片适用的不同场景,例如普通用户、付费用户、远程采集等应用场景,以及如何进行芯片的配置和安装等细节问题。 其次,电能表esam加密芯片使用手册需要提供操作指南,以便设备用户快速掌握芯片的使用方法。这包括芯片的开启、关闭、初始化、密钥更新等具体操作,同时也应该注意到常见问题的解决方案以及芯片可能存在的安全风险和保护措施等,全面保障产品的使用安全与稳定性。 最后,电能表esam加密芯片使用手册还应该提供相关技术支持和维护服务联系方式,以便设备用户在日常使用过程中遇到问题时及时获得帮助。维护手册应包括维护方法和维护周期,及保修期限和服务方式等信息。 总而言之,电能表esam加密芯片使用手册应当尽可能详尽地介绍芯片的性质、功能、技术和维护方面的问题,以便设备用户深入理解芯片的应用和保护。同时,在编制手册时应注意逻辑清晰、易于理解的原则,使得手册简明易懂、易于操作,为企业的产品营销和用户的便捷使用提供保障。 ### 回答2: 电能表esam加密芯片是一种高安全性的智能卡芯片,它广泛应用于电力行业的计费系统和智能电表中,为用户提供安全的电能计量和计费服务。以下是电能表esam加密芯片使用手册的详细说明: 1. 使用前准备:在使用esam芯片之前,需要先对芯片进行初始化和个性化。具体操作步骤请参照esam芯片的厂商说明书。 2. 插卡操作:将esam芯片插入电能表中的读卡器中,电能表会自动读取芯片上的信息,并进行身份验证和密钥协商。 3. 通信协议:esam芯片与电能表之间的通信采用基于ISO 7816标准的协议。在通信过程中,需要进行加密和解密操作,以保证通信的安全性和可靠性。 4. 数据传输:esam芯片能够实现对电能表中的数据记录、计量结果等信息的传输和存储。同时,esam芯片还可以接收来自电能表的指令,以进行相应的操作和控制。 5. 安全保障:esam芯片使用了多层次的加密算法和密钥管理机制,可以有效地防止被攻击和非法读取。此外,esam芯片还具备物理安全性和防伪功能,有效保障了用户的利益和安全。 总之,电能表esam加密芯片是电力行业标准化智能卡芯片的重要组成部分,具有高安全性、可靠性、灵活性和实用性等多种优点,可以为用户提供全面的电能计量和计费服务。 ### 回答3: 电能表esam加密芯片是一种用于保护电能表数据安全的技术,它采用了高级加密标准和公钥基础设施技术来对电能表数据进行加密和签名验证,从而有效地防止了数据被篡改或者窃取。如果要使用电能表esam加密芯片,就需要先了解使用手册,以下是一些重要内容。 首先,需要了解esam芯片的物理和电气特性,如芯片的尺寸、引脚布局、通信协议、供电和时钟频率等。这是确保esam芯片正确工作的基础。 其次,需要了解esam芯片的密钥管理方法,包括生成密钥、存储密钥、使用密钥、更新密钥等操作。密钥的生成要求随机性,在存储和使用过程中要加以保护,确保只有授权操作员才有权访问。 第三,需要了解esam芯片的应用接口和指令集,包括读写数据、计算MAC、签名和验证等操作。这些指令具有复杂的编码规则和运算方式,需要仔细阅读手册并进行练习和测试。 第四,需要了解esam芯片与电能表的通信方式和数据协议,如读取电量、费率、事件等数据的指令和响应格式。这是使用esam芯片进行远程监控和管理的基础,也是保护能源系统安全稳定的重要措施。 在使用esam芯片时,要遵守国家相关法规和技术标准,保证安全可靠。此外,要定期进行系统维护和升级,保持esam芯片功能完整性和可用性。
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值