电子元器件应用-使用SHA iButton实现数字认证和交易的应用
更新时间:2023-04-10 17:18:01 阅读量: 实用文档 文档下载
- 电子元器件应用手册推荐度:
- 相关推荐
1 of 38
绪论
Dallas SHA iButton? (DS1963S) 是一个智能令牌具有很高的安全性并支持多种服务本文简要介绍了使用SHA iButton 实现数字认证和交易的应用并以一个示范服务程序为例来具体说明安装服务数据和处理电子交易的步骤本文还论述了主要API的调用方法介绍了命令注释列表和实现各种API的数据流程
SHA iButton适用于多种应用
批量运输
电子门锁
门镜控制
计算机和网络访问控制
电话付费
停车计费器
预付费表
自动售货机
软件授权
什么是
SHA
SHA安全散列算法经过加密专家多年来的发展和改进已经成为公认的最安全并被广泛使用的散列算法之一在SHA iButton Dallas Semiconductor的型号为DS1963S中实现的SHA 算法是SHA-1它符合联邦信息发行标准180-1即FIPS 180-1杂散函数可以简单的理解为
取一串输入码称为预映射或信息并把它转化为固定的较短长度的输出序列称为散列值
信息摘要或信息认证代码的过程由于SHA是对压缩后的信息摘要进行检查它对检测输入序列中的错误或变化是非常有效的单向散列函数的特征是产生摘要容易但从给定的摘要反求出输入信息非常困难单向散列函数的安全性就在于其产生摘要的操作过程具有较强的单向性在输入序列中嵌入密码任何人在不知道密码的情况下都不能产生正确的摘要从而保证其安全性SHA将输入流按照每块512位64个字节分块并产生20个字节被称为信息认证代码MAC或信息摘要的输出如果输入长度不是512位算法就把它凑成最接近于512的整倍数值下图说明了由多个输入块512位产生最后的MAC的链状图
应用笔记 157
SHA iButton API 概述iButton是Dallas Semiconductor的注册商标
AN157 2 of 38 SHA 计算器把输出 MAC 存入
暂存器 Dallas SHA iButton DS1963S 中的SHA
Dallas SHA iButton
DS1963S 在专门的快速电路中执行SHA-1
计算它可以在1ms 之内完成一次SHA-1计算SHA-1引擎的输入被限制为一块通过设计SHA-1引擎的输入数据块包括存储在读/写数据页32
个字节暂存器中的用户数据15
个字节和服务供应商预装在不可读取的加密页中的密钥8
个字节参见图1计算结果MAC 保存在暂存器中用于后续操
作由于对特定SHA 操作的依赖性该输出MAC 在通过外部访问的暂存器中不一定要隐藏起
来
SHA iButton 中MAC 生成器 图1
SHA iButton 的特性 SHA iButton 是一个只需最少硬件就能访问大约4k 位读/写数据的载体通过激活集成的512位SHA-1引擎算出基于器件内存储信息的160
位的信息认证代码
MAC 数据依照1-Wire ?协议串行传输该协议只需一根数据连线和一根地线每个SHA iButton 利用其相应的密钥和页计数器能够同时服务于8个独立的应用中SHA iButton
也可以作为协处理器保护系统密钥的安全也可以协助本地交易主机计算用户令牌认证和确认应用数据所需要的MAC SHA iButton 和其它iButton
一样有附加的存储区域
称为暂存器
向存储器写数据时用作缓冲器SHA iButton 的暂存器还用于向SHA-1引擎注入数据段或接收/比较信息认证代码向iButton
写数据的时候
数据首先被写到暂存器中
在这里
数据能被读回并验证是否有通信错误
数据被验证之后
复制暂存器命令把数据传到目标存储器位置这一过程在没有可靠的电接触环境下可以确保数
据的完整性
DS1963S SHA iButton
有如下特殊性能
4096位可读/
写的非易失存储器分成16
页每页256位
16个存储页中的8个有独自的64位密钥和32位只读可回溯写次数计数器 内置512位SHA-1引擎
作为用户令牌器件能同时支持8个独立的服务
可用作协处理器存储系统密钥和计算用户令牌认证确认应用数据所需要的MAC
1-Wire 是Dallas Semiconductor 的注册商标
AN157
3 of 38
SHA iButton 存储器图
通用的读/写访问数据存储器16页每页32个字节 页码
地址范围 (TA1 TA2)
密钥号 计数器值 计数器递增
0 0000H
至 001FH 0 0
无 1 0020H 至 003FH 1 1 无 2 0040H 至 005FH 2 2 无 3 0060H 至 007FH 3 3 无 4 0080H 至 009FH 4 4 无 5 00A0H 至 00BFH 5 5 无
6 00C0H
至 00DFH 6 6 无 7 00E0H 至 00FFH 7 7 无 8 0100H
至 011FH 0 0 写数据时
9 0120H 至 013FH 1 1 写数据时 10 0140H 至 015FH 2 2 写数据时 11 0160H 至 017FH 3 3 写数据时 12 0180H 至 019FH 4 4 写数据时 13 01A0H 至 01BFH 5 5 写数据时 14 01C0H 至 01DFH 6 6 写数据时 15 01E0H 至 01FFH 7
7 写数据时
不可读取不可读取的加密存储器的加密存储器
八个64位密钥
页码
地址范围 (TA1 TA2)
说明
16 0200H 至 0207H 密钥 0
0208H 至 020FH 密钥 1 0210H 至 0217H 密钥 2 0218H 至 021FH 密钥 3 17 0220H 至 0227H 密钥 4 0228H 至 022FH 密钥 5 0230H 至 0237H 密钥 6 0238H 至 023FH
密钥 7
值得注意的是只有向第8到第15页写数据时页计数器才会递增在特定操作中一对匹配数据页共用一个计数器和密钥例如第0页和第8页共用0号计数器和0号密钥向第8页写数据时0号计数器增1而向第0页写数据时对0号计数器没有影响在第0页或第8页执行Read Authenticated Page 读鉴别页命令时都将返回0号计数器的值计算MAC 都将使用密钥0
AN157
4 of 38
只读计数存储器
九个32位计数器
页码
地址范围
(TA1 TA2)
说明
0260H 至 0263H 第8页的写次数计数器 0264H 至 0267H
第9页的写次数计数器
0268H
至 026BH 第
10页的写次数计数器
026CH 至 026FH 第11页的写次数计数器 0270H 至 0273H 第12页的写次数计数器 0274H 至
0277H 第13页的写次数计数器 0278H 至 027BH 第14页的写次数计数器 19
027CH 至 027FH
第15页的写次数计数器 0280H 至 0283H 密钥0的写次数计数器 0284H 至 0287H 密钥1的写次数计数器 0288H 至 028BH 密钥2的写次数计数器 028CH 至 028FH 密钥3的写次数计数器 0290H 至 0293H 密钥4的写次数计数器 0294H 至 0297H 密钥5的写次数计数器 0298H 至 029BH 密钥6的写次数计数器 20
029CH 至 029FH
密钥7的写次数计数器
21 02A0H 至 02A3H
PRNG 计数器 (SHA 引擎实现计数)
在电子付费应用中使用SHA iButton
SHA iButton 既可以用作用户令牌又可以用作协处理器协处理器可以完成交易会话期间的器件认证和验证应用数据所需要的MAC 计算无需执行SHA 计算代码有效缩短了开发周期把SHA iButton 用作协处理器的另一个好处是可以把系统密钥存储在钮扣内而钮扣不能够被检测也就不会泄漏密钥在本文中我们假设SHA iButton 协处理器用于本地主机执行必要的器件认证和服务数据验证本文将用到的一些术语定义如下
本地主本地主机机包含必要组件的硬件单元它能利用用户SHA iButton 或其它ePurse 令牌完成电子交易从功能上讲本地主机包含三个关键部件交易控制单元典型的微处
理器
诸如显示器和令牌接收器的用户接口协处理器
地址编码AN ROM ID 注册号序列号可替代使用代表DS1963S 或其它任何1-Wire 器件内部由工厂激光刻入的全球唯一的64位码
AN157
5 of 38 交易控制单元TCU 在协处理器和用户令牌之间进行通信的组件
典型的微处理器
实现器件认证和服务数据验证
系统认证密钥主认证密钥可替代使用安装在协处理器中的密钥用于鉴别用户器
件
器件认证密钥安装在用户iButton 中的密钥
本地主机可以验证其是否属于该系统
通过绑定系统认证密钥与用户器件的地址编码保证了每个用户器件认证密钥的唯一性
系统签名密钥主签名密钥可替代使用代表安装在协处理器中用于签名和验证服务
数据的密钥
签名
由服务数据
系统签名密钥和其它服务或器件指定数据计算出的信息认证代码
MAC 签名通常嵌入于服务数据页中
使本地主机能快速地验证服务数据
器件数据用户数据应用数据账户数据交易数据代表诸如访问控制或电子付费
应用的服务数据
用户器件用户令牌
数字认证或电子付费应用中服务数据的数字载体
本文凡是提
到用户器件或用户令牌时都指
DS1963S SHA iButton
协处理器
本文协处理器是一个计算单元
能够完成交易过程中所必要的MAC
计算
服务安装
为了使用器件认证和数据验证的SHA iButton 必须在协处理器和用户iButton 中安装适当的数据和密钥
这个过程通常被称为服务初始化协处理器内装有两个密钥系统认证密钥和系统签名密钥系统认证密钥用来对每个用户器件建立唯一的认证密钥和验证用户器件是否属于该系统系统签名密钥用于产生签名和验证服务数据的有效性用户iButton 内只需安装一个密钥唯一的器件认证密钥值得重视的是用户器件SHA iButton 的认证密钥是唯一的它与
系统认证密钥不同
利用用户的器件地址作为计算器件密钥输入的组成部分
服务数据有两类
静态的和动态的
静态服务数据在交易期间从不发生改变而动态服务数据
在每次交易的过程中总是进行更新比如用于办公室或饭店的访问控制的服务数据含有定时的访问特权信息这些数据需要进行验证但同步处理器本地主机不对它进行修改另一方面自动售货机或停车计费器则需要从账户借记适当的金额并对减少后的余额数进行再次数字签名
使其能够被其它本地主机加以验证如果系统只是要知道一个用户器件是否属于该
系统
经授权的用户
而不必根据服务数据的内容确定是否交易
就不必保护服务数据
AN157
6 of 38 总的说来
电子付费系统包含以下步骤
对于服务安装
1 把系统认证密钥安装到SHA iButton 协处理器
2 把系统签名密钥安装到SHA iButton
协处理器
如果需要数据保护
对于每个用户器件
3 把用户器件认证密钥安装到用户SHA iButton
4 把有签名的服务数据安装到用户SHA iButton
如果需要数据保护
对于处理交易
5 使用SHA iButton 协处理器完成用户器件认证
6 使用SHA iButton 协处理器完成用户数据验证
如果需要数据保护
器件认证
为了认证用户SHA iButton TCU 会请求协处理器计算一个随机质询1并将其送回用户
iButton 请求它利用Read Authenticated Page 命令计算应答MAC 用户iButton 利用质询
服务数据自身的地址编码及其认证密钥计算应答
MAC 然后本地主机读取该应答
MAC 并与它随后的
计算进行比较为了验证应答
MAC TCU 会请求协处理器利用用户器件地址编码和系统认证密钥首先重新计算用户iButton
唯一的器件认证密钥随后TCU 请求协处理器利用重新计算的器件认证密钥和发送给用户iButton 的质询码计算MAC 协处理器计算出的MAC 再和从用户iButton 读取的应答MAC 进行比较以确定用户器件是否合法
这两步处理过程是必要的因为本地主机不能读取用户器件的密钥而且用户器件认证密钥与系统认证密钥不同值得注
意的是器件认证只需要用户器件携带有正确的认证密钥
并不关心服务数据的内容
服务数据保护
服务数据保护可以通过嵌入系统产生的服务数据MAC 签名实现利用系统签名密钥服务数据
服务数据页码页计数值和用户器件地址编码产生签名利用签名可以检测出任何未经授权的变动防止重放服务数据为了验证服务数据TCU 会令协处理器用系统签名密钥和所有运行期间获得的服务用户器件数据重新计算MAC
签名然后MAC 将与嵌入的签名进行比较以确定数据的有效性
对于动态数据服务而言服务数据更新后将计算一个新的签名来
反映数据变更和新的页计数值这个新的签名将嵌入到服务数据
并保存到用户器件中
1该质询从某中意义上讲是动态的是因为它受SHA 引擎计数值的影响每次运行SHA 引擎计数器都会递增而且用户iButton 不可能收到同一质询两次关于产生质询和密钥更详细的资料参见
AN152
AN157
7 of 38 静态数据服务 静态数据服务只需进行器件认证和服务数据验证
以便做出服务的决定器件认证代表验证用户器件是否属于系统的过程
器件认证在特定的访问控制应用中也许是唯一需要的手续实现
器件认证的方法多种多样a 读取器件的地址编码AN 搜索数据库查看其是否属于系统b
执行一次质询和应答过程检测器件是否带有有效密钥c 其它方法SHA iButton 用第二种方法认证器件在这种质询与应答方法中
本地主机请求用户器件根据其隐藏的认证密钥与密钥相链接的存储数据和本地主机提供的质询码计算一个应答MAC 用户器件从不向外泄漏它的密钥这种认证机制使得系统非常安全尤其是在本地主机与用户器件之间的通信链路不
安全的情况下更有益此外
对于用户器件的每次服务请求本地主机都发出不同的质询使每次应答MAC 均不相同
这就使得截取的通信数据位毫无用途
完成静态数据服务的典型步骤如下参见图
2
1 从用户iButton 读取地址编码AN
2 如果不是SHA iButton 则转到其它决定过程
3 通过质询和应答过程认证用户iButton 如果用户iButton 不属于系统则退出
4 需要验证服务数据吗
如果不需要
则提供服务
5 核对服务数据是否有效无效则退出
6 提供服务
静态数据服务判定树 图2
吗 吗
AN157
8 of 38
动态数据服务
除了在执行静态数据服务时的认证和数据验证外利用动态数据的服务还需要额外的步骤来更改服务数据重新建立签名和把重新签名的数据保存到用户iButton
典型步骤概括如下
1 从用户iButton 读取地址编码AN
2 如果不是SHA iButton 则转到其它决定过程
3 通过质询和应答过程认证用户SHA iButton 如果用户SHA iButton 不属于系统则退
出
4 服务数据是否允许提供被请求的服务不允许则退出
5
执行服务数据验证如果无效则退出
6 更改服务数据并建立新的签名
7 把有签名的新服务数据存储到用户iButton
8
再次执行用户器件认证以确保用户器件中的原始服务数据被更新
9 提供服务
动态数据服务判定树 图3
吗
的服务吗
AN157
9 of 38 寄主多重服务
可以利用1-Wire File Structure OWFS 2来促成一个用户iButton 中共存多重服务 每种服务
数据存储在自身的服务文件中为便于存取
多个文件按照目录表排列本地主机在目录列表中为一次服务读取文件入口地址获取实际页的位置和用于服务的页数实际服务数据取自服务文件
特殊的文件可以存储在协处理器和其它iButton 中把它们当作特殊器件进行验证例如我们在SHA iButton 中建立了一个名为COPR.0的文件并把它当作协处理器进行验证而且把完成一次交易的TCU
所必须的全部数据存于该文件中我们可以在iButton 中建立另一个名为COLL.102的文件把它作为移动数据收集器进行验证移动数据收集器有权从本地主机获得数据随后转储到中央数据库中当交易控制单元TCU 开始工作的时候它从协处理器iButton 读取信息准备处理交易当TCU 检测到有数据集合器与其连接时将执行必要的验证输出被请
求的数据
协处理器文件
向DS1963S SHA iButton 中安装适当的系统密钥和数据可将其配制成协处理器对于没有数据
验证的静态数据服务协处理器中只安装了系统认证密钥而动态数据服务或者需要数据验证的静态数据服务则必须在协处理器中安装系统认证密钥和系统签名密钥协处理器也能执行认证用户iButton 和验证服务数据所必须的全部MAC
计算
在我们的示范中在SHA iButton 中建立了一个充当协处理器的协处理器文件
COPR.0COPR.0包含了交易控制单元为处理交
易所必须的全部数据
协处理器文件数据结构3 表1
协处理器文件COPR.0 的结构
字节数
抽样资料 备注
服务数据文件名 5 DLSM.102 只保存基本名(DLSM)和扩展名而不保存
分隔符.
扩展字节按照十六进制数保存66H=102 d
签名页码 1 8 合法的选择是第0页或第8页第0页用做
文件目录表
认证页码 1 7 从足够高的页码开始为存储文件留出足够
的页
工作空间页码 1 9 在交易过程中是协处理器建立用户器件唯
一的认证密钥所必需的
2 1-Wire File Structure OWFS 为驻留在包括iButton 在内的1-Wire 器件中的数据提供目录结构当它们在其它文件系统允许随机访问命名后的文件按照OWFS 的定义和规则利用容量达16M 字节的器件足以存储嵌套目录中的多重文件这些器件被组织为2…65535页每页32…256个字节关于OWFS 结构和配套支持的详细信息参见Dallas Semiconductor/Maxim 应用笔记114
3在执行服务的示范中所有的数据字节按照最低有效位在前写入
AN157
10 of 38 协处理器文件COPR.0 的结构
版本号 1 1 服务供应商利用版本号跟踪服务配置的变
化
安装数据代码
4 04 0E 00 63H 安装代码按照M D YY 格式存储YY = 1900年以后的年份比如4/14/1999 = 04 0E 00
63
器件认证密钥绑定数据
39 39FFH
字节 服务供应商用它将认证密钥绑定到用户SHA iButton 该数据块的前32个字节写到数据页剩下的 7个字节在计算器件认证密
钥时写到暂存器中暂存器实际上包括15
个输入到SHA 引擎的字节其余8个字节
是页码1个字节和不带有CRC 校验字节
的器件地址编码
服务签名代码 3 3 00H 字节 该数据是写到暂存器中用来建立服务数据
签名的15个字节的一部分其余的12个字
节是页码1个字节
页计数值4个字节和不带有CRC 校验码的器件地址编码
7个字节
Provider name length (svcNameLen)
1 20 服务供应商名字的长度可调节
Signature length (signLen) 1 20 用户账务页中签名块的长度这个值可以缩
短以便为其它数据辅助数据留出空间
Auxiliary data length (auxDataLen) 1 0 辅助数据块的长度可调长度为零意味着
没有附加数据
服务提供者的名字 20 Dallas Semiconductor 服务供应商的名字或说明它的长度受
Provider name length 限制
签名初始值 20 20 00H 字节 初始数据块的长度必须与上述Signature
length 匹配这些字节被置位替代用户数据
页的签名块以建立数据签名
辅助数据 0
辅助数据的长度必须与上述Auxiliary data length 匹配
加密算法代码 1 0 用来说明为保护文件内容所采用的加密或
者编码机制类型的标志
DS1961S 标志 1 0
一个用于说明为协处理器安装密钥是否作了适当截取以便配合DS1961S 使用的布尔
标记
字节总数 100
AN157
11 of 38 值得注意的是COPR.0
的长度随三个长度参数的不同而不同
这三个参数是Provider Name Length Signature Length 和Auxiliary Data Length 提供这些参数是为了允许提供附加的定制性能这些性能是软件支持的但需要由COPR.0
文件中的数据激活
服务数据文件 在应用的示范中我们在每个用户SHA iButton 中都建立了一个服务文件DLSM.102并把它作为用户iButton
识别文件DLSM.102
包含如下数据
服务文件数据结构 表2
服务文件DLSM.102
的结构
字节数 抽样数据 备注
数据类型码 1 0 该域可用于进一步说明交易数据的类型例如0
表示动态数据1表示静态数据等等
服务数据签名
20 [计算值]
由本地主机计算 乘法器/转换系数 2 8B48H 该数据可以用来把一个数值转换为另一个数
值在本服务示范中我们安装了美元的国际
流通代码和从美分转换为美元的转换系数
0.01特殊格式通常由服务确定
账目余额
3 01 86 A0H 100000分 $1000 交易 ID 2 1234H 交易ID 可以将更多的参考数据与交易链接到
一起
字节总数 28
值得注意的是文件内容有28个字节但实际要以下面的格式存储32个字节更多的信息参见AN114
文件长度 (1字节) 文件内容 (28 字节) 文件延续指针
(1 字节)
CRC-16 (2 字节)
本地主机检测用户SHA iButton 时它从用户SHA iButton 的目录列表中读取文件DLSM.102的页码在我们的服务示范中是13使用与第13页相关的密钥密钥为5进行器件认证
AN157
12 of 38 安装服务数据 在处理任何交易之前必须把适当的服务数据和密钥安装到协处理器和用户iButton 中 也可以看作是器件的初始化过程静态和动态数据服务都需要器件认证如果服务采用动态数据如
电子付费应用需要在每次交易中验证和更新服务数据协处理器将包含两个系统密钥一个用于认证
另一个用于验证服务数据并对服务数据再次签名除非系统签名密钥一定安装到0号密钥中
安装两个系统密钥的步骤是相同的通常使用不同的输入数据
片断
计算在用户器件端通过在服务数据页嵌入一个由服务数据和系统签名密钥计算产生的签名可以保
护服务数据把服务安装到协处理器和用户SHA iButton
中的基本步骤如下所述以下给出了
详细的说明
对不需要数据验证的服务
1 把系统认证密钥安装到协处理器中
2 通过将系统认证密钥绑定到用户iButton 地址编码和服务数据页码在用户iButton
中安装一个唯一的器件认证密钥
3 向用户iButton 写服务数据
如果需要的话
对需要数据验证的服务
1 把系统认证密钥安装到协处理器中
2 把系统签名密钥安装到协处理器中
3 通过将系统认证密钥绑定到用户iButton 地址编码和服务数据页码在用户iButton
中安装一个唯一的器件认证密钥
4
利用系统签名密钥
服务数据
服务数据的页码和写次数计数值以及用户器件地
址编码计算签名
5 在服务数据中嵌入签名并把它写入用户iButton
SHA iButton 中密钥的产生
把密钥安装到SHA iButton 中需要把数据
片断更多的信息参见AN152写到指定页和暂存器用数据计算MAC 把选定的MAC 字节复制到目标密钥内参见图
4不要直接写入密钥通过片内SHA 引擎产生的密钥允许几个用户共同参与密钥的安装过程
称为密钥分摊如果
没有其它用户的参与任何单个用户都不能再生系统密钥这个过程有效地减小了密钥泄漏的风险从N 个片断partials[k]k=0至N-1产生系统密钥的流程参见图5每次迭代计算MAC
时利用两个数据源47个输入数据字节其中32个字节写入数据页15个字节写入暂存器
和密钥的当前内容8
个字节密钥用下次迭代之前刚刚计算出的新的MAC 进行更新循环的初始k=0密钥设置为一个空值因为每一次迭代都为下一次计算产生一个新的密钥
所以
最后的系统密钥是上述所有输入片断的函数
除系统签名密钥必须安装到协处理器的0
号密钥即
cSignSecretNum=0以外上述流程对系统鉴别密钥和系统签名密钥的计算同样适用
执行通用函数installSystemSecret 可以把来自多个片断的系统密钥安装到SHA iButton 中详细内容见第0
章
AN157
13 of 38
SHA iButton 中产生的密钥 图4
使用密钥共享产生系统密钥 图5
服务示范
我们的服务示范是将账目余额计入借方的一次电子付费服务每次交易都要重新签名值得注意的是器件认证不仅要验证服务数据页而且还包括与用户iButton 中服务数据页有关的器件认证密钥对于服务数据签名系统的一般签名密钥存在协处理器中而不是存在用户iButton
中
因此
我们可以只用一个数据页和一个密钥来控制电子付费应用服务数据页和与之相匹配的
器件认证密钥
本服务示范中用到的符号和变量概述如下以供参考值得注意的是在多服务寄主器件中每个用户iButton 的服务数据页码即uSignDataPage 和认证密钥号uAuthSecretNum
可以不同
完成后20个置于暂存器中这样命令可以把它复制到密钥页
用到的命令
Compute First Secret, k=0 Compute Next Secret, k>0 下一次迭代开始前利用的放置在暂存器中的局部页
k 从0循环结束
AN157
14 of 38 在用户SHA iButton
中用到的页如下
协处理器SHA iButton 中用到的页如下
变量和数值列表 表3 变量列表 变量
服务示范取值 说明 cAN
协处理器iButton 地址编码 uAN
用户iButton 地址编码 cAuthDataPage
7 系统认证数据页在协处理器中 cAuthSecretNum
7 系统认证密钥号在协处理器中 cSignDataPage
8 系统签名数据页在协处理器中 cSignSecretNum
0 系统签名密钥号在协处理器中 uAuthDataPage
13 用户器件认证数据页 uAuthSecretNum
5 用户器件认证密钥号 uSignDataPage
13 用户iButton 中的服务数据页码 svcName Dallas
Semiconductor 器件供应商的名字需要的时候在右侧填补字节00H
AN157
15 of 38 变量列表
变量
服务示范取值 说明 nAuthPartials
1 计算系统认证密钥的片断的数量 nSignPartials
1 计算系统签名密钥的片断的数量 authPartial[j]
j=0 至 nAuthPartials-1
47FFH 字节 计算系统认证密钥的片断每个矩阵元素中有47个字节其中32个字节写到数据页中另外15个字节写到暂存器中 signPartial[j]
j=0 至 nSignPartials-1
47FFH 字节 计算系统签名密钥的片断每个矩阵元素中有47个字节其中32个字节写到数据页中另15个字节写到暂存器中 authBind
39 00H 字节 器件认证密钥的绑定数据39个字节的数据块用于把系统认证密钥绑定到用户器件前32个字节写入数据页剩下的7个字节写入暂存器以计算器件认证密钥 signCode
3 00H 字节 用于产生服务数据签名的3个字节代码 signInitial
20 00H 字节 计算服务数据签名的初始值 uData
服务数据页内容 TA1, TA2, ES
器件地址和状态寄存器 uSignDataPageWCC
服务数据页的写次数计数在用户iButton 中 (=uAuthDataPageWCC ) cFileName
COPR.0 协处理器文件名存储在协处理器中 uFileName
DLSM.102 服务文件名存储在用户iButton 中 wkDataPage
9 协处理器中工作空间数据页码 wkSecretNum
1 工作空间密钥号在协处理器中
在协处理器中安装系统认证密钥 下面列出了在SHA iButton 中安装系统鉴别密钥的命令时序和数据流执行API 函数
installSystemSecret 的细节问题见附录A
AN157
16 of 38 在协处理器中安装系统鉴别密钥 图6
为了在协处理器中安装系统认证密钥要用到API
s=installSystemSecret(cAN,cAuthDataPage, cAuthSecretNum, nAuthPartials,authPartial)
s=eraseDataPage(cAN,cAuthDataPage)
调用eraseDataPage 具体实现在第0节将删除最后一个写到协处理器中的片断防止其泄漏
请注意为简单起见本文的API 调用列表忽略了所有的误码校验和重复迭代在实际应用中每次调用返回的状态都应进行误码校验并进行适当的重复迭代例如在协处理器中安装具有适当误码校验和重试功能的系统认证密钥的程序类似于以下代码
// iteration count limit
loopLimit = 5
计算密钥MAC [Compute First Secret]如果[Compute Next Secret]如果向暂存器写入空字节准备复制密钥[Write Scratchpad] 协处理器 系统认证密钥被安装到协处理器cAuthSecretNum (=7) 的密钥中 片断被写到cAuthDataPage (=7) 页和暂存器用于计算密钥
AN157
17 of 38 s=1
loop=0
do while (loop
// the call returns 0 if no error
s=installSystemSecret(cAN,cAuthDataPage, cAuthSecretNum, nAuthPartials,authPartial) loop=loop+1
end loop
// quit if we still have errors after preset number of tries
if(s<>0) then
exit
end if
s=1
loop=0
do while (loop
// the call returns 0 if no error
s=eraseDataPage(cAN,cAuthDataPage)
loop=loop+1
end loop
// quit if we still have errors after preset number of iterations
if(s<>0) then
exit
end if
…continue …
在协处理器中安装系统签名密钥
在SHA iButton
中安装系统签名密钥的命令时序和数据流与安装系统认证密钥的过程一样只
是片断
目标数据页和目标密钥系统签名密钥必须装到密钥0中
不同
为了在协处理器中安装系统签名密钥用到了API
s=installSystemSecret(cAN,cSignDataPage, cSignSecretNum, nSignPartials,signPartial) s=eraseDataPage(cAN,cSignDataPage)
协处理器 系统签名密钥安装到协处理器的cSignSecretNum (=0)
密钥中 片断写到cSignDataPage (=8) 页和暂存器
中用来计算密钥
AN157
18 of 38 值得注意的是系统签名密钥必须安装到密钥
cSignSecretNum=0
中与它相匹配的数据页cSignDataPage 或者是0或者是8在我们的服务示范中第0页用作OWFS 目录所以我们用cSignDataPage
=8
在用户iButton 中安装器件认证密钥
为了安装用户iButton
的器件认证密钥首先要把系统认证密钥安装到用户iButton 中secretAuthSystem 然后由系统绑定数据bindData 系统认证密钥
secretAuthSystem 服务数据页码uSignDataPage 和用户iButton 的地址编码uAN 计算出唯一的器件密钥用户iButton 的地址编码使得器件认证密钥对iButton 来说是唯一的下面列出了这两个步骤第二
步执行了详细内容见第0
节一个API
bindSecretToiButton
绑定器件和服务数据以产生器件认证密钥
用户iButton Auth Secret 步骤1 系统认证密钥(secretAuthSystem ) 安装到用户iButton 的密钥中uAuthSecretNum (=5)片断写到uAuthDataPage (=13) 页 和暂存器用来计算密钥
用户 iButton Auth Secret 步骤2 通过绑定系统认证密钥(secretAuthSystem ) 与服务和用户iButton 特定数据 (uAuthDataPage, uAN )把器件认证密钥(s ecretAuthDevice ) 安装在用户iButton 的密钥 uAuthSecretNum (=5) 中
AN157
19 of 38 截取绑定数据暂存器中的服务和用户器件数据可用来计算唯一的器件认证密钥
pad_bind
偏移位置
0:7 8:11 12:12 13:19 20:22 23:31 字节数
8个字节 4个字节 1个字节 7个字节 3个字节 9个字节 数据 00H bindData[32:35] uAuthDataPage uAN[0:6]
bindData[36:38] 00H
为了安装器件认证密钥使用的API
s=installSystemSecret(uAN,uAuthDataPage,uAuthSecretNum,nAuthPartials,authPartial)
s=bindSecretToiButton(uAN,uAuthDataPage,uAuthSecretNum,bindData,uAuthDataPage,uAN) s=eraseDataPage(uAN,uAuthDataPage)
计算密钥结果如果 k = 0 [Compute First Secret]
如果 k > 0 [Compute Next Secret]
使用目的密钥地址向暂存器写入空字节准备复制密钥uAuthSecretNum [Copy Scratchpad]
将截取后的绑定数据pad_bind 写入暂存器[Write Scratchpad] bindData 鉴别数据页码uAuthDataPage
用户iButton 地址编码uAN 无CRC 校验码的后个字节组成计算密钥[Compute Next Secret] MAC 放置到暂存器中使用目标密钥地址向暂存器写入空字节准备复制密钥
AN157
20 of 38 在协处理器中创建服务数据签名 服务数据签名是根据服务数据和系统签名密钥计算产生的签名可以嵌入4到服务数据页在每
次交易过程中
由本地主机进行验证例如
在我们的服务示范中我们把签名嵌入如下服务数据页OWFS 需要数据块长度后续指针和CRC-16
校验字节
在服务数据页嵌入数据签名
偏移位置
0:0 1:1 2:21 22:23 24:26 27:28 29:29 30:31 字节数
1个字节 1
个字节 20个字节 2个字节
3个字节
2个字节 1
个字节 2个字节
数据 长度值 数据类型
签名 转换系数 账务余额 传输 ID 后续指针 CRC-16
因为签名占据了服务数据页的一部分所以为了计算签名签名数据块必须初始化为一些已知值signInitial 5注意为了防止服务数据建立金额被非法复制和再利用应该用诸如器件地址编码uAN 服务数据页的页码uSignDataPage 和写次数计数值uSignDataPageWCC 等器件的特殊数据作为输入进行签名计算如果禁止复制服务数据把服务数据安装到具有写次数计数器的页中也很重要该计数器在每次写操作时都会递增产生服务数据签名的过程是在API createDataSignature 中实现的详细内容见第0节
// create signature, the passed uData_ini has the signature block initialized to signInitial
sig = createDataSignature(cAN,cSignDataPage,cSignSecretNum,uData_ini,signCode,
uAN,uSignDataPage,uSignDataPageWCC)
被截取的签名数据块pad_signCode
偏移量 0:7 8:11 12:18 19:19 20:22 23:31 字节数
填补8个字节 4个字节 7个字节
1个字节 3个字节 填补9个字节 数据 8个00H 字节 uSignDataPageWCC+16
uAN[0:7] uSignDataPage signCode 9个00H 字节
4注意签名还没有嵌入到服务数据页它可以存储到单独的页中这样可留出32个字节空间存储原始的服务数据
5如果签名没被嵌入到32个字节的服务数据页中就不必进行初始化
sig=createDataSignature(cAN,cSignDataPage,cSignSecretNum,uData,signCode,uAN,uSignDataPage,
uSignDataPageWCC)
6已签名的服务数据写入到服务数据页后WCC+1就成为其新的写次数计数值因为每次向页中写入数据写次数计数器的值都会增1在第8到15页
AN157
21 of 38
[Write Scratchpad]
signCode uSignDataPageWCC
uAN 无校验码 组成[Sign Data Page]计算出的置于暂存器MAC [Read Scratchpad]
协处理器
服务数据签名根据以下数据计算而来 初始化的服务数据(uData_ini ) 系统签名密钥 ( cSignSecretNum =0时) 系统签名代码 (signCode )
用户 iButton 地址编码uAN (无CRC 校验
码)
服务数据页码 (uSignDataPage) 和它的写
次数计数值
(uSignDataPageWCC)
签名数据块
正在阅读:
电子元器件应用-使用SHA iButton实现数字认证和交易的应用04-10
制冷技术试卷-A09-20
浅析中学语文古诗词鉴赏02-27
中国餐饮业制服行业市场前景分析预测报告(目录) - 图文12-21
财务开支授权审批与报销制度09-11
商法选择题12-20
市派驻村干部总结范文08-03
- 教学能力大赛决赛获奖-教学实施报告-(完整图文版)
- 互联网+数据中心行业分析报告
- 2017上海杨浦区高三一模数学试题及答案
- 招商部差旅接待管理制度(4-25)
- 学生游玩安全注意事项
- 学生信息管理系统(文档模板供参考)
- 叉车门架有限元分析及系统设计
- 2014帮助残疾人志愿者服务情况记录
- 叶绿体中色素的提取和分离实验
- 中国食物成分表2020年最新权威完整改进版
- 推动国土资源领域生态文明建设
- 给水管道冲洗和消毒记录
- 计算机软件专业自我评价
- 高中数学必修1-5知识点归纳
- 2018-2022年中国第五代移动通信技术(5G)产业深度分析及发展前景研究报告发展趋势(目录)
- 生产车间巡查制度
- 2018版中国光热发电行业深度研究报告目录
- (通用)2019年中考数学总复习 第一章 第四节 数的开方与二次根式课件
- 2017_2018学年高中语文第二单元第4课说数课件粤教版
- 上市新药Lumateperone(卢美哌隆)合成检索总结报告
- 应用
- 元器件
- iButton
- 认证
- 实现
- 数字
- 使用
- 交易
- 电子
- SHA
- 详析Accountability与Responsibility的区别
- 帕罗斯大海海滨公寓酒店(La Mer Seaside Apartments)
- 2022年日照市中医执业医师《方剂学》理气剂试题(五)
- 吉林省梅河口市博文学校2022-2022学年高二上学期期末考试生物试
- 当代大学生对于时事政治持何态度
- 白色铝板检验报告加图标版
- 安全标准化合格班组台账(供参考)
- 第四代移动通信的研究毕业论文
- 宁夏石嘴山三中2022-2022学年高一上学期期中物理试卷 Word版含解
- 【配套K12】江苏省丹徒区2022中考物理复习 欧姆定律学案(无答案)
- 2022年北京大学新闻与传播学院620传播学综合知识之传播理论:起
- 2022年家庭农场发展调研报告
- 入职十年感言简短2022
- 西南师大版三年级语文下册《四单元 18 奇妙的桥》教案_11
- 秋奥鹏东师《小学数学教学论》期末考核答案
- 2022年哈尔滨商业大学公共经济学(同等学力加试)复试实战预测五套
- 重庆市铜梁中学校2015届高三下学期模拟测试(一)政治试题(艺术班)
- 建筑工程施工裂缝及防渗质量通病防治技术措施正式样本
- 2010-2015年中国汽车租赁行业市场全景调研及投资评估深度研究报
- 2022,新部编,人教版,二年级上册,语文,第一.二.三.四单元,测试卷,