《基于51单片机及一次性密钥加密系统的无线密码锁》概述.docx
《《基于51单片机及一次性密钥加密系统的无线密码锁》概述.docx》由会员分享,可在线阅读,更多相关《《基于51单片机及一次性密钥加密系统的无线密码锁》概述.docx(18页珍藏版)》请在冰豆网上搜索。
![《基于51单片机及一次性密钥加密系统的无线密码锁》概述.docx](https://file1.bdocx.com/fileroot1/2022-11/23/dd51104d-d375-4465-87e7-c4e646c9bb63/dd51104d-d375-4465-87e7-c4e646c9bb631.gif)
《基于51单片机及一次性密钥加密系统的无线密码锁》概述
学年论文(设计)
题目基于51单片机及一次性随机密钥加密
的无线密码锁
数学与计算机学院计算机专业级班
学生姓名学号
指导教师职称高级工程师
完成日期
教务处制
【摘 要】本课题主要针对无线密码加密通信技术,研制了单片机与单片机之间通过无线模块传输作为无线密码锁的软硬件设计。
以STC的51系列单片机为控制核心,选用性价比比较高的无线收发模块,实现了基于一次性随机密钥加密的收发系统,并进行了验证。
【关键词】无线密码锁;一次性密钥;随机密钥;密码加密;安全;单片机
引言
无线电子锁系统相比传统机械锁系统具有无接触性、方便快捷、易于管理等优点,伴随着无线模块器件的技术成熟和成本的逐步降低及各种数控系统的集成化要求,无线电子锁在更多的领域得到了应用。
早期的无线电子锁系统,钥匙向锁发送的或者是没有加密的固定密码,或者是经过PT2262,VD5026等编码芯片编码的密码,但这些方式产生的密码都是固定的内容,入侵者只要利用"拷贝重发"或者"扫描跟踪"等方法就可轻而易举地破解,因此这样的方案都应用于对安全性要求不高的场合。
1课题的主要内容及研究意义
1.1本课题的主要内容
为满足对更高安全性和更高实用性的要求,本文提出一种基于一次性随机密钥加密技术的无线密码锁解决方案。
经过加密算法的处理,钥匙每次向锁发送的密文在一个时期内是唯一而随机的,并且密文是根据用户密码和随机数通过加密得到的,入侵者无法预测,即使记录了原来的开锁密码也不能用于下次开锁,因此安全性极高
该系统在设计过程中充分考虑到性价比,选用价格低、性能稳定的元器件。
本课题主要研究内容包含以下几个方面:
1.无线密码锁的电路构成的设计;
2.实现无线收发模块间的正确通信;
3.通过单片机控制显示器和用户键盘实现人机交互;
4.安全性和可靠性的设计
1.2本课题研究的意义
本文给出一种无线密码锁设计,具有可靠性、安全性高,使用尽量少和成品低的元件构成满足实际要求的硬件系统,通过软件的编制实现所需功能,并在保证安全性的基础上设计出友好的用户操作界面,具有较高的应用价值。
2研究方案的设计
2.1无线密码锁主要功能及控制
2.1.1钥匙的配对
目前,无线密码锁的弊端之一是钥匙(遥控器)一旦丢失,不仅系统安全性受到威胁,并且配置新的遥控器并不是很方便。
本课题提出了一种利用配对机制来实现无线密码锁的配对功能,方便操作,每个钥匙(遥控器)有个系统配置密码,被固化在单片机中,进入配置系统可配置钥匙(遥控器)的ID,修改开锁密码,配对操作。
配对时用户需要提供正确的密码才可通过锁端验证并配对成功。
锁端在进行配对操作后将钥匙的ID及同步的密钥存入存储器中,当无线模块接收到合法的信号后回首先判断是否为相应配对的钥匙来决策是否应答,也起到一定的抗干扰作用。
2.1.2存储器
存储器用于锁端保存钥匙ID和用户密码以及密码处理模块的参数,本课题采用STC89C52增强型单片机,其芯片内部扩展了2K的EEPROM用户可用存储器,单片机可方便读写该存储器。
2.1.3单片机通信及人机交互
单片机间通过无线模块实现通信,两机间通过程序流程按照一定的协议进行交互,实现各种操作中信息的收发。
当通信中出现信息错误或则硬件错误时,单片机能够进行相应判断并提示,同时保证系统的稳定。
钥匙(遥控器)提供16键键盘和液晶显示器进行用户操作的输入和提示信息的显示,锁端提供三个操作按键满足配对及初始化等操作,同时蜂鸣器提供相应声音信号。
2.1.4安全性及可靠性
本系统除配对操作外,所有收发信息都经过加密,并且每次使用不同的随机密钥进行加密,由于配对操作需要在锁上进行相应按键才能完成,所以安全性也有保障。
本系统可由用户设定密码,遥控器在进行开锁、密码修改、消除警报操作时,需发送经加密的ID及用户密码和操作标识符,锁端接收到数据并经过解密,得到的信息中与保存的已配对ID进行比对,这样既避免了一些干扰,对安全性也有所提高。
ID验证通过后,锁根据操作标识符进入相应操作,各操作都需先验证用户密码是否正确,并进行相应操作及回馈信息给钥匙端,钥匙端会将操作的结果信息显示给用户。
进入操作后,如果验证密码错误三次则进入报警状态,此后只能利用遥控端的消警功能进行警报消除,若消警密码错误三次则系统自动锁闭约2个小时,在此期间不能进行任何操作,2个小时候方可再次进行消除警报,次数限制仍为三次。
消除警报后锁进入正常状态,可进行开锁操作。
用户可通过锁端初始化密码,遥控器与之配对后可进行密码修改,密码被保存在锁端的存储器上。
密码不以明文方式发送,而是使用了一次性随机密钥的加密,这样实现了密文的随机性变化,使得“拷贝重发”的破解方式失效,同时由于时间和次数的限制,使得“扫描跟踪(穷举)”等方法难以破解,系统具有很高的安全性。
2.2系统总体方案的设计
2.2.1总体方案设计
本文设计和研制无线密码锁,以满足需求。
利用单片机与单片机之间的通信。
钥匙(遥控器)是以单片机为核心的,包括主模块、键盘处理模块、LCD1602显示模块、数据存储模块和数据通信模块及加解密模块等;锁是以单片机为核心,包括主模块、数据存储模块、和数据通信模块及加解密模块等。
数据存储模块能够完成ID和密码及密钥的读写操作;数据通信模块是基于无线传输模块,由NRF24L01进行数据的传输,实现两块单片机之间的通信;加解密模块则根据密钥将要发送的明文信息加密成对应的密文,以及将接收到得密文解密为明文。
原理框图下所示:
图2-1无线密码锁钥匙(遥控器)原理图
图2-2无线密码锁(主机)原理图
1.人机对话接口
LCD1602显示系统(钥匙):
显示信息,并提示输入相应密码,进入系统设置可显示菜单选项。
LED灯(锁):
显示操作结果信号
键盘(钥匙):
用以密码输入及相关操作。
报警信号:
当非法操作次数超限时,系统进行相应处理并使蜂鸣器发出警报声。
2.无线传输模块
用来实现单片机之间的通讯。
3.数据存储模块
用来存储所需ID,密钥,密码等参数数据
2.2.2总体设计方框图
锁(主机):
图2-3无线密码锁(主机)总体设计框图
钥匙(遥控器):
图2-4无线密码锁钥匙(遥控器)总体设计框图
2.2.3详细设计
本文通过对密码在无线通信中的保密性的分析研究,对系统总体方案进行了详细设计,采用STC公司生产的STC89C52RC单片机、无线收发模块NRF24L01,LCD1602液晶显示模块。
单片机通过加密函数将输入的明文信息转换为对应密文,明文信息为ID及控制信息与密码,形成能够完成相应操作的信号数据。
显示部分由比较廉价的LCD液晶显示器对信息进行显示。
当非法操作超限时,系统会控制自动报警。
本设计采用的是系统限制和声音报警,声音报警主要是控制蜂鸣器的发声,从而达到报警的目的。
具体的控制过程:
A、密码锁主机端提供四个按键分别为:
系统复位、配对、密码初始化、锁初始化
1、密码初始化:
将开锁密码重置为默认值:
“6666666”,消除警报密码重置为默认值“666666”(按下此键红灯亮)
2、锁初始化:
将本机配对钥匙ID设为默认值(不与任何遥控器配对),(按下此键绿灯亮)
3、配对:
按下此键黄灯常亮进入等待状态,当接收到钥匙(遥控器)的配对信息正确配对后黄红绿灯全亮1秒、蜂鸣器响,配对成功,若等待超时则退出配对状态进入正常状态
B、钥匙(遥控器)提供一个复位键及16个按键:
数字“0~9”、清除、开锁、消警、系统设置、取消、确认;
1、数字键“0~9”:
用于输入密码
2、清除键:
用于清除当前输入以便修改
3、开锁:
开锁:
输入开锁密码,按下此键向对应锁发送开锁请求,密码正确进行开锁(锁(主机端)三盏灯齐亮2秒,蜂鸣器响,继电器接通1秒)密码输入三次错误锁(主机端)进入警报状态,报警约30秒,需进行消警操作以解除警报
4、消警:
输入消警(备用)密码,按下此键向对应锁号发送消除警报请求,密码正确消除警报可进行正常开锁(锁(主机端)红黄灯亮,蜂鸣器响),密码输入错误三次,锁(主机端)锁闭系统约2个小时,此期间不可进行任何操作,2个小时后可再次进行消警操作(仍以三次为限)
5、系统设置:
输入系统密码,按下此键可进入系统设置,有三个选项:
ID锁密码及配对;相应数字键进入选项,按取消键退出
5(a)、修改ID:
进入此选项后提示输入新ID,按确认键使新ID生效,按取消键则返回
5(b)、配对:
当锁(主机端)处于配对状态时,输入锁密码,按下此键发送配对请求,密码核对正确后钥匙(遥控器)的ID被记录在锁(主机端),配对完成,按取消键可退出当前设置
5(c)、密码修改:
进入此选项后提示输入原密码下,输入原密码后按下确认键,若原密码正确则提示输入新密码,输入新密码后再按确认键完成密码修改,按取消键可退出当前设置,原密码输入错误超过三次,后果同编号B-3所述;
C、以上所有操作,操作结果可由相应指示灯指示,蜂鸣器发声及钥匙(遥控器)的液晶显示器显示相应的提示信息;
2.3本章小结
本章综述了无线密码锁各个功能模块和控制方法,并针对系统进行了详细的操作流程的方案设计,为下文的展开做了前期准备。
3部分硬件电路的设计
3.1无线收发(NRF24L01)硬件设计
随着计算机技术、短距离无线数据传输技术的迅速发展,无线传输系统的研发在技术支持上有了更多的选择。
无线通信在无线传输系统中是比较关键的技术,选择一款好的无线收发芯片,不但能缩短开发时间,而且能节约开发成本。
3.1.1模块简介
(1)2.4Ghz全球开放ISM频段免许可证使用
(2)最高工作速率2Mbps,高效GFSK调制,抗干扰能力强,特别适合工业控制场合
(3)126频道,满足多点通信和跳频通信需要
(4)内置硬件CRC检错和点对多点通信地址控制
(5)低功耗1.9-3.6V工作,待机模式下状态为22uA;掉电模式下为900nA
(6)内置2.4Ghz天线,体积小巧
(7)模块可软件设地址,只有收到本机地址时才会输出数据(提供中断指示),可直接接各种单片机使用,软件编程非常方便
(8)内置专门稳压电路,使用各种电源包括DC/DC开关电源均有很好的通信效果
(9)标准DIP间距接口,便于嵌入式应用
(10)工作于EnhancedShockBurst具有Automaticpackethandling,Autopackettransactionhandling,具有可选的内置包应答机制,极大的降低丢包率。
(11)与51系列单片机P0口连接时候,需要加10K的上拉电阻,与其余口连接不需要。
(12)其他系列的单片机,如果是5V的,请参考该系列单片机IO口输出电流大小,如果超过10mA,需要串联电阻分压,否则容易烧毁模块!
如果是3.3V的,可以直接和RF2401模块的IO口线连接。
比如AVR系列单片机如果是5V的,一般串接2K的电阻。
3.1.2模块结构和引脚功能
1、NewMsg_RF24L01模块使用Nordic公司的nRF24L01芯片开发而成,内部结构如下图:
图3-1nrf24l01内部结构框图
3.1.3nrf24l01的接口电路
图3-2nrf24l01与单片机的接口电路
接口说明:
(1)VCC脚接电压范围为1.9V~3.6V之间,不能在这个区间之外,超过3.6V将会烧毁模块。
推荐电压3.3V左右。
(2)除电源VCC和接地端,其余脚都可以直接和普通的5V单片机I0口直接相连,无需电平转换。
当然对3V左右的单片机更加适用了。
(3)硬件上面没有SPI的单片机也可以控制本模块,用普通单片机I0口模拟SPI不需要单片机真正的串口介入,只需要普通的单片机IO口就可以了,当然用串口也可以了。
(4)9、10脚接地脚,需要和母板的逻辑地连接起来;2脚悬空。
(5)排针间距为2.54mm,标准DIP插针,如果需要其他封装接口,比如密脚插针,或者其他形式的接口,可以联系我们定做。
曾强型ShockBurst模式下的NRF24L01集成了所有高速链路层操作,无需单片机硬件上一定有SPI接口与其相连,SPI接口可以利用单片机通用I/O口进行模拟。
而且由于链路层完全集成在芯片上,非常方便软件的编程,这样硬件设计简单、系统的可编程性好。
CE使能无线传输芯片的发射或接收,CE为l时,芯片为发射端,CE为0时芯片为接收端。
CSN使能SPI片选,低电平有效,CSN为低后SPI接口等待执行指令,每一条指令执行都必须通过一次CSN由高到低的变化。
SCK为串行时钟,其初始状态设置为1,在允许接收后再设置SCK为0,这样就在SCK上产生了一个下降沿,芯片在下降沿的驱使将待发的数据串行左移,将最高位数据发送至MISO线上,此后再置SCK为1,产生一个上升沿,芯片接收单片机的最高位数据,至此,l位数据传输完成,依次循环8次,即可完成1次SPI总线传输8位数据。
MOSI引脚是将单片机的控制指令输入给NRF24L01,MISO引脚是将NRF24L01的状态信息和数据信息输出给单片机。
IRQ为数据发送成功标志位,数据发送成功IRQ变为低。
3.1.4工作模式
NRF2401有工作模式有四种:
收发模式、配置模式、空闲模式、关机模式。
工作模式由PWR_UPregister、PRIM_RXregister和CE决定,详见下表:
表3-1nrf24l01的工作模式
3.2STC89C52内部扩展EEPROM存储简介
为满足需要使用非易失性存储的扩展要求,STC89C52芯片内部扩展了2K的用户EEPROM存储器,其利用IAP技术实现EEPROM。
程序在系统ISP程序区可以对用户应用程序区/数据Flash区(EEPROM)进行字节读/字节编程/扇区擦除;程序在用户应用程序区时,仅可以对数据Flash区(EEPROM)进行字节读/字节编程/扇区擦除;
单片机已固化了ISP引导码,并设置上电复位进入ISP的STC89C51RC/RD+系列单片机出厂时已完全加密。
3.3LCD1602的设计
液晶显示模块具有体积小、功耗低、显示内容丰富、超薄轻巧等优点。
目前字符型液晶显示模块已经是单片机应用设计中最常用的信息显示器件。
LCD1602液晶显示模块可以显示两行,每行16个字符,采用单+5V电源供电,外围电路配置简单,价格便宜,具有很高的性价比。
3.3.1LCD1602的引脚功能
LCD1602采用标准14脚(无背光)或16脚(带背光)接口,个引脚功能如表3-7所示。
表3-5LCD1602引脚及功能
VL为液晶显示器对比度调整端,接正电源时对比度最弱,接地电源时对比度最高。
若对比度过高会产生“鬼影”,使用时可以通过一只10K电阻来调整对比度。
RS为寄存器选择端,RS为高电平时选择数据寄存器,为低电平时选择指令寄存器。
RW为读写信号线,为高电平时进行读操作,为低电平时为写操作。
当RS和RW同为低电平时可以写入指令或者显示地址。
当RS为低电平、RW为高电平时可以读忙信号,当RS为高电平、RW为低电平时可以写入数据。
E为使能端,当E端由高电平跳变成低电平时,液晶模块执行命令。
DO—D7为位双向数据线。
3.3.31602LCD的操作指令说明
1602液晶模块内部的控制器共有11条控制如表3-6所示。
表3-6LCD1602液晶模块内部的控制器的11条控制指令
1602液晶模块的读写操作、屏幕和光标的操作都是通过指令编程来实现的。
指令1:
清显示,指令码,光标复位到地址位置。
指令2:
光标复位,光标返回到地址OOH。
指令3:
光标和显示模式设置。
其中:
I/D:
光标移动方向,高电平右移,低电平左移;S:
屏幕上所有文字是否左移或者右移,高电平。
指令4:
显示开关控制。
其中:
D:
控制整体显示的开与关,高电平表示开显示,低电平表示关显示:
C:
控制光标的开与关,高电平表示有光标,低电平表示无光标;B:
控制光标是否闪烁,高电平闪烁,低电平不闪烁。
指令5:
光标或显示移位。
其中:
s/c:
高电平时移动显示的文字,低电平时移动光标。
指令6:
功能设置命令。
其中:
DL:
高电平时为4位总线,低电平时为8位总线;N:
低电平时为单行显示,高电平时双行显示;F:
低电平时显示5×7的点阵符,高电平时显示5×lO的点阵字符。
指令7:
字符发生器RAM地址设置。
指令8:
DDRAM地址设置。
指令9:
读忙信号和光标地址。
其中:
BF:
读忙标志位,高电平表示忙、,此时模块不能接收命令或者数据低电平表示不忙。
指令10:
写数据。
指令1l:
读数据。
图3-12LCD1602的硬件电路图
3.4缺少部分
逻辑电路未设继电器等用于实际控制门闸驱动器等器件,实际应用中需做相应扩展。
3.5本章小结
本章较为详细地介绍了部分硬件设计。
介绍了各个不同模块的工作原理并设计了相应的硬件电路。
4系统的软件结构和程序框图
4.1主程序模块
主程序是控制单片机系统按预定操作方式运转的程序,它负责组织调用各子程序模块,完成系统初始化、显示数据、无线传输和处理按键等功能。
它的工作过程是:
系统上电后,钥匙端单片机完成对各个端口及模块的初始化工作,然后进入键盘检测状态,根据按键进行相应操作。
锁端单片机完成对各个端口及模块的初始化工作、然后进入检测按键及无线模块接收数据状态。
当有数据收到时,根据数据中的控制段的内容进入相应子模块进行处理。
主程序流程图如图4-1所示。
图4-1主程序流程图
4.2系统各子程序模块
本系统的子程序模块主要有:
无线模块的传输程序、键盘子程序、显示子程序以及数据处理子程序模块等。
4.2.1键盘子程序模块
本系统中钥匙设立了16个操作按键,分别是数字键0-9、清除键、开锁键、消警键、系统设置键、取消键、确定键以及复位键。
扫描键盘的过程中,当操作者按下或松开按键时,按键会产生机械抖动。
这种抖动经常发生在按下或松开的瞬问,一般持续几到十几微秒,在扫描键盘过程中,必须想办法消除按键抖动,本文采用软件延时的方法来消除按键的抖动。
一旦发现有键按下,就延时10ms以后再测按键的状态。
这样就避开了按键发生抖动的那一段时间,使CPU能可靠地读取按键状态,另一方面,在键盘扫描中,应防止按一次键而有多个对应键值输入的情况,即当某一个按下的键还未松开时,键盘扫描程序和键处理程序已经执行了多遍。
因此,在键扫描程序中不仅要检测是否有键按下,在有键按下的情况,还应检测按下的键是否松开,只有当按下的键松开以后,程序才能做一次键处理。
4.2.2显示子程序模块
图4-2LCD1602液晶显示子程序模块
4.2.3无线数据收发模块
增强型模式的nRF24L01可以使双向链接协议执行起来容易、有效,使程序简单。
发射数据时,首先将nRF24L01配置为发射模式:
接着把地址TX_ADDR和数据TX_PLD按照时序由SPI口写入NRF24L01缓存区,TX_PLD必须在
连续写入,而TX_ADDR在发射时写入一次即可,然后CE置为高电平并保持至少lOus,延迟130us后射数据。
若自动应答开启,那么NRF24L01在发射数据后立即进入接收模式,接收应答信号。
如果收到应答,则认为此次通信成功,TX_DS置高,同时TX_PLD从发送堆栈中清除;若未收到应答,则自动重新发射该数据(自动重发已开启),若重发次数(ARC_CNT)达到上限,MAX_RT置高,TX_PLD不会被清除;MAX_RT或TX_DS置高时,使IRQ变低,以便通知MCU。
最后发射成功时,若CE为低则NRF24L01进入空闲模式1;若发送堆栈中有数据且CE为高,则进入下一次发射;若发送堆栈中无数据且CE为高,则进入空闲模式2。
4.2.4数据发送及接收的软件设计流程图
图4-3数据发送及接收的控制流程图
4.2.5数据存储模块
采用STC89C52内部扩展EEPROM存储,运用ISP总线方式进行读写
4.2.6配对程序模块
图4-4配对操作控制流程图
4.2.7开锁/消除警报程序模块
图4-5开锁/消除警报操作控制流程图
4.2.8密码修改程序模块
图4-6密码修改操作控制流程图
4.2.9数据加密处理模块
这里提出一种基于一次性随机变化密钥的替换的加密算法及通信协议,每次正确收发数据后,收发双方的密钥都由一个随机数一致更新;在一次通信中原密钥和新密钥同时使用,既保证了对称性,又保证了随机性。
对于明文为0~9的加密算法描述如下:
设置一个10*10替换盒S,每一行由0~9十个字符排列,设置一个初始密钥t;
S替换如下:
S(a,b):
用a行b列对应的值作为S(a,b)的值
S’(a,b)表示对b利用a做S盒反替换;即检索第a行中值为b的下标值作为S’(a,b)的值
(AB初始密钥一致)数据内容为0~9的数字(用户密码,一般为6位)
对于其他数据,单片机一个字节表示范围为0~255,不宜采用S盒替换法,而采用简单的方法,如下:
明文m,则将其加密为密文n=m+t;由于t为一次性密钥,所以系统仍具有安全性
例如:
A和B通信过程(A、B双方已经过配对):
设当前密钥为t(收发双方已同步此密钥),锁的标识为ID(4位),要发送的密码信息为P(6位),控制信息为K(1位);此处“位”表示一个数据(1字节)
A发送端:
(1)生成随机数r=rand();
(2)用t加密r,得R1=r+t;
(3)用r及S盒加密ID和密码信息P,分别得到ID1和P1,控制信息加密为K1=a+r
(4)R1、ID1、P1、K1即为密文,将他们用数组组织起来通过无线模块发送
(5)等待应答并判断是否超时
(6)未超时且收到应答,用r解密应答信息(内容为ID)
(7)检验应答是否正确
(8)应答信息正确,将r存入存储器替换t(作为t的新值),否则返回
B接收端:
(1)接收到数据
(2)用t(=128)解密R1得到r
(3)用r解密ID1、P1、K1,得到ID、P、K
(4)判断ID是否与本机存储的ID一致,不一致则返回,否则继续
(5)用r及S盒加密本机存储的ID得到ID2
(6)将ID2作为应答信号发送出去
(7)将P、K(分别对应密码可控制信息)作为有效信息
(8)将r存入存储器替换t(作为t的新值)
至此,顺利的话,A已将密码P及控制信息K发送给B,并更新了密钥(随机数r);
B收到A发送的密码P及控制信息K,并更新了与A相同的密钥;
AB正确通信后同时更新了密钥,且这个密钥是随机数,即保证了下次通信时密钥的一致。
4.2.10报警程序
图4-7报警控制流程图
4.3本章小结
本章主要从各个不同的模块入手,详细的介绍了各个不同模块的程序流程图。
5总结
通过大量文献解读与系统分析、研究、设计和参与课题的实践,在导师的指导帮助下,终于基本完成了开题报告中确定的任务。
本课题针对无线密码锁系统的研究,是对单片机技术、通信技术、电子技术等专业知识的综合运用。
在设计和开发的过程中,紧密结合密码安全的实际要求,综合目前一些先进的加密理念。
本文遵循系统的需求,进行总体分析与设计、模块化设计、详细设计,并对系统的可靠性和安全性进行了设计。
参考文献
[1]房德君等.一种新型单片