• ポートフォリオ機能


ポートフォリオを新規に作成して保存
既存のポートフォリオに追加保存

  • この表をプリントする
PDF PDFをダウンロード
審決分類 審判 査定不服 2項進歩性 特許、登録しない。 G06F
管理番号 1336072
審判番号 不服2017-20  
総通号数 218 
発行国 日本国特許庁(JP) 
公報種別 特許審決公報 
発行日 2018-02-23 
種別 拒絶査定不服の審決 
審判請求日 2017-01-04 
確定日 2018-01-04 
事件の表示 特願2015-187668「モジュールの暗号化/復号化プログラム」拒絶査定不服審判事件〔平成28年 2月25日出願公開,特開2016- 28334〕について,次のとおり審決する。 
結論 本件審判の請求は,成り立たない。 
理由 第1 手続の経緯
本願は,平成23年9月20日に出願した特願2011-204370号の一部を,特許法44条1項の規定により,平成27年9月25日に新たな特許出願としたものであって,
平成27年9月25日付けで審査請求がなされ,平成28年8月25日付けで審査官により拒絶理由が通知され,これに対して同年9月12日付けで意見書が提出されたが,同年9月30日付けで審査官により拒絶査定がなされ,これに対して平成29年1月4日付けで審判請求がなされたものである。


第2 本願発明
本願請求項1に係る発明(以下「本願発明」という。)は,特許請求の範囲の請求項1に記載された次のとおりのものと認める。

「モジュールの集合体からなるプログラム本体であって,
各モジュールのうち少なくとも一つは非実行時には暗号化された状態であるプログラム本体と,
次に実行されるモジュールである次モジュールが,暗号化されている場合には,現在実行中のモジュールの終了前のタイミングにて演算装置が実行可能に復号化するための処理を計算機に実行させるための復号化プログラムと,からなるプログラム複合体。」


第3 引用例に記載の事項
1 引用例1に記載された事項
原審における平成28年8月25日付けの拒絶理由(以下「原審拒絶理由」という。)に引用された,本願の出願前に既に公知である,「鴨志田 昭輝,耐タンパーソフトウェアの構成手法に関する考察,電子情報通信学会技術研究報告,日本,社団法人電子情報通信学会,1997年12月19日,第97巻 第461号,p.69-p.78」(以下,「引用例1」という。)には,関連する図面と共に,次の事項が記載されている。

A 「4 提案要素技術
耐タンパーソフトウェアを実現する手法をいくつか提案する.

4.1 実行コードの分割と暗号化
攻撃者がプログラムの実行コードを得るのを困難にするために,実行コードを暗号化する.しかし,プログラムの実行時には実行される部分のコードは復号された状態でメモリ上に存在しなければならない.そこで,実行コードを大きさの等しい複数のブロックに分割し,アドレス指定を書換えてブロックの並ぶ順番を入れ換える.そして,実行中のブロックのみが復号された状態で一時的にメモリ上に存在するようにする.ブロックの実行が終了すると,その復号されたブロックをメモリ上から完全に消去し,同じメモリ上に次に実行するブロックを復号したものを配置する(上書きする).」(73ページ左欄下から3行乃至右欄上から14行)

B 「5.2 耐タンパーソフトウェアの構造
耐タンパーソフトウェアを実行するためのシステムとして以下の要素から構成されるものを本稿で提案する.図7に本稿で提案する耐タンパーソフトウェアの構成要素と構造を示す.

耐タンパーコード
ソフトウェアの本体にあたる部分.複数のブロックから構成される.暗号化されたブロックは,ブロックが実行される直前に復号される.復号して得られた平文のブロックは実行コード格納領域に格納される.平文のブロックが長時間メモリ中に存在しないように,実行終了後,次に実行される平文のブロックで上書きされる.

ブロック管理モジュール
耐タンパーコードからの要求を受けて,ブロックの管理を行うプログラム.ブロックを並列に実行したり,暗号化・復号の処理を行ったり,ブロックの実行が終了すると他のブロックに処理を移したりする.

変数領域
プログラム中で必要となるワークメモリ.プログラム中で使われる変数等の保存はブロック内ではなく変数領域内に保存する.

実行コード格納領域
復号されて得られた平文のブロックが格納されるメモリ.次に実行される平文のブロックにより上書きされる.複数のブロックを並列に動作させるような場合や,大量のデータをプログラムに埋込みそれを処理する必要がある場合等では,複数の実行コード格納領域を設ける.」(76ページ左欄8行乃至39行)

C 「5.3 耐タンパーコードの実行
耐タンパーコードは,n個のブロックB_(i)(ただし0≦i≦n-1)で構成されている.最初に実行されるブロックは先頭のブロックB_(0)であり,このブロックのみ最初にプログラム起動鍵K_(s)で復号され,実行コード格納領域に格納される.
あるブロックB_(i)に処理が移ったとき,鍵生成関数によって次に実行するブロックB_(i+1)を復号により得るための鍵が生成される.これを用いてB_(i+1)が得られ,B_(i)はB_(i+1)で上書きされるためB_(i)はメモリ上に存在しなくなる.そして処理がB_(i+1)に移ることになる.」(76ページ右欄1行乃至12行)

D 「図7



2 引用例2に記載された事項
原審拒絶理由において引用された,本願の出願前に既に公知である,特開2005-50196号公報(平成17年2月24日公開。以下,「引用例2」という。)には,関連する図面と共に,次の事項が記載されている。(下線は説明のために当審で付加。以下同様。)

E 「【0021】
(実施の形態1)
図1は,本発明の実施の形態1における暗号化プログラム実行装置の構成を示すブロック図である。図1において,分割プログラム記憶手段101は,プログラムを小さい単位に分割した分割プログラムを暗号化するか,あるいは分割のみ行った状態で分割プログラム識別子とを対応付けて記憶する。…(中略)…オーバレイローダ104は,分割プログラム記憶手段101に記憶している分割プログラムを,暗号化されている場合は復号して,ロード領域103にロードする。」

F 「【0030】
(ステップ2) ステップ1で,分割プログラムがロードされていないと判定された場合,分割プログラム記憶手段101から分割プログラムを読み出す。このとき,読み出された分割プログラムが暗号化されているならば,オーバレイローダ104は,これを復号する(S603)。(ステップ3)に進む。」


第4 引用例1に記載の発明
ア 上記Bの「耐タンパーソフトウェアを実行するためのシステムとして以下の要素から構成されるものを本稿で提案する.図7に本稿で提案する耐タンパーソフトウェアの構成要素と構造を示す.」との記載,及び「耐タンパーコード」を説明する「ソフトウェアの本体にあたる部分.複数のブロックから構成される.暗号化されたブロックは,ブロックが実行される直前に復号される.」との記載,並びに「ブロック管理モジュール」を説明する,「耐タンパーコードからの要求を受けて,ブロックの管理を行うプログラム.ブロックを並列に実行したり,暗号化・復号の処理を行ったり,ブロックの実行が終了すると他のブロックに処理を移したりする.」との記載から,
引用例1には“耐タンパーコード及びブロック管理モジュールを含む耐タンパーソフトウェアであって,
前記耐タンパーコードは,ソフトウェアの本体にあたり,複数のブロックから構成され,前記複数のブロックのうち暗号化されたブロックは,当該ブロックが実行される直前に復号され,
前記ブロック管理モジュールは,前記耐タンパーコードからの要求を受けて,前記ブロックの管理を行うプログラムであり,前記ブロックを並列に実行したり,暗号化・復号の処理を行ったり,ブロックの実行が終了すると他のブロックに処理を移したり”することが読み取れる。

イ 上記Cの「耐タンパーコードは,n個のブロックB_(i)(ただし0≦i≦n-1)で構成されている.」との記載,及び「あるブロックB_(i)に処理が移ったとき,鍵生成関数によって次に実行するブロックB_(i+1)を復号により得るための鍵が生成される.これを用いてB_(i+1)が得られ,B_(i)はB_(i+1)で上書きされるためB_(i)はメモリ上に存在しなくなる.そして処理がB_(i+1)に移ることになる.」との記載から,引用例1には,“耐タンパーコードは,n個のブロックB_(i)で構成され,あるブロックB_(i)に処理が移ったとき,鍵生成関数によって次に実行するブロックB_(i+1)を復号により得るための鍵が生成され,これを用いてB_(i+1)が得られ,処理がB_(i+1)に移る”ことを読取ることができる。

ウ 上記ア及びイの記載から,引用例1には次の発明(以下「引用発明」という。)が記載されているといえる。

「耐タンパーコード及びブロック管理モジュールを含む耐タンパーソフトウェアであって,
前記耐タンパーコードは,ソフトウェアの本体にあたり,複数のブロックから構成され,前記複数のブロックのうち暗号化されたブロックは,当該ブロックが実行される直前に復号され,
前記ブロック管理モジュールは,前記耐タンパーコードからの要求を受けて,前記ブロックの管理を行うプログラムであり,前記ブロックを並列に実行したり,暗号化・復号の処理を行ったり,ブロックの実行が終了すると他のブロックに処理を移したりするものであり,
前記耐タンパーコードは,n個のブロックB_(i)で構成され,あるブロックB_(i)に処理が移ったとき,鍵生成関数によって次に実行するブロックB_(i+1)を復号により得るための鍵が生成され,これを用いてB_(i+1)が得られ,処理がB_(i+1)に移る
耐タンパーソフトウェア。」


第5 本願発明と引用発明との対比
1 引用発明の,「耐タンパーソフトウェア」は,「耐タンパーコード及びブロック管理モジュール」を含み,「耐タンパーコード」は,「ソフトウェアの本体」にあたることから“プログラム本体”といい得るものであり,「ブロック管理モジュール」は,「ブロックの管理を行うプログラム」であって,ブロックの「暗号化・復号の処理を行」う「プログラム」である。一方,本願発明の「プログラム複合体」は,「プログラム本体」と「復号化プログラム」とからなるものであることから,引用発明の「耐タンパーコード及びブロック管理モジュールを含む耐タンパーソフトウェア」は,本願発明の「プログラム本体と復号化プログラムとからなるプログラム複合体」に相当する。

2 引用発明の「耐タンパーコード」は,「複数のブロックから構成」され,当該「ブロック」については,「複数のブロックのうち暗号化されたブロック」が「実行される直前に復号され」るものであることから,当該「複数のブロック」の中には,「暗号化されたブロック」が存在することを読取ることができる。
一方,本願発明の「プログラム本体」は,「モジュールの集合体」からなるものであって,「各モジュールのうち少なくとも一つは非実行時には暗号化された状態で」あることから,「モジュールの集合体」の中には,「暗号化された状態」の「モジュール」が存在するものであり,引用発明の「耐タンパーコード」と本願発明の「プログラム本体」とを対比すると,引用発明の「ブロック」と本願発明の「モジュール」とは,両者とも“暗号化”された部分が存在するという点で,共通しているといえる。
したがって引用発明の「耐タンパーコード」と本願発明の「プログラム本体」とは,下記の点で相違するものの,“モジュールの集合体からなるプログラム本体であって,各モジュールのうち少なくとも一つは非実行時には暗号化された状態であるプログラム本体”である点で一致する。

3 引用発明の「耐タンパーコード」は,「複数のブロックのうち暗号化されたブロックは,当該ブロックが実行される直前に復号され」るものであること,及び「n個のブロックB_(i)で構成され,あるブロックB_(i)に処理が移ったとき,鍵生成関数によって次に実行するブロックB_(i+1)を復号により得るための鍵が生成され,これを用いてB_(i+1)が得られ,処理がB_(i+1)に移る」ものであり,当該「これを用いてB_(i+1)が得られ」るとは,「当該ブロックが実行される直前に復号され」ることによって「B_(i+1)が得られ」ることを意味し,また上記「あるブロックB_(i)」は,「次に実行するブロックB_(i+1)」に対して“現在実行中”であるといえ,また当該「次に実行するブロックB_(i+1)」は,“次に実行される”ものである。
また,引用発明の「ブロック管理モジュール」は,「暗号化・復号の処理を行」うものであり,そのうち「復号の処理」は,上記「次に実行するブロックB_(i+1)」の復号化であり,当該復号化の結果得られた「処理がB_(i+1)に移る」とされる当該「B_(i+1)」は,所定の演算装置(CPUなど)によって“実行可能”になっていることから,以上総合して,引用発明の「ブロック管理モジュール」と本願発明の「復号化プログラム」とは,下記の点で異なるものの,両者ともに“次に実行されるモジュールである次モジュールが,暗号化されている場合には,演算装置が実行可能に復号化するための処理を計算機に実行させるための復号化プログラム”である点で一致する。

4 以上,上記1乃至3の検討から,引用発明と本願発明とは次の一致点及び相違点を有するものと認められる。

[一致点]
モジュールの集合体からなるプログラム本体であって,
各モジュールのうち少なくとも一つは非実行時には暗号化された状態であるプログラム本体と,
次に実行されるモジュールである次モジュールが,暗号化されている場合には,演算装置が実行可能に復号化するための処理を計算機に実行させるための復号化プログラムからなるプログラム複合体。

[相違点]
(相違点1)
本願発明が,「モジュール」の集合体からなるものであるのに対し,引用発明は,複数の「ブロック」から構成される点。

(相違点2)
本願発明の「復号化プログラム」における,「次に実行されるモジュールである次モジュールが,暗号化されている場合」の「復号化」がされるタイミングが,「現在実行中のモジュールの終了前のタイミング」であるのに対し,引用発明では,「暗号化されたブロックは,ブロックが実行される直前に復号される」であるものの,現在実行中のモジュールの終了とのタイミングが明らかでない点。


第6 相違点についての当審の判断
1 相違点1について
まず,本願発明の「モジュール」につき,特許請求の範囲には,「集合体」を形成し,「プログラム本体」となるものであること,「各モジュールのうち少なくとも一つ」は,「非実行時には暗号化された状態である」こと,及び,「次に実行されるモジュールである次モジュールが,暗号化されている場合」とあることから,実行される前に暗号化された状態で存在するものであること,及び,「次に実行されるモジュールである次モジュール」が「復号化するための処理」がなされることを特定されているが,具体的にどのようなものを「モジュール」というものかについての特定はされていない。
そこで,明細書の発明の詳細な説明を参照して,当該「モジュール」とは具体的にどのようなものを意味するものかについて,検討を行う。
本願明細書段落1乃至4には,本願発明の技術分野,背景技術,及び発明が解決しようとする課題について,次の記載がみられる。

「【0001】
本発明は,ソフトウエアの耐タンパ性を向上させる技術に関する。
【背景技術】
【0002】
ソフトウエアのうち,例えば認証アルゴリズムを含むもののように,その中身を知られたくないものが存在する。にもかかわらず,ソースコードはもとより,実行形式のソフトウエアにおいても,逆アセンブルやデバッギングにより,ソフトウエアのアルゴリズム等の内容が明るみにされるという脅威が存在する。
…(中略)…
【発明が解決しようとする課題】
【0003】
しかし,ソースコード自体の難読性を上げても,そこから生じる実行形式のコード自体が平文であるため,時間をかければ必ず解析が可能である点が問題となる。そこで,実行形式のコードを暗号化し実行時に復号化するという方法が考えられる。これにより,記憶域に保存された状態の実行形式のファイルについては,暗号化されているため,解析がほぼ不可能である。しかしながら,暗号化するだけでは実行時には何らかの形で復号化する必要があり,復号化し実行中のコードについてはデバッガ等による解析が可能である点が問題となる。例えば,実行時に全てのコードを復号化してから実行する方法であると,実行前においては暗号化されているため,解析はほぼ不可能であるが,実行時にプログラム全てを復号化する方式であると,メモリ上において復号化されたプログラムがロードされた状態のイメージを解析することにより,その内容を把握することが可能である。そうすると,暗号化されたモジュールを容易に解析できないような,プログラムの実行方式の実現という課題が生じる。
【課題を解決するための手段】
【0004】
以上の課題を解決するために,第一に本発明は以下のようなプログラム複合体を提供する。該プログラム複合体は複数のモジュールから構成されている。実行前においては,少なくとも一つのモジュールは暗号化データで保持され,実行時においては暗号化されたモジュールの前に実行されるモジュールが復号化の処理を行い,復号化されたモジュールが実行されるといったプログラム複合体である。」

上記記載から,本願発明の解決しようとする課題は,従来,ソースコードはもとより,実行形式のソフトウエアにおいても,逆アセンブルやデバッギングにより,ソフトウエアのアルゴリズム等の内容が明るみにされるという脅威が存在することを背景とし,ソフトウェアの耐タンパ性を向上させることを目的とし,実行形式のコード全体を暗号化し実行時に復号化するという方法を採用すると,暗号化するだけでは実行時には何らかの形で復号化する必要があり,復号化された実行中のコードについてはデバッガ等による解析が可能,すなわち,実行時にプログラム全てを復号化する方式であると,メモリ上において復号化されたプログラムがロードされた状態のイメージを解析することにより,その内容を把握することが可能となってしまう点にあり,本願発明は,当該課題を解決する手段として,プログラム複合体を複数のモジュールから構成し,当該モジュールのうち少なくとも一つは実行前において暗号化され,実行時において当該暗号化されたモジュールの前に実行されるモジュールによって復号化され,実行されるようにしたものであることを読み取ることができる。
そして,当該解決手段の具体的な実施形態の1つとして説示する,本願明細書段落14乃至17及び図1には,次の記載がみられる。

「図1




「【0014】
≪実施例1≫
<概要>
図1は,本実施例のプログラム複合体の動作の一例を説明するための概念図である。この図にあるように,プログラムAとしたプログラム複合体は記憶域のアドレスXからアドレスYの間にモジュールP個が存在している。モジュール2からモジュールPは暗号化されている。プログラムは,モジュール1から順にモジュールPまで実行されることとする。モジュール1はモジュール2を呼び出し,モジュール2はモジュール3を呼び出すという階層的な実行方式をとる。
…(中略)…
【0017】
このように,本実施例のプログラム複合体は,プログラムの実行時において,モジュールが実行され終了する直前に次に実行すべきモジュールを復号化する動作が可能である。これにより,実行時になって初めてモジュールのコードが可読となるため,図2において保護すべきP番目のモジュールを解析しようとした場合には,直接P番目のモジュールを解析することは出来ず,順番に実行して解析する必要がある。このため,デバッガなどでプログラムを解析する場合,一度に全ての関数が可読である場合に比べ,大幅に解析に時間がかかることとなる。さらに,暗号化により保護対象関数Pまでの流れが隠蔽されているので,解析者がプログラムの全体像を十分につかめない。」

上記記載から,プログラム複合体は記憶域のアドレスXからアドレスYの間に「モジュール」P個が存在する構造を有していること,プログラムは,「モジュール1」から順に「モジュールP」まで実行されること,「モジュール1」は「モジュール2」を呼び出し,「モジュール2」は「モジュール3」を呼び出すという階層的な実行方式をとること,などを読み取ることができる。そして,プログラムの実行時において,「モジュール」が実行され終了する直前に次に実行すべき「モジュール」を復号化する動作が可能であり,これにより,実行時になって初めて「モジュール」のコードが可読となるため,一度に全ての関数が可読である場合に比べ,大幅に解析に時間がかかり,さらに,暗号化により保護対象関数P(すなわちモジュールP)までの流れが隠蔽されているので,解析者がプログラムの全体像を十分につかめないといった効果を奏するものであることを読み取ることができる。

翻って,引用発明の「ブロック」について検討する。
引用発明の「耐タンパーコード」は,「複数のブロックから構成され」るものであり,当該「ブロック」のうち,「暗号化されたブロック」は,「当該ブロックが実行される直前に復号され」るものである。このことは,耐タンパーコードを暗号化するにあたり,全体を暗号化するのでなく,耐タンパーコードを複数の部分に分けて,当該部分毎に,すなわちブロック単位で暗号化するものであることも示しているといえる。
同じく,引用発明の「耐タンパーコード」は,「あるブロックB_(i)に処理が移ったとき,鍵生成関数によって次に実行するブロックB_(i+1)を復号により得るための鍵が生成され,これを用いてB_(i+1)が得られ,処理がB_(i+1)に移る」ものであるから,「ブロックB_(i+1)」は実行時には復号化され,また,「ブロックB_(i)」,「ブロックB_(i+1)」は,順次実行されるものであるといえる。

以上を踏まえると,本願発明の「モジュール」と引用発明の「ブロック」とはいずれも,
(1)外部からの解析といった脅威から保護されるべきプログラムの一部を構成するものであること,
(2)当該プログラム全体を暗号化するのではなく,プログラムを複数の部分に分けて,その部分毎に暗号化する場合の,当該部分であること,
(3)実行時には復号化され,順次実行されるものであること,
の点において共通するものであって,両者はその機能に格別の相違を見いだすことはできず,仮に相違があったとしても,当該相違はプログラム設計上の微差に過ぎないものであって,その相違に基づいて奏される本願発明の効果も格別なものとはいえない。
したがって,本相違は格別なものではない。

2 相違点2について
通常,複数のモジュールを順次実行するようなプログラムにおいて,当該モジュールの次に実行されるモジュールに関しては,それが実行される前には実行可能な状態にされていなければならないことは技術常識であり(例えば引用例1の記載事項Aの,「攻撃者がプログラムの実行コードを得るのを困難にするために,実行コードを暗号化する.しかし,プログラムの実行時には実行される部分のコードは復号された状態でメモリ上に存在しなければならない.」との記載を参照。),また,上記引用例2の記載事項EやFにもみられるように,分割プログラムすなわちモジュールが,暗号化されているときに,その実行前に復号することは周知技術に過ぎず,当該復号化のタイミングは,少なくとも現在実行中のモジュールが終わる前までには行われなければならないことは技術常識であるから,次に実行されるモジュールである次モジュールが暗号化されている場合に復号する場合に,当該復号を,次モジュールの前の実行中のモジュールが終了する前に行う程度のことは,当業者が普通に想起する程度のことに過ぎず,格別なものとはいえない。
したがって,本願発明は,引用発明及び周知技術に基づいて当業者が容易になし得たものというほかない。

なお,審判請求人は,平成29年1月4日付けの審判請求書において,

「本願発明の特徴的な部分は,請求項1の「次に実行されるモジュールである次モジュールが,暗号化されている場合には,現在実行中のモジュールの終了前のタイミングにて演算装置が実行可能に復号化する」という記載部分にも現れているように,メモリ上に実行中のモジュールと次実行モジュールの2つが存在する点にあります。そして,実行中のモジュールが実行されている間に次モジュールの複合化処理が行われるという具合です。…(中略)…本願発明では,メインメモリ上にて(実行中モジュールの)実行処理と(次モジュールの)復号化処理が並存しているのに対して,引用文献1の発明では,これらの処理が並存していない点において,相違します。仮に可用性を向上させることを考えるのであれば,実行中のモジュールの終了時点と復号化の開始時点が同じ時刻である構成を採用すべきですが,本件発明では,そのようには構成しません。つまり,実行処理と復号化処理とを同時並列的に行う点にも特徴があります。この同時並列処理によって,クラッキング等をもくろむ者にとって,実行されている命令と命令の実行に伴う処理の対応が解読しづらくなるという効果を生みます。」

旨主張を行っている。
上記主張について検討する。
本願の特許請求の範囲には,「メモリ上に実行中のモジュールと次実行モジュールの2つが存在する」ことや,「メインメモリ上にて(実行中モジュールの)実行処理と(次モジュールの)復号化処理が並存している」ことは明示的には記載されていないので,特許請求の範囲の記載に基づく主張ではなく,もとより採用の余地はないものの,

主張1:
「メモリ」上に「実行中モジュール」と「次実行モジュール」の2つが存在する。
主張2:
「メインメモリ」上で,「実行処理」と「復号化処理」が「並存」している。

ことに関し,検討する。
まず,主張1を検討する。
特許請求の範囲にはそもそも,「メモリ」なる特定事項が記載されていないから,当該主張の「メモリ」が何を表すものかは必ずしも判然としないが,「実行中のモジュール」や,「次に実行される次モジュール」が,コンピュータにおいて実行されるプログラムの一部である技術常識を考慮すれば,「メモリ上に実行中のモジュールと次実行モジュールの2つが存在する」とは,当該「モジュール」が実行されるべく,当該コンピュータ上のメモリに展開されていることを表しているものと解する余地はあるといえる。そして,「実行中のモジュール」がメモリ上に存在しているのは当然として,これから復号化される「次モジュール」が当該メモリ上に存在しているかについては,当該復号化処理が終了して次モジュールに処理が移行すれば,当該メモリ上に存在するといえるものの,復号化処理中若しくは復号化処理前には,少なくとも上記メモリ上には存在していないとみるべきである。
そうすると,審判請求人の上記主張1は,実行しているモジュールも,これから復号化されるモジュールも,実行時に用いられるメモリではない,“所定のメモリ”上に存在していることを表しているとも解される。そして,本願明細書段落29及び図面の図6を参照し,不揮発性メモリ(0603)より揮発性メモリ(0602)にプログラムAがロードされ,プログラムAを構成するN個のモジュールが,揮発性メモリ(0602)にロードされている状態が説明されていて,上記“所定のメモリ”が揮発性メモリ(0602)のことをいうものとして,上記解釈は概ね妥当なものといえる。
翻って引用発明についてみるに,引用発明の「耐タンパーコード」のうち「暗号化されたブロック」は,「当該ブロックが実行される直前に復号され」るものである。また,引用例1の上記記載事項Aに「プログラムの実行時には実行される部分のコードは復号された状態でメモリ上に存在しなければならない」と記載され,同記載事項Dの図7を参照すると,「耐タンパーコード」中の「ブロック」は,「ブロック管理モジュール」によって,「暗号化されたブロックの参照」とあるように,参照されるために,なんらかのメモリ上に存在していることは明らかであるから,結局引用発明においても,「実行中モジュール」と「次実行モジュール」の2つが“所定のメモリ”上に存在していると言い得,この点において本願発明との格別な差異を認めることはできないから,主張1については,これを採用することはできない。
次に主張2については,引用発明は「暗号化されたブロックは,当該ブロックが実行される直前に復号され」るものであることからして,実行中のモジュールの実行処理と次モジュールの復号化処理は,所定のメモリ上(メインメモリ上)で並存せざるを得ないのであって,当該主張2も採用できない。
最後に,「仮に可用性を向上させることを考えるのであれば,実行中のモジュールの終了時点と復号化の開始時点が同じ時刻である構成を採用すべき」の点に関しては,仮に可用性を向上させる場合には,実行中のモジュールの次に事項されるモジュールは,実行中のモジュールの処理に引き続いて実行されるよう,その準備をすべきであって,暗号化されたモジュールの復号化が瞬時に行われるような類のもので無い限り,実行中のモジュールの終了時点と復号化の開始時点を同じ時刻とすることは通常は考えられず,主張自体当を得ないものといわざるを得ない。

以上の検討から,審判請求人の主張はいずれも採用できず,また本願発明の構成によってもたらされる効果も,引用発明や引用例2に記載された事項から当業者ならば容易に予測することができる程度のものであって,格別のものとはいえない。


第7 むすび
以上のとおり,本願発明は,特許法29条2項の規定により特許を受けることができないから,他の請求項に係る発明について検討するまでもなく,本願は拒絶されるべきものである。
よって,結論のとおり審決する。
 
審理終結日 2017-10-31 
結審通知日 2017-11-01 
審決日 2017-11-17 
出願番号 特願2015-187668(P2015-187668)
審決分類 P 1 8・ 121- Z (G06F)
最終処分 不成立  
前審関与審査官 岸野 徹  
特許庁審判長 石井 茂和
特許庁審判官 山崎 慎一
須田 勝巳
発明の名称 モジュールの暗号化/復号化プログラム  
代理人 工藤 一郎  

プライバシーポリシー   セキュリティーポリシー   運営会社概要   サービスに関しての問い合わせ