嵌入式系统应用实例—网络门禁系统.doc_第1页
嵌入式系统应用实例—网络门禁系统.doc_第2页
嵌入式系统应用实例—网络门禁系统.doc_第3页
嵌入式系统应用实例—网络门禁系统.doc_第4页
嵌入式系统应用实例—网络门禁系统.doc_第5页
免费预览已结束,剩余20页可下载查看

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

第10章 网络门禁系统数字化的家居和办公环境是嵌入式系统应用中最为活跃的部分之一,通过网络环境可以将多种低成本嵌入式设备连接在一起,并产生各种新的应用。本课程设计介绍了一个基于低成本嵌入式设备和以太网的门禁控制系统,着重讨论了其外部硬件扩展方法、门禁设备与控制主机之间的通信协议、安全性设计、门禁设备和控制主机上的软件结构等关键性问题。通过本设计,读者可以掌握进一步掌握外部设备扩展,网络安全,与控制主机的数据库连接等嵌入式系统设计中的主要主题。10.1 课程设计目的本课程设计的主要目标是通过网络门禁的设计和分析,掌握数字化家居和办公系统所必须的关键知识,包括外部设备扩展、控制主机的数据库系统设计、网络安全等方面,为将来设计实际类似系统打好基础。10.2 课程设计要求本课程设计要求读者能理解网络门禁系统的基本原理,掌握嵌入式系统中通过串行接口扩展外部设备的方法,以及分布式嵌入式系统中协议设计和安全性问题。本课程设计中详细介绍了网络门禁系统的软硬件设计原理,读者应能根据此原理,完成整个系统的设计和实现工作。10.3 网络门禁系统的需求分析电子化的门禁系统是指通过电子化的身份识别装置(例如磁卡、IC卡、射频卡)或者生物特征识别方式(例如指纹)识别欲开门者身份,并根据预先设定的策略决定是否开门或者发出报警信号。常见的门禁系统多采用RS485总线将身份识别装置与控制主机相连。这种连接方式中每个身份识别装置都需要专门布线连接到控制主机,施工难度大,成本高。而且这些身份识别装置不能直接连接到Internet上,难以满足当前网络时代随时随地进行访问和控制的要求。随着网络时代的高速发展,无论是高楼大厦,还是智能化小区,局域网无处不在。通过以太网作为身份识别装置和控制主机之间的通信通道,采用TCP/IP网络通讯模式,可充分利用智能大厦、工厂、住宅小区的以太网网络环境,易于实现门禁管理主机与控制器之间的通讯,施工、调试、布线都非常简单,能最大限度地减少对原有建筑的破坏,降低工程造价,后期维护检修也较方便。同时身份识别和门锁系统也可以通过Internet进行访问和控制,从而大大方便了远程控制方式的实现。网络门禁系统的总体结构如图10-1所示。图10-1 网络门禁系统总体结构网络门禁管理系统主要包括了嵌入式门禁系统和控制主机等两个部分,其中嵌入式门禁系统又包括:嵌入式门禁控制器、身份识别设备和电子门锁等部分。控制主机则负责对整个门禁系统的维护和管理。通过以太网,可以由一台控制主机控制多个嵌入式门禁系统。同时,也可以通过Internet远程直接访问和控制嵌入式门禁系统。在网络门禁系统中有两类角色:用户、管理员。其中用户通过身份认证设备向嵌入式门禁系统发出开门请求,管理员则负责控制各个嵌入式门禁系统的开门权限。1、开门请求的处理用户拥有唯一的身份识别装置,如磁卡、IC卡、射频卡等,做为请求开门的凭证。用户通过设备识别设备向嵌入式门禁控制器发出开门请求后,该控制器应读取用户的身份识别信息,通过在线比对或离线比对两种模式确定该身份识别信息是否有开门权限。如果有开门权限则打开电子门锁,如果没有开门权限则保持电子门锁关闭。在线比对模式是该系统一般处理模式。控制器将身份识别信息通过TCP/IP协议发送到预先确定的控制主机,由控制主机将身份识别信息、请求开门时间和嵌入式门禁系统编号和已有开门权限数据库进行比对,确定当前用户是否有权限,并将结果发送到对应的嵌入式门禁控制器中。门禁控制器根据比对结果完成开门动作。离线比对模式是系统的特殊处理方式,仅仅用于以太网连接出现问题时。门禁控制器可以预先设定最多两个超级用户的身份认证信息,在离线状态下,仅仅超级用户具有开门权限。在此状态下,门禁控制器将比对输入的用户身份认证信息是否为超级用户,如果不是则保持关门,如果是则进行开门操作。2、门的长开报警除了控制门的开关外,门禁控制系统还可以判断当前门锁的开关状态。如果开门后,超过规定门限值后,仍然没有关门,则控制系统通过网络向控制主机发送门长开报警(在线模式下)。3、权限管理管理员可以为每个嵌入式门禁控制器指定可以开门的用户身份认证,以及相应开门的许可时间。其中开门的许可时间,支持三种:无限制开门方式、重复多次开门方式、单次开门方式。其中重复多次开门方式可以指定一天内的时间范围(例如9点至18点),也可以指定日期范围(例如每周的周一至周五,或者从今日算起连续的三个月等)。单次开门方式则可以指定包含了年份、月份、日期和钟点的时间段。如果超过此时间段,单次开门方式则被注销。管理员也可以为每个指定的门禁控制器设置超级用户的身份认证信息。4、信息的记录和查询在线比对模式下,所有的开门请求、确认结果、门长开报警等信息均由控制主机记录。离线对比模式下,所有的开门请求、确认结果、门长开报警等信息均由门禁控制器记录。在恢复到在线对比模式后,门禁控制器将上述记录上传到控制主机中,由控制主机补充记录。上述所有记录可以由管理员查询。5、紧急情况处理在发生火灾等情况下,控制主机将可以向门禁控制器发送强制开门信息。门禁控制器接受到此信息后,将无条件开启房门,以便人员逃生。在紧急情况结束后,由控制主机向门禁控制器发送恢复到正常状态的信息,门禁控制器恢复到正常状态。6、安全管理由于门禁控制器与控制主机之间的信息交换都是通过以太网传输,传输内容非常容易被截获和分析。为此需要保证两者之间信息传递的安全性。这主要体现在以下几个方面:1)用户身份认证的保密性。在门禁控制器向控制主机发送用户身份认证时,需要对用户身份认证进行加密,即使相关报文被截获也无法非常方便地分析出用户身份认证,以防用户身份认证被仿制。2)控制主机开门命令的不可伪造性。恶意用户无法通过截获和分析原有开门报文的格式,伪造出新控制主机的开门命令。3)控制主机和门禁控制器之间的相互鉴别。两者可以准确地鉴别报文内容是否是对方发出来的,即使恶意用户通过伪造IP地址等方式也无法欺骗。10.4 磁条读写器原理与使用10.4.1磁卡基本原理本课程设计中将磁卡作为用户的身份识别标志。磁卡是一种磁记录介质卡片。它由高强度、耐高温的塑料或纸质涂覆塑料制成,能防潮、耐磨且有一定的柔韧性,携带方便、使用较为稳定可靠。通常,磁卡的一面印刷有说明提示性信息,如插卡方向;另一面则有磁条,具有2至3个磁道以记录有关信息数据。磁条是一层薄薄的由排列定向的铁性氧化粒子组成的材料,用树脂粘合剂严密地粘合在一起,并粘合在诸如纸或塑料这样的非磁基片媒介上,可以用来记载字母、字符及数字信息。磁卡的信息读写相对简单容易,使用方便,成本低,从而较早地获得了发展,并进入了多个应用领域,如银行卡、电话预付费卡、收费卡、预约卡、门票、储蓄卡、信用卡等。磁条上有三条磁道,前两条磁道为只读磁道,第三条磁道为读写磁道,在使用时可以读出,也可以写入如记录帐面余额等。磁道1可记录数字(0-9)、字母(a-z)和其他一些符号(如括号、分隔符等),最大可记录79个数字或字母。磁道2和3所记录的字符只能是数字(0-9)。磁道2最大可记录40个字符,磁道3最大可记录107个字符。磁条上的信息比较容易读出,非法修改磁条上的内容也较容易,所以大多情况下磁卡都是作为静态数据输入使用。虽然第3磁道可读写,并且有金额字段,也只是用于小金额的应用领域,例如电话卡。使用磁卡的应用系统需要有可靠的计算机系统和中央数据库的支持。用户所持的卡片只是提供用户的识别信息信息,便于在数据库中迅速找到用户数据。 10.4.2 磁条读写器原理本课程设计使用由深圳莱克电子有限公司提供的LKE2600磁条读写器。LKE2600磁条读写器是为适应金融系统业务发展的需要设计生产的磁条读写设备,可对银行使用的活期存折、借记卡及柜员卡进行磁条信息的读取和更新,并且有读和写双重功能。LKE2600磁条读写器可根据需要增加IC卡和SAM卡模块,以业务发展的需求,可广泛应用于银行、证券、邮储、商场和其他消费性场所。该磁条读写器的总体结构如下图所示。图10-2 磁条读写器原理图图中少了一些线,有两个标注也错了,请参见书面版LKE2600 磁条读写器可支持3 个标准RS232 接口,其波特率(1200, 2400, 4800或9600bps)和校验方式(7位无校验或8位偶校验)由机身底部的8 位拨码开关设定,停止位1 位。通过其它开关可以选择磁条读写器的码制、记录标准等。10.4.3 磁条读写器的编程接口LKE2600通过串行端口和门禁控制器连接。门禁控制器可以通过对串行端口发送特殊的指令代码,控制磁条读写器的操作,并从中读取磁条内容。本课程设计中使用到主要软件命令如下表所示:表10-1 LKE2600磁条读写器的控制命令命令分类命令格式(ASCII码)命令格式(十六进制数)说明记录密度控制命令ESC H1B 48置第二磁道为210BPIESC L1B 4C置第二磁道为75BPI记录起始位置控制命令ESC 61B 36记录起始位置为12mmESC 71B 37记录起始位置为20mmESC 81B 38记录起始位置为22mmESC 91B 39记录起始位置为25mm读第二道数据命令ESC 1B 5D拉卡拉卡是一个专用术语,没有问题正确,回送:ESC s 磁条上的数据 ? FS1B 73 磁条上的数据 3F 1C读第三道数据命令ESC T 1B 54 5D拉卡正确,回送:ESC s A 磁条上的数据 ? FS 1B 73 41 磁条上的数据 3F 1C读双道数据命令ESC B 1B 42 5D拉卡正确,回送:ESC s 二道的数据 A 三道的数据 ? FS 1B 73 二道的数据 41 三道的数据 3F 1C 软复位命令ESC 01B 30读写操作状态回送命令ESC j 1B 6A第二道读写数据返回码:ESC r p/q/r1B 72 70/71/72第三道读写数据返回码:ESC T r p/q/r1B 54 72 70/71/72双道读写数据返回码: ESC B r p/q/r1B 42 72 70/71/72返回状态码的最后一位p表示成功,q表示失败,r表示无读写操作由于直接使用上述控制命令比较困难,厂家提供了一些封装好的API函数供用户调用。设置串口参数函数int SetCOMPara(int nCOM, int nBaud, int nByteSize, int nStopBits, int nParity)参数含义:nCOM:选择串行端口;nBaud:波特率;nByteSize:数据位长度;nStopBits:停止位0-1 , 1-1.5 , 2-1;nParity:校验位选择,04=no, odd, even, mark, Size返回值:1 成功0 失败磁道读取函数int ReadMagcard(int nType, int nReader, char* pszSecTrack, char* pszTriTrack)参数含义:nType:0 读双道 1 读二道 2 读三道;nReader:0 南天标准 1 莱克标准SecTrack:第二磁道数据缓冲区;TriTrack:第三磁道数据缓冲区返回值:1 成功0 失败,缓冲区不可小于105,否则有不可预料错误int WriteMagcard(int nType, int nReader, char* strSecTrack, char* strTriTrack)参数含义:nType:0 写双道 1 写二道 2 写三道;nReader:0 南天标准 1 莱克标准SecTrack:第二磁道数据;TriTrack:第三磁道数据返回值:1 成功0 失败,数据不可为空,否则有不可预料错误10.5 嵌入式门禁控制器10.5.1主控CPU的硬件结构本次课程设计使用MICROCHIP公司提供的PIC18F8722处理器作为门禁控制器的主控芯片。该芯片内部包含了一个8位的微处理器内核,同时集成了众多的内部模块和外部接口,主要包括:l 高电流负载的通用IO接口; l 5 个定时器模块; l 4 个外部中断引脚; l 2 个捕捉/比较/PWM模块;l 2 个主控同步串行口模块,支持SPI(Serial Peripheral Interface)的所有4 种模式和 I2C的主/从模式;l 2 个增强型异步串行接口模块,支持 RS-485、RS-232 和 LIN 1.2;l 16 路通道的 10 位模数转换器模块;l 输入复用的双模拟比较器。下面着重介绍本项目相关的一些内部和外部接口。1、中断模块PIC18F8722 具有多个中断源及一个中断优先级控制器。该控制器可以给大多数中断源分配高优先级或者低优先级。高优先级中断向量位于0008h,低优先级中断向量位于0018h。高优先级中断事件可以中断正在处理的低优先级中断。2、I/O端口模块根据选定的器件和使能的功能,最多有9 个端口可供使用。I/O 端口的一些引脚与器件上外设功能复用。一般来说,当外设被使能时,其对应的引脚就不能被用作通用I/O 引脚。每个端口都有三个工作寄存器。这些寄存器是:TRIS寄存器(数据方向寄存器)、PORT寄存器(读取器件引脚的电平)和LAT寄存器(输出锁存器)。3、时钟模块Timer0 模块具有以下特性: 可由软件选择作为8 位或16 位定时器/ 计数器 可读写寄存器 专用的8 位软件可编程预分频器 可选的时钟源(内部或外部) 外部时钟的边沿选择 溢出时中断Timer1 定时器/ 计数器模块具有以下特性: 可由软件选择作为16 位定时器或计数器 可读写的8 位寄存器(TMR1H 和TMR1L) 可选择器件时钟或Timer1 内部振荡器作为时钟源(内部或外部) 溢出时中断 ECCP 特殊事件触发模块复位 器件时钟状态标志位(T1RUN)Timer2 定时器模块具有以下特性: 8位定时器和周期寄存器(分别为TMR2 和PR2) 可软件编程的预分频器(分频比为1:1、1:4 和1:16) 可软件编程的后分频器(分频比为1:1 到1:16) TMR2与PR2 匹配时产生中断 可选作MSSP 模块的移位时钟Timer3 定时器/ 计数器模块具有以下特性: 可由软件选择作为16 位定时器或计数器 可读写的8 位寄存器(TMR3H 和TMR3L) 可选择器件时钟或Timer1 内部振荡器作为时钟源(内部或外部) 溢出时中断 可利用CCP 特殊事件触发模块复位Timer4 模块具有以下特性: 8位定时器寄存器(TMR4)和8位周期寄存器(PR4) 软件可编程预分频器(分频比为1:1、1:4 和1:16) 软件可编程后分频器(分频比为1:1 到1:16) TMR4与PR4 匹配时产生中断4、主控同步串行口(MSSP)主控同步串行口(MSSP)模块是用于同其他外设或单片机器件进行通信的串行接口。这些外设器件可以是串行EEPROM、移位寄存器、显示驱动器和A/D 转换器等。MSSP 模块有SPI和I2C两种工作模式:在SPI模式下,支持全主控模式、从动模式(支持广播地址呼叫);I2C模式下,支持主控模式、多主机模式、从动模式。PIC18F8722 系列有两个MSSP模块,每个模块独立工作。5、增强型通用同步/ 异步收发器(EUSART)可以将EUSART 配置为能与CRT 终端和个人计算机等外设通信的全双工异步系统,也可以将它配置成能够与A/D 或D/A 集成电路、串行EEPROM 等外设通信的半双工同步系统。增强型USART模块还实现了其他功能,包括自动波特率检测和校准、接收到同步间隔字符时的自动唤醒和12 位间隔字符发送。PIC18F97J60 系列的64 引脚器件配备有一个EUSART模块,称为EUSART1。80 引脚和100 引脚器件都有两个独立的EUSART 模块,分别称为EUSART1 和EUSART2。可将这两个模块配置为以下几种工作模式:带有以下功能的异步全双工模式(全双工);接收到字符时自动唤醒;自动波特率校准;12位间隔字符发送;同步主控(半双工)模式;同步从动(半双工)模式。在本门禁控制器中使用两个通用IO引脚用于控制电子门锁的开关,并监测状态;SPI接口作为与外部以太网控制器的接口;3个定时器分别用于网络传输定时和门长开定时;一个串行接口用于和外部读卡器连接。10.5.2 网络接口10.5.2.1以太网模块介绍本课程设计选用的开发板拥有一个以太网模块。,型号为Ethernet PICtailTM Daughter Board,该模块的核心芯片是带SPI接口的以太网控制芯片ENC28J60,其结构如图10-23所示。图10-2 以太网接口芯片ENC28J60原理图ENC28J60 由七个主要功能模块组成:1. SPI 接口主控制器和ENC28J60 之间通信通道。2. 控制寄存器用于控制和监视ENC28J60。3. 双端口RAM缓冲器用于接收和发送数据包。4. 判优器当DMA、发送和接收模块发出请求时对RAM 缓冲器的访问进行控制。5. 总线接口对通过SPI 接收的数据和命令进行解析。6. MAC (Medium Access Control)模块实现符合IEEE 802.3 标准的MAC 逻辑。7. PHY(物理层)模块对双绞线上的模拟数据进行编码和译码。该器件还包括其他支持模块,如振荡器、片内稳压器、电平变换器(提供可以接受5V 电压的I/O 引脚)和系统控制逻辑等。以太网接口包含了五个主要功能模块:1.PHY收发器模块:对传输双绞线接口上的模拟数据进行编码和解码,并通过网络发送和接收它。 2.MAC 模块:实现了符合IEEE802.3 规范的MAC 逻辑,并提供了用以控制PHY 的MIIM(Media Independent Interface Management)。 3. 独立的8KBRAM 缓冲区:用于存储已经接收和将要发送的数据包。 4. 判优器:在单片机内核、DMA、发送和接收模块发出请求时,控制对RAM 缓冲区的访问。 5. 寄存器接口:用作以太网模块和单片机特殊功能寄存器(SFR)之间命令和内部状态信号的译码器。 芯片有8K的RAM 作为网络数据的缓冲空间,而这个空间由单片机SFR控制,无论读写的数据,都放到EDATE寄存器,再读到芯片的数据总线。 10.5.2.2 协议中的主要模块的函数功能MicroChip公司提供了针对此开发板的网络协议栈源代码,支持地址解析协议、IP协议、TCP协议和UDP协议,并对外提供了以下接口。地址解析协议(ARP 和ARPTask)BOOL ARPGet(NODE_INFO *remote, BYTE *opCode)用于获取完整的ARP 包,并返回必需的信息。void ARPPut(NODE_INFO *remote, BYTE opCode)将有效的ARP 包装入MAC 缓冲区中。void ARPInit()初始化ARPTask 状态机,并让它准备好处理ARP 请求和回复。void ARPResolve(IP_ADDR *IPAddr)将ARP 请求发送到远程主机。BOOL ARPIsResolved(IP_ADDR *IPAddr, MAC_ADDR *MACAddr)检查内部缓冲区并返回匹配的主机地址信息。网际协议(IP)void IPSetTxBuffer(BUFFER buffer, WORD offset)允许更高级别的层设置发送缓冲区的存取指针。在调用MACSetTxBuffer 之前它使用的是IP 包头的数据。WORD IPPutHeader(NODE_INFO *remote, BYTE protocol, WORD len)组装一个有效的IP 包头,并将其装入活动的发送缓冲区中。void IPPutArray(BYTE *buffer, WORD len)将字节数组装入活动的发送缓冲区中。BOOL IPGetHeader(IP_ADDR *localIP,NODE_INFO *remote, BYTE *protocol,WORD *len)从活动的发送缓冲区中获取IP 包头并验证它。WORD IPGetArray(BYTE *val, WORD len)从活动的发送缓冲区或接收缓冲区获取字节数组。void IPSetRxBuffer(WORD offset)允许更高级别的层设置接收缓冲区存取指针。在调用MACSetRxBuffer 之前它使用的是IP 包头的数据。传输控制协议(TCP)void TCPInit()初始化TCP 状态机并将其准备好进行多个TCP 连接。TCP_SOCKET TCPListen(TCP_PORT port)指定某个可用的套接字用于侦听TCP端口。TCP_SOCKET TCPConnect(NODE_INFO *remote, TCP_PORT port)在给定远程端口上启动对远程主机的连接请求。BOOL TCPIsConnected(TCP_SOCKET socket)用于确定给定套接字是否已连接到远程主机。void TCPDisconnect(TCP_SOCKET socket)请求远程主机断开连接。BOOL TCPIsPutReady(TCP_SOCKET socket)用于确定套接字是否已准备好发送。当套接字已经连接到远程主机并且它的发送缓冲区为空时,该套接字已准备好发送BOOL TCPPut(TCP_SOCKET socket, BYTE byte)将数据字节装入给定套接字的发送缓冲区中。void TCPFlush(TCP_SOCKET socket)将给定套接字发送缓冲区标记为准备好可以发送。BOOL TCPIsGetReady(TCP_SOCKET socket)用于确定给定套接字是否包含接收数据。BOOL TCPGet(TCP_SOCKET socket, BYTE *byte)从给定套接字接收缓冲区获取一个数据字节。WORD TCPGetArray(TCP_SOCKET sock, BYTE *byte, WORD count)从给定套接字接收缓冲区获取一个数据数组。BOOL TCPDiscard(TCP_SOCKET socket)释放与给定套接字关联的接收缓冲区。BOOL TCPProcess(NODE_INFO *remote, WORD len)它获取已接收到的TCP 包,并对匹配的套接字执行TCP 状态机。仅当接收到TCP 包后才可以调用这个函数。void TCPTick()此函数充当除了TCPProcess 以外的另一个“TCPTask”。它检查所有套接字的超时条件并尝试恢复。用户数据报协议(UDP)void UDPInit()初始化UDP 模块并将其准备好进行多UDP 连接。UDP_SOCKET UDPOpen(UDP_PORT localPort,NODE_INFO *remoteNode, UDP_PORT remotePort)在给定端口上准备下个可用的UDP 套接字,以进行可能的数据发送。本地或远程节点都可以启动数据发送。void UDPDisconnect(UDP_SOCKET socket)关闭给定的UDP 套接字并将其声明为可用套接字。BOOL UDPIsPutReady(UDP_SOCKET socket)确定给定套接字是否准备好发送。当至少有一个MAC 发送缓冲区为空时,套接字即准备好发送。它还将给定套接字设置为活动的UDP 套接字。BOOL UDPPut(BYTE byte)将一个数据字节装入活动的套接字的发送缓冲区中。void UDPFlush()将活动的套接字发送缓冲区标记为准备好可以发送。BOOL UDPIsGetReady(UDP_SOCKET socket)用于确定给定套接字是否包含接收数据。它还将给定套接字设置为活动的套接字。BOOL UDPGet(BYTE *byte)从活动的套接字接收缓冲区获取一个数据字节。BOOL UDPDiscard()释放与活动的套接字关联的接收缓冲区。BOOL UDPProcess(NODE_INFO *remote, WORD len)获取已接收到的UDP 包,并将其分配给匹配的UDP 套接字。仅当接收到UDP包后才可以调用这个函数。基于上述协议栈,可以构造完整的TCP/IP和UDP/IP应用程序。10.5.3 门禁控制器软件结构门禁控制器软件系统主要包括以下几个功能模块:1、引导程序:当嵌入式设备加电/复位的时候,执行引导程序,对设备初始化进行相关配置。初始化后请求登录控制主机,若登录成功,将当前设备上的开门记录、密钥、系统时钟与控制主机进行同步,并将门监系统设定为在线模式;若果失败,则将门监系统设定为离线模式,并在一定时间内发送重登录请求。2、串口通讯:与读卡器通讯,从读卡器获取获得磁卡中的用户身份认证信息PID。在线状态下,读取的信息会经过封装、加密送到控制主机进行匹配;离线状态下,磁卡信息将由门监直接与本地记录的超级用户信息进行匹配。本模块可以通过读卡器所提供的API来实现卡信息的读取,详细情况请参照10.4节磁条读写器的原理和使用。3、门锁监控:本模块属于单片机和电子门锁或者身份识别设备的通信,负责实时监控门的开关状态,以及对门锁进行开门关门控制。当门锁状态发生变化时,须立即将门锁当前状态更新给单片机, 当发现非法进入时(在线时为没有主机的授权开门信号,离线时为非管理员卡开门信号),单片机需要发生警报。当接到控制主机查询门锁状态的请求时,门监门禁将当前门锁状态信息报告控制主机。本系统支持长开报警功能,通过控制一个计时器实现,由管理员设置超时间隔。当门开时,计时器开始计时,当门锁处于长开状态(超过允许的最大时间间隔),会激活长开报警功能,在连线状态下,同时会将长开警报通过网络向控制主机报告。当门锁监控模块从门锁或者身份设备获得开门请求,经过验证(本地超级用户匹配或控制主机用户匹配)后,门禁控制器向门锁发送开门信号。当处理完来自控制主机的匹配开门控制信息后,门锁监控系统要向控制主机返回确认信息。图10-3 门禁控制器软件结构图4、应急离线模块:预先设定最多两个超级用户的身份认证信息,在离线状态下,仅仅超级用户具有开门权限。超级用户的身份认证信息(PID以及时间),预先存储在单片机上,由信息记录查询模块管理。登录时,门监模块负责将磁卡信息与系统预存的超级用户信息验证,发出相应控制信号,并将当前卡号ID与时钟计数记录在单片机内。超级用户的身份认证信息可以由控制主机更新。5、信息的记录和查询:在离线状态下,所有的开门请求、确认结果、门长开报警以及超级用户身份等信息均由门禁控制器记录。当重新连线,发往控制主机。同时设备对报文加密解密用的RSA公钥与DES公钥也保存在设备上供报文加密、解密时候使用,并在适当时候与控制主机同步更新。6、信息同步功能:离线状态过后与控制主机再连接的时候,按需要进行信息的同步。同步的信息包括离线期间的开门记录、加密用的密钥、设备上的时钟等。每次门禁控制器与控制主机同步之后,会将同步完成后的开门记录信息从门禁控制器FLASH中删除,保留最新的密钥和维护时钟信息。时钟必须每天至少与控制主机进行一次同步。7、报文封装/解封装:本模块根据通信协议将获得的卡的信息、时间信息、同步信息等封装成报文,负责控制主机和门禁控制器的数据通讯,。通讯其协议的格式可参考10.7节通信协议设计。8、加密/解密:为了保证在使用TCP/IP进行通讯时的保密问题,不管在控制主机或还是门禁控制器上部分,都有相应的加密解密模块,在发送报文前应用相关加密算法对报文进行加密,然后接收端再通过解密算法来获得原始报文。登录控制主机时,门禁控制器生成DES密钥和随机数,连同设备ID用RSA算法加密后发送到控制主机。产生的DES密钥保存在门禁控制器片内的Flash中。登录后的与主机进行的通信利用本地维护的DES密钥和生成的随机数进行加密解密。加密技术的详情可参考10.6节网络安全机制。9、时钟、中断管理:时钟提供当前时间信息。每一次离线前记录主机的标准时间,离线期间利用计数器记数与离线时间相加获得当前时间。对于系统必须快速响应的任务,如读卡器刷卡、来自控制主机的验证匹配开门消息、紧急状态开门、门长开报警等,须由中断管理程序处理。其中读卡器的读写使用串行通信接收发送中断源;匹配开门和紧急开门利用事件捕捉/比较匹配中断源实现;门长开功能利用定时器计数溢出中断实现。PIC18系列单片机有两个中断向量入口,分别为高优先级与低优先级;使用寄存器备份形式对现场进行保护和恢复,因此同优先级的中断程序互斥。考虑验证匹配、读卡器读写、门长开报警之间同一时间冲突机会较小,将这三类中断定为低优先级,紧急开门的中断程序定为高优先级。10、主机通信模块:负责连线状态登录、开门请求、同步信息的发送。信息以TCP数据包形式通过以太网与控制主机进行传输。详情可参考10.5.2节网络协议栈。10.6 网络安全机制作为教学演示系统,本课程设计主要仅考虑到网络数据传输的安全性,而认为控制主机、嵌入式门禁控制器自身是不可破解的,这可以满足一般应用领域的要求。但是对于安全性要求更高的系统来说,还需要进一步考虑。10.6.1 网络安全技术简介安全问题伴随着网络的发展不断成为人们关注的热点,其主要研究内容包括信息的加密/解密、身份鉴别和数字签名等等,已经形成了IPSec, SSL等多种网络标准安全协议。限于篇幅,本节仅仅介绍一些与本系统设计相关的网络安全技术。1、随机数产生器随机数在安全技术中起着重要作用,主要用于互相鉴别、会话密钥的产生、RSA公钥加密算法中密钥的产生等等。真正的随机数来源往往很难得到,例如物理的噪声发生器。目前常常使用软件产生伪随机数产生器。典型的伪随机数产生器采用线性同余方法,随机数序列Xn通过下式获得:在本例子中,采用文献10推荐的参数a=75=16807, c=0, m=232-1.其他还包括Blum Blum Shub伪随机数产生器,基于加密逻辑的伪随机数产生器等。2、分组密钥加密算法DESDES方法是由美国标准局提出的数据加密标准。在DES加密过程中,数据以64位分组进行加密,密钥长度位56位。加密速算法经过一系列步骤包64位的输入变换成64位的输出,解密过程使用同样的步骤和同样的密钥。DES加密的主要步骤如下图所示。图10-4 DES加密过程DES分组加密算法的主要优点是加密/解密过程计算量比较小,适合低计算能力的嵌入式系统实现。其主要缺点是加密/解密密钥相同,在加密方和解密方都需要保密存放,而且密钥难以在网络上传输。3、RSA公开密钥系统RSA公开密钥系统由美国麻省理工学院的Ron Rivest, Adi Shamir和Len Adleman于1977提出,基于大数分解难题。其主要原理是,选择p, q两个私有的大素数,可以计算出两者之积n=pq。选择公钥e满足,其中gcd()为两者的最大公约数,为欧拉totient函数,也就是不超过n且与n互素的整数个数。并由此计算出私钥.RSA的加密过程为:,其中M为待加密的明文,e, n为公钥,C为密文。RSA的解密过程为:,其中d为私钥。公开密钥体系的最大优点是加密密钥可以公开,而且加密的强度比较大,难于破解。但是其计算量比较大,往往可以用于密钥交换过程。4、报文鉴别码MAC为了保证数据报文的完整性,以及不被篡改,可以在报文中加入报文鉴别码。典型的方式是在发送过程中对将变长度明文M分割为64位长度的分组X1,X1,Xm,然后将这些分组通过异或操作形成一个64位的串。然后使用DES加密算法对进行加密操作,形成64位的鉴别信息CK(M)。然后将M和和鉴别信息CK(M)发送到接收方。在接收过程中,接收方将采用同样的算法对收到的明文M进行鉴别计算,并比较自身计算出来的鉴别信息是否等于接收到的鉴别信息CK(M)。由于鉴别过程中的DES加密算法密钥是私有的,恶意攻击者很难计算出正确的鉴别信息CK(M),因此如果报文在发送过程中被篡改,或者报文被伪造,就可以通过报文鉴别过程及时发现。10.6.2 门禁系统中的网络安全方案与传统的网络安全问题相比,本课程设计的门禁系统有一个重要特点,就是门禁控制器和控制主机的不对称性。其中门禁控制器的计算能力比较弱,而且分布比较广泛,易于被窃取和分析,而控制主机计算能力比较强,安全性也比较容易保障。因此在整体设计过程中要充分考虑到这个特点。在本门禁系统的网络安全过程中,将分为登录过程和数据传输过程。考虑到门禁控制器的计算能力比较弱,因此将采用DES算法作为一般数据传输过程中的加解密算法。而门禁控制器和控制主机之间在建立连接时需要交换DES算法的密钥,这个登录过程将采用RSA算法。登录过程登录过程由门禁控制器发起,通过登录端口向控制主机建立一个TCP连接。密钥交换过程是融合在10.7节所述的登录、控制主机确认报文和门禁控制器确认报文中。每个门禁控制器中有一个唯一的16位设备标识号ID,针对密钥交换过程的RSA加密公钥e, n。门禁控制器在启动后将以16位设备标识号ID和当前时间作为随机数种子,由随机数产生器产生随机的56位DES加密密钥K,以及56位随机数R0。ID|K|R0构成的128位信息将由RSA加密公钥e, n加密后通过登录报文发送到控制主机中。控制主机中包含了密钥交换过程的RSA解密私钥d, n,在接收到登录报文后将利用私钥对登录报文进行解密,获取其中的设备标识号ID,DES解密密钥K,和随机数R0。控制主机将产生56位随机数R1。将R0|R1经过加密密钥K使用DES加密算法加密后作为确认报文发送回门禁控制器。门禁控制器在接收到确认报文后,经过DES解密计算后,恢复随机数R0和R1,并检查是否和登录过程中的随机数相同。如果相同则表示登录正确,否则的话,表示控制主机身份不正确。门禁控制器将主机发送来的随机数R1,和自身设备标识号ID和,与DES加密密钥K,合后成为ID|K|R1。将其再次通过RSA算法加密后通过门禁控制器确认报文发送到控制主机,由控制主机比较登录报文中的设备标识号和加密密钥,以及控制主机确认报文中的随机数R1,确认无误后根据设备ID号将其对应的解密密钥K存储在数据库中,完成整个登录过程,如这段话没有问题。其中需要注意的是“主机确认报文”和:门禁控制器确认报文“是两个单独的词。图10-5所示。图10-5 登录过程数据传输过程在完成登录后,控制主机和门禁控制器将通过数据传输端口进行TCP连接,双方通过DES加密算法加密数据传输内容实现。数据加密过程的一般过程分为:数据分片、增加报文鉴别码MAC、使用DES加密和增加协议首部等步骤。其中数据分片是将待传输的明文信息分解成不超过512字节大小的数据块;增加报文鉴别码MAC是指利用DES加密算法对明文信息构成一个64位的MAC信息并附加在报文后端;使用DES加密是指将明文信息和报文鉴别码通过DES加密产生密文;在最后阶段将上述密文增加一个48位协议首部字段,并通过TCP/IP协议发送。该过程如下图所示。图10-6 数据传输过程48位协议首部的格式如下所示:0 78 15控制主机软件版本号(0x01)门禁控制器软件版本号(0x01)门禁控制器ID号后续加密报文长度(按照字节计算)在上述数据传输过程中,门禁控制器采用自身的DES加解密密钥进行加解密操作。控制主机则根据特定门禁控制器的ID号从数据库中选择DES算法的加解密密钥。10.7 数据传输通信过程协议设计控制主机和门禁控制器之间包含了四种不同的交互方式:开门请求,门禁控制器设置,门禁控制器状态查询,以及门禁控制器的长开报警等。值得注意的是登录过程和数据传输过程采用不同的TCP端口,而且登录过程采用了RSA加密方法,而数据传输过程采用了DES加密方法。数据传输过程在接收过程中采用了同样的初始解密流程。即主机首先记录接收报文的时间TIME,然后把报文首部的ID号发给密钥数据库进行匹配,获取解密密钥K,并根据解密密钥K解密报文内容,并比较报文内部ID和MAC是否正确。如果上述解密过程无误则根据报文的类型进行处理,否则将丢弃报文。数据传输阶段采用了统一的报文格式,如下所示:0 78 15TYPE(0x0B)R23:16R15:0ID15:0ARG各字段表示意思如下:名称长度(字节)含义TYPE1报文类型R324位随机数ID2门禁控制器标示号ARG可变参数在上述报文通用格式的基础上,根据门禁控制器和控制主机之间的交互方式,可以将报文分为以下几类:开门请求、门禁控制器设置、门禁控制器状态查询和门禁控制器长开报警等。各类命令和报文如下表所示:分类名称发出方TYPEARG内容开门请求开门请求(USERDATA)门禁控制器0x01用户身份识别信息门控命令(DOORCONTROL)控制主机0x02开门控制字和随机数门禁控制器设置长开设置命令(URGENT)控制主机0x03开门控制字解除紧急命令(UNURGENT)控制主机0x03开门控制字时间设置命名(TIME)控制主机0x04控制主机时间超级用户设置命令(SUPER_PID)控制主机0x05超级用户身份识别信息状态查询门锁状态查询命令(INQUIRE)控制主机0x10门锁状态信息(LOCK_STATE)门禁控制器0x11开门控制字长开报警长开报警信息(TIME_OUT)门禁控制器0x20确认确认信息(CONFIRM)控制主机或门禁控制器0xFF确认报文类型开门请求(USERDATA):由门禁控制器向控制主机发送,表示特定用户的开门请求,其中:TYPE:0x01;ARG:16字节的用户标示信息PID,来自磁卡的第二磁道记录的内容。门控命令(DOORCONTROL):由控制主机发送至门禁控制器,控制器接到该命令后根据开门控制字决定是否开门打开门锁,该命令可以由管理员发起或者用户信息在数据库中匹配成功之后控制主机自动发回。其中:TYPE:0x02;ARG:1个字节的开门控制字,全部位为1表示开门,全部位为0表示关门;24位随机数,用于报文确认。长开设置命令(URGENT):由控制主机发送至门禁控制器,当紧急情况需要门长期打开时(如火警等),该命令将被发送,此时门禁控制器将控制门锁常开,进入紧急状态。其中:TYPE=0x03;ARG:1个字节的开门控制字,全部位为1。解除紧急命令(UNURGENT):由控制主机发送至门禁控制器,当紧急情况不再持续的时候该命令被发送至控制器,控制器将不再控制门锁常开,解除紧急状态。其中:TYPE:0x03;ARG:1个字节的开门控制字,全部位为0。时间设置命令(TIME):由控制主机发给门禁控制器,作为更新时间用。其中:TYPE:0x04;ARG:YYYYMMDDhhmmss,14个字节,每个字节采用ASCII码表示1位数。超级用户设置报文(SUPER_PID):由控制主机发给门禁控制器,作为设置超级用户的PID。其中:TYPE:0x05;ARG:16个字节的PID。门锁状态查询命令(INQUIRE):由控制主机发送至门禁控制器,查询门禁控制器当前电子门锁是处于开状态或关状态。其中:TYPE=0x10;ARG:1个字节的全0。门锁状态信息(LOCK_STATE):由门禁控制器发送至控制主机,通知控制主机该锁的上锁状态。其中:TYPE:0x11;ARG:1个字节的门禁控制字,全部位为1表示开门,全部位为0表示关门。长开报警信息(TIMEOUT):由门禁控制器发送至控制主机,当其门锁开门时间超过3分钟后该信息将被发送,作为报警信号发至控制主机。其中:TYPE:0x20;ARG:1个字节的全0。确认信息(CONFIRM):用以确认发送的报文是否被成功接收,供发送方(控制主机或者门禁控制器)决定是否继续发送下一信息。其中:TYPE:0xFF;ARG:一个1字节的报文操作类型,表示本确认报文是针对哪个报文的确认。提供对USERDATA, TIMEOUT, URGENT, UNURGENT, LOCKED, UNLOCKED, TIME的确认返回。开门请求的处理过程:门禁控制器接收到来自磁条读写器的用户识别信息PID后,连同一个产生的随机数,经DES加密后发送给控制主机。控制主机接收到门禁控制器的开门请求后,根据用户PID和当前时间TIME经过开门权限数据库验证是否应该开门,并形成相应的开门控制字OPEN。控制主机将门禁控制器确认报文发送给相应

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论