摘要:讨论数据安全性时常常比较关注加密方式,而更有说服力、更有价值的方法则是认证。本文介绍了一种直接针对硬件、数据和用户的认证技术,本文对采用该项技术的1-Wire安全散列算法1 (SHA-1)器件进行了概要描述,并在文章的最后还给出了其他资料、工具包、实例作为参考,以方便后续的研究和开发。
简介安全性是所有数字领域都普遍考虑的一个问题。当大家讨论数据安全性时通常关注的是加密方式,而更有说服力、更有价值的方法则是认证。由于所有的信息和通信都可归结为1和0,因此合法性和认证便成为问题关键所在。本文介绍了一种直接针对硬件、数据和用户的认证技术,本文对采用该项技术的1-Wire®安全散列算法1 (SHA-1:Secure Hash Algorithm 1)器件进行了概要描述,并在文章的最后还给出了大量的其他类型的文件、工具包、实例作为参考,以方便后续的研究和开发(专用术语、命令和代码将用斜体字表示,常用术语请参考应用笔记1099:“White Paper 4: Glossary of 1-Wire SHA-1 Terms”。)
散列散列是信息的提炼,通常其长度要比信息小得多,且为一个固定长度。加密性强的散列一定是不可逆的,这就意味着通过散列结果,无法推出任何部分的原始信息。任何输入信息的变化,哪怕仅一位,都将导致散列结果的明显变化。,这称之为雪崩效应。散列还应该是防冲突的,即找不出具有相同散列结果的两条信息。具有这些特性的散列结果就可以用于验证信息是否被修改。
MACMAC (信息认证代码)就是一个散列结果,其中部分输入信息是密码,只有知道这个密码的参与者才能再次计算和验证MAC码的合法性。MAC的产生参见图1。
图1. MAC的产生
通过这种方法,系统的参与者(知道密码)就可以验证信息和MAC的真实性,而不用再借助加密手段就可以判别那些0和1是不是可信。这是一个强大的技术,具有深远的应用领域(参见后面的应用部分)。
对于基于散列验证的系统来说,选择一加密性能好的散列是至关重要的。SHA是不可逆的、防冲突,并具有良好的雪崩效应。SHA-1是一个联邦信息出版号180-1和180-2 (FIPS 180-1和FIPS 180-2)指定的标准,SHA-1的杂散序列在目前FIPS推荐的各种方法中,是唯一目前在实际应用的一种,SHA-1还是ISO/IEC 10118-3指定的标准。Bruce Schneier在1996年John Wiley & Sons出版社出版的Applied Cryptography, Second Edition中说到“到目前为止还没有办法来对SHA进行密码攻击”。由于这个原因,选择了SHA-1。SHA-1可接纳一个和多个512位(64字节)的数据块,并生成一个160位(20字节)的散列结果。
应用认证就是向主机证实某个器件、人和信息是有效和可靠的过程。利用MAC优点的认证技术称之为质询和响应。所谓“质询”就是由主机首先向打算认证的器件发出随机数据,随后包含在MAC计算中。这样,每次认证过程都是不同且不确定的。
什么能被认证? 答案就是如果两个设备都知道密码,则这两个设备之间的信息就可以认证。一个移动的令牌可以授权给一道门,以允许进入受控的房间。表1给出了包括主机和认证对象的潜在应用领域。
表1. MAC应用
Application | Host | Authentication Target |
Device authentication | Equipment | Peripheral device with embedded token |
Physical access control | Electronic door lock Building access Filing cabinet lock Safe |
Portable token |
User access control | Workstation | Portable token and user |
Software authorization | PC Software Equipment Firmware |
Portable, attached, or embedded token |
Electronic cash (eCash) | Vending machine Parking meter Toll booth Pay phone Gaming |
Portable token |
上述大多应用的关键部分就是移动令牌。要利用SHA-1 MAC来进行认证,一定要创建一个值得信任的客户端,来进行密码的保存和MAC的计算。这个客户端一定要在结构上是安全的、坚固的,还能快速执行SHA-1的各种操作。至今,Maxim已有十多年制造iButton®移动令牌的历史,现在,可提供与SHA-1相兼容的多种产品;还可提供不采用iButton形式,而采用芯片形式的产品(参见图2)。
图2. 1-Wire SHA-1器件
关于令牌的应用领域和使用方法,结合上下文,这里仅作简要的介绍。图3是完整的服务框图。服务提供者(例如:销售公司)把带有效数据的令牌分配给用户,用户再把这些令牌应用到服务控制单元(SCU) (例如:糖果机),并作为服务的一部分对这些令牌进行认证,使数据(电子货币、eCash)生效,并可根据需要进行更新。SCU必须也进行SHA-1 MAC计算,这可通过内部协处理器来实现。关于令牌的一些特殊应用领域、特性和SCU将在下一节进行解释说明。
图3. 服务
有两种不同的1-Wire SHA-1的令牌。DS1963S有8个不同的SHA-1的密钥和512字节的非易失性(NV) RAM用户数据空间,质优价好,DS1963S还可在SCU中用作协处理器来计算主机边全部的SHA-1 MAC,还具有额外的安全性能,可全部从SCU处理器来移去密码。用来对服务数据(主机签名密钥)和令牌认证(主机认证密码)的密码安全的保存在DS1963S的协处理器中。DS1963S中有内置锂电池为NV RAM提供备用电源,如果把该电源拿走,即使只是很短的一段时间(例如物理攻击期间),内部的密码和内容将被消除。
DS1963S可支持7个不同的动态服务记录,每个服务记录都有属于自己的密字,保留第8个密钥,用于指示协处理器类型的功能。该器件还包含8个通用的32字节的数据页,可用于静态服务记录。这些额外的数据页都有与之关联的密钥,但没有写周期计数器。写周期计数器是一个只读的、不滚动的页写计数器,可用作检测写操作。写计数可用来避免对系统的某些攻击。
为每一个服务记录,DS1963S采用两个不同的MAC。 第一个是由1-Wire令牌产生,并认证给系统使用(唯一认证密钥)。第二个MAC是由SCU主机创建的,包含在服务记录中,用来对服务数据进行确认,这个MAC也称为服务数据签名。用来创建这个签名(主机签名密钥)的密钥不保存在用户设备中,仅保存在SCU或其协处理器中。
其他两个器件,DS1961S和DS2432,本质上完全相同,仅采用两种不同的封装形式。DS1961S采用标准的iButton封装,DS2432采用小型的TSOC封装或者采用芯片级封装(2.5mm x 1.5mm)。 这两款器件采用EEPROM技术而不是非易失性RAM,这样封装内就不再需要锂电池。在这些器件中,4个分页共用一个密码。对DS1963S进行写操作没有任何限制,然而,DS1961S/DS2432的写操作则需要对这个器件进行MAC认证后才能执行,这对器件的写操作起到有效的保护作用。由于写操作只限于那些知道密钥得到认证的SCU,这些器件就没有了写周期计数器,也就无需内嵌在数据中的MAC签名。由于只有一个认证密码,DS1961S/DS2432故只能支持一个服务提供者。但是由于该器件有4个分页,因此服务提供者可以进行4种不同的服务。
注意:除了移去了附加的最后常数,1-Wire器件产生的SHA-1结果还是符合FIPS-180的规范标准。在FIPS 180-1中,器件在计算出每个数据块的值后,就在计算结果的后面加上这些常数。由于1-Wire器件仅有一个数据块,加入这些常数并没有增加任何安全性,因此就可以移去,从而加快MAC硬件的计算速度。如果一定要求符合FIPS 180-1的标准,SCU就需要在后面加上这些常数。
图3给出了1-Wire令牌有关的存储器和特殊寄存器,用于验证某个服务记录。每个令牌包含一个64位的唯一器件ID,通过激光写入ROM。由于每个器件都有自己唯一的ROM ID,这个ID就可作为密钥计算的一部分,这样就可以使每个器件上的认证密钥是唯一的(唯一认证密钥)。在验证时,像SCU这样的主机必须要根据主机认证密钥和ROM ID中来重新计算唯一认证密钥。每个器件还包括分配一个临时的存储器空间用来存放SCU发送的认证“质询”。“质询”是一个随机数据,由SCU产生,以确保每个认证序列的唯一性。页码是数据信息在存储器中的物理位置。
1-Wire器件可以获得每个字段,并通过内嵌的SHA-1进行处理,返回用于认证的MAC。SCU通过计算唯一认证密钥来获取同样的信息,用以验证MAC的正确与否。图4描述了在器件内部产生认证MAC的过程。
图4. 令牌认证
由于DS1963S的写操作没有限制,因此服务记录中就必须包含用一个服务数据签名,用于验证数据的有效性。MAC与服务数据一起保存,这样就可就保证这些数据的有效性。图5阐述了服务数据签名的产生和验证都需要些什么样的的信息。图6是SCU和DS1963S令牌的一个完整的事务处理过程,图7则给出了DS1961S令牌的事务处理过程。
图5. DS1963S服务数据确认
图6. DS1963S典型事务处理流程
图7. DS1961S事务处理流程
有许多资料可帮助我们很好地理解和实现一些基于1-Wire SHA-1硬件的系统。这些资料信息可以分成三类:理论、应用详述和API (见图8)。其中,理论知识主要讨论了如何用一些算法来保证电子货币(electronic cash)的安全,而应用详述则描述了采用1-Wire器件来完成验证和电子货币所需通信过程的每一步和每一位。API资源有助于找到合适的切入点,顺利开始使用SHA-1器件。其API源代码对于定制应用,也是一个有用的开发工具。
图8. 资料概述
表2. 理论
Electronic Cash and User Authentication using Maxim DS1963S | |
该指南详细介绍了电子支付和SHA-1 1-Wire器件的特点,从最基本内容开始,建立起密码学的基本概念,并对电子货币(eCash)系统的移动令牌的必需设备进行了说明。 | |
文件 | 使用指南(Power Point) |
Glossary of 1-Wire SHA-1 Terms | |
该文件中给出了一些与1-Wire SHA-1器件应用有关的术语,这些器件有DS1963S, DS1961S, DS2432。 | |
文件 | 白皮书4 |
Challenge and Response with 1-Wire SHA devices | |
该应用笔记描述了质询和响应的基本原理,给出了一个1-Wire SHA器件的实例,还给出了可供下载的Java™ 1-Wire API示例代码。 | |
文件 | 应用笔记190 |
SHA iButton Secrets and Challenges | |
该文件概括总结了选择一个好的密钥和真正随机质询的重要性,列举了一些避免系统出现薄弱环节的规则。 | |
文件 | 应用笔记152 |
为什么1-Wire SHA-1器件是安全的? | |
介绍了Service 1-Wire SHA-1的用法,简述了Service可能受到的攻击,以及如何利用1-Wire器件本身特点或推荐的方案来防止可能遭受的攻击。 | |
文件 | 白皮书3 |
Passwords in SHA Authentication | |
该文件介绍了一些1-Wire SHA-1器件中如何与密码或PIN配合对用户进行认证的技术。 | |
文件 | 应用笔记154 |
Information technology - Security techniques - Hash-Functions - Part 3 | |
ISO标准陈述了几种散列标准,其中包括SHA-1,这个标准接着作为其它与MAC生成相关的ISO标准的参考。 | |
文件 | ISO/IEC 10118-3标准(PDF需购买) |
Secure Hash Standard | |
联邦信息公共标准(FIPS)规定的SHA-1标准 | |
文件 | FIPS 180-1 |
Applied Cryptography, Second Edition | |
一本应用密码技术和理论的通用教科书。第18章介绍了包括SHA-1的单向散列函数。 | |
文件 | Bruce Schneier, John Wiley & Sons, 1996 (Print) |
Handbook of Applied Cryptography | |
一本极为详细地介绍了包括散列技术在内的各类密码技术信息的教科书。第9章主要介绍了散列和数据安全性。 | |
文件 | A. Menezes, P. van Oorschot, and S. Vanstone, CRC Press, 1996 (Print, PS, PDF) |
表3. 实现详述
SHA iButton 1-Wire API概述 | |
详细介绍了创建一个完整的SHA-1 eCash系统API所需的步骤。它可以指导用户如何把API添加到Maxim开发包里。 | |
文件 | 应用笔记157 |
Maxim's Digital Monetary Certificates | |
阐述了Maxim API中用来表示货币账号的标准证书数据格式,其格式包括数据和相关的MAC码的存储位置。 | |
文件 | 应用笔记151 |
SHA-1 Devices used in Small Cash Systems | |
很详细地介绍了1-Wire器件的认证和eCash事务处理的步骤,为eCash系统应用和识别提供了一个极好的的参考资料。 | |
文件 | 白皮书1 |
DS1963S SHA iButton | |
DS1963S的数据资料中包含了该器件的全部命令和工作条件。需通过申请获取该数据资料。 | |
文件 | 数据资料 |
带有SHA-1引擎保护EEPROM的1k位iButton: DS1961S | |
DS1961S的数据资料中包含了该器件的全部命令和工作条件。需通过申请获取该数据资料。 | |
文件 | 数据资料 |
1-Wire File Structure | |
该文件给出了那些符合标准的1-Wire文件结构的器件,用于API的eCash证书和Maxim提供的相关技术文档。 | |
文件 | 应用笔记114 |
表4. 应用编程接口(API)
1-Wire Public Domain Kit | |
1-Wire公共开发包是一个便携‘C’代码库,里面的例子涵盖了包括iButton在内的几乎所有的1-Wire器件,其中就包括了完成简单认证的程序和完整的eCash系统的程序。所包含的全部资源无需授权。 | |
文件 | kit (zip) |
1-Wire API for Java Software Development Kit | |
从最简单的应用到非常负责灵活的、面向对象的应用,这个面向Java的1-Wire介绍了用Java语言来设计完成1-Wire产品的基础知识,还给出了可以实现完整eCash系统的示例。全部资源无需授权就可使用,且支持J2ME (Java 2 Micro Edition)。 | |
文件 | kit (tar-aip, tgz) |
DS1963S SHA 1-Wire API 用户指南 | |
该指南解释了如何在1-Wire Public Domain 'C'和Maxim提供的面向Java 的1-Wire API中运用DS1963S eCash实现工具。 | |
文件 | 应用笔记156 |
相关型号 | ||||||||||||||||||
|