计算机软件著作权比对鉴定的几点思考

计算机软件著作权比对鉴定的几点思考

作者 | 沈兵 上海汉光知识产权鉴定

前言

计算机软件的知识产权保护是随着计算机发明而逐步发展起来的。直到上世纪的80年代,部分国家才最终确立了以著作权方式对计算机软件予以保护。由于著作权只保护表达而不保护思想的特点,而计算机软件兼具表达和工具的特性,国际上逐渐认为,著作权对计算机软件的保护不够完整,因此又对计算机软件进行了专利商业秘密等知识产权保护方向的探讨。

计算机软件著作权中,软件著作权的侵权认定是最为难点的问题之一。其主要表现在一方面对侵权认定的法律法规的缺位,另一方面是实质相似判断的理论和实践不足。这些都导致软件著作权鉴定过程和方法存在差异和错误。许多鉴定意见并没有对技术事实的认定起到应有的支撑作用。

本文试图通过计算机软件著作权理论的探讨,从软件分层肌理出发,对实质性相似提出具体比对方法。并尝试将这些方法应用于软件著作权的鉴定过程中,提出与著作权原理相适应的鉴定范围、鉴定方法、鉴定意见等内容。

一、计算机软件著作权理论在软件中的应用

(一)计算机软件著作权基本理论

著作权是对计算机软件知识产权的基本保护方式。《计算机软件著作权保护条例》对软件著作权进行了详细的规定。

1.计算机软件著作权的保护范围

2013年修订的《计算机软件保护条例》(下称《保护条例》)对计算机软件,有明确的定义。

计算机软件是由计算机程序及其有关文档组成。

计算机程序,是指为了得到某种结果而可以由计算机等具有信息处理能力的装置执行的代码化指令序列,或者可以被自动转换成代码化指令序列的符号化指令序列或者符号化语句序列。同一计算机程序的源程序和目标程序为同一作品

文档,是指用来描述程序的内容、组成、设计、功能规格、开发情况、测试结果及使用方法的文字资料和图表等,如程序设计说明书、流程图、用户手册等。

对上述的规定的理解如下:

(1)确定了软件的范围,即只包含程序和文档两个部分。其他部分不属于软件,或者说,不属于计算机软件著作权的保护范围。请注意,这条对软件著作权的保护范围的划分与软件行业的常规理解并不一致。理论上,计算机软件是由程序、文档和数据组成。按照本规定,数据和数据库都不是软件著作权的保护范围。

(2)规定中的“代码化指令序列”即目标程序,又称为可执行程序。目标程序由若干0和1的数字组成。该语言又称为机器语言。由机器语言组成的目标程序可读性不强,基本不能被人类直观理解,但是可以由计算机识别。

(3)规定中的“符号化指令序列”即汇编语言程序,规定中的“符号化语句序列”即高级语言程序。此两者可以统称为“源代码”。汇编语音类似于机器语言,可以被计算机识别,只不过指令采用了英文缩写的标识符,帮助识别和记忆。高级语言的种类很多,例如Basic,C,C++,Java等。汇编语言和高级语言是可以直接阅读理解的,因此大多数的源代码均由汇编语言或者高级语言编写。

(4)规定中的“自动转换”在软件行业中的术语是“编译”。编译就是把源程序“翻译”为目标程序。编译必须在一定的编译环境下进行。编译环境的搭建包括硬件和相应编译软件两个部分。同一源代码不同的编译环境编译出的目标程序不完全一致而有少许的差异。

(5)规定中的“同一计算机程序的源程序和目标程序为同一作品”是一种法律上的拟制。根据编译的特点,同一个计算机程序源程序在不同的编译环境下,可能存在略有差异的多个目标程序。但是法律上将源程序和该源程序经不同编译形成的多个有差异的目标程序依然拟制为一个软件著作权作品。

上述的规定,确定了计算机软件著作权的保护范围,即是计算机程序及其有关文档两部分。所有不属于计算机程序或者不属于文档的内容均不属于软件著作权的保护范围。

2.软件著作权对作品的要求

根据《保护条例》,软件著作权要求独立开发和可以固定在有形物之上。

软件著作权作品和其他类型的著作权作品对独创性的要求稍有不同。其他类型著作权作品,例如文字作品美术作品等所要求的独创性包括两个方面,即“独”和“创”。既要求独立创作也要求一定的创造性(王迁,《著作权法》,北京:中国人民大学出版社,2015年3月)。但是软件著作权作品独创性仅要求独立开发而不要求具有创造性

2.计算机软件著作权的思想表达两分法

《保护条例》规定,软件著作权不延及开发软件所用的思想、处理过程、操作方法或者数学概念等。

这是著作权法中最基本的“思想表达二分法”在软件著作权中的运用。具体而言,是指的软件著作权的保护客体是表达,而不保护思想。软件作品中所有属于思想领域的事项,例如处理过程、操作方法、数学概念等由于不属于表达,因此不属于软件著作权保护的客体。

“思想表达二分法”是著作权中最重要的原则,贯穿于整个软件著作权理解、分析、审判过程中。

(二)软件著作权在计算机软件中的具体保护内容

根据“思想表达二分法”对计算机软件的组成内容分析如下:

1.计算机软件的“三阶层”理论

应明、孙彦提出(应明、孙彦,《计算机软件的知识产权保护》,北京,知识产权出版社,2009年3月):计算机软件体现在三个层级,即需求规划层、处理逻辑层和编码表达层。软件开发流程也是按照上述的基本顺序进行开发。对各层的表述如下:

(1)需求规划层:对该程序的功能性能需求的规划设计,包括功能性能指标、用途、目的等。

(2)处理逻辑层:实现该程序的功能性能需求而进行的设计,包括程序的组织机构、流程设计、算法、数据结构、用户界面、输入输出等内容。

(3)编码表达层:计算机程序,包括源代码和目标代码。

(二)“思想表达二分法”在软件“三阶层”中的应用

1.最上层的需求规划层

需求规划层,主要是对程序的功能性能需求的规划设计。这部分主要以文档形式体现。从软件著作权的角度上说,需求规划层的文件属于计算机软件著作权中的文档类别。

2.最下层的编码表达层

编码表达层,是指的软件源代码和目标代码。软件源代码代码和目标代码均属于著作权中的表达范围。因此,编码表达层的软件源代码目标代码属于软件著作权中的程序类别。

3.中间层的处理逻辑层

处理逻辑层,包括内容是否属于思想还是表达没有统一划分标准。其中最主要的是对软件组织结构和处理流程的理解和分析。一般认为,如果其软件组织结构和处理流程如果具有功能性和实用性,则属于思想,不属于软件著作权的保护范围。如果没有体现上述的特点,则属于表达。

例如,源程序的组织结构含有若干不同文件名、不同长度、不同类型的文件,属于表达。再例如,处理流程涉及各个模块的搭建原理、并行还是串行的排列方式、调用其他文件的方法等,则属于思想。因此设计组织结构和处理流程需要具体问题具体分析。

以下为行业内基本达成共识的内容:

(1)软件界面。软件界面属于思想而不属于表达,因此不属于软件著作权保护的内容。

(2)软件实现的结果/功能。软件实现的结果/功能属于思想而不属于表达,因此不是软件著作权保护的内容。

(3)数据库结构和数据。首先,数据库结构和数据不属于软件,当然不是软件著作权保护的内容。但是含有数据的数据库可能构成著作权中的汇编作品。此外,数据根据其形式,可能构成例如著作权中的美术作品、文字作品或者音乐作品等其他类型的作品。

(4)算法/模型。算法/模型属于思想而不属于表达,因此不属于软件著作权保护的内容。

小结:由上述对软件开发“三阶层”的分析可知,最上层的需求规划层的内容,例如功能要求等属于软件著作权的文档类别,最下层的编码表达层内容属于软件著作权的程序类别,中间层的逻辑处理层需要具体分析,尤其是软件组织结构和处理流程可能属于思想也可能属于表达。而本层其他的例如界面、功能/效果、数据库和数据、算法和模型等都不属于软件著作权保护的具体内容。

二、软件著作权的侵权比对理论和实践

(一)软件著作权侵权比对方法

软件著作权侵权比对的基本方法是“接触+实质性相似”原则。需要注意的是,上述原则尚未上升为法律规定,因此这个原则的实质是司法证明中的事实推定。所谓的事实推定是基于经验法则或自然法则所作的司法推断。事实推定具有不确定性,因此事实推定往往多存在于民事诉讼,而不是刑事诉讼中。事实推定是可以反驳的推定,只要另一方提出合理理由即可以阻止推定结果的发生。

上述推定的前提需要有两个条件,并且同时出现。首先是“接触”。关于“接触”不是本文的重点,所以不赘述。推定前提中的最为核心和难点的是“实质性相似”的认定。以下对实质性相似的判断方法进行讨论。

1.实质相似判定方法一:全部概念和感受法(即SSO法)

1980年美国法院在whelan联合公司诉Jaslow牙科诊所案中确立的软件实质性相似的判定方法。即如果两个计算机程序之间结构(structure)、顺序(Sequence)、组织(Organization)相似,则构成了实质性相似,简称SSO法。

SSO方法基于多种原因,尤其是没有在结构、顺序和组织判断中区分思想和表达而受到较多批评。

2.实质相似判定方法二:抽象检验法即(即AFC法)

1991年美国法院在CA公司诉Altai公司软件侵权案件中确定了软件实质性相似的抽象检验法。即采用“抽象、过滤和对比”三步骤,通过对软件内容进行抽象、过滤掉思想方面内容,再排除公有技术、排除唯一表达等多种不能被著作权保护的内容,最后对剩余部分进行比对,得出是否实质相似的方法。

该方法由于较为符合软件著作权的原理而被广泛应用。

3.国内对软件实质相似判定方法的理论

江苏省高级法院的宋健、顾韬在“计算机软件侵权认定若干问题论述”(《人民司法》,2014年第13期)一文中对计算机软件实质相似的判定从理论和实践的角度进行了论述。由于该文章发表的时间较早,作者系江苏省高院的知识产权庭法官,文章中结合了较多的司法实践经验,因此在司法界影响较大,具有一定的代表性。

文章认为,软件著作权实质相似的总体原则是:计算机软件的表达属于著作权法保护范围,侵权对比也应围绕软件之间表达形式的异同分析展开。

在总体原则的基础上,文章提出了司法实践中采取的六种具体认定方法。更重要的是,由于该文从法官审判的视角,对每种方法的司法证明力进行了评判。具有重要的参考价值。其中比对认定方法1至4与本文联系紧密,现摘录如下:

(1)软件源程序的对比。可直接认定软件实质性相同;

(2)软件目标程序的对比。如果目标程序实质性相同,被告又无正当理由拒绝源程序或者双方源程序因编写语言不同无法对比的,可以结合案件其他证据认定原、被告软件构成实质性相同。

(3)软件特征性缺陷的对比。存在相同的缺陷性特征,而被告无正当理由拒绝提供源程序或目标程序的,则应充分考虑到此类案件原告举证的客观困难,合理推定原、被告软件实质性相同,由被告承担败诉责任。

(4)软件存储介质内容、安装过程、安装目录、运行状况的对比。同时提出需要注意的是,上述项目的对比是法官就软件相同性判断的重要考量因素,一般而言,上述项目的近似度越高,软件实质性相同的可能性也越大。但通常情况下,上述项目雷同只是一种表面现象,如果被告坚持要求进行软件程序对比的,则并不能仅凭此即认定软件构成实质性相同,仍需进一步对比软件的源程序或目标程序。进一步说,上述项目对比的意义在于:是增强法官内心确信;二是在被告无正当理由拒不提供软件程序以供对比的情形下,作为对被告进行不利推定的事实基础。

由上述四种对软件著作权认定方法可知,四种方法的证明力是逐级下降的。第一种方法即源程序比对的证明力最高,其鉴定意见可以单独证明相同或者实质性相似这一事实。第二种方法,目标程序比对的证明力其次。需要结合其他证据才能认定实质性相似这一事实。第三种方法,软件特征性缺陷证明力较弱。需要综合其他事项结合举证责任分配进行推定。而第四项,即“软件存储介质内容、安装过程、安装目录、运行状况的对比”则几乎不能认定实质性相似这一事实,仅有增加法官的内心确认程度而已。

笔者较为同意该文章对四个方法证明力的判断。更进一步,四种方法之所以产生不同的证明效果,其本质来源于著作权的“思想表达二分法”,也即本文中的总体原则。按照本文前述的“计算机软件的表达属于著作权法保护范围,侵权对比也应围绕软件之间表达形式的异同分析展开”这一原则,源程序和目标程序无异议的属于表达,软件缺陷内容还可以和软件的表达有点沾边,到了最后第四项的“软件存储介质内容、安装过程、安装目录、运行状况”,其实都属于功能的范畴,或者说属于思想范围。因此第四项的比对,其实质不是表达的异同比对,而是思想的异同比对。这个比对本身就违背了该文章所称的仅比对表达的原则,其结果当然是没有证明力。

由上述的分析可知,对软件著作权中实质相似比对方法进行考量的时候,不能违背“思想表达二分法”的原则,将不属于表达的第(四)项的内容进行比对。虽然最终还是认识到,这种比对的鉴定意见仅属于“表面现象”,证明力可以忽略不计。

(二)北京高院、最高院对软件著作权实质相似的指导意见

对软件著作权实质性相似的司法指导意见,最重要的是2018年4月20日发布的《北京市高级人民法院侵害著作权案件审理指南》(以下简称《审理指南》)。在该《审理指南》的11.8(软件著作权)【实质性相似的认定】中认为:

被诉侵权的计算机软件目标程序中存在原告主张权利的计算机软件特有内容,或者在软件结果(包括软件界面、运行参数、数据库结构等)方面相同或者实质性相似,可以认定原、被告的软件构成实质性相似。

《审理指南》中的观点有了很大进步,即认为“软件界面、运行参数、数据库结构”等属于实质性相似的比对项,其比对结果可以得出实质性相似的结论。

但是指南中的这一观点与最高院的看法并不一致。现行有效的最高院在[1999]知监字第18号函,即“最高人民法院关于深圳市帝慧科技实业有限公司与连樟文等计算机软件著作权侵权纠纷案的函”中认为,“……(鉴定报告)通过比较程序的运行参数(变量)、界面和数据库结构,就得出了两个软件实质相似的结论。运行参数属于软件编制过程中的构思而非表达;界面是程序运行的结果,非程序本身,且相同的界面可以通过不同的程序得到;数据库结构不属于计算机软件,也构不成数据库作品……因此,《鉴定报告》所称的两个软件存在实质相似性,并非著作权法意义上的实质相似性。”

因此可见,北高院的《审理指南》认为软件界面、运行参数、数据库结构可以进行比对,而且比对鉴定意见可以证明是否实质相似,而最高院的观点与北高院《审理指南》的观点不同。最高院认为,上述的比对项不是计算机软件保护内容,因此即便进行比对,比对结果不属于著作权法意义上的实质相似,当然也不能用于软件著作权实质相似的认定。

北高院《审理指南》与最高院对软件著作权实质性相似的比对方法的截然相反的态度,充分说明了实质性相似在理论和司法实践上还未达成共识。

(三)鉴定机构在鉴定中对实质相似比对方法

正是由于对实质性相似在理论和司法实践上都未达成共识,直接导致司法实践中鉴定机构在软件著作权比对鉴定方法上更是五花八门,什么样的都有。

笔者在“中国裁判文书网”以“软件著作权”+“鉴定”为主题词进行检索,总计得到1476篇裁判文书。以从晚到早的时间进行排序。随机选取较近的有明确的鉴定意见内容的三个软件著作权民事的判决书。这三个判决均出自最高院,因此有一定的代表性。本文仅对判决书中鉴定机构所做的鉴定内容进行摘抄,以表现鉴定机构的鉴定方法,不对鉴定意见采信情况进行评述。

案例1:(2022)最高法知民终1589号案

1.鉴定意见内容

送检的“VirtualApp”源代码与“91桌面”软件安装包反编译得到的源代码共有471个可比代码文件中,其中有13个可比代码具有高度相似性,有120个可比代码具有一般相似性,有335个可比代码具有实质相似性,有3个可比代码不具有相似性。另该鉴定意见的分析说明中载明:双方可比代码所在的目录结构相似,且双方对应目录中同时有“lody”目录,而“lody”为罗盒公司代码的开发者,在罗盒公司代码有多处的注释都表明(罗盒公司代码中均有注释“authorLody”),而这种目录相似情况和上述代码相似程度在软件的独立开发过程中是不可能存在的。

2.鉴定方法评述

这个鉴定意见的鉴定方法是对软件目标代码进行了反编译得到所谓的“源代码”。然后以这个“源代码”为基础,进行比较分析,得出了代码是否实质相似、目录结构是否相似、目录名称和代码注释的鉴定意见。

案例2:(2021)最高法知民终1358号案件

1.鉴定意见内容

鉴定机构在进行了反编译后比较了“该软件包含敏感词“影视大全”的全拼“yingshidaquan”,且其中程序逻辑相似度100%的文件共298个,程序逻辑相似度90%至100%之间的文件共42个。”

2.鉴定方法评述:这个鉴定意见也是对目标程序进行了反编译。以反编译得到的“源程序”为基础,后确定了特殊的词组,进行了程序逻辑比较。

案例3:(2022)最高法知民终1605号

1.鉴定意见内容

(1)深圳某公司核心业务程序APP文件夹下有415个目录,源代码文件1298个、大小为5.82M,杭州某公司核心业务程序APP、resources\views文件夹下计有235个目录,源代码文件907个、大小为4.09M。

双方核心业务程序的目录数量、源代码文件数量、文件大小都有较大差距。

(2)双方WEB系统都采用BOOTSTRAP通用框架;双方在业务功能、业务操作具有相似性;双方在系统设计上和传统的电商系统没有实质性差别,系统的技术架构上双方采用了通用的三层架构和MVC模式;

(3)对双方源程序代码解读分析,双方数据库表结构的部分字段相同,相同部分主要是商品属性和部分出入库的表结构。双方在数据同步和相关数据执行操作方面存在差异性和独特性;

(4)双方业务实现逻辑上采用与传统电商相同商品属性管理、类目管理、商品管理、财务模块、生成对账单、结算单、财务体现申请、审核和打款服务、供应商信息管理、备货、计算备货数据、合理备货、发货单、生成发货单、管理发货单物流等核心模块。双方在业务实现逻辑方面存在差异性和独特性;

(5)代码风格有部分相似性,但在类和方法以及变量的命名规则方面存在较大的差异。双方在代码实现上、接口定义和实现等存在差异性和独特性;

(6)通过对双方源代码文件判读与分析,排除WEB系统框架BOOTSTRAP的公知性源代码,双方的业务源代码约3.52+59.6KB(9个)文件相同或实质性相同,与深圳某公司业务源代码总量之比约为1.085%(即双方源代码不同比例约为98.915%)……

综上,深圳某公司的“商品运营管理系统”[简称:OC]V1.0源代码与杭州某公司的“运营后台”源代码,双方不属于相同、也不构成实质性相似。

2.鉴定方法评述

这个鉴定首先比较业务程序的目录数量、源代码文件数量、文件大小。其次,还进一步比较了技术架构、数据库表结构、数据、代码风格、类和方法以及变量的命名规则等内容。

由上述的随机选择的三例来自于最高院关于软件著作权的判决书中的鉴定意见内容可以看出,鉴定机构在进行鉴定方法选择的时候,有着非常大的随意性。有对目标程序进行反编译的,有用反编译得到的所谓“源程序”直接与鉴定材料进行比较得出鉴定意见的。有比较技术框架的,有比较程序逻辑的,有比较数据库结构的,还有比较数据的。可以说,仅凭上面的三例就可以看出,鉴定是彻底放飞了自我,本着万物皆可比的信念在进行鉴定。鉴定方法和鉴定意见都令人眼花缭乱,叹为观止。

(四)对实质相似比对的思考

笔者非常同意最高院函中的解释和精神。借用商建刚、姜琳浩在《计算机软件实质性相似的判断》(《人民司法》,2021年第5期)一文的观点,实质性相似要包含两个因素,一个是“质”一个是“量”。

1.“质”的要求

所谓的“质”,首先是指的软件著作权法意义的质。实质性相似也是指的软件著作权意义上的实质性相似。因此比较的对象必须是软件著作权保护的内容,只有这样的比较才能有软件著作权法律上的意义,也才能得出软件著作权法律意义上的结论。反之,凡是不属于软件著作权保护内容的比较,则注定不能得出软件著作权的任何结论,也就没有了比较的意义。试举例说明如下:

例1,存储在CD盘中的两款软件。如果比较封装的图片、封装的结构、封装的材质,可否得出两个软件的著作权相似的结论?相信绝大多数人不会同意。为什么呢?因为两款CD的封装图片、封装结构、材质与存储在CD盘上的软件内容没有直接关系。

例2,微软的文字处理系统是Office,中国金山公司的文字处理系统是WPS。实际使用两款软件会发现,不但所有的几十种操作界面基本相同,打字输入要求相同、输出到打印机也相同。那么可否得出这两款软件的软件著作权相同或者实质性相同的结论?大多数的直观感觉是不能。为什么?深层次的原因是这里的比较项,界面、输入、输出包括整体感觉,都不属于软件著作权的内容。因此虽然两者的界面、输入、输出操作相同,也不能得出Office和WPS两款软件著作权相同或者实质相同的结论。

由上述的两个例子可以理解,凡是不属于软件著作权保护的内容,都不能参与实质性相似的比对。例如,不能比较数据库结构,不能比对数据库中的数据。因为这两部分都不属于软件。再例如,不能比对功能、不能比对安装过程,不能比对界面,因为这些属于思想而不是表达,不属于软件著作权保护的内容。

从证据法的角度而言,对于任何非软件著作权保护内容的比较,由于与软件著作权这个证明对象没有关联性,根本就不应该进行。如果进行,也因为没有关联性而没有任何证明力。

由此可见,所谓的“质”不但要求是软件著作权保护的内容,还要求一定的确定性。例如涉嫌侵权软件中源代码中有权利人特殊的标识,电子水印等内容。这些内容从常理推断,如果是独立开发而不是抄袭是不可能出现。

2.“量”的要求

实质性相似还需要考虑“量”的问题。上述案例中,如特殊的电子水印等,如果仅出现一二次还可以用“偶尔”等借口解释,如果多次大量的重复出现,则超过了司法认知范围,导致复制的可能性大增。

综上,实质性相似的认定,需要在“量”和“质”两个方面进行考量。尤其是“质”。只有在对属于软件著作权保护内容的项目进行比对,同时考虑到准确性和数量,才能对实质性相似作出适当的判定。

三、计算机软件著作权的比对鉴定

计算机软件著作权的比对鉴定,其本质是两款软件著作权的实质性相似的鉴定。

为此,软件著作权的鉴定应在审慎客观的原则下进行。迄今为止,软件著作权的鉴定尚未有国家标准,也没有行业标准(本文所说的标准是指的软件著作权的鉴定标准,而不是例如《软件相似性鉴定实施规范》这样的标准。对《软件相似性鉴定实施规范》可否用于软件著作权鉴定以后专文讨论),因此所谓审慎是指的在没有鉴定标准情况下,鉴定人最好选取行业内公认而且争议不大的方法、工具进行鉴定。对于其他的有争议的内容、方法、工具则需要警惕,以免因鉴定方法的选取不当造成的鉴定错误的发生。

(一)软件著作权的比对鉴定范围

软件著作权的鉴定范围是两款计算机程序或者两个计算机文档之间相似性比对。

不属于软件的,例如数据库结构、数据、算法、输入、输出等不属于软件著作权的鉴定范围。明显不属于表达的,例如《保护条例》规定的思想、处理过程、操作方法或者数学概念也不属于鉴定范围。

(二)软件著作权的比对鉴定方法

1.文档的比对鉴定方法

由于软件著作权的文档具有双重特性,既是软件著作权的保护对象,也属于文字作品的保护对象,而且对两种作品而言,比对方法区别不大。因此可以按照文字作品的比对方式进行鉴定。

2.软件程序的比对鉴定方法

计算机程序的鉴定方法比较复杂。首先应该是对编码层,即源程序和目标程序的比对。如果编码层有不同,不能得出直接得出相同或者不同的结论。则下一步需要对属于表达内容的特征内容进行比对分析。建议的选择如下:

可以进行比对的内容:文件、函数、字符串的命名;水印;公司名称、logo、开发者姓名;GUID值;注释;冗余代码;拼写错误等等。

根据情况才能进行的内容:软件结构/模块组成;软件处理流程等等。

可能属于思想而不属于表达,需要警惕的内容:界面;安装/卸载的过程、进程、结果;软件的功能;安装后的剩余文件;硬件的功能;软件运行的错误等等。

(三)软件著作权的鉴定意见

软件著作权的鉴定意见应分为两个部分,代码比对的情况和特征比对的情况。

1.代码比对情况:样本情况;检材情况;检材中与样本的相同情况;相同情况分别占样本和检材的比例。

2.特征比对的情况:相似的特征;相似项在检材和样本中的频率等;特征的说明。

(四)软件著作权中的反编译探讨

软件反编译是软件领域广泛使用的方法和技巧。反编译的基本原理是将计算机语言通过汇编手册等方式还原成高级语言。不同的程序代码语言反编译的结果具有明显的不同。例如,一般认为,python,java等反编译后与源程序相差比较小,可读性高。但是例如C语言,则反编译的可能性比较小,或者即便反编译后的程序也是汇编程序,而不是原语言的程序。

软件界的基本共识:完全自动化的反编译是不可能的。没有反编译器可以获得开发人员编写的确切源代码。

为此,对任何目标程序的反编译后的程序,都可能破坏目标程序的表达,并且一定与源程序存在有差距,只不过不同语言的软件差距大小而已。因此,以对目标程序进行反编译后形成的新程序,其真实性需要仔细考量。通过反编译后得出的相关比对意见不能直接替代原程序的比对。即便是对原被告分别提供的两个目标程序使用同样的方法分别进行反编译后再进行的比对,也不能等同于源程序或者目标程序的比对,也不宜直接得出软件著作权实质相似与否的鉴定意见。

(五)软件著作权鉴定中的排除公码文件的探讨

有学者认为,鉴定人在鉴定之前首先要对鉴定材料中可能包含的公共程序库文件、第三方库文件和基于开源许可证的文件进行排除后才可以鉴定,即需要排除公码文件。笔者认为不妥。

如果鉴定人发现鉴定材料中存在公码,鉴定人可以对鉴定材料中可能包含的公共程序库文件、第三方库文件和基于开源许可证的文件单独罗列,并在比对中进行单独的分析说明。但是鉴定人自己不能进行公码的排除工作。

四、结语

本文首先在软件著作权基本理论的基础上,对软件著作权在软件三阶层的具体保护范围和内容进行了讨论。随后讨论侵权比对原则中的实质性相似的理论、司法实践中的判定方法,并以最高院的司法解释为基点对实质性相似的比较项选择要求进行了重点分析,提出了实质性相似需要考虑量和质的观点。从这个分析出发,提出了软件著作权鉴定的范围、方法和结论等具体内容。文章的最后还讨论了反汇编和排除公共代码的问题。

五、心声

在本文的写作过程中,也曾就部分问题与软件技术人员和鉴定人进行过交流和讨论。大家对我的方案共同的感觉是两个字:保守。不但鉴定的方法保守,有些鉴定的手段也趋向保守。有些技术人员还就可能的对软件进行复制和修改手段后不能被这个方案识别从而不解和失望。

我承认,我的观点整体是趋向保守的。我认为在鉴定人的价值取向中,科学是第一。我们要敢于承认,鉴定不是万能的,不能解决所有的软件侵权的问题。例如代码进行混淆或者加壳后,鉴定人的鉴定方法极为有限。我们也要相信,科学的发展是长期的,没有极限的,但是会有个过程。例如DNA双螺旋结构在上世纪五十年代被发现,直到本世纪初才广泛用于刑事侦查。现在软件行业不断涌现的新的方法和工具,由于出现时间比较短,尚未形成广泛的共识,因此从鉴定的角度考虑,还是暂时不急于采用。也许将来,这个最新的方法和DNA一样,成为广泛采用的常规方法,那时候鉴定人使用才能真正的规避鉴定的风险。