開源非軟體,開源即言論自由,美國政府無權禁運開源

買賣虛擬貨幣

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

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

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

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

圖:圖靈的破譯機密碼炸彈照片

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

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

圖片:軍火T恤,上面印著程式碼,寫著“這件T恤被分類為軍火,不能出口也不能給外國人看到”

圖片:“軍火”程式碼紋身

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

知道這些歷史之後,很容易就可以得到確定的結論:美國政府沒有能力對軟體原始碼實施禁運。無論是美國公民寫的程式碼,還是其他國家人寫的放在美國伺服器上的程式碼,都一樣,原始碼永遠是自由的。 那麼為甚麼Apache ASF託管專案許可中會包含“可能受到美國出口法規管制”的字樣,而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,在中文裡,這個名字被譯作“中本聰”。 

免責聲明:

  1. 本文版權歸原作者所有,僅代表作者本人觀點,不代表鏈報觀點或立場。
  2. 如發現文章、圖片等侵權行爲,侵權責任將由作者本人承擔。
  3. 鏈報僅提供相關項目信息,不構成任何投資建議

推荐阅读

;