暗網潛航——開源軟件安全性

  很多人對開源軟件安全抱有疑問,大家爭拗究竟程式原始碼公開透明化後,是否會較易遭到攻擊。然而這論點反而凸顯他們混淆信息安全理論,今次筆者簡單論述一下「程式原始碼公開後是否安全」的迷思。

  在傳統古典安全理論中伸延至今有一個根深柢固的概念,是「透過隱匿來實現安全」(Security through obscurity),意思是「一個安全的保護秘密機制是令到想破解秘密的人不知道保護秘密的機制」。這個概念聽起來很合理,如同人類自古以來把設計圖和配方秘密收藏。然而在19世紀,密碼學上有一個叫做「柯克霍夫原則」(Kerckhoffs's principle)被提出,其理論是「即使一個密碼系統的任何設計為人熟悉,只要密匙未被洩漏也是安全的」。因為我們現在所使用的所有密碼演算法其實都是公開,只是使用保護機制來保護密匙。

  事實上這些所謂秘密的密匙皆難以保守,任何軟件只要發佈在公眾環境下都可以被人使用逆向工程把原始程式碼還原出來。

  開源軟件安全性定義在於匿藏密碼系統設計的完善度,而非只靠匿藏密碼系統設計。一般人假定攻擊者拿不到原始碼這種想法並不現實,因為「永無可信封閉原始碼」。而完善的安全設計是經過無數人驗證及改進,稱為「透明式安全」(security through transparency)。情況就如公開加密演算法,但透過不斷改進保護密匙增強加密機制。故此現今互聯網世界中,一般人以為把原始程式碼匿藏便可達至安全並不可行。

TOZ聯合創辦人

龐博文


hd