第222章比特信使 新版cqcq編寫進展速度很快,畢竟之前林鴻已經有過類似的編程經驗,其中很多代碼都可以進行重用,不過由于架構變化比較大,還有一些重要的代碼需要重新構想。
按照這一次的設計,中繼服務器上不保存任何可能用戶的私密內容,包括用戶的賬號、密碼,以及個人信息,發送的聊天內容,ip地址,信息發送目的地…等等。
中繼服務器被林鴻命名為“目錄服務器”,只是保存著的客戶端的網絡拓撲節點,每一個使用這個軟件的用戶,都可以充當服務器端,都有可能被選作跳轉中繼節點。
而當真正創建了一條用戶數據交換的私密通道的時候,當前中繼節點只知道兩個信息,當前的數據包來自哪個節點,以及要發送給哪一個節點。至于上級的上級、下級的下級中繼節點就完全不得而知了。
沒有一臺單獨的中繼節點會知道數據包的完整路徑,這是因為客戶端為每一跳都分配獨立的加密密鑰以保證連接數據通過時不被跟蹤。
這個密鑰是臨時生成的,就算是用戶一直和同一個人聯系,這條路徑也并不是固定的,按照林鴻的設計,每隔十分鐘就會更換一次密鑰,即建立一條完全不同的連接通道。
林鴻將自己所能想到的所有可能被監聽的環節都考慮到了,這樣做只有一個目的,為了安全,為了避免被第三方監聽。
因為不想使用中央服務器的方式來存儲數據和信息,所有數據將會被分散地保存在客戶端里面。
最為安全的方式,就是每一個客戶端中都將已注冊的所有用戶信息都下載到本地保存,這樣無論哪一個消失了,都不用擔心自己的信息會因此而丟失,因為使用了最夠安全的加密算法,也不用擔心有誰對這些賬號進行暴力破解,就算破解了也沒用,無非是得到了這個賬號而已,聊天記錄是不會上傳保存的。
但是如果使用這種方式,剛開始的時候可能還可以勝任,畢竟僅僅只是賬號和密碼的話,也不用多大的空間,當時當人數增加到一定數量級的時候,就會出現數據過大的問題。
每一個新注冊的用戶,可能都必須先從網絡上下載其他用戶的所有信息,如果硬盤不夠大的話,很可能就會將硬盤撐爆。
林鴻便放棄了這個方式。他換了一種比較取巧的方式,那就是每個客戶端里面只保存自己好友的信息。
也就是說,當你添加一個好友的時候,你的信息會全部同步給對方,而對方的信息也會同步給你。
這樣一來,要保存的數據就極大減少。一個人就算有一千個好友,加密再壓縮之后的信息大小也可以承受。
不過這樣一來,也會有一些情況出現。例如如果有人的好友非常少,并且這些好友常年都不上線的話,他的本地數據如果丟失,就很可能會失去自己的賬號和密碼。
不過林鴻轉念一想,沒有好友的用戶,那就根本不是用戶,這個賬號保留了也沒什么意義,如果再次想使用這個軟件,那就重新注冊一個賬號即可,以前的賬號讓其徹底報廢 最初賬號保存的地方,可以隨機選擇一兩個“目錄服務器”進行保存,一段時間之后,這些數據就會徹底被銷毀,以免被有心人獲得實現不良目的。
原本這只是很簡單的一個軟件,但是為了讓其擁有足夠的保密特性和安全性,林鴻將其復雜度提升了整整一個等級,可謂是絞盡腦汁、費盡心思。
最終編寫出來的程序,還是分為兩部分,一部分是“目錄服務器端”,專門用來保存節點拓撲結構和最初的注冊信息。
另外一部分則是“客戶端”,當然這個客戶端中也集成了中轉服務功能。
早晨的時候,新版cqcq的原型便編寫出來了。
林鴻興致勃勃地登錄老版軟件,想要將這個消息告訴linus,可是上線之后才想起,對方已經當兵去了。
于是,他登錄sam官方的bbs,寫了一篇有關這個軟件的詳細的介紹,想正是對外發布,讓大家一起來幫忙測試和使用。
不過,當他的手指接觸到鍵的時候,最終還是沒有按下去。
這個軟件是林鴻親自設計的,自然清楚一旦發布之后會對網絡世界造成什么樣的影響,甚至也會對現實世界造成沖擊。
可以說,這是一把雙刃劍,黑客們可以用其進行自由溝通,犯罪分子也可以它來干一些違法的事情,對他們來說肯定是一個絕好的消息。
但是,對于各國政府來說,這就是個壞消息了。可以預料,這個軟件會遭到這些人的強烈反對和封殺。
剛才他在腦海中模擬了一下,一旦這個軟件流行起來之后,到底會發生什么情況。
最終模擬的結果是,自己可能會被fbi的人請去喝咖啡,或者像凱文那樣過上隱姓埋名的流亡生活。
這兩種情況他暫時都還承受不起,也不想因為這個原因而導致這個軟件還沒壯大起來就被扼殺在搖籃當中。
現在林鴻已經開始有了隱藏自己身份的意識,這點凱文早就跟他說過,他可不想讓自己的名字出現在fbi的黑名單上。
“哎!”
林鴻嘆了口氣,現在實在是有點小郁悶。
自己花了整整一天一夜的時間,將這個軟件給編寫出來了,可是竟然沒有膽量將其發布出去,實在是夠郁悶的。不知道計算機的發展歷史上,有沒有這樣的例子。
林鴻想了半天,最終想到一個非常鬼鬼祟祟的辦法,那就是入侵幾臺服務器,先將目錄服務器端安裝在服務器上,然后再想辦法匿名發布帖子,讓大家下載使用。
可是現在林鴻對入侵方面的技術還并不是很熟悉,如果冒然這么做,也很容易被人給挖出來,到時候不小心暴露了,結果和自己直接進行發布一個摸樣。
“看來還是得花點心思研究一下入侵技術。”
林鴻之前雖然覺得自己也應該學習一下入侵技術,但這是建立在防止別人入侵的心思之上,需求并不是很迫切,但是現在看來,掌握了網絡入侵技術,有時候做起事情來要方便得多。
他看看時間,離晨練還有半個小時,于是繼續著手改進這個軟件。
再取名為cqcq顯然是不合適了。
他決定給這個軟件取個新的名字。
原本按照其結構,林鴻想取名為“糖葫蘆”,意為信息通過多個節點進行跳轉,最終達到目的地。但是轉念一想,這樣一看這名字就知道肯定是中國人編寫的軟件,一下子就將作者的范圍大大縮小,想想還是放棄了。
最終的名稱定為“bit_courier”,中文名稱為“比特信使”,簡稱“bc”。
和cqcq不同的是,比特信使并沒有再使用一連串的數字來表示id,取而代之的是一連串沒有任何規律的散列字符串,這個字符串中有數字也有字母,還區分大小寫,總共多達十三位,稱為bc地址。
這是通過hash加密算法經過二次加密而計算出來的,在比特信使的規則中,具有唯一性,每個人都有唯一的bc地址,通過這個地址可以加對方為好友。
這樣做的目的,是林鴻不希望別人可以簡單地通過按照數字順序累加,對所有賬號進行遍歷,從而避免大范圍的暴力密碼破解攻擊。
不過很顯然,這樣做bc地址太難記了,只能通過復制粘貼的方式進行操作,在林鴻的設想中,比特信使最初期的用戶,應該是那些懂計算機技術的用戶或者黑客,只有他們暫時才有這類需求。至于犯罪團伙,根本不在他的考慮范圍之內,當然,如果這些人也有計算機技術,那算你好運,可以找到一個相當安全的通信方式。
另外,林鴻將自動更新技術也集成到比特信使中了,這樣一旦發布新版本,全網客戶端將可以選擇是否進行自動升級。
理論上來說,比特信使是完全不受任何人控制的,林鴻一旦發布,他也立刻對比特信使失去了控制權,他也無法監聽任何一個節點,或者說,沒有任何人能夠監聽。這是一個沒有中心的架構,整個世界都是平坦的,相互之間都是平等的,沒有誰能夠控制誰。
不過林鴻還是給自己留下了一個后門,那就是自動更新功能。這是唯一有可能對其進行控制的地方。這個功能可以讓程序更加強大,也可以讓程序失去作用。
剛開始的時候,林鴻是沒有這個設計的,但是在他想要按下鍵的那一刻,他的內心突然產生了一種莫名的感覺,說不上是興奮還是恐懼,很復雜。
考慮再三之后,他還是決定給自己留下一個后門,因為他實在無法預知,到底這個程序發布之后會產生什么樣的影響。
“如果這個程序真的沒有存在的必要,那么就讓它消失吧。”林鴻對自己說。