第220章 加密演算法

第220章加密演算法

對cqcq軟體重構的想法,林鴻實際上在和凱文聊過之後,就開始在腦海中慢慢成型。

對傳送訊息進行加密這個問題比較好解決,據林鴻所知,目前有一些加密效能比較好的加密演算法都是免費並且公開的,他可以直接拿來使用。

關鍵在於如何建立起負責訊息傳遞中轉的秘密據點。

這些據點必須具有隨機的特點,不能一直固定,這樣就可以增加被追蹤攔截的難度。

現在這種一臺伺服器管理並轉發所有線上聊天客戶端的資訊的模式肯定是行不通了,因為這種結構太過脆弱,只要對方攻佔了伺服器,整個聊天網路就會癱瘓。

林鴻經過慎重思考,覺得還是迴歸到自己最初的想法比較靠譜,也就是,把客戶端和伺服器端整合到一起。

也就是說,網路上有多少個是用整個軟體的客戶,那麼就有多少臺訊息中繼伺服器,每一臺伺服器都可以對訊息進行中轉,構成一個龐大的沒有任何規律的網狀網路。

確定好了這個大體的方向之後,他腦海中各種靈感不斷冒出,以至於他立刻從課桌裡面拿出幾張白紙,開始以極快地速度將這些想法以圖形和簡短的文字記錄在這些紙上。

不一會兒,不斷冒出的想法就記滿了五張白紙,林鴻這才停了下來。

林鴻抽出其中一張,這張紙上,畫了一張用方塊代表計算機的網路拓撲圖,用線條表示資料流動的方向。

林鴻重新回過頭來,對之前的思路進行整理,然後又對這張圖進行完善和修補。

接下來便又抽出另外一張紙,這張紙上畫了四個方塊表示計算機,中間用幾條細線和一條粗線連線,細線表示少量資料交換,粗線表示真正的資料。

想了一下,林鴻又重新在它們之間新增了兩條粗線,將原來的那一根粗線給劃掉了。

經過剛才一陣頭腦風暴,林鴻對於cqcq新版的架構已經有了底稿,總體的設計框架已經想清楚了,接下來就是對它的技術細節的實現。

放棄中央控制伺服器的架構,轉而採用點對點的架構,訊息可以通過每一個客戶端進行中轉。

不過,還是會存在一個對整個拓撲網路節點進行維護的中繼伺服器端,這些伺服器端並不涉及到資料的中轉,只儲存客戶端節點資訊,例如ip對映地址,線上節點列表以及它們之間的拓撲結構。

考慮到穩定性方面的問題,這些伺服器端不能只有一個,而是多個,並且他們共同維護同一張資料表,即每一臺伺服器上都有全部的備份,這樣,即時某一臺伺服器下線了,整個通訊網路也不會受到影響。

並且,按照林鴻現在的設想,就算是所有中繼伺服器都被關停或者下線,也不會造成整個通訊網路的癱瘓,最多會影響到訊息傳送的即時性。

當網路中存在中繼伺服器的時候,客戶端會和中繼伺服器保持連線,以便獲知自己好友線上狀態,要傳送資訊的時候,也會先向中繼伺服器查詢整個拓撲結構,然後通過演算法計算,隨機找出一條最優路徑,通過這條最優路徑將訊息傳送到目的地。

而假設所有中繼伺服器都掛掉了,大家便無法確認好友是否線上,資料傳輸的時候,是一種廣播式的行為,即向全網廣播自己的訊息,在傳輸之前,還得確認下一個節點是否線上,然後再傳輸,最終總會到達自己傳送的目的。

不過這樣一來,通訊就失去了時效性,可能一條資訊傳送出去,快則幾秒鐘,慢則要好幾分鐘甚至上十分鐘對方才能夠收到,時間的長短和網路的拓撲結構有關。

這種結構,在安全方面也有保證。

一條資訊發出,會首先通過自身的軟體進行加密,然後再傳送到中轉節點中,那些節點都是匿名的,經過至少五次跳轉之後,完全查不到來源路徑,最終從出口節點對訊息進行解密,然後再傳遞到目標客戶端。

在整個流程中,唯一有可能被監聽的環節就在於最後的出口節點,假設有人正好在出口節點監控,則就可以截獲被髮送的訊息。

這個缺點林鴻也發現了,所以他在後來對圖紙進行整理的時候,再次進行了完善。

他想了一個解決方案,那就是訊息傳送之後,會加密成一個資料包,然後再對這個資料包進行分割,包的各部分通過幾條不同的路徑最終傳遞到目的地,這樣,就算某一個出口節點被監控了,他們截獲的內容也只有一部分,沒有截獲其他包的話,根本無法對整個包進行解密。

理論上,同時將所有包都截獲的可能性是趨近於零的,所以這樣一來,通訊安全得到了最大限度的保障。

林鴻設計的整個新的架構,不但實現了資訊傳遞的匿名性,而且消除了中心化的伺服器端,極大地提升了軟體的保密性和穩定性。

作者「瘋狂小強」的其他小說

修仙高手再戰都市