基于动态密码和双向认证的安全光控门锁设计
2022-01-06陈进慧申永徐林孙晖马建军
[陈进慧 申永 徐林 孙晖 马建军]
1 引言
门锁作为普通百姓日常用品,是保障人们生活隐私和安全的必要工具。传统门锁控制方式有机械式的钥匙、电磁感应式的磁卡或磁芯,而钥匙、磁卡或磁芯均携带不方便,易遗忘,耐久性较差,安全性不高。市面上已有智能门锁可以支持密码键盘输入、指纹识别、虹膜识别、人脸识别等方式实现开锁,该类型智能门锁价格昂贵,通常需要上千元,不利于广泛普及,且功耗较高,需经常更换电池。现在市面上迫切需要一种智能、便携、快捷、低功耗和低成本的安全型智能门锁控制系统。智能终端(如智能手机)现已经成为大部分人日常人手不离的工具,它集成了上述智能门锁所需的指纹识别、人脸识别等身份认证输入和触摸屏键盘密码输入等有效开锁部件,内置闪光灯,可通过软件方式对其进行编码调制,发射光信号作为有效的开锁指令。相对传统蓝牙、WIFI 等无线方式,光控门锁优点是门锁端接收器光电探测器待机功耗低[1][2],单向点对点传输省去通信配对和握手的时间开销,指令传递更快捷。
但是当前光控门锁的用于发送开锁口令的光信号很容易被探测复制,执行非法的开锁操作。因而客观上要求光信号每次加载传输的密码不规则、不一致且具有一定的时效性[3],从而避免光信号开锁密码被非法复制。由于该光控门锁光信号为单向传输通信方式,门锁端和控制端无法进行双向通信,不能采用传统的加密芯片滚动法或密码词典随机数查表法获得计次使用的动态密码,因而需要设计基于精准时间戳的动态密码实现开锁指令安全传递。
2 光控门锁工作原理
光控门锁实施结构包括控制端和门锁端,其工作机制如图1 所示。控制端基本组成包括密码发生器、编码调制器、光信号发射器[1]。密码发生器主要通过密码输入方式或身份认证方式完成特定开锁指令生成,然后采用一定的编码方式调制光源(如激光器、LED 等)实现开锁执行发射。控制端载体可以为智能终端,通过安装光控门锁系统APP 实现密码输入或身份认证、开锁指令编码,智能终端自带LED 闪光灯调制并发射开锁指令,APP 还配备预设模式用于对门锁端认证信息输入及开锁密码输入。门锁端基本组成包括光信号接收器、解码器、解密模块、密码判决模块和电控机械锁体。光信号接收器包括光电探测器及信号处理电路;光电探测器接收光信号并将其转换为电流信号;光电探测器连接信号处理电路将所得电流信号滤波处理并转换成电信号、唤醒待机模式的微控制器进行解码和密码判决,若密码符合规则通过电荷泵电路驱动电控机械锁体执行开锁操作,并进入待机模式,等待下一次开锁操作。门锁端配置预设模式键,实现对控制端进行认证及开锁密码设置。
图1 光控门锁基本工作流程
3 光控门锁系统设计
3.1 系统组成
光控门锁系统组成原理如图2 所示,包括智能终端开锁密码输入模块,智能终端动态密码生成模块,手机闪光灯驱动与编码调制模块以及预设模式下的双向认证和开锁密码设置部分;光控门锁端光信号探测与接收解调模块,光控门锁端动态密码解密模块,光控门锁执行机构驱动模块以及预设模式下控制端认证和开锁密码存储部分。
图2 系统组成原理框图
控制端为具有内置处理器、触摸屏、闪光灯的智能终端,智能终端通常为智能手机和平板电脑等智能设备。智能终端闪光灯在开锁模式下可发射动态开锁密码作为开锁指令,在预设模式下可发射智能终端的串号到门锁端作为有效认证信息,具体操作通过APP 软件实现。开锁模式下在用户界面输入密码,然后组合门锁机器码和IMEI 串号产生共享密钥,再通过加密模块结合智能终端时间信息采用TOPT 算法进行加密并生产动态密码,尔后驱动相机模块中的LED 闪光灯实现动态密码发射。预设模式下首先通过相机模块扫描门锁二维码获得门锁机器码完成门锁认证,然后将控制端IMEI 串号身份信号通过闪光灯传送到门锁完成控制端认证,最后输入开锁密码,APP 根据算法组合开锁密码、门锁机器码、IMEI 串口生产共享密钥亦通过闪光灯传输到门锁进行存储。在时间信息精度方面,智能终端具备时钟网络同步功能和GPS 时钟同步功能,其时间信息是高精度的标准时间(如北京时间)。
光控门锁包括微控制器和其连接的光信号接收机构、电控机械锁机构。光信号接收机构包括光电探测器及信号处理电路;光电探测器连接信号处理电路,光电探测器接收光信号并将其转换为电流信号后送入信号处理电路;信号处理电路的输入端接入微控制器,信号处理电路将电流信号滤波处理并转换成电压信号、送入微控制器;电控机械锁机构包括电控开锁单元及其连接控制的机械锁定装置,微控制器连接电控开锁单元。光控门锁控制端为发射控制光控门锁的开锁密钥光信号的设施。微控制器配备存储器用于存储门锁机器码、认证信息和共享密钥。微控制器连接预设模式键,用于实现预设模式下进行控制端认证[5]。光控门锁内高精度时钟芯片,用于动态密码解密。锁体主要基于传统电控门锁进行升级改造,通过智能控制处理板赋予更多功能,可以支持专用数据输出输入接口与计算机进行连接,并可配备存储器进行开锁记录存储。光控门锁内置高精度时钟芯片,否则时钟漂移后可用性受到影响,通过采用通用高精度时钟芯片RX8025T 并外接0.5 ppm的有源低频带温度补偿TCXO 型高稳石英晶体振荡器,方能达到月误差约1 秒,满足光控门锁解密的时间信息要求。同时在APP 软件中配备时间同步功能,可以将智能终端高精度时钟信息通过光信号传递到门锁,实现对门锁端时钟芯片中日历时间校准。
3.2 双向认证技术
采用双向认证技术用于实现门锁端到控制端、控制端到门锁端有效身份认证,并产生控制端与门锁端一致的共享密钥。双向认证过程中门锁端的身份信息为唯一性的门锁机器码SN,控制端的身份信息为智能终端串号IMEI(International Mobile Equipment Identity,国际移动设备识别码)。
门锁机器码SN 作为门锁唯一性标志,是一个由2 个字符、12 个数字、2 个校验字符组成的门锁标识,2 个字符代表门锁型号,12 个数字由门锁内MCU 序列号通过加密算法生成,2 个校验字符是根据门锁型号和数字标识进行异或和求与组合逻辑生成,可在出厂时候附于门锁内侧,当将门锁设置为预设模式下,SN 则以二维码形式展现出来,通过智能终端内置摄像头和APP 软件二维码解析程序在认证模式下获取该二维码,并执行同样逻辑校验判断,若符合该规则认为门锁为有效光控门锁,并获取机器码SN。完成门锁端向控制端传递认证信息。该认证方式还可以防止非法门锁进入APP 软件进行管理,有效保护其产权。
智能终端串号IMEI 作为智能终端唯一的辨识码,是由15 位数字组成的“电子串号”,可以通过智能终端APP 软件在认证模式下读取该串号。APP 软件将串号IMEI 经过加密算法编码为32 位的控制端序号,在双向认证过程中通过光信号和共享密钥一起传输到门锁中进行存储。通过智能终端身份有效性认证可以防止智能终端在联网情况下其输入的密码可能会被黑客通过非法方式监听窃取或被旁人非法窥窃后利用APP 软件执行非法开锁操作,从而利用智能终端内置开锁软件执行非法开锁操作。并且IMEI 还经过加密算法编码为32 位的序号,为了防止黑客非法获取有效认证的智能终端串号,通过伪装方式执行开锁。而且由于所采用的MCU 可配置防外部编程模式进行程序数据读取功能,可以有效保护存储的数据信息和程序被窃取克隆。
双向认证获取的门锁机器码SN、控制端IMEI 串号是控制端和门锁端生成动态密码所需共享密钥的前提。共享密钥K 通过智能终端软件采用ECC(Elliptic Curves Cryptography,椭圆曲线密码编码学)算法组合IMEI、门锁机器码SN 和用户预先设置的门锁密码P 生成一组base32 字符串。
COMPOSE 为ECC 组合算法函数,先选择素域上的椭圆曲线Ep(a,b)上基点G[7],并选用私有密钥k(k<n,n为G 的阶),利用基点G 组合IMEI、SN、P 来计算生成192 位的共享密钥K。
3.3 安全加密技术
针对光控门锁静态开锁密码或指令易被窃取,执行非法开锁操作的问题,需要采取更加安全的动态密码方式加载开锁操作指令。动态密码即一次性密码OTP(One Time Password),也称动态口令,密码只能在一次会话或一段时间内有效,属于强认证技术,可有效规避传统静态密码易被窃取的缺点,其实现形式包括事件同步、挑战/应答、时间同步3 种方式[5]。由于智能终端光控门锁采用的是单向光信号发射方式,不具备双向通信能力,只能采用基于时间的OTP 同步方式。基于时间的OTP 简称TOTP(Time-based One Time Password)的基本认证原理是认证双方共享密钥,并使用同一个密钥对时间戳进行密码算法计算,之后比较值是否一致进行认证,动态口令使用后下一个时间戳作废,理论上时间间隔越小,密码安全性越高,TOTP 算法计算如公式如下。
Truncate 代表截取操作,K 为共享密钥,T 代表时间信息,可以根据安全性和可用性要求事先约定动态密码截取长度。TOTP 生产过程为首先将K 与T 通过HAMCSHA-256 算法转换为256 bit 的哈希值,该算法作为2 代SHA 加密算法,目前还未有有效的攻击方法。然后再通过Truncate 截取为32 bit 无符号整数TOTP,由于动态密码长度达32 位,极大降低了其被暴力破解的可能性。并且在门锁端比对判决逻辑还配置防止暴力破解的策略,防止对其攻击和破解的方法是暴利破解,具体操作是若门锁接收动态密码在时间窗口内连续3 次判决失败(动态密码错误或编码未经认证)则休眠一分钟[6],以此类推若连续发生3*n判决,则休眠2n-1 分钟,进一步抵御降低暴力破解。动态密码时间信息T 的计算过程如下。
T1 代表当前时间戳,T0 代表初始时间戳,X代表时间步长或间隙。通常T1 可以取为UTC 时间(32 位整数),T0 则直接取0,步长X通常选为30 s[5]。由于控制端和门锁端时间不可能完全一致,当一个处于指定步长的时间戳结尾,另一个处于某时间戳开始,收到的动态密码则不能解析,应该设置策略允许动态密码通过跳步到前一个或后一个时间戳进行验证,但这样增加时间延迟窗口,进而增加暴利破解风险。为了提高实用性,采用前后设置一个步长时延来兼容时间不一致性问题,其前提是动态密码传输采用光信号和信号处理和逻辑判决采取高性能处理器,因而传输和处理时间可忽略。实际应用中权衡安全性和可用性、以及门锁时间精度,时间延迟窗口为2 个步长(60 s),这意味着门锁端需要针对一个控制端生成4 套动态密码逐一进行比对,若某一个成功则控制指令有效执行开锁,为了降低误开锁概率。
动态密码工作机制原理如图3 所示,客观上控制端时钟和门锁端高精度时钟芯片二者提供的时钟信息在密码判决有效期内一致,每个控制端必须拥有不同的共享密钥,并且其共享密钥必须防止其他不安全因素进行访问或使用,门锁端作为服务器端,需预先存储各控制端生成的共享密钥,并能有效防止非法设备进行篡改、访问或使用。工作流程是控制端根据共享密钥和时间信息生成随机数并进行截取生成动态密码,动态密码加载到智能终端闪光灯进行编码、调制和光信号发射,门锁端接收光信号解调并解码后,利用门锁内预先存储的共享密钥和其内置高精度时钟芯片时间信息依据同样原理和方式生成的动态密码进行比对判决,若成功则执行开锁操作。
图3 动态密码工作机制
3.4 低功耗设计
为降低系统功耗,硬件上配套要求器件均选用低功耗器件,并且控制器具有低功耗模式,无光信号时,光电探测器自动进入待机模式,控制器关闭除光电探测器外其他部件电源同时进入低功耗运行模式,若光电探测到有效光信号则自动唤醒控制器,并进入运行模式打开各部件电源。为同时满足光控门锁解密高性能处理和低功耗长时间待机需求,控制器采用低功耗微控器STM32L4A6,其基于32 位Cortex-M4 内核,低功耗运行模式下功耗仅为36 uA/MHz,内部集成了哈希处理器,支持SHA-256 算法,调用库函数HASH_SHA256进行哈希值计算可得到256 bit的报文信息,其内部Flash 具有加密功能,可以读保护模式防止外部编程器或仿真器窥窃内部程序和数据,并且工作电压范围为1.71 V 至3.6 V,可通过单节18 650 锂电池或双节5 号干电池直接供电工作。
在光电探测器方面,由于光控门锁光电探测器接收光信号为手机闪光灯发出的可见光调制信号,因而需要采用硅光电探测器。由于硅PIN 光电探测器具有功耗和成本低、探测效率高的优点。系统中选用LSSPD-1.2 硅光电探测器,其感光波段为400~1 100 nm,涵盖可见光的光谱范围,有效光敏面面积达1.2 mm×1.2 mm,响应度为0.35 A/W(可见光650 nm 波段),静态工作电流为5 mA,待机电流为12 μA。
实际应用这能够低功耗模式下微控器工作频率为32 kHz,其待机电流仅1 μA 左右,考虑探测器待机电流和电路元器件功耗,低功耗模式下门锁电控部分总功耗约30 μA 左右。门锁驱动上采用低功耗的电荷泵门锁结构驱动技术,电荷泵充电电流约为600 mA,在运行模式下,电荷泵需充电时间约1.5 s,然后执行开锁,持续时间约0.5 s。开锁完毕,系统自动进入低功耗模式。
4 试验验证
4.1 试验验证环境
安全光控门锁实物验证环境如图4 所示,包括控制终端和光控门锁端。控制端为智能手机,其APP 基于Android 系统开发,用户输入预先设定密码,APP 进行加密后,驱动调制闪光灯发射动态密码到门锁端。门锁内部主要包括光接收透镜、光电探头、控制处理板及锁体,门锁端光接收镜和光电探头进行闪光灯光信号接收探测及解调,然后输入到控制处理板进行解密,若密码正确、控制端合法且满足时效性要求则执行开锁操作。门锁在使用前需要在预设模式下完成认证和密码设置,拆开锁体后,拨动预设开关将锁体配置为预设模式,并在智能手机上安装配套APP 软件,点击进入预设模式,先扫描门锁端内置二维码,获取其机器码实现门锁认证,然后发送手机IMEI 串号到门锁端实现控制端认证,再对门锁开锁密码进行设置完成预设模式操作。
图4 安全光控门锁实物图
4.2 试验验证分析
为了验证该安全光控门锁的快捷性、安全性和低功耗能力。开展了门锁开锁时间、非法控制端入侵、动态密码时效性、抗暴力破解能力、待机功耗等方面测试。经测试表明门锁开锁时间约5 s 左右,其中低功耗唤醒时间约0.2 s,动态密码光信号发射与探测处理时间约3 s,电荷泵充电完成执行开锁操作时间约2 s,取得了较好的快捷效果。非法控制端入侵测试试验,采用12 台未经过认证的智能手机安装控制端APP 软件对光控门锁发送开锁密码,门锁接收到光信号唤醒后均不会执行开锁操作。动态密码时效性主要目的是抗非法探测,测试过程是利用光探测仪记录有效的开锁光信号,并将其导出以同样波段LED反复发射该光信号到光控门锁,该信号仅能在1 分钟内获得有效的开锁操作,能满足日常门锁动态密码时效性要求。抗暴力破解能力测试通过同波段LED 循环发送密码字典里的动态密码到门锁端,经约12 小时测试,均不能获得合法的开锁操作。待机功耗测试验证主要采用万用表接入电路回路,选择电流微安档,实测待机功耗约为50 μA,相对于设计值略高,主要源于电路中电容性器件耗电、IO口高阻抗亦存在灌电流,若使用单节5 000 mAH 的18 650锂电池待机寿命仍可到10 年以上。
5 结论
基于智能终端的安全光控门锁系统克服了现有光控门锁系统便携性和安全性的不足,并具备其快捷性和低功耗能力。该门锁能有效抗未经认证的非法控制端入侵,能在一定的时效性内有效防止探测复制而执行非法开锁操作,并具备强抗暴力破解能力。后续还需进一步对其进行产品化设计,提高产品的可靠性和易用性,开发多平台下控制端APP 并优化其软件功能与性能,满足控制端一对多开锁需求,采用高能量密度锂电池进一步提升门锁持续工作能力。随着人们生活水平日益提高,对生活隐私和安全保障要求越来越强烈,该类型安全光控门锁作为一种实用性高的智能门锁,能有效满足市场需求,应用前景广阔。