如何加密基于C/S結構的公安綜合移動警務系統(tǒng)

我們常說的公安綜合移動警務系統(tǒng)是基于移動通信網絡和公安專網的信息查詢與處理系統(tǒng)。當然我們?yōu)榱诉_到公安信息保密性的要求,需要對傳輸?shù)男畔⑦M行加密。為此我們設計并實現(xiàn)了一種基于AES算法和Morii-Kasahara算法的混合加密方案;該方案具有算法安全性高、運算速度快、帶寬需求低、密鑰管理方便、需求存儲空間小等優(yōu)點,可以滿足公安綜合移動警務系統(tǒng)的加密需求。

一、基于AES和Morii- Kasahara加密算法的混合加密方案設計

1、基于AES和Morii- Kasahara加密算法的混合加密、解密方案的流程

為滿足公安綜合移動警務系統(tǒng)對數(shù)據(jù)快速高效加密、解密處理的要求,解決非對稱加密算法加密速度慢,對稱加密算法密鑰分發(fā)、管理困難的問題。該混合加密方案通過Morii-Kasahara算法傳遞AES密鑰,用AES加密算法加密待傳輸?shù)拿魑?。首先移動終端隨機生成AES密鑰K,并獲得服務器端的公鑰Key(Morii-Kasahara算法的公鑰),然后將AES密鑰用公鑰Key加密得CK,并用K加密明文m得到密文M,將CK和M傳給服務器端。服務器端用私鑰Skey解密CK得到AES密鑰K,再用密鑰K解密密文M得明文m,最后服務器端用密鑰K加密處理信息傳給客戶端,客戶端用K解密出處理結果,完成一次查詢功能。

2、基于AES和Morii- Kasahara加密算法的混合加密、解密原理

(1)加密AES密鑰

本方案在求取Morii-Kasahara算法模數(shù)時引入了大數(shù)分解問題,使Morii-Kasahara算法是一種基于離散對數(shù)和大數(shù)分解混合問題的背包加密算法,增加了算法的安全性。它將簡單背包向量序列通過冪模運算生成困難背包向量序列,發(fā)送方用困難背包向量加密,接收方將密文變換后用簡單背包向量解密。

1) Morii-Kasahara算法的密鑰生成

首先服務器端生成簡單向量序列A’<a1 ',a2',a’3…ar’>(要求A’中的元素兩兩互素),同時生成大素數(shù)p和q。令n=p×q且n>a,a1'×a2'×a’3…ar’,φ(n)=(p-l)×(q-l),任取gcd(e,φ(n))=1,使得ed=1mod+(φ(n))。計算A’向量序列,其中ai=(ai')emod,將素數(shù)忍和A=作為公鑰發(fā)布,e、d和A’=A’<a1 ',a2',a’3…ar’>作為私鑰保存用于解密使用。

2)加密密鑰

加密AES密鑰:設AES密鑰為K,將其分為rbit一組的二進制表示為Ki =<k1,k2,…,kr>,利用困難背包向量序列A加密密鑰Ki,獲得密鑰密文CK。

解密AES密文:接收方用密鑰d變換密鑰密文CK'=CKdmodn,然后用A'求解簡單背包問題CK 7,求出AES密鑰。

(2)加密明文

AES于2001年11月26日被列入加密標準,是基于多輪加密、密鑰變換、列混淆和S盒的非線性加密原理的算法。

加密明文:首先,生成用于AES加密的128位密鑰K。接著,對明文進行分組,AES加密的數(shù)據(jù)分組長度采用128位,不足128位時用空格補足,按每行4個字節(jié)排成4行,稱為一個狀態(tài),數(shù)據(jù)的寫入和讀出均按列優(yōu)先順序,以字節(jié)為單位操作。最后,對明文進行9圈的S盒變換ByteSub、行移位變換ShiftRow、列混淆變換MixColumn、圈密鑰加變換AddRoundKey等過程,在第10圈時不做列混淆變換。通過上述一系列編碼過程輸出密文。

解密明文:接收者從接收到的信息中解密出AES加密密鑰后,按照與AES加密過程類似的步驟進行解密。首先對接收到的密文進行分組(128位),然后對分組數(shù)據(jù)進行1圈的圈密鑰加變換、反行變換、反S盒變換,接著進行9圈的圈密鑰加變換、反列變換、反行變換和反S盒變換。最后通過上述一系列編碼過程輸出明文。

3、基于AES和Morii- Kasahara加密算法的混合加密方案分析

(1)安全性分析

顯然,對所有的已知攻擊而言,AES是安全的。它的S盒構造中有限域逆操作的使用導致了線性逼近和差分分布表中的各項趨近于均勻分布。這就為抵御差分和線性攻擊提供了安全性。線性變換MixColumns使得找到包含“較少”活動S盒的差分和差分線性攻擊成為不可能事件。在設計采用的一次一密的模式下,對AES的密文的任何攻擊包括窮盡密鑰搜索的攻擊都是無效的。

因此,破解該加密方法的人手點只能通過獲得AES密鑰,也就在于能否破解Morii-Kasahara算法。到目前為止,Morii-Kasahara算法是安全的。這里對Morii- Kasahara算法的改進是引入了大數(shù)分解的NP問題,即當,n較大時試圖從n分解出p/q是不可行的,這正是RSA算法保密性的原理,因此無法獲得φ(n)=p×q,增加了求取密鑰e和d的復雜程度。又因為e、d都是隨機選取的,所以在模數(shù)相同的情況下,計算密鑰e和d要比計算RSA密鑰復雜。該算法的安全性高于RSA加密算法,滿足了公安綜合移動警務系統(tǒng)的安全要求。

(2)運算速度分析

因為移動終端的內存較小,處理速度較慢,所以我們根據(jù)AES加密算法安全性高、速度快的優(yōu)點,對大量的明文采用AES算法加密,而用改進的Morii-Kasahara算法加密AES密鑰。Morii- Kasahara算法加密過程只進行乘模運算,而ECC算法要將明文映射到橢圓曲線上,計算量大,RSA算法的密鑰長度較長,因此該算法比RSA、ECC等算法計算量小、加密速度快,并且通過查表和并行處理的方法可以提高加解密的速度。

二、公安綜合移動警務系統(tǒng)加密解密方案實現(xiàn)

公安綜合移動警務系統(tǒng)采用的是基于C/S結構的網絡模型,手持移動設備(PDA)作為系統(tǒng)的客戶端,而在系統(tǒng)服務中心搭建服務器。C/S是一種開放系統(tǒng)結構網絡模型,即客戶端向服務器提出請求,服務器對請求作相應的處理并執(zhí)行被請求的任務,然后將結果返回給客戶端??蛻舳撕头掌髟诿看伟l(fā)送請求或響應信息前,首先應用如上所述的基于AES和Morii-Kasahara的混合加密算法的加解密功能模塊對要發(fā)送的信息進行加密,然后將加密后的信息通過網絡傳輸模塊發(fā)送給服務器端;服務器端通過網絡傳輸模塊接收到信息后,由加解密功能模塊對信息進行解密,最后將相應處理信息加密后發(fā)送回發(fā)送方。

1、加密解密系統(tǒng)功能模塊

加密系統(tǒng)有兩個主要功能模塊:Morii-Kasahara加密解密模塊、AES加解密模塊等。

Morii-Kasahara加解密模塊:主要完成公私密鑰對的生成以及Morii-Kasahara的加密和解密,其中包含數(shù)據(jù)編碼模塊(將數(shù)據(jù)編碼成定長的二進制碼串和解碼成數(shù)據(jù))和Morii-Kasahara加密和解密。AES加解密模塊:主要完成AES密鑰的生成以及AES的加密和解密。

2、加密算法的實現(xiàn)

在Embedded VC++環(huán)境下,基于AES和Morii-Kasahara混合數(shù)據(jù)加密方案的公安綜合移動警務系統(tǒng)的編程實現(xiàn)方法。首先,定義一個加解密的基類Crypto,定義三個成員函數(shù),分別實現(xiàn)密鑰生成SetKey()、加密EnCrypto()和解密DeCrypto()操作。再從這個基類派生出兩個類AESCrypto和MKCrypto分別實現(xiàn)AES和Morii- Kasahara加密體制的具體算法,在各自的算法里重寫基類的成員函數(shù),實現(xiàn)加密解密功能。

下面簡要給出基于AES和ECC混合數(shù)據(jù)加密的無線數(shù)據(jù)傳輸主要程序:

BOOL CreatSocket(BSTR sendData, BSTR* precvData, int ServerIP, int Port, BSTR szError)

{//其中sendData為待發(fā)送的明文.precvData為接收到的數(shù)據(jù)經過解密后得到的明文。

//ServerIP與Port分別為服務器的IP地址與端口號,szError為錯誤信息。

int Status , iReturn;

///lnitialize Winsock. And assign the socket IP address and Port.

//Establish a connection to the server socket.

connect (ServerSock, (PSOCKADDR) &destination_ sin, sizeof

( destination_sin)) ;

///Send a string to the server.

SetKey(key, 128)///密鑰生成128位

EnCrypto(cryptograph, sendData)///數(shù)據(jù)加密BYTE* pSendData;

int len - Encoding: : UnocodeToBytes(cryptograph, &pSendDatasend ( ServerSock, ( char * ) pSendData, len, 0);

free( pSendData) ,

///Receive data from the server socket.

BYTE* pRecvData ;

iReturn- recv (ServerSock, (char * ) pRecvData, len, 0) }

DeCrypto( MingWen, pRecvData)///數(shù)據(jù)解密

Encoding:BytesUnocode( MingWen, len, &str ) ;

* precvData = str. ALlocSysString() ;

///Disable ServerSock.

}

以上混合加密方案實現(xiàn)了公安綜合移動警務系統(tǒng)信息的加密傳輸。

小知識之C/S 結構

C/S 結構,即大家熟知的客戶機和服務器結構。它是軟件系統(tǒng)體系結構,通過它可以充分利用兩端硬件環(huán)境的優(yōu)勢,將任務合理分配到Client端和Server端來實現(xiàn),降低了系統(tǒng)的通訊開銷。目前大多數(shù)應用軟件系統(tǒng)都是Client/Server形式的兩層結構,由于現(xiàn)在的軟件應用系統(tǒng)正在向分布式的Web應用發(fā)展,Web和Client/Server 應用都可以進行同樣的業(yè)務處理,應用不同的模塊共享邏輯組件;因此,內部的和外部的用戶都可以訪問新的和現(xiàn)有的應用系統(tǒng),通過現(xiàn)有應用系統(tǒng)中的邏輯可以擴展出新的應用系統(tǒng)。這也就是目前應用系統(tǒng)的發(fā)展方向。