摘要:本文首先介绍了AT88SC0104C~25616C协议认证卡的主要特点、基本功能、安全存储原理、协议认证过程以及开发方法;接着,对应用AT88SC0104C实现对电子产品加密防盗版的方法和安全性进行了研究;最后,给出了详细的设计过程和应用实例。

关键词:AT88SC0104C,硬件加密,防盗版

分类号:TP309.7     文献标识码:B

一、引言

电子产品被非法复制的情况极其严重。为此,Atmel公司于1999年推出了用于防范盗版的加密器件AT88SC153和AT88SC1608,取得了一定的效果。但由于这两种器件采用的是明文传送方式,所以其中的数据在通信过程中易被截获。在2003年,Atmel公司又推出了具有双向认证且密文传送的新型加密器件AT88SC0104C~25616C系列协议认证卡,存储容量最高可达32K字节。

二、  AT88SC0104C~25616C系列协议认证卡

本系列协议认证卡是当前安全性能最高的安全存储器件,与AT88SC1608和AT88SC153相比,最突出的特点是所有传送数据为密文传送,确保了存储数据的安全性。ATMEL公司现已建议在新产品开发中不再使用AT88SC1608和AT88SC153。按ATMEL公司中国办事处的要求,下面仅介绍厂商同意公开的资料。事实上,AT88SC0104C~25616C与AT88SC1608、AT88SC153有很多相似之处,如访问权限寄存器和写锁控制寄存器等。AT88SC0104C~25616C协议认证卡系列中各器件的操作原理完全相同,各配置区随卡的容量而变化。

1.主要特点

(1)工作电压为2.7~5.5V;时钟频率最高为1.5MHz;符合ISO/IEC 7816-3同步协议。

(2)256×8 bit配置区,4×32×8bit~16×2048×8bit存储单元。可将具有相同安全等级且相同密码的多个应用分区合并使用。每个分区分别受读密码、写密码控制(8套密码、每套中读密码、写密码各1个,每个密码3字节),错误计数8次。如将用户分区合并,则读写密码指向同一套密码。

(3)数据安全防护功能:64bit认证协议;密文和校验方式;密文流传送方式;协议认证错误计数;读写访问控制密码;密码错误计数器;可按分区配置访问权限;电压和时钟频率监视。

(4)重复擦写次数:100,000次,数据保存:100年。

2.封装形式和引脚

AT88SC0104C~25616C协议认证卡的封装形式和引脚功能如图1所示。

卡片封装             DIP-8和SO-8封装

图1  AT88SC0104C~25616C协议认证卡的封装图

3.AT88SC0104C~25616C协议认证卡的存储器构成

存储分区

0

1

2

3

4

5

6

7

地址

用户分区0~P

32~2048字节

000H~QH

配置区

256字节

00H~FFH

注:P为用户分区最大编号,0~15;Q为最大字节地址,018H~7F8H。

图2  AT88SC0104C~25616C协议认证卡的存储器构成示意图AT88SC0104C~25616C

协议认证卡的存储器构成如图2所示。图2中的每个用户分区的访问地址均相同。具体访问哪个分区由选择的分区号确定。用户分区存储器的访问受控制逻辑电路的控制,保护功能在初始化时(即发行)由配置区的访问权限寄存器AR、密码权限寄存器PR和密码来配置。

AT88SC1616 配置区的结构如图3所示。

 

0

1

2

3

4

5

6

7

地址

厂商

信息

复位应答(ATR)

00H

制造代码(FC)

测试区(MTZ)

卡制造商代码(CMC)

08H

识别区

历史代码(LHC:ATMEL出厂后熔断)

10H

DCR

识别码(Nc)

18H

AR0

PR0

AR1

PR1

AR2

PR2

AR3

PR3

20H

发布号(IC)

40H

AAC

密文(Ci)

50H

密钥

密钥(Gc)

90H

密码区

PAC

写0分区密码

PAC

读0分区密码

B0H

系统区

保留

F0H

                       

图3  AT88SC0104C协议认证卡的配置区构成示意图

图中,PR为密码权限寄存器,其他各项内容均与AT88SC153相似。

AT88SC0104C~25616C协议认证卡的访问权限配置寄存器的WLM、MDF和PGO(即Bit2、Bit1、Bit0)与AT88SC153协议认证卡相同,Bit7~ Bit3用于配置密码和认证模式。

4. 协议认证过程

AT88SC0104C~25616C协议认证卡的协议认证过程与AT88SC1608相似。与AT88SC1608相比,其协议认证过程(即步骤1~3)是相似的。在传送密文数据时由于传送了校验和,使得数据的安全性更高。AT88SC0104C~25616C协议认证卡的协议认证过程如下:

操作步骤

AT88SC0104C~25616C协议认证卡

信息流向

IC卡读写器

1

传送卡号NC

计算质询A

2

校验A;计算质询B

传送质询A

3

传送质询B

校验B

4

校验读密码

读密码(读密码)

5

传送数据

接收数据

6

传送校验和

接收并校验校验和

7

校验写密码

写密码(写密码)

8

接收数据

传送数据

9

接收并校验校验和

传送校验和

10

写数据

AT88SC0104C~25616C协议认证卡与IC卡读写器之间有三种基本通信模式,如表1所示。上电后缺省配置下为标准模式。成功的认证操作激活认证模式。认证操作成功后激活加密模式。

表1  AT88SC0104C~25616C协议认证卡的通信加密模式

通信模式

配置数据

用户数据

密码

数据校验

标准模式

明文

明文

明文

MDC

认证模式

明文

明文

加密

MAC

加密模式

明文

加密

加密

MAC

三、采用协议认证卡对产品加密

一般来说,开发IC卡应用系统都需要使用IC卡读写编程器,开发协议认证卡也不例外。开发过程中,我们需要用读写编程器来掌握器件中数据的变化情况;开发后,需要使用读写编程器对器件进行设置,然后才能安装到目标装置上。应避免在目标机上对器件进行设置,因为这样易泄露有关信息。现在国内能支持AT88SC0104C~25616C系列器件的读写编程器还很少,如http://www.setchief.com 等网站。

对协议认证卡的操作必须慎重,尤其不能向协议认证卡随意发送数据或时钟,这样极易导致将器件锁死。协议认证卡内部设有内存测试区(MTZ),MTZ的访问不受安全和密码限制。因此,为保证读写时序的正确性,可先向该区进行读写测试,然后再向器件正确写入各种命令。需要注意的是,在对协议认证卡上电且RST为高电平后,一定要首先发送5个以上SCL脉冲才能启动通信,否则发送的数据和命令不会被器件正确接收。这一点与普通I2C器件有所不同。

1.应用注意事项

(1)采用程序最大容量的单片机器件型号,例如对16条地址线的51系列单片机宜采用W78E516(64kByte EEPROM),对空闲的程序空间充满各种程序。这样做的目的,是使盗版者再也无法增添程序。因为单片机程序代码易于被非法拷贝,但由于采用了协议认证卡,重要数据已被写入卡中,盗版者要想绕开协议认证卡使用截获的数据密文就只有修改程序。盗版者不知道原有程序的运行情况,原有程序肯定不能删除,新增程序又没有余地,从而有效防范盗版。

(2)最好能将协议认证卡中的用户区用作非易失型的数据存储,即在系统工作过程中将部分重要数据写入协议认证卡的EEPROM,使得破解难度进一步提高。

(3)务必将部分重要数据写入协议认证卡,直至在即将使用该数据时才将其解密,以避免被跟踪解密。

(4)引入随机认证机制。即使单片机的程序流程随机改变,有一部分认证流程多数情况下并不执行,只有很小的执行概率(例如1%以下),一旦认证不成功立即将卡锁死。

2.设计加密举例

这里给出一个采用AT88SC0104C协议认证卡对电子产品进行加密、防范盗版的有效方法,确保当盗版者已获得单片机的程序代码并被反汇编的情况下,仍然不能对电子产品进行复制。

  1. 基本设计流程

硬件连接→配置加密器件→编程加密器件→熔断加密器件→编制有关加密保护部分的程序

  1. 硬件连接

将AT88SC0104C与51系列单片机相连,只需将SCL和SDA引脚分别与单片机的P1、P3或P4(仅PLCC44封装)口连接即可。如果是对已有产品增加加密保护功能,现有硬件资源不足时可以考虑将原51单片机改用PLCC44封装的器件,这样可以增加4个逻辑位接口(P4.0~P4.3)。

推荐采用W78E516单片机,原因如前所述。建议采用40MHz晶体振荡器,工作频率高,难以对数据进行追踪分析,使得安全性更有保障。

  1. 加密器件的配置

所谓对AT88SC0104C的配置,就是按照加密功能要求,对AT88SC0104C的配置区的各数据进行配置。为了达到更高的安全性,除了应将重要的数据都写入AT88SC0104C的存储区,还应当利用AT88SC0104C的EEPROM的可写及非易失性质,将一些数据随机地写入AT88SC0104C并随机进行验证。这里给出一个实际的配置文件实例。

说明:1)19H~20H:可以作为产品序列号,可以不设。

2)40H~4FH(IC):可以作为产品序列号,可以不设。

3)将B0H和B4H(PAC)写为0FFH(8个1;对应为8次错误计数)。

4)WRITE PASSWORD:045697H;READ PASSWORD:858318H;SC:DD4297H。

5)本设计示例所实现的功能如下:

 

0

1

2

3

4

5

6

7

地址

识别区

0BH

识别码(Nc)

18H

53H

08H

53H

08H

57H

0BCH

55H

00H

20H

发布号(IC)

40H

密钥区

00H

00H

00H

00H

00H

00H

00H

00H

90H

密码区

0FFH

04H

56H

97H

0FFH

85H

83H

18H

B0H

                       

图4  AT88SC0104C协议认证的配置示例

用户区0(User0):用于存储电子产品的重要数据;用户区1(User1):作为非易失EEPROM,即作为电子产品的随机存储器;两用户区采用同一套读写各3字节的密码;认证;密码校验。用户区0(User0):只读。用户区1(User1):可读,可写。

AT88SC0104C协议认证卡的一个配置文件实例如图4所示。

  1. 加密器件的编程

所谓加密器件的编程,就是将配置文件和部分保密数据事先按地址写入AT88SC0104C的配置区和用户区各单元。对于电子装置中需要保密的数据,可以事先将他们写入用户区0(User0)。

编程过程的实施,宜采用读写编程器来完成,如采用目标机上的单片机编程则易泄密。

  1. 加密器件的熔断

一般应在系统调试成功后,才将AT88SC0104C中的熔丝熔断。熔断之后,配置不能再更改,这一点须特别注意。对于已经调试成功的配置文件,则应当在写入配置文件后,可以考虑将熔丝熔断,但也可以不熔断。但不宜在单片机内校验传输密码(SC)以免泄密。熔断过程如下:

向熔丝标志寄存器(FUSE)顺序写入06H;04H;00H。

  1. 编制有关加密保护部分的程序

通常先将所要开发的电子产品的全部功能调试好,最后才加入加密保护部分的程序。器件的访问、数据与命令的传输过程与一般I2C无异,只是命令流程必须严格符合AT88SC0104C~25616C的规定。引入加密器件后,则应在程序中的某些位置加入一些固定的认证流程和随机的认证流程,从而进一步增加盗版难度。采用随机的认证流程干扰反汇编追踪最为有效。这里介绍一种较为简便的单片机随机数产生方法及其应用,如图5所示。

图5的算法基于单片机的SRAM 单元在上电时的内容随机这一事实。图5中,P为设定的概率(0~1),建议取小于0.1。

结论

本文作者创新点:给出了一种防范电子产品被盗版复制的新方法、进一步提高安全性的有效措施和具体的实施方案。

参考文献

[1]  Atmel公司. AT88SC0104C~25616C Summary. 2001. http://www.atmel.com

[2]  吴德会等.基于混沌保密的USB软件加密狗及反解密研究.微计算机信息.2005,(8):15~17
[3]  实诚电子网页:http:// www.setchief.com.

内容来源于:杨振野  韦方明  陈坤城  谭光雷 的《电子产品硬件加密防盗版新方法》

完整文档下载地址:https://download.csdn.net/download/li_wen01/10897107

AT88SC0104C电子产品硬件加密防盗版方法相关推荐

  1. 物联网核心安全系列——车载物联网的加密防盗版

    物联网是新一代信息技术的重要组成部分,也是"信息化"时代的重要发展阶段.在物联网高速发展的环境下,车载物联应运而生.谈到物联网,很多人会想到智能家居和可穿戴设备.其实,物联网在交通 ...

  2. 电子产品可靠性试验的目的和方法

    为了评价分析电子产品可靠性而进行的试验称为可靠性试验.试验目的通常有如下几方面: 1. 在研制阶段用以暴露试制产品各方面的缺陷,评价产品可靠性达到预定指标的情况: 2. 生产阶段为监控生产过程提供信息 ...

  3. 某在线商店电子产品销售数据分析-RFM分析方法

    本文github地址:DataSicence 数据下载链接:链接 本文参考资料:链接 import pandas as pd import numpy as np import matplotlib. ...

  4. 电子产品PCB电路板散热的方法

    电子设备工作时都会产生一定的热量,从而使设备内部温度迅速上升,如果不及时将该热量散发出去,持续升温,器件就会因过热而失效,电子设备的可靠性能就会下降.因此,对PCB电路板进行很好的散热处理是非常重要的 ...

  5. 电子产品中EMC隔离设计的方法

    目录 1.隔离分类 2.EMC中隔离分析 2.1.光耦隔离 2.2.继电器隔离 2.3.共模扼流圈(共模电感)隔离 在电子产品设计中,为了截断产品内部电路与外界的干扰传输通道,或出于安全隔离的考虑,通 ...

  6. linux 硬件加密 ssd,市面上多种流行的固态硬盘产品存在硬盘加密机制绕过漏洞...

    *本文中涉及到的相关漏洞已报送厂商并得到修复,本文仅限技术研究与讨论,严禁用于非法用途,否则产生的一切后果自行承担. 近期,荷兰奈梅亨拉德堡德大学研究人员发现,市面上多种流行的固态硬盘( SSD dr ...

  7. 开放防火墙/26ip段_在5个不同国家/地区采用开放硬件设计的电子产品

    开放防火墙/26ip段 开源硬件协会的硬件注册表列出了来自五大洲29个不同国家/地区的硬件,展示了经过认证的开源硬件的广泛国际足迹. 在某些方面,这种国际影响力不足为奇. 像许多其他开源社区一样,开源 ...

  8. 我的世界变betty指令_Betty Hacker将开放式硬件电子产品嵌入蛋糕中

    我的世界变betty指令 食品和电子产品通常不会很好地混合在一起-除非您是蛋糕黑客. 自2008年以来,我一直将电子产品嵌入可食用的蛋糕中.而且,在2009年,我的团队赢得了纽约市Yahoo! 黑客松 ...

  9. 优必选能开放软硬件源代码吗_四个项目供父母教孩子如何使用开放式硬件和电子产品...

    优必选能开放软硬件源代码吗 孩子们学得很快,并且拥有丰富的想象力. 与孩子一起进行电子或硬件项目时,要记住的最重要的事情是: 让事情变得有趣 . 只要他们的手陷入困境并且正在拆散东西,否则就有可能炸毁 ...

最新文章

  1. java简单springboot系统_Springboot系列 3 - 建立简单的用户登录系统
  2. CTF---密码学入门第一题 这里没有key
  3. python 新建文件 hdfs_大数据学习(六):Python操作hdfs(包括追加数据文件到hdfs文件)...
  4. 移动web开发之像素和DPR
  5. 在VMware虚拟机中进行Ghost网刻不成功的几点提示
  6. 17、mybatis两个内置参数
  7. GraphQL:简单开开始一个查询
  8. React antd Descriptions span属性无效问题
  9. SASS简介及使用方法
  10. 9600kf功耗和温度评测_i5-9400F与i5-9600KF性能差距大吗?i5 9600KF和9400F区别对比
  11. MySQL 的CASE WHEN 语句
  12. javascript Event监听
  13. 学习HTML5+CSS3的第一天
  14. C#设计模式之十六观察者模式(Observer Pattern)【行为型】
  15. 如何使用计算机蓝牙设备管理器,电脑设备管理器连接蓝牙的方法
  16. 黑色HTML5网站整站源码
  17. UG三轴产品编程3D图档-刀路图档550例
  18. mysql cpu 占比过高问题解决
  19. 阿里云服务器安装postgresql
  20. 解决ImportError: No module named “XXX“

热门文章

  1. 趋势外推预测 这一篇就够了(附上例题)~~~~~~~~~~~
  2. UGUI内核大探究(二)执行事件
  3. 静态库那些事儿/MT /MD
  4. 字符串转码中文乱码问题的进一步理解 UTF-8 GBK转码
  5. 【C语言典例】——day7:尼科彻斯定理
  6. 185. [USACO Oct08] 挖水井
  7. python基础包的functools的reduce方法-亢保星
  8. ftrace跟踪内核_ftrace追踪内核函数调用
  9. 2020 年 11 月编程语言排行榜
  10. @CrossOrigin Enabling CORS