• ポートフォリオ機能


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

  • この表をプリントする
PDF PDFをダウンロード
審決分類 審判 査定不服 2項進歩性 特許、登録しない(前置又は当審拒絶理由) H04L
管理番号 1212044
審判番号 不服2007-27353  
総通号数 124 
発行国 日本国特許庁(JP) 
公報種別 特許審決公報 
発行日 2010-04-30 
種別 拒絶査定不服の審決 
審判請求日 2007-10-04 
確定日 2010-02-18 
事件の表示 特願2001- 46250「情報処理装置」拒絶査定不服審判事件〔平成14年 8月30日出願公開、特開2002-247025〕について、次のとおり審決する。 
結論 本件審判の請求は、成り立たない。 
理由 1.手続の経緯
本願は、平成13年2月22日の出願であって、平成19年5月24日付けで拒絶理由通知がなされ、同年7月30日付けで手続補正がなされたが、同年8月30日付けで拒絶査定がなされ、これに対して、同年10月4日に審判請求がなされたものである。


2.本願発明
本願の請求項5に係る発明(以下、「本願発明」という。)は、平成19年7月30日付けの手続補正書によって補正された特許請求の範囲の請求項5に記載された、次の通りのものである。

「プログラムを格納するプログラム格納部、データを保存するデータ格納部を有する記憶装置と
プログラムにしたがい、所定の処理を実行する中央演算装置を有し、
プログラムは、中央演算装置の指示を与える処理命令から構成される一つ以上のデータ処理手段を有し、
一つのデータ処理手段が、インデックスとそれに対応したデータから成る表を有し、入力データをインデックスとして表引きを行い、インデックスに対応したデータを処理済データとして出力する入力データ処理手段を有し、且つ
ハミングウエイトの値が常に一定となる第1の撹乱用データX1iと、
ハミングウエイトの値が常に一定となる第2の撹乱用データX2iと、
第1撹乱用データX1iでインデックスを撹乱し、
第2撹乱用データX2iでインデックスに対応したデータを撹乱することにより生成された変形済み表を使い、
前記撹乱用データXiを使って入力データD1を変形し、変形データH1を作成するデータ変形手段と、
変形データH1をインデックスとして、前記変形済み表を引いて変形データH2を取り出す変形済み表アクセス処理手段と、
変形データH2を第2撹乱用データX2iを用いて、
入力データD1を入力データ処理手段で処理した結果である処理済データD2を得るデータ逆変形処理手段とを有し、
前記攪乱用データは、発生させたい乱数のビット数の約数となるビット数のハミングウエイト一定である乱数が予め収められたテーブルから乱数を一ずつ取り出し、発生させたい乱数のビット数に達するまで結合し、前記各攪乱用データとすることを特徴とする情報処理装置。」


3.引用発明
原査定の拒絶理由に引用された刊行物である特開2000-182012号公報(以下、「引用文献1」という。)には、図面と共に以下の事項が記載されている。

(あ)「【0001】
【発明の属する技術分野】本発明は、機密性の高いICカードなどの耐タンパ装置に関するものである。
【0002】
【従来の技術】ICカードは、主に、勝手に書き換えられない情報の保持や秘密情報である暗号鍵を使ったデータの暗号化や暗号文の復号化を行うために使われる装置である。ICカードは、電源を持っていないため、リーダライタに差し込まれると、電源の供給を受け、動作可能となる。動作可能になると、リーダライタからコマンドを受けて、コマンドに従い、データの転送を行う。ICカードの一般的な解説は、オーム社出版電子情報通信学会編水沢順一著「ICカード」などにある。
【0003】ICカードの構成は、図1に示すように、カード101の上に、ICカード用チップ102を搭載したものである。一般にICカードは、接点を持ち、接点を通して、リーダーライタから電源の供給やリーダライタとのデータの通信を行う。
【0004】ICカード用チップの構成は、基本的にマイクロコンピュータと同じような構成である。その構成は、図2に示すように、中央演算装置201、記憶装置204、入出力ポート207、コ・プロセッサ202からなる。中央処理装置201は、論理演算や算術演算などを行う装置であり、記憶装置204は、プログラムやデータを格納する装置である。入出力ポートは、リーダライタと通信を行う装置である。コ・プロセッサは、剰余演算を行うための特別な演算装置であり、非対称暗号であるRSAの演算などに用いられる装置である。ICカード用プロセッサの中には、コ・プロセッサを持たないものも多くある。データバス203は、各装置を接続するバスである。
【0005】記憶装置204は、ROM(Read Only Memory)やRAM(Random Access Memory)、EEPROM(Electrical Erasable Programmable Read Only Memory)などからなる。ROMは、変更できないメモリであり、主にプログラムを格納するメモリである。RAMは自由に書き換えができるメモリであるが、電源の供給が中断されると、記憶している内容が消えてなくなる。ICカードがリーダライタから抜かれると電源の供給が中断されるため、RAMの内容は、保持できなくなる。EEPROMは、電源の供給が中断されてもその内容を保持することができるメモリである。書き換える必要があり、ICカードがリーダライタから抜かれても、保持するデータを格納するために使われる。例えば、プリペイドカードでのプリペイドの度数などは、使用するたびに書き換えられ、かつリーダライタか抜かれてもデータを保持する必要があるため、EEPROMで保持される。
【0006】ICカードは、プログラムや重要な情報がICカード用チップの中に密閉されているため、重要な情報を格納したり、カードの中で暗号処理を行うために、使われている。ICカードでの暗号処理の解読の難しさは、暗号アルゴリズムの解読の困難さと同じと考えられていた。しかし、ICカードが暗号処理を行っている時の消費電流を観測し、解析することにより、暗号アルゴリズムの解読より容易に暗号処理の内容や暗号鍵が推定される可能性が示唆されている。消費電流は、リーダライタから供給されている電流を測定することにより観測することができる。このような危険性は、John Wiley & sons社 W.Rankl & W.Effing著 「Smart CardHandbook」の8.5.1.1 Passive protective mechanisms(263ページ)に記載されている。
【0007】ICカード用チップを構成しているCMOSは、出力状態が1から0あるいは0から1に変わった時に電流を消費する。特に、データバス203のバスは、大きな電気容量を持つため、バスの値が1から0あるいは0から1に変わると、大きな電流を消費する。そのため、消費電流を観測すれば、ICカード用チップの中で、何が動作しているか分かる可能性を示唆している。」

(い)「【0014】
【発明が解決しようとする課題】本発明の課題は、ICカード用チップでのデータ処理と消費電流との関連性を減らすことである。消費電流とチップの処理との関連性が減れば、観測した消費電流の波形からICカードチップ内での処理や暗号鍵の推測が困難になる。本発明の着眼点は、ICカードチップでの処理するデータを変形して処理することにより、消費電流の波形から、処理や暗号鍵の推測を困難にするものである。
【0015】
【課題を解決するための手段】ICカード用チップに代表される耐タンパ装置は、プログラムを格納するプログラム格納部と、データを保存するデータ格納部を持つ記憶装置と、プログラムに従い、所定の処理を実行し、データ処理を行う中央演算装置を持ち、プログラムは、中央演算装置に実行の指示を与える処理命令から構成される一つ以上のデータ処理手段からなる、情報処理装置として考えることができる。本発明は、処理しているデータとICカード用チップの消費電流の関連性を減らすための方法として、処理するデータを撹乱用データで変形し、データの処理を変形したデータで処理し、処理後、撹乱用データを使って逆変形し、正しい処理結果を求めるものである。データ処理の後に使用する撹乱データは、必要があれば、データ処理と同じ処理を行った処理済の撹乱用データを使用する。また、撹乱用データは、データ処理ごとにランダムに設定する。このようにすることにより、データ処理において、本来のデータを使わず、毎回異なった変形したデータを使うことができる。そのため、電流波形からデータを推定することが困難にする。
【0016】具体的には、まず、撹乱用データXiを作成し、データD1を変形し、変形データH1を作成する。変形の方法には、排他的論理和や加算、乗算などがある。データ処理では、変形データH1を使い、データ処理を行い、処理済み変形データH2を生成する。本来は、データD1を使用するのであるが、ここでは、変形データH1を使用しているため、変形データH1を処理する電流波形からデータD1のデータを推定することは困難である。変形データH1は、処理ごとに異なる撹乱用データXiにて、変形されているため、毎回、異なるデータとなっている。そのため、変形データH1を処理する電流波形も、毎回、異なった波形となり、その波形から変形データH1を推定しても意味がないことになる。
【0017】撹乱用データXiもデータD1と同じようにデータ処理をする必要がある場合は、撹乱用データXiを入力とし、データ処理を行い、 処理済み撹乱用データXoを作成する。そして、処理済み撹乱用データXoを使って処理済み変形データH2を処理し、入力データD1を入力データ処理手段で処理した結果である処理済みデータD2を得る。
【0018】データ変形の方法が異なったものを使用する必要がある場合などでは、データ変形を連結して、実行する必要がある場合がある。その場合は、データ変形、変形データ処理、撹乱用データ処理、データ逆変形処理を入れ子にしたり、組み合わせることにより、本来のデータをデータ処理しないようにデータ変形を連続させる。
【0019】本発明は、暗号アルゴリズムでの、データを入れ替える転置や換字、あるいは、テーブルのアクセスなどの情報隠蔽に使うことができる。データの入れ替えの場合は、排他的論理和をデータ変形に使い、データ処理において、変形したデータと撹乱用データを同じように処理し、常に、変形したデータと撹乱用データを排他的論理和を実行すると、本来のデータを得ることができるように変形処理を行うことが、有効な方法の一つである。」

(う)「【0075】次に、対称暗号DES(data encryption standard)を例にした実施例について説明する。本発明は、他の暗号にも使うことができる。暗号については、共立出版株式会社岡本栄司著「暗号理論入門」などに、記載されている。
【0076】DESは、64ビットのデータ(平文か暗号文)を56ビットの暗号鍵で、暗号化と復号化を行う。暗号化と復号化で同じ暗号鍵を使用するため、対称暗号と呼ばれている。DESは、トランプをきって、ランダムにするように、平分(暗号化される文)のビットをランダムに入れ替え暗号化する。データの入れ替えは、暗号鍵にしたがって行う。復号化する時は、暗号鍵に従い入れ替えた順と逆に入れ替えを行い、データを元に戻す。DESの処理での入れ替えは、ビット単位と複数ビットまとまった単位での二つの入れ替え方法がある。前者は、転置と呼び、後者は、換字と呼ぶ。
【0077】図9を用いて、DESの暗号化の方法を説明する。変形処理a(901)と変形処理b(904)、逆変形処理(916)は、本発明に関するものであり、DESの本来の暗号処理には関係がない。暗号文は、まず、初期転置(IP:Initisal Permutation)902で転置させられる。これは、初期転置テーブルに従い、ビット単位で、暗号文の64ビットのデータを入れ替える。これ以降、初期転置の逆転置(IP-1)916まで、一組の操作を16段行う。
【0078】各1段の処理は、前段の結果の前半か後半の32ビットのデータと暗号鍵を入力としてf関数903と呼ばれる処理を行い、その出力を前段の残りの半分のビットを使って排他的論理和909を取る操作を行う。暗号鍵も、入れ替えが行われる。暗号鍵に対して、まず、PC-1というテーブルを使った選択転置PC-1(905)が行われる。その後、PC-2というテーブルを使った選択転置PC-2 (908)を行い、暗号鍵の入れ替えを行う。次の段では、28ビットづつをLSテーブルにしたがって巡回させて使用する。
【0079】本実施例では、IP処理の前に、平文を変形するための変形処理a(901)と暗号鍵を変形するための変形処理b(904)、そして、最期に逆変形する処理(916)を追加する。変形処理a(901)は、平文を変形し、IP処理(902)やf関数(903)の処理で、平文そのものを処理するのではなく、変形した平文を処理することにより、その処理の電流波形から平文のデータを推定できないようにするものである。変形処理b(904)は、PC-1処理(905)やLS処理(907)、PC-2処理(908)、f関数(903)で暗号鍵そのものを処理するのではなく変形した暗号鍵を処理することにより、その処理の電流波形から暗号鍵の推定を困難にするものである。
【0080】f関数303の処理を、図10に示す。まず、f関数への入力文を選択的転置行列Eに基づいて、選択的転置を行う(1002)。次に、選択的転置を行った入力データと暗号鍵との排他的論理和をとり(1003)、Sボックスの処理を行い(1004)、P転置処理を行う(1005)。Sボックスの処理は、1003の排他的論理和の処理結果である48ビットから6ビットづつ取り出し、8つのSボックステーブルの行番号と列番号を求め、4ビットのデータを生成する処理である。各Sボックステーブルは、6ビットごとで示されているデータの位置により異なる。P転置処理は、P転置テーブルに従い、32ビットのビット位置を入れ替える操作である。」

(え)「【0088】次に、f関数903の処理について説明する。f関数は、図10に示すように、選択的転置E処理(1002)、暗号鍵と選択的転置の実行結果の排他的論理和(1003)、Sボックス処理(1004)、P転置処理(1005)からなる。」

(お)「【0093】次に、Sボックスの処理について図18を用いて説明する。Sボックス入力データSinputXから6ビットずつ取り出し、8つのSボックスについて処理を行う。DESで使われている1番目のSボックスを、図25で示す。8つのSボックスは形式は同じであるが、それぞれフィールドのデータが異なる。それぞれのSボックスの処理では、まず、Sボックス入力データSinput(SinputはSinputXの誤記と認められる。)の上位i番目の6ビットのサブデータSubSinputX(i)を取り出す(1805)。前もって作成しておいたSボックスを変形した変形Sボックステーブルのアドレス撹乱用データXsa(i)とSubSinputX(i)をXORし、SubSinputXXsa(i)を生成する(1806)。そのSubSinputXsa(i)をSボックス入力データ撹乱用データXSinputの上位i番目の6ビットとXORし、SubSinputXsa(i)を生成する(1807)。SubSinputXsa(i)は、i番目のSボックスを取り出すための本物のアドレスデータに対して、アドレス撹乱用データXsa(i)が排他的論理和された値である。SubSinputX(i)とXSinput(i)を排他的論理和(XOR)すると、それは、真のデータに戻るのであるので、XSinput(i)と排他的論理和する前に、SubSinputX(i)とXsa(i)の排他的論理和を行い、その後で、XSinput(i)を排他的論理和(XOR)を実行する。こうすることにより、本物のデータの処理を行う必要がなくなり、その電流波形からデータを推定することが困難になっている。次に、SubSinputXsa(i)を使って、変形Sボックステーブルのアドレスを計算する(1808)。本来のSボックスのテーブルを参照するためのアドレスが変形されているため、テーブルをあらかじめ変形しておく必要がある。計算したアドレスを元に、変形SボックステーブルS(i)からSボックス出力データSoutputX3(i)を取り出す(1809)。そして、同時にSボックスの出力データSoutputX3(i)用の撹乱用データX3(i)を取り出す(1810)。8つのSボックスを処理し、 SoutputX3(i)とX3(i)をiを1から8までのデータをそれぞれ連結することによって、SoutputX3とX3を生成する。これ以降は、処理データは、SoutputX3となり、撹乱用データはX3となる。これは、請求項21の実施例である。」

(か)「【0094】次に、変形Sボックステーブルの生成方法について図23と図24を用いて説明する。ここのSボックスで、S(i)ボックス用のアドレス撹乱用データXsa(i)とデータ撹乱用データX3(i)を作成する(2306)。Xsa(i)は6ビットであり、X3(i)は4ビットである。撹乱用データX3は4ビットずつ作成したX3(i)を8個集めた32ビットのデータである。次に、変形S(i)ボックステーブル作成ルーチンを呼びだす(2307)。i番目の変形Sボックステーブル作成ルーチンの処理を図24で説明する。kは行番を指定し、lは列番号を指定する。k行l列の処理は2408から2413である。1番目のSボックスのテーブルは、図25に示す通りである。まず、i番目のオリジナルのSボックスの行番号k列番号lのデータdを取り出す(2408)。そして、そのデータdと撹乱用データX3(i)を排他的論理和を取り、それをd2とする(2409)。これは、撹乱用データを“7”とすると、元のSボックスのデータ2504に対して、その結果は2604になる。これをすべてのフィールドに行うと、図26のようになる。図26のテーブルは、図25の1番目のSボックスのデータに対して、撹乱用データを“7”として排他的論理和を取ったものである。
【0095】次に、アドレスの撹乱を行う。まず、Xsa1をXsa(i)の上位1ビットと下位1ビットから作った2ビットとし、Xsa2を Xsa(i)の上位2ビットから5ビットから作った4ビットのデータとする。これは、Sボックスのアドレスの計算方法に由来している。そして、図26の行番号と列番号をそれぞれkとlとすると、それぞれにXsa1とXsa2を排他的論理和を行う(2412)。新しくできた行番号と列番号をk2とl2とすると、i番目の変形SボックステーブルS(i)のk2行l2列にデータd2を格納する(2413)。この処理の例を図27に示す。図27は、図26の行と列に対して撹乱用データとして“2”と“9”を選んで作成したものである。わかりやすいように、行と列のデータの位置はそのままにして行と列の番号だけを変更している。図25で、3行1列のデータ12(2504)は、図27では、1行8列に移り、値が11に変形されている。この例では、データの撹乱用データは“7”であり、アドレス用の撹乱データは行が“2”であり、列が“9”である。このようにして8つのSボックスを変形する。本実施例では、この処理は、DESの最初に行っておく。変形したSボックステーブルは、DESの16段で使用する。これは、請求項5の実施例でもある。」

(き)「【0096】Sボックスの処理が終了すると、処理データは、32ビットのSoutputX3となり、撹乱用データは32ビットのX3となる。これが、f関数の最後の処理である転置P処理(1005)の入力となる。転置P処理を図19を用いて説明する。Sボックスの出力であるSinputX3を転置Pし、SinputX3Pを生成する(1902)。SinputX3の撹乱用データX3を転置Pし、X3Pを生成する(1903)。転地Pに使用するテーブルは図29の通りである。このテーブルの使い方もIP処理のテーブルと同じである。
【0097】f関数の処理が終わると、転置P処理と前段の結果のXORを行う(909とか914)である。これは、まず、Sボックスの結果を転置PしたSinputX3Pと前段の結果をXORする(2002)。そして、X3Pと前段の撹乱用データXをXORする(2003)。このXORの処理は、選択的転置E処理結果と暗号鍵のXOR処理(1701)と同じである。
【0098】DESでは、最後にIP-1処理(915)を行う。この処理を図21に示す。IP-1処理は、IP処理と似たようなビットの並びの入れ替え処理であり、IPテーブルの代わりにIP-1テーブルを使用する(2102)。これまでの処理結果をIP-1処理し、同様に撹乱用データXをIP-1処理する(2103)。
【0099】最後に、正しい処理結果に戻すために、逆変形処理を行う(916)。逆変形処理を図22に示す。IP-1処理結果をIP-1処理した撹乱用データXでXORすることにより、正しい結果を求める。ここで、初めて、変形されていない正しい処理結果が得られる。」


上記(あ)の「【発明の属する技術分野】本発明は、機密性の高いICカードなどの耐タンパ装置に関するものである。 ・・・・<中略>・・・・
【0007】ICカード用チップを構成しているCMOSは、出力状態が1から0あるいは0から1に変わった時に電流を消費する。特に、データバス203のバスは、大きな電気容量を持つため、バスの値が1から0あるいは0から1に変わると、大きな電流を消費する。そのため、消費電流を観測すれば、ICカード用チップの中で、何が動作しているか分かる可能性を示唆している。」及び、
上記(い)の「【発明が解決しようとする課題】本発明の課題は、ICカード用チップでのデータ処理と消費電流との関連性を減らすことである。」の記載からすると、
引用文献1に記載の事項は、従来の技術におけるICカード用チップでのデータ処理と消費電流との関連性を減らすことに関するものであるから、この引用文献1においてICカード用チップは、従来のICカード用チップと同様なものと認められる。
そして、上記(あ)の「【0004】ICカード用チップの構成は、基本的にマイクロコンピュータと同じような構成である。その構成は、図2に示すように、中央演算装置201、記憶装置204、入出力ポート207、コ・プロセッサ202からなる。中央処理装置201は、論理演算や算術演算などを行う装置であり、記憶装置204は、プログラムやデータを格納する装置である。入出力ポートは、リーダライタと通信を行う装置である。コ・プロセッサは、剰余演算を行うための特別な演算装置であり、非対称暗号であるRSAの演算などに用いられる装置である。ICカード用プロセッサの中には、コ・プロセッサを持たないものも多くある。データバス203は、各装置を接続するバスである。」と、
上記(い)の「【課題を解決するための手段】ICカード用チップに代表される耐タンパ装置は、プログラムを格納するプログラム格納部と、データを保存するデータ格納部を持つ記憶装置と、プログラムに従い、所定の処理を実行し、データ処理を行う中央演算装置を持ち、プログラムは、中央演算装置に実行の指示を与える処理命令から構成される一つ以上のデータ処理手段からなる、情報処理装置として考えることができる。 ・・・・<中略>・・・・ 本発明は、処理しているデータとICカード用チップの消費電流の関連性を減らすための方法として、処理するデータを撹乱用データで変形し、データの処理を変形したデータで処理し、処理後、撹乱用データを使って逆変形し、正しい処理結果を求めるものである。
・・・・<中略>・・・・
【0019】本発明は、暗号アルゴリズムでの、データを入れ替える転置や換字、あるいは、テーブルのアクセスなどの情報隠蔽に使うことができる。」と、
上記(う)の「【0075】次に、対称暗号DES(data encryption standard)を例にした実施例について説明する。本発明は、他の暗号にも使うことができる。」の記載及び図2をふまえると、
引用文献1には、プログラムを格納するプログラム格納部と、データを保存するデータ格納部を持つ記憶装置と、プログラムに従い、所定の処理を実行し、データ処理を行う中央演算装置を持ち、対称暗号DESのプログラムは、中央演算装置に実行の指示を与える処理命令から構成される一つ以上のデータ処理手段からなる情報処理装置が記載されている。

上記(う)の「【0077】図9を用いて、DESの暗号化の方法を説明する。 ・・・・<中略>・・・・ 暗号文は、まず、初期転置(IP:Initisal Permutation)902で転置させられる。これは、初期転置テーブルに従い、ビット単位で、暗号文の64ビットのデータを入れ替える。これ以降、初期転置の逆転置(IP-1)916まで、一組の操作を16段行う。
【0078】各1段の処理は、前段の結果の前半か後半の32ビットのデータと暗号鍵を入力としてf関数903と呼ばれる処理を行い、その出力を前段の残りの半分のビットを使って排他的論理和909を取る操作を行う。 ・・・・<中略>・・・・
【0080】f関数303の処理を、図10に示す。まず、f関数への入力文を選択的転置行列Eに基づいて、選択的転置を行う(1002)。次に、選択的転置を行った入力データと暗号鍵との排他的論理和をとり(1003)、Sボックスの処理を行い(1004)、P転置処理を行う(1005)。Sボックスの処理は、1003の排他的論理和の処理結果である48ビットから6ビットづつ取り出し、8つのSボックステーブルの行番号と列番号を求め、4ビットのデータを生成する処理である。」と、
上記(え)の「【0088】次に、f関数903の処理について説明する。f関数は、図10に示すように、選択的転置E処理(1002)、暗号鍵と選択的転置の実行結果の排他的論理和(1003)、Sボックス処理(1004)、P転置処理(1005)からなる。」の記載、及び図9,図10からすると、
引用文献1には、DESのf関数に含まれるSボックス処理は、Sボックス入力データからSボックステーブルの行番号と列番号を求め、Sボックステーブルから求めた行番号と列番号に対応する4ビットのデータを取り出す8つのSボックスを有することが記載されている。

上記(お)の「【0093】次に、Sボックスの処理について図18を用いて説明する。Sボックス入力データSinputXから6ビットずつ取り出し、8つのSボックスについて処理を行う。DESで使われている1番目のSボックスを、図25で示す。8つのSボックスは形式は同じであるが、それぞれフィールドのデータが異なる。それぞれのSボックスの処理では、まず、Sボックス入力データSinput(SinputはSinputXの誤記と認められる。)の上位i番目の6ビットのサブデータSubSinputX(i)を取り出す(1805)。前もって作成しておいたSボックスを変形した変形Sボックステーブルのアドレス撹乱用データXsa(i)とSubSinputX(i)をXORし、SubSinputXXsa(i)を生成する(1806)。そのSubSinputXsa(i)をSボックス入力データ撹乱用データXSinputの上位i番目の6ビットとXORし、SubSinputXsa(i)を生成する(1807)。SubSinputXsa(i)は、i番目のSボックスを取り出すための本物のアドレスデータに対して、アドレス撹乱用データXsa(i)が排他的論理和された値である。」の記載及び図18、そして、上記(い)の「【0019】本発明は、暗号アルゴリズムでの、データを入れ替える転置や換字、あるいは、テーブルのアクセスなどの情報隠蔽に使うことができる。データの入れ替えの場合は、排他的論理和をデータ変形に使い、データ処理において、変形したデータと撹乱用データを同じように処理し、常に、変形したデータと撹乱用データを排他的論理和を実行すると、本来のデータを得ることができるように変形処理を行うことが、有効な方法の一つである。」の記載をふまえると、
引用文献1には、Sボックス入力データSinputXからSボックス入力データSinputXの上位i番目の6ビットのサブデータSubSinputX(i)を取り出し、8つの変形Sボックステーブルのアドレス撹乱用データXsa(i)を使ってSubSinputX(i)を変形し、i番目のSボックスを取り出すための本物のアドレスデータに対して、アドレス撹乱用データXsa(i)で変形されたSubSinputXsa(i)を生成することが記載されている。

上記(お)の「【0093】 ・・・・<中略>・・・・ 次に、SubSinputXsa(i)を使って、変形Sボックステーブルのアドレスを計算する(1808)。 ・・・・<中略>・・・・ 計算したアドレスを元に、変形SボックステーブルS(i)からSボックス出力データSoutputX3(i)を取り出す(1809)。そして、同時にSボックスの出力データSoutputX3(i)用の撹乱用データX3(i)を取り出す(1810)。8つのSボックスを処理し、 SoutputX3(i)とX3(i)をiを1から8までのデータをそれぞれ連結することによって、SoutputX3とX3を生成する。これ以降は、処理データは、SoutputX3となり、撹乱用データはX3となる。」の記載及び図18からすると、
引用文献1には、SubSinputXsa(i)を使って、変形Sボックステーブルのアドレスを計算し、計算したアドレスを元に、変形SボックステーブルS(i)からSボックス出力データSoutputX3(i)を取り出し、同時にSボックスの出力データSoutputX3(i)用の撹乱用データX3(i)を取り出すと共に、8つのSボックスを処理して取り出した SoutputX3(i)とX3(i)のiの1から8までのデータをそれぞれ連結することによって、処理データSoutputX3と撹乱用データX3を生成することが記載されている。

上記(か)の「【0094】次に、変形Sボックステーブルの生成方法について図23と図24を用いて説明する。ここのSボックスで、S(i)ボックス用のアドレス撹乱用データXsa(i)とデータ撹乱用データX3(i)を作成する(2306)。Xsa(i)は6ビットであり、X3(i)は4ビットである。撹乱用データX3は4ビットずつ作成したX3(i)を8個集めた32ビットのデータである。次に、変形S(i)ボックステーブル作成ルーチンを呼びだす(2307)。i番目の変形Sボックステーブル作成ルーチンの処理を図24で説明する。kは行番を指定し、lは列番号を指定する。k行l列の処理は2408から2413である。1番目のSボックスのテーブルは、図25に示す通りである。まず、i番目のオリジナルのSボックスの行番号k列番号lのデータdを取り出す(2408)。そして、そのデータdと撹乱用データX3(i)を排他的論理和を取り、それをd2とする(2409)。
・・・・<中略>・・・・
【0095】次に、アドレスの撹乱を行う。まず、Xsa1をXsa(i)の上位1ビットと下位1ビットから作った2ビットとし、Xsa2を Xsa(i)の上位2ビットから5ビットから作った4ビットのデータとする。これは、Sボックスのアドレスの計算方法に由来している。そして、図26の行番号と列番号をそれぞれkとlとすると、それぞれにXsa1とXsa2を排他的論理和を行う(2412)。新しくできた行番号と列番号をk2とl2とすると、i番目の変形SボックステーブルS(i)のk2行l2列にデータd2を格納する(2413)。この処理の例を図27に示す。」の記載及び図23乃至図27からすると、
引用文献1には、S(i)ボックス用の6ビットのアドレス撹乱用データXsa(i)と4ビットのデータ撹乱用データX3(i)を作成し、i番目のオリジナルのSボックスの行番号k列番号lのデータdを取り出し、取り出したデータdを撹乱用データX3(i)で変形して、変形データd2を作成し、S(i)ボックス用のアドレス撹乱用データXsa(i)からXsa1とXsa2を作成し、Sボックスのアドレスの行番号kと列番号lをそれぞれXsa1とXsa2で変形して、変形した行番号k2と列番号l2を作成し、i番目の変形SボックステーブルS(i)のk2行l2列にデータd2を格納することにより変形Sボックステーブルを作成することが記載されている。

上記(き)の「【0096】Sボックスの処理が終了すると、処理データは、32ビットのSoutputX3となり、撹乱用データは32ビットのX3となる。これが、f関数の最後の処理である転置P処理(1005)の入力となる。転置P処理を図19を用いて説明する。Sボックスの出力であるSinputX3を転置Pし、SinputX3Pを生成する(1902)。SinputX3の撹乱用データX3を転置Pし、X3Pを生成する(1903)。転地Pに使用するテーブルは図29の通りである。このテーブルの使い方もIP処理のテーブルと同じである。
【0097】f関数の処理が終わると、転置P処理と前段の結果のXORを行う(909とか914)である。これは、まず、Sボックスの結果を転置PしたSinputX3Pと前段の結果をXORする(2002)。」の記載、及び、
上記(い)の「【0015】
【課題を解決するための手段】 ・・・・<中略>・・・・ 本発明は、処理しているデータとICカード用チップの消費電流の関連性を減らすための方法として、処理するデータを撹乱用データで変形し、データの処理を変形したデータで処理し、処理後、撹乱用データを使って逆変形し、正しい処理結果を求めるものである。 ・・・・<中略>・・・・
【0016】具体的には、まず、撹乱用データXiを作成し、データD1を変形し、変形データH1を作成する。変形の方法には、排他的論理和や加算、乗算などがある。データ処理では、変形データH1を使い、データ処理を行い、処理済み変形データH2を生成する。 ・・・・<中略>・・・・
【0017】撹乱用データXiもデータD1と同じようにデータ処理をする必要がある場合は、撹乱用データXiを入力とし、データ処理を行い、 処理済み撹乱用データXoを作成する。そして、処理済み撹乱用データXoを使って処理済み変形データH2を処理し、入力データD1を入力データ処理手段で処理した結果である処理済みデータD2を得る。」の記載をふまえると、
引用文献1には、f関数の処理が終わると、Sボックスの出力SoutputX3を、32ビットの撹乱用データX3を使って逆変形し、Sボックス入力データSinputXをオリジナルのSボックスで処理した出力を得ることが記載されている。


以上より、上記(あ)から(き)の記載及び図2,図9,図10,図18,図23乃至27をふまえると、引用文献1には、次の発明(以下、「引用発明」という。)が記載されているものと認められる。

プログラムを格納するプログラム格納部と、データを保存するデータ格納部を持つ記憶装置と、プログラムに従い、所定の処理を実行し、データ処理を行う中央演算装置を持ち、対称暗号DESのプログラムは、中央演算装置に実行の指示を与える処理命令から構成される一つ以上のデータ処理手段からなる情報処理装置であって、
DESのf関数に含まれるSボックス処理は、Sボックス入力データからSボックステーブルの行番号と列番号を求め、Sボックステーブルから求めた行番号と列番号に対応する4ビットのデータを取り出す8つのSボックスを有し、
S(i)ボックス用の6ビットのアドレス撹乱用データXsa(i)と4ビットのデータ撹乱用データX3(i)を作成し、i番目のオリジナルのSボックスの行番号k列番号lのデータdを取り出し、取り出したデータdを撹乱用データX3(i)で変形して、変形データd2を作成し、S(i)ボックス用のアドレス撹乱用データXsa(i)からXsa1とXsa2を作成し、Sボックスのアドレスの行番号kと列番号lをそれぞれXsa1とXsa2で変形して、変形した行番号k2と列番号l2を作成し、i番目の変形SボックステーブルS(i)のk2行l2列にデータd2を格納することにより変形Sボックステーブルを作成し、
Sボックス入力データSinputXからSボックス入力データSinputXの上位i番目の6ビットのサブデータSubSinputX(i)を取り出し、8つの変形Sボックステーブルのアドレス撹乱用データXsa(i)を使ってSubSinputX(i)を変形し、i番目のSボックスを取り出すための本物のアドレスデータに対して、アドレス撹乱用データXsa(i)で変形されたSubSinputXsa(i)を生成し、
SubSinputXsa(i)を使って、変形Sボックステーブルのアドレスを計算し、計算したアドレスを元に、変形SボックステーブルS(i)からSボックス出力データSoutputX3(i)を取り出し、同時にSボックスの出力データSoutputX3(i)用の撹乱用データX3(i)を取り出すと共に、8つのSボックスを処理して取り出した SoutputX3(i)とX3(i)のiの1から8までのデータをそれぞれ連結することによって、処理データSoutputX3と撹乱用データX3を生成し、
f関数の処理が終わると、Sボックスの出力SoutputX3を、32ビットの撹乱用データX3を使って逆変形し、Sボックス入力データSinputXをオリジナルのSボックスで処理した出力を得ることを特徴とする情報処理装置。


4.対比
ここで、本願発明と引用発明とを対比する。

引用発明の「プログラム格納部」「記憶装置」「中央演算装置」「対称暗号DESのプログラム」「データ処理手段」「情報処理装置」は、それぞれ、
本願発明の「プログラム格納部」「記憶装置」「中央演算装置」「プログラム」「データ処理手段」「情報処理装置」に相当する。

また、引用発明の「DESのf関数に含まれるSボックス処理は、Sボックス入力データからSボックステーブルの行番号と列番号を求め、Sボックステーブルから求めた行番号と列番号に対応する4ビットのデータを取り出す8つのSボックスを有し、」において、Sボックスは、データ処理手段と言えるものであり、Sボックス処理において、Sボックス入力データからSボックステーブルの行番号と列番号を求めることは、入力データからインデックスを求めていると言えるものである。また、各Sボックスにおいて、Sボックステーブルから求めた行番号と列番号に対応する4ビットのデータを取り出していることからすると、Sボックスは、行番号と列番号とそれに対応した4ビットのデータから成るものと言える。
そうしてみると、Sボックス入力データからSボックステーブルの行番号と列番号を求め、Sボックステーブルから求めた行番号と列番号に対応する4ビットのデータを取り出すことは、インデックスとそれに対応したデータから成る表を有し、入力データをインデックスとして表引きを行い、インデックスに対応したデータを処理済データとして出力する態様を含むものである。
従って、引用発明の「DESのf関数に含まれるSボックス処理は、Sボックス入力データからSボックステーブルの行番号と列番号を求め、Sボックステーブルから求めた行番号と列番号に対応する4ビットのデータを取り出す8つのSボックス」は、
本願発明の「一つのデータ処理手段が、インデックスとそれに対応したデータから成る表を有し、入力データをインデックスとして表引きを行い、インデックスに対応したデータを処理済データとして出力する入力データ処理手段」に相当する。

また、引用発明の「S(i)ボックス用の6ビットのアドレス撹乱用データXsa(i)と4ビットのデータ撹乱用データX3(i)を作成し、」において、アドレス撹乱用データはインデックスを撹乱するデータと言え、データ撹乱用データはデータを撹乱するデータと言えるものであるから、
引用発明の「S(i)ボックス用の6ビットのアドレス撹乱用データXsa(i)と4ビットのデータ撹乱用データX3(i)」と、
本願発明の「ハミングウエイトの値が常に一定となる第1の撹乱用データX1iと、ハミングウエイトの値が常に一定となる第2の撹乱用データX2i」とは、
インデックス用撹乱データとデータ用撹乱データである点で共通する。

また、引用発明の「i番目のオリジナルのSボックスの行番号k列番号lのデータdを取り出し、取り出したデータdを撹乱用データX3(i)で変形して、変形データd2を作成し、S(i)ボックス用のアドレス撹乱用データXsa(i)からXsa1とXsa2を作成し、Sボックスのアドレスの行番号kと列番号lをそれぞれXsa1とXsa2で変形して、変形した行番号k2と列番号l2を作成し、i番目の変形SボックステーブルS(i)のk2行l2列にデータd2を格納することにより変形Sボックステーブルを作成し、」において、
i番目のオリジナルのSボックスの行番号k列番号lのデータdを取り出し、取り出したデータdを撹乱用データX3(i)で変形していることは、データ用撹乱データでインデックスに対応したデータを撹乱することと言え、そして、S(i)ボックス用のアドレス撹乱用データXsa(i)からXsa1とXsa2を作成し、Sボックスのアドレスの行番号kと列番号lをそれぞれXsa1とXsa2で変形していることは、インデックス用撹乱データでインデックスを撹乱することと言えるから、
引用発明のi番目の変形SボックステーブルS(i)のk2行l2列にデータd2を格納することにより変形Sボックステーブルを作成する態様は、インデックス用撹乱データでインデックスを撹乱し、データ用撹乱データでインデックスに対応したデータを撹乱することにより生成された変形Sボックステーブルを作成すると言える。
従って、引用発明の「i番目のオリジナルのSボックスの行番号k列番号lのデータdを取り出し、取り出したデータdを撹乱用データX3(i)で変形して、変形データd2を作成し、S(i)ボックス用のアドレス撹乱用データXsa(i)からXsa1とXsa2を作成し、Sボックスのアドレスの行番号kと列番号lをそれぞれXsa1とXsa2で変形して、変形した行番号k2と列番号l2を作成し、i番目の変形SボックステーブルS(i)のk2行l2列にデータd2を格納することにより変形Sボックステーブルを作成し、」は、インデックス用撹乱データ及びデータ用撹乱データがそれぞれ、S(i)ボックス用のアドレス撹乱用データXsa(i)及び撹乱用データX3(i)である点を除けば、
本願発明の「第1撹乱用データX1iでインデックスを撹乱し、第2撹乱用データX2iでインデックスに対応したデータを撹乱することにより生成された変形済み表を使い、」に相当する。

また、引用発明の「Sボックス入力データSinputXからSボックス入力データSinputXの上位i番目の6ビットのサブデータSubSinputX(i)を取り出し、8つの変形Sボックステーブルのアドレス撹乱用データXsa(i)を使ってSubSinputX(i)を変形し、i番目のSボックスを取り出すための本物のアドレスデータに対して、アドレス撹乱用データXsa(i)で変形されたSubSinputXsa(i)を生成し、」において、
アドレス撹乱用データは、インデックス用撹乱データと言えることから、引用発明の上記態様は、インデックス用撹乱データを使ってSボックス入力データを変形し、インデックス用撹乱データで変形された変形Sボックス入力データを作成するデータ変形手段と言える。
従って、引用発明の「Sボックス入力データSinputXからSボックス入力データSinputXの上位i番目の6ビットのサブデータSubSinputX(i)を取り出し、8つの変形Sボックステーブルのアドレス撹乱用データXsa(i)を使ってSubSinputX(i)を変形し、i番目のSボックスを取り出すための本物のアドレスデータに対して、アドレス撹乱用データXsa(i)で変形されたSubSinputXsa(i)を生成し、」は、インデックス撹乱用データがアドレス撹乱用データXsa(i)である点を除けば、
本願発明の「前記撹乱用データXiを使って入力データD1を変形し、変形データH1を作成するデータ変形手段」に相当する。

また、引用発明の「SubSinputXsa(i)を使って、変形Sボックステーブルのアドレスを計算し、計算したアドレスを元に、変形SボックステーブルS(i)からSボックス出力データSoutputX3(i)を取り出し、同時にSボックスの出力データSoutputX3(i)用の撹乱用データX3(i)を取り出すと共に、8つのSボックスを処理して取り出した SoutputX3(i)とX3(i)のiの1から8までのデータをそれぞれ連結することによって、処理データSoutputX3と撹乱用データX3を生成し、」において、
SubSinputXsa(i)は、変形入力データと言え、変形Sボックステーブルのアドレスはインデックスと言えるものであるから、引用発明のSubSinputXsa(i)を使って、変形Sボックステーブルのアドレスを計算する態様は、変形入力データをインデックスとする態様を含むものである。また、変形Sボックステーブルは、変形済み表に対応するものである。
これらをふまえると、引用発明の、計算したアドレスを元に、変形SボックステーブルS(i)からSボックス出力データSoutputX3(i)を取り出し、SoutputX3(i)をiを1から8までのデータをそれぞれ連結することによって、処理データSoutputX3を生成する態様は、変形入力データをインデックスとして、変形済み表を引いて変形出力データを取り出す処理手段と言える。
従って、引用発明の「SubSinputXsa(i)を使って、変形Sボックステーブルのアドレスを計算し、計算したアドレスを元に、変形SボックステーブルS(i)からSボックス出力データSoutputX3(i)を取り出し、同時にSボックスの出力データSoutputX3(i)用の撹乱用データX3(i)を取り出すと共に、8つのSボックスを処理して取り出した SoutputX3(i)とX3(i)のiの1から8までのデータをそれぞれ連結することによって、処理データSoutputX3と撹乱用データX3を生成し、」は、
本願発明の「変形データH1をインデックスとして、前記変形済み表を引いて変形データH2を取り出す変形済み表アクセス処理手段」に相当する。

また、引用発明の「変形SボックステーブルS(i)からSボックス出力データSoutputX3(i)を取り出し、同時にSボックスの出力データSoutputX3(i)用の撹乱用データX3(i)を取り出すと共に、8つのSボックスを処理して取り出した SoutputX3(i)とX3(i)のiの1から8までのデータをそれぞれ連結することによって、処理データSoutputX3と撹乱用データX3を生成し、」において、
Sボックスの出力データSoutputX3(i)用の撹乱用データX3(i)は、データ用撹乱データであると言えることから、
引用発明の、変形SボックステーブルS(i)からSボックスの出力データSoutputX3(i)用の撹乱用データX3(i)を取り出すと共に、8つのSボックスを処理して取り出した X3(i)をiを1から8までのデータをそれぞれ連結することによって、撹乱用データX3を生成するという態様は、撹乱データが予め納められた各変形Sボックステーブルから一ずつ取り出し、取り出した各撹乱データを連結してデータ用撹乱データとするものと言える。
従って、引用発明の「変形SボックステーブルS(i)からSボックス出力データSoutputX3(i)を取り出し、同時にSボックスの出力データSoutputX3(i)用の撹乱用データX3(i)を取り出すと共に、8つのSボックスを処理して取り出した SoutputX3(i)とX3(i)のiの1から8までのデータをそれぞれ連結することによって、処理データSoutputX3と撹乱用データX3を生成し、」と、
本願発明の「前記攪乱用データは、発生させたい乱数のビット数の約数となるビット数のハミングウエイト一定である乱数が予め収められたテーブルから乱数を一ずつ取り出し、発生させたい乱数のビット数に達するまで結合し、前記各攪乱用データとする」とは、
データ用撹乱データは、テーブルから一ずつ取り出した各撹乱データを連結して撹乱用データとする点で共通する。

また、引用発明の「f関数の処理が終わると、Sボックスの出力SoutputX3を、32ビットの撹乱用データX3を使って逆変形し、Sボックス入力データSinputXをオリジナルのSボックスで処理した出力を得る」において、
Sボックスの出力SoutputX3、32ビットの撹乱用データX3、Sボックス入力データSinputXは、それぞれ、変形出力データ、データ用撹乱データ、入力データに対応するものであるから、
引用発明において、f関数の処理が終わると、Sボックスの出力SoutputX3を、32ビットの撹乱用データX3を使って逆変形し、Sボックス入力データSinputXをオリジナルのSボックスで処理した出力を得ることは、変形出力データをデータ用撹乱データを使って逆変形し、入力データをオリジナルのSボックスで処理した出力を得る処理手段と言える。
従って、引用発明の「f関数の処理が終わると、Sボックスの出力SoutputX3を、32ビットの撹乱用データX3を使って逆変形し、Sボックス入力データSinputXをオリジナルのSボックスで処理した出力を得る」は、逆変形に用いるデータ用撹乱データが32ビットの撹乱用データX3である点を除けば、
本願発明の「変形データH2を第2撹乱用データX2iを用いて、入力データD1を入力データ処理手段で処理した結果である処理済データD2を得るデータ逆変形処理手段」に相当する。


よって、本願発明と引用発明とは、以下の点で一致し、また、相違する。

(一致点)
プログラムを格納するプログラム格納部、データを保存するデータ格納部を有する記憶装置と
プログラムにしたがい、所定の処理を実行する中央演算装置を有し、
プログラムは、中央演算装置の指示を与える処理命令から構成される一つ以上のデータ処理手段を有し、
一つのデータ処理手段が、インデックスとそれに対応したデータから成る表を有し、入力データをインデックスとして表引きを行い、インデックスに対応したデータを処理済データとして出力する入力データ処理手段を有し、且つ
インデックス用撹乱データと、
データ用撹乱データと、
インデックス用撹乱データでインデックスを撹乱し、データ用撹乱データでインデックスに対応したデータを撹乱することにより生成された変形済み表を使い、
変形データH1をインデックスとして、前記変形済み表を引いて変形データH2を取り出す変形済み表アクセス処理手段と、
変形データH2をデータ用撹乱データを用いて、入力データD1を入力データ処理手段で処理した結果である処理済データD2を得るデータ逆変形処理手段とを有し、
データ用撹乱データは、テーブルから一ずつ取り出した各撹乱データを連結して撹乱用データとすることを特徴とする情報処理装置。

(相違点1)
インデックス用撹乱データが、
本願発明は、ハミングウエイトの値が常に一定となる第1の撹乱用データX1iであるのに対し、
引用発明は、8つのS(i)ボックス用の6ビットのアドレス撹乱用データXsa(i)である点。

(相違点2)
データ用撹乱データが、
本願発明は、ハミングウエイトの値が常に一定となる第2の撹乱用データX2iであるのに対し、
引用発明は、8つの4ビットのデータ撹乱用データX3(i)である点。

(相違点3)
インデックス用撹乱データは、
本願発明は、発生させたい乱数のビット数の約数となるビット数のハミングウエイト一定である乱数が予め収められたテーブルから乱数を一ずつ取り出し、発生させたい乱数のビット数に達するまで結合したものであるのに対し、
引用発明は、8つのS(i)ボックス用の6ビットのアドレス撹乱用データXsa(i)をどの様に作成しているか明らかではない点。

(相違点4)
データ用撹乱データは、
本願発明は、発生させたい乱数のビット数の約数となるビット数のハミングウエイト一定である乱数が予め収められたテーブルから乱数を一ずつ取り出し、発生させたい乱数のビット数に達するまで結合したものであるのに対し、
引用発明は、変形SボックステーブルS(i)から取り出したSボックスの出力データSoutputX3(i)用の撹乱用データX3(i)のiの1から8までのデータをそれぞれ連結することによって、撹乱用データX3を生成するものである点。


5.判断
上記相違点1及び2について検討する。
原査定の拒絶理由に引用された刊行物である特開2000-66585号公報(以下、「引用文献2」という。)において、
「【0045】図4、図5a、および図5bにおいて、ビット列の1の数、すなわちハミング重みをH(a)で定義する。DPA では、データ暗号化処理に伴う消費電力の差異を観測して暗号化鍵に関する情報を収集する。上記マスクを用いたデータの隠蔽により、外界からの消費電力の計測と処理されるデータの対応をとることが困難となる。しかし、マスクのハミング重みに差異がある場合、複数の暗号化処理データの計測と統計情報により、マスクaとbのみを用いているデータのみを抽出することができる可能性がある。そして、そのようなデータのみの抽出が可能ならば、DPAの手法を用いることにより、従来の場合同様に鍵の抽出が可能となる。このように使用されているマスクがa なのかa ̄なのかの区別ができて充分な対策にならない。例えば、マスクa とa ̄あるいはマスクbとb ̄のハミング重みが同じとすれば、外界からの計測でマスクを判別することは困難となり安全であるが、逆に、マスクのビット重みに偏りがあるならば、安全性は著しく劣化する。
【0046】したがって、図4、図5a、および図5bにおいて、H(a)=H(a ̄)=H(b)=H(b ̄)=n/2=16の条件を満たすマスクの選択(以下、マスクのハミング重みが等しい)ならば安全性は高い。ここでマスクaおよびbのビット数nは32であるので、マスクa、マスクb、およびそれらのビット反転のビット重みがそれぞれ16であるマスク値を使用することが推奨される。ただし、理想的には上記のようにマスクのハミング重みがマスクのビット長の丁度半分であるマスクを使用することが推奨されるが、ハミング重みがほぼ等しい2つのマスクを用い同様の効果が得られる。
【0047】すなわち、各マスクのハミング重みが極端に偏っていなければ、外界からの計測でマスクを判別することは容易でなく、DPA対策としての効果が得られる。
【0048】さらに、図4のDES の拡大転置26の特性に着目する。上記ハミング重みに着目したマスク値の選択と同様の理由から、排他的論理和32a および32bにおいて加えられる、E (a )とE (a ̄)のハミング重みが等しくなるマスクを選択する。すなわち、H (E(a))=H (E(a ̄))を満足するマスクを選択する。
【0049】上記マスクの条件をDES の実装に当てはめると、例えばマスクa に対しては、マスクa を4ビットづつ区切ったときの各ブロックの“第1ビット”(左端のビット)の1の数=マスクa を4ビットづつ区切ったときの各ブロックの“第4ビット”(右端のビット)の1の数=4の条件を満たすことを要求する。すなわち、上記条件を満たすマスクa およびマスクbの選択を特徴とする。上記条件を満たすマスク値の例として、(10000011111011011110010100100001)2 や(11011010011001010011010110001010)2 などが使用できる。
【0050】ただし、理想的には上記条件を満たすマスク値を使用することが推奨されるが、「マスクa を4ビットづつ区切ったときの各ブロックの“第1ビット”の1の数」と「マスクa を4ビットづつ区切ったときの各ブロックの“第4ビット”の1の数」が、極端に偏っていなければ同様の効果が得られる。」(この摘記事項中の下線は当審で付与したものである。)と開示されているように、
マスクを用いてデータを隠蔽する際に、マスクのハミング重みがマスクのビット長の丁度半分であるマスクを使用することは周知の事項である。
そして、原査定の拒絶理由に引用された刊行物である特開2000-165375号公報(以下、「引用文献3」という。)において、
「【0031】選択的転置処理の手順を説明する前に、本実施例における選択的データ転置で使用するデータについて説明する。f関数に入力されるデータは、図6に示すように、前の処理で正常データ602とそのビット603を反転したビット反転データの組にして入力される。このような組で扱うと、常に、“0”のビットの数と“1”のビットの数は一定になる。例えば、正常データのビットが、“00111100”であれば、ビット反転データは“11000011”となり、正常データとそのビット反転データの組での“0”のビットの数は8であり、“1”のビットの数、すなわちハミングウェイトは8である。そのため、正常データとそのビット反転データを組で、データバス(203)に転送したならば、組における“0”と“1”のビットの数が常に一定になるため、データの依存性が消費電流に反映されないという特徴がある。例えば、データバス203がプリチャージバスであれば、データを転送する準備として、一旦データバスの値を“1”か“0”にそろえ、その後、データを転送する。この場合、常に、プリチャージの状態では、バスの値が同じ値になっているため、正常データとそのビット反転データを組でデータ転送した場合、“1”から“0”あるいは、“0”から“1”に値が変わる数は、プリチャージの状態の前後で、一定になり、データによる消費電流依存性が減る。もし、データバスが、プリチャージ状態を持たない、スタティックバスであれば、ビットの反転は、前のデータの値に依存するが、転送するデータのハミングウェイトが常に一定のため、転送するデータによる電流消費依存性は少ない。少なくとも、正常データだけでは、ハミングウェイトは一定でないため、その電流消費依存性が生じる。正常データとそのビット反転データの組を一緒にデータ転送し、ハミングウェイトをそろえると、転送するデータによる電流消費依存性は減る。」(この摘記事項中の下線は当審で付与したものである。)と開示されているように、
データによる消費電流依存性を減らすために、データのハミングウェイトを常に一定にそろえることも周知の事項であることを考え合わせると、
引用発明において、8つのS(i)ボックス用の6ビットのアドレス撹乱用データXsa(i)及び8つの4ビットのデータ撹乱用データX3(i)のハミング重みを、常に各撹乱用データのビット長の丁度半分となるようにそろえることは、当業者が容易になし得たことである。
よって、相違点1及び2は格別なものではない。


上記相違点3及び4について検討する。
本願の出願日前に頒布された刊行物である特開2000-59354号公報(以下、「周知例」という。)において、
「【0010】図4は送信情報を暗号化し、また復号するためのセッション鍵を生成するための鍵テーブルである。可搬記録媒体内、あるいは可搬記録媒体のデータを読み込んで処理する端末装置内には、図4(a)、(b)に示すような鍵テーブルが格納されている。鍵テーブルは、暗号鍵を生成するための暗号鍵データと、これに対応する指標からなっている。可搬記録媒体Aには、指標1、2、……nに対応して、例えば、8バイトの暗号鍵情報
a11a12……a18
a21a22……a28


an1an2……an8
が格納される。また、可搬記録媒体Bには、指標1、2、……nに対応して、8バイトの暗号鍵情報
b11b12……b18
b21b22……b28



bn1bn2……bn8
が格納される。このような鍵テーブルを格納した可搬記録媒体の指標1、2……nのうちのいずれかの値をランダムに発生させる。この発生は、可搬記録媒体自身でも端末装置でもどちらで行うようにしてもよい。1、2……nをランダムに発生させた結果、可搬記録媒体Aでは「3」、可搬記録媒体Bでは「4」となったとすると、可搬記録媒体Aの指標「3」に対応する暗号鍵データの先頭4バイト、可搬記録媒体Bの指標「4」に対応する暗号鍵データの指標4バイトを組み合わせた
a31a32a33a34b45b46b47b48
がセッション鍵となるようにしておく。
【0011】図5(a)に示すように、送信情報Mは前記指標の組み合わせに対応して生成したセッション鍵「a31a32a33a34b45b46b47b48」を用いて暗号化され、暗号文Cが得られる。また、図5(b)に示すように、このセッション鍵を利用してCからMへ復号される。
【0012】このようなセッション鍵鍵生成方法を用いてデータを暗号化して送信し、復号する場合を図6により説明する。上記したように、可搬記録媒体A、可搬記録媒体Bからランダムに発生させた指標の組み合わせによりセッション鍵が得られ、これにより送信情報Mが暗号化されて、暗号文Cが得られる。一方、暗号文Cの情報をハッシュ処理したハッシュ値H(c)と、前記ランダムに発生させた指標「3」、「4」の組み合わせ情報を可搬記録媒体Aの秘密鍵DA でデジタル署名し、さらにこの署名データに対して可搬記録媒体Bの秘密鍵DB でデジタル署名し、この署名データを暗号文Cと共に、ネットワーク上に送信する。受信側では相手の公開鍵を持っているので、署名データを可搬記録媒体A、可搬記録媒体Bの公開鍵EA 、EB で復号すると、前記テーブルの指標「3」、「4」が得られる。受信側の可搬記録媒体にも同じ鍵テーブルが格納されているので、指標「3」、「4」が分かると、鍵テーブルからセッション鍵「a31a32a33a34b45b46b47b48」が得られる。このセッション鍵により暗号文Cを復号することにより、送信情報Mが得られることになる。」(この摘記事項中の下線は当審で付与したものである。)と開示されているように、
鍵テーブルから得られる4バイトの暗号鍵データを組み合わせて8バイトのセッション鍵とすることは周知の事項である。
ここで、セッション鍵はデータを暗号化して暗号文を得るためのデータであって、データの暗号化は、データを撹乱するいうことを含むものであることからすると、セッション鍵はデータ撹乱用データであると言え、鍵テーブルの暗号鍵データの長さの4バイトは、発生させたいセッション鍵の長さの8バイトと約数の関係にあることは明らかである。
そうしてみると、テーブルから得られる発生させたいデータ撹乱用データの長さの約数となる長さの撹乱データを組み合わせてデータ撹乱用データとすることは、周知例に開示されているように知られたものであり、
そして、引用文献2の上記摘記事項中に「【0050】ただし、理想的には上記条件を満たすマスク値を使用することが推奨されるが、「マスクa を4ビットづつ区切ったときの各ブロックの“第1ビット”の1の数」と「マスクa を4ビットづつ区切ったときの各ブロックの“第4ビット”の1の数」が、極端に偏っていなければ同様の効果が得られる。」と開示されているように、マスクを構成する各ブロックのハミング重みが偏らないようにすること、即ち、撹乱用データを構成する各撹乱データのハミング重みを偏りのないものとすることは周知の事項であり、更に、引用文献3に開示されているように、データによる消費電流依存性を減らすために、データのハミングウェイトを常に一定にそろえることも周知の事項であることを考え合わせると、
引用発明において、テーブルから得られる発生させたいアドレス撹乱用データの長さの約数となる長さのハミング重みが一定で偏りのない撹乱データを組み合わせて、8つのS(i)ボックス用の6ビットのアドレス撹乱用データXsa(i)を作成するようにすると共に、テーブルから得られる発生させたいデータ撹乱用データの長さの約数となる長さのハミング重みが一定で偏りのない8つの X3(i)をそれぞれ連結することによって、撹乱用データX3を生成するようにすることは、当業者が容易になし得たことである。
よって、相違点3及び4は格別なものではない。


上記で検討したように、相違点1乃至4は格別なものではなく、本願発明の構成によってもたらされる効果も、当業者であれば予測可能なものに過ぎず格別なものとは認められない。


6.結び
以上の通り、本願発明は、引用発明及び周知事項に基づいて、当業者が容易に発明をすることができたものであるから、特許法第29条第2項の規定により特許を受けることができない。
よって、結論のとおり審決する。
 
審理終結日 2009-12-09 
結審通知日 2009-12-15 
審決日 2010-01-04 
出願番号 特願2001-46250(P2001-46250)
審決分類 P 1 8・ 121- WZ (H04L)
最終処分 不成立  
前審関与審査官 速水 雄太  
特許庁審判長 山崎 達也
特許庁審判官 石田 信行
石井 茂和
発明の名称 情報処理装置  
代理人 ポレール特許業務法人  

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