当前位置:文档之家› 在企业局域网中实现数据加密和数字签名

在企业局域网中实现数据加密和数字签名

902006.10 引言在当今信息社会,计算机网络得到了突飞猛进的发展。

计算机网络日益成为工业、农业和国防等领域的重要信息交换手段,并逐渐渗透到社会的各个领域。

企业实现无纸化办公,提高工作效率已是大势所趋。

随着无纸化办公的发展,计算机网络的安全越来越受到重视,防止信息被未经授权泄露、篡改和破坏等都是亟待解决的问题。

在Internet上,数字签名作为一项重要的安全技术,在保证数据的完整性、私有性和不可抵赖性方面起着极为重要的作用。

数字签名在Internet上的应用需要专门的数字证书颁发认证机构(CA),统一管理数字签名的应用和校验。

但是,由于部分企业的信息的特殊性和重要性不能在互联网上传送,因此企业内部局域网不能与Internet连接。

基于此数字签名在局域网中的使用受到限制。

本文利用密码学的知识,建立了企业内部局域网的文件加密和数字签名系统,成功地实现了企业内部局域网中的数据安全传送。

柳州铁路机车车辆工业贸易总公司下属车桥公司于2005年组建企业局域网,并且与总公司内部局域网连接。

通过网络的连接基本无虚再通过人工传递书面文件或纸张资料,解决了总公司与车桥公司两个上下级公司虽处于两个不同地域而又需要频繁交换文件资料或其他信息的问题。

同时,增强了企业信息传递、发布的实时性。

为保证例如公司财务报表、销售与生产计划、员工考评信息等内部消息传送的真实性与安全性。

本文以此为背景尝试了基于以下技术以及主要过程的解决方案。

1 公钥加密技术原理数据加密技术就是对信息进行重新编码,从而隐藏信息内容,使非法用户无法获取信息的真实内容的一种技术手段。

目前,数据加密主要使用的有对称密钥加密和公钥加密(也称非对称密钥加密)两种技术。

对称密钥加密技术中,加密和解密使用相同的密钥,最常用的是 DES(Data EncryptionStandard)算法,DES算法是公开的。

DES内部的复杂结构对信息安全起了重要作用,使其保密性仅取决于对密钥的保密程度。

公钥加密技术中,加密和解密使用不同的密钥,每个用户有一对密钥:公钥KU和私钥KR,KU可以公开,KR由用户自已保存。

非对称密钥加密技术常采用RSA算法。

RSA算法的特点有以下四点:(1)由用户A的公钥KUa加密的信息只能通过A的私钥KRa来解密,并且用A的私钥KRa加密的信息只能用公钥KUa解密;(2)加密秘钥不能同时用于解密;(3)在计算机上很容易产生成对的公钥和私钥;(4)若攻击者仅仅已知KU(或KR),则在计算上推导出相应的KR(或KU)是不可行的。

2 数字签名技术原理数字签名技术是在传输的数据信息里附加一些特定的数据或对数据信息作密码变换,这种附加数据或密码变换使接收方能确认信息的真正来源和完整性,并且发送方事后不能在企业局域网中实现 数据加密和数字签名摘要:本文介绍了网络安全中的公钥加密和数字签名技术的基本原理。

详细阐述了在企业内部局域网中实现数据加密和数字签名系统的方法以及系统的管理和实际应用,并利用 Microsoft公司提供的加密应用程序接口CryPto API编制了客户端软件。

关键词:公钥加密;数字签名;局域网邓珂桂林电子工业学院计算机系 广西 541004作者简介:邓珂(1980-),男,研究方向:计算机网络技术及应用。

912006.1否认发送的信息,而接收方或非法者不能伪造或篡改发送方的信息。

数字签名类似于手工签名,是手工签名的数字实现。

下面是本系统利用公钥加密体制进行数字签名的具体实现过程(图1为过程表示框图)。

(1)生成信息摘要发送方对要发送的信息迸行Hash运算,形成信息摘要。

Hash算法是一类符合特殊要求的散列函数,这些特殊函数对输入的信息数据没有长度限制,对任何输入的数据都能生成固定长度的摘要输出,由输入信息能方便地算出摘要,而难以对指定的摘要生成原来的输人信息,并且输入两次不同的信息难以生成相同的摘要。

(2)加密摘要发送方用自己的私钥对生成的信息摘要加密,形成原始信息的数字签名。

(3)发送信息发送方将要发送的原始信息和数字签名一起加密后形成最终传输形式的密文发送给接收方。

(4)接收方验证签名接收方收到密文后先对其解密分离出信息和数字签名后,对接收到的信息作Hash运算,得到原文的摘要,再用发送方的公钥解密接收的数字签名,然后用自己计算出的信息摘要与解密得到的信息摘要进行比较,如果相同说明信息是真实的,如果不相同,说明信息是不可信的或被篡改的。

发送方不可否认所发送的信息,因为其他人无法伪造他的数字签名(除非其私钥被窃取)。

图1 数字签名的具体实现过程3 局域网中系统的管理在局域网中文件加密和数字签名系统的管理主要是对服务器端公钥环的管理。

管理员应该是一个有最终仲裁权限的管理小组,他们主要的工作有以下几个方面:(1)公钥的申请登记当新用户加入时,用户把他的公钥和用户信息以除本系统以外的其他安全方式递交给管理员。

管理员确认后,把用户密钥和资料加入到公钥环中。

(2)密钥的备份和恢复为了系统的稳定和安全,管理员应定期对公钥环进行备份,在系统出错或崩溃时负责数据的恢复。

(3)公钥环的更新当用户的私钥发生泄密或丢失不能继续使用时,需要以其他方式通知管理员并可重新向管理员申请加入新的的公钥。

管理员负责更新公钥环,这主要包括将原来的公钥移出并转移到相关数据库中以及向公钥环添加新的用户公钥。

(4)公钥的吊销当用户要离开单位或其他原因不再使用本系统时,管理员负责将其公钥从公钥环中清除并转移到相关数据库中保存。

4 用户在局域网中使用系统的具体步骤(1)当用户第一次使用该系统时,首先要安装客户端软件,利用客户端软件生成用户的公钥和私钥,私钥存储在用户计算机内部。

然后用户把他的公钥和用户信息以除本系统以外的其他安全方式递交给管理员。

管理员收到信息后,根据其他手段确认用户的资料正确后,把用户的公钥和资料加入到公钥环中,并用用户公钥把确认信息加密后发送给用户,用户得到确认信息后就可以使用文件加密和数字签名了。

(2)当用户之间传送带有数字签名的文件时,发送方利用客户端软件产生要发送的文件的数字签名,并把文件和数字签名一起发送给接收方。

接收方收到文件和数字签名后,利用客户端软件对数字签名进行验证。

验证时客户端软件首先向服务器端索取发送方的公钥,利用发送方的公钥对数据签名进行验证。

如果验证通过,接收方可以把文件和数字签名保存,事后发送方不能否认所发送的文件;如果所传送的文件在传送中出现错误或被篡改,则数字签名将不能通过验证。

(3)当用户之间传送加密文件时,发送方首先利用客户端软件对文件加密,加密时客户端软件随机产生一个密钥,以对称加密算法用该密钥对文件进行加密,然后向服务器索取接收方的公钥,用接收方的公钥对加密文件所用的随机密钥进行加密,并把加密后的随机密钥一起写入到文件中。

922006.1发送方把加密后的文件发送给接收方,接收方收到文件后用自己的私钥可以对文件解密。

根据公钥算法的原理,利用公钥加密的数据,只能用其对应的私钥进行加密。

所以,发送方发送的加密文件只能由相应的合法接收方才能对文件进行解密。

在发送加密文件时,也可以同时使用数字签名。

5 局域网中文件加密和数字签名的具体实现在局域网中实现文件加密和数字签名采用C/S(服务器与客户端)模式,服务器端有一个数据库服务器,负责存取包括各个用户的用户信息以及用户的公钥的有效起止时间等信息的公钥环。

该数据库服务器由专门数据库管理员负责管理维护。

在客户端,我们利用Microsoft公司提供的加密接口函数CryPto API编写了客户端的程序。

客户端程序主要由以下几个功能部分组成:5.1 生成用户的密钥对(公钥和私钥)//获取缺省的密钥库的句柄if(!CryPtAcqureContext(&hProv,NULL,MS_DEF_PROV,PROV_RSA _FULL,0))//如果没有缺省的密钥库,则建立缺省的密钥库CryptAcquireContext(&hProv,NULL,MS_DEF_PROV,PROV_RSA_FULL,CRYPT_NEWKEYSET));//获取数字签名密钥的句柄if(!CryptGetUserKey(hProv,AT_SIGNATURE,&hKey))if(GetlastError()==NTE_NO_KEY)//如果没有数字签名密钥,则产生数字签名密钥对CryptGenKey(hProv,AT_SIGNATURE,CRYPT_EXPORTABLE,&hKey);5.2 对文件进行数字签名CryptCreateHash(hProv,CALG_MD5,0,0,&hHash));//建立Hash句柄,对源文件作Hash运算do{//在源文件中读取dwBufferLen字节 dwcount=fread(pbBuffer,1,dwBufferLen,hSourceFile); //把数据加入到Hash中 CryptHashData(hHash,pbBuffer,dwcount,0)}while(!feof(hSourceFile));//对Hash签名,确定签名的长度CryptSignHash(hHash, AT_SIGNATURE, NULL,0,NULL,&dwSignatureLen);pbSignature=malloc(dwSignatureLen);//利用签名秘钥对Hash签名CryptSignHash(hHash, AT_SIGNATURE,szDescription,0, pbSignature, dwSignatureLen);//把数字签名写入(附加到)文件中hSignatureFile=fopen(szSignatureFile,”wb”);fwrite(pbSignature,1, dwSignatureLen, hSignatureFile);5.3 对接收到的文件和数字签名进行验证CryptCreateHash(hProv,CALG_MD5,0,0,&hHash));//建立Hash句柄,对源文件作Hash运算do{//在源文件中读取dwBufferLen字节 dwcount=fread(pbBuffer,1,dwBufferLen,hSourceFile); //把数据加入到Hash中 CryptHashData(hHash,pbBuffer,dwcount,0)}while(!feof(hSourceFile));//从数字签名文件中读取源文件的数字签名dwcount=fread(pbSignature,1,dwSignatureLen,hSignatureFile);//导入发送方的公钥CryptImPortKey(hProv,pbKeyBlobl,dwKeyBlobLenl,0,0,&hSigPublicKey);//验证签名if(!CryptVerifysignature(hHash, pbSignature,dwSignatureLen, hSigPublicKey, szDescription,0)) {if(GetLastError()==NTE_BAD_SIGNATURE)//输出数字签名验证结果 printf(“数字签名无效!”/n); }elseprintf(“数字签名有效!”/n);5.4 把公开密钥输出到文件CryptGetUserKey(hProv,AT_SIGNATURE,&hKey);//获得密钥对句柄,确定密钥要占有的空间大小CryptExportKey(hKey,hExchKey,PUBLICKEYBLOB,0,NULL,&dwKeyBlobLen);932006.1pbKeyBlob=new BYTE[dwKeyBlobLen+1];//输出公开密钥到key blob中CryptExportKey(hKey,hExchKey,PUBLICKEYBLOB,0,pbKeyBlob,&dwKeyBlobLen);//把key Mob的长度写入到文件中fwrite(&dwKeyBlobLen,sizeof (DWORD),1,hDestination);//把key blob写入到文件中Fwrite(pbKeyBlob,l,dwKeyBlobLen,hDestination);5.5 对文件进行加密//导人接收方的公开密钥CryptImportKey(hProv,pbKeyBlob,dwKeyBlobLen,0,0,&hSignPubKey);//产生一个随机密钥,并把随机密钥用接收方的公钥加密后输出到加密后的文件中CryptGenKey(hProv,ENCRYPT_ALGORITHM,CRYPT_EXPORTABLE,&hKey);CryptExportKey(hKey,hSignPubKey,SIMPLEBLOB,0,pbKeyBlob,&dwKeyBlobLen);fwrite(&dwKeyBlobLen,sizeof(DWORD),1,hDestination);fwrite(pbKeyBlob,1,dwKeyBlobLen,hDestination);//用产生的随机密钥以对称加密算法加密源文件do {dwCount=fread(pbBuffer,1,dwBlockLen,hSource); CryptEncrypt(hKey,0,eof,0,pbBuffer,&dwCount,dwBufferLen); fwrite(pbBuffer,l,dwCount,hDestination);}while(!feof(hSource));5.6对文件进行解密//读取用来加密文件的随机密钥数据,并用接收方的私钥把随机密钥解密后导入fread(phKeyBlob,1,dwKeyBlobLen,hSource);//Import key blob inlo CSPCryptImportKey(hProv,pbKeyBlob,dwKeyBlobLen,hSignKey,0,&hKey);do {//用导入的随机密钥对文件解密 dwCount=fread(pbBuffer,1,dwBlockLen,hSource); CryptDecrypt(hKey,0,eof,0,pbBuffer,dwCount); fwrite(pbBuffer,1,dwCount,hDestination); }while(!feof(hSource));6 结论公钥密码体制和数字签名作为信息安全的一项重要技术越来越得到广泛的应用。

相关主题