從心臟出血到量子安全,OpenSSL到底是怎樣的存在?
「心臟出血」引起的軒然大波
很多人仍對2014年4月7日爆發的心臟出血(Heartbleed)漏洞記憶猶新。
一夜之間,全球三分之二的伺服器岌岌可危,一個聲名不顯的團隊——OpenSSL讓無數的管理員夜不能寐。
在SSL(安全套接層協議)領域,OpenSSL是當之無愧的無冕之王,該團隊的「大管家」Steve Marquess在最近的中國行中提出了一個比喻,可以很好地解釋他們的工作:
「
你可以把網路想像成電路,信息就是電流,OpenSSL則像是電線絕緣層,確保電流能安全傳輸而非四處泄露。
但是,問題在於,用戶接觸的只是最外層的「電源介面」,因此「OpenSSL對於終端的用戶是隱形的、看不到的。」
Steve曾這樣描述這種現狀:「成百上千的廠商使用它,每台智能手機使用它。每個人都用得理所當然。但是除了我們最忠實的用戶社區,我們幾乎不為人所知。大多數公司甚至都沒提及其產品中使用了OpenSSL。」
這種「隱形」加劇了事件爆發時人們的不理解和憤怒。在眾多聲音中,有兩種針對OpenSSL的攻訐格外響亮,Steve也專門作出了回應。
首先,是OpenSSL公布「心臟出血」漏洞的過程。在Google告知了OpenSSL漏洞之後,該團隊沒告訴任何主流操作系統維護者和相關廠商,只有開源社區出現了相關傳言。傳言擴散的第三天,也就是4月6日,OpenSSL才告知了Red Hat,幾大操作系統才輾轉獲知心臟出血漏洞;而直到4月7日早上,OpenSSL才發布了公告。對於如此重大的漏洞,關鍵廠商居然比媒體知道消息還晚,這確實引發了很多損失和不滿。
關於漏洞公開的過程,Steve解釋道:「OpenSSL秉承『負責任地披露』的理念,因此我們不能隨便地披露一個問題。一旦出現漏洞,我們會先跟代碼發布者合作,了解漏洞的細節,然後再對漏洞的嚴重程度做評估,比如非常嚴重、中等、不是那麼重要。根據不同的嚴重性,我們會有不同地的反饋和處理。當然很嚴重的,我們會越快推送越好,中等則不一定,我們會先跟做操作系統的一些專家打交道,讓他們有時間處理。」
「
我們儘可能早地公布漏洞、給系統打補丁。但是只要有第一次提前披露,以後就會有更多人以此要求讓我們做披露。而涉及的利益相關方越多,就意味著漏洞泄露的可能性越大。因此,我們只有在最後有了一個確定的版本之後才能真正發布漏洞,並給現有版本打上補丁。有時人們對此不太高興,但是我們知道提前披露有泄露的風險,所以對此很謹慎。
第二種怨言認為OpenSSL的代碼和文檔質量太差。約翰霍普金斯大學教授、密碼學專家馬修·格林指出:「年復一年,OpenSSL累積了太多晦澀難懂的東西。代碼質量實在太低,沒人有興趣進行重構。」
對此,作為OpenSSL前身SSLeay創建者、OpenSSL創始人之一的Tim解釋說:「其實很簡單,每一個開發者都很討厭寫文檔,當然我說討厭這個詞肯定措詞比較強烈,但確實如此。代碼或文檔質量上有問題,這些都是事實,但是,為什麼我做了近20年的OpenSSL呢?是因為這個軟體其實是可以用的,它在這個領域是比較成功的。
Steve還提到了代碼的許可問題。「現在的許可一團糟……一直以來,我們希望能夠改改許可,但是困難重重,為什麼?因為大部分代碼不是由個人、實體甚至組織所擁有的,它是由代碼的原作者所擁有,這些作者在不同的國家,不同的國家對於許可有不同的使用規定……這個過程需要時間。」
遍布全球的OpenSSL竟然只有兩個人
當人們氣憤地點開facebook上的鏈接,想看看OpenSSL究竟是何方神聖的時候,他們才知道,儘管OpenSSL的套件遍布全球,但是他們卻窮得出乎人們意料。當「心臟出血」爆發時,OpenSSL甚至只雇得起兩名全職員工;和其他技術公司相比,他們簡直是「窮困潦倒」!
這種現象的形成和OpenSSL的團隊性質有關。
首先,OpenSSL做的是開源代碼庫,這大大限制了收入途徑。對他們來說,他們就像為信仰獻身的騎士,這種信仰的核心就是「for free」,對工作的忠誠則使得OpenSSL團隊在一些容易掙錢的途徑面前划了一條紅線。Steve回憶了一件往事,有一次他跟一個沒有正規收入的同伴說,漏洞的提前披露意味著一年賺100多萬,沒想到他的同伴很快用電子郵件拒絕了他,表示這不符合OpenSSL的原則。
其次,OpenSSL的名聲僅限於一些專業的小圈子。他們就像是一群廢寢忘食的雕刻師,痴迷於創作而疏於宣傳。知道他們的人不多,一些人雖然知道他們,卻並不知曉他們的窘迫,因此很少有機構或個人會捐款給他們。在心臟出血爆發前,他們甚至沒有進行過一次募捐!
凡此種種,讓OpenSSL缺少必要的資金僱傭全職員工或管理人員,既沒有人力去整理冗雜的代碼,也缺乏能力進行快速反應。Steve表情沉重地描述著當時的情況:「OpenSSL規模那麼大、複雜程度那麼高、影響面那麼大,卻沒有足夠的人力保障它的安全,這是個問題。」
Steve:「這幾年,我們一直在還債。」
心臟出血事件,對於OpenSSL是個涅槃重生的契機。
雖然背負了種種罵名,但是從某種意義上來說,OpenSSL也從幕後走到了台前,人們開始正視這個看似微小卻影響極廣的團隊。
他們收到了各界的援助,既有機構(比如Linux基金會和鎚子科技、華為等企業)的資金支持,也有些個人的小額捐款和代碼支援(比如,白山雲科技的架構師楊洋在OpenSSL代碼貢獻榜上位居第十八),以及各種令人鼓舞的聲援和反饋。
這個團隊一步步地完成了重建和新鮮基因的融合:
他們的全職員工從兩名增加到了四名,相識已久但素未謀面的團隊成員們在2014年第一次聚在一起,並建立了由14名技術顧問和10名管委會成員組成的決策機制(有8人身兼兩職)。
值得重視的是,OpenSSL開始「從系統上清還之前欠下的技術債」,一點點重構和精減現有的代碼,並且不斷地加入新的代碼和功能。他們進行了梳理和篩減,儘可能讓內部結構變得不透明,從而避免調用未來數據會發生變化的應用。在此期間他們還完成了第一次重要審計。
下圖的黃色曲線代表OpenSSL未解決的問題數量,由於在2014年底OpenSSL加入了新的代碼和功能,黃線在這個時間點上產生了大幅度的下降。
OpenSSL現在關心什麼?
Steve說,自己「不是英雄主義者」,只是為了「更好的、免費的服務」做著最「現實」的事情。那麼,除了「清還技術債」,他們還在做什麼?
在第二次會議上(此次中國行是第三次),他們討論了許可協議。
「
我們覺得Apache2.0是我們目前能夠用的最好的許可體系,它雖然不是盡善盡美,但是目前最好的選擇。我們給代碼擁有人發了郵件,大部分人都同意了,拒絕的人所寫的代碼影響也不太大,我們可以進行修改。目前我們正在等最後的回復。
高居OpenSSL代碼貢獻榜首位的Matt Casewell談到了即將發布的OpenSSL 1.1.1,該版本最大的特點之一就是支持TLS v1.3協議。TLS(傳輸層安全協議)是安全套接層協議(SSL)的進化版本,比如在2016年成為網路安全傳輸新寵的HTTPS,其關鍵步驟之一就是TLS握手。TLS v1.3比傳統的協議的速度更快,更重要的是消除了對一些老舊而衰弱的加密方式的支持,這意味著該協議能更好地對抗BEAST、Lucky 13、FREAK、LogJam等臭名昭著的漏洞攻擊手段。
OpenSSL創始人之一的Tim Hudson更關心量子計算。他坦言:量子計算機尚未出現,至今也沒有統一的解決方案,但是「就我們安全專家這個社區來說,我們現在已經假設量子電腦很快就要出現,並且希望在它出現之前就建立起量子攻擊的抵抗能力」。他提出了一個開源倡議——「開放量子安全(Open Quantum Safe)」,即打造一個名為liboqs的C庫,作為可抗量子破解的加密演算法。
OpenSSL的「中國力量」、上文提到的白山雲科技架構師楊洋則在開發多素數RSA演算法,該演算法極大縮減了由HTTP向HTTPS遷移過程中的硬體開銷。以前,加密流量的應用意味著購買很多新硬體和擴容伺服器,這種演算法可以在硬體完全沒有變化的情況下,僅靠軟體演算法的優化進一步加強HTTPS握手的能力。
他解釋道:「OpenSSL已經公布的官方代碼中並沒有多素數RSA演算法,我們實現並提交了這個功能。該功能會作為一個分支併入OpenSSL里。」
※騎士「大心臟」雲集,該由誰執行最後一投?他或將最沒可能
※這件衣服可以在佩戴者的心臟跳動時眨眼!
※如果是愛情,離天堂最近的地方就是心臟
※心臟超聲病例分析
※生物識別身份驗證新元素:心臟掃描識別身份
TAG:心臟 |