加密技術在公文流轉系統(tǒng)中的應用

隨著信息技術在我國的昔及,各類信息技術不斷的應用于備單位中,極大的提高了辦公效率。過去的公文處理過程十分復雜,經常由于個人原因對公文管理不當,導致公文丟失或未及時審批。因此,需要開發(fā)公文流轉系統(tǒng),讓工作人員從復雜的公文處理事務中解放出來,從而提高工作效率,降低成本,實現(xiàn)辦公自動化。但是現(xiàn)在的公文流轉系統(tǒng)安全系數(shù)又比較低,為此,我們迎合辦公信息化的實際需求,在系統(tǒng)中采用了公開密鑰加密以及秘密密鑰加密算法,實現(xiàn)了公文流轉系統(tǒng)的安全要求。

一、信息安全的關鍵技術

信息安全的關鍵技術包括加密技術和數(shù)字簽名技術,加密技術通常分為兩類:“對稱式”和“非對稱式”;數(shù)字簽名是涉及簽名信息和簽名人私匙的計算結果。

二、加密技術在公文流轉系統(tǒng)中的應用

1、一對多的公開發(fā)文模型

在公文流轉中,若上級向下級分發(fā)文件,并且該文件可以公開,則在這種情況下,公文以明文發(fā)送,系統(tǒng)采用的模型如圖1所示。

模型描述的過程如下:

①發(fā)送者S采用消息摘要算法對公文P生成消息摘要D;

②S使用其私鑰SK2對摘要進行簽名得DC;

③S將P、DC發(fā)送給接收者R。至此,發(fā)送者S完成了其簽名過程,將簽名過的公文傳送給了R;

④R將接收到的明文用消息摘要算法計算出摘要;

⑤R用R的公鑰SK1對A的簽名進行解密;

⑥R將解密得到的摘要同算出的摘要進行比較,若摘要相同,則S的發(fā)文證明為真實、有效的,反之發(fā)文則無效。

2、一對一的秘密發(fā)文模型

在公文流轉過程中,若發(fā)文者和收文者以一對一的方式發(fā)送,即公文既要以加密形式發(fā)送,又要實現(xiàn)發(fā)文人的簽名,則系統(tǒng)采用一對一的秘密發(fā)文模型,其模型如圖2所示。

模型描述的過程如下:

①發(fā)送者S用消息摘要算法對公文P產生摘要D;

②S使用其私鑰SK2對摘要進行簽名得D1;

③S隨機產生一對對稱密鑰K;

④S使用AES算法對公文P進行加密得P1;

⑤S使用R的公鑰RK1對K進行加密得K1;

⑥S將K1、P1、D1發(fā)送給接收者R。至此,公文的加密和簽名已經完成;

⑦R將取到的K1用其私鑰RK2進行解密得AES密鑰K;

⑧R用K將P1解密得明文P。R用消息摘要算法對明文P產生摘要。R用S的公鑰SK1對S的簽名進行解密;

⑨R將解密得到的摘要同計算出的摘要進行比較,若摘要相同,則公文為S所發(fā)為真,否則為假。另外根據(jù)比較摘要便能發(fā)現(xiàn)公文是否在傳輸過程中被篡改。

三、公文流轉系統(tǒng)中加密算法和解密算法的研究與實現(xiàn)

1、秘密密鑰加密

加密與解密密鑰是相同的,或者可以在一定時間內用加密密鑰算出解密密鑰,具備這種特征的算法稱為秘密密鑰算法、私有密鑰算法或對稱算法。

(1)秘密密鑰加密的基本步驟:

①javax.crypto包導入;

②SecretKey接口封裝密鑰;

③SecretKey對象由KeyGenerator類產生,將算法名傳給static getlnstance()方法;

④通過將密碼參數(shù)傳給Cipher類的staticgetlnstance()方法生成Cipher對象;

⑤通過調用init()方法并指定加密方式和Secret-Key對象,初始化Cipher對象;

⑥CipherOutputStream對象進行加密并將密文寫入輸出流。CipherOutputStream構造器取輸出流名和Cipher對象作為變元。

(2)主要對稱算法有:DES(實際密鑰只用到56位)

和AES(支持三種密鑰長度:128、192、256位),通常首先128位,其他的還有DESede等,JDK1.5種也提供了對對稱算法的支持。由于AESE-效率比非對稱的效率高,因而本系統(tǒng)采用該加密算法對公文進行加密、解密。加密實現(xiàn)的部分代碼如下:

//將算法名AES傳給getlnstance()方法

KeyGenerator keyGen=KeyGenerator.getlnstance(“AES”);

keyGen.init(128);//采用128位長度的密鑰

key=keyGen.generateKey();

//獲得一個私鑰加密類Cipher,ECB是加密方式,

PKCS5Padding是填充方法

cipher=Cipher.getInstanceC'AES/EC B/PKCS5Padding");

cipher.init(Cipher.ENCRYPT_MODE, key);

由于秘密密鑰加密算法運行速度相對較慢,因此選擇秘密密鑰算法對公文的摘要進行加密,加密用的密鑰由系統(tǒng)產生,為了使接收方能對密文進行解密,需將密鑰傳給對方。為防止密鑰被截獲,傳輸前首先對這個秘密密鑰進行非對稱加密,如圖3所示。

2、公開密鑰加密

RSA加密算法作為一種非對稱密碼算法在信息安全領域得到了廣泛的應用,其既可以用于數(shù)據(jù)加密也可以用于數(shù)字簽名。本系統(tǒng)將用RSA加密算法來對秘密密鑰進行加密,使用公開密鑰對文件進行加密傳輸?shù)膶嶋H過程包括四步:

①發(fā)送方生成一個自己的私有密鑰并用接收方的公開密鑰對自己的私有密鑰進行加密,然后通過網絡傳輸?shù)浇邮辗剑?/p>

②發(fā)送方對需要傳輸?shù)奈募米约旱乃接忻荑€進行加密,然后通過網絡把加密后的文件傳輸?shù)浇邮辗剑?/p>

③接收方用自己的公開密鑰進行解密后得到發(fā)送方的私有密鑰;

④接收方用發(fā)送方的私有密鑰對文件進行解密得到文件的明文形式。

下面是產生RSA密鑰對的代碼實現(xiàn):

KeyPairGenerator keyGen=KeyPairGenerator.getlnstance(“RSA”);

keyGen.initialize(1024);

keypair=keyGen.generateKeyPair();

PublicKey publickey=key.getPublic();

PrivateKey privatekey=key.getPrivate();

當發(fā)文給多個對象時,系統(tǒng)首先讓發(fā)送方下載自己的私鑰,對公文進行非對稱加密,然后發(fā)送給下一個接收者。接收方收到密文,需要首先到密鑰數(shù)據(jù)庫下載發(fā)送方對外公布的公開密鑰,才能對密文進行解密,如圖4所示。

小知識之公文

公文是各級各類國家機構、社會團體和企事業(yè)單位在處理公務活動中有著特定的效能和廣泛的用途的文書,它能夠超越時空的限制,為國家管理提供所需的信息。