【事件の表示】
　特願２００１−　４６２５０「情報処理装置」拒絶査定不服審判事件〔平成１４年　８月３０日出願公開、特開２００２−２４７０２５〕について、次のとおり審決する。
【結　論】
　本件審判の請求は、成り立たない。
【理　由】
１．手続の経緯
　本願は、平成１３年２月２２日の出願であって、平成１９年５月２４日付けで拒絶理由通知がなされ、同年７月３０日付けで手続補正がなされたが、同年８月３０日付けで拒絶査定がなされ、これに対して、同年１０月４日に審判請求がなされたものである。
　
　
２．本願発明
　本願の請求項５に係る発明（以下、「本願発明」という。）は、平成１９年７月３０日付けの手続補正書によって補正された特許請求の範囲の請求項５に記載された、次の通りのものである。
　
「プログラムを格納するプログラム格納部、データを保存するデータ格納部を有する記憶装置と
　プログラムにしたがい、所定の処理を実行する中央演算装置を有し、
　プログラムは、中央演算装置の指示を与える処理命令から構成される一つ以上のデータ処理手段を有し、
　一つのデータ処理手段が、インデックスとそれに対応したデータから成る表を有し、入力データをインデックスとして表引きを行い、インデックスに対応したデータを処理済データとして出力する入力データ処理手段を有し、且つ
　ハミングウエイトの値が常に一定となる第１の撹乱用データX1iと、
　ハミングウエイトの値が常に一定となる第２の撹乱用データX2iと、
　第１撹乱用データX1iでインデックスを撹乱し、
　第２撹乱用データX2iでインデックスに対応したデータを撹乱することにより生成された変形済み表を使い、
　前記撹乱用データXiを使って入力データD1を変形し、変形データH1を作成するデータ変形手段と、
　変形データH1をインデックスとして、前記変形済み表を引いて変形データＨ２を取り出す変形済み表アクセス処理手段と、
　変形データＨ２を第２撹乱用データX2iを用いて、
　入力データD1を入力データ処理手段で処理した結果である処理済データD2を得るデータ逆変形処理手段とを有し、
　前記攪乱用データは、発生させたい乱数のビット数の約数となるビット数のハミングウエイト一定である乱数が予め収められたテーブルから乱数を一ずつ取り出し、発生させたい乱数のビット数に達するまで結合し、前記各攪乱用データとすることを特徴とする情報処理装置。」
　
　
３．引用発明
　原査定の拒絶理由に引用された刊行物である特開２０００−１８２０１２号公報（以下、「引用文献１」という。）には、図面と共に以下の事項が記載されている。
　
（あ）「【０００１】
【発明の属する技術分野】本発明は、機密性の高いICカードなどの耐タンパ装置に関するものである。
【０００２】
【従来の技術】ICカードは、主に、勝手に書き換えられない情報の保持や秘密情報である暗号鍵を使ったデータの暗号化や暗号文の復号化を行うために使われる装置である。ICカードは、電源を持っていないため、リーダライタに差し込まれると、電源の供給を受け、動作可能となる。動作可能になると、リーダライタからコマンドを受けて、コマンドに従い、データの転送を行う。ICカードの一般的な解説は、オーム社出版電子情報通信学会編水沢順一著「ICカード」などにある。
【０００３】ICカードの構成は、図１に示すように、カード１０１の上に、ICカード用チップ１０２を搭載したものである。一般にICカードは、接点を持ち、接点を通して、リーダーライタから電源の供給やリーダライタとのデータの通信を行う。
【０００４】ICカード用チップの構成は、基本的にマイクロコンピュータと同じような構成である。その構成は、図２に示すように、中央演算装置２０１、記憶装置２０４、入出力ポート２０７、コ・プロセッサ２０２からなる。中央処理装置２０１は、論理演算や算術演算などを行う装置であり、記憶装置２０４は、プログラムやデータを格納する装置である。入出力ポートは、リーダライタと通信を行う装置である。コ・プロセッサは、剰余演算を行うための特別な演算装置であり、非対称暗号であるRSAの演算などに用いられる装置である。ICカード用プロセッサの中には、コ・プロセッサを持たないものも多くある。データバス２０３は、各装置を接続するバスである。
【０００５】記憶装置２０４は、ROM(Read Only Memory)やRAM(Random Access Memory)、EEPROM(Electrical Erasable Programmable Read Only Memory)などからなる。ROMは、変更できないメモリであり、主にプログラムを格納するメモリである。RAMは自由に書き換えができるメモリであるが、電源の供給が中断されると、記憶している内容が消えてなくなる。ICカードがリーダライタから抜かれると電源の供給が中断されるため、RAMの内容は、保持できなくなる。EEPROMは、電源の供給が中断されてもその内容を保持することができるメモリである。書き換える必要があり、ICカードがリーダライタから抜かれても、保持するデータを格納するために使われる。例えば、プリペイドカードでのプリペイドの度数などは、使用するたびに書き換えられ、かつリーダライタか抜かれてもデータを保持する必要があるため、EEPROMで保持される。
【０００６】ICカードは、プログラムや重要な情報がICカード用チップの中に密閉されているため、重要な情報を格納したり、カードの中で暗号処理を行うために、使われている。ICカードでの暗号処理の解読の難しさは、暗号アルゴリズムの解読の困難さと同じと考えられていた。しかし、ICカードが暗号処理を行っている時の消費電流を観測し、解析することにより、暗号アルゴリズムの解読より容易に暗号処理の内容や暗号鍵が推定される可能性が示唆されている。消費電流は、リーダライタから供給されている電流を測定することにより観測することができる。このような危険性は、John Wiley  sons社 W.Rankl  W.Effing著 「Smart CardHandbook」の8.5.1.1 Passive protective mechanisms(２６３ページ)に記載されている。
【０００７】ICカード用チップを構成しているCMOSは、出力状態が１から０あるいは０から１に変わった時に電流を消費する。特に、データバス２０３のバスは、大きな電気容量を持つため、バスの値が１から０あるいは０から１に変わると、大きな電流を消費する。そのため、消費電流を観測すれば、ICカード用チップの中で、何が動作しているか分かる可能性を示唆している。」
　
（い）「【００１４】
【発明が解決しようとする課題】本発明の課題は、ICカード用チップでのデータ処理と消費電流との関連性を減らすことである。消費電流とチップの処理との関連性が減れば、観測した消費電流の波形からICカードチップ内での処理や暗号鍵の推測が困難になる。本発明の着眼点は、ICカードチップでの処理するデータを変形して処理することにより、消費電流の波形から、処理や暗号鍵の推測を困難にするものである。
【００１５】
【課題を解決するための手段】ICカード用チップに代表される耐タンパ装置は、プログラムを格納するプログラム格納部と、データを保存するデータ格納部を持つ記憶装置と、プログラムに従い、所定の処理を実行し、データ処理を行う中央演算装置を持ち、プログラムは、中央演算装置に実行の指示を与える処理命令から構成される一つ以上のデータ処理手段からなる、情報処理装置として考えることができる。本発明は、処理しているデータとICカード用チップの消費電流の関連性を減らすための方法として、処理するデータを撹乱用データで変形し、データの処理を変形したデータで処理し、処理後、撹乱用データを使って逆変形し、正しい処理結果を求めるものである。データ処理の後に使用する撹乱データは、必要があれば、データ処理と同じ処理を行った処理済の撹乱用データを使用する。また、撹乱用データは、データ処理ごとにランダムに設定する。このようにすることにより、データ処理において、本来のデータを使わず、毎回異なった変形したデータを使うことができる。そのため、電流波形からデータを推定することが困難にする。
【００１６】具体的には、まず、撹乱用データXiを作成し、データD1を変形し、変形データH1を作成する。変形の方法には、排他的論理和や加算、乗算などがある。データ処理では、変形データH1を使い、データ処理を行い、処理済み変形データH2を生成する。本来は、データD1を使用するのであるが、ここでは、変形データH1を使用しているため、変形データH1を処理する電流波形からデータD1のデータを推定することは困難である。変形データH1は、処理ごとに異なる撹乱用データXiにて、変形されているため、毎回、異なるデータとなっている。そのため、変形データH1を処理する電流波形も、毎回、異なった波形となり、その波形から変形データH1を推定しても意味がないことになる。
【００１７】撹乱用データXiもデータD1と同じようにデータ処理をする必要がある場合は、撹乱用データXiを入力とし、データ処理を行い、 処理済み撹乱用データXoを作成する。そして、処理済み撹乱用データXoを使って処理済み変形データH2を処理し、入力データD1を入力データ処理手段で処理した結果である処理済みデータD2を得る。
【００１８】データ変形の方法が異なったものを使用する必要がある場合などでは、データ変形を連結して、実行する必要がある場合がある。その場合は、データ変形、変形データ処理、撹乱用データ処理、データ逆変形処理を入れ子にしたり、組み合わせることにより、本来のデータをデータ処理しないようにデータ変形を連続させる。
【００１９】本発明は、暗号アルゴリズムでの、データを入れ替える転置や換字、あるいは、テーブルのアクセスなどの情報隠蔽に使うことができる。データの入れ替えの場合は、排他的論理和をデータ変形に使い、データ処理において、変形したデータと撹乱用データを同じように処理し、常に、変形したデータと撹乱用データを排他的論理和を実行すると、本来のデータを得ることができるように変形処理を行うことが、有効な方法の一つである。」
　
（う）「【００７５】次に、対称暗号DES(data encryption standard)を例にした実施例について説明する。本発明は、他の暗号にも使うことができる。暗号については、共立出版株式会社岡本栄司著「暗号理論入門」などに、記載されている。
【００７６】DESは、６４ビットのデータ（平文か暗号文）を５６ビットの暗号鍵で、暗号化と復号化を行う。暗号化と復号化で同じ暗号鍵を使用するため、対称暗号と呼ばれている。DESは、トランプをきって、ランダムにするように、平分（暗号化される文）のビットをランダムに入れ替え暗号化する。データの入れ替えは、暗号鍵にしたがって行う。復号化する時は、暗号鍵に従い入れ替えた順と逆に入れ替えを行い、データを元に戻す。DESの処理での入れ替えは、ビット単位と複数ビットまとまった単位での二つの入れ替え方法がある。前者は、転置と呼び、後者は、換字と呼ぶ。
【００７７】図９を用いて、DESの暗号化の方法を説明する。変形処理ａ（９０１）と変形処理ｂ(９０４)、逆変形処理(９１６)は、本発明に関するものであり、DESの本来の暗号処理には関係がない。暗号文は、まず、初期転置(IP：Initisal Permutation)９０２で転置させられる。これは、初期転置テーブルに従い、ビット単位で、暗号文の６４ビットのデータを入れ替える。これ以降、初期転置の逆転置（IP-1）９１６まで、一組の操作を１６段行う。
【００７８】各１段の処理は、前段の結果の前半か後半の３２ビットのデータと暗号鍵を入力としてｆ関数９０３と呼ばれる処理を行い、その出力を前段の残りの半分のビットを使って排他的論理和９０９を取る操作を行う。暗号鍵も、入れ替えが行われる。暗号鍵に対して、まず、ＰＣ−１というテーブルを使った選択転置PC-1（９０５）が行われる。その後、ＰＣ−２というテーブルを使った選択転置ＰＣ−２ （９０８）を行い、暗号鍵の入れ替えを行う。次の段では、２８ビットづつをＬＳテーブルにしたがって巡回させて使用する。
【００７９】本実施例では、IP処理の前に、平文を変形するための変形処理ａ（９０１）と暗号鍵を変形するための変形処理ｂ(９０４)、そして、最期に逆変形する処理(９１６)を追加する。変形処理ａ（９０１）は、平文を変形し、IP処理（９０２）やｆ関数（９０３）の処理で、平文そのものを処理するのではなく、変形した平文を処理することにより、その処理の電流波形から平文のデータを推定できないようにするものである。変形処理ｂ（９０４）は、PC-1処理(９０５)やＬＳ処理(９０７)、ＰＣ−２処理(９０８)、ｆ関数（９０３）で暗号鍵そのものを処理するのではなく変形した暗号鍵を処理することにより、その処理の電流波形から暗号鍵の推定を困難にするものである。
【００８０】ｆ関数３０３の処理を、図１０に示す。まず、ｆ関数への入力文を選択的転置行列Eに基づいて、選択的転置を行う（１００２）。次に、選択的転置を行った入力データと暗号鍵との排他的論理和をとり（１００３）、Ｓボックスの処理を行い（１００４）、Ｐ転置処理を行う（１００５）。Ｓボックスの処理は、１００３の排他的論理和の処理結果である４８ビットから６ビットづつ取り出し、８つのＳボックステーブルの行番号と列番号を求め、４ビットのデータを生成する処理である。各Ｓボックステーブルは、６ビットごとで示されているデータの位置により異なる。Ｐ転置処理は、Ｐ転置テーブルに従い、３２ビットのビット位置を入れ替える操作である。」
　
（え）「【００８８】次に、ｆ関数９０３の処理について説明する。ｆ関数は、図１０に示すように、選択的転置E処理（１００２）、暗号鍵と選択的転置の実行結果の排他的論理和(１００３)、Ｓボックス処理(１００４)、Ｐ転置処理(１００５)からなる。」
　
（お）「【００９３】次に、Ｓボックスの処理について図１８を用いて説明する。Ｓボックス入力データSinputXから６ビットずつ取り出し、８つのＳボックスについて処理を行う。DESで使われている１番目のＳボックスを、図２５で示す。８つのＳボックスは形式は同じであるが、それぞれフィールドのデータが異なる。それぞれのＳボックスの処理では、まず、Ｓボックス入力データSinput（SinputはSinputXの誤記と認められる。）の上位i番目の６ビットのサブデータSubSinputX(i)を取り出す（１８０５）。前もって作成しておいたＳボックスを変形した変形Ｓボックステーブルのアドレス撹乱用データXsa(i)とSubSinputX(i)をXORし、SubSinputXXsa(i)を生成する（１８０６）。そのSubSinputXsa(i)をＳボックス入力データ撹乱用データXSinputの上位i番目の６ビットとXORし、SubSinputXsa(i)を生成する（１８０７）。SubSinputXsa(i)は、i番目のＳボックスを取り出すための本物のアドレスデータに対して、アドレス撹乱用データXsa(i)が排他的論理和された値である。SubSinputX(i)とXSinput(i)を排他的論理和（XOR）すると、それは、真のデータに戻るのであるので、XSinput(i)と排他的論理和する前に、SubSinputX(i)とXsa(i)の排他的論理和を行い、その後で、XSinput(i)を排他的論理和（XOR）を実行する。こうすることにより、本物のデータの処理を行う必要がなくなり、その電流波形からデータを推定することが困難になっている。次に、SubSinputXsa(i)を使って、変形Ｓボックステーブルのアドレスを計算する（１８０８）。本来のＳボックスのテーブルを参照するためのアドレスが変形されているため、テーブルをあらかじめ変形しておく必要がある。計算したアドレスを元に、変形ＳボックステーブルＳ（ｉ）からＳボックス出力データSoutputX3(i)を取り出す（１８０９）。そして、同時にＳボックスの出力データSoutputX3(i)用の撹乱用データX3(i)を取り出す（１８１０）。８つのＳボックスを処理し、 SoutputX3(i)とX3(i)をiを１から８までのデータをそれぞれ連結することによって、SoutputX3とX3を生成する。これ以降は、処理データは、SoutputX3となり、撹乱用データはX3となる。これは、請求項２１の実施例である。」
　
（か）「【００９４】次に、変形Ｓボックステーブルの生成方法について図２３と図２４を用いて説明する。ここのＳボックスで、Ｓ（ｉ）ボックス用のアドレス撹乱用データXsa(i)とデータ撹乱用データX3(i)を作成する（２３０６）。Xsa(i)は６ビットであり、X3(i)は４ビットである。撹乱用データX3は４ビットずつ作成したX3(i)を８個集めた３２ビットのデータである。次に、変形Ｓ(ｉ)ボックステーブル作成ルーチンを呼びだす（２３０７）。i番目の変形Ｓボックステーブル作成ルーチンの処理を図２４で説明する。kは行番を指定し、ｌは列番号を指定する。ｋ行ｌ列の処理は２４０８から２４１３である。１番目のＳボックスのテーブルは、図２５に示す通りである。まず、i番目のオリジナルのＳボックスの行番号ｋ列番号ｌのデータdを取り出す（２４０８）。そして、そのデータｄと撹乱用データX3(i)を排他的論理和を取り、それをｄ２とする（２４０９）。これは、撹乱用データを“７”とすると、元のＳボックスのデータ２５０４に対して、その結果は２６０４になる。これをすべてのフィールドに行うと、図２６のようになる。図２６のテーブルは、図２５の１番目のＳボックスのデータに対して、撹乱用データを“７”として排他的論理和を取ったものである。
【００９５】次に、アドレスの撹乱を行う。まず、Xsa1をXsa(i)の上位１ビットと下位１ビットから作った２ビットとし、Xsa2を Xsa(i)の上位２ビットから５ビットから作った４ビットのデータとする。これは、Ｓボックスのアドレスの計算方法に由来している。そして、図２６の行番号と列番号をそれぞれｋとｌとすると、それぞれにXsa1とXsa2を排他的論理和を行う（２４１２）。新しくできた行番号と列番号をｋ２とｌ２とすると、i番目の変形ＳボックステーブルＳ（ｉ）のk2行l2列にデータd2を格納する（２４１３）。この処理の例を図２７に示す。図２７は、図２６の行と列に対して撹乱用データとして“２”と“９”を選んで作成したものである。わかりやすいように、行と列のデータの位置はそのままにして行と列の番号だけを変更している。図２５で、３行１列のデータ１２（２５０４）は、図２７では、１行８列に移り、値が１１に変形されている。この例では、データの撹乱用データは“７”であり、アドレス用の撹乱データは行が“２”であり、列が“９”である。このようにして８つのＳボックスを変形する。本実施例では、この処理は、DESの最初に行っておく。変形したＳボックステーブルは、DESの１６段で使用する。これは、請求項５の実施例でもある。」
　
（き）「【００９６】Ｓボックスの処理が終了すると、処理データは、３２ビットのSoutputX3となり、撹乱用データは３２ビットのX3となる。これが、ｆ関数の最後の処理である転置Ｐ処理（１００５）の入力となる。転置Ｐ処理を図１９を用いて説明する。Ｓボックスの出力であるSinputX3を転置Ｐし、SinputX3Pを生成する（１９０２）。SinputX3の撹乱用データX3を転置Ｐし、X3Pを生成する（１９０３）。転地Ｐに使用するテーブルは図２９の通りである。このテーブルの使い方もIP処理のテーブルと同じである。
【００９７】ｆ関数の処理が終わると、転置Ｐ処理と前段の結果のXORを行う（９０９とか９１４）である。これは、まず、Ｓボックスの結果を転置ＰしたSinputX3Pと前段の結果をXORする（２００２）。そして、X3Pと前段の撹乱用データＸをXORする（２００３）。このXORの処理は、選択的転置E処理結果と暗号鍵のXOR処理（１７０１）と同じである。
【００９８】DESでは、最後にIP-1処理（９１５）を行う。この処理を図２１に示す。IP-1処理は、IP処理と似たようなビットの並びの入れ替え処理であり、IPテーブルの代わりにIP-1テーブルを使用する（２１０２）。これまでの処理結果をIP-1処理し、同様に撹乱用データXをIP-1処理する（２１０３）。
【００９９】最後に、正しい処理結果に戻すために、逆変形処理を行う（９１６）。逆変形処理を図２２に示す。IP-1処理結果をIP-1処理した撹乱用データＸでXORすることにより、正しい結果を求める。ここで、初めて、変形されていない正しい処理結果が得られる。」
　
　
　上記（あ）の「【発明の属する技術分野】本発明は、機密性の高いICカードなどの耐タンパ装置に関するものである。　・・・・＜中略＞・・・・
【０００７】ICカード用チップを構成しているCMOSは、出力状態が１から０あるいは０から１に変わった時に電流を消費する。特に、データバス２０３のバスは、大きな電気容量を持つため、バスの値が１から０あるいは０から１に変わると、大きな電流を消費する。そのため、消費電流を観測すれば、ICカード用チップの中で、何が動作しているか分かる可能性を示唆している。」及び、
　上記（い）の「【発明が解決しようとする課題】本発明の課題は、ICカード用チップでのデータ処理と消費電流との関連性を減らすことである。」の記載からすると、
　引用文献１に記載の事項は、従来の技術におけるICカード用チップでのデータ処理と消費電流との関連性を減らすことに関するものであるから、この引用文献１においてICカード用チップは、従来のICカード用チップと同様なものと認められる。
　そして、上記（あ）の「【０００４】ICカード用チップの構成は、基本的にマイクロコンピュータと同じような構成である。その構成は、図２に示すように、中央演算装置２０１、記憶装置２０４、入出力ポート２０７、コ・プロセッサ２０２からなる。中央処理装置２０１は、論理演算や算術演算などを行う装置であり、記憶装置２０４は、プログラムやデータを格納する装置である。入出力ポートは、リーダライタと通信を行う装置である。コ・プロセッサは、剰余演算を行うための特別な演算装置であり、非対称暗号であるRSAの演算などに用いられる装置である。ICカード用プロセッサの中には、コ・プロセッサを持たないものも多くある。データバス２０３は、各装置を接続するバスである。」と、
　上記（い）の「【課題を解決するための手段】ICカード用チップに代表される耐タンパ装置は、プログラムを格納するプログラム格納部と、データを保存するデータ格納部を持つ記憶装置と、プログラムに従い、所定の処理を実行し、データ処理を行う中央演算装置を持ち、プログラムは、中央演算装置に実行の指示を与える処理命令から構成される一つ以上のデータ処理手段からなる、情報処理装置として考えることができる。　・・・・＜中略＞・・・・　本発明は、処理しているデータとICカード用チップの消費電流の関連性を減らすための方法として、処理するデータを撹乱用データで変形し、データの処理を変形したデータで処理し、処理後、撹乱用データを使って逆変形し、正しい処理結果を求めるものである。
　・・・・＜中略＞・・・・
【００１９】本発明は、暗号アルゴリズムでの、データを入れ替える転置や換字、あるいは、テーブルのアクセスなどの情報隠蔽に使うことができる。」と、
　上記（う）の「【００７５】次に、対称暗号DES(data encryption standard)を例にした実施例について説明する。本発明は、他の暗号にも使うことができる。」の記載及び図２をふまえると、
　引用文献１には、プログラムを格納するプログラム格納部と、データを保存するデータ格納部を持つ記憶装置と、プログラムに従い、所定の処理を実行し、データ処理を行う中央演算装置を持ち、対称暗号DESのプログラムは、中央演算装置に実行の指示を与える処理命令から構成される一つ以上のデータ処理手段からなる情報処理装置が記載されている。
　
　上記（う）の「【００７７】図９を用いて、DESの暗号化の方法を説明する。　・・・・＜中略＞・・・・　暗号文は、まず、初期転置(IP：Initisal Permutation)９０２で転置させられる。これは、初期転置テーブルに従い、ビット単位で、暗号文の６４ビットのデータを入れ替える。これ以降、初期転置の逆転置（IP-1）９１６まで、一組の操作を１６段行う。
【００７８】各１段の処理は、前段の結果の前半か後半の３２ビットのデータと暗号鍵を入力としてｆ関数９０３と呼ばれる処理を行い、その出力を前段の残りの半分のビットを使って排他的論理和９０９を取る操作を行う。　・・・・＜中略＞・・・・　
【００８０】ｆ関数３０３の処理を、図１０に示す。まず、ｆ関数への入力文を選択的転置行列Eに基づいて、選択的転置を行う（１００２）。次に、選択的転置を行った入力データと暗号鍵との排他的論理和をとり（１００３）、Ｓボックスの処理を行い（１００４）、Ｐ転置処理を行う（１００５）。Ｓボックスの処理は、１００３の排他的論理和の処理結果である４８ビットから６ビットづつ取り出し、８つのＳボックステーブルの行番号と列番号を求め、４ビットのデータを生成する処理である。」と、
　上記（え）の「【００８８】次に、ｆ関数９０３の処理について説明する。ｆ関数は、図１０に示すように、選択的転置E処理（１００２）、暗号鍵と選択的転置の実行結果の排他的論理和(１００３)、Ｓボックス処理(１００４)、Ｐ転置処理(１００５)からなる。」の記載、及び図９，図１０からすると、
　引用文献１には、DESのｆ関数に含まれるＳボックス処理は、Ｓボックス入力データからＳボックステーブルの行番号と列番号を求め、Ｓボックステーブルから求めた行番号と列番号に対応する４ビットのデータを取り出す８つのＳボックスを有することが記載されている。
　
　上記（お）の「【００９３】次に、Ｓボックスの処理について図１８を用いて説明する。Ｓボックス入力データSinputXから６ビットずつ取り出し、８つのＳボックスについて処理を行う。DESで使われている１番目のＳボックスを、図２５で示す。８つのＳボックスは形式は同じであるが、それぞれフィールドのデータが異なる。それぞれのＳボックスの処理では、まず、Ｓボックス入力データSinput（SinputはSinputXの誤記と認められる。）の上位i番目の６ビットのサブデータSubSinputX(i)を取り出す（１８０５）。前もって作成しておいたＳボックスを変形した変形Ｓボックステーブルのアドレス撹乱用データXsa(i)とSubSinputX(i)をXORし、SubSinputXXsa(i)を生成する（１８０６）。そのSubSinputXsa(i)をＳボックス入力データ撹乱用データXSinputの上位i番目の６ビットとXORし、SubSinputXsa(i)を生成する（１８０７）。SubSinputXsa(i)は、i番目のＳボックスを取り出すための本物のアドレスデータに対して、アドレス撹乱用データXsa(i)が排他的論理和された値である。」の記載及び図１８、そして、上記（い）の「【００１９】本発明は、暗号アルゴリズムでの、データを入れ替える転置や換字、あるいは、テーブルのアクセスなどの情報隠蔽に使うことができる。データの入れ替えの場合は、排他的論理和をデータ変形に使い、データ処理において、変形したデータと撹乱用データを同じように処理し、常に、変形したデータと撹乱用データを排他的論理和を実行すると、本来のデータを得ることができるように変形処理を行うことが、有効な方法の一つである。」の記載をふまえると、
　引用文献１には、Ｓボックス入力データSinputXからＳボックス入力データSinputXの上位i番目の６ビットのサブデータSubSinputX(i)を取り出し、８つの変形Ｓボックステーブルのアドレス撹乱用データXsa(i)を使ってSubSinputX(i)を変形し、i番目のＳボックスを取り出すための本物のアドレスデータに対して、アドレス撹乱用データXsa(i)で変形されたSubSinputXsa(i)を生成することが記載されている。
　
　上記（お）の「【００９３】　・・・・＜中略＞・・・・　次に、SubSinputXsa(i)を使って、変形Ｓボックステーブルのアドレスを計算する（１８０８）。　・・・・＜中略＞・・・・　計算したアドレスを元に、変形ＳボックステーブルＳ（ｉ）からＳボックス出力データSoutputX3(i)を取り出す（１８０９）。そして、同時にＳボックスの出力データSoutputX3(i)用の撹乱用データX3(i)を取り出す（１８１０）。８つのＳボックスを処理し、 SoutputX3(i)とX3(i)をiを１から８までのデータをそれぞれ連結することによって、SoutputX3とX3を生成する。これ以降は、処理データは、SoutputX3となり、撹乱用データはX3となる。」の記載及び図１８からすると、
　引用文献１には、SubSinputXsa(i)を使って、変形Ｓボックステーブルのアドレスを計算し、計算したアドレスを元に、変形ＳボックステーブルＳ（ｉ）からＳボックス出力データSoutputX3(i)を取り出し、同時にＳボックスの出力データSoutputX3(i)用の撹乱用データX3(i)を取り出すと共に、８つのＳボックスを処理して取り出した SoutputX3(i)とX3(i)のiの１から８までのデータをそれぞれ連結することによって、処理データSoutputX3と撹乱用データX3を生成することが記載されている。
　
　上記（か）の「【００９４】次に、変形Ｓボックステーブルの生成方法について図２３と図２４を用いて説明する。ここのＳボックスで、Ｓ（ｉ）ボックス用のアドレス撹乱用データXsa(i)とデータ撹乱用データX3(i)を作成する（２３０６）。Xsa(i)は６ビットであり、X3(i)は４ビットである。撹乱用データX3は４ビットずつ作成したX3(i)を８個集めた３２ビットのデータである。次に、変形Ｓ(ｉ)ボックステーブル作成ルーチンを呼びだす（２３０７）。i番目の変形Ｓボックステーブル作成ルーチンの処理を図２４で説明する。kは行番を指定し、ｌは列番号を指定する。ｋ行ｌ列の処理は２４０８から２４１３である。１番目のＳボックスのテーブルは、図２５に示す通りである。まず、i番目のオリジナルのＳボックスの行番号ｋ列番号ｌのデータdを取り出す（２４０８）。そして、そのデータｄと撹乱用データX3(i)を排他的論理和を取り、それをｄ２とする（２４０９）。
　・・・・＜中略＞・・・・　
【００９５】次に、アドレスの撹乱を行う。まず、Xsa1をXsa(i)の上位１ビットと下位１ビットから作った２ビットとし、Xsa2を Xsa(i)の上位２ビットから５ビットから作った４ビットのデータとする。これは、Ｓボックスのアドレスの計算方法に由来している。そして、図２６の行番号と列番号をそれぞれｋとｌとすると、それぞれにXsa1とXsa2を排他的論理和を行う（２４１２）。新しくできた行番号と列番号をｋ２とｌ２とすると、i番目の変形ＳボックステーブルＳ（ｉ）のk2行l2列にデータd2を格納する（２４１３）。この処理の例を図２７に示す。」の記載及び図２３乃至図２７からすると、
　引用文献１には、Ｓ（ｉ）ボックス用の６ビットのアドレス撹乱用データXsa(i)と４ビットのデータ撹乱用データX3(i)を作成し、i番目のオリジナルのＳボックスの行番号ｋ列番号ｌのデータdを取り出し、取り出したデータｄを撹乱用データX3(i)で変形して、変形データd2を作成し、Ｓ（ｉ）ボックス用のアドレス撹乱用データXsa(i)からXsa1とXsa2を作成し、Ｓボックスのアドレスの行番号ｋと列番号ｌをそれぞれXsa1とXsa2で変形して、変形した行番号k2と列番号l2を作成し、i番目の変形ＳボックステーブルＳ（ｉ）のk2行l2列にデータd2を格納することにより変形Ｓボックステーブルを作成することが記載されている。
　
　上記（き）の「【００９６】Ｓボックスの処理が終了すると、処理データは、３２ビットのSoutputX3となり、撹乱用データは３２ビットのX3となる。これが、ｆ関数の最後の処理である転置Ｐ処理（１００５）の入力となる。転置Ｐ処理を図１９を用いて説明する。Ｓボックスの出力であるSinputX3を転置Ｐし、SinputX3Pを生成する（１９０２）。SinputX3の撹乱用データX3を転置Ｐし、X3Pを生成する（１９０３）。転地Ｐに使用するテーブルは図２９の通りである。このテーブルの使い方もIP処理のテーブルと同じである。
【００９７】ｆ関数の処理が終わると、転置Ｐ処理と前段の結果のXORを行う（９０９とか９１４）である。これは、まず、Ｓボックスの結果を転置ＰしたSinputX3Pと前段の結果をXORする（２００２）。」の記載、及び、
　上記（い）の「【００１５】
【課題を解決するための手段】　・・・・＜中略＞・・・・　本発明は、処理しているデータとICカード用チップの消費電流の関連性を減らすための方法として、処理するデータを撹乱用データで変形し、データの処理を変形したデータで処理し、処理後、撹乱用データを使って逆変形し、正しい処理結果を求めるものである。　・・・・＜中略＞・・・・　
【００１６】具体的には、まず、撹乱用データXiを作成し、データD1を変形し、変形データH1を作成する。変形の方法には、排他的論理和や加算、乗算などがある。データ処理では、変形データH1を使い、データ処理を行い、処理済み変形データH2を生成する。　・・・・＜中略＞・・・・　
【００１７】撹乱用データXiもデータD1と同じようにデータ処理をする必要がある場合は、撹乱用データXiを入力とし、データ処理を行い、 処理済み撹乱用データXoを作成する。そして、処理済み撹乱用データXoを使って処理済み変形データH2を処理し、入力データD1を入力データ処理手段で処理した結果である処理済みデータD2を得る。」の記載をふまえると、
　引用文献１には、ｆ関数の処理が終わると、Ｓボックスの出力SoutputX3を、３２ビットの撹乱用データX3を使って逆変形し、Ｓボックス入力データSinputXをオリジナルのＳボックスで処理した出力を得ることが記載されている。
　
　
　以上より、上記（あ）から（き）の記載及び図２，図９，図１０，図１８，図２３乃至２７をふまえると、引用文献１には、次の発明（以下、「引用発明」という。）が記載されているものと認められる。
　
　プログラムを格納するプログラム格納部と、データを保存するデータ格納部を持つ記憶装置と、プログラムに従い、所定の処理を実行し、データ処理を行う中央演算装置を持ち、対称暗号DESのプログラムは、中央演算装置に実行の指示を与える処理命令から構成される一つ以上のデータ処理手段からなる情報処理装置であって、
　DESのｆ関数に含まれるＳボックス処理は、Ｓボックス入力データからＳボックステーブルの行番号と列番号を求め、Ｓボックステーブルから求めた行番号と列番号に対応する４ビットのデータを取り出す８つのＳボックスを有し、
　Ｓ（ｉ）ボックス用の６ビットのアドレス撹乱用データXsa(i)と４ビットのデータ撹乱用データX3(i)を作成し、i番目のオリジナルのＳボックスの行番号ｋ列番号ｌのデータdを取り出し、取り出したデータｄを撹乱用データX3(i)で変形して、変形データd2を作成し、Ｓ（ｉ）ボックス用のアドレス撹乱用データXsa(i)からXsa1とXsa2を作成し、Ｓボックスのアドレスの行番号ｋと列番号ｌをそれぞれXsa1とXsa2で変形して、変形した行番号k2と列番号l2を作成し、i番目の変形ＳボックステーブルＳ（ｉ）のk2行l2列にデータd2を格納することにより変形Ｓボックステーブルを作成し、
　Ｓボックス入力データSinputXからＳボックス入力データSinputXの上位i番目の６ビットのサブデータSubSinputX(i)を取り出し、８つの変形Ｓボックステーブルのアドレス撹乱用データXsa(i)を使ってSubSinputX(i)を変形し、i番目のＳボックスを取り出すための本物のアドレスデータに対して、アドレス撹乱用データXsa(i)で変形されたSubSinputXsa(i)を生成し、
　SubSinputXsa(i)を使って、変形Ｓボックステーブルのアドレスを計算し、計算したアドレスを元に、変形ＳボックステーブルＳ（ｉ）からＳボックス出力データSoutputX3(i)を取り出し、同時にＳボックスの出力データSoutputX3(i)用の撹乱用データX3(i)を取り出すと共に、８つのＳボックスを処理して取り出した SoutputX3(i)とX3(i)のiの１から８までのデータをそれぞれ連結することによって、処理データSoutputX3と撹乱用データX3を生成し、
　ｆ関数の処理が終わると、Ｓボックスの出力SoutputX3を、３２ビットの撹乱用データX3を使って逆変形し、Ｓボックス入力データSinputXをオリジナルのＳボックスで処理した出力を得ることを特徴とする情報処理装置。
　
　
４．対比
　ここで、本願発明と引用発明とを対比する。 
　
　引用発明の「プログラム格納部」「記憶装置」「中央演算装置」「対称暗号DESのプログラム」「データ処理手段」「情報処理装置」は、それぞれ、
　本願発明の「プログラム格納部」「記憶装置」「中央演算装置」「プログラム」「データ処理手段」「情報処理装置」に相当する。
　
　また、引用発明の「DESのｆ関数に含まれるＳボックス処理は、Ｓボックス入力データからＳボックステーブルの行番号と列番号を求め、Ｓボックステーブルから求めた行番号と列番号に対応する４ビットのデータを取り出す８つのＳボックスを有し、」において、Ｓボックスは、データ処理手段と言えるものであり、Ｓボックス処理において、Ｓボックス入力データからＳボックステーブルの行番号と列番号を求めることは、入力データからインデックスを求めていると言えるものである。また、各Ｓボックスにおいて、Ｓボックステーブルから求めた行番号と列番号に対応する４ビットのデータを取り出していることからすると、Ｓボックスは、行番号と列番号とそれに対応した４ビットのデータから成るものと言える。
　そうしてみると、Ｓボックス入力データからＳボックステーブルの行番号と列番号を求め、Ｓボックステーブルから求めた行番号と列番号に対応する４ビットのデータを取り出すことは、インデックスとそれに対応したデータから成る表を有し、入力データをインデックスとして表引きを行い、インデックスに対応したデータを処理済データとして出力する態様を含むものである。
　従って、引用発明の「DESのｆ関数に含まれるＳボックス処理は、Ｓボックス入力データからＳボックステーブルの行番号と列番号を求め、Ｓボックステーブルから求めた行番号と列番号に対応する４ビットのデータを取り出す８つのＳボックス」は、
　本願発明の「一つのデータ処理手段が、インデックスとそれに対応したデータから成る表を有し、入力データをインデックスとして表引きを行い、インデックスに対応したデータを処理済データとして出力する入力データ処理手段」に相当する。
　
　また、引用発明の「Ｓ（ｉ）ボックス用の６ビットのアドレス撹乱用データXsa(i)と４ビットのデータ撹乱用データX3(i)を作成し、」において、アドレス撹乱用データはインデックスを撹乱するデータと言え、データ撹乱用データはデータを撹乱するデータと言えるものであるから、
　引用発明の「Ｓ（ｉ）ボックス用の６ビットのアドレス撹乱用データXsa(i)と４ビットのデータ撹乱用データX3(i)」と、
　本願発明の「ハミングウエイトの値が常に一定となる第１の撹乱用データX1iと、ハミングウエイトの値が常に一定となる第２の撹乱用データX2i」とは、
　インデックス用撹乱データとデータ用撹乱データである点で共通する。
　
　また、引用発明の「i番目のオリジナルのＳボックスの行番号ｋ列番号ｌのデータdを取り出し、取り出したデータｄを撹乱用データX3(i)で変形して、変形データd2を作成し、Ｓ（ｉ）ボックス用のアドレス撹乱用データXsa(i)からXsa1とXsa2を作成し、Ｓボックスのアドレスの行番号ｋと列番号ｌをそれぞれXsa1とXsa2で変形して、変形した行番号k2と列番号l2を作成し、i番目の変形ＳボックステーブルＳ（ｉ）のk2行l2列にデータd2を格納することにより変形Ｓボックステーブルを作成し、」において、
　i番目のオリジナルのＳボックスの行番号ｋ列番号ｌのデータdを取り出し、取り出したデータｄを撹乱用データX3(i)で変形していることは、データ用撹乱データでインデックスに対応したデータを撹乱することと言え、そして、Ｓ（ｉ）ボックス用のアドレス撹乱用データXsa(i)からXsa1とXsa2を作成し、Ｓボックスのアドレスの行番号ｋと列番号ｌをそれぞれXsa1とXsa2で変形していることは、インデックス用撹乱データでインデックスを撹乱することと言えるから、
　引用発明のi番目の変形ＳボックステーブルＳ（ｉ）のk2行l2列にデータd2を格納することにより変形Ｓボックステーブルを作成する態様は、インデックス用撹乱データでインデックスを撹乱し、データ用撹乱データでインデックスに対応したデータを撹乱することにより生成された変形Ｓボックステーブルを作成すると言える。
　従って、引用発明の「i番目のオリジナルのＳボックスの行番号ｋ列番号ｌのデータdを取り出し、取り出したデータｄを撹乱用データX3(i)で変形して、変形データd2を作成し、Ｓ（ｉ）ボックス用のアドレス撹乱用データXsa(i)からXsa1とXsa2を作成し、Ｓボックスのアドレスの行番号ｋと列番号ｌをそれぞれXsa1とXsa2で変形して、変形した行番号k2と列番号l2を作成し、i番目の変形ＳボックステーブルＳ（ｉ）のk2行l2列にデータd2を格納することにより変形Ｓボックステーブルを作成し、」は、インデックス用撹乱データ及びデータ用撹乱データがそれぞれ、Ｓ（ｉ）ボックス用のアドレス撹乱用データXsa(i)及び撹乱用データX3(i)である点を除けば、
　本願発明の「第１撹乱用データX1iでインデックスを撹乱し、第２撹乱用データX2iでインデックスに対応したデータを撹乱することにより生成された変形済み表を使い、」に相当する。
　
　また、引用発明の「Ｓボックス入力データSinputXからＳボックス入力データSinputXの上位i番目の６ビットのサブデータSubSinputX(i)を取り出し、８つの変形Ｓボックステーブルのアドレス撹乱用データXsa(i)を使ってSubSinputX(i)を変形し、i番目のＳボックスを取り出すための本物のアドレスデータに対して、アドレス撹乱用データXsa(i)で変形されたSubSinputXsa(i)を生成し、」において、
　アドレス撹乱用データは、インデックス用撹乱データと言えることから、引用発明の上記態様は、インデックス用撹乱データを使ってＳボックス入力データを変形し、インデックス用撹乱データで変形された変形Ｓボックス入力データを作成するデータ変形手段と言える。
　従って、引用発明の「Ｓボックス入力データSinputXからＳボックス入力データSinputXの上位i番目の６ビットのサブデータSubSinputX(i)を取り出し、８つの変形Ｓボックステーブルのアドレス撹乱用データXsa(i)を使ってSubSinputX(i)を変形し、i番目のＳボックスを取り出すための本物のアドレスデータに対して、アドレス撹乱用データXsa(i)で変形されたSubSinputXsa(i)を生成し、」は、インデックス撹乱用データがアドレス撹乱用データXsa(i)である点を除けば、
　本願発明の「前記撹乱用データXiを使って入力データD1を変形し、変形データH1を作成するデータ変形手段」に相当する。
　
　また、引用発明の「SubSinputXsa(i)を使って、変形Ｓボックステーブルのアドレスを計算し、計算したアドレスを元に、変形ＳボックステーブルＳ（ｉ）からＳボックス出力データSoutputX3(i)を取り出し、同時にＳボックスの出力データSoutputX3(i)用の撹乱用データX3(i)を取り出すと共に、８つのＳボックスを処理して取り出した SoutputX3(i)とX3(i)のiの１から８までのデータをそれぞれ連結することによって、処理データSoutputX3と撹乱用データX3を生成し、」において、
　SubSinputXsa(i)は、変形入力データと言え、変形Ｓボックステーブルのアドレスはインデックスと言えるものであるから、引用発明のSubSinputXsa(i)を使って、変形Ｓボックステーブルのアドレスを計算する態様は、変形入力データをインデックスとする態様を含むものである。また、変形Ｓボックステーブルは、変形済み表に対応するものである。
　これらをふまえると、引用発明の、計算したアドレスを元に、変形ＳボックステーブルＳ（ｉ）からＳボックス出力データSoutputX3(i)を取り出し、SoutputX3(i)をiを１から８までのデータをそれぞれ連結することによって、処理データSoutputX3を生成する態様は、変形入力データをインデックスとして、変形済み表を引いて変形出力データを取り出す処理手段と言える。
　従って、引用発明の「SubSinputXsa(i)を使って、変形Ｓボックステーブルのアドレスを計算し、計算したアドレスを元に、変形ＳボックステーブルＳ（ｉ）からＳボックス出力データSoutputX3(i)を取り出し、同時にＳボックスの出力データSoutputX3(i)用の撹乱用データX3(i)を取り出すと共に、８つのＳボックスを処理して取り出した SoutputX3(i)とX3(i)のiの１から８までのデータをそれぞれ連結することによって、処理データSoutputX3と撹乱用データX3を生成し、」は、
　本願発明の「変形データH1をインデックスとして、前記変形済み表を引いて変形データＨ２を取り出す変形済み表アクセス処理手段」に相当する。
　
　また、引用発明の「変形ＳボックステーブルＳ（ｉ）からＳボックス出力データSoutputX3(i)を取り出し、同時にＳボックスの出力データSoutputX3(i)用の撹乱用データX3(i)を取り出すと共に、８つのＳボックスを処理して取り出した SoutputX3(i)とX3(i)のiの１から８までのデータをそれぞれ連結することによって、処理データSoutputX3と撹乱用データX3を生成し、」において、
　Ｓボックスの出力データSoutputX3(i)用の撹乱用データX3(i)は、データ用撹乱データであると言えることから、
　引用発明の、変形ＳボックステーブルＳ（ｉ）からＳボックスの出力データSoutputX3(i)用の撹乱用データX3(i)を取り出すと共に、８つのＳボックスを処理して取り出した X3(i)をiを１から８までのデータをそれぞれ連結することによって、撹乱用データX3を生成するという態様は、撹乱データが予め納められた各変形Ｓボックステーブルから一ずつ取り出し、取り出した各撹乱データを連結してデータ用撹乱データとするものと言える。
　従って、引用発明の「変形ＳボックステーブルＳ（ｉ）からＳボックス出力データSoutputX3(i)を取り出し、同時にＳボックスの出力データSoutputX3(i)用の撹乱用データX3(i)を取り出すと共に、８つのＳボックスを処理して取り出した SoutputX3(i)とX3(i)のiの１から８までのデータをそれぞれ連結することによって、処理データSoutputX3と撹乱用データX3を生成し、」と、
　本願発明の「前記攪乱用データは、発生させたい乱数のビット数の約数となるビット数のハミングウエイト一定である乱数が予め収められたテーブルから乱数を一ずつ取り出し、発生させたい乱数のビット数に達するまで結合し、前記各攪乱用データとする」とは、
　データ用撹乱データは、テーブルから一ずつ取り出した各撹乱データを連結して撹乱用データとする点で共通する。
　
　また、引用発明の「ｆ関数の処理が終わると、Ｓボックスの出力SoutputX3を、３２ビットの撹乱用データX3を使って逆変形し、Ｓボックス入力データSinputXをオリジナルのＳボックスで処理した出力を得る」において、
　Ｓボックスの出力SoutputX3、３２ビットの撹乱用データX3、Ｓボックス入力データSinputXは、それぞれ、変形出力データ、データ用撹乱データ、入力データに対応するものであるから、
　引用発明において、ｆ関数の処理が終わると、Ｓボックスの出力SoutputX3を、３２ビットの撹乱用データX3を使って逆変形し、Ｓボックス入力データSinputXをオリジナルのＳボックスで処理した出力を得ることは、変形出力データをデータ用撹乱データを使って逆変形し、入力データをオリジナルのＳボックスで処理した出力を得る処理手段と言える。
　従って、引用発明の「ｆ関数の処理が終わると、Ｓボックスの出力SoutputX3を、３２ビットの撹乱用データX3を使って逆変形し、Ｓボックス入力データSinputXをオリジナルのＳボックスで処理した出力を得る」は、逆変形に用いるデータ用撹乱データが３２ビットの撹乱用データX3である点を除けば、
　本願発明の「変形データＨ２を第２撹乱用データX2iを用いて、入力データD1を入力データ処理手段で処理した結果である処理済データD2を得るデータ逆変形処理手段」に相当する。
　
　
　よって、本願発明と引用発明とは、以下の点で一致し、また、相違する。
　
（一致点）
　プログラムを格納するプログラム格納部、データを保存するデータ格納部を有する記憶装置と
　プログラムにしたがい、所定の処理を実行する中央演算装置を有し、
プログラムは、中央演算装置の指示を与える処理命令から構成される一つ以上のデータ処理手段を有し、
　一つのデータ処理手段が、インデックスとそれに対応したデータから成る表を有し、入力データをインデックスとして表引きを行い、インデックスに対応したデータを処理済データとして出力する入力データ処理手段を有し、且つ
　インデックス用撹乱データと、
　データ用撹乱データと、
　インデックス用撹乱データでインデックスを撹乱し、データ用撹乱データでインデックスに対応したデータを撹乱することにより生成された変形済み表を使い、
　変形データH1をインデックスとして、前記変形済み表を引いて変形データH2を取り出す変形済み表アクセス処理手段と、
　変形データH2をデータ用撹乱データを用いて、入力データD1を入力データ処理手段で処理した結果である処理済データD2を得るデータ逆変形処理手段とを有し、
　データ用撹乱データは、テーブルから一ずつ取り出した各撹乱データを連結して撹乱用データとすることを特徴とする情報処理装置。
　
（相違点１）
　インデックス用撹乱データが、
　本願発明は、ハミングウエイトの値が常に一定となる第１の撹乱用データX1iであるのに対し、
　引用発明は、８つのＳ（ｉ）ボックス用の６ビットのアドレス撹乱用データXsa(i)である点。
　
（相違点２）
　データ用撹乱データが、
　本願発明は、ハミングウエイトの値が常に一定となる第２の撹乱用データX2iであるのに対し、
　引用発明は、８つの４ビットのデータ撹乱用データX3(i)である点。
　
（相違点３）
　インデックス用撹乱データは、
　本願発明は、発生させたい乱数のビット数の約数となるビット数のハミングウエイト一定である乱数が予め収められたテーブルから乱数を一ずつ取り出し、発生させたい乱数のビット数に達するまで結合したものであるのに対し、
　引用発明は、８つのＳ（ｉ）ボックス用の６ビットのアドレス撹乱用データXsa(i)をどの様に作成しているか明らかではない点。
　
（相違点４）
　データ用撹乱データは、
　本願発明は、発生させたい乱数のビット数の約数となるビット数のハミングウエイト一定である乱数が予め収められたテーブルから乱数を一ずつ取り出し、発生させたい乱数のビット数に達するまで結合したものであるのに対し、
　引用発明は、変形ＳボックステーブルＳ（ｉ）から取り出したＳボックスの出力データSoutputX3(i)用の撹乱用データX3(i)のiの１から８までのデータをそれぞれ連結することによって、撹乱用データX3を生成するものである点。
　
　
５．判断
　上記相違点１及び２について検討する。
　原査定の拒絶理由に引用された刊行物である特開２０００−６６５８５号公報（以下、「引用文献２」という。）において、
「【００４５】図４、図５ａ、および図５ｂにおいて、
ビット列の１の数、すなわちハミング重みをＨ（ａ）で定義する。DPA では、データ暗号化処理に伴う消費電力の差異を観測して暗号化鍵に関する情報を収集する。上記マスクを用いたデータの隠蔽により、外界からの消費電力の計測と処理されるデータの対応をとることが困難となる
【００４６】したがって、図４、図５ａ、および図５ｂにおいて、
Ｈ（ａ）＝Ｈ（ａ￣）＝Ｈ（ｂ）＝Ｈ（ｂ￣）＝ｎ／２＝１６の条件を満たすマスクの選択（以下、マスクのハミング重みが等しい）ならば安全性は高い。ここでマスクａおよびｂのビット数ｎは32であるので、マスクａ、マスクｂ、およびそれらのビット反転のビット重みがそれぞれ16であるマスク値を使用することが推奨される。ただし、理想的には上記のようにマスクのハミング重みがマスクのビット長の丁度半分であるマスクを使用することが推奨される
【００４７】すなわち、各マスクのハミング重みが極端に偏っていなければ、外界からの計測でマスクを判別することは容易でなく、ＤＰＡ対策としての効果が得られる。
【００４８】さらに、図４のDES の拡大転置２６の特性に着目する。上記ハミング重みに着目したマスク値の選択と同様の理由から、排他的論理和３２a および３２ｂにおいて加えられる、E （a ）とE （ａ￣）のハミング重みが等しくなるマスクを選択する。すなわち、H （Ｅ（ａ））＝H （Ｅ（ａ￣））を満足するマスクを選択する。
【００４９】上記マスクの条件をDES の実装に当てはめると、例えばマスクa に対しては、マスクa を４ビットづつ区切ったときの各ブロックの“第１ビット”（左端のビット）の１の数＝マスクa を４ビットづつ区切ったときの各ブロックの“第４ビット”（右端のビット）の１の数＝４の条件を満たすことを要求する。すなわち、上記条件を満たすマスクa およびマスクｂの選択を特徴とする。上記条件を満たすマスク値の例として、(10000011111011011110010100100001)2   や(11011010011001010011010110001010)2   などが使用できる。
【００５０】ただし、理想的には上記条件を満たすマスク値を使用することが推奨されるが、「マスクa を４ビットづつ区切ったときの各ブロックの“第１ビット”の１の数」と「マスクa を４ビットづつ区切ったときの各ブロックの“第４ビット”の１の数」が、極端に偏っていなければ同様の効果が得られる。」（この摘記事項中の下線は当審で付与したものである。）と開示されているように、
　マスクを用いてデータを隠蔽する際に、マスクのハミング重みがマスクのビット長の丁度半分であるマスクを使用することは周知の事項である。
　そして、原査定の拒絶理由に引用された刊行物である特開２０００−１６５３７５号公報（以下、「引用文献３」という。）において、
「【００３１】選択的転置処理の手順を説明する前に、本実施例における選択的データ転置で使用するデータについて説明する。ｆ関数に入力されるデータは、図６に示すように、前の処理で
正常データ６０２とそのビット６０３を反転したビット反転データの組にして入力される。このような組で扱うと、常に、“０”のビットの数と“１”のビットの数は一定になる。例えば、正常データのビットが、“００１１１１００”であれば、ビット反転データは“１１００００１１”となり、正常データとそのビット反転データの組での“０”のビットの数は８であり、“１”のビットの数、すなわちハミングウェイトは８である
そのため、正常データとそのビット反転データを組で、データバス（２０３）に転送したならば、組における“０”と“１”のビットの数が常に一定になるため、データの依存性が消費電流に反映されないという特徴がある
正常データとそのビット反転データを組でデータ転送した場合、“１”から“０”あるいは、“０”から“１”に値が変わる数は、プリチャージの状態の前後で、一定になり、データによる消費電流依存性が減る
正常データだけでは、ハミングウェイトは一定でないため、その電流消費依存性が生じる。正常データとそのビット反転データの組を一緒にデータ転送し、ハミングウェイトをそろえると、転送するデータによる電流消費依存性は減る
　データによる消費電流依存性を減らすために、データのハミングウェイトを常に一定にそろえることも周知の事項であることを考え合わせると、
　引用発明において、８つのＳ（ｉ）ボックス用の６ビットのアドレス撹乱用データXsa(i)及び８つの４ビットのデータ撹乱用データX3(i)のハミング重みを、常に各撹乱用データのビット長の丁度半分となるようにそろえることは、当業者が容易になし得たことである。
　よって、相違点１及び２は格別なものではない。
　
　
　上記相違点３及び４について検討する。
　本願の出願日前に頒布された刊行物である特開２０００−５９３５４号公報（以下、「周知例」という。）において、
「【００１０】図４は送信情報を暗号化し、また復号するためのセッション鍵を生成するための鍵テーブルである。可搬記録媒体内、あるいは可搬記録媒体のデータを読み込んで処理する端末装置内には、図４（ａ）、（ｂ）に示すような
鍵テーブルが格納されている。鍵テーブルは、暗号鍵を生成するための暗号鍵データと、これに対応する指標からなっている。可搬記録媒体Ａには、指標１、２、……ｎに対応して、例えば、８バイトの暗号鍵情報
ａ11ａ12……ａ18
ａ21ａ22……ａ28
・
・
ａn1ａn2……ａn8
が格納される
可搬記録媒体Ｂには、指標１、２、……ｎに対応して、８バイトの暗号鍵情報
ｂ11ｂ12……ｂ18
ｂ21ｂ22……ｂ28
・
・
・
ｂn1ｂn2……ｂn8
が格納される
可搬記録媒体Ａの指標「３」に対応する暗号鍵データの先頭４バイト、可搬記録媒体Ｂの指標「４」に対応する暗号鍵データの指標４バイトを組み合わせた
ａ31ａ32ａ33ａ34ｂ45ｂ46ｂ47ｂ48
がセッション鍵となる
【００１１】図５（ａ）に示すように、送信情報Ｍは前記指標の組み合わせに対応して生成したセッション鍵「ａ31ａ32ａ33ａ34ｂ45ｂ46ｂ47ｂ48」を用いて暗号化され、暗号文Ｃが得られる。また、図５（ｂ）に示すように、このセッション鍵を利用してＣからＭへ復号される。
【００１２】このようなセッション鍵鍵生成方法を用いてデータを暗号化して送信し、復号する場合を図６により説明する。
上記したように、可搬記録媒体Ａ、可搬記録媒体Ｂからランダムに発生させた指標の組み合わせによりセッション鍵が得られ
テーブルの指標「３」、「４」が得られる。受信側の可搬記録媒体にも同じ鍵テーブルが格納されているので、指標「３」、「４」が分かると、鍵テーブルからセッション鍵「ａ31ａ32ａ33ａ34ｂ45ｂ46ｂ47ｂ48」が得られる
　鍵テーブルから得られる４バイトの暗号鍵データを組み合わせて８バイトのセッション鍵とすることは周知の事項である。
　ここで、セッション鍵はデータを暗号化して暗号文を得るためのデータであって、データの暗号化は、データを撹乱するいうことを含むものであることからすると、セッション鍵はデータ撹乱用データであると言え、鍵テーブルの暗号鍵データの長さの４バイトは、発生させたいセッション鍵の長さの８バイトと約数の関係にあることは明らかである。
　そうしてみると、テーブルから得られる発生させたいデータ撹乱用データの長さの約数となる長さの撹乱データを組み合わせてデータ撹乱用データとすることは、周知例に開示されているように知られたものであり、
　そして、引用文献２の上記摘記事項中に「【００５０】ただし、理想的には上記条件を満たすマスク値を使用することが推奨されるが、「マスクa を４ビットづつ区切ったときの各ブロックの“第１ビット”の１の数」と「マスクa を４ビットづつ区切ったときの各ブロックの“第４ビット”の１の数」が、極端に偏っていなければ同様の効果が得られる。」と開示されているように、マスクを構成する各ブロックのハミング重みが偏らないようにすること、即ち、撹乱用データを構成する各撹乱データのハミング重みを偏りのないものとすることは周知の事項であり、更に、引用文献３に開示されているように、データによる消費電流依存性を減らすために、データのハミングウェイトを常に一定にそろえることも周知の事項であることを考え合わせると、
　引用発明において、テーブルから得られる発生させたいアドレス撹乱用データの長さの約数となる長さのハミング重みが一定で偏りのない撹乱データを組み合わせて、８つのＳ（ｉ）ボックス用の６ビットのアドレス撹乱用データXsa(i)を作成するようにすると共に、テーブルから得られる発生させたいデータ撹乱用データの長さの約数となる長さのハミング重みが一定で偏りのない８つの X3(i)をそれぞれ連結することによって、撹乱用データX3を生成するようにすることは、当業者が容易になし得たことである。
　よって、相違点３及び４は格別なものではない。
　
　
　上記で検討したように、相違点１乃至４は格別なものではなく、本願発明の構成によってもたらされる効果も、当業者であれば予測可能なものに過ぎず格別なものとは認められない。
　
　
６．結び
　以上の通り、本願発明は、引用発明及び周知事項に基づいて、当業者が容易に発明をすることができたものであるから、特許法第２９条第２項の規定により特許を受けることができない。
　よって、結論のとおり審決する。