本發明涉及計算機軟件相關領域,具體涉及一種用戶態加密的即時通訊方法與系統。屬于信息安全技術領域。
背景技術:
即時通訊(Instant Messaging,簡稱IM),是一種基于互聯網的即時交流消息方式,它允許兩人或多人使用網絡實時地傳遞文字消息、文件乃至實現語音與視頻交流。當前國內外的即時通訊系統很多,其中市場占有率較高的有QQ、微信、WhatsApp、Skype等。但是隨著用戶的普及,巨大的潛在利益開始浮現,即時通訊系統也開始成為黑客和病毒的攻擊目標。調查也表明,現在互聯網用戶已經越來越關注自己的隱私,開發者也開始開發更加安全的即時通訊系統。
加密是當前即時通訊系統常用的防護手段,即消息發送方與接收方協商一個消息密鑰,然后在通訊時使用該消息密鑰對通訊信息進行加解密。然而,現有的即時通訊系統采用的加密方案存在局限性:在這些加密方案中,消息密鑰對服務器是可見的。由于即時通訊服務器是屬于服務提供商所有,其運行不受用戶控制,用戶并不能保證服務商不會出于商業或其他的原因訪問用戶通訊內容,因此用戶的隱私并不能真正的得到保護。實現一個對用戶而言真正安全的即時通訊系統,是當前的迫切需求。
技術實現要素:
針對上述問題,本發明提供了一種用戶態加密的即時通訊方法與系統。本發明基于用戶特征構建僅由用戶掌控的特征密碼,并基于此用戶特征密碼對通訊內容進行加密,以達到向包括服務器在內的任何第三方隱藏通訊內容的目的。該方法安全性強,從而在實現點對點聊天、群聊、文件、圖片傳輸等基本即時通訊系統功能的同時,保證了用戶通訊信息的機密性。
為了實現上述目的,本發明采用以下技術方案:
一種用戶態加密的即時通訊方法,通過客戶端和服務器端實現,包括以下步驟:
A.為每個用戶注冊一個用戶特征密鑰和一對公私鑰;
B.需要進行點對點聊天時,消息發送方隨機構造一個密鑰用于消息加密,以下稱之為“消息密鑰”;
C.消息發送方訪問服務器以讀取消息接收方的公鑰;
D.消息發送方基于非對稱加密算法,使用消息接收方的公鑰加密消息密鑰;
E.消息發送方基于對稱加密算法,使用消息密鑰加密待發送的消息內容;
F.消息發送方將加密后的消息密鑰和消息發送給服務器端;
G.服務器端將加密后的消息密鑰和消息發送給消息接收方;
H.消息接收方輸入用戶特征信息以登錄系統;
I.消息接收方使用自己的私鑰解密獲取消息密鑰;
J.消息接收方使用消息密鑰對消息進行解密,獲取消息內容。
進一步地,所述的用戶態加密的即時通訊方法,采用以下技術方案以支持群組通信:
K.群主創建一個群,并為該群注冊一對公私鑰;
L.用戶可以通過查找群名稱以申請加入該群;群主通過該用戶加入群的申請后,群主客戶端使用該用戶的公鑰加密群私鑰,并上傳到服務器端;
M.需要進行群聊時,消息發送方隨機構造一個消息密鑰;
N.消息發送方訪問服務器讀取群公鑰;
O.消息發送方基于非對稱加密算法,使用群公鑰加密消息密鑰;
P.消息發送方基于對稱加密算法,使用消息密鑰加密消息內容;
Q.消息發送方將加密后的消息密鑰和消息發送給服務器端;
R.服務器端將加密后的消息密鑰和消息發送給群內其他成員;
S.消息接收方訪問服務器端讀取加密后的群私鑰;
T.消息接收方使用自己的私鑰解密獲取群私鑰;
U.消息接收方使用群私鑰解密獲取消息密鑰;
V.消息接收方使用消息密鑰對消息進行解密,獲取消息內容。
進一步地,所述的用戶態加密的即時通訊方法,其中,所述步驟A中具體包括:
A1.客戶端請求注冊用戶輸入特征信息,并根據該特征信息構建該用戶獨有的特征密鑰;
A2.客戶端為用戶生成一對公鑰和私鑰;
A3.基于對稱加密算法,客戶端使用用戶特征密鑰加密用戶私鑰,并將加密后的私鑰和未加密的公鑰上傳到服務器端。
進一步地,所述的用戶態加密的即時通訊方法,其中,所述步驟H中具體包括:
H1.客戶端請求消息接收方輸入特征信息,并根據該特征信息構建該用戶獨有的特征密鑰;
H2.客戶端訪問服務器端讀取加密后的私鑰;
H3.客戶端使用用戶特征密鑰解密獲取自己的私鑰。
進一步地,所述的用戶態加密的即時通訊方法,其中,所述步驟K中具體包括:
K1.群主客戶端為群生成一對公鑰和私鑰;
K2.群主客戶端使用群主的公鑰加密群的私鑰,然后將加密后的群私鑰和未加密的群公鑰上傳到服務器端。
進一步地,所述的用戶態加密的即時通訊方法,其中,所述步驟L中具體包括:
L1.群主通過某用戶加入群的申請后,群主客戶端訪問服務器端讀取該用戶的公鑰;
L2.群主客戶端使用該用戶的公鑰加密群私鑰,然后將加密后的群私鑰上傳到服務器端。
進一步地,所述的對稱加密算法是可擴展的,支持以任意安全可靠的方式進行實現,如SM1算法、SM4算法、DES算法、AES算法等。所述的非對稱加密算法也是可擴展的,支持以任意安全可靠的方式進行實現,如SM2算法、RSA算法等。
進一步地,所述的用戶特征信息可以是指紋、虹膜、面孔等用戶獨有的生物信息,或者USB KEY、手勢、密碼等其他僅由用戶控制的秘密信息。
進一步地,所述的根據用戶特征信息構建用戶特征密鑰的過程是一個一一映射函數,即同樣的用戶特征信息總是對應到同樣的用戶特征密鑰,不同的用戶特征信息總是對應到不同的用戶特征密鑰。上述即時通訊方案最終的安全性取決于用戶是否具備對應的用戶特征。如果某用戶具備該特征(比如指紋正確),則其可以通過用戶特征獲取用戶私鑰,然后通過用戶私鑰獲取消息密鑰,最后通過消息密鑰獲取消息內容。即當且僅當用戶特征正確時用戶才能獲知通訊消息內容。
一種用戶態加密的即時通訊系統,包括服務器端、若干客戶端,所述客戶端分別通過網絡與服務器端連接。
所述服務器端包括:
即時通訊服務組件,主要用于提供基本的即時通訊服務,轉發用戶加密的信息;
云存儲組件,主要用于存儲用戶的公私鑰信息和加密的聊天記錄,并及時響應用戶發起的讀寫請求。
所述客戶端分別包括:
用戶特征讀取組件,主要用于在用戶登錄和注冊時讀取用戶輸入的用戶特征信息;
加解密組件,主要用于生成加解密所需的密鑰和相關參數,并對發送的消息進行加密操作,對接收的消息進行解密操作。
和現有技術相比,本發明具有如下優勢:
1.安全性強,排除了服務器查看用戶通訊信息的可能,保證了只有發送者和接收者了解通訊信息內容;
2.密鑰管理方便,用戶只需在注冊和登錄時輸入正確的用戶特征信息,此后便可像使用普通即時通訊產品一樣使用本方法和系統,加解密過程對用戶透明。
附圖說明
圖1是本發明一種用戶態加密的即時通訊系統的結構圖;
圖2是本發明的用戶注冊流程圖;
圖3是本發明的用戶登錄流程圖;
圖4是本發明的單聊消息傳輸流程圖;
圖5是本發明的新建群流程圖;
圖6是本發明的用戶加入群流程圖;
圖7是本發明的群聊消息傳輸流程圖。
具體實施方式
下面將詳細描述本發明的各個方面的特征,但不以任何方式限制本發明的范圍。
本實施例的用戶態加密的即時通訊方法,通過客戶端和服務器端實現,圖1是其系統結構圖,包括以下步驟:
A.用戶注冊:記用戶編號為i,為用戶i注冊用戶特征密鑰FKi和一對公私鑰PKi、SKi;用戶注冊流程如圖2所示;
B.單聊:單聊消息傳輸流程如圖4所示,記消息發送方為用戶a,消息接收方為用戶b。a隨機構造一個密鑰k用于消息加密;
C.a訪問服務器端讀取b的公鑰PKb;
D.a使用PKb加密k,得到AEnc(k,PKb);
E.記待發送的消息內容為M,a使用k加密M,得到SEnc(M,k);
F.a將AEnc(k,PKb)和SEnc(M,k)發送給服務器端;
G.服務器端將AEnc(k,PKb)和SEnc(M,k)發送給b;
H.b輸入用戶特征信息Fb以登錄系統;用戶登錄流程如圖3所示。
I.b使用自己的私鑰SKb解密AEnc(k,PKb)獲取消息密鑰k;
J.b使用消息密鑰k解密SEnc(M,k)獲取消息內容M;
所述的用戶態加密的即時通訊方法,采用以下技術方案以支持群組通信:
K.新建群:記群主為a,新建群g,a為群g注冊一對公私鑰PKg、SKg;新建群流程如圖5所示;
L.添加群成員:記新成員為用戶b,群主a通過用戶b加入群g的申請后,a客戶端使用b的公鑰PKb加密群私鑰SKg,并將AEnc(SKg,PKb)上傳到服務器端;用戶加入群流程如圖6所示;
M.群聊:群聊消息傳輸流程如圖7所示,記消息發送方為用戶a,群為g,要發送的消息內容為M',a隨機構造一個消息密鑰k';
N.a訪問服務器端讀取群公鑰PKg;
O.a基于非對稱加密算法,使用群公鑰PKg加密消息密鑰k',得到AEnc(k',PKg);
P.a基于對稱加密算法,使用消息密鑰k'加密消息內容M',得到SEnc(M',k');
Q.a將加密后的消息密鑰AEnc(k',PKg)和消息SEnc(M',k')發送給服務器端;
R.服務器端將加密后的消息密鑰AEnc(k',PKg)和消息SEnc(M',k')發送給群內其他成員,如用戶b;
S.b訪問服務器端讀取用自己公鑰加密的群私鑰AEnc(SKg,PKb);
T.b使用自己的私鑰SKb解密獲取群私鑰SKg;
U.消息接收方使用群私鑰SKg解密AEnc(k',PKg)獲取消息密鑰k';
V.消息接收方使用消息密鑰k'解密SEnc(M',k')獲取消息內容M'。
所述的用戶態加密的即時通訊方法,其中,所述步驟A中具體包括:
A1.用戶i輸入特征信息Fi,客戶端根據該特征信息構建該用戶獨有的特征密鑰:
FKi=Trans(Fi);
A2.客戶端為用戶i生成一對公鑰和私鑰:{PKi,SKi}=Keygen(i);
A3.使用FKi加密SKi,并將{SEnc(SKi,FKi),PKi}上傳到服務器。
所述的用戶態加密的即時通訊方法,其中,所述步驟H中具體包括:
H1.用戶b輸入特征信息Fb,客戶端根據該特征信息構建該用戶獨有的特征密鑰:
FKb=Trans(Fb);
H2.b訪問服務器讀取SEnc(SKb,FKb);
H3.b使用FKb解密SEnc(SKb,FKb)獲取自己的私鑰SKb。
所述的用戶態加密的即時通訊方法,其中,所述步驟K中具體包括:
K1.客戶端為群g生成一對公鑰和私鑰{PKg,SKg}=Keygen(g);
K2.客戶端使用群主的公鑰PKa加密群的私鑰SKg,然后將{AEnc(SKg,PKa),PKg}上傳到服務器端。
所述的用戶態加密的即時通訊方法,其中,所述步驟L中具體包括:
L1.群主通過用戶b加入群g的申請后,群主客戶端訪問服務器端讀取該用戶的公鑰PKb;
L2.群主客戶端使用PKb加密SKg,然后將加密后的群私鑰AEnc(SKg,PKb)上傳到服務器端。
對以上涉及函數的解釋:
Trans是一個任意滿足一一映射條件的函數。在本實施例中,可規定用戶特征信息為長度16字節的密碼,映射條件為“等于”,即Fi=Trans(Fi)
SEnc和SDec是一對對稱加解密算法,支持以任意安全可靠的方式進行實現,如SM1算法、SM4算法、DES算法、AES算法等。在本實施例中,可選取AES實現。
AEnc和ADec是一對非對稱加解密算法,支持以任意安全可靠的方式進行實現,如SM2算法、RSA算法等。Keygen是該非對稱加密算法的密鑰產生函數。在本實施例中,可選取RSA實現。