ソースコードなし条件におけるコンピュータソフトウェアの実質的な類似判定

2024 06/25

コンピュータソフトウェアの著作権侵害の判定根拠は従来の著作権侵害と類似しており、権利証明以外には主に「接触可能性」と「実質的な類似」の2つが含まれる。ソースコードの照合を備えている場合は、テキストでソースコードを照合することができ、これは比較的簡単である。しかし、現実には、侵害されたソフトウェアのソースコードを取得することは困難であり、その場合は他の方法で実質的な類似性を判定する必要がある。本文は米摂社が震音社を訴えた(2021)京民初4号事件を借りて、ソースコードがない場合、ソフトウェア逆アセンブリコードを分析することでソフトウェアの実質的な類似性を判定する方法を検討した。


コンピュータソフトウェアの著作権侵害の判定方法


コンピュータソフトウェアの著作権侵害の判定の鍵は、接触可能性と実質的な類似性の2つの要素にある。接触可能性は被告が原告のソフトウェアに接触する機会があることを意味し、実質的に類似していることは被告のソフトウェアが原告のソフトウェアと本質的に類似しており、偶然や独立して開発されているわけではないことを意味する。


接触可能性はコンピュータソフトウェアの権利侵害を判断する必要な条件ではなく、被告側が権利側のソフトウェアに接触する可能性がある場合、被侵害ソフトウェアと原告ソフトウェアの類似性を証明する責任を軽減することができる。例えば、北京高院(2021)京民初4号事件では、美摂公司はソフトウェアが一定の市場知名度を有しており、かつ、動音科技公司とその関連会社の従業員解某が美摂公司に勤めていたことを証明する証拠を提供した。これらの証拠は、動音科学技術会社が米摂会社のソフトウェアに接触する機会があり、接触可能性の要求を満たしていることを示している。


実質的な類似とは、被告のソフトウェアが具体的な表現において原告のソフトウェアと類似点があることを意味し、この類似は偶然の一致ではなく、パクリや無許可コピーによるものである。アクティブコードの場合は、ソースコードで詳細に比較することができます。しかし、ソースコードがない場合は、ソフトウェアの逆アセンブリコードを分析するなど、他の方法を採用する必要があります。


ソースコードがない場合の実質的な類似判定


ソースコードがない場合、逆アセンブリコードによりソフトウェアの実質的な類似性を判定することは有効な手段である。具体的には、関数名の実質的な同一、関数名の実質的な類似、関数コードの実質的な同一と関数コードの実質的な類似の4つの側面から分析することができる。


(1)関数名の実質的な同一性

関数名は一般的に英語の単語や略語で構成され、関数の機能を体現することができる。関数名が実質的に同じであることは、関数名に同じ英単語が使用されていること、または関数名に差異があることを意味するが、主な英単語は略語と同じであり、差異部分には特定の対応関係がある。たとえば、ソフトウェアのほとんどの関数名は本体部分が同じですが、接頭辞が「AAA」から「BBB」に変更されただけで、一括変更の結果である可能性が高いです。


(2021)京民初4号事件で、国家工信安全センターの鑑定意見書は、震動ソフトウェアの中に複数の関数名が米摂ソフトウェアの関数名と実質的に同じであることを指摘した。例えば、米摂SDKソフトウェアにおける関数
“NvImageBufferGetSizeInBytes”
振動ソフトウェアにおける対応する関数名は
“TEImageBufferGetSizeInBytes”
米摂SDKソフトウェアにおける関数
“NvCalcCanonicalBoundingRectFromImagePos”
振動ソフトウェアにおける対応する関数は
“TECalcCanonicalBoundingRectFromImagePos”

両者は単語の選択、順序、タイプ、数量において高度に一致している。


(2)関数名の実質的な類似


関数名の類似は、クラス名と関数名の英単語(および略語)を総合的に考慮した上で類似構成を判断する場合である。例えば、個別の英単語の大文字と小文字または品詞には詳細な変化があり、他の部分が実質的に同じであれば、関数名が実質的に類似しているとみなすことができる。
(2021)京民初4号事件で、米摂SDKの
“CNvBaseStreamingGraphNode::IsInputPinResovled”
振動ソフトウェアの
“TEvBaseStreamingGraphNode::isInputPinResovled”

両者のクラス名とクラスメンバー関数は高度に類似しており、クラスメンバー関数の中でのみ単語Isとisに大文字と小文字の区別があり、また両方のソフトウェアには同じスペルミス「Resoble」が保持されているため、関数名の実質的な類似性が考えられる。


(3)関数コードの実質的な同一性


関数コードの実質的な同一とは、2つのソフトウェアのうちのいくつかの関数のコードがアセンブリレベルで完全に一致しているか、文の操作コードが同じで、オペランドだけが異なることを意味します。このような状況は、通常、2つのソフトウェアが特定の機能を実装する際に全く同じコード論理を採用していることを示しています。
(2021)京民初4号事件で、国家工信安全センターは、動音ソフトウェアと米摂SDKソフトウェアの逆アセンブリコードを比較することにより、複数の関数のアセンブリコードが操作コードと操作数に高度に一致し、同じスペルミスも発生していることを発見した。たとえば、
“NvGetMatchedFormatFromOpenGLInternalFormat”
振動ソフトウェアにおける関数の対応する関数名は
“TEGetMatchedFormatFromOpenGLInternalFormat”

両者は名称が同じだけでなく、コード実装もほぼ一致している。


(4)関数コードの実質的な類似


関数コードの実質的な類似とは、2つのソフトウェアのいくつかの関数コードが具体的な実装に差があるにもかかわらず、実装ロジックと機能に類似していることを意味する。これは類似マッチングアルゴリズムによって分析し、人工的な判断と結合して、アセンブリ文の違いが関数の主要機能に与える影響などの要素を考慮することができる。


前述の米摂訴動動音案において、国家工信安全センターは関数類似性マッチングアルゴリズムを採用し、動音ソフトウェアと米摂動SDKソフトウェアのアセンブリコードを比較し、複数の関数のコードが具体的な操作コードと操作数にいくつかの違いがあるにもかかわらず、実現論理に高度な類似性を持っていることを発見した。同定機構は、関数の類似度とアセンブリ文の違いを総合的に考慮することで、これらの関数コードが実質的に類似していることを確認した。


権利侵害者の抗弁経路


著作権者のソフトウェアの実質的な主張に対して、権利侵害者は2つの主要な抗弁点を主張することができる:1つは公有領域コードを排除すべきで、2つは限られた表現内容を排除すべきである。


(1)共有領域コードの除外


パブリックドメインコードとは、通常は標準ライブラリ関数、サードパーティライブラリ関数などを含む著作権保護されていないコードを指します。これらのコードは公有分野に属し、誰でも自由に使用でき、権利侵害の一部とみなされるべきではありません。


上述の米摂訴動動音案において、国家工信安全センターはアセンブリコードの照合を行う前に、コードを前処理し、C++標準ライブラリ関数、Windowsライブラリ関数、第三者ライブラリ関数などを排除した。そのため、鑑定結果には共有領域コードの影響が排除されている。


(2)限定表現の除外


有限表現とは、その性質や機能に制限され、限られた方法でしか表現できない思想や情報を指す。この場合、著作権法は通常、創造的な表現ではなく、思想の必然的な結果として扱われるため、これらの限定的な表現を保護しません。ソフトウェア開発において、一般的なやり方や業界慣例に属するコード実装も有限表現に属する。これらのコード実装は通常、標準的で汎用的であり、独創性を備えていないため、権利侵害の一部と見なされるべきではない。


例えば、コードはメンバー変数の定義とメンバー変数に対応するgeter、seterなどの方法だけで構成され、メンバー変数は一般的な命名を採用し、このコードはプログラミング言語によって推奨される標準的な書き方である。このようなコード関数は通常、アセンブリ後のコードが小さく、アセンブリ命令は通常10行未満である。


米摂訴動動音案では、国家工信安全センターは比較過程で10行以上のコードの比較規則を設定し、比較結果を人工的に分析し、業界慣例と限られた表現内容の影響を排除することを確保した。


実質的類似の証明力度


被告側がソースコードの照合を提供したくない場合、「接触可能性」の存在を加えることで、裁判所は実質的に類似した証明力を軽減することができる。具体的には、被告がソースコードの提出を拒否したため、ソースコードの照合によってソフトウェアの実質的な類似性を直接確認することができなかったことを考慮して、裁判所は逆アセンブリコードの照合結果と接触可能性に基づいて、被告のソフトウェアと原告のソフトウェア構成が実質的に類似していると推定することができる。


おわりに


コンピュータソフトウェア著作権侵害事件において、「接触可能性」と「実質的な類似性」は2つの重要な判定根拠である。ソースコードがない場合、逆アセンブリコードを解析することでソフトウェアの実質的な類似性を効果的に判定することができる。本文は関数名と関数コードの実質的な同一と類似の分析を通じて、ケース中の判決理由を結合して、ソフトウェア侵害判定における逆アセンブリコード比の重要な役割を論証した。


被告側は公有分野のコードと限られた表現内容を排除する抗弁を提出する権利があり、裁判機構は鑑定機構の比較過程でこれらの抗弁を十分に考慮しなければならない。被告側が比較のためのソースコードの提供を拒否すれば、裁判所は実質的に類似した証明要求を軽減し、既存の証拠に基づいて合理的な判決を下すことができる。


逆アセンブリコードに対して実質的な類似判定を行うことにより、コンピュータソフトウェアの著作権侵害の重要な参考根拠とすることができる。特に、ソースコードがない場合には、逆アセンブラコードの対によってソフトウェアの実質的な類似性を判定する方法は、高い実行可能性と信頼性を持っている。