基于近场通信的物理访问控制系统设计
2022-02-15刘春静
刘春静,张 磊,周 杰
(安徽信息工程学院 电气与电子工程学院,安徽 芜湖 241000)
近场通信(Near Field Communication,NFC)是以无线电技术为基础,用一定频率的电磁辐射波通过自由空间在很短的距离内传递带有信息的信号。NFC 是一组通信协议的总称[1-2],主要目的是支持两个电子设备之间在10 cm 或更短距离内的通信。NFC 是一种低廉的、具有简单软硬件配置的低速连接方式,可以很方便地充当非接触式验证或支付系统的通信终端。NFC 通信频段为13.56 MHz,传输速率可达到424 kbps,通信建立时间小于0.1 s,电流消耗小于15 mA,使用成本大约只有蓝牙的五十分之一。
NFC 设备通常由三个部分组成,包括:1)简易且廉价的电子标签,用于存储一定容量的数据信息;2)内嵌微处理器的非接触式智能卡,能够处理协议解析、加密解密等复杂的数据操作;3)可实现NFC 通信的用户终端,如带有NFC 功能的智能手机。NFC 设备之间的通信可以是有源的,也可以是无源的。有源设备配置有自己的供电电源,而无源设备则不需要电源;无源NFC 芯片所需的能量通过磁感应从有源器件远程接收。因此,为了确保能量的供给,只能在一个有源和一个无源设备之间或两个有源设备之间进行NFC 通信。在第一种情况下,有源设备将连续产生射频(RF)信号,该射频信号被无源设备接收后作为能量来源。当两个有源设备通信时,只有发送方会产生射频信号;在整个NFC 通信过程中,发送方和接收方的角色可以交换[3-6]。
NFC 通信的模式包括三种,分别是:1)读/写模式(R/W 模式):由有源设备发送指令,无源设备回复这些指令,一般用于智能卡或模拟模式下的NFC 设备通信;2)卡模拟模式(CE 模式):NFC 设备类似于非接触式智能卡,工作于无源模式;3)点对点模式(P2P 模式):一个或两个设备都处于有源状态,且能够启动指令传输,此模式通常在两个都处于对等状态的设备之间使用。
NFC 通信被广泛应用于各种支付认证系统,涉及大量的个人隐私或商业数据,物理访问控制系统(Physical Access Conrol System,PACS)作为NFC 通信过程中约束物理资源访问的重要环节,在判断用户是否具有合法接入物理层资格的过程中扮演了非常重要的角色。
本文从PACS的基本组成出发,详细阐述了PACS的工作流程,设计了应用层上的TLS 和APDU 协议,通过搭建的原型系统测试了不同传输速率下的总接入时间,为NFC 通信设备之间物理层信息接入的性能评估奠定了研究基础。
1 PACS的基本组成
在NFC 通信系统中,PACS 由接入点(Access Point,AP)、控制器、访问控制服务器(Access Control Server,ACS)和NFC 终端四个部分组成,如图1 所示。接入点是指用户通过NFC 终端接入设备的物理实体,如装有NFC 读卡器的电子门禁;控制器是指能够从ACS 接收用户身份验证、授权和配置数据,并控制一个或多个接入点行为的现场计算机或嵌入式设备,通常由服务器和数据库组成;ACS 是一台存储有用户身份数据的中央服务器,用于配置、更新控制器信息;NFC 终端是存储用户身份的电子凭证,通常搭载于银行卡、手机等便携式设备上。
图1 PACS 基本组成框图
接入点的NFC 读卡器用于支持用户终端与控制器之间的身份验证,在PACS 中扮演着十分重要的角色。根据接口类型的不同分为低级接口读卡器和高级接口读卡器,在低级接口读卡器中,允许控制器向NFC 设备发送或接收字节,由控制器负责实现认证协议;在高级接口读卡器中,读卡器执行身份认证,控制器只是从读卡器接收身份信息,而不参与认证过程
2 PACS的工作流程
PACS的安全信息架构如图2 所示,由NFC 控制器、NFC 天线和轻量级身份认证协议(Protocol for Lightweight Authentication of Identity,PLAID)小程序组成。PACS的工作流程包括系统初始化、个性化配置、身份识别与认证三个环节,具体内容阐述如下。
图2 PACS 安全信息架构
(1)系统初始化。初始化步骤在设计制造或服务提供商出售用户终端时完成,包括在硬件上安装PLAID 小程序,设置身份验证协议运行所需要的各种变量,如KeysetID、DivData 和OpModeID 等。经过系统初始化以后,PLAID 小程序可以开始正常工作。
(2)个性化配置。个性化配置是将NFC 用户终端与安全域中的特定用户绑定,绑定后的用户将获得PLAID 小程序提供的一块安全内存区域,该内存只能由已授权的合法用户访问。个性化配置的具体步骤包括NFC 用户注册、PACS 注册、身份认证/授权数据分发和信息互认证。
(3)身份识别与认证。个性化配置结束后,合法的NFC 用户终端可以接入访问控制系统使用。需要在接入点授权的用户将NFC 终端靠近NFC 读卡器,通过PLAID 协议在NFC 终端与读卡器之间执行相互认证,读卡器从PLAID 小程序中获取认证及授权数据,并发送到PACS 控制器确认,以决定是否执行授权操作。
3 PACS 协议设计
基于PACS 系统的工作流程,本文设计了该解决方案的软件协议栈。在应用层上包括安全传输协议层和应用协议数据单元层,传输层、初始化及RF 接口层由NFC的三种标准定义(NFC-A、NFC-B、NFC-F)[7]。
图3 PACS 软件协议栈
在APDU 层定义从读卡器发送到NFC 终端的C-APDU 和NFC 终端返回到读卡器的R-APDU。C-APDU 消息的字段包括:
(1)CLA 指令标志字段(1 字节):用于特定应用程序指令标志的字符串,例如文件访问、安全和支付等相关操作;当预定义的指令标志字符串不足以表示设备功能时,允许扩充自定义的指令集。
(2)INS 指令字段(1 字节)。
(3)Pn 指令参数字段:用于指定某些指令执行需要的输入参数,每个参数的字段均为1 字节,如果发送的指令不需要任何输入参数,则参数字段置零。例如,将数据写入NFC 卡的指令需要指定文件名或标识符作为参数。
(4)Lc(1 字节):用于表示数据字段的字节长度,没有数据时将Lc 置零。
(5)数据字段DATA:用于装载字节长度可变的数据,最多允许传输256 字节。
(6)Le(1 字节):用于表示对方响应的最大数据字节长度。
R-APDU 消息的字段包括:
(1)数据字段DATA:最多允许传输256 字节。
(2)状态字段SWA:用于指示C-APDU 中请求的操作是否成功。
(3)状态字段SWB:当SWA 指示出现错误时,由SWB 提供更多的错误提示信息,否则该字段设置为零。
TLS 层的功能包括三个方面:1)生成标准格式的TLS 消息并进行检查;2)维护通信状态机的正常运行,以确保在给定协议的状态下正确发送/接收数据;3)执行身份验证的加密/解密操作。RecordLayerMessage 位于TLS 层的最顶部,包含一个或多个底层消息。HandshakeMessage 包含身份验证的握手消息;ChangeCipherSuite 消息直接包装到RecordLayerMessage,是身份验证握手的一部分。为了方便软件架构的设计,RecordLayerMessage 和HandShakeMessage 类的解析/生成功能允许被底层消息(ClientHello、ServerHello、Certificate 等)继承和重用。
TLS 消息在客户端和服务器端的交互由4 个步骤组成,如图4 所示。
图4 客户端与服务器之间的TLS 消息交互
(1)客户端首先发送一个ClientHello 消息,其中包含一个自动生成的随机数和一个预定义的密码组件列表。
(2)服务器收到ClientHello 消息后将以5 条消息来响应客户端的请求,其中,ServerHello 包含服务器的询问和从客户端发送的密码组件列表中选择的内容。Certificate 消息包含服务器的X.509 证书,当证书包含的信息不足以让客户端以保密方式发送消息时,可以选择发送ServerKeyExchange。如果服务器希望对客户端进行身份验证(交互式身份验证),则会发送CertificateRequest 消息。ServerHelloDone 表示服务器已向客户端发送所有消息。
(3)接收到服务器的所有响应后,客户端首先验证所接收证书的可信性,同时,如果服务器请求,客户端将发送自己的证书。此外,客户端响应服务器的消息依次还包括ClientKeyExchange、CertificateVerify、ChangeCipherSpec,其中,ClientKeyExchange 包含一个预置主密钥,由客户端生成的随机数和TLS 版本号组成,服务器和客户端都根据Hello 消息中交换的预置主密钥和随机数计算会话过程中的安全密钥。CertificateVerify 消息向服务器提供客户端验证信息,通过使用客户端的私钥对已发送的所有数据(包括随机数/询问)进行哈希校验和加密来实现。ChangeCipherSpec 消息表示所有后续通信都将使用协商参数(具有选定密码组件和计算主密钥的安全通道)进行保护。Finished 消息是安全通道中发送的第1 条消息,它允许服务器验证当前通信是否正常工作。
(4)服务器用ChangeCipherSpec 和Finished 消息进行响应。对于服务器来说,发送Finished 消息的目的是向客户端表明它能够解密预置主密钥来进行身份验证。
4 性能测试
为了评估基于NFC的物理访问控制系统性能,我们用华硕笔记本电脑、树莓派、vivo 手机、卫鸿NFC-2020 智能卡和飞思PM8 读卡器进行了测试。所有硬件的具体指标列举如下:
(1)华硕笔记本电脑配置为Intel Core i7-8550 CPU@1.99 GHz,内存8 GByte,内置64 位Windows 10 中文版操作系统。
(2)树莓派4B的配置包括:Broadcom BCM2711 SOC、64-bit 1.5 GHz 四核CPU(28 nm 工艺)、500 MHz VideoCore VI GPU、1 GByte DDR4 内存、双Micro HDMI 端口、双USB 3.0 端口、千兆有线以太网、802.11ac(2.4/5 GHz)蓝牙5.0,同时支持H.265、H.264、OpenGL ES 和Graphics 3.0的多媒体格式。
(3)vivo 手机型号为V2046A,采用三星八核CPU,支持NFC 和OTG 接口。
(4)卫鸿NFC-2020 智能卡支持125 kHz、13.56 MHz的工作频率,符合ISO 14443 标准。
(5)飞思PM8 读卡器支持Type-C 和USB 接口,符合ISO 18092 标准。
衡量PACS 性能的主要指标有两个,一个是读卡器与手机之间传输数据所需的总时间,用符号Tt表示;另一个是软件处理时间,包括数据缓冲、协议解析、消息生成及加解密操作所需的总时间,用符号Tp 表示。为了更准确地测量时间,我们在相同的条件下反复测量100 次后取平均值,测量数据如表1 所示。从表1 中的测试数据可以看出,在不同的数据传输速率下,读卡器与手机之间的数据传输时间极小于软件处理时间,因此,最后测量的总时间没有非常明显的差异。
表1 PACS 性能测试
5 结语
通过测试NFC PACS 系统的性能,我们发现,NFC 数据传输速率的提高并不能明显降低物理层接入的时间,决定PACS 接入时间的是系统软件处理速度。因此,在不同类型的NFC 系统中,应针对具体的应用适当裁剪TLS 和APDU的协议字段,提高软件参数配置、协议解析及数据处理上的效率,才能够有效缩短物理层的接入认证时间。