共1条
1/1 1 跳转至页
利用PIC12C508单片机来实现加密狗技术[转帖]
利用PIC12C508单片机来实现加密狗技术
广州市光机电工程研究开发中心 熊厚德
摘要:本文从介绍并行打印口及MicrochipPIC12C508单片机入手,给出了一种利用PIC12C508单片机实现加密狗技术的具体方案。
关键词:并行接口; 单片机; 密码
微机软件开发商为了保护自己的研究成果,往往都希望对软件系统进行加密。早期采用的加密方式(如硬盘加密、加密卡等)都因为有这样那样的缺点而被淘汰,取而代之的加密狗加密技术是近几年来兴起的一种较为理想的加密手段。它利用插接在微机并行打印口上的加密装置与专用加密程序互相配合来实现对密码的写入、保存、读取和校对。加密狗是一个两头各带一个25芯插座的方形塑料盒,用于存放加密狗密码,它串接在打印口与打印机之间,且不影响打印机的正常使用;用于密码读取和校对的专用加密程序往往嵌在某个需要加密的应用系统中,在应用软件系统运行前或运行中可随时调用它以检测加密狗的存在以及密码的正确性,一旦失败,软件系统可作相应处理。
需要说明的是,加密狗的设计没有千编一律的模式可循,往往是仁者见仁,智者见智,也正因为如此,加密狗才有对系统加密存在的价值。本文介绍一种高级加密狗技术,它将密码分成接收码和返回码两部分,接收码由PC机加密软件提供,返回码由接收码和单片机内部软件算法产生,这种加密方式具有保密性更强,破密难度更大,且可应用于不同软件系统等特点。
1. 并行打印机适配器及其特点
并行打印机适配器是连接并行设备的接口电路,严格地讲,它应能和其它任何并行设备相连接。只不过现在它几乎成了专用的打印机接口,称呼也随之而来。同时,有些硬件制造商也对并行打印机适配器作了一些简化,使之专用于与打印机的连接。这样,为了使加密狗具有通用性,我们在本文的叙述和加密狗硬件设计上都以通用的打印机信号为基础。
并行打印口是并行打印机适配器与打印电缆的接口。位于微机后机板上25芯“D”型插座,其中数据线为8根,状态线为5根,控制线为4根,其余全是地线。
并行打印机适配器(以LPT1为例)内部接口电路如图1所示。
在图中,数据口(2BCH)通常用作八位数据输出。早期的数据口用74LS374作输出接口,其拉电流较小,后来改用CMOS芯片作接口,拉电流可达15mA,灌电流达20mA以上。
状态口(2BDH)是微机读取打印机各种状态的输入口,共有5根口线。各口线功能如下:
ACK:低电平有效,当打印机接收完一字节数据允许微机发送下一字节数据时,发给微机ACK信号。
BUSY:高电平有效,打印机因某种原因不能接收数据时,该信号有效。
PE:高电平有效,表示打印机缺纸。
SLCT:高电平有效,表示打印机处于被选中状态。
ERROR:低电平有效,打印机出错时发此信号。
控制口(2BEH)是由微机输出并控制打印机生相应动作的接口。控制口共有4根控制线。功能如下:
STROBE:低电平脉冲选通。用于使打印机接收来自打印适配器的数据。
AUTOFDXT:低电平有效,打印机自动换行信号。
SLCTIN:低电平有效,只有该信号有效时,打印机才能接收数据。
INIT:低电平有效,打印机初始化信号。
从以上各引脚定义来看,打印适配器具有以下特点:
●各口线均有明确的定义和功能,没有多余的备用口线;
●打印适配器不提供+5V电源;
●打印适配器具有一定的接口驱动能力,但驱动能力不很强;
●数据线一般作为单向输出,不作为数据输入,仅有状态线才能输入。
这几个特点对加密狗的接入不利。因为狗内若用芯片设计,必须提供电源,且有数据输入,还须有密码返回,同时由于打印机口驱动能力有限,所以,狗内所有电路都必须具有低功耗、低电压工作的特点。
2. 用PIC12C508单片机实现加密狗
2.1 加密狗芯片性能分析
加密狗主要由PIC12C508单片机和93CL46 EEPROM组成,它们都是Microchip公司的产品。
其中,PIC12C508是一种8引脚CMOS工艺全静态高性能低功耗单片机,其片内带有512字节程序存贮器,工作电压范围为2.2~5.5V,功耗<2mA(4MHz,5V),通过对其配置位编程,可使之选用片内4MHz RC振荡和MCCR禁止,这样,PIC12C508无需外部振荡电路和复位电路,可用的I/O口最多可达到6个。另外,该单片机一旦被加密,其片内程序难以读出,PIC12C508 DIP封装引脚图如图2所示。
93LC46是CMOS工艺1k位串行EEPROM,最低工作电压可低到2.0V,典型额定电流为1mA,EEPROM数据保存时间>40年,93LC46的DIP封装引脚图如图3所示。
由于PIC12C508,93LC46都具有低功耗、低电压、价格便宜、封装引脚少等特点,且PIC12C508对程序的保密性又强,所以,适合于作加密狗芯片。
2.2 加密狗硬件原理分析
加密狗硬件原理如图4所示。数据线D7通过二极管D与加密狗Vcc相连。作为加密狗电源,由于打印适配器数据口输出电流可达15mA,而PIC12C508单片机正常工作所需电流<2mA,93LC46额定工作电流为1mA,所以,加密狗正常工作电流<3mA,用D7供电是可行的,D7=1时加密狗上电工作。
单片机GP0、GP1与93LC46的CLK,DI、DO相连,分别作为EEPROM的时钟信号和数据输入(输出)口,打印机口数据线D2与93LC46的CS相连,作为EEPROM的片选信号,高电平有效。
单片机GP4与SLCTIN相连,用于检测打印机口状态,一旦加密狗检测SLCTIN为低,说明微机向打印机传送数据,加密狗立即停止密码接收和返回,并将GP5置高阻工作,只有当它为高电平时,加密狗才允许码接收或返回,通过这种分时工作式解决加密狗与打印机共容的问题。
GP2、GP3分别与D0、D1相连,用作时钟同步信号和狗接收码数据线。GP5用作狗返回数据线。在加密狗接收码工作期间,D0作为同步时钟信号,D1作为一种接收码数据线;在加密狗返回码工作期间,D1作为同步时钟信号,GP5与ACK通过电阻R相连并作为一位返回码数据线,此时D0可作为随机信号,以迷惑解密者。前面讲到,加密狗和打印机是分时工作的,所以,返回码只会出现在打印适配器空闲状态,此时ACK为高电平,并不影响返回码的正常读取,反过来,当打印机需要返回ACK信号时,由于GP5已被单片机置成输入状态,故亦不影响打印机ACK信号的返回。
2.3 加密狗加密特点分析及工作过程说明
加密狗将密码分成接收码和返回码两部分,接收码(m0)由PC机被加密软件提供,并经单片机加密算法F1产生存放码(m1),即m1=F1(m0),返回码(m2)由接收码与93LC46存放码(m1)经单片机加密算法F2产生,即m2=F2(m1),由于接收码码值、码长由加密者设定,加密狗单片机将产生一个一一对应的码值、码长完全不同的返回码,这样破密者即使绘出加密狗的原理图也难以解密,从而大大增加了破密的难度。
加密狗工作分成密码写入和密码验证两个过程。
密码写入是指PC机写狗程序通过单片机PC机写狗程序将密码写入EEPROM,并使PC机写狗程序得到返回码的过程。
首先PC机写狗程序置D7=1给加密狗加电,然后置D2=1,选中EEPROM, 为单片机写入密码作准备;同时,单片机上电复位初始化,并通过GP4检测SLCTIN,当SLCTIN=1时,单片机等待通过GP2,GP3读取接收码;然后PC机将D0作为同步时钟、D1作为一位数据,输出接收码(m0);单片机接收完正确的接收码后,经算法F1转换成存放码(m1)写入EEPROM中,写入完成后,单片机又将存放码转换为返回码(m2);接着,单片机由GP5经ACK向PC机发送EEPROM写完成信号,并要求传送返回码;PC机检测到此信号后,由D1发出同步时钟信号、由ACK读取返回码(m2)。这样,接收码(m0)和返回码(m2)即是该加密狗的加密码。
密码验证是指PC机被加密软件接收码传给单片机,并读取实际返回码,然后验证返回码正确性的过程。密码验证同密码写入过程大体相同,只是在单片机读取到实际接收码时,将其经算法F1转换成实际密码(m),单片机并不将实际密码(m)写入EEPROM,而是读取EEPROM中的存放码(m1)与之比较,比较结果正确就产生返回码(m2),传送给PC机;结果错误就传送随机码给PC机。
3. 结束语
通过以上分析,我们知道,在进行加密狗的设计时必须解决以下几个问题:
3.1 解决加密狗芯片的电源问题
由于并行打印是一个不带+5V电源的接口,所以要使加密狗能正常工作,就必须从打印口其他引脚(如数据口)盗取电源。由于这些口驱动能力有限,同时,为了保证能给打印机提供正确的信号,加密狗芯片要求在低功耗,低电压下工作。
3.2 解决加密狗和打印机共容的问题
进行加密狗设计时必须充分了解打印口引脚及其工作状态,加密狗只能在打印适配器空闲时才允许传送密码,且应尽量减少狗的引脚输出线和输出时间。
3.3 解决加密狗密码返回问题
一般讲,密码的返回只能以状态口返加,在设计时,应尽量选取打印机少用的状态口线,不能直接并接在状态口线上,必须串接适当的电阻。
根据以上原则,通过改变硬件I/O连线和不同的加密算法就可以设计出多种加密狗,本文介绍的加密狗在实际系统中应用效果良好。
参考文献
1. 朱传乃等.微型计算机系统原理分析与维修.科学出版社,1989年10月
2. Microchip PIC12C5XX DATA SHEET.
3. Microchip NON-VOLATILE MEMORY PRODUCTS DATA BOOK.
4. Microchip Technology Inc.,PIC16/17 Microcontroller Data Book.
[upload=jpg]uploadImages/200251914213222749.jpg[/upload][upload=jpg]uploadImages/200251914214139532.jpg[/upload][upload=jpg]uploadImages/200251914215542173.jpg[/upload]
关键词: 利用 PIC12C508 单片机 实现 加密 技术
共1条
1/1 1 跳转至页
回复
有奖活动 | |
---|---|
【有奖活动】分享技术经验,兑换京东卡 | |
话不多说,快进群! | |
请大声喊出:我要开发板! | |
【有奖活动】EEPW网站征稿正在进行时,欢迎踊跃投稿啦 | |
奖!发布技术笔记,技术评测贴换取您心仪的礼品 | |
打赏了!打赏了!打赏了! |
打赏帖 | |
---|---|
与电子爱好者谈读图四被打赏50分 | |
与电子爱好者谈读图二被打赏50分 | |
【FRDM-MCXN947评测】Core1适配运行FreeRtos被打赏50分 | |
【FRDM-MCXN947评测】双核调试被打赏50分 | |
【CPKCORRA8D1B评测】---移植CoreMark被打赏50分 | |
【CPKCORRA8D1B评测】---打开硬件定时器被打赏50分 | |
【FRDM-MCXA156评测】4、CAN loopback模式测试被打赏50分 | |
【CPKcorRA8D1评测】--搭建初始环境被打赏50分 | |
【FRDM-MCXA156评测】3、使用FlexIO模拟UART被打赏50分 | |
【FRDM-MCXA156评测】2、rt-thread MCXA156 BSP制作被打赏50分 |