(山東工商學院計算機學院 山東 煙臺 264005)
計算機軟件反向工程是軟件市場競爭過程的衍生問題,其自誕生之日起就爭議不斷,版權人認為反向工程是腐蝕版權的蠹蟲,而從事反向工程開發的人卻將其視為打破技術壟斷、促進軟件進步的正當手段。反向工程到底是否具有正當性、是否應當合法,究其本質還是軟件的版權人與反向工程開發者的利益博弈。
反向工程,是相對于計算機軟件開發的正向工程而言的。軟件的正向開發過程是一個創造性的活動,是指在對市場與客戶需求在充分調研的基礎上,通過創造性的分析、設計、測試等手段完成一個新的軟件。[1]而在軟件開發的過程中,開發人員需要以JAVA、C等高級語言進行程序的編寫,由此形成可供程序開發者閱讀的源代碼;源代碼通過計算機的讀取或運行進而形成二進制的目標代碼,這種機器語言表現在顯示輸出端口就是可執行的程序。對正向軟件開發流程做逆向的推導,從一個既有軟件目標代碼反向推導出該軟件的源代碼的過程就被稱之為反向工程,又被稱為逆向工程或反向編譯。通過反向工程,可以獲得他人軟件的算法、流程與組織結構等。雖然反向工程在知識產權領域具有重要的理論和實踐意義,但是我國的知識產權立法卻沒有給出反向工程的定義,但我國最高人民法院在關于反不正當競爭案件的司法解釋中將反向工程定義為“通過技術手段對從公開渠道取得的產品進行拆卸、測繪、分析等而獲得該產品的有關技術信息”①。
軟件技術是一項應用性很強的技術,新軟件的開發過程中往往會分析、借鑒他人已經開發的軟件,這是軟件產業界十分常見的。反向工程不是一被應用于軟件領域就引發法律爭議的,至少在20世紀80年代前這類爭議極少發生,主要是因為當時軟件業并未形成一個利潤巨大的產業,對其進行反向工程也未必會對軟件權利人的利益造成影響。[2]
上世紀80年代之后,隨著計算機逐漸進入普通人的生活,軟件市場也具有更多的利潤,產權保護或者技術壁壘就成為了軟件產權人攫取更多利潤的一種方式。實施人往往通過反向破解之后進而通過仿制等手段進行不正當競爭,使軟件發明人的利潤受到影響,許多學者由此反對反向工程,認為這是一種技術剽竊的方式,理由如下:第一,在反向工程實施過程中,會對他人的目標代碼進行獲取、分析、復制,在未經權利人同意的情況下即構成侵權。第二,軟件信息與版權人的經濟利益直接掛鉤。軟件開發的過程會消耗大量的人力、物力及時間,一個即成的軟件中凝聚著大量的無差別勞動,法律應當保護其版權使其在市場中收回成本。反向工程中對代碼的復制雖然也會消耗成本,但與軟件開發相比仍然具有成本優勢,這就使得通過反向工程而破解的軟件在銷售成本上與原軟件相比更具優勢,會直接以更低的價格將原軟件驅逐出市場,直接侵害軟件版權人的經濟利益。第三,一般認為反向工程的成本極低,在以低成本的形式就能獲得既有成果的情況下理性人會放棄自足研發,從而誘發道德風險。如果允許反向工程的存在,無異于允許以剽竊的方式獲得別人的版權,從成本—收益的分析角度來講,剽竊的成本更低,長此以往,越來越多的軟件工程師會從獨創性工作轉向反向工程,不愿意進行自主研發工作,這對于軟件行業的發展是十分不利的。第四,允許反向工程會浪費更多的社會資源。如果說軟件開發過程是運用社會資源進行軟件獨創的過程,那反向工程就是運用各種資源進行復制的過程,由于目標軟件的存在已經能夠滿足計算機市場和軟件市場的需求,因此再進行反向破解無異于是重復勞動,除了能滿足反向破解者個人的利益之外并沒有新的社會效益,這是與效益原則相違背的。[3]
盡管如此,還是有許多人支持反向工程的存在。反向工程不僅僅涉及知識產權保護,還涉及競爭、商業秘密保護,不僅僅是版權人個人利益問題,也應當加入社會公共利益的考量,因此認定反向工程合法與否,必須從這些方面綜合考慮。就目前知識產權理論發展的趨勢與現實意義來看,應當認定反向工程尤其合理性并賦予其法律上的認可,理由如下。
首先,反向工程不是簡單的軟件信息剽竊,而是對現有成果的合理運用。一般而言反向工程需要經過獲取目標代碼、將目標碼轉換成ASCII碼和Hex碼、根據CPU指令進行反向編譯、匯編代碼得出源代碼等步驟,單是獲得目標代碼的工作量就非常巨大,例如8行代碼的小程序對應著著50頁的二進制代碼,而普通50MB左右的程序其二進制代碼達到62500行,而查找CPU指令的意義也需要工作人員根據經驗做大量的判斷。因此反向工程雖為對目標代碼的復制,但這種復制并不像我們想象中那么輕而易舉,也有智力與財力的投入,這與剽竊完全不同。反向工程可以視為對商業秘密的一種限制,其設置目的綜合考慮了反向工程沒有在先保密合同的約定與實施人付出的投入,也防止在先發明人濫用權利造成壟斷。
其次,反向工程可以促進技術進步。對于理性的發明人而言,可以在商業秘密保護與專利保護兩種形式中進行選擇,但專利技術與商業秘密相比,突出的特征是通過對技術的公開換的暫時的技術壟斷,也就是說對于專利產品而言沒有必要實施反向工程,因為技術是公開的。若采用商業秘密的形式保護軟件產品,則無需主動公開該技術信息,但因此獲得的法律保護不應當比專利保護水平更高。
再次,反向工程可以節約研發成本。所謂研發,是指在既有的成就的基礎上的升華和改進,新技術的發明亦是如此。如果在研發的過程中不允許創造者把握甚至借鑒他人的成果,每次都是從零開始,那么研發人都會重復過去研發者的老路,相當于同樣的或者類似的成果被研發了兩次,而這兩次都是要消耗大量的社會資源的,這會使對這軟件的過分產權保護變為軟件業技術進步的黑洞,會使社會的創造力大打折扣。反向工程的意義在于通過對軟件的逆向推導使軟件開發者掌握現有的創作思想,避免重復研發或者無效研發,從而節約成本。這里值得注意的是,反向工程的開展并非沒有成本,并非不消耗資源,在許多情況下這種消耗還非常巨大,但是相對于從無到有的創造,這種成本的消耗還是可以接受的,并不會產生浪費資源的效果。
最后,反向工程可以降低軟件價格,保護消費者權利。軟件開發過程中所投入的各種成本會在軟件的銷售中進行攤銷,軟件產權人也在這個范圍內能夠以較高的價格銷售軟件,并通過商業秘密或者專利的保護來阻止其他競業者來搶占市場和利潤。但是對于軟件著作權的保護很可能形成知識產權的壁壘進而形成壟斷,而壟斷天生會排斥競爭并通過高額的壟斷價格攫取更多的利潤,消費者由于難以從相關市場獲得替代產品,只能被迫接受壟斷高價。而破除壟斷高價、保護消費者權益的前提就是破除壟斷,即通過合理的反向工程形成相關軟件的替代品,良好的市場競爭秩序在保護消費者的同時會促進行業的更新和發展。
【注釋】
①參見《最高人民法院關于審理不正當競爭民事案件應用法律若干問題的解釋》第12條第2款。