APP下载

一种基于网络的文件加密方法的研究与实现*

2014-02-10何文才关少华刘培鹤

通信技术 2014年8期
关键词:服务端解密串口

何文才,关少华,2,薛 晗,2,刘培鹤

(1.北京电子科技学院通信工程系,北京100070;2.西安电子科技大学通信工程学院,陕西西安710071)

一种基于网络的文件加密方法的研究与实现*

何文才1,关少华1,2,薛 晗1,2,刘培鹤1

(1.北京电子科技学院通信工程系,北京100070;2.西安电子科技大学通信工程学院,陕西西安710071)

当今社会互联网已完全融入到人们的日常生活和工作当中,网络极大地方便了人们获取和传递信息。为了让数据加密适应网络时代更多应用场景的需求,在Visual Studio 2010平台上构建了一种网络文件加密系统,系统采用C/S架构,客户端完成用户界面和用户操作处理功能,服务端实现具体的加解密功能。系统应用于OSI参考模型的应用层上,采用了端到端的加密方式,文件在网络上以密文形式传输,确保了文件在传输过程中的安全性。

文件加密 NOEKEON RSA 网络编程 USBKey

0 引 言

近年来,随着云计算发展的突飞猛进,越来越多的核心业务以及重要的数据被存放在了云端,这样一来就使得这些机密数据的安全性就只能单方面依靠云服务供应商了。目前而言,确保云端私有数据安全性的最佳方法之一就是对传输的数据和存储的数据进行加密处理,这样可以让私有数据保密于其他用户甚至云计算服务供应商。因此我们可以引入作为第三方的云加密服务供应商,将要存储在云计算服务供应商的数据进行相关加密处理,以此来确保数据的安全性、机密性。

在云计算、云加密的大背景下,我们设计了该网络文件加密系统,该系统实现了通过网络传输将客户端上的待加密文件上传到服务端进行加密,再通过网络将密文回传给客户端。该系统还利用了USBKey,对用户进行身份认证以及对加密密钥进行保存。

1 预备知识介绍

1.1 RSA算法

RSA算法[1]是公开密钥加密算法中的代表算法,以发明者的名字命名:R.Rivest,A.Shamir和L.Adleman。RSA算法利用数论的基本知识,其安全性是基于大整数因式分解这一数学难题,能够抵抗到目前为止已知的所有密码的攻击。

(1)密钥生成

A.产生两个大素数p和q,p和q是保密的;

B.计算n=p·q,欧拉函数φ(n)=(p-1)·(q-1),n是公开的;

C.随机选择满足条件gcd(e,φ(n))=1的e,即e与φ(n)互素,e作为公钥是公开的,加密密钥就是(e,n);

D.计算满足e·d≡1(modφ(n))的d作为私钥,d是保密的,解密密钥即为(d,n)。

(2)加解密

A.加密运算:使用公钥e和要加密的明文m进行c=me(modn)运算即得密文;

B.解密运算:使用私钥d和要解密的密文c进行m=cd(modn)运算即得明文。

1.2 NOEKEON算法

NOEKEON[2]是由比利时的Joan Daemen、Michael Peeters、Gilles Van Assche和Vincent Rijmen共同设计的一个分组密码,其密钥长度和分组长度均为128 bit,整体结构采用的是16轮SP网路,它的每个基本模块都是对合的,这样可以使加解密过程相似,另外设计者还使用了Serpent的“Bit-Slice”技术,相当于使用4×4的S盒。目前最好的理论分析结果是可以构造9轮的线性逼近,其优势为2-62。该加密算法可以在各种平台上安全而有效的实现,在Pentium II(200 MHz)系统下,NOEKEON的软件加密速度可达49 Mbit/s,该算法的高效性、高安全性使其能够很好地适用于文件加密的需要。

(1)加密函数

(2)解密函数

(3)轮函数

(4)各功能模块

这里Key代表轮密钥,State代表128比特中间变量,Roundct为轮常数,取自以下十六进制数80、1B、36、6C、D8、AB、4D、9A、2F、5E、BC、63、C6、97、35、6A、D4,加密时从左向右依次选取,解密时从右向左依次选取。Gamma为非线性模块,Theta为密钥相关模块,Pi1和Pi2为移位运算模块,其中Theta、Pi1和Pi2为扩散层函数。

1.3 USBKey认证技术

本系统采用了基于数字签名技术[3]的挑战/响应(又作冲击/响应)式认证方式,它是一种单向认证的认证方式,挑战-响应式的认证简便易行,安全性高,认证的过程对用户透明。

传统的数字签名技术,密钥保存在计算机的硬盘中,因此很容易被窃取。攻击者窃取了用户的签名密钥后,就可以冒充用户进行签名,使得数字签名的安全性大大降低。在挑战/响应式的认证中,用于数字签名的密钥保存在用户的USBKey内,由于USBKey硬件设计的特殊性,攻击者不能通过网络上的计算机获取存储在用户持有的USBKey内的密钥。即使攻击者获取了用户持有的USBKey,由于USBKey内置保护电路,攻击者不能物理地获取用户的密钥。这就保证了数字签名的安全性,也保证了认证的安全性[4]。

其具体过程如下所示:当用户需要登录系统进行加解密操作时,客户端首先需要对服务端提出登录请求。服务端维护着一个密钥库,其中保存着所有用户各自对应的公钥信息,当服务端接收到客户端的验证请求后,在本端随机生成一个随机数,之后利用该用户的公钥对它进行加密,并将所得结果发送给客户端,即该认证方式的“冲击”。当客户端接收到该数据后,便将其传入USBKey,USBKey使用内部存储的该用户对应的RSA私钥对该数进行解密运算,并将解密的结果传送给服务端,即该认证方式的“响应”。当服务端接收到客户端发送的解密结果后,就将该数与原始随机数进行比对,如果比对结果一致,则认为该用户是合法用户。如果比对结果不一致,则认为该用户为非法用户。

2 网络文件加密系统的设计

2.1 系统的整体结构设计

系统运行流程如图1所示。

图1 系统运行流程Fig.1 Flow chart of system operation

本系统由客户端(Client)以及服务端(Sever)组成。需要加密的用户向客户端提供待加密文件,通过客户端添加文件、设置输出目录并生成密文文件。对于需要加密的用户来说,系统的客户端与服务端是一体的,客户端完成用户界面和用户操作处理功能,服务端完成具体的加密步骤。在文件加密服务过程中,服务端返回处理结果,客户端与服务端均可应用于不同的主机实体上。为了确保数据在传输线路上的安全性,在数据发送之前将会利用NOEKEON算法进行加密,并且在对端接收到数据之后再利用相同密钥对其进行NOEKEON解密使数据还原进而进行下一步操作,其中所使用的传输密钥由收发两端提前协商确定并集成在程序中。

2.2 系统的客户端

客户端实现的主要功能包括USB串口通信、加密文件选择、保存路径选择、加密选项、解密选项,详细功能描述如下:

1)USB串口通信:实现客户端与USBKey的数据交互。

2)文件选择:调用文件系统中文件对话框里选择文件的功能,以对话框、列表等形式导入待加密的文件。

3)加密选项:通过点击客户端的加密按钮,启动服务端的加密程序,弹出待加密文件选择对话框以及加密后文件保存路径选择对话框。

4)解密选项:通过点击客户端的解密按钮,启动服务端的解密程序,弹出待解密文件选择对话框以及解密后文件保存路径选择对话框。

5)传输模块:加密传输,利用NOEKEON算法将待传送的数据进行加密并发往服务端,或将接收到的来自服务端的数据利用NOEKEON算法进行解密。

2.3 系统的服务端

服务端主要由以下模块构成,传输模块、NOEKEON文件加解密模块、RSA加解密模块,详细功能描述如下:

1)传输模块:利用与客户端协商的传输密钥进行数据的NOEKEON加密传输;将客户端发送过来的消息进行处理使其成为准确的指令。

2)NOEKEON加解密模块:从客户端获取用户的NOEKEON根密钥(保存在用户的USBKey中);对接收到的数据进行NOEKEON加解密操作。

3)身份认证模块:利用random函数生成随机数R,并使用服务端保存的用户公钥对该随机数进行

RSA加密;将接收到的客户端解密后的随机数R′与

R进行比对,相等则通过验证。

2.4 USBKey

USBKey具有独立的CPU和存储结构,因此为USBKey和密码技术结合带来可能。它在本系统中需具备如下几点功能:存储用户RSA私钥、存储用户NOEKEON根密钥、实现RSA算法、对用户登录的PIN值进行验证。

3 网络文件加密系统的实现

3.1 C/S模式下网络程序的Socket通信

Windows Sockets[5]提供了对传输层(OSI第4层)的直接访问,为了保证传输的可靠性,本系统采用的是基于TCP(面向连接)的socket编程。

3.1.1 服务端程序流程

1)创建套接字(socket)。

2)将套接字绑定到一个本地地址和端口上(bind)。

3)将套接字设为监听模式,准备接收客户请求(listen)。

4)等待客户请求到来;当请求到来后,接受连接请求,返回一个新的对应于此次连接的套接字(accept)。

5)用返回的套接字和客户端进行通信(send/ recv),为了保证传输数据的安全性,通信数据利用NOEKEON算法进行加密。

6)关闭套接字。

3.1.2 客户端程序流程

1)创建套接字(socket)。

2)向服务端发出连接请求(connect)。

3)和服务端进行通信(send/recv),同样,为了保证传输数据的安全性,通信数据利用NOEKEON算法进行加密。

4)关闭套接字。

客户端应用程序必须能够定位和识别一个服务端的socket,服务端应用程序通过对自己的socket命名来建立其身份识别,这样客户端才能够引用它,从而建立socket连接。一个TCP/IP的socket名称包含IP地址、端口号以及协议。客户端能够通过Windows Sockets的服务名函数找到服务端的标准端口号,而且,如果知道服务端的主机名,利用Win-dows Sockets的主机名解析函数,可以很容易地找到服务端的IP地址。

3.2 客户端与USBKey的串口通信

利用VS2010的Mscomm控件在客户端编写串口通信程序,实现与USBKey的信息交互。

1)利用CreateFile函数逐一打开客户端的串口,根据返回的句柄值判断是否为有效端口,进而自动识别已插入USBKey的串口号。

2)定义CMscomm类的对象,并且对串口属性进行初始化,打开串口。

3)利用put_Output函数向USBKey发送数据。

4)接收串口到达的来自USBKey的数据:串口通信采用事件驱动方式,利用MSComm控件的On-Comm事件可以捕获相应通讯事件(如串口有数据到达),并且可以在OnComm事件处理函数中加入与该通讯事件相对应的处理代码,对来自USBKey的消息进行正确及时的响应。

4 结 语

本文提出的基于网络的文件加密系统已成功实现了服务端对客户端进行远程加解密操作,并且通过使用USBKey,服务端成功对用户进行了身份认证,确保了操作人的合法性。后续还会加上对服务端的合法性认证,使其成为双向身份认证进一步提高系统安全性。

随着大数据时代的到来,数据正以指数速度迅速膨胀,其中包括大量敏感数据、隐私数据。对于大数据,现有的加密系统在加密效率上已无法满足需要,因此可以在该系统的基础上进行改进,将数据分段上传到多个云加密服务提供商进行多Key加密,这样就极大的提高了大数据文件的加密效率以及安全性。

[1] 卢秀慧.基于RSA快速加密算法的网络文件加密系统设计[D].太原:中北大学,2013.

LU Xiu-hui.File Encryption Based on RSA Encryption Algorithm Fast Network System Design[D].Taiyuan:U-niversity of North,2013.

[2] 吴文玲,张月玲.关于NOEKEON分组密码[J].中国科学院研究生院学报,2002,19(02):168-171.

WU Wen-ling,ZHANG Yue-ling.About NOEKEON Block Cipher[J].Journal of Graduate School of Chinese Academy of Sciences,2002,19(2):168-171.

[3] 刘传领,范建华.RSA非对称加密算法在数字签名中的应用研究[J].通信技术,2009,42(03):192-193.

LIU Chuan-ling,FAN Jian-hua.RSA Asymmetric Encryption Algorithm in The Application of Digital Signature Research[J].Journal of Communications Technology, 2009(3):192-193.

[4] 王俊锋.USBKey认证研究与实现[D].武汉:华中科技大学,2009.

WANG Jun-feng.Research And Implementation of USBKey Authentication[D].Wuhan:Huazhong University of Science and Technology,2009.

[5] 王广伟,李维钊.Windows Sockets网络编程[J].计算机应用研究,2000,17(08):51-54.

WANG Guang-wei,LI Wei-zhao.Windows Sockets Network Programming[J].Computer Application Research, 2000,17(8):51-54.

HE Wen-cai(1956-),male,professor,M.Sci.,mainly working at wireless data communication,network security,coding theory.

关少华(1987—),男,学士,主要研究方向为信息安全;

GUAN Shao-hua(1987-),male,B.Sci.,majoring in information security.

薛 晗(1989—),男,学士,主要研究方向为信息安全;

XUE Han(1989-),male,B.Sci.,majoring in information security.

刘培鹤(1972—),男,学士,主要研究方向为信息安全。

LIU Pei-he(1972-),male,B.Sci.,majoring in information security.

Research and Implementation of A File Encryption Method based on Network

HE Wen-cai1,GUAN Shao-hua1,2,XUE Han1,2,LIU Pei-he1
(1.Beijing Electronic Science&Technology Institute,Beijing 100070,China;2.Xidian University,Xian Shaanxi 710071,China)

Nowadays,the Internet has completely integrated into people's daily life and work,and it is greatly convenient for people to obtain and transmit information.In order to make data encryption to meet the needs of more application scenario,a network file encryption system is built in Visual Studio 2010 platform.The system uses C/S architecture,the client completes the function of user interface and user operation,and the server implements specific encryption step.The system is applied to the application layer of the OSI reference model,with the end-to-end encryption.Files on the network are transmitted in the form of cipher text,thus to ensure the file security in the transmission process.

file encryption;NOEKEON;RSA;network programming;USBKey

TP309.7

A

1002-0802(2014)08-0946-05

10.3969/j.issn.1002-0802.2014.08.021

何文才(1956—),男,教授,硕士,主要研究方向为无线数据通信、网络安全、编码理论;

2014-05-09;

2014-06-09 Received date:2014-05-09;Revised date:2014-06-09

猜你喜欢

服务端解密串口
解密“热胀冷缩”
浅谈AB PLC串口跟RFID传感器的通讯应用
解密“一包三改”
炫词解密
云存储中基于相似性的客户-服务端双端数据去重方法
新时期《移动Web服务端开发》课程教学改革的研究
在Windows Server 2008上创建应用
USB接口的多串口数据并行接收方法探索
基于蓝牙串口适配器的GPS接收机与AutoCAD的实时无线通信
解密“大调解”