“如果你所使用的是開源安全軟件,那么這款軟件本身是否安全?”
作為Benetech公司的一員,這是我們在選擇使用Martus——一款免費而又極為強大的,由Benetech人權計劃提供的敏感信息安全收集與管理加密工具——時曾經多次提出的問題。這個問題對我們而言非常重要,當然對于在后斯諾登時代下擔心甚至恐懼于監控活動的同行們亦有著極為關鍵的意義。我們不僅堅信開源機制能夠與數字安全的各項要求相吻合,同時也認為其正是安全體系當中不可或缺的組合部分。
安全軟件就像一個保險箱
請允許我用以下比喻來解釋開源與安全的關系:
我們不妨將加密機制視為一套用于數據保護的組合型保險箱。大家可能是惟一使用這套組合的用戶,或者可以通過從幾套相關組合中選擇其一提高其可信度。保險箱的設計目標在于保證未經授權的對象無法接觸到其中保管的內容。而這些對象可能包括有意竊取有價值業務信息的罪犯、想了解同行薪酬數字的員工或者希望獲取機密信息以實施詐騙活動的惡意人士。無論屬于哪種情況,我們要求保險箱能夠做到的就是保證內容安全并將無權訪問的對象阻絕在外。
既然如此重要,那么我們接下來就要為有價值數據選擇一款保險箱了。我是否應該選擇保險箱一號——廣告中說它擁有半英寸厚的金屬箱壁、六枚鎖緊螺栓,獨立機構測試驗證其中保管的內容甚至能夠在長達兩小時的火災當中毫發無損?又或者,我應該選擇保險箱二號——這款保險箱的安保水平僅僅得到了供應商方面的承諾,因為其設計細節屬于商業機密而無法公布?事實上,保險箱二號很可能是用膠合板及金屬薄層粘夾而成,但出于“商業機密”保證、具體情況我們不得而知。當然,二號也許真的比一號更為安全,不過需要強調的是——我們無法確定。
大家不妨想象自己為保險箱一號制定出了完善的部署計劃與使用規范,甚至能夠在擁有正確素材及工具的情況下另外制作一套復制品。這一切會降低保險箱一號的安全保護效果嗎?不,完全不會。保險箱一號的安全性主要由兩大因素所提供:設計強度與猜測密碼組合的難度。由于能夠確切了解到這款保險箱的具體規劃思路,因此我個人或者安全專家們能夠準確判斷其設計水平究竟如何。這自然有助于建立起不存在設計缺陷或者除自行選定的密碼組合外無其它“后門”組合的保險箱解決方案。請大家記住,一套優秀的保險箱設計方案應該允許用戶隨意選擇自己的安全要素組合。從另一個角度講,熟知保險箱的設計思路并不一定能幫助攻擊者猜出用戶所選擇的特定隨機組合。
安全保護的真正目標
世界上并不存在完美的安全保護機制。廣告宣傳中所謂的“一款堅不可摧的保險箱”殊不可信,屬于完全超出實際水平的虛假承諾。因此,對有價值信息進行保護的目標并不是為了使其“不可能被竊取”,而是盡可能提高惡意人士竊取時所需投入的成本——無論是以金錢形式(更好的工具要求攻擊者投入更多資金)、時間形式抑或是被送進監獄的可能性。
一款保險箱在破解時需要投入的成本越高,我們的有價值信息就越安全。
了解到一款保險箱的技術規格并借此知曉其破解辦法并不會導致安全性因此而降低。理由很簡單:意識到一款保險箱采用半英寸厚的鋼板制造確實可能讓竊賊們發現,他們需要使用強勁的切割工具才能穿過如此厚重的防護。但這方面知識并不能降低他們的犯罪活動成本。一款設計出色的保險箱擁有一整套難以被猜出的密碼組合,而這已經足以應對大部分攻擊者。
看到這里相信大家已經明白了,前面提到的采用開放設計的強大保險箱正是用來比喻安全軟件設計思路的。
正如保險箱方案一樣,作為一款強大的加密軟件工具、其安全性并不會因為其屬于或者不屬于開源設計而受到影響。事實上,一款安全軟件的源代碼向大家公開,這本身就是強化其安全性的一種有效舉措。與此同時,這也能夠擴展其用戶的安全水平與隱私保護效果。
具體理由如下:如果代碼能夠以公開及自由的方式供我們審查,那么最終用戶、相關專業人士以及整個開源社區就能夠廣泛參與到軟件的修改當中,從而切實保證其符合所作出的不存在“后門”的承諾。考慮到如今我們已經生活在一個超監控時代之下,用戶們當然會傾向于選擇能夠切實踐行軟件開發者透明度承諾的安全產品。這一點對于保障那些人權捍衛者、社會活動家、記者、民間社會團體以及其他以公平正義為主導的使用者的數字及物理安全效果有著極為重要的意義。
這看起來像是一種悖論,即對安全軟件的源代碼加以開放反而能夠提高其可信度。不過作為工具開發人員,我們的目標并不是要把軟件設計思路隱藏起來,而是利用軟件對委托信息進行加密。正如前面提到的保險箱比喻所言,軟件的安全強度僅僅取決于其自身設計質量以及密碼內容被猜出的難度。有了強大且可公開訪問的設計方案,其它關鍵性安全元素會鼓勵用戶選擇內容較長、強度較高且非直觀性密碼內容。這種將安全設計與良好保密密碼相結合的方案完全能夠使得那些技術水平最高、資源最充足的攻擊者亦難于訪問存儲在開源安全軟件當中的機密信息。
不過正如最安全的保險箱最終還是會被擁有大量時間與資源的專業攻擊者破解一樣,安全軟件最終也將倒在類似的攻擊活動之下。再次強調我們之前提到過的結論,安全軟件的目標在于提高此類攻擊行為的成本,從而降低攻擊者侵擾我們的可能性——沒錯,他們更可能選擇安全性較為薄弱的其他受害者。
將開源機制引入解決方案
在Benetech公司,我們相信協作與社區體系有助于帶來強有力的安全保障。在這里,我們將開源代碼引入軟件開發流程,從而簡化合作機制并吸引各類現有重要創新成果。在Martus項目當中,我們不需要重新實現密碼庫,而是選擇了一套強大的開源方案(Bouncy Castle)。同樣,我們也不需要重新開發匿名工具,而是直接將Tor集成到了Martus當中。通過這種方式,我們的用戶將從整個開源社區的工作中受益,并反過來通過推出更多優秀數字化安全工具的方式支持及推廣社區的開發成果。
各人權組織中的主要技術資助方表示,開源軟件在其支持對象群體內往往擁有更為理想的信賴水平。他們中的一部分機構,例如開放技術基金,目前正以出資方式積極鼓勵受資方讓自己的軟件成果接受來自第三方專業人士的評估與審計。
只有更良好的透明度、問責機制、獨立可驗證性以及協作機制才能帶來卓越的安全性保障。而開源正推動著我們朝著這一目標大步前行。