APP下载

一种基于动态二维码的图书馆安全身份认证方案

2021-08-12宫兆阳

计算机应用与软件 2021年8期
关键词:管理系统动态二维码

王 栋 宫兆阳

(中国海洋大学图书馆 山东 青岛 266100)

0 引 言

目前绝大多数高校都使用了校园一卡通系统,该系统将智能卡和计算机网络应用于校园,将学校多种系统联为一体,实现生活消费、学籍管理、身份认证等多种功能,给予了师生校园生活中很大的便利,也提高了学校的管理水平。图书馆的各种读者服务也大多依赖智能卡的身份认证功能,如门禁通道、自助选座、图书借还、研讨间门禁等。如果校园智能卡一旦丢失或者忘记携带,则无法进行身份认证,严重影响了师生使用图书馆的各项服务。因此在校园智能卡之外,如何安全、快捷地进行身份认证和用户信息传递成为重要研究内容。

1 研究现状

当下二维码技术在人们生产生活各个方面都广泛应用。由于二维码具有容量大、识别速度快、防伪效果好等特点,能够很好地适用于移动终端和服务器端的相互认证。由于手机和人联系紧密,因此认证交互方式多以手机为中介。认证过程中首先以移动终端设备某种硬件标识(手机号、IMEI等)和用户信息在服务端注册。当进行认证请求时,服务端生成动态二维码,手机扫描二维码并解密验证后,将硬件标识等信息发送至服务端,服务端检索数据库后确认请求,进而完成此次认证[1]。此种认证过程方便快捷,安全性高,但是手机扫描解密需要通过客户端App完成,开发手机App和说服图书馆用户安装成本较高。

微信这一社交平台出现后,为图书馆服务提供了一个全新信息传播和分享平台,它具有用户量巨大、构建服务成本低、功能灵活且全平台支持等优点。近年来基于微信二维码的身份认证方式受到了研究者普遍关注。

目前已经有高校将二维码技术应用于门禁闸机的通过机制,以下两种方式都是基于微信的身份信息绑定后,采集不同扫描模式进行身份认证。(1) 用户需首先关注图书馆微信公众号,将微信号与图书馆管理系统中的读者个人信息进行绑定,然后调用微信扫码功能扫描门禁通道上的二维码图像[2],验证用户身份。该方式建设成本低,无须对门禁设备进行改造,只需要在门禁粘贴一幅二维码图像,通过软件编程调用图书馆管理系统和门禁通道开放接口即可实现。但该方式存在明显漏洞,例如对二维码进行拍照再扫描照片即可开门。(2) 在每个门禁通道上配置扫描设备,由该设备扫描用户微信中的二维码[3]。该方式是以在微信卡包中增加一种虚拟卡,如微信校园卡,基于虚拟卡生成动态二维码进行图书馆闸机身份识别。中国石油大学(华东)和上海盛卡恩门禁通道产品都是采用此方式,该方式采用定时更新的二维码,所以安全等级较高,并且可以基于微信虚拟卡拓展更多功能,比如放置各种功能链接入口、实现跨校漫游认证等。但该方式需要微信公众号申请开通卡券功能,建卡过程比较繁琐,需要开通腾讯微校并借助学校力量,仅依靠图书馆难以实现,另外要求及时更新微信版本。

借鉴上述方式的优点,本文从研究微信公众平台入手,结合图书馆管理系统和微信两种身份认证方式,设计一种基于动态二维码的图书馆安全身份认证方式。研究内容主要包括动态二维码生成和二维码扫描终端两个部分:动态二维码生成部分以微信用户OpenID作为身份标识,增加时间戳并进行AES加密后生成动态二维码;二维码扫描终端部分实现扫描二维码后解密数据,脱机自验证或者联网向服务端发送认证请求。在完成软硬件开发后,配置专门的身份认证服务器,并对图书馆门禁通道、研讨间管理两套设施进行改装,实际应用测试验证了本文提出方案的可行性。

2 系统认证过程

微信公众号提供了开发模式,该模式功能丰富,不仅可以获取到用户的基本信息,还能获取用户的地理位置及其他功能。开发模式提供了丰富的接口,虽然没有提供关注微信公众号的用户微信账号,但是有用户的OpenID。同一个用户微信账号对应一个微信公众号的OpenID是唯一的,因此可以将OpenID作为微信用户的身份标识。

系统认证过程首先通过图书馆管理系统用户登录校验,将用户信息与用户微信的OpenID绑定。用户通过微信公众号调用身份认证功能时,服务端根据用户OpenID从已绑定数据库中提取用户ID和信息,增加时间戳后通过系统密钥加密后生成动态二维码。当认证终端扫描此二维码,利用系统密钥解密后验证时间戳的有效性,完成认证过程并将用户信息传递给服务设施。系统认证过程主要包括基于微信的身份信息绑定、动态二维码生成及终端认证三个步骤。

2.1 基于微信的身份信息绑定

图书馆用户身份绑定需要一个认证方验证用户账号密码来确认用户身份。中国海洋大学图书馆采用江苏汇文图书馆自动化管理平台,在校师生都拥有平台的有效读者身份。读者以本人学工号作为平台账号和自定义密码登录平台后,可以修改个人信息、查看图书借阅情况、预约和荐购图书等。该管理系统提供了一个读者身份验证接口,可以作为身份信息绑定和动态二维码生成过程的认证方,实现过程如图1所示。

图1 基于微信和图书馆管理系统的身份绑定过程

身份绑定过程步骤具体如下:

(1) 用户关注图书馆微信公众号后,启动其中的身份绑定功能;(2) 微信从认证服务器回调显示登录验证页面,认证服务程序获取用户OpenID并向图书馆管理系统发送身份验证请求;(3) 用户在登录验证页面填写账号密码后,提交验证,图书馆管理系统将验证结果返回认证服务程序;(4) 认证服务程序根据验证结果返回用户提示,如验证通过,在本地数据库保存用户信息。

通过上述步骤审核后,图书馆用户就可以调用微信公众号中的“我的二维码”功能,身份绑定过程界面如图2所示。

图2 身份绑定过程界面

2.2 动态二维码生成

生成动态二维码的过程如图3所示。

图3 基于微信和图书馆管理系统的动态二维码生成过程

(1) 用户调用微信公众号功能,微信向认证服务程序发送微信用户OpenID。

(2) 认证服务程序使用OpenID在本地数据库查询用户信息,如果未查询到用户记录则自动跳转至登录验证绑定页面;为确保用户身份有效,认证服务程序还会将用户信息在图书馆管理系统进行验证,返回读者最新的信息和状态。

(3) 认证服务确认用户为有效读者后,更新本地用户记录,将用户信息和当前时间加密后生成动态二维码,并返回用户二维码图像页面。

为防止二维码包含的用户信息泄露或二维码图像被篡改利用,还须对二维码所包含的信息进行加密处理。加密前原文格式为:“用户ID+时间戳+验证信息”,其中验证信息是根据用户ID和时间戳的运算结果,运算方法可以自定义,最简单方法是前两项求和。本文采用AES(高级加密标准)加密方法对原文进行加密。认证服务程序使用.Net Framework+C#开发,其中.Net Framework自带Rijndael算法类RijndaelManaged,代码实现如下:

//AES加密

public static string AesEncrypt(string str,string key)

{

if (string.IsNullOrEmpty(str)) return null;

Byte[] to EncryptArray=Encoding.UTF8.GetBytes(str);

RijndaelManaged rm=new RijndaelManaged

{

Key=Encoding.UTF8.GetBytes(key),

Mode=CipherMode.ECB,

Padding=PaddingMode.PKCS7

};

ICryptoTransform cTransform=rm.CreateEncryptor();

Byte[]result Array=cTransform.TransformFinalBIock(to EncryptArray,0,toEncryptArray.Length);

return Convert.ToBase64String(resultArray,0,resultArray.Length);

}

生成的二维码图像和密文如图4所示。

图4 生成的二维码图像和密文

2.3 终端认证过程

终端认证过程主要通过二维码扫描器读取二维码信息,根据系统密钥将二维码信息解码获取明文。从明文中截取用户ID、时间和验证信息,判断时间是否在有效期内,并按照之前定义的运算方法检验验证信息是否正确,进而实现人员身份认证。

师:也就是说,P、A、O、B,这四点是共圆的.那我们就可以研究四边形PAOB的外接圆了.因为点P的移动,所以这个外接圆也在动.关注这个动圆,我们还可以研究什么?

认证结果在不同类型的服务设备上反馈结果不同,有的可以直接触发电气设备动作,如门禁通道扇门、房门电子锁等;而有的服务则需要详细的用户信息,认证终端还需要根据用户ID从认证服务器数据库中读取用户记录,反馈给服务设备上的操作软件,如座位管理系统选座终端机、研讨间预约机等。

3 认证终端设计

针对上述两种服务设备情况,本文设计了两种认证终端方案,分别为基于嵌入式系统的硬件终端和基于Windows应用程序的软件终端。

3.1 基于嵌入式系统的认证终端

硬件认证终端可以直接控制服务设施的电气机构,如门禁通道机的扇门开启。为了给门禁通道机增加二维码扫码认证功能,本文选取了一款带有UART TTL接口的二维码扫描设备与STM32F1系列单片机相配合。硬件外观如图5所示。

图5 二维码扫描模块和单片机控制板

该认证终端工作流程如图6所示。二维码扫描模块扫描二维码,并将识别出的二维码信息通过USART接口送至单片机。为避免与认证服务网络通信延迟影响认证通过效率,本文开发嵌入式程序直接对二维码信息进行解码,并判断时间有效性和检验验证信息。认证通过则指令控制单片机的IO口电平驱动继电器导通,为门禁通道机的扇门控制电路提供开门信号,并通过以太网芯片将用户ID发送至认证服务器,由认证服务端程序记录刷卡认证日志。

图6 基于嵌入式系统的认证终端工作流程

3.2 基于Windows应用程序的认证终端

图书馆座位管理、图书自助借还设备和研讨间预约等服务设备中的软件认证过程中,验证身份有效性之外还需要自动获取用户信息,代替交互过程中的手工录入,因此软件认证终端还需要从认证服务器实时获取用户信息,执行过程如图7所示。

图7 认证流程

两种认证终端方案流程相似,区别可见图7中虚线框部分,基于Windows应用程序的认证过程需要以用户ID在认证服务器中查询用户信息,并传递给服务设备应用程序。另外,为确保时间验证成功,两种终端都需要与认证服务器保持时间同步。

4 图书馆应用实验

为测试方案的可行性,本文对图书馆现有的门禁通道机和研讨间预约终端机进行了升级改造,分别安装两种二维码认证终端后,投入实际应用测试。

4.1 服务设备改装

基于嵌入式系统的认证终端主要应用于门禁通道,本文使用的是上海盛卡恩智能系统有限公司的门禁通道产品,型号为SKE780,该产品中心控制板为无线遥控器预留了控制接口TRD101。如图8所示,短接TRD101接口第2、5针脚就可以实现扇门开启。终端产品及人员扫码通过如图9所示。

图8 门禁通道控制板

图9 门禁通道加装认证终端和人员扫码通过图像

为了基于Windows应用程序的认证终端的应用测试,本文定制了一款带二维码扫描器的触控一体机,如图10所示。

图10 加装认证终端的研讨间预约终端机

研讨间预约系统是自主研发软件,加装二维码认证终端后,程序中新增解码认证流程实现了智能卡和二维码双重认证方式。有些服务设备软件交换界面无法定制开发,则可以向界面窗口句柄发送模拟键盘消息,完成信息输入。

4.2 应用结果分析

设备加装二维码扫码认证功能后,本文对方案的安全性进行了测试,主要进行记录二维码图像重复刷卡认证和二维码编码破解测试。测试结果证明本方案具有较高的安全性。分析原因如下:(1) 由于二维码有效期只有一分钟,因此通过复制二维码图像后没法二次利用;(2) 破解者有可能获得用户的图书馆管理系统登录账号,但是无法通过同一微信账号的OpenID冒充用户获取二维码;(3) 二维码信息是由用户ID+时间戳+验证信息通过AES算法加密得出,每次产生的密文变化复杂,不能还原得到原始信息和系统密钥。

5 结 语

本文设计实现了一种基于动态二维码的图书馆安全身份认证方案,包括基于微信的动态二维码的身份认证系统和两种刷卡认证终端。该认证方案实现简单,不需要借助第三方,绑定和认证过程快捷,并且有较高的安全性。基于该方案,实现了门禁通道、研讨间管理等多项服务的统一管理,并在中国海洋大学图书馆投入实用,取得了良好的应用示范效果。另外基于微信公众号的便捷功能服务吸引师生关注图书馆,有效促进了图书馆各项服务在微信公众号中的宣传和推广工作。

本文系统的门禁控制器等硬件由开发人员自行研制,不是通用性门禁产品,所以系统的安装部署相对复杂,需要专业的技术人员才能胜任。未来将考虑在对系统效率、稳定性和可靠性进行大量测试完善的基础上,改善硬件的集成度和可操作性。

猜你喜欢

管理系统动态二维码
基于大数据分析的智慧高速运营管理系统
基于大数据分析的智慧高速运营管理系统
国内动态
基于单片机MCU的IPMI健康管理系统设计与实现
国内动态
浅谈信息化管理系统在监理项目中的应用
国内动态
动态
二维码
二维码让政务公开更直接