摘要:為解決Internet的安全問題,世界各國進行了多年的研究,初步形成了一套解決方案,即目前被廣泛采用的PKI體系結構。PKI體系結構采用證書管理公鑰,通過第三方的可信機構CA,把用戶的公鑰和用戶的其他標識信息捆綁在一起,在Internet網上驗證用戶的身份。PKI體系結構把公鑰密碼和對稱密碼結合起來,保證網上數據的機密性、完整性。
關鍵詞:PKI電子公文 安全傳輸系統 設計 研究
一、PKI的涵義
PKI是Public Key Infrastructure的縮寫,即“公鑰基礎設施”,是利用公鑰技術實現電子商務安全的一種體系,網絡通訊、網上交易是由它來保證安全的。
二、PKI技術
PKI技術是信息安全技術的核心,也是電子商務的關鍵和基礎技術。PKI的基礎技術包括加密、數字簽名、數據完整性機制、數字信封、雙重數字簽名等。
三、公文加密的基本算法
1、RSA算法
RSA算法是在1977年由美國麻省理工學院MIT的RonalRivest,AdiShamir和LenAdleman三位年輕教授提出,并以三人的姓氏命名為RSA算法。該算法利用了數論領域中把兩個大質數相乘生成一個合數十分容易,但要把一個合數分解為兩個質數卻十分困難,因此,可以將乘積公開作為加密密鑰。RSA是目前最有影響力的公鑰加密算法。
2、HASH算法
HASH,一般翻譯做“散列”,或音譯為“哈希”的,就是一種將任意長度的消息,壓縮到某一固定長度消息摘要的函數。主要用于信息安全領域中加密算法,它把一些不同長度的信息轉化成雜亂的128位的編碼里,叫做HASH值。HASH就是找到一種數據內容和數據存放地址之間的映射關系。
3、文件的HASH值
文件的數字文摘通過HASH函數計算得到。不管文件長度如何,它的HASH函數計算結果是一個固定長度的數字。HASH算法是一個不可逆的單向函數。采用安全性高的HASH算法,如MD5、SHA1時,兩個不同的文件幾乎不可能得到相同的HASH結果。因此,一旦文件被修改,就可檢測出來。
四、電子公文安全傳輸系統的設計研究
1、系統總體功能設計
電子公文安全傳輸系統總體分為兩個大部分:即CA系統和用戶系統。
CA系統:其功能包括接收用戶申請、審批申請、認證證書和反饋結果。
用戶系統:其功能包括生成私鑰以及請求證書、申請數字證書、申請結果查詢、生成摘要、摘要簽名、公文加密、生成數字信封、發送公文、打開數字信封、公文解密、摘要認證、接收公文。
(1)申請數字證書。用戶生成私鑰和請求證書,將請求證書發送至CA,CA通過審核,對請求證書進行認證,并生成數字證書,CA將數字證書頒發給申請的用戶。
(2)發送電子公文。用戶對電子公文的明文摘要進行簽名,對電子公文進行對稱加密并生成密碼文件;用接收方數字證書對密碼進行加密,生成數字信封;發送方將數字信封和電子公文密碼一起發送至接收方。
(3)接收電子公文和數字信封。接收方用私鑰打開數字信封,生成密碼對公文進行對稱解密,解密后將發送方的數字證書對簽字進行認證,并對比電子公文明文摘要,以此來判斷公文是否被惡意篡改。
(4)CA審核用戶資料并頒發數字證書。CA接收用戶的申請,審核用戶資料,通過審核的用戶,CA將為其頒發數字證書,并反饋審核結果。
2、系統程序設計
(1)生成私鑰及請求證書。用戶申請私鑰及其請求證書,首先輸入保存私鑰的位置,填寫申請資料,輸入保存請求證書的位置,執行程序,私鑰和請求證書就生成了,生成私鑰函數:
RSA *RSA_generate_key(int num, unsigned long e,void (*callback)(int,int,void *), void *cb_arg);產生一個模為num位的密鑰對,e為公開的加密指數,一般為65537(ox10001),假如后兩個參數不為NULL,會有調用。
(2)公文加密。發送方輸入公文明文文件、摘要簽字、數字證書,系統將判斷數字證書是否有效。只有數字證書有效,程序才繼續執行。公文加密階段使用對稱加密,輸入兩次加密密碼,若密碼一致,則保存密碼文件已生成的加密公文文件。
(3)公文解密。接收方接收到公文后,輸入電子公文及密碼文件,或直接輸入解密密碼,就能對文件進行解密,解密成功后,將公文文件保存。
(4)發送公文。發送方選擇要發送的對象,然后輸入該公文密文和數字信封文件,再將文件發送出去,這時將文件上傳至FTP服務器,并更新數據庫。當接收方登陸系統時,系統會提示有新的公文,接收方可從該FTP服務器上下載該文件,上傳至FTP服務器函數:
private FtpStatusCode UploadFun(string fileName, string uploadUrl)
{
Stream requestStream = 1;
FileStream fileStream = 1;
FtpWebResponse uploadResponse = 1;
FtpWebRequest uploadRequest =
(FtpWebRequest)WebRequest.Create(uploadUrl);
uploadRequest.Method = WebRequestMethods.Ftp.UploadFile;
uploadRequest.Proxy = 1;
NetworkCredential nc = new NetworkCredential();
nc.UserName = \"libin8537\";
nc.Password = \"123321\";
uploadRequest.Credentials = nc; //修改getCredential();
requestStream = uploadRequest.GetRequestStream();
fileStream = File.Open(fileName, FileMode.Open);
byte[] buffer = new byte[1024];
int bytesRead;
while (true)
{
bytesRead = fileStream.Read(buffer, 0, buffer.Length);
if (bytesRead == 0)
break;
requestStream.Write(buffer, 0, bytesRead);
}
requestStream.Close();
uploadResponse= (FtpWebResponse)uploadRequest.GetResponse();
}
(5)接收公文。接收方選擇發送方,保存接收公文的位置執行程序,這時文件將從FTP服務器上下載到客戶端,從FTP服務器下載函數:
public bool Download(string filepath,string username,string fname)
{
//String onlyFileName = Path.GetFileName(fileName);
string newFileName = filepath + \"\\\\\" + \"(\" + depart + \")\" + fname;
string url = \"ftp://96.46.11.42/web/\" + username + \"/\" + sendname + \"/\" + fname;
Connect(url);//連接
reqFTP.Credentials = new NetworkCredential(\"libin8537\", \"123321\");
FtpWebResponse response = (FtpWebResponse)reqFTP.GetResponse();
Stream ftpStream = response.GetResponseStream();
long cl = response.ContentLength;
int bufferSize = 2048;
int readCount;
byte[] buffer = new byte[bufferSize];
readCount = ftpStream.Read(buffer, 0, bufferSize);
FileStream outputStream = new FileStream(newFileName, FileMode.Create);
while (readCount > 0)
{
outputStream.Write(buffer, 0, readCount);
readCount = ftpStream.Read(buffer, 0, bufferSize);
}
ftpStream.Close();
outputStream.Close();
response.Close();
}
(6)摘要認證。接收方接收到公文并解密后,選擇明文文件,生成摘要,輸入簽字的文件和發送方的數字證書,這時將對比簽字內容和公文明文摘要是否一致,如果一致,則證明公文內容沒有被篡改;如果內容不一致,則證明公文內容已經被惡意篡改。
3、系統的數據庫設計
ACCESS是關系型的桌面數據庫管理系統,可以用來建立中、小型的數據庫應用系統。它最重要的特征就是不必編寫程序,創建數據表非常簡便。電子公文安全傳輸系統的后臺數據庫,包括的主要內容如表5-1所示。
表5-1 電子公文安全傳輸系統數據結構
編號數據名稱數據結構說明
1用戶名varchar主鍵、用戶登陸名稱
2密碼varchar
3用戶類型varchar判斷用戶身份
4姓名varchar
5性別varchar
6身份證號varchar
7工作證號varchar
8所在部門varchar用戶所在部門
9請求證書varchar記錄是否有請求證書,通知CA
10反饋結果varcharCA反饋結果,并告知用戶
11發送公文varchar記錄發送公文,并通知用戶
12審批請求varchar記錄CA未審批的請求
數據庫功能主要包括一下幾個部分:
(1)檢索功能:采用SQL語言嵌入檢索
Data1.Select = \"SELECT * FROM 用戶信息 WHERE。
(2)新增功能:Data1.AddNew
(3)修改功能:Data1.Edit
(4)刪除功能:Data1.Delete
(5)保存功能:Data1.Update
個人簡介:
梁玉鳳,女,1972年出生,黑龍江哈爾濱人,副教授,碩士,研究方向:計算機基礎教學及數據庫。