知识产权司法鉴定中的软件产品同一性鉴定方法探析
作者:刘玉琴,男,北京印刷学院高级工程师,信息管理学博士,情报学博士后,工业和信息化部软件与集成电路促进中心计算机软件知识产权司法鉴定专家,从事软件知识产权司法鉴定相关工作7年,负责软件商业秘密纠纷、著作权纠纷、合同纠纷的鉴定案件200余件,技术领域涵盖教育、医疗、建筑设计、游戏、物流、军工、电子商务等领域。
摘要:为有效解决软件知识产权纠纷,明确在没有软件源代码情况下,如何对软件产品进行同一性司法鉴定。论文分析了软件产品同一性鉴定的背景和法律依据,提出从代码、文档、软件架构、功能、界面、目录结构、安装过程、数据库结构、专有文件格式、非程序文件、版权声明、运行错误等角度挖掘软件产品相同或相似的证据,并按照其在软件产品同一性鉴定中的重要程度将其分为四个层次,探讨相应的鉴定方案。
关键词:软件;司法鉴定;知识产权
引言
在各类知识产权纠纷案例中,由于计算机软件复制成本低,收益显著,使得软件知识产权纠纷最为普遍。但软件属于技术较强的知识产权,往往给司法机关查处侵权造成一定的困难。计算机软件的司法鉴定是审理软件知识产权案件、有效解决纠纷的重要途径和参考证据。在鉴定过程中鉴定人根据有关法律法规的要求,运用专业知识,采取特定的技术手段,将软件相似性或差异性的关键证据找出来,出具鉴定意见呈现给非技术人员,从而达到辅助知识产权司法的作用。
软件产品同一性鉴定的背景
在软件知识产权司法鉴定中,最为常见的委托鉴定事项是软件非公知性鉴定和同一性鉴定。非公知性鉴定源于主张软件商业秘密的刑事诉讼,鉴定对象多为软件源代码(源程序),鉴定内容是判断被鉴定对象是否不为公众所知悉,法律依据主要是《反不正当竞争法》,《刑法》,国家工商行政管理局《关于禁止侵犯商业秘密行为的若干规定(修正)》。同一性鉴定源于主张著作权的民事诉讼,鉴定对象即可以是软件源代码,也可以是软件目标代码,或者整个软件产品,鉴定内容是判断涉案双方软件是否相同或相似,法律依据主要是《著作权法》和《计算机软件保护条例》。同一性鉴定也出现在商业秘密侵权鉴定中,在非公知鉴定的基础进行的商业秘密同一性鉴定,但这种情况的鉴定依据不局限于《著作权法》和《计算机软件保护条例》,需与主张的商业秘密内容相结合。
在众多的软件知识产权纠纷案例中,由于员工离职带走原单位软件源代码,另立公司与原公司进行竞争的案例最为普遍。在这种类型的案例中,被告方的产品由于本身是窃取原单位源代码或者是对原单位源代码进行了部分修改后编译生成的,因此被告方会以种种理由拒绝提供用于进行软件相似性鉴定的源代码。这种情况下的知识产权维权取证多是通过对计算机软件产品的同一性鉴定来完成的。同时,这种情况也出现在软件盗版侵权案件中,如通过技术性手段对正版软件进行目标代码修改,一般是注册功能的修改和软件非核心功能的修改。这类案件中同样需要进行软件产品的同一性鉴定。本文结合作者鉴定工作实践,探讨分析在没有软件源代码的条件下,对软件产品进行同一性司法鉴定的方法。
软件产品同一性鉴定的法律依据
对计算机软件产品同一性进行鉴定的主要依据来源于我国的《著作权法》、《计算机软件保护条例》和北京市高级人民法院关于印发《关于审理计算机软件著作权纠纷案件的几个问题的意见》的通知。《计算机软件保护条例》第二条、第三条给出了计算机软件的相关定义:“计算机软件,是指计算机程序及其有关文档。计算机程序,是指为了得到某种结果而可以由计算机等具有信息处理能力的装置执行的代码化指令序列,或者可以被自动转换成代码化指令序列的符号化指令序列或者符号化语句序列。同一计算机程序的源程序和目标程序为同一作品。文档,是指用来描述程序的内容、组成、设计、功能规格、开发情况、测试结果及使用方法的文字资料和图表等,如程序设计说明书、流程图、用户手册等”。《计算机软件保护条例》第七条明确了软件著作权保护的客体:“本条例对软件著作权的保护不延及开发软件所用的思想、处理过程、操作方法或者数学概念等。”因此,对于软件产品的同一性鉴定应从目标程序(目标代码)和软件相关文档入手。
关于侵权的认定在《关于审理计算机软件著作权纠纷案件的几个问题的意见》有明确的规定:1对于原告关于被告的软件是原告软件复制品的指控,被告予以承认的,不需对双方的软件再做勘验、演示或鉴定。2使用他人软件部分构成被使用软件的必要部分、主要部分或实质部分的,构成侵权。
软件知识产权司法鉴定学术研究回顾
我国学者对于软件知识产权司法鉴定的学术研究主要集中在两方面:一是软件知识产权司法鉴定的相关概念、原则、方法等理论层面的探讨。如,韩小燕(1998)[1]对软件知识产权侵权现象进行分类总结。冯金成(2005)[2]从计算机司法鉴定角度阐述计算机犯罪的定义与司法鉴定内容。罗苏平(2005)[3]探讨软件源程序在知识产权司法鉴定中的重要意义。李维(2008)[4]提出软件著作权的鉴定原则和方法。二是集中在针对软件产品同一性或相似性鉴定技术层面的研究。如,陈雪(2005)[5]通过对一起经最高人民法院民事庭指令再审的软件侵权纠纷案进行述评,认为软件相似性鉴定应根据实际情况,采用最有效的鉴定方法,而不应只限于在编码层进行鉴定。赵丙秀(2007)[6]研究利用软件流程比对、功能点比对、界面比对、文件比对和安装过程比对,对提供二进制代码的计算机软件产品进行鉴定的方法。张益成(2008)[7]从鉴定实践中总结软件产品的鉴定技术和方法,重点介绍了EXE、OCX、DLL、LIB、FBL文件的同一性鉴定。陈小静(2013)[8]结合计算机软件技术信息的特殊性,以目标代码、源代码探讨计算机软件技术秘密鉴定和相似性鉴定方法。刘惠萍(2013)[9]结合具体案例,从技术角度研究Microsoft PowerPoint演示文稿的同一性鉴定方法。
以上针对软件知识产权司法鉴定的学术研究中,仅文献[5][6][7]的研究是针对软件产品同一性进行的。总体来说,明确针对软件产品司法鉴定技术的学术研究比较缺乏,深入程度不够。目前,更多的学术研究对于软件产品、软件目标代码、软件源代码的鉴定技术、方法上没有加以严格的区分。本文从软件产品的角度,探讨在没有原始源代码的情况下,如何进行软件产品的同一性鉴定。
软件产品的同一性鉴定内容分析
在没有原始源代码的情况下进行软件产品同一性鉴定首先要解决的是鉴定内容问题,也就是从哪些角度展开鉴定。基于《计算机软件保护条例》中关于计算机软件的定义,可以看出软件目标代码和相关文档是判断软件产品是否具有同一性的核心。
除目标代码和相关文档外,在鉴定实践中从软件架构、功能、界面、目录结构、安装过程、数据库结构、专有文件格式、非程序文件、版权声明、运行错误等角度挖掘软件产品相同或相似的证据,也是鉴定中经常采用的技术手段。这些鉴定内容不能独立作为同一性判定的证据,但可以作为辅助的参考。论文按照其在软件产品同一性鉴定中的重要程度,将其分为四个层次,如图1所示:第一层次是目标代码和文档;第二层是数据库结构和软件专有的文件格式;第三层次是软件的版权声明信息和运行错误;第四层次是软件架构、功能、界面、目录结构、安装过程、非程序文件。
软件产品的同一性鉴定方法分析
同一性鉴定是通过对鉴定对象进行比对分析来完成的,以下分别对软件产品的鉴定内容进行比对方法分析。
1目标代码与相关文档比对
(1)目标代码比对
目标代码也称目标程序,它是软件产品同一性鉴定最为核心的内容。软件的目标代码可以是单个文件,也可以是多个文件。如,运行于WINDOWS操作系统的、由C/C++语言编写的软件产品目标代码除了.EXE(可执行文件)文件外,还可以包括多个.DLL文件(动态链接库文件);多数单片机的嵌入式软件目标代码一般为单个文件。
对涉案软件产品目标代码的同一性鉴定,首先要确定双方目标代码文件的对应关系,进而开展代码比对。比对过程中基于《关于审理计算机软件著作权纠纷案件的几个问题的意见》关于侵权认定方法的规定,遵循以下基本原则:若双方对应的目标代码文件内容完全相同,则双方的软件产品具有同一性。若双方对应的内容不完全相同,但比对项的必要部分、或主要部分没有本质区别,属于实质性相似,双方软件产品仍具有同一性。若双方对应的内容不完全相同,且具有本质区别,不构成实质性相似,则双方软件产品不具有同一性。若双方的对应内容完全不同,则双方软件产品不具有同一性。
目标代码的具体比对方法:一是直接查看目标代码的二进制形式进行比对,统计相同字节占目标代码文件总的字节比例;二是对目标代码进行反编译获取反编译代码进行比对。如下是基于C语言编写的一段源代码,代码功能是在屏幕上输出“hello world”。
这段代码经过编译后生成的目标代码以二进制形式存在于计算机磁盘,二进制内容如下图左侧Binary部分,每一行是8个字节。以二进制进行代码比对时,通过计算双方目标代码中相同字节占总字节的比例来判断目标代码是否具有同一性。下图右侧Hexadecimal是以十六进制形式显示的二进制代码,可方便二进制代码的阅读。
如果目标代码二进制内容相同或相同的字节比例较高,可认为目标代码具有同一性。如果目标代码二进制具有明显的差异,并不能直接否定目标代码的同一性,应结合软件的编译运行环境进行分析判断。这是因为相同的源代码在不同的操作系统上进行编译,或者在不同的编译器下进行编译,都可能会产生不同的二进制内容。因此,在二进制代码具有明显差异情况下,应结合编译运行环境分析,适当采用反编译的技术手段获取反编译代码进行比对。如下图是采用反编译工具IDA对上面二进制代码进行反编译得到的汇编代码。相对于二进制代码而言,汇编代码具有一定的可读性。通过汇编代码比对确定目标代码是否具有同一性。
需要指出的是,不同计算机语言反编译的技术、工具以及反编译得到的代码可读性差异较大。采用C/C++语言编写的目标代码能够反编译为汇编语言,可读性高于二进制代码,但与原始源代码相比,可读性仍然较低。采用JAVA/C#语言编写的目标代码反编译可以得到与原始源代码完全相同或高度相似的代码,可读性较高。然而,反编译也是有条件的,当目标代码进行加密或加壳处理,反编译难度增加,甚至无法反编译,这时要结合加密技术做具体技术处理。
(2)相关文档比对
尽管软件相关文档对于软件同一性鉴定具有重要的意义,但在鉴定实践中,对于软件需求说明、设计说明、测试结果等能够体现软件开发过程的文档,同软件源代码一样难于获得。因此,软件产品同一性鉴定实践中很少对这类文档进行鉴定,更多的是针对与软件产品一同提供给客户的软件使用说明书、用户手册等辅助软件应用的文档进行内容比对。而这些辅助软件应用的文档只是对软件使用方法的介绍,并不涉及软件设计开发的内容;并且,同类型的软件产品其用户手册会产生相同的内容。因此,这类文档不能单独作为软件产品是否具有同一性的判定依据。
2数据库结构与专有文件格式比对
(1)数据库结构比对
在使用数据库的软件中,如管理信息系统类软件,这类软件的运行离不开数据库,而且数据库结构的设计直接决定了软件的设计与实现,需要开发人员付出创造性的劳动。因此,数据库结构的比对对于判断软件同一性具有重要的参考意义。
常用的数据库平台有ORACLE、SQL SERVER、MYSQL、ACCESS等,软件设计人员基于这些数据库平台进行数据库结构设计。数据库结构设计包括数据库表结构设计、视图设计、存储过程设计和函数设计。其中,表结构又是数据库结构的基础,包括表名称、字段名称、类型、约束、表之间的关系等。表、视图、存储过程、函数统称为数据库对象。对数据库结构的比对即是对数据库对象的比对,不考虑数据库平台。其原因在于数据库平台之间的转换,技术手段非常简单,直接使用“DTS工具”,不作任何修改就能轻易达成。如图5、6分别是在SQL SERVER和ACCESS平台的数据库表,两个表的结构没有本质变化,且Access数据表是采用SQL SERVER的数据导出功能直接生成,没有进行任何人工干预。因此,数据库结构比对,关注的不是两套软件所用的数据库平台是否相同,而是数据库对象是否相同或相似。不同公司都有自己的一套命名规则,因此一般两个公司出品的数据库命名、结构不可能大部分相同或相似。
具体比对过程中,先安装双方软件对应的数据库管理系统,利用各自数据库管理工具打开对应的数据库文件,观察、分析数据库对象是否相同或相似。函数和存储过程是基于SQL脚本进行设计的,可以直接对脚本进行比对。
(2)专有文件格式比对
某些软件在设计过程中经常设计一些专有的文件格式,比如游戏软件,这些专有文件格式不易被破解,也不是行业内通用的文件格式,只能在各自的软件产品中使用。如果被比对双方的软件产品专有数据格式相同,可作为判断软件产品同一性的辅助证据。对于专有文件格式的比对,可以采用互操作的方式进行,即利用一方软件尝试打开另一方的专有格式的文件,观察、分析软件能否正确的识别和运行。
3版权声明和软件错误比对
在对软件产品进行低级的、机械的复制过程中,软件产品中关于版权的声明信息和软件运行错误会保留下来。这是软件侵权鉴定中经常遇到的,是软件侵权很好的佐证。
查看版权声明信息,一种方法是直接运行软件查看软件相关的版权声明内容。另一种方法是查看代码文件的属性看文件的版权声明。如下图,为微软SQL SERVER目标代码文件sqlvdi.dll的版权声明。
4软件架构、功能、界面、目录结构、
安装过程和非程序文件的比对
最后,关于软件架构、功能、界面、目录结构、安装过程、非程序文件的比对,也是判断软件产品同一性的辅助比对内容。这些内容的比对可增强软件同一性比对的结论,但不能单独用于判断软件是否具有同一性的证据。其中,对软件架构、功能、界面、目录结构、安装过程比对通过直观的观察即可实现。对于非程序文件的比对,如图片文件、声音文件、视频文件仍然可以采用二进制格式的比对方法。
结语
基于著作权的软件知识产权纠纷案件中,在没有原始源代码的情况下,进行软件产品同一性鉴定需明确开展鉴定的工作内容。论文在分析软件产品同一性鉴定的法律依据基础上,提出四个层的鉴定内容:第一层次是目标代码和文档;第二层是数据库结构和软件专有的文件格式;第三层次是软件的版权声明信息和运行错误;第四层次是软件架构、功能、界面、目录结构、安装过程、非程序文件。其中目标代码作为软件产品同一性鉴定的核心,鉴定原则遵循《关于审理计算机软件著作权纠纷案件的几个问题的意见》关于侵权认定方法的规定,其它作为软件产品同一性鉴定的重要参考。
[1]韩小燕.软件侵权现象及其司法鉴定浅析[J].软件和信息服务,1998,(10):77
[2]冯金成.论计算机司法鉴定[J].政法学刊,2005,22(6):102-104
[3]罗苏平.对软件侵权鉴定中的源程序作用的认识[J].广东交通职业技术学院学报,2005,4(1):55-57
[4]李维.浅析计算机软件著作权技术鉴定[J].科技与法律,2008,(6):61-64
[5]陈雪.软件作品的著作权司法鉴定——以“公安基层管理系统”著作权纠纷案为例[J].华南师范大学学报(社会科学版),2005,(3):24-30
[6]赵丙秀,王坚.软件知识产权鉴定方法的初步研究与探索[J].计算机时代,2007,(4):4-7
[7]张益成.计算机软件产品的司法鉴定技术[J].2008,(7):16-18
[8]陈小静,黄少晖,梁永宏.浅析计算机软件技术信息的商业秘密鉴定[J].中国发明与专利,2013,(8):31-33
[9]刘惠萍,罗文华.从知识产权侵害案件看Microsoft PowerPoint 演示文稿鉴定实践[J].中国司法鉴定,2013,(3):62-65