防信息泄漏键盘的设计与实现
1 键盘工作原理概述
键盘是计算机中最通用的设备,也是除显示器外信息最容易被截获并被复现的设备。按照红黑分离式防信息泄漏原理,我们成功地开发了红黑分离式防信息泄漏键盘。
首先分析一下键盘的工作原理。现在的键盘主芯片只有1个。1个键盘由专用芯片、按键和接口3部分组成。其中专用芯片提供主机接口、行线、列线及键盘分系统控制微程序;按键被安排在行列线的交叉点上;主机接口共4根线:电源、地、时钟、数据。工作原理如下。
① 时钟和数据线在主机方和键盘方的引脚都是OC门,正常时电平为高。主机和键盘任何一方都可以把这两根线上的电平拉低。当两根线都为高时,键盘可以发数据;当时钟为低时,禁止键盘发送数据;当时钟为高、数据为低时,表示主机要发送命令,键盘要准备接收。
② 加电后键盘开始自检,如自检正常,则向主机发出AAH,并开始扫描按键。
③ 判断出有键按下后向主机发这一键的扫描码并开始计时,然后继续扫描。若0.5 s后,这个键仍未抬起,且没有新键按下的话,就要连续发这一键的扫描码:每秒30个。最多支持3个键同时按下。在0.5 s内若有新键按下的话,就为新键计时。
④ 待有键抬起时发这一键的结束码。
⑤ 收到主机发来的命令码后,键盘发FAH以应答,并开始执行这一命令。
键盘与主机通信的数据规则是:每组数据由11位组成:1位启始位(逻辑0)、8位数据位(低位在前)、1位校验位(奇校验)、1位停止位(逻辑1)。 其数据位的数据格式为:
时钟是键盘分系统发出的方波,周期约为80μs下降沿有效,只在发码的时候才有时钟。每个键有1个扫描码。主机还会发一些命令。表1给出了每个键的扫描码。
表1 键盘扫描
这是一个开放式的工业标准,PC机的键盘都是这样的。其与主机的通信必须按上述标准执行。这为零配件的生产、维修、使用提供了极大的方便,但同时也使键盘按键造成信息泄漏成为了可能。
2 键盘信息泄漏的分析
为了验证键盘信息泄漏的电磁场的特性,进行如下试验:当键盘连续保持按下"H"键时,用频谱仪测量键盘与主机连接的信号线的传导发射特性,结果如图1所示。
图1 键盘的传导发射特性
当按不同的键时,频谱仪接收到的谱线发生频移。按信息的相关原理证明,所得的谱线与按键信息相关,说明其中含有键盘的扫描码信息。该信息为键盘编码,并将其定义为红信号。
下面具体分析一下键盘产生的红信号走过的路径。图2是普通键盘的电路图,是用8051单片机实现的。
图2 普通键盘电路
图2中键阵列部分的引脚(P0、P2和P1的一部分)流过的是高低变换的电平,用以判断哪个键按下了,哪个键抬起了。这些信号即使被截获也是没有意义的,因此,将它们定义为黑信号。此外复位电平、晶振等也为黑信号。
键盘有2根信号线与主机相连,即时钟线(KBDCLK)和数据线(KBCDATA)。时钟线提供键盘与主机通信时的时钟信号,由键盘发出,下降沿有效。也就是说在每个时钟的下降沿,主机将键盘准备好的数据读入累加器"ACC"中,读到有效的"停止位"后送CPU处理。但对于同一种键盘来说,时钟的周期、频率、电平高低都是一样的;对于不同键盘会略有不同。在同一个键盘中,发出的所有数据的时钟都是相同的。所以这一信号与按键信息无关,也是黑信号。键盘有不同的键,它们被依此选通后,将通过数据线发出相应的键码数据传送给主机,所以,图2中只有数据线上走的是红信号。
下面再分析一下在芯片内部的红信号的通路情况。图3为8051的内部框图。
图3 8051框图
图3中以空心箭头表示红信号的路径。在8051内部,这一部分发出列扫描电平,读入行扫描电平,键按下后ALU通过计算将放在累加器ACC中。ACC再一位一位地送到P3的某个引脚上。在芯片内部,这一红信号是串行二进制码数据,其波特率为12.5 Kbps,脉冲宽度为80μs,转换时间为 1.4μs,奇校验。具体波形如图4所示。
图4 键盘发"H"的扫描码波形
通过上述试验可知,键盘中红信号的路径是从微处理器中的累加器开始,经一个数据引脚至主机数据口止的一段电路上。
键盘扫描周期谐波的RF辐射有两种主要的威胁:其一为攻击键盘电缆在其响应频率谐波的辐射;其次是攻击被非线性交叉效应调制的返回信号中被检波的扫描码。
3 红黑分离式防信息泄漏键盘
3.1 设计
为了预防键盘泄密,我们研制了红黑分离式防信息泄漏键盘。这种键盘使用光信号传输数据,键盘与主机间用塑料光缆连接,键盘以电池供电,使其最大限度地减小电磁辐射。
所设计的低电压电路,用2节5号电池供电。使用低电压的8051单片机作主芯片,实现键选扫并发送数据。为了省电,设计中采用一种技术,即在没有键按下时单片机处于休眠状态。
普通键盘的编码是固定的标准值,如表1所列。这种明码如果防御不当,一旦被截获将可被复现,造成严重后果。
这里的防御技术包括可编程的键盘微控制器。由于扫描周期是随机的,在它们传送给PC机前加密扫描码。当按键时,在周期内键扫描次数将是随机的,并且改变了值,而不是原来的常数。这样,当用户打印图案或所有情况下使用时,即使由攻击者截获到该值,但给他们的不是该按键值的信息。
为此需要修改系统,自己设置密码。我们改变了键盘微控制器的程序,即使对方能够探测到键盘在工作中的电磁泄漏信息,对于截获的信息也是没有意义的。因为键盘产生并发出的光信号不是通用的扫描码,如图3中的红信号通路中传输的不再是通用扫描码,而是密码,到主机方有一个相应的单片机接收密码,并转换成键盘标准码送往主机。主机方的这一机构密封在屏蔽机箱的内部,电磁波不会泄漏出来。加密编码还有一个好处,就是可以经常更换编码方式,这一点对于机要部门很有用。
这里只涉及PC 机的设备驱动程序,并将其固化在键盘微控制器中。
下面主要讨论键盘的设备驱动程序或者称为键盘微控制器程序算法。
① 实现的功能与第1节中描述的普通键盘的功能完全相同。
② 键盘要连续扫描每一个键,遇到一个键按下了就要发出数据说明并开始记时。若在0.5 s之后这个键还没有松开,就连续发这一键,每秒30个。
③ 在记时过程和连续发码过程中,还不停顿地监视其它键。
④ 在连续发一个键时,若有其它键按下就停止发这个键,发新按下去的那个键并开始为其记时。
⑤ 若有键抬起,要发一个结束码给主机,告之这个键已抬起。
⑥ 在RAM中的位寻址区中固定104位,每一位为一个键提供标志。扫描到某个键时,先查看相应的位。这个键以前按下了,设这一位是1;这个键以前没按下,设这一位是0。然后再看现在按下没有,现在刚按下发扫描码,现在没按下就去处理下一个键,现在抬起来了就发结束码。
⑦ 这104个键要轮流扫描,同时要计时。如有键一直按着没抬起来,要在0.5 s之后连续发,每秒发30个。同时按下的键达到4个时,就不再记新的了。
根据上述算法键盘微控制程序编程流程如图5所示。
图5 键盘程序流程
3.2 实现
红黑分离式防信息泄漏键盘中,单片机选择了低电压芯片,光缆选择了直径1 mm的塑料光缆。在键盘结构上按红黑分离规则进行了结构和电路两部分设计,做成了样机,并进行了小批量生产。图6是我们研制出的红黑分离式防信息泄漏键盘。
图6 TEMPEST-111型键盘
红黑分离式防信息泄漏键盘可靠性很高,信息安全测试技术指标可达A型机标准。用频谱仪测试该红黑分离式防信息泄漏键盘时,结果如图7所示。由测试结果可以看出已没有电磁辐射了。
图7 TEMPEST键盘发"H"时的频谱
- ISO72x系列数字隔离器的高压使用寿命(02-11)
- 隔离技术在嵌入式系统接口中的应用(05-30)
- 单片机与SJA1000 CAN控制器接口电路(07-24)
- 嵌入式系统接口应用中的隔离技术及其设计(01-17)