天天看點

即時通信的安全加密通信模型研究

作者:資訊安全與通信保密

摘  要

即時通信已經廣泛應用于人們的日常生活和工作之中,其安全性和易用性是使用者關心的核心問題。分析了國内外主流即時通信的安全通信模型,并詳細讨論了其中的消息加密和發送流程。易用性方面,給出了不同加密模式下群聊和多裝置端線上場景中的消息轉發原理,設計了端到端加密模式下的安全通信模型。最後分析了各種安全通信模型的适用場景,并提出了相應的選用建議。

内容目錄:

1 即時通信的通信模型

1.1 威脅模型

1.2 端到伺服器加密的通信模型

1.3 端到端加密的通信模型

1.4 安全性和複雜性比較

2 多裝置端線上通信模型

2.1 端到伺服器加密情形

2.2 端到端加密模式情形

3 通信模型的适用場景建議

4 結  語

目前各種即時通信軟體被人們廣泛使用,國内以微信為代表,國外以 WhatsApp、Telegram 為代表,這些即時通信軟體的使用者量都超過了 10 億。即時通信幾乎完全取代了原來的短信服務,為人們的日常工作和生活提供了資訊互動、消息釋出、群組通信甚至支付功能,滿足了絕大多數人的溝通需求。正是因為每天的消息收發總量數以億計,即時通信使用者越來越關注消息的安全性。此外,考慮到使用者體驗,即時通信軟體的易用性也是至關重要的,比如是否支援群聊,是否支援多裝置端同時線上,是否支援曆史消息擷取等。

衆所周知,即時通信的安全性主要由密碼學技術來實作,其中身份認證和消息加密是最基本的安全技術。但更關鍵的是如何在現實應用場景中正确使用這些安全技術來實作既定的安全目标。不同的即時通信軟體雖然都采用了身份認證和加密技術,但采用的威脅模型卻有比較大的差别,是以它們的消息加密模式和安全級别也不同。斯諾登事件揭露了國外專門機構對個人通信的監控問題後,即時通信的消息安全性越來越受到人們的重視,學術界對即時通信的安全性也開展了一些研究。國内的瞿曉海等人 研究了微信的加密通信原理,分析了微信的登入驗證流程和加密密鑰生成原理。萬園春等人 研究了微信互動協定和加密模式,并分析了密鑰生成時的随機數安全性。國外的學者對即時通信的安全協定研究得比較多,Alexander,Bian 和 Raimondo等人分别分析了同步通信協定 Off-the-Record 的認證、群聊通信以及安全性 [3-5]。Cohn-Gordon 等人 對目前廣泛使用的端到端加密協定 signal 進行了形式化分析。Frosch 等人從安全協定角度評估了即時通信軟體 textsecure 的安全性。Kobeissi 等人利用符号化計算的方法對常見的即時通信協定進行了安全性的自動化驗證。Marlinspike 等人對端到端加密中的密鑰交換協定 X3DH 進行了詳細的闡述。Johansen 等人從使用者注冊、身份認證、消息加密層面比較了幾種國外主流的即時通信軟體,給出了針對安全性和易用性的一些改進建議。

本文将着重研究主流即時通信中的兩類安全通信模型,一種是端到伺服器加密模式下的安全通信模型,另一種是端到端加密模式下的安全通信模型。本文将分析兩種安全通信模型在使用者的單聊(一對一聊天)、群聊(群組聊天)以及多裝置端線上(一個使用者同時登入不同類型的裝置端)3 種主要場景下的聊天消息加密以及用戶端發送消息和伺服器轉發消息時的差異性,并設計端到端加密模式下的多裝置端同時線上通信的實用化模型。

1 即時通信的通信模型

1.1 威脅模型

即時通信是一個包含伺服器(營運商)和多個用戶端(使用者)在内的網絡通信系統。根據攻擊來源和敵手能力可以分為以下 3 種威脅模型:

(1)被動攻擊。該模型中敵手可以記錄下一切從網絡中擷取的資訊,包括加密的消息資料、消息收發時間、密鑰協商時發送的公鑰等。

(2)主動攻擊。該模型中敵手除了可以記錄網絡上擷取的資訊,還具有消息篡改、延遲、阻斷及實施中間人攻擊等能力。

(3)營運商攻擊。伺服器參與使用者消息的加密、解密以及轉發等過程,伺服器也可能作為攻擊方,擷取使用者的身份和聊天等各種資訊。

1.2 端到伺服器加密的通信模型

端到伺服器加密的通信模型場景可以概括為以下兩種:

(1)單聊場景。如圖 1 所示,端到伺服器加密是指每個用戶端都與伺服器建立加密通道(一般是通過密鑰協商協定或者用戶端産生會話密鑰後,用伺服器的公鑰進行加密,發送給伺服器的方式建立共享密鑰),使用者 A 要與使用者 B 通信,使用者 A 的用戶端将發送的消息經過共享密鑰(伺服器與使用者 A的共享密鑰 KAS)加密後發送給伺服器,伺服器利用KAS 解密後,再将消息利用共享密鑰(伺服器與使用者B 的共享密鑰 KBS)發送給目标使用者 B 的用戶端。

即時通信的安全加密通信模型研究

圖 1 端到伺服器加密模式下的單聊通信模型

(2)群聊場景:如圖 2 所示,在群組通信場景下,群内的一個成員 A 将消息也通過與伺服器的共享密鑰 KAS 加密後發送給伺服器,伺服器解密得到明文消息後,再将消息通過伺服器與每個成員的共享密鑰加密發送給群裡的每個成員,本質上與單聊的加密模式沒有差別。群内的成員退出後,伺服器将不會轉發群内的消息,退出的群成員也無法通過捕獲其他成員的密文資料獲得消息,因為退出的成員沒有其他成員與伺服器共享的解密密鑰。

即時通信的安全加密通信模型研究

圖 2 端到伺服器加密模式下的群聊通信模型

端到伺服器加密模型考慮的是主動攻擊威脅,通過身份認證和加密防禦網絡竊聽者和第三方主動攻擊者。但使用者的所有消息都會被伺服器知曉,如果伺服器被攻破或者本身就是惡意的,則使用者的消息安全性不能保證。國内使用者量最大的即時通信軟體“微信”就是采用端到伺服器加密的通信模型。

1.3 端到端加密的通信模型

同理,端到端加密的通信模型場景也可以概括為以下兩種:

(1)單聊場景。如圖 3 所示,端到端加密實際上采用了兩層加密。内層是僅對消息加密,消息加密密鑰通常是使用通信雙方的公鑰進行 ECDH 密鑰協商協定而生成。密鑰協商過程中伺服器隻是轉發相應的公鑰,是以伺服器無法擷取消息加密密鑰。外層加密就是端到伺服器加密模式,伺服器與用戶端進行會話密鑰協商建立共享密鑰。内層加密保護明文消息(伺服器無法解密),外層加密保護通信雙方的身份資訊,伺服器解密這層消息後知道消息應該發給哪一個使用者。因為消息加密密鑰是由通信雙方用戶端上産生的公鑰協商得到,消息從一個用戶端發出後,隻有拟定的另一端才能正常解密,是以稱為端到端加密。

即時通信的安全加密通信模型研究

圖 3 端到端加密模式下的單聊通信模型

(2)群聊場景。端到端加密模式下因為伺服器無法解密出消息明文,是以不能像端到伺服器加密那樣将消息明文重新加密轉發。此外,對于内層加密,如果消息的發送者想利用與群組每個成員協商的消息加密密鑰進行加密,則發送端需要發送n-1條消息(假設群組成員總數為 n),這樣會造成消息的發送端通信資料量太大。實際中是群組的每個成員首先生成一個自己發送消息時的消息加密密鑰Gk,其次将這個 Gk 發送給其他的群成員,如圖 4所示。每個群成員都儲存其他成員發過來的消息加密密鑰,形成一個密鑰庫。

即時通信的安全加密通信模型研究

圖 4 端到端加密模式下群聊密鑰的發送

如圖 5 所示,當某個成員要發送消息時,就利用之前生成的消息加密密鑰 Gk 加密消息,發送給伺服器,由伺服器轉發給其他成員。其他成員收到後,在密鑰庫中對應選擇出相應群成員的密鑰 Gk進行解密。這樣消息發送端進行群聊時也隻發送一條消息,由伺服器實作多條消息的轉發。

即時通信的安全加密通信模型研究

圖 5 端到端加密模式下的群聊通信模型

端到端加密模型考慮的是營運商攻擊威脅,在這樣的通信模型下,營運商隻知道使用者通信的通聯關系,而對使用者消息無法解密,進一步提高了使用者消息的安全性。國外主流的即時通信軟體如WhatsApp、Telegram 等都采用端到端加密的通信模型,并且在單聊和群聊中的消息加密密鑰可以進行滾動疊代,每加密一條消息後,消息加密密鑰都會進行更換,可以做到加密的前向安全和後向安全,極大地提高了加密的安全強度。

1.4 安全性和複雜性比較

對于即時通信模型的加密通信模型評測主要從安全性和複雜性 2 個方面出發來進行分析。

(1)安全性。端到伺服器加密模型中伺服器能夠完全擷取通信使用者的所有消息,使用者的消息完全在伺服器的掌控之下,如有需要,伺服器可以對帶有敏感詞彙的使用者消息進行記錄、阻斷和追蹤等操作。在使用者隐私保護意識逐漸增強的情況下,國際主流即時通信軟體都先後采用了端到端加密模型。此時營運商伺服器隻能知曉使用者的通聯關系以及相關的中繼資料(如通聯時間、通聯消息條數等),無法知曉消息内容。

(2)複雜性。這兩種加密通信模型在安全協定實作的複雜性上有比較大的差別。這裡主要分析密鑰生成機制。端到伺服器加密中,用戶端和伺服器通過密鑰協商協定或者公鑰加密會話密鑰的方式建立共享的消息加密密鑰,一般是一次會話(用戶端上線一次)就建立一次密鑰,當使用者的用戶端更新後(比如更換了裝置或者在同一裝置上重新安裝了用戶端軟體),用戶端和伺服器将重新建立出新的消息加密密鑰。在該用戶端更新期間如果有别的使用者發來資訊,由于伺服器能擷取明文消息,當新的用戶端上線後,伺服器隻需要利用和這個用戶端新建立的密鑰加密該明文消息并發送給該用戶端即可,且不會出現消息無法解密的情況。

端到端加密模型中密鑰更新時的情況則相對複雜。實際在端到端加密模型中,每個端用于密鑰協商的公私鑰對是用戶端安裝後随機生成的,是以當使用者更換裝置或者在同一裝置上更新用戶端後,原來的公私鑰對被删除,用戶端會将新産生的公鑰上傳到伺服器。在用戶端更新期間,若有其他使用者給該用戶端發送資訊,則消息加密密鑰仍是由舊的公鑰計算導出的。該用戶端安裝成功後,伺服器将這條消息發送過來,該用戶端會發現無法解密。筆者經過實際測試發現,國際上主流的端到端加密的即時通信軟體對這種情況下的消息有不同的處理方式。WhatsApp 處理得比較完善,若新的用戶端上線後發現收到的消息無法解密,則會回報給伺服器,伺服器會要求消息的發送方使用該用戶端的新的公鑰導出的密鑰重新進行加密發送,這樣該用戶端作為消息的收方不會丢失消息。其他如 Telegram、Signal 等軟體則會丢失這樣的消息,并且由于用戶端更新密鑰,消息的發送方會收到伺服器的提示消息,必須重建立立一個新的會話才能和該更新後的用戶端進行端到端加密通信。

在群聊的場景下可以看出,群組會話密鑰的建立也是比較複雜的,每個群組成員都要存儲其他群組成員發送的消息加密密鑰,每個使用者發送群組消息時使用的加密密鑰都是不同的,密鑰的存儲和管理也更複雜。

2 多裝置端線上通信模型

一部分即時通信營運商為了提高軟體的使用者體驗和友善性,允許一個使用者在多個裝置端同時登入相同的賬戶,比如允許使用者同時在 PC 端、平闆端和智能手機端進行登入。這時使用者所收發的消息都會即時地同步到這些裝置端,友善使用者進行通信。此時,不同的加密模型下的通信方式有很大的不同。

2.1 端到伺服器加密情形

端到伺服器加密模型下,伺服器隻需要管理同一使用者的不同裝置,并且與這些裝置分别建立共享的消息加密密鑰。如圖 6 所示,假設使用者 A 和使用者 B進行通信,使用者 A 和使用者 B 都各自登入了多個裝置端。使用者 A 給使用者 B 發送一條加密消息,伺服器收到使用者A 的消息後,進行解密,然後将這條消息加密并轉發給使用者 A 和使用者 B 的各個裝置端,這樣這兩個使用者的每個裝置端都完成了消息同步。使用者的每個裝置都能獨立上線,比如隻登陸 PC 端或者智能手機端。

即時通信的安全加密通信模型研究

圖 6 端到伺服器加密模式下的多裝置端通信模型

2.2 端到端加密模式情形

對于端到端加密,情形則比較複雜。端到端加密本質上是由加密密鑰在一對一的裝置之間建立。同樣假設使用者 A 和使用者 B 進行通信,使用者 A 和使用者 B 都各自登入了多個裝置端。由于這些裝置端上的公私鑰對彼此不同,而使用者 A 在發送消息時就必須標明其中一個裝置端的公鑰進行密鑰協商導出消息加密密鑰。對 A 來說,若使用者 B 有 B1 和 B2 兩個裝置端,則 A 的用戶端首先需要知道使用者 B 有這兩個裝置端線上,其次将這條消息分别用與這兩個裝置端協商的密鑰加密發送。假如此時使用者 A 自身也有多個裝置端線上,則使用者 A 發送消息的用戶端還需要将這條消息加密發送給自己的線上裝置端。這樣的協定過于複雜,而且每個用戶端還需要随時儲存自己賬号以及對方賬号的裝置端登入狀态(已下線的裝置就不用發送消息了),此時,發送一條消息帶來的資料量較大,這為協定的設計帶來了非常大的困難。是以,目前的端到端加密方式的即時通信軟體多數不支援多裝置端的線上通信。

從上面的分析可知,要是使用者的多裝置端都獨立上線,則協定的設計比較困難。為了使端到端加密的多裝置端線上通信成為可能,設計了下面的通信模型。如圖 7 所示,用 E(Key,M) 表示使用加密算法 E 和密鑰 Key 對消息 M 進行加密。該通信模型中以使用者的智能手機端為兩端的通信主裝置,即使用者 A 和使用者 B 通信時,消息加密密鑰都以對方智能手機端的公鑰進行密鑰協商并進行導出。使用者 A 同時有多個裝置端線上,主裝置之外的裝置稱為從裝置,比如從裝置可以是 PC 端,也可以是平闆端。主裝置收到對方主裝置發來的資訊後進行正常解密得到消息明文,然後主裝置與從裝置之間利用端到端加密将該消息進行加密發送,從裝置收到消息後進行解密,進而完成消息的多裝置端同步。當使用者A 的某個從裝置發送消息時,也是首先将消息發送到使用者 A 的主裝置,其次主裝置解密後再将消息重新加密發送至使用者 B 的主裝置。類似地,使用者 B 的主裝置再将消息發送至使用者 B 的從裝置。

即時通信的安全加密通信模型研究

圖 7 端到端加密模式下的多裝置端通信模型

這樣設計的通信模型需要通信雙方的主裝置都要線上,因為其他裝置的消息不論收發都是通過主裝置進行通信的。實際場景中很多使用者是為了消息編輯的友善而使用 PC 端,智能手機端也不會離線,是以這樣的設計是比較實用的。該模型中使用者裝置隻是與己方主裝置進行通信,避免了己方的裝置與對方的所有裝置進行密鑰協商,較大地減少了對多裝置線上狀态的感覺需求和密鑰協商的複雜性。

3 通信模型的适用場景建議

在端到伺服器加密模型中,伺服器能解密所有使用者的密文消息,如有必要可對使用者通信的消息内容進行查找和審計等操作。使用者消息的明文可在伺服器端進行存儲,新加入使用者裝置若是擷取到相應的權限,可以很友善地進行曆史聊天記錄的擷取,隻需要用與新裝置協商生成的消息加密密鑰加密之前的明文消息并發送即可,比如一個工作群進來了一個新成員,需要了解這個工作群之前消息中的工作内容,這時就需要擷取群中的曆史消息。是以,端到伺服器加密模型比較适合于一個公司内部的即時通信,特别是公司對員工交流的工作消息内容有審計的必要時,該加密模型可以滿足這樣的需求。

端到端加密模型中伺服器隻能作為密文消息的轉發者,無法解密出明文的消息内容,通常情況下伺服器甚至不存儲已經轉發成功的使用者消息。此外,使用者的新裝置上線後也無法擷取之前的聊天記錄。但端到端加密模型對使用者的隐私保護更好,且采用的安全協定可以實作消息加密密鑰的頻繁更換,大大提高了使用者消息的安全性,比較适用于通用化的即時通信場景。

4 結  語

本文主要研究了即時通訊的兩類安全通信模型,詳細分析了它們的單聊和群聊通信的加密和消息收發機制,并從實作層面比較了它們的安全性和複雜性。對于端到端加密模式的多裝置端線上通信場景,設計了實用化的多裝置端通信模型。本文最後對這兩類安全通信模型的适用場景進行了分析,并給出了選用建議。

引用格式:廖思捷 , 範佳 , 王迪 , 等 . 即時通信的安全加密通信模型研究 [J]. 通信技術 ,2023,56(2):207-213.

作者簡介 >>>

廖思捷,女,碩士,工程師,主要研究方向為資料安全、區塊鍊技術;

範  佳,女,博士,進階工程師,主要研究方向為密碼學、資訊安全;

王  迪,男,碩士,工程師,主要研究方向為區塊鍊、軟體工程;

唐  晉,男,碩士,進階工程師,主要研究方向為網絡安全、資料安全;

白  健,男,碩士,進階工程師,主要研究方向為資料安全、區塊鍊技術;

楊春霞,女,碩士,工程師,主要研究方向為資料安全、區塊鍊技術。

選自《通信技術》2023年第2期(為便于排版,已省去原文參考文獻)

繼續閱讀