基于ARM的安全打印机的设计与实现
2016-12-26李锋李明
李 锋 李 明
(东华大学计算机科学与技术学院 上海 201620)
基于ARM的安全打印机的设计与实现
李 锋 李 明
(东华大学计算机科学与技术学院 上海 201620)
随着信息时代的到来,信息安全已经成为全球关注的热点问题。打印作为最常用的信息共享方式之一,在给人们工作生活提供极大便利的同时,由于打印带来的信息泄密也给企事业单位造成了不可估量的损失。针对打印安全问题,设计的安全打印机采用了ARM Cortex-A8处理器S5PV210作为硬件平台,Linux作为软件平台,实现了二维码生成,二维码水印的嵌入,打印审计,打印控制以及打印记录的功能。系统通过向涉密文件中嵌入二维码水印信息可以做到打印文档的后期追踪和回收,实现了整个打印流程的闭环处理。
信息安全 安全打印 S5PV210 二维码 水印 追踪
0 引 言
目前在国外打印安全问题已经引起了极大的关注,特别是在大型的企业单位和政府机构中,部署了相应的安全打印方案来避免因打印带来的机密信息泄露[1]。然而在国内的政府机关和企事业单位中,除了部分涉密单位,其中大部分都没有对打印安全给予足够的重视,打印环境存在众多的漏洞。打印泄密不仅可能会对企业带来巨大的经济损失,还是导致政府机关信息泄露的重要渠道,给政府信息安全带来潜在危害。
为满足企事业单位以及政府机构对安全办公的需求,本文设计并实现了一种安全打印机。它通过读取RFID卡来确认打印者的身份做到打印前期的授权控制,在打印过程中对即将打印的打印文档添加相应的二维码水印作为打印文档的唯一标示,而在打印结束后将打印信息写入到数据库中进行记录,实现整个打印过程中的闭环处理。一旦发生泄密事件,可以通过提取泄密文档中的二维码水印信息,很快就能追溯到责任人。同时,在进行机密打印文档的回收时,通过扫描回收文档中的二维码,即可对服务器数据库中的已打印记录进行自动检索。
1 系统结构
安全打印机的系统结构如图1所示,安全打印机在传统的打印流程上加入了更多的安全控制环节。首先用户在发起打印任务前需得到打印授权。在管理制度上保障打印的安全。打印文档经过加密后发往打印机,打印服务器通过底层的驱动程序发给打印设备进行打印保障通信安全。打印任务发起后,安全打印机会对打印文档进行处理,根据打印文档的名字、版本、所有者、文档修改时间、打印时间、打印人员和打印文档的页码等信息,经过加密编码处理后,形成二维码,并以水印的形式嵌入到打印文档中。完成对打印文档标示,便于打印物后期处理和安全跟踪审计。打印机在接受打印内容,完成打印前,必须要通过身份读取器,对打印者的身份进行认证。打印完成后,此次打印的打印时间,打印内容,打印份数,以及打印用户等记录都会被写入打印服务器端的数据库中。
图1 安全打印机系统结构
该系统从管理制度、设备管理、通信安全、打印介质跟踪多个环节,实现打印的安全管理。并为打印的文档的回收、销毁跟踪,和泄密的追查等方面,做好了技术准备。该系统中打印文档的标示实现是一个重要环节。
水印技术是实现对文档标示的常用技术,水印一般有可见水印和不可见水印两种[2]。不可见水印对文档标示,隐密性强,不容易被破坏,但是该水印嵌入和识别算法复杂,误识率高,不适合嵌入式系统中实现;可见水印嵌入容易,但也存在着识别困难,不具备隐秘性,且信息量少,在标示串和水印图像间难于对应。
二维码是将字符串以图形的形式给予表现,其实现和识别算法都成熟简单,因此二维码适合作为文档标示水印。但是由于二维码不具备加密功能,为实现标示的隐秘性,我们需要先把标示串经过加密编码后,再把密文形成二维码。
2 信息源加密
作为打印出的文档的唯一标示码,二维码中的信息可以精确定位到打印文档的每一页。主要包括的信息有:
(1) 打印文档信息:文件名称、文档版本号、页码。
(2) 打印时间信息:文档修订时间、打印时间。
(3) 打印人员信息:文档所有人员工号、打印人员工号。
(4) 其他信息:打印机编号、备注。
二维码原始信息数据封装格式如图2所示。
图2 二维码源信息数据封装格式
二维码信息并不会以明文方式存储在二维条码中,而是通过DES进行加密后变为密文,这样可以保证在有人非法取得二维条码后也无法直接获取其中的信息内容。DES加密算法是一种对称加密算法[3],由IBM研究并公开发表的,它以64位为分组单位对原始数据信息进行加密。加密时采用美国国家安全局设计的8个S-盒(S:Substitution)和P-置换(P:Permutation),并经过16轮的迭代后产生64比特的密文信息。为了对得到的原始信息进行DES加密,首先,原始信息通过utf8编码转换后得到编码后的字节数组,然后由DES加密算法对转换后的字节数组进行加密。
3 二维码水印生成
为了保证打印安全,安全打印机在打印文档中嵌入二维码水印来实现打印文档的跟踪。二维条码是用某种特定的几何图形按一定规律在平面(二维方向上)分布的黑白相间的图形记录数据信息的符号。二维码与一维码不同的是它可以在纵向和横向两个方位同时表达信息,能够具有更多的信息含量。二维条码可以分为矩阵式和堆叠式二维条码[4,5]。目前世界上主流的二维条码,有QR码(快速响应矩阵码)、PDF417码、Data Matrix码、Code 49等。
为不影响打印内容,可见水印是嵌入到打印内容后面的,这样二维码水印在扫描识别时,会出现较多的误码,为保证二维码能被较好的识别,系统采用容错性较高的PDF417二维码作为二维码水印方案。
PDF417二维条码是堆积层结构,由符号字符组成,作为PDF417条码表示信息的基本单位,它由4个条和空构成,自左到右从条开始,每个条或空包括1-6个模块,其中4个条和4个空的总模块数为17。符号结构如图3所示。
图3 PDF417结构图
其中每一层包括:a为左空白区;b为起始符;c为左行指示符号字符;d 为1至30个数据符号字符;c为右行指示符号字符;f 为终止符;g 为右空白区。
PDF417二维条码具有信息容量大,编码范围广以及译码可靠性高等优点。可以容纳1850个大写字母或者2710个数字或1108个字节,它采用了目前世界上最先进的RS错误码控制码技术,纠错能力非常强大,这种隐含在符号内的纠错码极大地保证了译码正确率,并有效提高译码速度和可靠性,即使出现二维码部分信息丢失,也可以译码成功,有效提高了其抗干扰能力和可靠性[6]。RS码用于突发差错的校验,针对水印通常会表现为连续的位受到干扰,采用RS码非常有效。PDF417码共拥有9个错误纠正等级,每种错误纠正等级所包含的错误纠正码字也不同,纠错等级越高需要的错误纠正码字越多,当纠错等级为8时,可以将符号受污染达到50%的信号重新复现出来。在扫描提取二维码水印的过程中,倘若出现部分扫描信息丢失,利用PDF417码的错误控制码可以进行自纠正,提高了容错率。
考虑到二维码信息包含的信息量和可靠性,本系统采用了纠正等级为4,它的可存放资料量为1072字节,可以容纳如图2所示的字节信息,同时能够有32位的纠正码数。对于要编码的二维码源信息,在经过DES加密之后,密文信息由PDF417编码生成二维条码图形。我们采用了开源的iText库用于创建和生成二维码条码,使用iText提供的API可以实现文档页面布局、对文档进行加密、生成二维码和水印嵌入等功能。
水印能够为打印文档提供唯一的信息标识,是文档控制和文档回收的重要依据。为了能使二维码条码能以水印嵌入到打印文档中,通过iText的pdfStamper类提供的getoverContent方法获得当前文档的顶层图层,然后将二维条码图像嵌入文档内容上层。
考虑到文档内容可能导致水印图片在提取过程中的不完整,我们将水印分别嵌入在左上角,中间和右下角三个位置。通常,打印文档在左上角和右下角是空白区,因此选择其作为水印嵌入区域进一步保证了二维码信息能够可靠地得到提取。
在PDF417二维条码二维码的识别过程中,起始符(图3中b区)是重要的定位区,为了提高识别效率,在水印嵌入时,系统首先对打印文档进行分析,寻找竖向空白较大区域作为二维码水印嵌入的起始区。为了确定水印灰度,系统首先对打印内容灰度进行灰度直方统计,选择概率最低的灰度作为水印灰度。为提高水印识别正确率,我们在同一页打印稿中,会加入3~4个二维码水印。
4 实 现
安全打印机的设计思路是基于S5PV210的嵌入式平台,打印文档被嵌入二维码水印后通过网络传输给由S5PV210构成的打印服务器进行打印输出并记录。作为一款低功耗、低价格、高性能的嵌入式处理器,S5PV210能够满足本系统中对CPU高速度和高稳定性的需求。S5PV210使用了Cortex-A8架构(主频为1 GHz)设计而成,具有极其丰富的外设[7]。由S5PV210构成的打印服务器端包含了打印驱动模块、打印控制模块、打印记录模块三大模块部分,如图4所示。
图4 打印服务器结构
(1) 打印控制模块
打印控制模块作为本系统中极为重要的一部分,它的主要功能是整个打印流程的规划以及故障处理机制。用户在将打印文档发送到打印服务器之后,服务器端进行解密并在本地保存,但是并不会立即对打印文档进行打印,而是等待读取用户RFID卡的信息进行认证。如果认证失败,则此次打印请求不会被服务器端受理。若身份信息认证通过,在服务器端保存的文档经过打印驱动层的处理后发往打印机进行打印。在打印过程中,会专门创建一个侦听线程read_status_thread侦听打印机的状态信息。若打印机在打印过程中发生故障,故障发生时,本次打印的相关打印信息会被现场保护起来。类似缺少纸张这种可恢复故障,相应的故障代码会被发往打印用户客户端,用户在添加完纸张后可以选择继续执行本次未完成的打印任务。而像纸张卡机等不可恢复的故障,服务器端将结束此次打印任务,并将故障信息及时反馈给打印用户。
(2) 打印驱动模块
打印驱动的主要功能是接收来自PC端加密后的打印作业,解密并转换为打印机可以识别的图像数据。接着用打印机控制语言PJL将打印作业的页面布局,打印选项等设置信息发送给打印机。
打印驱动由Ghostscript,foo2zjs和libusb三个部分组成。Ghostscript在打印工作中扮演着极为重要的角色,它将打印文件转为为适应各种类型打印机的光栅文件。为了能在S5PV210平台上正常工作,需要对ghostscript进行交叉编译。在ghostscript的多个版本中,考虑到与linux2.6.35内核版本的兼容性,选择了8.70版本的ghostscript。另外一个重要的组成部分就是foo2zjs,foo2zjs是一款开源的打印机驱动,它支持使用ZjStream协议的打印机。在本系统中,foo2zjs的作用是将经过ghostscript转换后的文档最终转换为ZjStream数据流提供给打印机进行打印输出。经过过滤器转换完成的打印文档最终要通过usb通信发送给打印机,本系统采用了libusb库而舍弃了linux内核自带的usblp驱动[8]。通过libusb库提供的API[9],就可以实现与usb打印机通信完成打印内容的传送以及获得打印机的状态。
(3) 打印记录模块
为了完整地记录每次打印的历史信息,需要在服务器端部署数据库,同时考虑到嵌入式资源的有限性,系统采用了Sqlite这款开源的嵌入式关系数据库。Sqlite能够实现自包容、零配置、支持事务的SQL数据库引擎,具有使用方便、结构紧凑、高效和可靠的特点[10]。Sqlite提供了相应的c函数接口,通过这些接口即可执行标准的sql语句。打印结束后,本系统会将该次打印的时间,打印用户名,打印文件名,打印页数以及打印份数等打印信息写入数据库文件中。无论是打印正常结束,还是由于发生了不可恢复的故障导致打印中途退出,相应的信息都会被保存起来。在后期的打印审计过程中,管理者能够方便地查询存储在服务器端的打印记录,以做到打印后期的安全控制。
5 实验结果
利用本文设计并实现的安全打印机,对测试文档进行打印测试。原始的二维码信息为:16 测试文档.pdf 0001 20 20150409 20150502 0001 0001 03 作为测试,其中文档名长度为16,打印文档名为测试文档.pdf,文档版本号0001,页码20,文档修订时间2015.04.09,打印时间2015.05.02,文档所有人员工号0001,打印人员工号0001,打印机编号03,备注信息作为测试。原始明文信息经过加密后,转换后的密文信息为:31 32 20 E6 B5 8B E8 AF 95 E6 96 87 E6 A1 A3 20 20 30 30 30 31 20 32 30 20 32 30 31 35 30 38 30 39 20 32 30 31 35 30 39 31 30 20 30 30 30 31 20 30 30 30 31 20 30 33 20 E6 B5 8B E8 AF 95 E7 94 A8 E4 BE 8B。加密后的密文经过处理后生成最终的pdf417二维码并嵌入到打印文档中,打印结果如图5所示。同时,打印服务器将此次打印记录存入到数据库中。打印文档的二维码水印信息在被提取处理过程时,利用PDF417编码中的纠错码能够还原丢失的信息,得到了二维码加密信息后经过DES算法解密后成功得到了原始的二维码信息:16 测试文档.pdf 0001 20 20150409 20150502 0001 0001 03 作为测试。从实验结果可以得出,本系统在有干扰时,依然能够准确获取二维码的原始信息,表现出较高的可靠性。
图5 打印文档结果
6 结 语
本文阐述了基于ARM的安全打印机的研究和实现,通过对打印文档嵌入经过加密的二维码水印,能够唯一标示打印文档的有关信息。在打印安全方面,系统既有打印前期的身份认证机制,也有打印中期对打印文档的加密,水印嵌入和二维码添加的处理,还有打印后期的打印记录功能,做到了整个打印过程的闭环处理。与其他市面上的安全打印机相比,本文设计的安全打印机具有低成本,方便部署,以及容易扩展的优点,有着较为广阔的应用前景和实用价值。
[1] 孙芳,牛贺群,田忠.一种安全增强型打印机研究综述[C]//天津市电子学会2013年年会论文集,天津,2013:46-48.
[2] 陈霞,王希常,刘江.一种鲁棒的文档图像数字水印算法[J].信息技术与信息化,2010(1):39-42.
[3] 李联.信息安全中的DES加密算法[J].现代电子技术,2005,28(9):118-120.
[4] 周晓伟.二维条码识别技术研究[D].上海交通大学,2007.
[5] Zhong X,Lai Z,Chen Y,et al.Application of Evolutionary Encryption 2D Barcode Generation Technology in Agricultural Product Quality and Safety Traceability System[J].Asian Agricultural Research,2014,6(8):76-82.
[6] 李丽萍,周子尧,袁坚威.PDF417二维条码的识别及应用[J].数字技术与应用,2014(6):141-142.
[7] Sun H P,Gao Z G,Chen L N.Designof Intelligent Public Transportation VehicleTerminal Based on S5PV210[J].Applied Mechanics & Materials,2014,596:735-738.
[8] 宝华.Linux 设备驱动开发详解[M].人民邮电出版社,2008.
[9] 徐家.Linux下USB视频设备用户空间驱动研究与开发[D].浙江大学计算机科学与技术学院,2010.
[10] 倪天龙,张贤高,王培.数据库 SQLite 在嵌入式系统中的应用[J].单片机与嵌入式系统应用,2005 (10):35-37.
DESIGN AND IMPLEMENTATION OF ARM-BASED SAFE PRINTER
Li Feng Li Ming
(School of Computer Science and Technology,Donghua University,Shanghai 201620,China)
With the arrival of information era,information security has become a hot issue with global concerns.As one of the most commonly used means of information sharing,printing brings huge convenience to our work and daily life,but also causes immeasurable losses to the enterprises and institutions due to information leakage brought about by it.To solve the problem of printing security,the safe printer we designed uses S5PV210 of ARM Cortex-A8 processor as the hardware platform,and Linux as software platform,it implements the functions of two-dimensional code generation,two-dimensional code watermark embedment,print audit,print control and print recording.The system can achieve late track and retrieval of the printing files through embedding 2D watermark information into the classified files and thus realises the closed-loop treatment of entire printing process.
Information security Secure printing S5PV210 Two-dimensional code Watermark Tracking
2015-07-18。李锋,副教授,主研领域:嵌入式系统,物联网,移动APP开发。李明,硕士生。
TP309
A
10.3969/j.issn.1000-386x.2016.11.071