特許拒絶査定不服審判
2023-022052
情報処理方法および情報処理システム
- 審判番号
- 2023-022052
- 法域
- 特許
- 審判種別
- 拒絶査定不服審判(拒絶査定不服の審決)
- 出願番号
- 特願2019-119106
- 請求日
- 2023年12月26日
- 審決日
- 2025年02月27日
- 公報発行日
- 2025年03月28日
- 結論
- 原査定取消(特許/登録すべき)
- 当事者
- 【請求人】コネクトフリー株式会社
- 【請求人代理人】弁理士法人深見特許事務所
- 審判長/審判官
- 審判長 吉田 美彦
- 審判官 脇岡 剛
- 審判官 林 毅
- 分類
- P18 .55 -WY (G06F) / P18 .536-WY (G06F) / P18 .537-WY (G06F) / P18 .121-WY (G06F)
- 条文(本文から自動抽出・参考)
- 特許法第29条第2項、特許法第36条第6項第2号、特許法第36条第4項第1号、特許法第17条の2第3項、特許法第36条第6項第1号
- データ出所
- 審決公報(XML)
事件の表示
特願2019-119106「情報処理方法および情報処理システム」拒絶査定不服審判事件〔令和 3年 1月14日出願公開、特開2021- 5250、請求項の数(7)〕について、次のとおり審決する。
結論
結 論
原査定を取り消す。
本願の発明は、特許すべきものとする。
理由
理 由
第1 手続の経緯
本願は、令和元年6月26日出願日とする特許出願であって、その手続の経緯は以下のとおりである。
令和5年 4月27日付け:拒絶理由通知書
令和5年 7月 7日 :意見書、手続補正書の提出
令和5年 9月26日付け:拒絶査定(原査定)
令和5年12月26日 :審判請求書、手続補正書の提出
令和6年 8月 9日付け:令和5年12月26日付けの補正の却下の
決定、拒絶理由通知書
令和6年10月15日 :意見書、手続補正書の提出
令和6年10月22日付け:拒絶理由(最後)通知書
令和7年 1月 6日 :意見書、手続補正書の提出
第2 原査定の概要
原査定(令和5年9月26日付け拒絶査定)の概要は次のとおりである。
請求項1ないし3及び7に係る発明は、以下の引用文献AないしEに記載された発明に基いて、請求項4及び5に係る発明は、以下の引用文献AないしGに記載された発明に基いて、また、請求項6に係る発明は、以下の引用文献AないしHに記載された発明に基いて、その発明の属する技術の分野における通常の知識を有する者(以下、「当業者」という。)が容易に発明をすることができたものであるから、特許法第29条第2項の規定により特許を受けることができない。
A 特開2001-075814号公報
B 特開2003-248637号公報
C 特開2004-021336号公報
D 特開2004-303114号公報
E 品川高廣ほか、拡張コンポーネントのためのカーネルによる細粒度軽量保護ドメインの実現、情報処理学会論文誌 第40巻 第6号、日本、社団法人情報処理学会、1999年06月15日、第40巻,第6号、pp.2596-2606
F 特表2006-522972号公報
G 特開2003-122730号公報
H 特開平04-312130号公報
第3 当審拒絶理由の概要
1 令和6年8月9日付けで通知した拒絶理由(以下、「当審拒絶理由1」という。)の概要
(理由1)明確性要件
この出願は、特許請求の範囲の記載が以下の点で、特許法第36条第6項第2号に規定する要件を満たしていない。
ア 請求項1ないし7に係る発明において、「ソースコード」及び「中間表現」がどのようなものであるのかが不明である。
イ 請求項1ないし6に係る発明において、「実行コード」は、何に対してどのように「提供」されるのか(すなわち、どこで実行されるのか)について何ら特定がないため、「実行コード提供方法」としての構成が明確とはいえない。
(理由2)実施可能要件
この出願は、発明の詳細な説明の記載が以下の点で、特許法第36条第4項第1号に規定する要件を満たしていない。
発明の詳細な説明は、請求項1ないし7に係る「バックドア」の有無の検証をどのようにして実現できるようにしたのかについて当業者が実施できる程度に明確かつ十分に記載していない。
(理由3)進歩性
請求項1ないし7に係る発明は、以下の引用文献1ないし3に記載された発明に基いて、当業者が容易に発明をすることができたものであるから、特許法第29条第2項の規定により特許を受けることができない。
1 特表2002-527829号公報
2 特表2002-522844号公報
3 特開2001-75814号公報(原査定における引用文献A)
2 令和6年10月22日付けで通知した拒絶理由(以下、「当審拒絶理由2」という。)の概要
(理由1)新規事項
令和6年10月15日付け手続補正書でした補正(以下、「本件補正」という。)は、以下の点で願書に最初に添付した明細書、特許請求の範囲又は図面に記載した事項の範囲内においてしたものでないから、特許法第17条の2第3項に規定する要件を満たしていない。
本件補正は、出願当初の明細書(以下、「当初明細書」という。)の【0020】及び【0021】の記載から、「中間表現」の具合的な定義の一部を削除することにより、当初明細書に記載された「中間表現」の技術的な範囲を拡張し、当初明細書に記載された範囲を超えるものとするものであるため、出願当初の明細書、特許請求の範囲又は図面を総合することにより導かれる技術的事項との関係において新たな技術的事項を導入しないものとはいえない。
(理由2)明確性要件
この出願は、特許請求の範囲の記載が以下の点で、特許法第36条第6項第2号に規定する要件を満たしていない。
請求項1ないし7に係る発明において、「実行環境」は、プロセッサ、マイクロコンピュータといった、プログラムを実行するための自明な手段であるのか、「ソフトウェア開発装置100」とは異なる「エッジデバイス4のコントローラ300」に対応したものであるのか、不明である。
(理由3)サポート要件
この出願は、特許請求の範囲の記載が以下の点で、特許法第36条第6項第1号に規定する要件を満たしていない。
請求項1ないし7に係る発明は、「実行環境」が、プロセッサ、マイクロコンピュータといった、プログラムを実行するための自明な手段である場合を含むため、発明の詳細な説明に記載したものではない。
第4 本願発明
本願請求項1ないし7に係る発明(以下、それぞれ「本願発明1」ないし「本願発明7」という。)は、令和7年1月6日に係る手続補正(以下、「本件補正2」という。)により補正された特許請求の範囲の請求項1ないし7に記載された事項により特定される発明である。(摘記は省略する。)
第5 引用文献、引用発明等
1 引用文献1について
(1)引用文献1記載事項
引用文献1には、図面とともに次の事項が記載されている。なお、下線は、強調のため当審が付与した。(以降においても同様。)
「 【0002】
したがって、コンピュータ読み取り可能命令ストリームが実行環境に悪影響を及ぼす危険性なく、コンピュータ読み取り可能命令ストリームを実行する実行環境の安全性を維持しつつ、実行時セキュリティ制約事項を有する実行環境においてコンピュータ読み取り可能命令ストリームを実行するための時間および電力要求量を低減する方法および装置が求められている。
(図面の簡単な説明)
本発明の好適実施例について、一例としてのみ、添付図面を参照しながらこれより説明する。
(好適実施例の詳細な説明)
これより、コンピュータ読み取り可能命令ストリームが実行環境に悪影響を及ぼす危険性なく、コンピュータ読み取り可能命令ストリームを実行する実行環境の安全性を維持しつつ、実行時セキュリティ制約事項を有する実行環境においてコンピュータ読み取り可能命令ストリームを実行するための時間および電力要求量を低減する方法および装置について説明する。本発明の好適実施例は、Sun Microsystemsが開発したJavaTM Virtual Machineを含む、実行時セキュリティ制約事項を有するあらゆる実行環境に適用可能である。
【0003】
第1図は、実行時セキュリティ制約事項を有する実行環境150において、コンピュータ読み取り可能命令ストリームを実行するための時間および電力要求量を低減するシステム100を示す。システム100は、構築環境110および実行環境150から成る。
【0004】
システム100の構築環境110は、コンパイラ120、およびセキュリティ制約事項検証部130を備えている。コンパイラ120は、コンピュータ読み取り可能命令ストリームを作成する。セキュリティ制約事項検証部130は、コンパイラ120に結合され、コンピュータ読み取り可能命令ストリームが、実行環境150の実行時セキュリティ制約事項に違反しないことを検証する。実行時セキュリティ制約事項は、実行環境に特有である。例えば、JavaTMプログラミングの具体的な場合では、検証ツールはクラス・ファイルおよび/またはバイトコード検証プロセスを実行する。これは、マルチ・パス・プロセスであり、各パスが特定の1組のチェックを行なう。最初のパスでは、クラス・ファイルの基本的構造の完全性をチェックする。第2パスでは、無効の一定プール項目または正しくないオブジェクト・インヘリタンスの問題というような、単純な問題について一連のチェックを行なう。第3パスでは、コード内の各メソッド(method)毎に、データ・フロー分析を行い、当該メソッドでどのパス(path)を通ったかには係らず、1組の制約を常に維持する。これらの制約は、システム制限を超えて増大してはならないオペランド・スタックのサイズ、およびメソッドを呼び出す引数の数およびタイプを含む。加えて、第3パスと関連付けて、またはオプションとして第4パスとして実行可能な一連のチェックがあり、これには、言語レベルのセキュリティ制約事項に対する違反、不一致のフィールド・タイプに対するオブジェクトの割り当て、およびコールされたメソッドが実際に存在することの検証が含まれる。」
「 【0006】
実行環境150は、限定する訳ではないが、通常の中央演算装置(CPU)またはバイト・コード解釈環境である。システム100の実行環境150は、「信認」記憶装置完全性検証部160、CPU170およびメモリ180を備えている。CPU170は、「信認」記憶装置完全性検証部160に結合されており、メモリ180はCPU170に結合されている。実行環境150がコンピュータ読み取り可能命令ストリームを実行する前に、実行環境150はコンピュータ読み取り可能命令ストリームを「信認」記憶装置140から読み出し、「信認」記憶装置完全性検証部160は、「信認」記憶装置140の完全性を検証し、コンピュータ読み取り可能命令ストリームが、「信認」記憶装置140に入力される前に、変更されなかったことを保証する。
【0007】
「信認」記憶装置140の完全性を検証することができない場合、コンピュータ読み取り可能命令ストリームは、「信認」記憶装置140に入力された後に変更されており、実行環境150における実行の前に、実行時セキュリティ制約事項にしたがって再度検証する必要がある。「信認」記憶装置140の完全性が検証された場合(即ち、コンピュータ読み取り可能命令ストリームが、「信認」記憶装置140内に格納されて以来変更されていない)、コンピュータ読み取り可能命令ストリームは、実行時セキュリティ制約事項の追加検証を行なうことなく、実行される。」
「 【0009】
あるいは、システム100は、第2図に示すように、サーバ200を備えることも可能である。かかる構成では、コンパイラ120は構築環境110内に位置し、セキュリティ制約事項検証部120および「信認」記憶装置140がサーバ200内に位置する。サーバ200は、コンピュータ読み取り可能命令ストリームの実行のために、「信認」記憶装置140を実行環境150に移すこともでき、あるいは、第3図に示すように、サーバ200は、安全通信チャネル300を通じて、コンピュータ読み取り可能命令ストリームを直接実行環境150に送ることができる。
【0010】
構築環境110は、オプションとして、「非信認」記憶装置(untrusted storage)210を備え、コンピュータ読み取り可能命令ストリームが実行環境150の実行時セキュリティ制約事項に違反していないか否かについて判断する前に、コンピュータ読み取り可能命令ストリームを格納することができる。
【0011】
更に、実行環境は、オプションとして、送受信機220を備え、サーバ200からのコンピュータ読み取り可能命令ストリームの読み出し、および実行時セキュリティ制約事項の検証に合格した後のコンピュータ読み取り可能命令ストリームの受信を行なうことができる。
【0012】
第4図は、構築環境110における本発明の方法を表すフロー・チャートである。動作において、プログラマは、ステップ400で通常通りに(例えば、ソース・ファイルをエディットし、コンパイラを用いてコンピュータ読み取り可能命令ストリームをコンパイルする)、コンピュータ読み取り可能命令ストリームを作成する。
【0013】
ステップ400においてコンピュータ読み取り可能命令ストリームを作成した後、ステップ410において、検証ツールを用いて、システム100のセキュリティ制約事項に対して必要なセキュリティ・チェックの全てを行なう。システム100のセキュリティ制約事項に対するセキュリティ・チェックの中には、実行環境150内のメモリ領域に対するアクセスのチェック、実行環境150内のファイルに対するアクセスのチェック、および資源要求が実行環境150の限界を超えていることのチェック(例えば、コンピュータ読み取り可能命令ストリームが、実行環境内で利用可能以上のメモリを割り当てない)が含まれる。
【0014】
ステップ410における検証ステップを実行した後、ステップ420において、コンピュータ読み取り可能命令ストリームが検証に合格したか否か判断する。ステップ420においてコンピュータ読み取り可能命令ストリームが検証に合格しなかったと判断した場合、コンピュータ読み取り可能命令ストリームを破棄し、ステップ400において新たなコンピュータ読み取り可能命令ストリームを作成する。ステップ420においてコンピュータ読み取り可能命令ストリームが検証に合格したと判断した場合、好ましくは、ステップ430においてこれを「信認」記憶装置140内に格納することにより、実行環境150において実行するときに、コンピュータ読み取り可能命令ストリームはバイトコード検証に合格したことを示す。
【0015】
ステップ430は好ましいが、必須ではないことを注記するのは重要である。ステップ420において一旦コンピュータ読み取り可能命令ストリームが検証に合格したと判断された場合、実行のために実行環境150に送ることができる。しかしながら、好ましくは、第4図に示すように、ステップ420において一旦コンピュータ読み取り可能命令ストリームが検証に合格したなら、これを「信認」記憶装置140に格納し、後に実行環境150によって読み出すようにする。検証に合格した後にコンピュータ読み取り可能命令ストリームを「信認」記憶装置140に格納することの主要な利点の1つは、「信認」記憶装置140内にある間コンピュータ読み取り可能命令ストリームが変更されないままであった場合(コンピュータ読み取り可能命令ストリームが変更されていないことの判断は、以下で説明する)、実行環境150は、これを多数回読み出して実行することができ、実行環境150またはその他のいずれかの適当な環境または媒体もこれ以上セキュリティ制約事項の検証を行なう必要がないことである。」
「 【0018】
更に、検証ツールをサーバ200内に実装し、コンピュータ読み取り可能命令ストリームを第2図に示すような実行環境150に転送する前に、システム100のセキュリティ制約事項に対して必要なセキュリティ・チェックの全ての検証を実行することも可能である。例えば、構築環境110において、コンピュータ読み取り可能命令ストリームをコンパイルし、「非信認」記憶装置210に格納する。その後「非信認」記憶装置210の内容はサーバ200に転送され、実行環境150がコンピュータ読み取り可能命令ストリームの読み出しを要求するまで、サーバ200上に格納されている。一旦サーバ200が、コンピュータ読み取り可能命令ストリームを読み出す要求を実行環境150から受信したなら、実行環境150に送出する前に、サーバ200は、検証ツールを用いて、システム100のセキュリティ制約事項に対して必要なセキュリティ・チェックの全てを、コンピュータ読み取り可能命令ストリームに実行する。コンピュータ読み取り可能命令ストリームが検証に合格した場合、これを実行環境150に送出し、好ましくは、後の使用のために「信認」記憶装置140に格納する。コンピュータ読み取り可能命令ストリームが「非信認」記憶装置140内で無変更のままでいる限り、今後実行環境150によって要求されるときに、これ以降実行時セキュリティ制約事項の検証を迂回しても、コンピュータ読み取り可能命令ストリームが実行環境150に対して悪影響を及ぼすことはない。
【0019】
尚、実行環境150から要求を受信する前に、コンピュータ読み取り可能命令ストリームをサーバ200が検証し、「信認」記憶装置140に入力可能であることを注記しておく。したがって、実行環境150は、「信認」記憶装置140の完全性を検証し、「信認」記憶装置140から直接コンピュータ読み取り可能命令ストリームを受信する。」
「 【0021】
第5図は、実行環境における本発明の方法を表すフロー・チャートを示す。動作において、実行環境150は、「信認」記憶装置140が実行環境150から離れて位置する場合、コンピュータ読み取り可能命令ストリームを有する「信認記憶装置140を検索する。次に、実行環境150は、「信認」記憶装置140の完全性を検証する(即ち、システムのセキュリティ制約事項に対して必要なセキュリティ・チェックの全てに合格した後、コンピュータ読み取り可能命令ストリームが変更されていないことを検証する)。例えば、「信認」記憶装置140が、ディジタル署名またはメッセージ・ダイジェスト(message digest)が添付されたアーカイブである場合、ステップ500において実行環境150がこのアーカイブを検索し、ステップ510および520において、当技術分野では既知の暗号技術またはそれ以外のいずれかの適切な技術を用いて、認証のためにディジタル署名またはメッセージ・ダイジェストをチェックし、アーカイブ内のコンピュータ読み取り可能命令ストリームが変更されていないことを検証する。」
「【図2】
[図:0001419996000001.jpg]
」
「【図4】
[図:0001419996000002.jpg]
」
(2)引用発明
ア 引用文献1の【0002】及び【0003】より、引用文献1には、「実行時セキュリティ制約事項を有する実行環境150において、コンピュータ読み取り可能命令ストリームを実行するための時間および電力要求量を低減するシステム100」における「方法」が記載されているといえる。
イ 引用文献1の【0003】、【0006】、【0009】~【0011】、【0018】及び【図2】より、引用文献1には、「検証ツールをサーバ200内に実装し、コンピュータ読み取り可能命令ストリームを第2図に示すような実行環境150に転送する前に、システム100のセキュリティ制約事項に対して必要なセキュリティ・チェックの全ての検証を実行する」(【0018】)実施例として、「システム100」が、「構築環境110」、「サーバ200」及び「実行環境150」を備えること、「構築環境110」が、「コンパイラ120」及び「「非信認」記憶装置210」を備えること、「サーバ200」が、「セキュリティ制約検証部130」及び「「信認」記憶装置140」を備えること、「実行環境150」が、「通常の中央演算装置(CPU)またはバイト・コード解釈環境」であり、「「信認」記憶装置完全性検証部160」、「CPU170」、「メモリ180」及び「送受信機220」を備えることが記載されている。
この実施例において、「サーバ200」が備える「セキュリティ制約検証部130」は「検証ツール」として使用されているといえる。
ウ 引用文献1には、【0018】に記載の「一旦サーバ200が、コンピュータ読み取り可能命令ストリームを読み出す要求を実行環境150から受信したなら、実行環境150に送出する前に、サーバ200は、検証ツールを用いて、システム100のセキュリティ制約事項に対して必要なセキュリティ・チェックの全てを、コンピュータ読み取り可能命令ストリームに実行する」との構成に替えて、【0019】に記載の「実行環境150から要求を受信する前に、コンピュータ読み取り可能命令ストリームをサーバ200が検証し、「信認」記憶装置140に入力」するという代替の構成が記載されている。
また、引用文献1の【0012】に記載の「プログラマは、ステップ400で通常通りに(例えば、ソース・ファイルをエディットし、コンパイラを用いてコンピュータ読み取り可能命令ストリームをコンパイルする)、コンピュータ読み取り可能命令ストリームを作成する」を参酌すれば、引用文献1の【0018】に記載の「構築環境110において、コンピュータ読み取り可能命令ストリームをコンパイル」とは、構築環境110において、コンパイラ120を用いて、プログラマがエディットしたソース・ファイルからコンピュータ読み取り可能命令ストリームを作成する処理であると認められる。
また、引用文献1の【0004】の記載「セキュリティ制約事項検証部130は、コンパイラ120に結合され、コンピュータ読み取り可能命令ストリームが、実行環境150の実行時セキュリティ制約事項に違反しないことを検証する」と、引用文献1の【0013】によれば、「サーバ200」が備える、「検証ツール」としての「セキュリティ制約検証部130」は、「コンピュータ読み取り可能命令ストリーム」の「検証」として、「実行環境150内のメモリ領域に対するアクセスのチェック、実行環境150内のファイルに対するアクセスのチェック、および資源要求が実行環境150の限界を超えていることのチェック」を含む「システム100のセキュリティ制約事項に対して必要なセキュリティ・チェックの全て」を行うことが記載されている。
よって、引用文献1の【0018】及び【0019】には、構築環境110において、コンパイラ120を用いて、プログラマがエディットしたソース・ファイルからコンピュータ読み取り可能命令ストリームを作成し、「非信認」記憶装置210に格納し、その後「非信認」記憶装置210の内容はサーバ200に転送され、実行環境150がコンピュータ読み取り可能命令ストリームの読み出しを要求するまで、サーバ200上に格納され、実行環境150から要求を受信する前に、コンピュータ読み取り可能命令ストリームの検証として、サーバ200が備える検証ツールとしてのセキュリティ制約検証部130が、実行環境150内のメモリ領域に対するアクセスのチェック、実行環境150内のファイルに対するアクセスのチェック、および資源要求が実行環境150の限界を超えていることのチェックを含む、システム100のセキュリティ制約事項に対して必要なセキュリティ・チェックの全てを行い、「信認」記憶装置140に入力することが記載されているといえる。
エ 引用文献1の【0021】より、引用文献1には、実行環境150は、「信認」記憶装置140の完全性を検証するために、既知の暗号技術またはそれ以外のいずれかの適切な技術を用いて、認証のためにディジタル署名またはメッセージ・ダイジェストをチェックし、コンピュータ読み取り可能命令ストリームが変更されていないことを検証することが記載されているといえる。
オ 引用文献1の【0007】より、引用文献1には、「「信認」記憶装置140の完全性が検証された場合(即ち、コンピュータ読み取り可能命令ストリームが、「信認」記憶装置140内に格納されて以来変更されていない)、コンピュータ読み取り可能命令ストリームは、実行時セキュリティ制約事項の追加検証を行なうことなく、実行される」ことが記載されている。
カ 引用文献1の【0002】より、引用文献1には、引用文献1に係る発明が「JavaTM Virtual Machineを含む、実行時セキュリティ制約事項を有するあらゆる実行環境に適用可能」であること、及び、引用文献1の【0004】より、引用文献1には、「JavaTMプログラミングの具体的な場合では、検証ツールはクラス・ファイルおよび/またはバイトコード検証プロセスを実行する」ことが記載されているといえる。
以上のア~カ及び上記(1)より、引用文献1には、次の発明(以下、「引用発明」という。)が記載されていると認められる。(なお、「バイト・コード」と「バイトコード」との表記の揺れについては、「バイトコード」に統一した。)
「 実行時セキュリティ制約事項を有する実行環境150において、コンピュータ読み取り可能命令ストリームを実行するための時間および電力要求量を低減するシステム100における方法であって、
システム100は、構築環境110、サーバ200及び実行環境150を備え、
構築環境110は、コンパイラ120及び「非信認」記憶装置210を備え、サーバ200は、検証ツールとしてのセキュリティ制約検証部130及び「信認」記憶装置140を備え、実行環境150は、通常の中央演算装置(CPU)またはバイトコード解釈環境であり、「信認」記憶装置完全性検証部160、CPU170、メモリ180及び送受信機220を備え、
構築環境110において、コンパイラ120を用いて、プログラマがエディットしたソース・ファイルからコンピュータ読み取り可能命令ストリームを作成し、「非信認」記憶装置210に格納し、その後「非信認」記憶装置210の内容はサーバ200に転送され、実行環境150がコンピュータ読み取り可能命令ストリームの読み出しを要求するまで、サーバ200上に格納され、実行環境150から要求を受信する前に、コンピュータ読み取り可能命令ストリームの検証として、サーバ200が備える検証ツールとしてのセキュリティ制約検証部130が、実行環境150内のメモリ領域に対するアクセスのチェック、実行環境150内のファイルに対するアクセスのチェック、および資源要求が実行環境150の限界を超えていることのチェックを含む、システム100のセキュリティ制約事項に対して必要なセキュリティ・チェックの全てを行い、「信認」記憶装置140に入力し、
実行環境150は、「信認」記憶装置140の完全性を検証するために、既知の暗号技術またはそれ以外のいずれかの適切な技術を用いて、認証のためにディジタル署名またはメッセージ・ダイジェストをチェックし、コンピュータ読み取り可能命令ストリームが変更されていないことを検証し、
「信認」記憶装置140の完全性が検証された場合(即ち、コンピュータ読み取り可能命令ストリームが、「信認」記憶装置140内に格納されて以来変更されていない)、コンピュータ読み取り可能命令ストリームは、実行時セキュリティ制約事項の追加検証を行なうことなく、実行され、
JavaTM Virtual Machineを含む、実行時セキュリティ制約事項を有するあらゆる実行環境に適用可能であり、JavaTMプログラミングの具体的な場合では、検証ツールはクラス・ファイルおよび/またはバイトコード検証プロセスを実行する、
方法。」
2 引用文献2について
引用文献2には、図面とともに、以下の事項が記載されている。
「 【0014】
クラス・ローダおよびバイトコード検証器(「クラス・ローダ」)103は、必要に応じてJavaバーチャル・マシンに、バイトコード・クラス・ファイル102をロードすること、ならびにクラス・ライブラリ104をサポートすることを担う。クラス・ローダ103はまた、各クラスのバイトコードを検証して、セキュリティ規則の適切な実行および実施を維持する。実行時システム108のコンテキスト内では、バイトコードが、ハードウェア110内のプロセッサ(または複数のプロセッサ)によって実行され得るように、インタープリタ106がバイトコードを直接に実行するか、または「ジャスト・イン・タイム」(JIT)コンパイラ107がバイトコードをマシン・コードに変換するかのいずれかである。例えば、リンクされたライブラリ111という形式のネイティブ・コードは、関連付けられたネイティブ・メソッドを含むクラス(例えば、クラス・ライブラリ104からの)がバーチャル・マシン内でインスタンス化されたときにロードされる。」
3 引用文献3(引用文献A)について
引用文献3(原査定における引用文献A)には、図面とともに、以下の事項が記載されている。
「【0122】[Java開発環境1]Java開発環境1において、Javaコンパイラ3は、あらかじめ作成されたJavaソースコード2をコンパイルし、Javaバイトコード4を生成する。生成されたJavaバイトコード5は、ネットワークにより、あるいは、記録媒体に記録され、媒体5を介してクライアント装置6に対して送られる。なお、Javaバイトコード4は、コンピュータのハードウェアおよび実行環境に関わらず実行可能なJavaプログラムの表現形式である。
【0123】[クライアント装置6]クライアント装置6は、Java開発環境1から媒体5を介して供給されたJavaバイトコード4を、WWWブラウザ、WWWサーバ等のJavaVM7により実行する。
【0124】[Javaバイトコード検証部8]クライアント装置6において、Javaバイトコード検証部8は、Java開発環境1から媒体5を介してクライアント装置6に送られてきたJavaバイトコード4をバイトコード検証し、Javaバイトコードの仕様を満たしているか否かを判断し、仕様を満たしている場合には、Javaインタプリタ9およびJITコンパイラ10に対して出力する。
【0125】[Javaインタプリタ9]Javaインタプリタ9は、Javaバイトコード検証部8から入力されたJavaバイトコードをインタプリタ方式により実行する。
【0126】[JITコンパイラ10]JITコンパイラ10は、Javaバイトコード検証部8から入力されたJavaバイトコード高速実行するために、ハードウェア13が実行可能なマシンコード(オブジェクトコード)11に変換し、実行させる。」
4 引用文献Bについて
引用文献Bには、図面とともに、以下の事項が記載されている。
【0045】RTOS701上のもう一方に位置するJVM709は、公知のJava(R)インタプリタ環境である。Java(R)インタプリタ環境は、Java(R)仮想機械と一群のクラスライブラリのセットからなり、その上で動作するJava(R)言語で記述されたソフトウェアモジュールのための動作環境を提供する。Java(R)インタプリタ環境は、Java(R)言語で記述されたプログラムをコンパイルした結果生成されるバイトコードと呼ばれるインタプリタ用命令列の中間表現を、実行時に動的に読み込むことができる。Java(R)仮想機械と呼ばれるJava(R)のインタプリタは読み込んだ
5 引用文献Cについて
引用文献Cには、図面とともに、以下の事項が記載されている。
【0009】
最適化処理部100は、ソースプログラムを外部から受け取り、例えば、データフロー最適化や、関数やメソッドのインライニング等の、各種の最適化を行うことにより当該ソースプログラムを変換し、レジスタ割当装置200に送る。レジスタ割当装置200は、ソースプログラムを最適化処理部100から受け取ると、当該ソースプログラム中で用いられる変数を、プロセッサにより実行可能な命令列中のレジスタに割り当て、当該命令列を実行コード生成部900に送る。実行コード生成部900は、命令列をレジスタ割当装置200から受け取り、当該命令列をプロセッサにより実行可能なデータ形式に変換し、外部に出力する。ここで、ソースプログラムとは、例えば、Java(サン・マイクロシステムズ・インコーポレーテッドの登録商標)やC言語等の表層言語で記述されたプログラムである。また、ソースプログラムとは、表層言語に所定の変換を行った、Javaバイトコードや、RTL(Register Transfer Languageの略)等の中間表現(例えば、Intermediate Representation)であってもよい。また、ソースプログラムとは、これらの表現により記述されたプログラムの全体であってもよいし、当該プログラムの一部であって、特定の処理のみを行うモジュールやオブジェクトであってもよい。
6 引用文献Dについて
引用文献Dには、図面とともに、以下の事項が記載されている。
「【0003】
インタープリタは、別のプログラムを解釈実行するプログラムの総称であり、プログラムの可搬性を高めるためにインタープリタによる実行方式が採用されることが多い。インタープリタ型の言語では、プログラムの実行がインタープリタと呼ばれるプログラムによって行われるため、インタープリタ実行されるプログラムで発生した不正メモリ参照などの問題を検出することが容易である。このようなプログラミング言語の代表として、Java(R)(非特許文献1: J. Gosling他, Java Language Specification, Sun Microsystems, 2000.)を挙げることができる。Javaで記述されたアプリケーションは、一旦バイトコードと呼ばれる中間表現に変換されJava仮想マシンと呼ばれるソフトウェアによってバイトコードが解釈実行される。」
7 引用文献Eについて
引用文献Eには、図面とともに、以下の事項が記載されている。
「
[図:0001419996000003.jpg]
」
8 引用文献Fについて
引用文献Fには、図面とともに、以下の事項が記載されている。
「【0025】
したがって、こうしたリプログラマブル・システムは、システムが使用開始された後に、アプレットのダウンロード操作によって実行可能プログラムを機能強化する可能性を追加する。ダウンロードされることになるアプレットは、この例では、仮想マシン用の中間コード、典型的にはカードのメモリに常駐するJava(登録商標)仮想マシンのサブアセンブリからなるオリジナルの実行可能コードCIの形を取る。それ故、中間コードCIが生成されると、中間コードCIがトロイの木馬を含んでいないかどうかを検証するために、監査プログラムが実行開始される。
【0026】
中間コードCIが実際にこの種のどのような悪意あるプログラムも含んでいない場合、監査プログラムは中間コードCIに署名する。暗号化署名SIGNは、当業者が使用可能ないずれかの電子署名機構を使用して実行することができる。次に、署名された中間コードCIは任意のJava(登録商標)Card上で使用可能となり、したがって、その無害性を証明し、ダウンロード時にカードによって検証可能な署名SIGNを所有する。電子署名の検証は、署名が有効であるかどうかの検証からなる。」
9 引用文献Gについて
引用文献Gには、図面とともに、以下の事項が記載されている。
「【0023】サービス提供ホスト3は、エージェントの起動要求を受け付ける起動要求受付部31と、クラスコード登録配布サーバ1から署名付きクラスコードと証明書を取得する署名付きクラスコード取得部32と、クラスコード登録配布サーバ1から送信された署名付きクラスコードの署名を検証する署名検証部33と、他のサービス提供ホスト3から送信される、シリアライズデータとメッセージダイジェストを受信するデータ受信部34と、クラスコードとメッセージダイジェストとが組になり格納されるデータベース35と、クラスコードとメッセージダイジェストの組をデータベース35へ格納する格納処理部36と、データベース35に格納されたクラスコードでオブジェクトを生成するオブジェクト生成部37と、処理を行った後のオブジェクトをシリアライズするシリアライズ部38と、シリアライズデータとメッセージダイジェストとを、移動先のサービス提供ホスト3へ送信するデータ送信部39とを備える。なお、署名検証部33は、クラスコード作成者の証明書を発行した認証局4の公開鍵を予めダウンロードして備えていて、クラスコード作成者の公開鍵を証明書から取り出せるようになっている。
【0024】図2は、クラスコード登録配布サーバ1のクラスコード登録処理を説明するためのフローチャートである。なお、サービス登録端末2に入力されたクラスコードには、署名付与部21がクラスコード作成者の署名を付与する。つまり、クラスコードにハッシュ関数Hによる圧縮処理を行ってメッセージダイジェストを生成し、このメッセージダイジェストをクラスコード作成者の秘密鍵(公開鍵と対をなす鍵)で暗号化し、暗号化後の情報、つまり署名をクラスコードに付加する。なお、クラスコードが70Kbyte(キロバイト)のときは、メッセージダイジェストやその署名は20byte程度の大きさとなる。そして、署名付きクラスコード登録要求部22が、クラスコード登録配布サーバ1へクラスコードの登録要求を行うのだが、その際には、署名付きクラスコードと証明書とを送信する。」
10 引用文献Hについて
引用文献Hには、図面とともに、以下の事項が記載されている。
(第2欄30~32行)
「9は検査部であって、中間コード12を参照し、対象とする言語仕様上特定の機能を使用しているか否かを検査し、もし使用されていれば利用者に通知する。」
第6 当審拒絶理由2についての判断
1 理由1(新規事項)について
本件補正2により、明細書の【0020】及び【0021】の記載は、当初明細書に記載されたとおりのものとなった。
よって、理由1(新規事項)は、解消した。
2 理由2(明確性要件)及び理由3(サポート要件)について
本件補正2により、請求項1及び2の記載において、「ソフトウェア開発装置が前記中間表現から実行コードを生成するステップ」及び「前記生成された実行コードをコントローラに提供するステップ」が特定され、請求項6及び7の記載において、「前記ソフトウェア開発装置は、前記中間表現が前記所定の規定あるいは規約を満たしている場合に、前記中間表現から実行コードを生成する手段と、前記生成された実行コードをコントローラに提供する手段とを備え」との構成が特定されたので、請求項1ないし7に係る発明において、「ソフトウェア開発装置」が「実行コード」を「コントローラ」に提供することが明確となった。
よって、理由2(明確性要件)及び理由3(サポート要件)はいずれも解消した。
第7 当審拒絶理由1についての判断
1 理由1(明確性要件)について
(1)本件補正2により、「中間表現」が「Javaバイトコード」を除き、かつ、明細書の【0020】及び【0021】を満たすものであることが明確となったため、請求項1ないし7に係る「ソースコード」及び「中間表現」がどのようなものであるのかが明確となった。
(2)本件補正2により、「実行コード」が「コントローラ」に提供されることが明確となった。
以上から、理由1(明確性要件)は、解消した。
2 理由2(実施可能要件)について
本件補正2により、請求項1ないし7に係る発明は、「バックドア」の有無の検証を行うことが含まれないものとなった。
よって、理由2(実施可能要件)は、解消した。
3 理由3(進歩性)について
(1)本願発明1について
ア 対比
本願発明1と引用発明とを対比する。
(ア) 引用発明の「ソース・ファイル」は、本願発明1の「ソースコード」を含むものと認められる。
また、引用発明の「プログラマがエディットしたソース・ファイル」は、プログラマ(ユーザ)の操作に従って、「ソース・ファイル」をエディット(作成)する処理の存在を前提としていることは明らかである。
よって、引用発明が前提とする、プログラマ(ユーザ)の操作に従って、「ソース・ファイル」をエディット(作成)する処理は、本願発明1の「ユーザ操作に従ってソースコードを作成するステップ」に相当する。
(イ) 引用発明は、「JavaTM Virtual Machineを含む、実行時セキュリティ制約事項を有するあらゆる実行環境に適用可能」であり、「JavaTMプログラミングの具体的な場合では、検証ツールはクラス・ファイルおよび/またはバイトコード検証プロセスを実行する」ものであるところ、引用発明の「ソース・ファイル」は、必ずしも「JavaTMプログラミング」言語で記述されたものに限定されておらず、それ以外の言語で記述され、「JavaTMプログラミング」言語で記述されたものと同様の性質を有したものも含み得る。
また、引用発明の「サーバ200が備える検証ツールとしてのセキュリティ制約検証部130」は、「コンピュータ読み取り可能命令ストリームの検証」として「バイトコード」を対象とする場合を含む。すなわち、この場合は、「コンピュータ読み取り可能命令ストリーム」は「バイトコード」で構成されたものといえる。
そうすると、引用発明において、「コンパイラ120を用いて、プログラマがエディットしたソース・ファイルからコンピュータ読み取り可能命令ストリームを作成」する処理は、「コンパイラ120」により、「ソース・ファイル」から「バイトコード」で構成された「コンピュータ読み取り可能命令ストリーム」を作成する場合を含むこととなる。そして、「ソース・ファイル」が必ずしも「JavaTMプログラミング」言語で記述されたものに限定されていない以上、当該「ソース・ファイル」から生成される「バイトコード」は、「Javaバイトコード」以外のものであって、「Javaバイトコード」と同様の性質を有したものも含み得る。
そして、引用発明において、「コンパイラ120」により「JavaTMプログラミング」言語で記述された「ソース・ファイル」から作成される「バイトコード」は、仮想マシンである「JavaTM Virtual Machine」を含む実行環境において実行されるものであり、かつ、さらに実行コードにコンパイルされ得るものであることは、本願出願時における技術常識であるところ、本願明細書の【0020】及び【0021】に記載された、本願発明1に係る「中間表現」の定義に合致するものである。そうすると、引用発明における「バイトコード」が「JavaTMプログラミング」言語の「ソース・ファイル」以外のものから生成されるものであっても、本願発明1に係る「中間表現」の定義に合致するものを包含するものと認められる。
よって、引用発明における「バイトコード」で構成された「コンピュータ読み取り可能命令ストリーム」は、本願発明1の「中間表現(ただし、Javaバイトコードを除く)」に相当し、引用発明において、「コンパイラ120」により、「ソース・ファイル」から「バイトコード」で構成された「コンピュータ読み取り可能命令ストリーム」を作成する処理は、本願発明1の「前記ソースコードから中間表現(ただし、Javaバイトコードを除く)を生成するステップ」に相当する。
(ウ) 引用発明において、「コンピュータ読み取り可能命令ストリームの検証として、サーバ200が備える検証ツールとしてのセキュリティ制約検証部130が、実行環境150内のメモリ領域に対するアクセスのチェック、実行環境150内のファイルに対するアクセスのチェック、および資源要求が実行環境150の限界を超えていることのチェックを含む、システム100のセキュリティ制約事項に対して必要なセキュリティ・チェックの全て」を行うことにおいて、「実行環境150内のメモリ領域に対するアクセスのチェック、実行環境150内のファイルに対するアクセスのチェック、および資源要求が実行環境150の限界を超えていることのチェックを含む、システム100のセキュリティ制約事項に対して必要なセキュリティ・チェックの全て」は、本願発明1の「所定の規定あるいは規約を満たしているか否かを検証する」ことに相当する。
そして、上記(イ)で述べたように、引用発明において、「コンピュータ読み取り可能命令ストリーム」は「バイトコード」で構成される場合を含む。
よって、引用発明において、「コンピュータ読み取り可能命令ストリームの検証として、サーバ200が備える検証ツールとしてのセキュリティ制約検証部130が、実行環境150内のメモリ領域に対するアクセスのチェック、実行環境150内のファイルに対するアクセスのチェック、および資源要求が実行環境150の限界を超えていることのチェックを含む、システム100のセキュリティ制約事項に対して必要なセキュリティ・チェックの全て」を行うことは、本願発明1の「前記中間表現が所定の規定あるいは規約を満たしているか否かを検証するステップ」に相当する。
(エ) 引用発明における「構築環境110」及び「サーバ200」は、本願発明1の「ソフトウェア開発装置」に相当する。
引用発明における「システム100のセキュリティ制約事項に対して必要なセキュリティ・チェックの全てを行い、「信認」記憶装置140に入力し」及び「「信認」記憶装置140の完全性が検証された場合(即ち、コンピュータ読み取り可能命令ストリームが、「信認」記憶装置140内に格納されて以来変更されていない)、コンピュータ読み取り可能命令ストリームは、実行時セキュリティ制約事項の追加検証を行なうことなく、実行され」との構成によれば、「セキュリティ・チェック」を通らなかった「コンピュータ読み取り可能命令ストリーム」(バイトコード)は、「「信認」記憶装置140」に入力されず、その結果、「実行環境150」において実行されないことは明らかであるところ、逆に、「実行環境150」は、「セキュリティ・チェック」により検証された「コンピュータ読み取り可能命令ストリーム」(バイトコード)は、「「信認」記憶装置140内に格納されて以来変更されていない」ことが保証された場合には、その実行を実現するものと認められる。
また、引用発明において、「セキュリティ・チェック」により検証されることは、本願発明1において、「前記中間表現が前記所定の規定あるいは規約を満たしている場合」に相当する。
なお、引用発明において、「実行環境150」は「通常の中央演算装置(CPU)またはバイトコード解釈環境」であるところ、「バイトコード」をどのように実行するのか具体的に特定していない。
また、本願発明1において、「実行コード」の生成は、「中間表現」の実行を可能とするものといえる。
よって、引用発明において、「セキュリティ・チェック」により検証された「コンピュータ読み取り可能命令ストリーム」(バイトコード)の実行を実現することと、本願発明1の「前記中間表現が前記所定の規定あるいは規約を満たしている場合に、ソフトウェア開発装置が前記中間表現から実行コードを生成するステップ」とは、「前記中間表現が前記所定の規定あるいは規約を満たしている場合に、ソフトウェア開発装置が前記中間表現に係る実行を実現するステップ」である点において共通する。
(オ) 引用発明の「実行時セキュリティ制約事項を有する実行環境150において、コンピュータ読み取り可能命令ストリームを実行するための時間および電力要求量を低減するシステム100における方法」は、後述する相違点を除き、本願発明1の「情報処理方法」に相当する。
イ 一致点、相違点
前記(1)より、本願発明1と引用発明は、次の点において一致ないし相違する。
○一致点
「 ユーザ操作に従ってソースコードを作成するステップと、
前記ソースコードから中間表現(ただし、Javaバイトコードを除く)を生成するステップと、
前記中間表現が所定の規定あるいは規約を満たしているか否かを検証するステップと、
前記中間表現が前記所定の規定あるいは規約を満たしている場合に、ソフトウェア開発装置が前記中間表現に係る実行を実現するステップとを備える、
情報処理方法。」
○相違点
(相違点1)
本願発明1は、「前記中間表現が前記所定の規定あるいは規約を満たしている場合に、ソフトウェア開発装置が前記中間表現から実行コードを生成するステップと、前記生成された実行コードをコントローラに提供するステップ」とを含むのに対して、引用発明において、「サーバ200」は、「コンピュータ読み取り可能命令ストリーム」(バイトコード)を「実行環境15」に提供するものであるところ、「実行コード」を生成し、提供するものではなく、かつ、「実行環境15」は、「コントローラ」であることを具体的に特定していない点。
(相違点2)
本願発明1において、「前記所定の規定あるいは規約を満たしているか否かを検証するステップ」は、「未定義動作が存在するか否かを検証するステップと、エラー処理構文が欠如しているか否かを検証するステップと、無秩序なエラー処理が含まれるか否かを検証するステップと、のうち少なくとも1つ」を含むのに対し、引用発明における「セキュリティ・チェック」は、「実行環境150内のメモリ領域に対するアクセスのチェック、実行環境150内のファイルに対するアクセスのチェック、および資源要求が実行環境150の限界を超えていることのチェック」を含むものである点。
ウ 相違点についての判断
上記相違点1について検討するに、相違点1に係る本願発明1の構成は、引用文献2及び3並びに引用文献BないしGのいずれにも記載がなく、本願出願時における技術常識とも認められない。
よって、上記相違点2について判断するまでもなく、本願発明1は、当業者であっても、引用文献1に記載された発明、他の提示文献に記載された事項、その他の周知技術等に基いて容易に発明をすることができたものであるとはいえない。
2 本願発明2について
上記1の検討を踏まえると、本願発明2と引用発明とは、以下の点において一致ないし相違する。
○一致点
「 ユーザ操作に従ってソースコードを作成するステップと、
前記ソースコードから中間表現(ただし、Javaバイトコードを除く)を生成するステップと、
前記中間表現が所定の規定あるいは規約を満たしているか否かを検証するステップと、
コードを実行手段に提供するステップとを備え、
前記コードは、前記中間表現が前記所定の規定あるいは規約を満たしている場合に、前記実行手段での実行が許可されるように生成されている、
情報処理方法。」
○相違点
(相違点2-1)
本願発明2は、「ソフトウェア開発装置が前記中間表現から実行コードを生成するステップと、前記生成された実行コードをコントローラに提供するステップ」とを含み、「前記実行コードは、前記中間表現が前記所定の規定あるいは規約を満たしている場合に、前記コントローラでの実行が許可される」のに対して、引用発明において、「サーバ200」は、「コンピュータ読み取り可能命令ストリーム」(バイトコード)を「実行環境15」に提供するものであるところ、「実行コード」を生成し、提供するものではなく、かつ、「実行環境15」は、「コントローラ」であることを具体的に特定していない点。
(相違点2-2)
本願発明2において、「前記所定の規定あるいは規約を満たしているか否かを検証するステップ」は、「未定義動作が存在するか否かを検証するステップと、エラー処理構文が欠如しているか否かを検証するステップと、無秩序なエラー処理が含まれるか否かを検証するステップと、のうち少なくとも1つ」を含むのに対し、引用発明における「セキュリティ・チェック」は、「実行環境150内のメモリ領域に対するアクセスのチェック、実行環境150内のファイルに対するアクセスのチェック、および資源要求が実行環境150の限界を超えていることのチェック」を含むものである点。
上記相違点2-1について検討するに、相違点2-1に係る本願発明2の構成は、引用文献2及び3並びに引用文献BないしGのいずれにも記載がなく、本願出願時における技術常識とも認められない。
よって、上記相違点2-2について判断するまでもなく、本願発明2は、当業者であっても、引用文献1に記載された発明、他の提示文献に記載された事項、その他の周知技術等に基いて容易に発明をすることができたものであるとはいえない。
3 本願発明3ないし5について
本願発明3ないし5は、本願発明1又は2のいずれかの発明をすべて包含するものであって、相違点1に係る本願発明1の構成又は相違点2-1に係る本願発明2の構成を備えるものであるから、本願発明1又は本願発明2と同様の理由により、当業者であっても、引用文献1に記載された発明、他の提示文献に記載された事項、その他の周知技術等に基いて容易に発明をすることができたものであるとはいえない。
4 本願発明6及び7について
本願発明6、7はそれぞれ、本願発明1、2を「情報処理システム」の発明として特定したものであるから、本願発明1又は本願発明2と同様の理由により、当業者であっても、引用文献1に記載された発明、他の提示文献に記載された事項、その他の周知技術等に基いて容易に発明をすることができたものであるとはいえない。
第8 原査定についての判断
引用文献A(引用文献3)には、Java開発環境1が、Javaバイトコードを実行環境であるクライアント装置6に送信し、クライアント装置6が、JITコンパイラ10によりマシンコード(実行コード)に変換して実行することが記載されているところ、引用文献Aに記載された発明と本願発明1ないし7とは、少なくとも上記相違点1又は相違点2-1と同様の点において相違するといえる。加えて、引用文献Aに記載された発明は、Javaソースコード及びJavaバイトコードに特化した技術に関するものであるところ、本願発明1ないし7の「中間表現(ただし、Javaバイトコードを除く)」とも相違している。
そして、当業者であっても、引用文献BないしH並びに引用文献1及び2、本願出願時における技術常識を参酌しても上記各相違点を克服し得る理由を見いだすことはできない。
よって、本願発明1ないし7は、当業者であっても、拒絶査定において引用された引用文献AないしHに記載された発明に基いて、容易に発明をすることができたものとはいえない。
したがって、原査定の理由1を維持することはできない。
第9 むすび
以上のとおり、原査定の理由によっては、本願を拒絶することはできない。
また、他に本願を拒絶すべき理由を発見しない。
よって、結論のとおり審決する。
審決本文(J-PlatPat)
J-PlatPatの審決検索トップを開きます。番号入力で「審判番号」を選び、下の番号を貼り付けて検索してください。
J-PlatPat 審決検索を開く
2023-022052