美國政府沒有能力對軟件源代碼實施禁運。無論是美國公民寫的代碼,還是其他國家人寫的放在美國服務器上的代碼,都一樣,源代碼永遠是自由的。

原文標題:《開源是自由的,永遠》
文章來源:公衆號 歪理邪說
作者:霍炬
鏈聞經公衆號「歪理邪說」授權轉載

開源軟件到底受不受美國政府管制?會不會應美國政府的要求禁運?最近這個話題成了熱點。遺憾的是,到現在中文文章裏我沒看到能把這個事情說清楚的文章,這讓我非常驚訝。中國科技和互聯網行業從開源軟件中受益極大,也有無數直接和間接參與者,但是這些基本事實還是糊塗的,比較遺憾。

不賣關子,我先說結論,再來講歷史和過程。這個事情的奧祕在「開源軟件」這四個字上,用一個不太精確的說法概括結論,「開源(源代碼)」是受美國憲法第一修正案保護的言論自由,而「軟件」是一種產品,受出口管制法律管制。所以看起來開源軟件是一件事,其實它包含了兩個不同的部分。無論任何許可證,無論是 GPL 還是 Apache 或是 MIT,採用它們的代碼都不會受到美國管制法律影響。但是分發尤其是分發編譯打包之後的成品,那個叫做軟件,軟件就脫離了第一修正案保護的範圍, 和大部分真實商品一樣,適用於所有管制法律。所以絲毫不用擔心有一天美國不允許別人使用源碼,不允許別人使用 Linux 內核,這件事美國政府幾乎是不可能做到的。

大多數人認爲軟件和源碼是一回事,理解不了爲什麼它們適用法律完全不同?答案也很簡單,源碼被判定屬於言論自由,這是一羣美國工程師、科學家、法學家冒着生命危險和職業代價,和美國政府以及幾大執法部門抗爭而爭取回來的權利。他們這麼做是爲了對抗把加密軟件列入軍火管制範圍的法律,而爲什麼加密軟件被算作軍火管控?這要從歷史說起。

我們要追溯到 80 年前,二戰時期,那是計算機行業的祖師爺阿蘭圖靈活躍的時代,那個時候,今天我們所說的計算機還沒有誕生,「圖靈機」這個計算機的理論模型剛剛提出不久。儘管計算機還沒有產生,但是機械驅動的加密機已經開始在軍隊中普及,納粹德國使用的「Enigma」密碼機就是其中最可靠的一種。爲了破譯德軍密碼,盟國各國都有相當大的投入,法國人貢獻了情報,波蘭數學家和密碼學家貢獻了破解理論…英國軍情部門統籌了全局,圖靈帶領的小組在這裏製造出了專門用來解密的「密碼炸彈」破譯機,最終使得盟軍可以完全掌握德軍情報,這和盟軍取得二戰勝利有密不可分的關係。不要認爲這只是歐洲的事,亞洲戰場上日本同樣使用了德軍的密碼機。關於這段歷史,70 年代英國檔案解密之後已經有無數作品講述它,這裏不說細節了。

開源非軟件,開源即言論自由,美國政府無權禁運開源圖靈的破譯機密碼炸彈照片

加密和解密技術伴隨戰爭而生,產生於軍方,它在很長曆史時期內都被認爲是軍事產品,和武器一樣被算作軍火管制範圍自然不意外。在這個時期,這些系統都是硬件 , 普通人也接觸不到。從 80 年代開始,PC 的興起讓軟件加密和解密也開始發展,同時商業尤其是金融行業的發展,使得軍事用途之外的密碼需求急劇增加,於是美國政府開始放寬密碼產品的管制範圍,商業應用得以使用這些技術,但是超過 40 位密鑰的加密產品,仍然出於被禁止出口的範圍,要出口需要事先向美國政府申請許可,美國政府仍然把加密軟件當作軍火管理。

一轉眼,時間到了 1991 年。程序員 Phil Zimmermann 寫了第一個個人可以用的高強度加密軟件,叫做 PGP,PGP 使用密鑰長度大於 128 位,遠遠超過了美國政府的管制規定。之後他把源碼放到互聯網上讓人們隨便下載。既然放在了網上,自然就不是隻有美國公民可以下載到了,當美國之外也有人下載的時候,這件事就驚動了美國政府。之後美國政府開始對他進行犯罪調查,這個調查使得 Zimmermann 在當時的技術和法律圈子瞬間出名,人們開始爲他提供各種支持。之後 Zimmermann 決定通過美國憲法第一修正案對於出版自由的保護來規避這個問題,他通過 MIT 出版社出版了一本書,書的內容就是 PGP 的全部源碼,買到書的人只需掃描和 OCR 全書,就可以得到 PGP 的代碼,之後自己編譯,就是可用的加密軟件。技術和法律在此時發生了第一次碰撞,技術以極端靈活的特性順利規避了法律制約,算勉強獲勝。之後,一系列算法通過印刷品的方式發行,後來人們爲了抗議這種管制方法,甚至用幾行代碼實現了 RSA 加密算法,然後把這些代碼印在 T 恤上,或者乾脆當作紋身把代碼紋在胳膊上招搖過市。雖然這個問題暫時繞過去了,但是越來越多的人開始考慮這個新問題:既然源代碼印在書籍上,就算作言論自由,那麼源代碼本身能不能被算作言論呢,如果算的話,在網上發表源碼,是否應該被第一修正案保護?

640 (1).jpeg軍火 T 恤,上面印着代碼,寫着“這件 T 恤被分類爲軍火,不能出口也不能給外國人看到”

640 (2).jpeg圖:“軍火”代碼紋身

時間繼續推移,軟件、互聯網和計算機行業繼續發展,越來越多的人遇到了類似的問題。開始有更多的人挑戰出口管制法律。1995 和 1996 年,連續出現兩個案件,Junger v. US Department of State 和 Bernstein v. US Department of Justice,前者是大學教授 Junger 和美國國務院的訴訟,後者是加州伯克利大學的學生 Bernstein 和美國司法部之間的訴訟。這兩個案例原因不同,訴訟對象也不同。 教授 Junger 是要在課上爲學生講述技術相關的法律,其中有關於軟件加密的技術,但聽課的學生中有外國留學生,因此也落入了出口管制限制的範圍,並且面臨了百萬美金的鉅額罰款和最高 10 年的刑期。學生 Bernstein 是爲了公開發表自己發明的加密算法論文,並且希望可以公開的,不受限制的參加學術會議討論他的算法。兩個問題指向了同一個答案,軟件源代碼應該是一種言論自由,並且應該受憲法第一修正案保護。在電子前線基金會的幫助下,在大批律師和法學家、科學家、工程師的共同努力下,一直到 2000 年之後,最終的勝利終於到來,兩個案例分別在第六巡迴上訴法庭和第九巡迴上訴法庭得到了同樣的判決:軟件源代碼是言論自由,受憲法第一修正案的保護。特別值得注意的是,第九巡迴法院和第六巡迴法院分別位於美國西部和南部,兩個相同的判決說明了,無論是自由派還是保守派,都持同樣的結論。從此之後,美國政府再也不能試圖限制軟件源碼流通了。

知道這些歷史之後,很容易就可以得到確定的結論:美國政府沒有能力對軟件源代碼實施禁運。無論是美國公民寫的代碼,還是其他國家人寫的放在美國服務器上的代碼,都一樣,源代碼永遠是自由的。 那麼爲什麼 Apache 許可證中會包含「可能受到美國出口法規管制」的字樣,而 GPL 許可證根本沒有這個內容呢?因爲 GPL 是一種只管源代碼的許可證,並且它有傳染性,包含 GPL 的項目本身也必須開源,所有通過 GPL 許可證發佈的產品必須提供代碼,它根本不涉及分發和不開源的部分,也就不會被列入管制範圍。但 Apache/MIT/BSD 之類的許可證不是強制開源,人們可以使用它發佈不開源的代碼,也可以在發行版本中混入不開源的二進制軟件和庫,這些不是代碼的東西 ,就會落入管制範圍。因此他們必須加上這個聲明「可能受到美國出口法規管制」,這裏說的是「存在這種可能性」,而不是說「一定如此」。

當然,這裏有另外一個細節問題是,GPL 只管源代碼,那麼如果一個組織開源了自己的代碼,同時又提供二進制發行版,這時候會不會被管制?答案是會的。所以要做軟件發行(而不是純粹源代碼發行),就需要在 GPL 基礎上擴充出來一份新的許可證,這份許可證裏面同樣會寫上「可能受到美國出口法規管制」字樣。針對這個問題 RMS 曾經親自回答過:fedora 許可證包含了「可能受美國出口法規管制」,這和 GPL 衝突嗎?RMS 的回答大意是:GPL 只管源碼是不是開源,其他都不管。你如果要打包發行 GPL 的軟件,在履行了開源義務之後,GPL 就不會找你麻煩了,之後你可以隨便設定各種條件在你的發行版上,哪怕是「禁止藍色頭髮的人使用」都可以,那是你自己的決定。這就是對源碼和軟件之間法律關係的最好解釋。強制開源保證了自由,所有人都有機會使用它,不會受到任何限制。一個最極端的例子是這樣,做爲美國禁運的重點國家朝鮮也有自己的 Linux 系統,他們一樣是自己拿源代碼編譯發行的版本。(當然,朝鮮並沒有開源他們的紅星 Linux 代碼,是違反 GPL 授權的)

開源運動可以算是人類歷史上最大的奇蹟之一,來自世界各地的人,在不同的國家不同的制度下,用不同的語言,共同創造了一堆屬於全人類,所有人都可以自由使用的工具。他們之間可能互相不能聽懂對方說話,可能政治觀點完全不同,甚至可能是完全敵對的,但是仍然共同爲這個工程貢獻了力量。我想不出來人類還有什麼其他的事情達到過這樣的高度和廣闊程度。

大家關心的另外一個問題是 git 和 Github 會不會算在禁運範圍內。首先要區分 git 和 github 是兩個完全不同的東西,git 是一套開源的軟件代碼版本控制系統,如上所述,它是完全自由的。Github 是一個商業公司,提供 git 託管服務,所以 Github 確實有可能因爲法律要求不提供某些地區的服務,比如朝鮮 IP 是不能訪問 Github 的。但是這對於中國用戶似乎完全不是問題,畢竟世界流量最大的 100 個網站裏面大部分中國用戶都不能訪問。

Git 本身就是一套分佈式代碼管理系統,你只要使用 git,那麼你自己的計算機上始終會有一份和服務器同步的代碼版本,即使服務器拒絕你訪問了,你也不會丟失源代碼,自然也就不存在「抓緊備份一份代碼」這種問題,代碼本身就存在你的計算機上。

最後一個問題是,爲什麼這麼多開源軟件基金會都在美國?這個問題非常有趣,畢竟,開源軟件最重要的作者們,其中至少有一半不是美國人,你看,Linux 作者 Linus Torvalds 是芬蘭人,C++之父 Bjarne Stroustrup 是丹麥人,Python 作者 Guido van Rossum 是荷蘭人,Java 作者 James Gosling 是加拿大人 … 更別說每個開源基金會都有大量的董事們不是美國人,也並不生活在美國。爲什麼他們不把基金會放在自己的國家而是放在美國?

除了美國有更豐富的資源這個理由之外,還有一個重要的理由,就是美國的制度可以保護他們的工作永遠是開放的。這件事頗有一點中國太極的意味,美國在開源領域成爲主要陣地,不是因爲它強大,而是因爲它不夠強大,美國政府不是說一不二,想怎麼做就怎麼做的政府,它的錯誤可以被挑戰,被糾正,可以和它法庭見…美國公司、美國人民、美國法律和美國政府,這些概念看似一樣,實際上是不同的。他們有共同利益,但是也有衝突,同時又互相制約。有 ACLU,EFF (電子前線基金會)這樣的組織,幾十年如一日挑戰不合理的法律制度,和政府打官司,並且無數次獲勝。這些複雜的關係構成了讓開源軟件發展的重要社會基礎,人類社會沒有什麼 100% 確定的事情,但是這種互相制約的平衡最大概率上保證了這些項目的自由,這是世界各國開源項目領導者和參與者經過漫長時間之後的共識。

如果不相信這個看法,想想前面提到的幾個案例,一個美國公民,希望讓全世界人民都可以使用自己的算法和代碼,而完全不管敵對國家會不會獲得他的成果。一個美國教授,希望給外國留學生講解加密技術,冒着自己坐 10 年牢的風險,拿起法律武器挑戰美國政府,並取得了最後的勝利。這件事要發生在其他國家,會是怎麼樣的結局?被罵做賣國賊算是起步待遇吧?更別說還有很大可能會承受更糟糕的結果。但是在美國,他們不僅能獲得勝利,美國人民還視他們爲英雄。

我們還可以假設一個場景。如果真的發生美國政府試圖禁止中國使用 Linux 內核這種事情,你猜誰會先站出來罵美國政府?顯然是自由軟件基金會的創始人 RMS 和 Linux 的作者 Linus。他們不僅會罵,還會在法律上挑戰美國政府,並且會把所有代碼託管到其他國家。凡是以「有一天我們會用不了 Linux 內核」爲藉口搞什麼獨立系統的,我敬佩他們的勇氣。但是一方面他們擔心的事情不可能發生,另外一方面,做個操作系統在這個時代並不算難,難的是如何建立整個生態。軟件和互聯網生態是全球化的產物,整個生態的完成是全世界工程師和企業共同完成的,任何一個國家也難以獨立建設完成一套生態,即使美國,它也不可能脫離世界獨立存在。

回頭看這個歷史,開源運動和加密運動互相扶助完成的這個過程。密碼學家始終扮演了重要的角色,被列入軍火管制的東西是加密軟件,這使得密碼學家和法律制度發生了衝突,如果沒有這種衝突,就沒辦法到法院挑戰美國政府,也就沒法拿到法院最終的判決。如果沒有判決,源代碼算不算一種言論自由就仍然是不確定的爭議,那麼開源運動就很難產生這樣的影響力。如果沒有開源運動,沒有 Linux,沒有 GCC,沒有 Android,沒有瀏覽器…整個互聯網可能都不會存在,那麼軟件和工具仍然會掌握在少數幾家企業手裏,距離普通人遙不可及。

密碼學家們不僅改變了二戰的進程,他們也一直通過各種方式影響着社會,加密運動參與者極端注重隱私和自由,雖然他們的很多努力只是是出於維護自由的目的,但他們的創造物則影響深遠,雖然其中大部分並不爲普通人所知,但每隔一些年,總會有一些成果產生了驚天動地的效果,被人們所知。最近的一次大概要算這件事:

2009 年 1 月 8 日,有人在密碼學圈子裏面發了這麼一條消息:

I made the proof-of-work difficulty ridiculously easy to start with, so for a little while in the beginning a typical PC will be able to generate coins in just a few hours.

發佈這條消息的人使用的名字是 Satoshi Nakamoto,在中文裏,這個名字被譯作「中本聰」。

來源鏈接:mp.weixin.qq.com