【事件の表示】
　平成　９年特許願第１５９９９２号「故障利用攻撃対応ＩＣカード」拒絶査定不服審判事件〔平成１１年　１月１２日出願公開、特開平１１−　　８６１６〕について、次のとおり審決する。
【結　論】
　本件審判の請求は、成り立たない。
【理　由】
１．手続の経緯
　本願は、平成９年６月１７日の出願であって、平成１８年８月２５日付けで拒絶理由通知がなされ、同年１０月３０日付けで手続補正されたが、同年１１月１６日付けで拒絶査定がなされ、これに対して、平成１９年１月１８日に審判請求されるとともに、同年２月１９日付けで手続補正され、同年７月１９日付けで審査官から前置報告がなされ、平成２１年３月５日付けで当審より審尋がなされ、同年４月２８日付けで回答書が提出されたものである。
　
２．本願発明
　本願の請求項１に係る発明（以下、「本願発明」という。）は、平成１９年２月１９日付けの手続補正書によって補正された特許請求の範囲の請求項１に記載された、次のとおりのものである。
　
「コプロセッサを搭載し、ＲＳＡ公開鍵暗号方式のディジタル署名の作成を行う冪乗剰余計算を公開鍵ｎの素因数を用いて中国人剰余定理により高速でＣＰＵが処理するようにしたＩＣカードにおいて、
　中国人剰余定理による計算過程の各段階において生成されるそれぞれのデータとともに、前記それぞれのデータについてのエラー検出符号を計算して同時にメモリに記憶しておき、ディジタル署名の作成時に、ＣＰＵが前記それぞれのデータのエラー検出符号を再度計算し、メモリに記憶しておいたエラー検出符号と照合することで故障利用攻撃を受けたことを検出することを特徴とする故障利用攻撃対応ＩＣカード。」
　
３．引用発明
　原査定の拒絶理由に引用された「やさしい情報セキュリティ　第８回　ＲＳＡ暗号と攻撃，ビジネスコミュニケーション，株式会社ビジネスコミュニケーション社発行，第34巻 第3号, p.78-81, 1997年3月1日」（以下、「引用文献１」という。）には、以下の事項が記載されている。
　
（あ）「昨年9月、Bellcoreの研究者達がハードウェアの故障を利用したRSA暗号の攻撃法を発表した。彼らの発表は当初共通鍵暗号には適用できないというものであったが、ハードウェア故障を利用するアイデアは暗号研究者の格好のテーマとなり、昨年暮れまでの短期間のうちに共通鍵暗号を含むさまざまな暗号攻撃法の研究発表が行われた。今年1月のRSA Data Security Conferenceで、この話題がどのように取り上げられるのか大変興味深いものがあった。今回はこのRSA暗号の攻撃法を紹介し、あわせて会議の模様についても述べてみたい。
　
　ハードウェア故障を利用した暗号攻撃
　1996年9月25日、Bellcoreの3人の研究者達（Dan Boneh, Richard DeMillo and Richard Ripton）が、ハードウェアの故障を利用した新しいRSA暗号の攻撃法を発見したと発表した。彼らの発表は、従来、「外からは読み出しができないレジスタにRSA秘密鍵を閉じ込め、RSAの署名演算をハードウェア内部で実行し秘密鍵を外部にさらさないように設計したハードウェアは安全である」と考えてきたことが必ずしも絶対的ではなく、個人認証などに用いるICカードやPCカードの設計に大きく影響すると思われた。Bellcoreの発表以降、彼等のハードウェア故障を利用した暗号解読のアイデアを使って、各種の攻撃法が発表された。発表のなかには、攻撃の条件設定が非常に困難なもの（たとえば、鍵の1ビットだけを反転させる）もあるが、従来のハードウェアの安全性が必ずしも絶対的でないことを示唆した影響は大きい。」（７８頁左欄１行〜７９頁左欄１１行）
　
（い）「Bellcoreの研究者達の攻撃法を紹介する前に第３回に述べたRSA暗号について簡単に復習しておきたい。RSA暗号の利用者は、まず鍵ペアを生成する。そのためには、二つの素数pとqの積がメッセージMよりも大きくなるように選び、その積をnとする。そして、p−1とq−１の最小公倍数をLとする。次に、Lと互いに素となる数eを適当に選ぶ。ただし、eはあまり大きな数を選ばない方が都合がよい。暗号化のときの計算量が少なくて済むからだ。こうして選んだ数のうち、（e,n）を暗号化鍵として公開する。一方、復号鍵も自動的に決まる。実は、Lとeに対して、[e×d]（mod L）＝1となるdが必ず存在し、ここで選んだdが、利用者が秘密にしておく復号鍵である。このように選んだ（d,n）によってメッセージMを変換した、S＝Md（mod n）が署名文であり、検証は公開鍵を使って、M＝Se（mod n）によって行われる。このように、RSA暗号の安全性は、大きな素数nの素因数分解の困難さに基づいている。つまりpとqが影の秘密鍵になっているのだ。
　イラストはBellcoreの研究者達の攻撃法の概要を示している。攻撃者は、（Step１）まず、メッセージMをハードウェアに入力し正しい署名文Sを得る。（Step２）次にもう一度Mを入力し、署名の計算過程でハードウェア故障を誘発する。その結果をS'とする。（Step３）メッセージM、正しい署名文Sと故障を誘発した時得られたS'を用いてNを素因数分解する。（Step４）pとqが得られれば簡単だ。公開鍵（e,n）から秘密鍵dを解読する。このとき、いくつS'を集めれば、Nの素因数分解できるかはRSAのハードウェアの実現法に依存する。典型的な事例を次に述べる。」（７９頁左欄１２行〜右欄１５行）
　
（う）「　中国人剰余定理を用いたＲＳＡの実装に対する攻撃
　RSA暗号は、nが大きくなるほど計算量が膨大になる。秘密パラメータp、qを知っている復号側については、中国人剰余定理を用いて演算量を減らすことができる。このためRSAの実装では、公開鍵eの方はなるべく小さく選び、秘密鍵dを大きくとり、全体の計算量を減らす方式が一般的に採られている。
　中国人剰余定理を使った復号は次の手順で行う。復号側は、あらかじめpのmod qにおける逆関数a＝p-1（mod q）を求めておく。メッセージＭを署名する場合、（Step１）S1＝Md1（mod p）とS2＝Md2（mod q）を求める。ここで、d1＝d（mod p-1）、d2＝d（mod q-1）である。（Step２）次にS＝｛a（S2−S1）（mod q）｝p＋S1を計算する。この計算法では、mod nの操作は一切出てこない。Me（mod n）と比較して計算量は約1/4となる。
　さて、中国人剰余定理による高速署名法を実装したハードウェアでS2の計算途中で誤りを起こすことができたとしよう。攻撃者は、署名文SとS'を手に入れている。その時の内部の途中結果をS2'とする。ここで、SとS'の差分をとってみる。
　　S−S'＝a｛（S2−S2'）（mod q）｝p
上の式で、S−S'が秘密パラメータpの倍数になっていることに注意しよう。これは、S−S'からpを直接推定できなくても、S−S'がqの倍数でないならば、nとS−S'の最小公倍数を求めればpをはじき出すことができてしまう。pとqは対称であるから、S1の過程で誤りを起こしても同様にqをはじき出すことできる。
　この攻撃法が強力であるのは、復号の計算途中で適当なタイミングに故障をおこさせれば簡単にnの素因数分解ができる点である。つまり、ＩＣカード等のＣＰＵが動いているときの特定サイクルやレジスタ等の特定ビットを狙い撃ちするのではなく、S1またはS2の計算中になんらかの方法（たとえば電圧降下、サージ電圧、α線照射等）により誤りを起こさせれば良いからである。」（７９頁右欄１６行〜８０頁右欄１３行）
　
（え）「　対策
　Bellcoreの研究者達は、彼らの発表の中でこの暗号攻撃の対策についても、次の2案を提案している。
（案１）　S'を外部に出さない。
　ＩＣカードの中で、署名文を作成するとき、作成した署名文Sをもう一度公開鍵で元に戻し、結果がメッセージMと一致した場合にのみSを出力する。すなわち、攻撃者が、同一のMからSとS'を手に入れることができないようにする。通常、eは小さいので、この方法はオーバヘッドも比較的小さく簡便で効果的な方法である。
（案２）　メッセージMに署名する場合、毎回異なる乱数Rを発生させ、この数をMにパディングをし、同一情報に対して署名文を作成しないようにする。ただし、この場合には、署名文からパディングRを分離するためのプロトコルを規定する必要がある。」（８０頁右欄１４行〜８１頁左欄１４行）
　
　
　上記（い）「Bellcoreの研究者達の攻撃法を紹介する前に第３回に述べたRSA暗号について簡単に復習しておきたい。RSA暗号の利用者は、まず鍵ペアを生成する。そのためには、二つの素数pとqの積がメッセージMよりも大きくなるように選び、その積をnとする。　　・・・・　＜中略＞　・・・・　こうして選んだ数のうち、（e,n）を暗号化鍵として公開する。一方、復号鍵も自動的に決まる。実は、Lとeに対して、[e×d]（mod L）＝1となるdが必ず存在し、ここで選んだdが、利用者が秘密にしておく復号鍵である。このように選んだ（d,n）によってメッセージMを変換した、S＝Md（mod n）が署名文であり、検証は公開鍵を使って、M＝Se（mod n）によって行われる。このように、RSA暗号の安全性は、大きな素数nの素因数分解の困難さに基づいている。つまりpとqが影の秘密鍵になっているのだ。
　イラストはBellcoreの研究者達の攻撃法の概要を示している。攻撃者は、（Step１）まず、メッセージMをハードウェアに入力し正しい署名文Sを得る。（Step２）次にもう一度Mを入力し、署名の計算過程でハードウェア故障を誘発する。その結果をS'とする。（Step３）メッセージM、正しい署名文Sと故障を誘発した時得られたS'を用いてNを素因数分解する。（Step４）pとqが得られれば簡単だ。公開鍵（e,n）から秘密鍵dを解読する。このとき、いくつS'を集めれば、Nの素因数分解できるかはRSAのハードウェアの実現法に依存する。典型的な事例を次に述べる。」の記載と
　上記（う）「RSA暗号は、nが大きくなるほど計算量が膨大になる。秘密パラメータp、qを知っている復号側については、中国人剰余定理を用いて演算量を減らすことができる。　・・・・　＜中略＞　・・・・　
　中国人剰余定理を使った復号は次の手順で行う。復号側は、あらかじめpのmod qにおける逆関数a＝p-1（mod q）を求めておく。メッセージＭを署名する場合、（Step１）S1＝Md1（mod p）とS2＝Md2（mod q）を求める。ここで、d1＝d（mod p-1）、d2＝d（mod q-1）である。（Step２）次にS＝｛a（S2−S1）（mod q）｝p＋S1を計算する。
　・・・・　＜中略＞　・・・・　
　さて、中国人剰余定理による高速署名法を実装したハードウェアでS2の計算途中で誤りを起こすことができたとしよう。
　・・・・　＜中略＞　・・・・　
　この攻撃法が強力であるのは、復号の計算途中で適当なタイミングに故障をおこさせれば簡単にnの素因数分解ができる点である。つまり、ＩＣカード等のＣＰＵが動いているときの特定サイクルやレジスタ等の特定ビットを狙い撃ちするのではなく、S1またはS2の計算中になんらかの方法（たとえば電圧降下、サージ電圧、α線照射等）により誤りを起こさせれば良いからである。」の記載において、
　上記（い）の記載事項によると、RSA暗号では、二つの素数pとqの積がメッセージMよりも大きくなるように選び、その積をnとし、（e,n）を暗号化鍵として公開し、[e×d]（mod L）＝1となるdを選んで、（d,n）を利用者が秘密にしておく復号鍵とするとともに、この復号鍵（d,n）によってメッセージMをS＝Md（mod n）によって変換して署名文を作成することが開示されている。
　ここで、pとqは素数であり、その積がnであるから、pとqはnの素因数であると言える。また、（e,n）は暗号化鍵として公開されていることから、nは公開鍵であることは明らかである。
　また、上記（う）の記載事項によると、前段階として、あらかじめpのmod qにおける逆関数a＝p-1（mod q）を求め、メッセージＭを署名する場合、まず、S1＝Md1（mod p）とS2＝Md2（mod q）を求めるステップ１、次に、S＝｛a（S2−S1）（mod q）｝p＋S1を計算するステップ２とからなる中国人剰余定理による高速署名法は、上記（う）の記載事項中の「中国人剰余定理による高速署名法を実装したハードウェア」で処理するものと認められ、また、この中国人剰余定理による高速署名法が実装されるのは、上記（う）の記載事項中の「ＩＣカード等のＣＰＵ」であることは明らかである。したがって、中国人剰余定理による高速署名法は、ＩＣカードのＣＰＵで処理されていると解される。
　ここで、中国人剰余定理による高速署名法において、p、qは公開鍵nの素因数であることをふまえると、ＩＣカードのＣＰＵで処理される中国人剰余定理による高速署名法は、RSA暗号の署名の作成を行う冪乗剰余計算を公開鍵nの素因数を用いて中国人剰余定理により高速でＩＣカードのＣＰＵが処理するものであると言える。
　また、上記（う）の記載事項での「ＩＣカード等のＣＰＵが動いているときの特定サイクルやレジスタ等の特定ビット」の記載からすると、ＩＣカードはＣＰＵが動作するときに使用する何らかのメモリを備えるものであることは明らかであり、中国人剰余定理による高速署名法をＣＰＵが処理するに際し、署名文Sを作成する前の計算過程のステップ１及びその前段階で求めたa、S1、S2、d1、d2 は、署名文Sを作成するステップ２において使用するためにメモリに記憶されると解するのが妥当である。
　そうすると、中国人剰余定理による高速署名法は、署名文Sを作成する計算過程のステップ及びその前段階でa、S1、S2、d1、d2を求めてメモリに記憶し、メモリに記憶されたa、S1、S2、d1、d2を用いて署名文Sを作成するものと解される。そして、この中国人剰余定理による高速署名法において、a、S1、S2、d1、d2は、中国人剰余定理による高速署名法での中国人剰余定理による計算過程のステップ及びその前段階において生成されるそれぞれのデータと言えるものである。
　してみると、引用文献１には、RSA暗号の署名文Sの作成を行う冪乗剰余計算を公開鍵nの素因数を用いて中国人剰余定理により高速でＣＰＵが処理するようにしたＩＣカードにおいて、中国人剰余定理による計算過程のステップ及びその前段階において生成されるそれぞれのデータを求めてメモリに記憶し、メモリに記憶されたデータを用いて署名文Sを作成することが開示されている。
　
　上記（あ）「1996年9月25日、Bellcoreの3人の研究者達（Dan Boneh, Richard DeMillo and Richard Ripton）が、ハードウェアの故障を利用した新しいRSA暗号の攻撃法を発見したと発表した。
　・・・・　＜中略＞　・・・・　
Bellcoreの発表以降、彼等のハードウェア故障を利用した暗号解読のアイデアを使って、各種の攻撃法が発表された。」の記載と、
　上記（い）「イラストはBellcoreの研究者達の攻撃法の概要を示している。攻撃者は、（Step１）まず、メッセージMをハードウェアに入力し正しい署名文Sを得る。（Step２）次にもう一度Mを入力し、署名の計算過程でハードウェア故障を誘発する。その結果をS'とする。（Step３）メッセージM、正しい署名文Sと故障を誘発した時得られたS'を用いてNを素因数分解する。（Step４）pとqが得られれば簡単だ。公開鍵（e,n）から秘密鍵dを解読する。このとき、いくつS'を集めれば、Nの素因数分解できるかはRSAのハードウェアの実現法に依存する。典型的な事例を次に述べる。」の記載と、
　上記（え）「Bellcoreの研究者達は、彼らの発表の中でこの暗号攻撃の対策についても、次の2案を提案している。
（案１）　S'を外部に出さない。
　ＩＣカードの中で、署名文を作成するとき、作成した署名文Sをもう一度公開鍵で元に戻し、結果がメッセージMと一致した場合にのみSを出力する。すなわち、攻撃者が、同一のMからSとS'を手に入れることができないようにする。通常、eは小さいので、この方法はオーバヘッドも比較的小さく簡便で効果的な方法である。」の記載において、
　上記（あ）の記載事項には、ハードウェアの故障を利用したRSA暗号の攻撃法が開示されており、さらに、上記（い）の記載事項では、ハードウェアの故障を利用したRSA暗号の攻撃法は、署名の計算過程でハードウェア故障を誘発し、その結果S'を得ることによる攻撃であることが開示されている。
　そして、上記（え）の記載事項によれば、ハードウェアの故障を利用した攻撃法の対策として、ＩＣカードの中で、メッセージMの署名文を作成する際に、作成した署名文Sをもう一度公開鍵で元に戻し、結果がメッセージMと一致した場合にのみSを出力して、攻撃者が、同一のMからSとS'を手に入れることができないようにすることが開示されている。ここで、作成した署名文を元に戻した結果がメッセージMと一致しないときは、この署名文を出力しないのであるから、このとき、ハードウェアの故障を利用した攻撃を受けたことを検出していることは明らかである。
　したがって、これら上記（あ）（い）（え）に開示されている事項からすると、引用文献１には、ＩＣカードの中でメッセージMの署名文Sを作成する際に、作成した署名文Sをもう一度公開鍵で元に戻し、その結果をメッセージMと照合することで故障利用攻撃を受けたことを検出する故障利用攻撃対応ＩＣカードが開示されている。
　
　以上より、上記（あ）から（え）の記載を参酌すると、引用文献１には、次の発明（以下、「引用発明」という。）が記載されていると認められる。
　
　RSA暗号の署名文Sの作成を行う冪乗剰余計算を公開鍵nの素因数を用いて中国人剰余定理により高速でＣＰＵが処理するようにしたＩＣカードにおいて、
　中国人剰余定理による計算過程のステップ及びその前段階において生成されるそれぞれのデータを求めてメモリに記憶し、メモリに記憶されたデータを用いてメッセージMの署名文Sを作成する際に、作成した署名文Sをもう一度公開鍵で元に戻し、その結果をメッセージMと照合することで故障利用攻撃を受けたことを検出することを特徴とする故障利用攻撃対応ＩＣカード。
　
　
４．対比
　ここで、本願発明と引用発明とを対比する。
　
　引用発明の「RSA暗号の署名文Sの作成を行う冪乗剰余計算を公開鍵nの素因数を用いて中国人剰余定理により高速でＣＰＵが処理するようにしたＩＣカード」と、
　本願発明の「コプロセッサを搭載し、ＲＳＡ公開鍵暗号方式のディジタル署名の作成を行う冪乗剰余計算を公開鍵ｎの素因数を用いて中国人剰余定理により高速でＣＰＵが処理するようにしたＩＣカード」とは、
　ＲＳＡ公開鍵暗号方式のディジタル署名の作成を行う冪乗剰余計算を公開鍵ｎの素因数を用いて中国人剰余定理により高速でＣＰＵが処理するようにしたＩＣカードである点で共通する。
　
　引用発明の「中国人剰余定理による計算過程のステップ及びその前段階において生成されるそれぞれのデータを求めてメモリに記憶し、」と、
　本願発明の「中国人剰余定理による計算過程の各段階において生成されるそれぞれのデータとともに、それぞれのデータについてのエラー検出符号を計算して同時にメモリに記憶しておき、」とは、
　中国人剰余定理による計算過程の各段階において生成されるそれぞれのデータをメモリに記憶している点で共通する。
　
　引用発明の「メモリに記憶されたデータを用いてメッセージMの署名文Sを作成する際に、作成した署名文Sをもう一度公開鍵で元に戻し、その結果をメッセージMと照合することで故障利用攻撃を受けたことを検出する」ことと、本願発明の「ディジタル署名の作成時に、ＣＰＵがそれぞれのデータのエラー検出符号を再度計算し、メモリに記憶しておいたエラー検出符号と照合することで故障利用攻撃を受けたことを検出する」こととは、ディジタル署名の作成時に、故障利用攻撃を受けたことを検出する点で共通する。
　
　
　よって、本願発明と引用発明とは、以下の点で一致し、また、相違している。
　
（一致点）
　ＲＳＡ公開鍵暗号方式のディジタル署名の作成を行う冪乗剰余計算を公開鍵nの素因数を用いて中国人剰余定理により高速でＣＰＵが処理するようにしたＩＣカードにおいて、
　中国人剰余定理による計算過程の各段階において生成されるそれぞれのデータをメモリに記憶し、ディジタル署名の作成時に、故障利用攻撃を受けたことを検出することを特徴とする故障利用攻撃対応ＩＣカード。
　
（相違点１）
　ＩＣカードが、
　本願発明は、コプロセッサを搭載するものであるのに対し、
　引用発明は、そのような構成を備えていない点。
　
（相違点２）
　中国人剰余定理による計算過程の各段階において生成されるそれぞれのデータをメモリに記憶するときに、
　本願発明は、「それぞれのデータについてのエラー検出符号を計算して同時に」メモリに記憶するのに対し、
　引用発明は、「それぞれのデータについてのエラー検出符号を計算して同時に」記憶する構成を備えていない点。
　
（相違点３）
　故障利用攻撃を受けたことの検出を、
　本願発明は、ＣＰＵが前記それぞれのデータのエラー検出符号を再度計算し、メモリに記憶しておいたエラー検出符号と照合することで行うのに対し、
　引用発明は、作成した署名文Sをもう一度公開鍵で元に戻し、その結果をメッセージMと照合することで行っている点。
  
　
５．判断
　上記相違点１について検討する。
　本願の出願日前に頒布された刊行物である国際公開第９７／１２３４４号（以下、「周知例１」という。）は、
「FIGURE 1 depicts a block diagram of an exemplary module 10 that incorporates an exemplary embodiment of the present invention. The module circuitry can be a single integrated circuit. 
　・・・・　＜中略＞　・・・・　
 The module 10 comprises a microprocessor 12, a real time clock 14, control circuitry 16, a math coprocessor 18, memory circuitry 20, input/output circuitry 26, and an energy circuit.
　The module 10 could be made small enough to be incorporated into a variety of objects including, but not limited to a token, a card, a ring, a computer, a wallet, a key fob, badge, jewelry, stamp, or practically any object that can be grasped and/or articulated by a user of the object.
　・・・・　＜中略＞　・・・・　
 The math coprocessor circuitry 18 is designed and used to handle very large numbers. In particular, the coprocessor will handle the complex mathematics of RSA encryption and decryption.」（４頁７行〜５頁２行）
（当審訳： 図１は、本発明の代表的な実施例を具体化する典型的なモジュール１０のブロック図である。モジュール回路は１つの集積回路とすることができる。　・・・・　＜中略＞　・・・・　モジュール１０は、マイクロプロセッサ１２、リアルタイムクロック１４、制御回路１６、数値コプロセッサ(math coprocessor)１８、メモリ回路２０、入出力回路２６及びエネルギー回路からなる。
　限定するわけではないが、トークン、カード、リング、コンピュータ、財布、鍵ホルダー(Key fob)、バッジ、宝石、スタンプ、または、ユーザによって握られたり、および／またはユーザーに関連するほとんど任意の対象物といった、様々な対象物の中に組み込めるようにモジュール１０は小さくすることができる。
　・・・・　＜中略＞　・・・・　
  数値コプロセッサ回路１８は極めて大きい数を処理するように設計されており、そして、極めて大きい数を処理するために使用される。特に、このコプロセッサはＲＳＡの暗号化および暗号解読の複雑な計算を処理する。）の記載において、
　モジュール回路を１つの集積回路とし、モジュール１０にＲＳＡの暗号化および暗号解読の複雑な計算を処理する数値コプロセッサ回路１８を搭載するとともに、このモジュール１０をカードの中に組み込むことを開示している。
　ここで、モジュール回路は１つの集積回路とされており、モジュールがＩＣであることは明らかである。また、モジュール１０はＲＳＡの暗号化および暗号解読の複雑な計算を処理する数値コプロセッサ回路１８を搭載するものであるから、モジュール１０はＲＳＡの暗号化および暗号解読の複雑な計算を処理する数値コプロセッサ回路１８を備えるＩＣであると言える。そして、このモジュール１０をカードの中に組み込んでいることから、このモジュールを組み込まれたカードは、ＲＳＡの暗号化および暗号解読の複雑な計算を処理する数値コプロセッサ回路１８とを搭載したＩＣカードであると言える。
　してみると、ＲＳＡ暗号の暗号化および暗号解読の複雑な計算を処理する数値コプロセッサをＩＣカードに搭載することは、周知例１に開示されているように知られていたものであり周知事項と認められる。
　一方、引用発明のＩＣカードは、RSA暗号の署名文Sの作成を行う処理をするものであり、このRSA暗号の署名文Sの作成を行う処理は、ＲＳＡ暗号の暗号化および暗号解読の複雑な計算の処理と言えるものである。
　そうすると、引用発明のＩＣカードは、RSA暗号の署名文Sの作成を行う処理といったＲＳＡ暗号の暗号化および暗号解読の複雑な計算を処理するものであって、ＲＳＡ暗号の暗号化および暗号解読の複雑な計算を処理する数値コプロセッサをＩＣカードに搭載することは、周知例１に開示されているように周知事項と認められることから、引用発明のＩＣカードに数値コプロセッサを搭載するようにすることは、当業者が適宜なし得たことである。
　よって、相違点１は格別なものではない。
　
　
　上記相違点２及び３について検討する。
　原査定の拒絶理由に引用された刊行物である特開平４−１６５４８７号公報（以下、「引用文献２」という。）に
「　〔発明が解決しようとする課題〕
　一般に、ＩＣカードはユーザがポケットに入れて携帯したり、無造作に取り扱ったりすることが多く、過酷な環境で取り扱われることになる。また、ＩＣカード自身には、電源やクロックが内蔵されていないため、データの読出しや書込み作業は、外部の装置から所定の入出力端子を介して電源やクロックの供給を受けながら行われる。したがって、この入出力端子における接触不良が一瞬でも生じると、正しくデータを書込むことができない場合がある。
　このように、ＩＣカードにおけるデータの記録は、一般のコンピュータなどに比べて過酷な条件が課されることになり、いわゆる「データ化け」と呼ばれる記録データの内容にエラーが生じる現象が起こりやすい。このため、エラーチェックを十分に行う必要がある。従来の一般的なエラーチェック方法は、所定長さのデータ列に対して、ＢＣＣコードなどのエラーチェックコードを生成してこれを付加し、このエラーチェックコードとともにデータを記録する方法である。読出し時には、本来のデータとともにエラーチェックコードも読出し、読出したデータから生成されるエラーチェックコードと、記録されていたエラーチェックコードとの同一性をチェックしている。」（公報２頁右上欄２行〜左下欄６行）と記載されているように、
　ＩＣカードの記録データの内容に生じるエラーのエラーチェックのために、ＩＣカードにおいて、所定長さのデータ列に対して、ＢＣＣコードなどのエラーチェックコードを生成してこれを付加し、このエラーチェックコードとともにデータを記録し、読出し時に、データとともにエラーチェックコードも読出し、読出したデータから生成されるエラーチェックコードと、メモリに記録されていたエラーチェックコードとの同一性をチェックするエラーチェック方法は周知技術である。
　ここで、読出したデータから生成されるエラーチェックコードと、メモリに記録されていたエラーチェックコードとの同一性をチェックすることは、記録されていたエラーチェックコードとを照合し、読み出されたデータのエラーをチェックするものと言える。また、記録されるエラーチェックコードとデータは、ＩＣカードのメモリに記録されると解するのが妥当である。
　してみると、ＩＣカードの記録データの内容に生じるエラーのエラーチェックのために、ＩＣカードにおいて、データをメモリに記録するときに、記録するデータについてのエラーチェックコードを生成してこれを付加し、このエラーチェックコードとともにデータをメモリに記録し、読出し時に、データとともにエラーチェックコードも読出し、読出したデータから生成されるエラーチェックコードと、メモリに記録されていたエラーチェックコードとを照合し、読み出されたデータのエラーをチェックするエラーチェック方法は、引用文献２に開示されている事項からみて周知技術であると言える。
　
　また、本願の出願日前に頒布された刊行物である「On the Importance of Checking Cryptographic Protocols for Faults (Extended abstract), Advances in Cryptology-EUROCRYPT'97, Lecture Notes in Computer Science, Vol.1233, p.37-51, 1997年5月」（以下、「周知例２」という。）には、
「2  Chinese remainder based implementations
2.1  The RSA system
In this section we consider a system using RSA to generate signatures in a naive way. Let N=pq be a product of two large prime integers. To sign a message x using RSA the system computes xs mod N where s is a secret exponent. Here the message x is assumed to be an integer in the range 1 to N(usually one first hashes the message to an integer in that range). The security of the system relies on the fact that factoring the modulus N is hard. In fact, if the factors of N are known then one can easily break the system, i.e., sign arbitrary documents without prior knowledge of the secret exponent.
 The computationally expensive part of signing using RSA is the modular exponetiation of the input x. For efficiency some implementations exponentiate as follows: using repeated squaring they first compute E1=xs mod p and E2=xs mod q. They then use the Chinese remainder theorem(CRT)to compute the signature E=xs mod N.  
　・・・・　＜中略＞　・・・・　
 
2.2  RSA's vulnerability to hardware faults
 Our simple attack on RSA signatures using the above implementation enables us to factor the modulus N. Once the modulus is factored the system is considered to be broken. Our attack is based on obtaining two signatures of the same message. One signature is the correct one; the other is a faulty signature. 
　・・・・　＜中略＞　・・・・　
 Thus, using the fact that the message M is known it became possible to factor the modulus given only one faulty signature. This is of interest since most implementations of RSA signatures avoid signing the same message twice using some padding technique. Lenstra's improvement shows that as long as the entire signed message is known, even such RSA/CRT systems are vulnerable to the hardware faults attack.
 The attack on Chinese remainder theorem implementations applies to other cryptosystems as well.」（３９頁１行〜４０頁２７行）の記載と、
 （当審訳：２　中国人剰余に基づいた実施
２．１　ＲＳＡシステム
　この節では、RSAシステムを用いて単純な方法で署名を生成することを考える。N=pq を２つの大きな素数の積とする。RSAを用いてメッセージxに署名するために、システムはxs mod N を計算する。このsは秘密のべき指数である。ここで、メッセージxは1からNの範囲の整数であると仮定する（一般に、まずメッセージをハッシュしてその範囲の整数とする）。システムの安全は剰余数Nを因数分解することが困難であるという事実によっている。実際、もしNの因数が分かっているときは、システムを簡単に破ることができる。すなわち、先の秘密のべき指数の知識なしに任意の書類に署名ができるようになる。
　RSAを用いて署名をする際の計算的に高価な部分は、入力xのべき乗剰余の計算である。効率よく計算するために、以下のようにべき乗の実行をする。まず、繰り返し乗算に使用する、E1=xs mod p と E2=xs mod qとを計算する。次に、中国人剰余定理（CRT）を使って、署名E=xs mod Nを計算する。
　・・・・　＜中略＞　・・・・　
２．２　故障に対するＲＳＡの弱点
　上記での中国人剰余に基づいて実行されるRSA署名に対する簡単な攻撃は、剰余数Nを因数分解することを可能にする。一度でも剰余数が因数分解されれば、そのシステムは破られていると考えられる。この攻撃は、同一のメッセージ対して２つの署名を得ることを基礎にしている。その一方の署名は正しい署名であり、他方の署名は誤った署名である。
　・・・・　＜中略＞　・・・・　
　このように、メッセージMが分かっていることを使って、１つの誤った署名が与えられるだけで剰余数の因数分解が可能となる。ほとんどのRSAの署名の実行が幾つかのパディング法を使って同じメッセージに二度署名しないようにしていることから、これは重大である。Lenstraの改良は、完全に署名されたメッセージが分かりさえすれば、RSA/CRT システムですら故障利用攻撃に対して弱いことを示している。
　この中国人剰余定理に基づいて実行される署名に対する攻撃は、他の暗号システムにも同様に適用される。）の記載と、
「3  Register faults
 From here on our attacks are based on a specific fault model which we call register faults. Consider a tamper-resistant device. We view the device as composed of some circuitry and a small amount of memory. The circuitry is responsible for performing the arithmetic operations. The memory(registers plus a small on chip RAM)is used to store temporary values.
 Our fault model assumes that the circuitry contains no faults. On the other hand, a value stored in a register may be corrupted. With low probability, one(or a few)of the bits of the value stored in some register may flip. We will need this event to occur with sufficiently low probability so that there is some likelihood of the fault occurring exactly once throughout the computation. As before, all errors are transient and the hardware has no clue that the change has taken place.」（４０頁２８行〜同頁最終行）
（当審訳：３　レジスタ・フォールト
　以下では、特定の誤りモデルに基づく攻撃をレジスタ・フォールト（register faults）と呼ぶ。耐タンパ・デバイスを検討する。このデバイスは、幾つかの電気回路及び小容量メモリからなるものとする。その電気回路は算術演算を実行するものである。そのメモリ（レジスタと小さなオンチップRAM）は、一時的に数値を記憶するために使われる。
　この誤りモデルでは、電気回路は誤りを含んでいないと仮定する。一方で、レジスタに記憶される数値は、元の数値が損なわれる可能性のあるものである。幾つかのレジスタに記憶された数値のビット列の１ビット（或いは数ビット）は、低い確率で反転する可能性のあるものである。計算過程で一度だけ誤りを起こす見込みがあるように、このイベントは十分に低い確率で起こす必要がある。以上のように、すべてのエラーは一時的なものであり、そして、ハードウェアはその改変が起こったときの解決策を持っていない。）の記載と、
「7  Defending against an attack based on hardware faults
　　＜前略＞　・・・・　
 Our attack on authentication protocols such as the Fiat-Shamir scheme uses a register fault which occurs while the device is waiting for a response from the outside world. One can not protect against this type of a fault by simply verifying the computation. As far as the device is concerned, it computed the correct output given the input stored in its memory. Therefore, to protect multi- round authentication schemes one must ensure that the internal state of the device can not be affected. Consequently, our attack suggests that for security reasons devices must protect internal memory by adding some error detection bits(e.g. CRC).」（４９頁１４行〜同頁３０行）
（当審訳：７　故障利用攻撃に対する防御
　　＜前略＞　・・・・　
　フィアット−シャミア・スキーム（Fiat-Shamir scheme）のような認証プロトコルに対しての攻撃は、デバイスが外部からの応答を待っている間に起こるレジスタ・フォールトを使用する。単純に計算結果を確かめることでは、このタイプの誤りを防ぐことはできない。デバイスに関する限り、与えられたメモリに記憶された入力値から正しく出力値を計算したからである。それゆえに、マルチラウンド認証スキームを保護するために、デバイスの内部状態がレジスタ・フォールトの影響を受けていないことを保証しなければならない。従って、この攻撃は、安全上の理由によりデバイスは何らかの誤り検出ビット（例えば、CRC）を付加することによって内部メモリを保護しなければならないことを示唆している。）の記載において、
　上記「7  Defending against an attack based on hardware faults」の「an attack based on hardware faults」は、前記「2.2  RSA's vulnerability to hardware faults」に記載された「Our simple attack on RSA signatures」を含むものであると認められることからすると、
　周知例２には、べき乗剰余計算を中国人剰余定理によって計算するRSA暗号の署名生成時における故障利用攻撃に対する防御として、デバイスの内部状態がレジスタ・フォールトの影響を受けていないことを保証するために、メモリに記憶された入力値に誤り検出ビットを付加することによってデバイスの内部状態を保護することが記載されている。
　ここで、デバイスの内部状態がレジスタ・フォールトの影響を受けていないことを保証することは、メモリに記憶されたデータが故障利用攻撃の影響による誤りを起こしていないことを検出することと同じ意味であると解するのが妥当である。
　してみると、べき乗剰余計算を中国人剰余定理によって計算するRSA暗号の署名生成時に、メモリに記憶されたデータが故障利用攻撃の影響による誤りを起こしていないことを検出するために、メモリに記憶されるデータに誤り検出ビットを付加することは、周知例２に開示されているように知られていたものであり周知事項と認められる。
　
　一方、引用発明のＩＣカードは、中国人剰余定理による計算過程のステップ及びその前段階において生成されるそれぞれのデータを求めてメモリに記憶し、メモリに記憶されたデータを用いてメッセージMの署名文Sを作成する際に、作成した署名文Sをもう一度公開鍵で元に戻し、その結果をメッセージMと照合することで故障利用攻撃を受けたことを検出するものであるが、これは、前記「３．引用発明」の（う）の記載事項中の「S1またはS2の計算中になんらかの方法（たとえば電圧降下、サージ電圧、α線照射等）により誤りを起こさせれば良い」の記載から、故障利用攻撃によって中国人剰余定理による計算過程のステップで求めたデータに誤りが起こり、この誤りが起こったデータから作成された正しくない署名文を検出するためであると解される。
　そうしてみると、べき乗剰余計算を中国人剰余定理によって計算するRSA暗号の署名生成時に、故障利用攻撃を受けてメモリに記憶されたデータが誤りを起こしたことを検出するために、メモリに記憶されるデータに誤り検出ビットを付加することは、周知例２に開示されているように周知事項と認められ、
　そして、ＩＣカードの記録データの内容に生じるエラーのエラーチェックのために、ＩＣカードにおいて、データをメモリに記録するときに、記録するデータについてのエラーチェックコードを生成してこれを付加し、このエラーチェックコードとともにデータをメモリに記録し、読出し時に、データとともにエラーチェックコードも読出し、読出したデータから生成されるエラーチェックコードと、メモリに記録されていたエラーチェックコードとを照合し、読み出されたデータのエラーをチェックするエラーチェック方法は、引用文献２に開示されているように周知技術であることを考え合わせると、
　引用発明において、中国人剰余定理による計算過程のステップ及びその前段階において生成されるそれぞれのデータをメモリに記憶するときに、記憶するデータについてのエラーチェックコードを生成してこれを付加し、このエラーチェックコードとともにデータをメモリに記憶し、メモリに記憶されたデータを用いてメッセージMの署名文Sを作成する際に、メモリに記憶されたデータの読出し時に、ＣＰＵがデータとともにエラーチェックコードも読出し、読出したデータから生成されるエラーチェックコードと、メモリに記憶されていたエラーチェックコードとを照合し、読み出されたデータのエラーをチェックすることにより故障利用攻撃を検出するようにすることは、当業者が容易に想到し得たことである。
　よって、相違点２及び３は格別なものではない。
　
　上記で検討したように、相違点１乃至３は格別なものではなく、本願発明の構成によってもたらされる効果も、当業者であれば予測可能なものに過ぎず格別なものとは認められない。
　
　
６．結び
　以上のとおり、本願発明は、引用発明、周知技術及び周知事項に基づいて、当業者が容易に発明をすることができたものであるから、特許法第２９条第２項の規定により特許を受けることができない。
　よって、結論のとおり審決する。