基于二维条形码的文书查验与信息加密传送
   来源:现代电子技术     2017年12月02日 20:54

吴伟

摘  要: 从诉讼文书查验服务处理角度入手,以松耦合度整合现有的职能管理系统,提出利用二维条形码技术对相关法律文书进行数字签名,通过智能手机等智能设备简单互操作从而实现查验相关具有法律效力文书真实性、完整性与不可抵赖性的作用,还可满足数据加密传送的需求。同时介绍了与之相关的二维码生成选型、安全性论证、增益优势。

关键字: 二维码; 公文查验; 信息加密传送; 数字签名

中图分类号: TN911?34                   文献标识码: A                            文章编号: 1004?373X(2015)02?0052?04

Official document validation and information encryption transmission based on QR code

WU Wei

(The Peoples Court of Longhua District in Haikou, Haikou 570206, China)

Abstract: Proceeding from validation of the official documents, the digital signature based on QR code technology is proposed for the related official documents to integrate the current functional management systems. The validation of truth, integrity and non?repudiation of the legal official documents can be realized by the simple interaction of smart phone and other smart equipments. It can meet the requirement of information encryption transmission. The model selection of QR code generation, security demonstration and gain superiority related to validation are introduced.

Keywords: QR code; official document validation; information encryption transmission; digital signature

近年来,不法分子通过私刻假公章伪造、篡改政府部门公文、法律文书进行诈骗的事情层出不穷,部分老百姓收到这类假的文书,由于未能冷静思考以及缺少必要的判别能力,仅凭一纸“公文”,就轻信了不法分子,从而给自己造成了不必要的财产损失。另一方面,政府部门的之间公文传送校验一直为相关部门所困扰,究其原因即是公文的凭证仅能由其中的公章进行证明,而公章伪造容易以假乱真,无法进行有效鉴定,从而导致文书真实性、完整性与不可抵赖性无法得到保障。另外由于文书大都基于明文纸面打印的原因,因此一些需要保密的数据容易会被泄漏,给有关方面造成损失。得益于智能手机市场占有率高与易于拍照的特点,容量更大、优点更多的二维条形码[1](以下简称二维码)正替代普通条形码逐渐走进人民群众的视野,只要拿着智能设备对着各种二维码“扫一扫”,即可获取相应的信息,为生活带来了便利[2]。智能设备与二维码的普及也为解决文书查验与信息加密传送工作带来了出路。

1  方案二维码应用

二维码是用某种特定的几何图形,按一定规律在平面分布的黑白相间的小方格,以图形来记录数据信息。二维码相对一维码优点[3]如下:

(1) 存储容量大,可存储4 000多个字母或1 800多个汉字信息,可满足大多数的文书信息化应用;

(2) 制作成本低,实现简单;

(3) 识别率高,具有纠错功能,即使些许破损仍能识读;

(4) 普及速度快,得益于智能手机高普及率,二维码已经慢慢走进人民群众的生活。

为了解决现有绝大部分仅通过公章证明真伪的公文以及文书易于造假、文书内容易于篡改、难以辨别、容易抵赖、明文打印的不足,本方案提供一种基于二维码进行数字签名查验文书与信息加密传达[4]的方法,该方法相对普通当事人及相关部门来说操作简单,实用性强,相关部门仅需要投入较少的软硬件设施即可杜绝假文书、篡改文书的现象。

2  设计与实现

2.1  总体设计

通过在有关部门的文书流程化系统中集成数字签名、二维码生成打印、短信或彩信、WAP(无线应用协议)交互程序、数字签名校验功能,即可满足本方案所需功能,还可按需加入IVR(交互式语音应答系统)与TTS(文本转语音)语音自助服务,提供更为人性化的服务。

2.2  普通公文二维码生成

具体流程如下:

(1) 文书查验系统为提取文书内容(全文或关键信息),如某传票文书内容简化为:案号:(2013)龙民一初字第XXX号;案由:合同纠纷;开庭时间:2013年5月21日;开庭地点:第二法庭。

(2) 加入时间戳,形成原码。

(3) 将原码经MD5摘要算法生成系统惟一查验码。

(4) 将查验码、原码信息、文书查验提示说明合并生成二维码内容。

(5) 进而通过二维码生成程序生成最终的二维码。二维码生成方案都较为实用与成熟。可根据自身部署环境进行选择。

(6) 将二维码连同文书一起打印,或是附加在文书上,二维码生成步骤结束。

采用Google Zxing[5]类库创建二维码图片方法代码如下:

public void generate(String qrString, String path,int width, int height) throws Exception {

log.info("GenerateQRCode??>start to generate qrcode."); File file = new File(path);

//创建二维码图片数据数组对象

BitMatrix bitMatrix = new MultiFormatWriter().encode(qrString,BarcodeFormat.QR_CODE,width, height);

//图片采用32位十六进制数的ARGB色彩模式进行存储

BufferedImage image = new BufferedImage(width, height, BufferedImage.TYPE_INT_ARGB);

//利用二维码数据创建图片像素,根据数组元素分别设为黑白两色

for (int x = 0; x < width; x++) {

for (int y = 0; y < height; y++) {

image.setRGB(x, y, bitMatrix.get(x, y) == true ? BLACK  : WHITE);

}

}

ImageIO.write(image, PNG_TYPE, file);

log.info("GenerateQRCode??>end to generate qrcode.");

}

2.3  加密文书二维码生成

加密文书二维码生成是在普通文书二维码生成基础上深化而来,下面以法院案件移送函为例将具体流程分解如下所述(见图1)。<E:\王芳\现代电子技术201502\Image\07t1.tif>

图1 文书二维码生成流程

按照第2.2节普通文书二维码生成第(4)步骤合并生成如下二维码内容:

查验码:…… [关于……一案,因……。根据……,现将该案移送你处,请查收。时间戳:…]

(1) 将查验码经RSA算法与对应私钥进行加密,生成文书的数字签名。

(2) 对于需要加密传送数据的文书,可将待加密的敏感信息通过RSA算法与接收方的公钥进行加密,形成密文。待加密数据如下:

被告银行账户:中国…银行,6226…,余额:…

经RSA算法与接收方的公钥进行加密,获得密文。考虑到加密算法计算量较大,加密大数据量的信息会不切实际,因此有必要限制需加密的信息量,从而保障加密功能的时效性。

(3) 将查验码、原码信息、数字签名与密文合并生成二维码内容:

查验码:……[关于……一案,因……。根据……,现将该案移送你处,请查收。时间戳:…]数字签名:…。密文:…。

随后步骤参照第2.2节,将二维码打印或是附加在文书上,生成步骤结束。

相应的核心代码简述如下:

String content = "";

String beEncrypt="";

//在信息内容后面加入时间戳

Timestamp timeStamp = new Timestamp(System.currentTimeMillis());

content+=timeStamp;

//使用MD5加密算法生成信息摘要,即查验码

String md5Code = MD5Util.MD5(content);

//查验码经RSA算法与对应私钥进行加密,生成数字签名

String signCode = RSAUtil.encryptByPrivateKey(md5Code, privateKey);

//将需加密的内容经RSA算法与接收方的公钥进行加密,获得密文

String encryptContent = RSAUtil.encryptByPublicKey(beEncrypt, targetPublicKey);

//将各部分组合形成最终二维码内容

String endContent ="查验码:"+md5Code+

content + "数字签名:" + signCode + "密文:" + encryptContent;

//根据内容生成二维码图像

QRUtil.generate(endContent, path, width, height);

//加密文书二维码生成过程结束

2.4  文书交互查验

如图2所示,文书真实性与完整性查验流程如下:

(1) 当事人收到文书后,通过普通智能设备二维码扫描应用,对准查验二维码进行扫描;扫描结果包含查验码、文书原始码信息、文书查验提示说明、数字签名与密文;

(2) 根据文书查验说明,当事人可将文书查验码以短信、WAP或拨打语音服务等方式发送至有关部门的文书查验系统;

(3) 文书查验系统接收文书查验码。通过将查验码与数据库中的记录进行比对,由于是系统惟一标识,从而实现文书真实性查验的目的;

(4) 文书查验系统发送真实性查验结果反馈给当事人,如果查验通过则在查验结果中告知进行完整性查验的相关说明与方式;

(5) 当事人根据真实性查验结果进行校验;若文书为真,当事人可选进行文书完整性查验。在文书真实性查验结果中,包含文书完整性临时查验码,当事人进行完整性查验时需附加该临时查验码;

(6) 文书查验系统接收完整性临时查验码;根据该临时查验码调取系统相关文书完整性数据;根据当事人请求方式将文书的完整性数据进行反馈;

(7) 当事人通过智能设备获取到文书完整性数据;将文书完整性数据与纸面文书进行比对;若比对结果为通过,则说明文书完整性未被破坏,验证通过。

图2 文书交互查验流程

2.5  加密数据提取

包含文书查验方案二——文书本地一次性查验所与密文解密流程,具体步骤如下:

(1) 接收方从二维码扫描结果中提取文原始码;对文书原始码使用MD5摘要算法进行计算,获取文书信息摘要;接收方从二维码扫描结果中提取数字签名。

(2) 对数字签名通过RSA算法与发送方公钥进行计算,获取原始文书摘要信息; 将摘要信息进行比对。

(3) 若结果为不通过,则说明文书原始码内容或二维码信息在传送过程中已被篡改。

(4) 接收方需与发送方联系进行二次确认,以保护双方的利益。

(5) 若比对结果为通过,则可对二维码中密文解密,可先提取二维码中的密文信息;对密文通过RSA算法与接收方的密钥进行计算,获取其中的原始信息,从而达到使用二维码传送加密信息的目的。

相应的核心代码简述如下:

// 将提取的正文实施摘要算法

String md5Code = MD5Util.MD5(content);

//将提取的数字签名经RSA算法与发送方公钥进行解密

String otherMd5Code = RSAUtil.decryptByPublicKey(signCode, sourcePublicKey);

//将摘要信息进行比对

if(!md5Code.equals(otherMd5Code)){

alert("文书信息已被篡改,请联系发送方进行二次确认");

return;

}

//比对通过

//将密文经RSA算法与接收方的私钥进行解密,获取原加密信息

String sourceContent = RSAUtil.decryptByPrivateKey(beEncrypt, targetPrivateKey);

//加密数据提取过程结束

3  安全性论证

整个基于二维条形码的文书查验与信息加密传送方案交互过程相对简单安全,交互逻辑灵活可靠,受攻击的方式较为局限,因此整个架构风险系数较低。具体说明如下:

(1) 由于整个文书查验系统与当事人网络环境物理隔离,不存在网络攻击的可行性,安全系统大大增加。

(2) 整个文书查验系统与当事人仅通过移动通信网进行短信或WAP交互,如果只是进行短信交互,攻击方式则仅为信息群发攻击,但由于短信攻击需要借助移动通信网,因此攻击成本较高,风险较高。

(3) 安全性较强的交互查验逻辑。文书查验系统只允许同特定当事人手机号码进行交互,这些特定的手机号码是当事人立案时预留的,这样就在很大程度上减少了不法分子对系统进行攻击。在进行文书查验时,某个当事人在一定时期内只能进行一次查验,这样就避免了单个手机号重复攻击的可能。所有的查验过程都需要进行日志记录,方便后期溯源。加入统计分析算法,方便锁定特定攻击嫌疑人。

(4) 文书查验方案二与数据加密传送均采用RSA公开密钥密码体制,RSA算法是第一个能同时用于加密和数字签名的算法,也易于理解和操作。RSA是被研究得最广泛的公钥算法,从提出到现今的三十多年里,经历了各种攻击的考验,逐渐为人们接受,普遍认为是目前最优秀的公钥方案之一,因此RSA公开密钥密码体制在很大程度上保障了文书查验的准确性与数据加密传送的保密性。

参考文献

[1] 杨秋英,陈立潮,高兴元.二维条码技术现状及前景展望[J].山西电子技术,2002(2):20?23.

[2] RUSS A. Two dimensional bar codes [J]. Adams Communications, 2002, 27(4): 15?18.

[3] 李媛,钱琳林,孙云兰,等.基于二维条码的身份验证系统[J].微计算机信息,2008,24(1):62?64.

[4] 殷美桂.数字签名技术的应用[M].电脑知识与技术,2009(36):12?14.

[5] Google Project Hosting. Zxing [EB/OL]. [2013?04?04]. http://code.google.com/p/zxing.

[6] 岳彬,张晓钟,余向明.二维条码在小包装油料收发管理中的应用研究[J].现代电子技术,2008,31(18):38?40.

//在信息内容后面加入时间戳

Timestamp timeStamp = new Timestamp(System.currentTimeMillis());

content+=timeStamp;

//使用MD5加密算法生成信息摘要,即查验码

String md5Code = MD5Util.MD5(content);

//查验码经RSA算法与对应私钥进行加密,生成数字签名

String signCode = RSAUtil.encryptByPrivateKey(md5Code, privateKey);

//将需加密的内容经RSA算法与接收方的公钥进行加密,获得密文

String encryptContent = RSAUtil.encryptByPublicKey(beEncrypt, targetPublicKey);

//将各部分组合形成最终二维码内容

String endContent ="查验码:"+md5Code+

content + "数字签名:" + signCode + "密文:" + encryptContent;

//根据内容生成二维码图像

QRUtil.generate(endContent, path, width, height);

//加密文书二维码生成过程结束

2.4  文书交互查验

如图2所示,文书真实性与完整性查验流程如下:

(1) 当事人收到文书后,通过普通智能设备二维码扫描应用,对准查验二维码进行扫描;扫描结果包含查验码、文书原始码信息、文书查验提示说明、数字签名与密文;

(2) 根据文书查验说明,当事人可将文书查验码以短信、WAP或拨打语音服务等方式发送至有关部门的文书查验系统;

(3) 文书查验系统接收文书查验码。通过将查验码与数据库中的记录进行比对,由于是系统惟一标识,从而实现文书真实性查验的目的;

(4) 文书查验系统发送真实性查验结果反馈给当事人,如果查验通过则在查验结果中告知进行完整性查验的相关说明与方式;

(5) 当事人根据真实性查验结果进行校验;若文书为真,当事人可选进行文书完整性查验。在文书真实性查验结果中,包含文书完整性临时查验码,当事人进行完整性查验时需附加该临时查验码;

(6) 文书查验系统接收完整性临时查验码;根据该临时查验码调取系统相关文书完整性数据;根据当事人请求方式将文书的完整性数据进行反馈;

(7) 当事人通过智能设备获取到文书完整性数据;将文书完整性数据与纸面文书进行比对;若比对结果为通过,则说明文书完整性未被破坏,验证通过。

图2 文书交互查验流程

2.5  加密数据提取

包含文书查验方案二——文书本地一次性查验所与密文解密流程,具体步骤如下:

(1) 接收方从二维码扫描结果中提取文原始码;对文书原始码使用MD5摘要算法进行计算,获取文书信息摘要;接收方从二维码扫描结果中提取数字签名。

(2) 对数字签名通过RSA算法与发送方公钥进行计算,获取原始文书摘要信息; 将摘要信息进行比对。

(3) 若结果为不通过,则说明文书原始码内容或二维码信息在传送过程中已被篡改。

(4) 接收方需与发送方联系进行二次确认,以保护双方的利益。

(5) 若比对结果为通过,则可对二维码中密文解密,可先提取二维码中的密文信息;对密文通过RSA算法与接收方的密钥进行计算,获取其中的原始信息,从而达到使用二维码传送加密信息的目的。

相应的核心代码简述如下:

// 将提取的正文实施摘要算法

String md5Code = MD5Util.MD5(content);

//将提取的数字签名经RSA算法与发送方公钥进行解密

String otherMd5Code = RSAUtil.decryptByPublicKey(signCode, sourcePublicKey);

//将摘要信息进行比对

if(!md5Code.equals(otherMd5Code)){

alert("文书信息已被篡改,请联系发送方进行二次确认");

return;

}

//比对通过

//将密文经RSA算法与接收方的私钥进行解密,获取原加密信息

String sourceContent = RSAUtil.decryptByPrivateKey(beEncrypt, targetPrivateKey);

//加密数据提取过程结束

3  安全性论证

整个基于二维条形码的文书查验与信息加密传送方案交互过程相对简单安全,交互逻辑灵活可靠,受攻击的方式较为局限,因此整个架构风险系数较低。具体说明如下:

(1) 由于整个文书查验系统与当事人网络环境物理隔离,不存在网络攻击的可行性,安全系统大大增加。

(2) 整个文书查验系统与当事人仅通过移动通信网进行短信或WAP交互,如果只是进行短信交互,攻击方式则仅为信息群发攻击,但由于短信攻击需要借助移动通信网,因此攻击成本较高,风险较高。

(3) 安全性较强的交互查验逻辑。文书查验系统只允许同特定当事人手机号码进行交互,这些特定的手机号码是当事人立案时预留的,这样就在很大程度上减少了不法分子对系统进行攻击。在进行文书查验时,某个当事人在一定时期内只能进行一次查验,这样就避免了单个手机号重复攻击的可能。所有的查验过程都需要进行日志记录,方便后期溯源。加入统计分析算法,方便锁定特定攻击嫌疑人。

(4) 文书查验方案二与数据加密传送均采用RSA公开密钥密码体制,RSA算法是第一个能同时用于加密和数字签名的算法,也易于理解和操作。RSA是被研究得最广泛的公钥算法,从提出到现今的三十多年里,经历了各种攻击的考验,逐渐为人们接受,普遍认为是目前最优秀的公钥方案之一,因此RSA公开密钥密码体制在很大程度上保障了文书查验的准确性与数据加密传送的保密性。

参考文献

[1] 杨秋英,陈立潮,高兴元.二维条码技术现状及前景展望[J].山西电子技术,2002(2):20?23.

[2] RUSS A. Two dimensional bar codes [J]. Adams Communications, 2002, 27(4): 15?18.

[3] 李媛,钱琳林,孙云兰,等.基于二维条码的身份验证系统[J].微计算机信息,2008,24(1):62?64.

[4] 殷美桂.数字签名技术的应用[M].电脑知识与技术,2009(36):12?14.

[5] Google Project Hosting. Zxing [EB/OL]. [2013?04?04]. http://code.google.com/p/zxing.

[6] 岳彬,张晓钟,余向明.二维条码在小包装油料收发管理中的应用研究[J].现代电子技术,2008,31(18):38?40.

//在信息内容后面加入时间戳

Timestamp timeStamp = new Timestamp(System.currentTimeMillis());

content+=timeStamp;

//使用MD5加密算法生成信息摘要,即查验码

String md5Code = MD5Util.MD5(content);

//查验码经RSA算法与对应私钥进行加密,生成数字签名

String signCode = RSAUtil.encryptByPrivateKey(md5Code, privateKey);

//将需加密的内容经RSA算法与接收方的公钥进行加密,获得密文

String encryptContent = RSAUtil.encryptByPublicKey(beEncrypt, targetPublicKey);

//将各部分组合形成最终二维码内容

String endContent ="查验码:"+md5Code+

content + "数字签名:" + signCode + "密文:" + encryptContent;

//根据内容生成二维码图像

QRUtil.generate(endContent, path, width, height);

//加密文书二维码生成过程结束

2.4  文书交互查验

如图2所示,文书真实性与完整性查验流程如下:

(1) 当事人收到文书后,通过普通智能设备二维码扫描应用,对准查验二维码进行扫描;扫描结果包含查验码、文书原始码信息、文书查验提示说明、数字签名与密文;

(2) 根据文书查验说明,当事人可将文书查验码以短信、WAP或拨打语音服务等方式发送至有关部门的文书查验系统;

(3) 文书查验系统接收文书查验码。通过将查验码与数据库中的记录进行比对,由于是系统惟一标识,从而实现文书真实性查验的目的;

(4) 文书查验系统发送真实性查验结果反馈给当事人,如果查验通过则在查验结果中告知进行完整性查验的相关说明与方式;

(5) 当事人根据真实性查验结果进行校验;若文书为真,当事人可选进行文书完整性查验。在文书真实性查验结果中,包含文书完整性临时查验码,当事人进行完整性查验时需附加该临时查验码;

(6) 文书查验系统接收完整性临时查验码;根据该临时查验码调取系统相关文书完整性数据;根据当事人请求方式将文书的完整性数据进行反馈;

(7) 当事人通过智能设备获取到文书完整性数据;将文书完整性数据与纸面文书进行比对;若比对结果为通过,则说明文书完整性未被破坏,验证通过。

图2 文书交互查验流程

2.5  加密数据提取

包含文书查验方案二——文书本地一次性查验所与密文解密流程,具体步骤如下:

(1) 接收方从二维码扫描结果中提取文原始码;对文书原始码使用MD5摘要算法进行计算,获取文书信息摘要;接收方从二维码扫描结果中提取数字签名。

(2) 对数字签名通过RSA算法与发送方公钥进行计算,获取原始文书摘要信息; 将摘要信息进行比对。

(3) 若结果为不通过,则说明文书原始码内容或二维码信息在传送过程中已被篡改。

(4) 接收方需与发送方联系进行二次确认,以保护双方的利益。

(5) 若比对结果为通过,则可对二维码中密文解密,可先提取二维码中的密文信息;对密文通过RSA算法与接收方的密钥进行计算,获取其中的原始信息,从而达到使用二维码传送加密信息的目的。

相应的核心代码简述如下:

// 将提取的正文实施摘要算法

String md5Code = MD5Util.MD5(content);

//将提取的数字签名经RSA算法与发送方公钥进行解密

String otherMd5Code = RSAUtil.decryptByPublicKey(signCode, sourcePublicKey);

//将摘要信息进行比对

if(!md5Code.equals(otherMd5Code)){

alert("文书信息已被篡改,请联系发送方进行二次确认");

return;

}

//比对通过

//将密文经RSA算法与接收方的私钥进行解密,获取原加密信息

String sourceContent = RSAUtil.decryptByPrivateKey(beEncrypt, targetPrivateKey);

//加密数据提取过程结束

3  安全性论证

整个基于二维条形码的文书查验与信息加密传送方案交互过程相对简单安全,交互逻辑灵活可靠,受攻击的方式较为局限,因此整个架构风险系数较低。具体说明如下:

(1) 由于整个文书查验系统与当事人网络环境物理隔离,不存在网络攻击的可行性,安全系统大大增加。

(2) 整个文书查验系统与当事人仅通过移动通信网进行短信或WAP交互,如果只是进行短信交互,攻击方式则仅为信息群发攻击,但由于短信攻击需要借助移动通信网,因此攻击成本较高,风险较高。

(3) 安全性较强的交互查验逻辑。文书查验系统只允许同特定当事人手机号码进行交互,这些特定的手机号码是当事人立案时预留的,这样就在很大程度上减少了不法分子对系统进行攻击。在进行文书查验时,某个当事人在一定时期内只能进行一次查验,这样就避免了单个手机号重复攻击的可能。所有的查验过程都需要进行日志记录,方便后期溯源。加入统计分析算法,方便锁定特定攻击嫌疑人。

(4) 文书查验方案二与数据加密传送均采用RSA公开密钥密码体制,RSA算法是第一个能同时用于加密和数字签名的算法,也易于理解和操作。RSA是被研究得最广泛的公钥算法,从提出到现今的三十多年里,经历了各种攻击的考验,逐渐为人们接受,普遍认为是目前最优秀的公钥方案之一,因此RSA公开密钥密码体制在很大程度上保障了文书查验的准确性与数据加密传送的保密性。

参考文献

[1] 杨秋英,陈立潮,高兴元.二维条码技术现状及前景展望[J].山西电子技术,2002(2):20?23.

[2] RUSS A. Two dimensional bar codes [J]. Adams Communications, 2002, 27(4): 15?18.

[3] 李媛,钱琳林,孙云兰,等.基于二维条码的身份验证系统[J].微计算机信息,2008,24(1):62?64.

[4] 殷美桂.数字签名技术的应用[M].电脑知识与技术,2009(36):12?14.

[5] Google Project Hosting. Zxing [EB/OL]. [2013?04?04]. http://code.google.com/p/zxing.

[6] 岳彬,张晓钟,余向明.二维条码在小包装油料收发管理中的应用研究[J].现代电子技术,2008,31(18):38?40.

文书 数字签名 二维码