文 / 邹晓晨、朱玮洁,天同律师事务所上海办公室
司法鉴定是软件侵权案件中查明侵权事实的重要途径。2023年10月7日,司法部发布《软件相似性鉴定技术规范》(以下简称“技术规范”)行业标准,将于2023年12月1日起实施。该技术规范系2014年首次发布SF/Z JD0403001-2014《软件相似性鉴定实施规范》(以下简称“2014版本”)的第一次修订,且将代替2014版本。此次技术规范较2014版本进行了重大修订,为司法鉴定领域的专业人员提供了明确的操作指南,使软件相似性鉴定更加科学和可靠,从而为侵权案件的裁判提供有力的支持。
本文将从三部分对技术规范相关内容进行分析:第一部分为软件相似性判断所涉基本概念、第二部分为技术规范修改条文分析、第三部分为结语并附《软件相似性鉴定技术规范》修改对照表。
软件相似性判断所涉基本概念
《软件相似性鉴定技术规范》旨在为软件著作权侵权案件中的软件相似性鉴定提供明确的指导和规则,为司法机关提供司法裁判依据。因此,《软件相似性鉴定技术规范》与软件相似性的司法判断具有紧密联系。故,本文在对技术规范修改条文进行分析前,先简单介绍软件相似性判断所涉基本概念,以期读者能更好理解技术规范中的相关条文。
(一)接触
所谓接触是指被控侵权软件的开发者以前曾研究、复制对方计算机软件产品或者有研究、复制对方计算机软件产品的机会。
(二)实质性相似
所谓实质性相似, 是指计算机软件保护条例规定的计算机程序及其有关文档的实质性相似。
通常实践中认为,计算机软件程序构成“实质性相似”有如下情形:其一为文字成分的相似,即以程序代码中引用的百分比为依据进行判断,其二是非文字成分的相似,即强调以整体上的相似作为确认两个软件之间实质上相似的依据。对于程序代码的实质性相似的比对,一般比对对象包括源程序、目标程序。而整体相似的一般比对对象包括结构、流程、设计、界面等。
1. 比对方法
理论上来说,实质性相似的比对对象应是将涉案软件的源程序与原告软件的源程序进行比对。源程序的比对中,首先先排除公有领域的内容,其次对文件名、文件内容、函数、变量等进行比对。但是实践中,被告通常不提供源程序进行比对,根据司法实践,若被告拒不提供被诉侵权的计算机软件源程序时,可以将原告主张权利的计算机软件目标程序与被诉侵权的计算机软件目标程序进行对比。通过比对,若满足以下三个条件之一的,则可认定构成实质性相似:
(1)原告能够举证证明二者目标程序相同或者相近似的。
(2)虽二者目标程序不相同或者相近似,但被诉侵权的计算机软件目标程序中存在原告主张权利的计算机软件特有内容
(3)虽二者目标程序不相同或者相近似,但被诉侵权在软件结果(包括软件界面、运行参数、数据库结构等)方面与涉案软件相同或者实质性相似。
2. 关于特有内容的侵权判定
司法实践中,通过特有内容来判定被告侵权的司法判例较为常见。但法院对于侵权软件中含有权利软件特有内容是否构成实质性相似的处理规则趋于不同。主要有两种处理规则:
(1)权利人举证特有内容,举证责任倒置
有些法院认为,若权利人能举证侵权软件中存在权利软件的特有内容,则可以认为权利人已完成了初步举证责任,此时举证责任倒置,被告要举证证明其未实施侵权行为。法律依据为《最高人民法院关于知识产权民事诉讼证据的若干规定》第二十五条,人民法院依法要求当事人提交有关证据,其无正当理由拒不提交、提交虚假证据、毁灭证据或者实施其他致使证据不能使用行为的,人民法院可以推定对方当事人就该证据所涉证明事项的主张成立。
北京知识产权法院发布的典型案例【(2018)京73民初661号】支持该观点,该案中,法院认为,在计算机软件著作权侵权纠纷中,源代码的比对并非判断被诉侵权软件是否侵害权利软件著作权的必备条件和必须环节,计算机软件著作权的侵权判断仍然应当遵循接触加实质性相似的侵权判断标准。如果权利人已经举证证明被诉侵权软件存在与权利软件相同的自主命名信息、设计缺陷、冗余设计等特有信息,可以认为权利人完成了初步举证责任,此时举证责任转移至被诉侵权人,应由其提供相反证据以证明未实施侵权行为。在权利人提交的证据能够初步证明侵权成立的情况下,如被诉侵权人并未提交相反证据或者提交的相反证据不足以推翻侵权认定的,应当承担相应的侵权责任。
(2)权利人举证特有内容,直接认定构成实质性相似
有些法院认为,若权利人能举证侵权软件中存在权利软件的特有内容,则可以认定被告构成侵权。法律依据为《北京市高级人民法院侵害著作权案件审理指南》第11.8 条的规定,原告能够举证证明二者目标程序相同不相同或者相近似,但被诉侵权的计算机软件目标程序中存在原告主张权利的计算机软件特有内容,可以认定原、被告的软件构成实质性相似。
北京知识产权法院发布的典型案例【(2017)京73民初1249号】支持该观点,该案中,法院认为,在被告拒不提交或未准确提交被诉侵权的计算机软件源代码时,推定原、被告的软件构成实质性相似通常应满足一定前提条件,即原告能够举证证明二者目标代码相同或者相近似,或被诉侵权的计算机软件目标代码存在原告主张权利的计算机软件特有内容,或者在软件结果等方面相同或者实质性相似。
技术规范修改条文分析
1.明确技术规范的适用范围
此次技术规范第一部分对技术规范的内容和适用范围进行了调整,“本文件规定了软件相似性鉴定的总体要求以及仪器设备、鉴定步骤、鉴定记录和鉴定意见的要求。本文件适用于司法鉴定领域中对软件相似性的鉴定。”
该条明确了该技术规范适用于司法鉴定领域中对软件相似性的鉴定,明确了此次技术规范的内容系:软件相似性鉴定的总体要求以及仪器设备、鉴定步骤、鉴定记录和鉴定意见的要求。
2. 技术规范中的表述更规范
技术规范中的术语表述与《计算机软件保护条例》中一致。原在2014版本中使用“源代码”表述,而本次技术规范将“源代码”的表述修改成“源程序”表述,与《计算机软件保护条例》第三条中“同一计算机程序的源程序和目标程序为同一作品”中源程序的表述一致,更为规范。
其次,技术规范第三部分术语定义中明确检材为涉嫌侵权的软件,样本为被侵权的软件,比2014版本更为明确检材和样本分别的指向对象。
3. 明确软件相似性的总体要求
此次技术规范第五条增加了软件相似性在司法鉴定中的总体要求,新增的总体要求简评如下:
(1)5.1 “排除非原创:如检材和样本包含非原创文件/内容,软件的相似性比对宜包含排除非原创文件/内容后的比对检验。”
在进行软件的相似性比对时,必须排除非原创的文件或内容。根据著作权法的规定,获得保护的内容系独创性表达,而非原创的内容不符合独创性的标准,因此应当被排除在比对检验之外,例如软件中的开源代码应当被排除。
(2)5.2 “对等比对:检材和样本应在对等形态下进行比对检验,如源程序与源程序进行比对、目标程序与目标程序进行比对、文档与文档进行比对、数据库与数据库进行比对。如果检材与样本形态不一致,则应通过编译或者反汇编等手段转换一致后进行比对。”
检材与样本的比对必须在对等形态下进行,一是出于比对可行性,例如,C语言源程序与二进制目标程序之间的是无法直接比对,因此必须通过编译或反汇编等手段将它们转换为一致的形态,才能进行有效比对。二是这一原则得到了众多司法裁判所的支持,法院认为只有在形态一致的情况下,才能进行有效的比对,以确保所获得数据的可信度。
(3)5.3 “考虑差异:比对过程宜充分考虑名称(如文件名、变量名和函数名等)、语法(如空行、空格和字符大小写等)、注释、顺序以及编译器等差异造成的影响。”
在进行比对时需重视考量各种差异因素。这包括了名称方面的差异,例如文件名、变量名以及函数名等,因为侵权者通常会尝试通过更改这些名称来掩饰其侵权行为。此外,语法方面的差异也应纳入考虑,例如空行、空格以及字符大小写等,这些差异会对相似度的评估结果造成影响。另外,代码顺序的差异也需关注,因为侵权者可能会故意改变代码的排列顺序,以避免被发现。最后,考量编译器引起的差异也非常重要,因为不同的编译器可能会产生不同的二进制代码,从而影响相似性比对的准确性。
(4)5.4 “操作可追溯:与鉴定有关的情况应及时、客观、全面地记录,对于不可再现情况录像记录,应确保鉴定过程和结果的可追溯性。”
5.4条的操作可追溯性旨在确保鉴定过程的透明性、客观性和全面性,以及确保鉴定结果能够随时事后查证。这一原则不仅有助于建立鉴定的真实性和可信度,还有助于确保在鉴定中出现问题时能够有效地解决和追溯责任。
4. 明确鉴定中“特有内容”的重要性
根据第一部分分析可知,特有内容在软件著作权侵权判定中具有重要作用,因此,技术规范在2014年版本中增加有关特有内容的部分,具体为:
“6.3.2.2 特有内容分析
对于检材中出现的与样本中相同或相似的软件署名(包括开发者和所属单位)、数字水印、注释、废程序段和特异性错误等,应分析记录并在鉴定意见中体现。
6.3.2.5 代码分析
对于包含代码文件的检材和样本,应重点关注特有内容、代码执行逻辑与结构等内容。”
由上可知,技术规范明确特有内容包括软件署名(包括开发者和所属单位)、数字水印、注释、废程序段和特异性错误等情形,并要求将该特有内容在鉴定意见中体现。此外,技术规范还明确在对代码进行分析时应重点关注特有内容、代码执行逻辑与结构等内容,该部分内容在软件侵权案件中系法院判定侵权的重要考量因素。
5. 具体化鉴定仪器设备
相较于2014年版本对鉴定仪器设备中硬件和软件的简单定义,此次技术规范将硬件和软件进行了详细罗列,为鉴定机构提供更为实用的参考,具体为:
4. 1 硬件
鉴定所用仪器设备硬件宜包括但不限于:a) 电子数据鉴定工作站;b) 数码照相机;c) 数码摄像机;d) 存储介质只读设备;e) 存储介质复制设备。
4. 2   软件
鉴定所用仪器设备软件宜包括但不限于:a) 完整性校验值计算软件;b) 电子数据相似性比较软件;c) 安装程序解包软件;d) 计算机/移动终端系统仿真软件;e) 网络数据包分析软件;f) 反汇编分析软件;g) 应用程序功能分析软件;h) 数据库分析软件。
这一变化将有助于鉴定机构更好地理解和选用适当的硬件和软件,提升鉴定工作的准确性和效率,为鉴定领域的发展和进步注入新力量。
6. 细化相似性比对内容
相较于2014年版本简单的比对步骤,此次技术规范更加细化了相似性比对内容和步骤。在相似比对中,技术规范详细罗列了涉及比对的内容:源程序的比对、目标程序的比对、源程序和目标程序的比对、开发测试文档的比对、源程序/目标程序和开发测试文档的比对。并在每一项中详细列出比对方法。以“目标程序的比对”为例,技术规范详细列出了若对应文件的完整性校验值不同或存在无法对应的文件时的操作指南:即可对安装程序检验、对安装过程检验、对安装后的程序检验。并对每个程序比对内容列出了详细步骤。
例如:对安装后的程序检验比对内容为:1) 安装后产生的目录结构及目录名;2)  安装后产生的文件的文件名、文件完整性校验值、文件内容、文件结构和文件属性等;3)  安装后注册表的变动;4)  安装过程中产生的临时文件;5)  安装后软件的配置过程和运行方式;6)  软件使用过程中的屏幕显示、功能、功能键和使用方法等;7)  软件卸载过程中的屏幕显示和功能键等;8)  卸载后软件的残留文件;9)  卸载后注册表的变动;10) 程序逆向分析:目标程序如具有防检测分析的保护,如加壳和加密等情况,可根据需要先去除保护,再对目标程序进行反汇编,对反汇编后的代码应按照 6.3.1.2 的规定进行比对检验。
详细的比对内容和方法对鉴定机构进行鉴定时具有重要意义,这可以显著提高鉴定的准确性,减少误判的风险,确保鉴定结果的精确性。此外,这有助于标准化鉴定过程,确保不同机构和鉴定人员能够得出一致的结果,提高了工作的一致性和可比性。详细的比对还能提高工作效率,通过明确的操作步骤和标准减少试错的时间,提高鉴定速度。
7. 新增相似性分析
技术规范新增相似性分析部分,旨在上述相似性比对内容的基础上,对上述比对内容进一步分析和处理,为计算软件相似的比例奠定基础。相似性分析包括总体分析、特有内容分析、资源文件分析、结构分析、代码分析、数据库分析、其他内容分析。总体分析是原则,提出需对检材和样本的整体相似情况进行分析,再在每个项目中细化相似性分析的具体规则和内容。
例如,在代码分析中,对于空行、缩进和字符大小写等不影响程序执行的语法差异予以排除或视为相同,排除或视为相同的规则应在鉴定记录中体现。同样,技术规范对注释内容、文件名、文件名、变量名和函数名等不影响程序执行的名称差异、不影响程序执行的代码行或代码块的位置差异等处理规则亦进行了相关规定,与总体要求中5.3的“考虑差异”要求遥相呼应。
代码分析中注重差异部分并将这些差异排除,可大幅度提高鉴定结果的准确度,为司法裁判提供更为坚实的基础和有价值的参考。由此可见,新增相似性分析部分可以确保鉴定工作更为精确和可信,从而对司法决策产生积极的影响。
8. 新增司法鉴定中软件相似的计算公式
技术规范新增了关于司法鉴定中计算软件相似性的计算公式,这些公式涵盖了结构相似比例、文件相似比例和代码相似比例的详细计算方法。在相似比例计算的各个阶段,技术规范要求采用两种不同的参考对象,一种是样本,另一种是检材,以更全面地反映软件相似度比例。
以结构相似比例计算为例,对于结构相似比例的计算需要分别以样本与检材作为参考对象进行分别计算
公式1:以样本作为参考对象的结构相似比例计算公式为:
在上述公式中,ssk 系指以样本作为参考对象的结构相似比例,Fc  系指包含文件结构比对后的同名文件数量,F系指样本的文件数量。
公式2:以检材作为参考对象的结构相似比例计算公式见式为:
在上述公式中,ss 系指以检材作为参考对象的结构相似比例,F系指包含文件结构比对后的同名文件数量,Fq 系指检材的文件数量。
由上述两个公式分析可知,两个公式中分子相同,均为同名文件数量,不同的是分母,公式1的分母是样本的文件数量,而公式2的分母是检材的文件数量。通过对公式1和公式2的计算,可以得出抄袭部分(相似部分)占权利作品(样本)的比例以及占侵权作品(检材)的比例。如此对法院判断是否构成侵权以及判赔时提供足够数据支撑。
此外,技术规范还明确了排除非原创文件等因素的计算公式,以确保所比对的相似性内容系权利作品的独创性内容,受著作权法保护。比如在代码相似比例的计算中,除了对代码总体相似比例以样本与检材进行计算代码总体相似比例外,还需对排除非原创内容后的代码以及排除非原创内容及注释后的代码进行计算相似比例。
以排除非原创内容后的代码计算相似比例为例,在计算排除非原创内容后的代码相似比例时,均需以样本以及检材作为参考对象分别计算。
公式3:以样本作为参考对象的排除非原创内容后的代码相似比例计算公式为:
在上述公式中CSkn 系指以样本作为参考对象的排除非原创文件后的代码相似比例,C 系指代码相同行数,Cnc 系指代码中非原创内容相同行数。Ck 系指样本代码总行数,Ckn  系指样本代码中非原创内容行数。
对上述公式进行分析可知,分子为在相似代码总行数中减去非原创的内容,分母为样本总行数减去非原创内容行数,则可计算出排除非原创内容后的相似代码占排除非原创性内容后的权利作品代码的比例。
公式4:以检材作为参考对象的排除非原创内容后的代码相似比例计算公式为:
在上述公式中,CSqn  系指以检材作为参考对象的排除非原创文件后的代码相似比例,Cc 系指代码相同行数,Cnc 系指代码中非原创内容相同行数。C 系指检材代码总行数,Cqn   系指检材代码中非原创内容行数。
对上述公式进行分析可知,分子为在相似代码总行数中减去非原创的内容,分母为检材总行数减去非原创内容行数,则可计算出排除非原创内容后的相似代码占排除非原创性内容后的侵权作品代码的比例。
通过对公式3和公式4分析可知,两个公式中分子相同,均为相似代码总行数中减去非原创的内容,不同的是分母,公式3的分母是样本总行数减去非原创内容行数,而公式4的分母是检材总行数减去非原创内容行数。通过对公式3和公式4的计算,可以得出排除非原创性内容的抄袭部分(相似部分)占排除非原创性内容的权利作品(样本)的比例以及占排除非原创性内容的侵权作品(检材)的比例。如此细化的计算公式可有助于提高鉴定工作的准确性,使鉴定机构能够更有效地进行软件相似性鉴定,为司法决策提供更有实际价值的参考依据。
9. 明确鉴定结论的类型和判断依据
相较于2014版本中只简单写了检验结果“列出检材与样本的相似比例,并对存在相同或相似的部分进行说明。” 而此次技术规范详细得将鉴定意见划分为四种结论:(1)软件相同。(2)软件相似。(3)软件不相似。(4)无法判断。另外,技术规范对上述四个结论均提供了详细的判断依据以及表述。
以“软件相似”结论为例,“判断依据:检材与样本中存在部分文件的完整性校验值相同或文件的内容存在相同部分。鉴定意见表述为:检材与样本相似,并列出相似比例。附加要求如下:a) 应分别列出以检材为参考对象和以样本为参考对象时,检材与样本的相似比例;b) 如检材与样本包含多种文件类型,可分别列出各类型文件的相似比例;c) 对检材与样本中存在相同或相似的部分应进行说明;d) 不宜出现“实质性相似”表述。”
由上述判断依据可知,即使检材与样本中存在1%的相同部分,鉴定意见亦应表述为检材与样本存在相似,并列出相似比例,同时应对相似部分进行说明。
这一规定的背后是因为在软件著作权侵权判定中,确定软件是否相似对于是否构成侵权至关重要,而软件相似比例则直接关系到判决的赔偿金额大小。例如,在北京知识产权法院公布的典型案例【案号:(2017)京73民初1249号】中,法院认为,实质性相似既包括权利人整部作品与被诉侵权作品整体对比构成相似,也包括只是两部作品中部分相似,甚至只是很小部分相似。换言之,实质性相似部分所占比例的大小并不影响行为定性,仅仅是后续认定侵权情节的考量因素。
因此,鉴定结论中的“检材与样本相似,并列出相似比例”,对于法院在确定侵权行为和判决赔偿额时是一项极为有力的依据。这一明确的标准不仅有助于软件著作权的保护,还有助于法院公平和公正地处理软件侵权案件,确保权利人能够获得应有的赔偿。这种规定的制定为法院提供了明确的依据,使其更好地裁判软件著作权侵权案件。
结语
综上所述,技术规范的发布对软件著作权侵权案件中司法鉴定领域具有积极意义。通过与2014版本对比,技术规范更为具体、操作性更强,为鉴定机构和法院提供了更好的指导和依据。这将有助于提高软件相似性鉴定的准确性和可信度,从而更好地维护法律秩序和保护知识产权。随着技术的不断发展,这一技术规范也将会不断更新,以适应新的挑战和需求,推动司法鉴定领域的不断进步。此次技术规范将为今后的司法鉴定工作提供有力的支持和方向,有望在法律实践中发挥更大的作用。在此,感谢并致敬为此次技术规范修改付出心血的所有专业人士。
《软件相似性鉴定技术规范》修改对照表
软件相似性鉴定实施规范(2014)
软件相似性鉴定技术规范(2023)
SF/Z JD0403001-2014
SF/T 0158—2023
1范围  
本技术规范规定了软件相似性检验的技术方法和步骤。
本技术规范适用于在电子数据检验鉴定工作中的软件的相似性检验。
1范围 
本文件规定了软件相似性鉴定的总体要求以及仪器设备、鉴定步骤、鉴定记录和鉴定意见的要求。
本文件适用于司法鉴定领域中对软件相似性的鉴定。
新增
2规范性引用文件
下列文件中的内容通过文中的规范性引用而构成本文件必不可少的条款。其中,注日期的引用文件,仅该日期对应的版本适用于本文件;不注日期的引用文件,其最新版本(包括所有的修改单)适用于本文件。
GB/T 11457 信息技术 软件工程术语
GB/T 29361 法庭科学 电子数据文件一致性检验规程
SF/T 0105 存储介质数据镜像技术规程
SF/T 0157 移动终端电子数据鉴定技术规范
2术语与定义
3术语与定义 
GB/T 11457、GB/T 29361、SF/T 0157界定的以及下列术语和定义适用于本文件。
2.1 检材 software for examination
电子数据检验鉴定中需检验的软件。
3.1检材 questioned software/code for examination
电子数据检验鉴定中需检验的软件的程序、代码或开发测试文档等。
注:通常为涉嫌侵权的软件。
2.2样本 software for comparison
电子数据检验鉴定中用于同检材进行比对检验的软件。
3.2样本 known software/code for comparison
电子数据检验鉴定中用于同检材(3.1)进行比对检验的软件的程序、代码或开发测试文档。
注:通常为被侵权的软件。
2.3数字化设备 digital device
存储、处理和传输二进制数据的设备,包括计算机、通信设备、网络设备、电子数据存储设备等。
删除
2.4源代码 source code
未经编译的、按照一定的程序设计语言规范书写的、人类可读的计算机指令语言指令。
删除
2.5目标程序 object code
编译器或汇编器处理源代码后所生成的、可被直接被计算机运行的机器码集合。
删除
2.6 运行环境 runtime environment
一种把执行码在目标机器上运行的环境。
删除
2.7哈希值 hash value
使用安全的哈希算法对数据进行计算获得的数据。常用哈希算法包括MD5、SHA1和SHA256等。
删除
2.8反编译 decompile
将已编译的程序文件还原成汇编或者高级语言代码的过程。
删除
新增
3.3数字水印 digital watermark
一种运用计算机算法嵌入载体文件的保护信息。
【来源:GB/T 36303—2018,3.1】
新增
3.4非原创文件 non-original file
不享有著作权的程序文件。
示例:公共程序库文件、第三方库文件和基于开源许可证的文件等。
3仪器设备
4仪器设备
3.1硬件
电子数据存储设备、保全备份设备、检验设备。
4.1硬件
鉴定所用仪器设备硬件宜包括但不限于:
a) 电子数据鉴定工作站;
b) 数码照相机;
c) 数码摄像机;
d) 存储介质只读设备;
e) 存储介质复制设备。
3.2软件
送检软件所需的运行环境、文件比对工具、反编译工具、源代码分析工具等。
4.2软件
鉴定所用仪器设备软件宜包括但不限于:
a) 完整性校验值计算软件;
b) 电子数据相似性比较软件;
c) 安装程序解包软件;
d) 计算机/移动终端系统仿真软件;
e) 网络数据包分析软件;
f) 反汇编分析软件;
g) 应用程序功能分析软件;
h) 数据库分析软件。
新增
5 总体要求
新增
5.1 排除非原创:如检材和样本包含非原创文件/内容,软件的相似性比对宜包含排除非原创文件/内容后的比对检验。
新增
5.2 对等比对:检材和样本应在对等形态下进行比对检验,如源程序与源程序进行比对、目标程序与目标程序进行比对、文档与文档进行比对、数据库与数据库进行比对。如果检材与样本形态不一致,则应通过编译或者反汇编等手段转换一致后进行比对。
新增
5.3 考虑差异:比对过程宜充分考虑名称(如文件名、变量名和函数名等)、语法(如空行、空格和字符大小写等)、注释、顺序以及编译器等差异造成的影响。
新增
5.4 操作可追溯:与鉴定有关的情况应及时、客观、全面地记录,对于不可再现情况录像记录,应确保鉴定过程和结果的可追溯性。
4检验步骤
6.鉴定步骤
4.1 记录检材和样本情况
4.1.1  对送检的检材/样本进行唯一性编号,编号方法为XXXX(年度)-XXX(受理号)-XX(流水号),如 2012-39-2 表示 2012 年受理的编号 39 案件的第 2 个检材。
4.1.2  对检材/样本为数字化设备的,对数字化设备进行拍照,并记录其特征。
6.1记录检材/样本的情况
根据检材/样本的载体类型,应选择以下适当方式进行记录。
a)载体为实物:对检材/样本的实物载体进行唯一性编号后拍照或录像,并记录其类别、品牌型号、唯一性编号、性状等。
b)载体位于网络:记录检材/样本的下载网址、远程访问的账号及口令等信息。必要时,通过网络数据包监测,分析检材/样本的下载来源。
4.2 检材和样本的保全备份
对具备保全条件的检材和样本进行保全备份,并计算保全备份的副本或镜像的哈希值。
6.2提取固定检材/样本
6.2.1根据检材/样本的载体类型,应选择以下适当方式进行数据提取。
a)载体为具备复制条件的数字化设备:按照SF/T0105的规定制作镜像并核对对其完整性校验值,然后采用只读方式对该镜像进行检材/样本的数据提取。
b)载体为不具备复制条件的电子设备(非移动终端):使用录像或者录屏的方式记录检材/样本的数据提取过程。
c)载体为移动终端:按照SF/T0157的规定对检材/样本进行数据提取。
d)载体为网络:使用录像或者录屏的方式记录检材/样本的数据提取过程,并从可信时间源获取并记录开始时间和结束时间。
6.2.2
对提取的检材/样本应计算完整性校验值。
注:对于使用录像或者录屏的方式记录检材/样本的数据提取过程的,录像或录屏包含检材/样本的完整性校验值的计算过程。
4.3 检验项目的选择
分析检材和样本,根据检材和样本的内容选择以下一项或多项内容进行检验:
a) 源代码间的比对;
b) 目标程序间的比对;
c) 源代码和目标程序间的比对;
d) 文档的比对(如适用);
e) 文档和源代码/目标程序间的比对。
注:文档包括开发文档、需求说明书、总体设计方案、详细设计方案等。
6.3相似性比对分析
6.3.1相似性比对
6.3.1.1
基本要求
审查检材和样本的类型,选择合适的鉴定项目进行比对,常见的的比对项目应包括但不限于:
a)源程序的比对;
b)目标程序的比对;
c)源程序和目标程序的比对;
d)开发测试文档的比对;
e)开发测试文档和源程序/目标程序的比对。
4.4 程序的比对检验
4.4.1 要求
对检材和样本进行比对检验时,需先排除影响比对的内容(如公共程序库文件、第三方库文件和GNU通用公共许可的程序等)。
4.4.2 源代码间的比对
对检材和样本的源代码的目录结构、文件名、文件内容、变量、函数、宏定义等进行比对检验。检验时,应排除自定义的文件名、变量名、函数名等名称被修改的影响,对程序逻辑与结构等内容进行比对检验。
6.3.1.2源程序的比对
应按照GB/T29361的规定分别对检材和样本中的源程序进行比对检验。若所有对应文件的完整性\校验值相同,则软件相同:若对应文件的完整性校验值不同或存在无法去对应的文件,则宜在排除非原创的内容后,对检材和样本的源程序的目录结构、文件名、文件内容、变量、函数和宏定义等分别进行比对检验。
4.4.3 目标程序间的比对
分别对检材和样本中的目标程序文件计算哈希值。若所有对应文件的哈希值相同,则软件相同。若对应文件的哈希值不相同,按下列步骤进行:
a) 安装程序检验(如适用),对检材和样本的安装程序进行下列比对检验:
 1)目录结构及目录名;
 2)各组成文件的文件名、文件哈希值、文件内容、文件结构和文件属性等。
b) 安装过程检验(如适用)
分别运行检材和样本的安装程序,观察安装过程的屏幕显示、软件信息、使用功能键后的屏幕显示以及安装步骤,并进行比对检验。
c)安装后的程序检验,对安装成功的检材和样本的程序进行下列比对检验:
1)安装后产生的目录结构及目录名;
2)安装后产生的文件的文件名、文件哈希值、文件内容、文件结构和文件属性等;
3)安装后的软件的配置过程和运行方式。
d)程序的使用过程检验:运行该程序,对使用过程中的屏幕显示、功能、功能键和使用方法等进行比对检验。
e) 核心程序的逆向分析:必要时,对目标程序的核心程序进行反编译,对反编译后的代码进行比对检验。
4.4.4  源代码和目标程序间的比对
将源代码编译成目标程序后再进行比对检验,检验过程按照目标程序间的比对进行。
注:源代码编译过程中,由于编译软件、编译环境等不同,相同的源代码每次编译产生的文件可能会有差异。
4.5 文档的比对
对检材和样本的文档的目录结构、内容以及属性进行比对。
6.3.1.3目标程序的比对
应按照GB/T29361的规定分别对检材和样本中的目标程序进行比对检验。若检材与样本程序文件相同,则软件相同:若检材与样本程序文件存在不同或存在无法对应的文化牛,则根据检材与样本的实际情况,选择以下1项或多项进行。
a)安装程序检验:对检材和样本的安装程序(或解包后)的目录结构、目录名和各组成文件的文件名、文件完整性校验值、文件内容、文件结构、文件属性和文件签名信息等进行比对检验。
b)安装过程检验:在相同环境下,分别隔离运行检材和样本的安装程序,对安装过程的屏幕显示软件信息、安装选项和安装步骤进行比对检验,必要时也可对安装过程中的网络访问情况和调用程序库等进行检验和比对。
c)安装后的程序检验:对安装成功的检材和样本的程序进行以下比对检验:
1)安装后产生的目录结构及目录名;
2)安装后产生的文件的文件名、文件完整性校验值、文件内容、文件结构和文件属性等;
3)安装后注册表的变动;
4)安装过程中产生的临时文件;
5)安装后软件的配置过程和运行方式;
6)软件使用过程中的屏幕显示、功能、功能键和使用方法等;
7)软件卸载过程中的屏幕显示和功能键等;
8)卸载后软件的残留文件;
9)卸载后注册表的变动;
10)程序逆向分析:目标程序如具有防检测分析的保护,如加壳和加密等情况,可根据需要先去除保护,再对目标程序进行反汇编,对反汇编后的代码应按照6.3.1.2的规定进行比对检验。
6.3.1.4源程序和目标程序的比对
将源程序编译成目标程序后,应按6.3.1.3的规定进行比对检验或将目标程序进行反汇编后,按照6.3.1.2的规定进行比对。若目标程序具有防检测分析的保护,如加壳和加密等情况,可根据需要去除保护,再对目标程序进行反汇编。对于源程序编译过程中,由于编译软件和编译环境等不同而导致的文件差异,应进行记录。
6.3.1.5开发测试文档的比对
应对检材和样本中的开发文档、需求说明书、设计方案、操作手册、开发手册和测试手册等相关文档的文本内容、流程图和属性信息等进行比对检验。对于包含文字的非文本形式的文档(如扫描文档),可进行文字识别并验证后进行比对检验。对于包含图片等多媒体数据的文档,应对多媒体的元数据和内容等进行比对检验。
6.3.1.6源程序/目标程序和开发测试文档的比对
应对检材和样本中源程序/目标程序的作者/开发者和代码等信息与检材和样本中开发文档、需求说明书、设计方案、操作手册、开发手册和测试手册等相关文档进行比对检验。
新增
6.3.2相似性分析
6.3.2.1 总体分析
软件相似性鉴定中应了解与鉴定有关的情况,并对检材和样本整体相似情况进行分析,包括文件数量、文件类型、文件大小、文件中的代码行数和非原创文件等信息。
6.3.2.2特有内容分析
对于检材中出现的与样本中相同或相似的软件署名(包括开发者和所属单位)、数字水印、注释、废程序段和特异性错误等,应分析记录并在鉴定意见中体现。
新增
6.3.2.3资源文件分析
对于包含资源文件的检材和样本,应根据资源文件情况,采用以下适当当方式进行相似性分析:
a)对于图标、图片和音视频等外部资源文件,按照GB/T 29361的规定进行比对检验
b)对于包含图标、图片和音视频等资源文件的压缩文件,可释放资源文件后,按照GB/T 29361的规定进行比对检验。
新增
6.3.2.4 结构分析
对于包含2层及以上目录结构的检材和样本,应分析其目录结构及文件分布的相似性。
新增
6.3.2.5代码分析
对于包含代码文件的检材和样本,应重点关注特有内容、代码执行逻辑马结构等内容,并采用以下适当方式进行相似性分析:
a)对于空行、缩进和字符大小写等不影响程序执行的语法差异应予以排除或视为为相同,排除或视为相同的规则应在鉴定记录中体现;
b)对于注释内容宜分别进行排除前和排除后的相似性分析,排除规则应在鉴定记录中体现;
c)对于文件名、变量名和函数名等不影响程序执行的名称差异可采用适当的规则进行替换,替换规则应在鉴定记录中体现;
d)对于不影响程序执行的代码行或代码块的位置差异可采用适当的规则进行对齐,对齐规则应在鉴定记录中体现;
e)对于以文本行方式比对的代码,可按对应顺序合并文件后进行代码行比对,合并顺序应在鉴定记录中体现。
新增
6.3.2.6数据库分析
对于包含数据库的检材和样本,可将数据库转储为sql脚本代码,分析数据库的库名、数据表名称、结构及数据、视图名称及定义、存储过程以及触发器等项目的相似性。
对于安装后预置了数据库数据的检材和样本,应重点比较预置数据的相似性。
新增
6.3.2.7其他内容分析
对于检材中与样本中其他相同或相似的内容,如执行流程图、测试用例、通讯端口情况和调试日志输出等,应分析并记录,必要时在鉴定意见中体现。
新增
6.3.3 相似比例计算
6.3.3.1结构相似比例的计算
6.3.3.1.1 以样本作为参考对象的结构相似比例计算公式见式(1)。
SSK  =  
× 100% ……(1)
式中:
SSk − −以样本作为参考对象的结构相似比例;
Fc − −包含文件夹结构比对后的同名文件数量;
Fk − −样本的文件数量。
新增
6.3.3.1.2  以检材作为参考对象的结构相似比例计算公式见式(2)。
ssq =
×   100% ………(2)
式中:
ssq − −以检材作为参考对象的结构相似比例;
Fc − −包含文件夹结构比对后的同名文件数量;
Fq  − −检材的文件数量。
新增
6.3.3.2  文件相似比例
6.3.3.2.1  总体文件相似比例
6.3.3.2.1.1  以样本作为参考对象的总体文件相似比例计算公式见式(3)。
FSk  = 
× 100% ……(3)
式中:
FSk − −以样本作为参考对象的总体文件相似比例;
Dc  − −完整性校验值相同的文件数量;
Fk  − −样本的文件数量。
6.3.3.2.1.2  以检材作为参考对象的总体文件相似比例计算公式见式(4)。
Fsq  =
× 100% ………(4)
式中:
Fsq − −以检材作为参考对象的总体文件相似比例;
Dc − −完整性校验值相同的文件数量;
Fq − −检材的文件数量。
新增
6.3.3.2.2  排除非原创文件后的文件相似比例
6.3.3.2.2.1  以样本作为参考对象的排除非原创文件后的文件相似比例计算公式见式(5)。
FSkn  =  
× 100% ………(5)
式中:
FSkn − −以样本作为参考对象的排除非原创文件后的文件相似比例;
Dc  − −完整性校验值相同的文件数量;
Dnc − −完整性校验值相同的非原创文件数量;
Fk  − −样本的文件数量;
Fkn  − −样本的非原创文件数量。
6.3.3.2.2.2  以检材作为参考对象的排除非原创文件后的文件相似比例计算公式见式(6)。
FSqn  =
× 100% ………(6)
式中:
FSqn− −以检材作为参考对象的排除非原创文件后的文件相似比例;
Dc - -完整性校验值相同的文件数量;
Dnc− −完整性校验值相同的非原创文件数量;
Fq− −检材的文件数量;
Fqn− −检材的非原创文件数量。
新增
6.3.3.3  代码相似比例
6.3.3.3.1  代码总体相似比例
6.3.3.3.1.1  以样本作为参考对象的代码总体相似比例计算公式见式(7)。
CSk = 
 × 100% ………(7)
式中:
CSk − −以样本作为参考对象的代码总体相似比例;
Cc − −代码相同行数;
Ck  − −样本代码总行数。
6.3.3.3.1.2  以检材作为参考对象的代码总体相似比例计算公式见式(8)。
CSq  =
 × 100%  ………(8)
式中:
CSq − −以检材作为参考对象的代码总体相似比例;
Cc  − −代码相同行数;
Cq  − −检材代码总行数。
注:对于空行、空格和字符大小写差异视为相同。
新增
6.3.3.3.2  排除非原创内容后的代码相似比例
6.3.3.3.2.1  以样本作为参考对象的排除非原创内容后的代码相似比例计算公式见式(9)。
CSkn=  
 × 100% …………(9)
式中:
CSkn − −以样本作为参考对象的排除非原创文件后的代码相似比例;
Cc  − −代码相同行数;
Cnc − −代码中非原创内容相同行数;
Ck  − −样本代码总行数;
Ckn  − −样本代码中非原创内容行数。
6.3.3.3.2.2  以检材作为参考对象的排除非原创内容后的代码相似比例计算公式见式(10)。
CSqn =
 × 100% ……(10)
式中:
CSqn− −以检材作为参考对象的排除非原创文件后的代码相似比例;
Cc  − −代码相同行数;
Cnc − −代码中非原创内容相同行数;
Cq  − −检材代码总行数;
Cqn − −检材代码中非原创内容相同行数。
注:空行或仅有空白字符的行从行数中排除,仅存在多余空白字符、字符大小写差异, 或其他不影响程序执行的名 称或位置差异的行视为相同。
新增
6.3.3.3.3  排除非原创内容及注释后的代码相似比例
6.3.3.3.3.1  以样本作为参考对象的排除非原创内容及注释后的代码相似比例计算公式见式(11)。
CSkna  =
 × 100% ……(11)
式中:
CSkna − −以样本作为参考对象的排除非原创内容及注释后的代码相似比例;
Cc − −代码相同行数;
Cnc − −代码中非原创内容相同行数;
Ca   − −注释行;
Ck − −样本代码总行数;
Ckn − −样本代码中非原创内容行数。
6.3.3.3.3.2  以检材作为参考对象的排除非原创内容及注释后的代码相似比例计算公式见式(12)。
..........
( 12)
式中:
CSqna  − −以检材作为参考对象的排除非原创内容及注释后的代码相似比例;
Cc − −代码相同行数;
Cnc    − −代码中非原创内容相同行数;
Ca  − −注释行;
Cq   − −检材代码总行数;
Cqn − −检材代码中非原创内容相同行数。
注:对于空行、空格、字符大小写、不影响程序执行的名称差异和位置差异等视为相同。
5  检验记录
5.1  与鉴定活动有关的情况应及时、客观、全面地记录,保证鉴定过程和结果的可追溯性。
7 鉴定记录
7.1基本要求
与检验有关的情况应及时、客观和全面地记录,保证检验过程星和结果的可追溯性。
5.2  对于检材/样本为数字化设备的,应记录:
a)  检材/样本的类别;
b)  检材/样本的型号;
c)  检材/样本出厂时的唯一性编号(如适用);
d)  检材/样本的固件版本号(如适用);
e)  检材/样本中软件的名称、版本等属性信息(如适用);
f)  检材/样本的照片。
5.3  对于检材/样本为独立于数字化设备的软件的,应记录:
a)  软件的名称、版本、大小等属性信息;
b)  软件的哈希值;
c)  软件的运行环境。
5.4  对于检验的结果,应记录:
a)  检材与样本的相同部分,如目录结构、目录名、文件、文件名、文件内容等;
b)  检材与样本的相似部分,如安装或使用过程中的屏幕显示等;
7.2检材/样本信息
对于检材/样本,宜记录以下信息:
a)软件的来源,如载体电子设备的类别、品牌型号、唯一性编号、性状或下载网址、远程访问的账号及口令等;
b)软件载体或所处环境的照片;
c)软件的名称、版本和大小等属性信息;
d)软件的数字水印信息或签名信息;
e)软件的完整性校验值;
f)软件的运行环境;
g)附属信息,如账号、密码等。
7.3提取固定过程
对于检材/样本的提取固定过程,应记录以下信息:
a)提取固定过程中所使用的仪器设备信息;
b)远程提取的开始和结束时间(如适用);
c)提取固定结果的文件名和完整性校验值;
d)固定过程录像文件的文件名和完整性校验值(如适用)。
7.4检验过程
对于检材/样本的相似性检验过程,应记录以下信息:
a)检材与样本在比较前的预处理过程;
b)检材与样本的相同及相似部分;
c)6.3.2.2中检出的特有内容;
d)6.3.2.5中的处理规则;
e)6.3.2.7中检出的其他内容;
f)相似比例的计算过程。
6  检验结果
6.1  列出检材与样本的相似比例,并对存在相同或相似的部分进行说明。
6.2  若检材与样本中存在软件署名、开发者的姓名、单位、废程序段、独特的代码序列等相同时,需在检验结果中单独列出。
8 鉴定意见
8.1 鉴定意见分类
软件相似性鉴定意见应分为以下四种:
a)软件相同;
b)软件相似;
c)软件不相似;
d)无法判断。
8.2鉴定意见判断依据及表述
8.2.1软件相同
判断依据:检材与样本(安装文件、代码文件和各组成文件等等)使用GB/T29361比较结果相同。
鉴定意见表述为:检材与样本(列出对应的文件)相同。
8.2.2 软件相似
判断依据:检材与样本中存在部分文件的完整性校验值相同或或文件的内容存在相同部分。
鉴定意见表述为:检材与样本相似,并列出相似比例。
附加要求如下:
a)应分别列出以检材为参考对象和以样本为参考对象时,检材与样本的相似比例;
b)如检材与样本包含多种文件类型,可分别列出各类型文件的相似比例;
c)对检材与样本中存在相同或相似的部分应进行说明;
d)不宜出现"实质性相似"表述。
8.2.3软件不相似
判断依据:检材与样本中不存在完整性校验值相同的文件且文件内容不存在相同部分。
鉴定意见表述为:检材与样本不相似。
8.2.4无法判断
判断依据:检材与样本不具备检验条件,或在进行了充分的检验后仍无法判断是否相似。
鉴定意见表述为:无法判断检材与样本是否相似。
新增
参考文献
[1]  GB/T 29360—2023  法庭科学 电子数据恢复检验规程
[2]  GB/T 36303—2018  印刷数字水印
[3]  GA/T 756—2021  法庭科学  电子数据收集提取技术规范
[4]  GA/T 976—2012  电子数据法庭科学鉴定通用方法
[5]  GA/T 1175—2014  软件相似性检验技术方法
[6]  SF/Z JD0400001—2014  电子数据司法鉴定通用实施规范
7  附则
7.1  对检验用的软件工具的适用性应进行适当确认。
7.2  在检验过程中,检出的数据应存储在专用的存储介质中并妥善保管。
7.3  对送检的检材和样本要做好防震、防水、防磁、防静电等保护。
删除
文/邹晓晨 朱玮洁
查看近期文章,请点击以下链接:
继续阅读
阅读原文