• ポートフォリオ機能


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

  • この表をプリントする
PDF PDFをダウンロード
審決分類 審判 査定不服 特17条の2、3項新規事項追加の補正 特許、登録しない。 G09C
審判 査定不服 特36条6項1、2号及び3号 請求の範囲の記載不備 特許、登録しない。 G09C
管理番号 1296476
審判番号 不服2012-20032  
総通号数 183 
発行国 日本国特許庁(JP) 
公報種別 特許審決公報 
発行日 2015-03-27 
種別 拒絶査定不服の審決 
審判請求日 2012-10-11 
確定日 2015-01-14 
事件の表示 特願2009-552935「新暗号規格(AES)向けの柔軟なアーキテクチャおよび命令」拒絶査定不服審判事件〔平成20年10月 9日国際公開,WO2008/121614,平成22年 6月10日国内公表,特表2010-520517〕について,次のとおり審決する。 
結論 本件審判の請求は,成り立たない。 
理由 第1.手続の経緯
本願は,2008年3月25日(パリ条約による優先権主張外国庁受理2007年3月28日 アメリカ合衆国)を国際出願日とする出願であって,
平成21年9月3日付けで特許法第184条の4第1項の規定による明細書,請求の範囲,及び,図面(図面の中の説明に限る)の日本語による翻訳文が提出されると共に,同日付けで審査請求と手続補正がなされ,平成23年12月22日付けで審査官により拒絶理由が通知され,これに対して平成24年5月10日付けで意見書が提出されると共に手続補正がなされたが,平成24年6月4日付けで審査官により拒絶査定がなされ(発送;平成24年6月12日),これに対して平成24年10月11日付けで審判請求がなされると共に手続補正がなされ,平成25年3月4日付けで審査官により特許法第164条第3項の規定に基づく報告がなされ,平成25年4月15日付けで当審により特許法第134条第4項の規定に基づく審尋がなされ,平成25年7月9日付けで回答書の提出があったものである。

第2.平成24年10月11日付けの手続補正の却下の決定

[補正却下の決定の結論]

平成24年10月11日付け手続補正を却下する。

[理由]

1.補正の内容
平成24年10月11日付けの手続補正(以下,「本件手続補正」という)により,平成24年5月10日付けの手続補正により補正された特許請求の範囲,
「 【請求項1】
新暗号規格命令セット(AES命令セット)を実行する実行部を備える装置であって,
前記AES命令セットは,少なくとも1つのシングルラウンドのAESラウンド命令および少なくとも1つのシングルラウンドのAES鍵生成命令を含み,前記実行部にプログラム可能な数のAESラウンドを実行させ,
前記AES命令セットは,前記プログラム可能な数の前記AESラウンドを実行させる場合であって,前記AESラウンドの実行回数が1回目より多い場合に,前記実行部に,
鍵をレジスタにロードさせ,
前記鍵が複数の前記AESラウンドに対して利用される単一の鍵である場合に,前記鍵に基づいて複数の前記AESラウンドのためのラウンド鍵スケジュールを予め計算し,前記鍵が異なるAESラウンドにおいて使用される複数の異なる鍵である場合に,少なくとも1つの前記AESラウンドにおいて暗号化および復号化のうちの少なくとも1つを実行する前に,前記AESラウンドのうちの少なくとも1つのためにオンザフライでラウンド鍵を計算することによって,前記プログラム可能な数の前記AESラウンドで利用するラウンド鍵を生成させ,
前記AESラウンドのそれぞれにおいて,前記AESラウンドの入力および前記AESラウンドの前記ラウンド鍵に対して一連のAESラウンド演算を行わせて,次のAESラウンドの次の入力または前記AES命令の結果を提供させる,装置。
【請求項2】
前記AES命令セットは,前記プログラム可能な数の前記AESラウンドを実行させる場合であって,前記AESラウンドの実行回数が1回目である場合,前記一連のAESラウンド演算を行う前に,前記実行部に,前記鍵に基づいて前記AESラウンドのためのラウンド鍵を予め計算させ,前記AESラウンドについて予め計算された前記ラウンド鍵を前記レジスタ内にロードさせる,請求項1に記載の装置。
【請求項3】
前記一連のAESラウンド演算により,前記実行部は,
前記AESラウンドの入力および前記AESラウンドの前記ラウンド鍵に対して排他的論理和(XOR)演算を行って,中間値を生成し,
ルックアップテーブルに格納されている値に基づいて,前記中間値の各バイトに対して置換演算を行い,
前記置換演算の結果に,前記中間値の行をシフトさせるビット線形変換を行う,請求項2に記載の装置。
【請求項4】
前記AESラウンドの実行回数-1に対して前記一連のAESラウンド演算を行うことで,前記実行部は,
前記AESラウンドの前記入力および前記AESラウンドの前記ラウンド鍵に対して排他的論理和(XOR)演算を行って,中間値を生成し,
ルックアップテーブルに格納されている値に基づいて,前記中間値の各バイトに対して置換演算を行い,
前記置換演算の結果に,前記中間値の行をシフトさせるビット線形変換を行い,
前記置換演算の結果に,前記中間値の列同士を混合させるビット線形変換を行う,請求項1に記載の装置。
【請求項5】
前記プログラム可能な数のAESラウンドが最終AESラウンドを含み,前記最終AESラウンドにおいて,前記一連のAESラウンド演算は,前記実行部に,
前記ラウンドの入力および前記AESラウンドの前記ラウンド鍵に対して排他的論理和(XOR)演算を行わせて,中間値を生成させ,
ルックアップテーブルに格納されている値に基づいて,前記中間値の各バイトに対して置換演算を行わせ,
前記置換演算の結果に,前記中間値の行をシフトさせるビット線形変換を行わせる,請求項4に記載の装置。
【請求項6】
前記結果は暗号化された値である,請求項1から5のいずれか1項に記載の装置。
【請求項7】
前記結果は復号化された値である,請求項1から5のいずれか1項に記載の装置。
【請求項8】
第1のAESラウンドの鍵および入力がレジスタファイルに格納されている,請求項1から7のいずれか1項に記載の装置。
【請求項9】
前記レジスタファイルは複数の128ビットレジスタを含む,請求項8に記載の装置。
【請求項10】
少なくとも1つのシングルラウンドの新暗号規格ラウンド命令(AESラウンド命令)および少なくとも1つのシングルラウンドのAES鍵生成命令を含むAES命令セットを用いて,プログラム可能な数のAESラウンドを実行する段階を備え,
前記AESラウンドの実行回数が1回目より多い場合に,
鍵をレジスタにロードする段階と,
前記鍵が複数の前記AESラウンドに対して利用される単一の鍵である場合に,前記鍵に基づいて複数の前記AESラウンドのためのラウンド鍵スケジュールを予め計算し,前記鍵が異なるAESラウンドにおいて使用される複数の異なる鍵である場合に,少なくとも1つの前記AESラウンドにおいて暗号化および復号化のうちの少なくとも1つを実行する前に,前記AESラウンドのうちの少なくとも1つのためにオンザフライでラウンド鍵を計算することによって,前記プログラム可能な数のAESラウンドで利用するラウンド鍵を生成する段階と,
前記AESラウンドのそれぞれにおいて,前記AESラウンドの入力および前記AESラウンドの前記ラウンド鍵に対して一連のAESラウンド演算を行い,次のAESラウンドの次の入力または前記AES命令の結果を提供する段階と,を備える方法。
【請求項11】
前記AESラウンドの実行回数が1回目である場合,前記一連のAESラウンド演算を行う前に,前記鍵に基づいて前記AESラウンドのためのラウンド鍵を予め計算し,前記AESラウンドについて予め計算された前記ラウンド鍵を前記レジスタ内にロードする段階を備える,請求項10に記載の方法。
【請求項12】
前記一連のAESラウンド演算を行う段階は,
前記AESラウンドの入力および前記AESラウンドの前記ラウンド鍵に対して排他的論理和(XOR)演算を行って,中間値を生成する段階と,
ルックアップテーブルに格納されている値に基づいて,前記中間値の各バイトに対して置換演算を行う段階と,
前記置換演算の結果に,前記中間値の行をシフトさせるビット線形変換を行う段階と,を有する,請求項11に記載の方法。
【請求項13】
前記ラウンドの数1に対して前記一連のAESラウンド演算を行う段階は,
前記AESラウンドの前記入力および前記AESラウンドの前記ラウンド鍵に対して排他的論理和(XOR)演算を行って,中間値を生成する段階と,
ルックアップテーブルに格納されている値に基づいて,前記中間値の各バイトに対して置換演算を行う段階と,
前記置換演算の結果に,前記中間値の行をシフトさせるビット線形変換を行う段階と,
前記置換演算の結果に,前記中間値の列同士を混合させるビット線形変換を行う段階と,を有する,請求項10に記載の方法。
【請求項14】
前記プログラム可能な数のAESラウンドが最終AESラウンドを含み,前記最終AESラウンドにおいて,前記一連のAESラウンド演算を行う段階は,
前記ラウンドの入力および前記AESラウンドの前記ラウンド鍵に対して排他的論理和(XOR)演算を行って,中間値を生成する段階と,
ルックアップテーブルに格納されている値に基づいて,前記中間値の各バイトに対して置換演算を行う段階と,
前記置換演算の結果に,前記中間値の行をシフトさせるビット線形変換を行う段階と,を有する,請求項13に記載の方法。
【請求項15】
前記結果は暗号化された値である,請求項10から14のいずれか1項に記載の方法。
【請求項16】
前記結果は復号化された値である,請求項10から14のいずれか1項に記載の方法。
【請求項17】
第1のAESラウンドの鍵および入力がレジスタファイルに格納されている,請求項10から16のいずれか1項に記載の方法。
【請求項18】
前記レジスタファイルは複数の128ビットレジスタを含む,請求項17に記載の方法。
【請求項19】
請求項10から17のいずれか1項に記載の方法を実行する手段を備えるシステム。
【請求項20】
コンピュータに,新暗号規格命令セット(AES命令セット)を用いて,プログラム可能な数のAESラウンドを実行させるためのプログラムであって,
前記プログラム可能な数の前記AESラウンドを実行させる場合であって,前記AESラウンドの実行回数が1回目より多い場合に,鍵をレジスタにロードし,前記鍵が複数の前記AESラウンドに対して利用される単一の鍵である場合に,前記鍵に基づいて複数の前記AESラウンドのためのラウンド鍵スケジュールを予め計算し,前記鍵が異なるAESラウンドにおいて使用される複数の異なる鍵である場合に,少なくとも1つの前記AESラウンドにおいて暗号化および復号化のうちの少なくとも1つを実行する前に,前記AESラウンドのうちの少なくとも1つのためにオンザフライでラウンド鍵を計算することによって,前記プログラム可能な数のAESラウンドで利用するラウンド鍵を生成する手順と,
前記AESラウンドのそれぞれにおいて,前記AESラウンドの入力および前記AESラウンドの前記ラウンド鍵に対して一連のAESラウンド演算を行わせて,次のAESラウンドの次の入力または前記AES命令の結果を提供する手順と,をコンピュータに実行させるためのプログラム。
【請求項21】
コンピュータに,
前記AESラウンドの実行回数が1回目である場合,前記一連のAESラウンド演算を行う前に,前記鍵に基づいて前記AESラウンドのためのラウンド鍵を予め計算し,前記AESラウンドについて予め計算された前記ラウンド鍵を前記レジスタ内にロードする手順,をさらに実行させるための請求項20に記載のプログラム。」(以下,上記引用の請求項各項を,「補正前の請求項」という)は,
「 【請求項1】
新暗号規格命令セット(AES命令セット)を実行する実行部を備える装置であって,
前記AES命令セットは,少なくとも1つのシングルラウンドのAESラウンド命令および少なくとも1つのシングルラウンドのAES鍵生成命令を含み,前記実行部にプログラム可能な数のAESラウンドを実行させ,
前記プログラム可能な数の前記AESラウンドを実行する場合であって,前記AESラウンドを実行する回数が1回より多い場合に,
前記実行部は,入力鍵をレジスタにロードし,
前記AES命令セットは,前記実行部に,
複数のブロックに対して同じ鍵を利用する場合に,前記入力鍵に基づいて複数の前記AESラウンドのためのラウンド鍵スケジュールを予め計算し,異なる鍵を利用して各ブロックを暗号化および復号化のうちの少なくとも1つを実行する場合に,少なくとも1つの前記AESラウンドにおいて暗号化および復号化のうちの少なくとも1つを実行する前に,前記AESラウンドのうちの少なくとも1つのためにオンザフライでラウンド鍵を計算することによって,前記プログラム可能な数の前記AESラウンドで利用するラウンド鍵を生成させ,
前記AESラウンドのそれぞれにおいて,前記AESラウンドの入力および前記AESラウンドの前記ラウンド鍵に対して一連のAESラウンド演算を行わせて,次のAESラウンドの次の入力または前記AES命令の結果を提供させる,装置。
【請求項2】
前記AES命令セットは,前記プログラム可能な数の前記AESラウンドを実行させる場合であって,前記AESラウンドを実行する回数が1回である場合,前記一連のAESラウンド演算を行う前に,前記実行部に,前記鍵に基づいて前記AESラウンドのためのラウンド鍵を予め計算させ,前記AESラウンドについて予め計算された前記ラウンド鍵を前記レジスタ内にロードさせる,請求項1に記載の装置。
【請求項3】
前記実行部は,
前記AESラウンドの入力および前記AESラウンドの前記ラウンド鍵に対して排他的論理和(XOR)演算を行って,中間値を生成し,
前記一連のAESラウンド演算により,前記実行部は,
ルックアップテーブルに格納されている値に基づいて,前記中間値の各バイトに対して置換演算を行い,
前記置換演算の結果に,前記中間値の行をシフトさせるビット線形変換を行う,請求項2に記載の装置。
【請求項4】
前記実行部は,
前記AESラウンドの前記入力および前記AESラウンドの前記ラウンド鍵に対して排他的論理和(XOR)演算を行って,中間値を生成し,
前記実行部は,前記AESラウンドを実行する回数-1に対して前記一連のAESラウンド演算を行うことで,
ルックアップテーブルに格納されている値に基づいて,前記中間値の各バイトに対して置換演算を行い,
前記置換演算の結果に,前記中間値の行をシフトさせるビット線形変換を行い,
前記置換演算の結果に,前記中間値の列同士を混合させるビット線形変換を行う,請求項1に記載の装置。
【請求項5】
前記プログラム可能な数のAESラウンドが最終AESラウンドを含み,前記最終AESラウンドにおいて,前記一連のAESラウンド演算は,前記実行部に,
ルックアップテーブルに格納されている値に基づいて,前記中間値の各バイトに対して置換演算を行わせ,
前記置換演算の結果に,前記中間値の行をシフトさせるビット線形変換を行わせる,請求項4に記載の装置。
【請求項6】
前記結果は暗号化された値である,請求項1から5のいずれか1項に記載の装置。
【請求項7】
前記結果は復号化された値である,請求項1に記載の装置。
【請求項8】
第1のAESラウンドの鍵および入力がレジスタファイルに格納されている,請求項1から7のいずれか1項に記載の装置。
【請求項9】
前記レジスタファイルは複数の128ビットレジスタを含む,請求項8に記載の装置。
【請求項10】
少なくとも1つのシングルラウンドの新暗号規格ラウンド命令(AESラウンド命令)および少なくとも1つのシングルラウンドのAES鍵生成命令を含むAES命令セットを用いて,プログラム可能な数のAESラウンドを実行する段階を備え,
前記AESラウンドを実行する回数が1回より多い場合に,
入力鍵をレジスタにロードする段階と,
複数のブロックに対して同じ鍵を利用する場合に,前記入力鍵に基づいて複数の前記AESラウンドのためのラウンド鍵スケジュールを予め計算することによって,前記プログラム可能な数のAESラウンドで利用するラウンド鍵を生成する段階と,
異なる鍵を利用して各ブロックを暗号化および復号化のうちの少なくとも1つを実行する場合に,少なくとも1つの前記AESラウンドにおいて暗号化および復号化のうちの少なくとも1つを実行する前に,前記AESラウンドのうちの少なくとも1つのためにオンザフライでラウンド鍵を計算することによって,前記プログラム可能な数のAESラウンドで利用するラウンド鍵を生成する段階と,
前記AESラウンドのそれぞれにおいて,前記AESラウンドの入力および前記AESラウンドの前記ラウンド鍵に対して一連のAESラウンド演算を行い,次のAESラウンドの次の入力または前記AES命令の結果を提供する段階と,を備える方法。
【請求項11】
前記AESラウンドを実行する回数が1回である場合,前記一連のAESラウンド演算を行う前に,前記鍵に基づいて前記AESラウンドのためのラウンド鍵を予め計算し,前記AESラウンドについて予め計算された前記ラウンド鍵を前記レジスタ内にロードする段階を備える,請求項10に記載の方法。
【請求項12】
前記AESラウンドの入力および前記AESラウンドの前記ラウンド鍵に対して排他的論理和(XOR)演算を行って,中間値を生成する段階をさらに有し,
前記一連のAESラウンド演算を行う段階は,
ルックアップテーブルに格納されている値に基づいて,前記中間値の各バイトに対して置換演算を行う段階と,
前記置換演算の結果に,前記中間値の行をシフトさせるビット線形変換を行う段階と,を有する,請求項11に記載の方法。
【請求項13】
前記AESラウンドの前記入力および前記AESラウンドの前記ラウンド鍵に対して排他的論理和(XOR)演算を行って,中間値を生成する段階を更に有し,
前記AESラウンドを実行する回数-1に対して前記一連のAESラウンド演算を行う段階は,
ルックアップテーブルに格納されている値に基づいて,前記中間値の各バイトに対して置換演算を行う段階と,
前記置換演算の結果に,前記中間値の行をシフトさせるビット線形変換を行う段階と,
前記置換演算の結果に,前記中間値の列同士を混合させるビット線形変換を行う段階と,を有する,請求項10に記載の方法。
【請求項14】
前記プログラム可能な数のAESラウンドが最終AESラウンドを含み,前記最終AESラウンドにおいて,前記一連のAESラウンド演算を行う段階は,
ルックアップテーブルに格納されている値に基づいて,前記中間値の各バイトに対して置換演算を行う段階と,
前記置換演算の結果に,前記中間値の行をシフトさせるビット線形変換を行う段階と,を有する,請求項13に記載の方法。
【請求項15】
前記結果は暗号化された値である,請求項10から14のいずれか1項に記載の方法。
【請求項16】
前記結果は復号化された値である,請求項10に記載の方法。
【請求項17】
第1のAESラウンドの鍵および入力がレジスタファイルに格納されている,請求項10から16のいずれか1項に記載の方法。
【請求項18】
前記レジスタファイルは複数の128ビットレジスタを含む,請求項17に記載の方法。
【請求項19】
請求項10から17のいずれか1項に記載の方法を実行する手段を備えるシステム。
【請求項20】
コンピュータに,新暗号規格命令セット(AES命令セット)を用いて,プログラム可能な数のAESラウンドを実行させるためのプログラムであって,
前記プログラム可能な数の前記AESラウンドを実行させる場合であって,前記AESラウンドを実行する回数が1回より多い場合に,
入力鍵をレジスタにロードする手順と,
複数のブロックに対して同じ鍵を利用する場合に,前記入力鍵に基づいて複数の前記AESラウンドのためのラウンド鍵スケジュールを予め計算することによって,前記プログラム可能な数のAESラウンドで利用するラウンド鍵を生成する手順と,
異なる鍵を利用して各ブロックを暗号化および復号化のうちの少なくとも1つを実行する場合に,少なくとも1つの前記AESラウンドにおいて暗号化および復号化のうちの少なくとも1つを実行する前に,前記AESラウンドのうちの少なくとも1つのためにオンザフライでラウンド鍵を計算することによって,前記プログラム可能な数のAESラウンドで利用するラウンド鍵を生成する手順と,
前記AESラウンドのそれぞれにおいて,前記AESラウンドの入力および前記AESラウンドの前記ラウンド鍵に対して一連のAESラウンド演算を行わせて,次のAESラウンドの次の入力または前記AES命令の結果を提供する手順と,をコンピュータに実行させるためのプログラム。
【請求項21】
コンピュータに,
前記AESラウンドを実行する回数が1回である場合,前記一連のAESラウンド演算を行う前に,前記鍵に基づいて前記AESラウンドのためのラウンド鍵を予め計算し,前記AESラウンドについて予め計算された前記ラウンド鍵を前記レジスタ内にロードする手順,をさらに実行させるための請求項20に記載のプログラム。」(以下,上記引用の請求項各項を,「補正後の請求項」という)に補正された。

2.補正の適否
(1)新規事項
本件手続補正が,特許法第184条の12第2項により読み替える同法第17条の2第3項の規定を満たすものであるか否か,即ち,本件手続補正が,平成21年9月3日付けで提出された明細書,請求の範囲,及び,図面(図面の中の説明に限る)の日本語による翻訳文(以下,これを「当初明細書等」という)に記載した事項の範囲内でなされたものであるかについて,以下に検討する。

ア.補正後の請求項1に,
「新暗号規格命令セット(AES命令セット)を実行する実行部を備える装置であって,
前記AES命令セットは,・・・前記実行部にプログラム可能な数のAESラウンドを実行させ,・・・
前記AES命令セットは,前記実行部に,
複数のブロックに対して同じ鍵を利用する場合に,前記入力鍵に基づいて複数の前記AESラウンドのためのラウンド鍵スケジュールを予め計算し,異なる鍵を利用して各ブロックを暗号化および復号化のうちの少なくとも1つを実行する場合に,少なくとも1つの前記AESラウンドにおいて暗号化および復号化のうちの少なくとも1つを実行する前に,前記AESラウンドのうちの少なくとも1つのためにオンザフライでラウンド鍵を計算することによって,前記プログラム可能な数の前記AESラウンドで利用するラウンド鍵を生成させ」,
と記載され,
補正後の請求項10に,
「AES命令セットを用いて,プログラム可能な数のAESラウンドを実行する段階を備え,・・・
複数のブロックに対して同じ鍵を利用する場合に,前記入力鍵に基づいて複数の前記AESラウンドのためのラウンド鍵スケジュールを予め計算することによって,前記プログラム可能な数のAESラウンドで利用するラウンド鍵を生成する段階と,
異なる鍵を利用して各ブロックを暗号化および復号化のうちの少なくとも1つを実行する場合に,少なくとも1つの前記AESラウンドにおいて暗号化および復号化のうちの少なくとも1つを実行する前に,前記AESラウンドのうちの少なくとも1つのためにオンザフライでラウンド鍵を計算することによって,前記プログラム可能な数のAESラウンドで利用するラウンド鍵を生成する段階」,
と記載され,
補正後の請求項20に,
「コンピュータに,新暗号規格命令セット(AES命令セット)を用いて,プログラム可能な数のAESラウンドを実行させるためのプログラムであって,・・・
複数のブロックに対して同じ鍵を利用する場合に,前記入力鍵に基づいて複数の前記AESラウンドのためのラウンド鍵スケジュールを予め計算することによって,前記プログラム可能な数のAESラウンドで利用するラウンド鍵を生成する手順と,
異なる鍵を利用して各ブロックを暗号化および復号化のうちの少なくとも1つを実行する場合に,少なくとも1つの前記AESラウンドにおいて暗号化および復号化のうちの少なくとも1つを実行する前に,前記AESラウンドのうちの少なくとも1つのためにオンザフライでラウンド鍵を計算することによって,前記プログラム可能な数のAESラウンドで利用するラウンド鍵を生成する手順」,
と記載されていて,上記引用の補正後の請求項1,補正後の請求項10,及び,補正後の請求項20の記載は,その記載内容から,何れも,
“AESラウンドを実行する過程において,複数のブロックに対して同じ鍵を利用するか,異なる鍵を利用するかの識別を行い,その結果に基づいて,
複数のブロックに対して同じ鍵を利用する場合には,入力鍵に基づいて複数の前記AESラウンドのためのラウンド鍵スケジュールを予め計算し,
異なる鍵を利用して各ブロックを暗号化および復号化のうちの少なくとも1つを実行する場合には,少なくとも1つの前記AESラウンドにおいて暗号化および復号化のうちの少なくとも1つを実行する前に,前記AESラウンドのうちの少なくとも1つのためにオンザフライでラウンド鍵を計算することによって,前記プログラム可能な数の前記AESラウンドで利用するラウンド鍵を生成する”処理を行う態様を含むものであることは,明らかである。
上記指摘の,補正後の請求項1,補正後の請求項10,及び,補正後の請求項20に記載された内容に含まれる態様に対して,当初明細書等には,その段落【0036】?段落【0040】に,

A.「【0036】
多くのブロックについて同じ鍵を利用する場合,各ラウンドのラウンド鍵(鍵スケジュール)は,予め計算されてメモリ(例えばレベル1データキャッシュ204)に格納されているので,各ブロックの暗号化/復号化演算の前に同じ鍵スケジュールを再度計算する必要がない。
【表2】
RK[0]=入力鍵
Fori=1..10
RK[i]=AESNextRoundKey(RK[i-1])
End

STATE=入力ブロック
STATE=STATExorRK[0]

Fori=1..9
STATE=AESENCRYPTRound(STATE,RK[i])
END
STATE=AESENCRYPTLastRound(STATE,RK[10])
【0037】
10エレメントを有するアレイ(RK)を利用して,鍵の鍵スケジュールを格納する。AES-128暗号の入力鍵を,RK[0]に格納して,9ラウンド鍵RK[0]-RK[1]を,AES命令セットからAESNextRoundKey命令を読み出すことで予め計算する。AESNextRoundKey命令は,現在のラウンド鍵に基づいて次のラウンドを計算する。鍵スケジュールについて予め計算されたラウンド鍵は,レベル1データキャッシュ204のラウンド鍵214に格納されてよい。
【0038】
本例においては,そのラウンドのラウンド鍵である鍵スケジュールの該当部分(拡張鍵)が直接レジスタファイル304から入力されると,AESラウンドを行うループに入る前に,排他的論理和(XOR)演算を,状態と鍵とに対して行う。各ラウンド1から9においては,AES命令セットからAESENCRYPTRound命令を呼び出して,AESラウンド演算を1ラウンドについて行う。最終ラウンド(ラウンド10)については,AES命令セットからAESENCRYPTLastRound命令を呼び出して,この最終ラウンドにAESラウンド演算を行う。
【0039】
AES命令が暗号化または復号化する情報は,暗号または複号演算を開始する第1のAES命令が発行される前に,レジスタファイル304のソース/宛先レジスタ306へロードされる。ソースレジスタ306の情報の暗号化/復号化に利用される鍵は,レジスタファイル304の1以上の他のレジスタ308に格納されている。128ビット鍵の場合,鍵の全128ビットが,レジスタファイル304の他の128ビットレジスタのいずれかに格納される。128ビットより大きい鍵のサイズに対しては,最上位ビット(128ビットより大きい)を,128ビットレジスタのうち別のものに格納する。
【0040】
表2に示す例においては,レジスタファイル304のレジスタ308のいずれかにロードされる前に,鍵に基づいて各ラウンドのラウンド鍵が予め計算されて,レベル1データキャッシュ204に格納されていてよい。各ラウンドの鍵は,さらに,レジスタファイル304の1以上のレジスタに格納されていてもよく,または,レベル1データキャッシュ204のラウンド鍵214に格納されていてもよい。」(下線は,当審にて,説明の都合上,附加したものである。以下,同じ。)

との記載が存在し,また,当初明細書等の段落【0055】?段落【0058】に,

B.「【0055】
異なる鍵を利用して各ブロックを暗号化/復号化する場合(例えば,データパケットを暗号化/復号化するネットワークインタフェースコントローラ(NIC)の場合),ラウンド鍵は,以下の表3でAES-128暗号の疑似コードで示すように各ラウンドについて暗号化/復号化を行う前に,その都度計算されてよい。
【表3】
RK[0]=入力鍵

STATE=入力ブロック
STATE=STATExorRK[0]

Fori=1..9
RK[i]=AESNextRoundKey(RK[i-1])
STATE=AESENCRYPTRound(STATE,RK[i])
End
RK[10]=AESNextRoundKey(RK[9])
STATE=AESENCRYPTLastRound(STATE,RK[10])
【0056】
本例においては,該ラウンドのラウンド鍵は,鍵スケジュール(拡張鍵)の10ラウンド各々(つまり,ラウンド1-9およびラウンド10(最終ラウンド))に対してラウンド鍵を利用して暗号化を行う前に生成される。」

と記載されていて,上記Aに記載された内容から,当初明細書等には,
「多くのブロックについて同じ鍵を利用する場合,各ラウンドのラウンド鍵(鍵スケジュール)は,予め計算されてメモリ(例えばレベル1データキャッシュ204)に格納されている」点が記載され,該“ラウンド鍵が,メモリに予め格納されている”ことを実現するために,“入力鍵を,格納して,ラウンド鍵を,AES命令セットからAESNextRoundKey命令を読み出すことで予め計算する”ことが記載されていることが読み取れ,
上記Bに記載された内容から,当初明細書等には,
“異なる鍵を利用して各ブロックを暗号化/復号化する場合,ラウンド鍵は,各ラウンドについて暗号化/復号化を行う前に,その都度計算されてよい”ことが記載されていると読み取れる。
即ち,当初明細書等には,
“多くのブロックについて同じ鍵を利用する場合,各ラウンドのラウンド鍵(鍵スケジュール)は,入力鍵を,格納して,ラウンド鍵を,AES命令セットからAESNextRoundKey命令を読み出すことで予め計算されてメモリに格納されている”態様と,
“異なる鍵を利用して各ブロックを暗号化/復号化する場合,ラウンド鍵は,各ラウンドについて暗号化/復号化を行う前に,その都度計算されてよい”という態様とが,記載されていることまでは読み取ることができるが,上記引用の記載からは,単に,“同じ鍵を利用する場合”と,“異なる鍵を利用する場合”とが,それぞれ,個別に存在していることを示すに止まり,これら2つの態様の関連性,即ち,当初明細書等に記載された,一連の処理において,該2つの態様が,関連して処理されるのか,或いは,相互に関連しない,別の態様として処理されるのかについては,上記A,及び,Bの記載内容から読み取ることはできない。
そして,当初明細書等に記載された「AES命令セット」について,当初明細書等に,

C.「 【0027】
一実施形態では,暗号化ラウンド,復号化ラウンド,暗号化復号化最終ラウンド最終ラウンドを行い,ラウンド暗号鍵またはラウンド復号鍵を算出するのに,それぞれ別個のAES命令を含むAES命令セットが提供される。一実施形態では,AES命令セットが6つのAES命令を含む。各AESラウンド命令は,固有演算コード(opcode)を有する。固定幅ラウンド鍵の一実施形態(例えば128ビット)におけるAES命令セットのAESラウンド命令を,以下の表1に示す。
AESENCRYPTRound xmmsrcdst xmm
入力: データ(=宛先),ラウンド鍵
出力: ラウンド鍵を用いたAESラウンドによる変換後のデータ
AESENCRYPTLastRound xmmsrcdst xmm
入力: データ(=宛先),ラウンド鍵
出力: ラウンド鍵を用いたAES最終ラウンドによる変換後のデータ
AESDECRYPTRound xmmsrcdst xmm
入力: データ(=宛先),ラウンド鍵
出力: ラウンド鍵を用いたAESラウンドによる変換後のデータ
AESDECRYPTLastRound xmmsrcdst xmm
入力: データ(=宛先),ラウンド鍵
出力: ラウンド鍵を用いたAES最終ラウンドによる変換後のデータ
AESNextRoundKey xmmsrc1,2 xmm dst(直近)
入力: 鍵の下位128ビット,鍵の上位128ビット,ラウンド数の
インジケータ
出力: 入力から得られた次のラウンド鍵
AESPreviousRoundKey xmmsrc1,2 xmm dst(直近)
入力: 鍵の下位128ビット,鍵の上位128ビット,ラウンド数の
インジケータ
出力: 入力から得られた前のラウンド鍵
【0028】
AES命令セットは,4つのAESラウンド命令(暗号化,復号化,暗号化最終ラウンド,復号化最終ラウンド),および2つのAESラウンド鍵命令(次のラウンド鍵および前のラウンド鍵)を含む。AES命令セットのAESラウンド命令は,最終ラウンド以外の全てのラウンドに利用される暗号化および復号化ラウンド演算を行うシングルラウンド演算を含む。例えば,表1のAESENCRYPTRoundのシングルラウンド命令では,入力データが128ビットレジスタ(xmmsrcdst)に格納され,ラウンド鍵が別の128ビットレジスタ(xmm)に格納される。この命令は,128ビットxmmsrcdstレジスタに格納されている入力データ(ソース)に対してAESラウンド演算を行い,128ビットxmmsrcdstレジスタに格納されている入力データを,ラウンド演算実行結果で上書きする。故に,xmmsrcdstは当初は入力データを,そして後には,AESラウンド演算結果を格納する。
【0029】
さらにAES命令セットは,最終復号化ラウンドのAES復号命令および最終暗号化ラウンドのAES暗号命令を含む。例えば,表1のAESENCRYPTLastRoundのシングルラウンド命令では,入力データが128ビットレジスタ(xmmsrcdst)に格納され,ラウンド鍵が別の128ビットレジスタ(xmm)に格納される。この命令は,xmmsrcdstレジスタに格納されている入力データ(ソース)に対してAESラウンド演算を行い,xmmsrcdstレジスタに格納されている入力データを,ラウンド演算実行結果で上書きする。故に,xmmsrcdstは当初は入力データを,そして後には,ラウンド演算結果を格納する。xmmレジスタは,ラウンド演算のラウンド鍵を格納する。
・・・・・(中略)・・・・
【0031】
AES命令セットの他の2つのAES命令は,鍵のサイズ(つまり,128ビット,192ビット,または256ビット)に応じてAESラウンド用のラウンド鍵を生成する。これらAESラウンド鍵命令の一方は暗号化演算に利用されるラウンド鍵を生成し,他方は復号化演算に利用されるラウンド鍵を生成する。AESNextRoundKey AESPreviousRoundKey命令における直近のフィールドは,鍵のサイズを特定する{128,192,256}。
【0032】
また別の実施形態では,直近のフィールドの代わりに,異なる鍵のサイズが,各々が固有演算コードを有する別個の命令として実装されてよい。この実施形態では,AESラウンド鍵命令の数は,各ラウンド鍵演算(例えばAESNextRoundKey_128,AESNextRoundKey_192,およびAESNextRoundKey_256)について3つの別個の命令を含み,AESPreviousRoundKeyもまた,これらに類似した3つの命令のセットを含む。この実施形態では,命令セット内の命令の総数は,先に述べた実施形態の6つに比して,10となっている。
【0033】
レジスタファイル304は,AES命令セットのAES命令が利用しうる128ビットレジスタを複数有する。128ビットレジスタは,ソースオペランド,ラウンド鍵,およびAES命令の結果を格納しうる。第1ラウンドでは,AES命令は,暗号される128ビットの平文または復号される128ビットの暗号文であってよいソースオペランドを受信する。128ビット,192ビット,または256ビットの鍵の鍵スケジュールを生成する鍵は,レジスタファイル304内の複数の128ビットレジスタ308のいずれかに格納されていてよい。またラウンド鍵も,レジスタファイルの128ビットレジスタ308のいずれかに格納されてよい。全ての命令は,レジスタファイルのレジスタを利用し,さらに,後述するようにメモリから直接入力を得てよい。
【0034】
表1に示すAES命令セットの一実施形態を利用するソースコードの例を,以下の表2に示す。本例においては,多くのブロックに対して同じ鍵を利用する暗号化を行うアプリケーションで性能が最適化されている。このようなアプリケーションの1つに,ディスクに格納する前に全てのデータを暗号化する際に同じ鍵を利用するようなディスクのコンテンツを暗号化するのに単一の鍵を利用するものがある。本例では,AES-128暗号が行われる。」

と記載されており,上記Cの特に下線を附した箇所の記載内容から,本願における「AES命令セット」について,
“AES命令セットが6つのAES命令を含むこと,4つのAESラウンド命令(暗号化,復号化,最終暗号化ラウンド,最終復号化ラウンド),および2つのAESラウンド鍵命令(次のラウンド鍵および前のラウンド鍵)を含むこと,そして,AES命令セットのAESラウンド命令は,最終ラウンド以外の全てのラウンドに利用される暗号化および復号化ラウンド演算を行うシングルラウンド演算を含むこと,更に,AES命令セットは,最終復号化ラウンドのAES復号命令および最終暗号化ラウンドのAES暗号命令を含むこと,AES命令セットの他の2つのAES命令は,鍵のサイズ(つまり,128ビット,192ビット,または256ビット)に応じてAESラウンド用のラウンド鍵を生成すること,AESラウンド鍵命令の数は,各ラウンド鍵演算(例えばAESNextRoundKey_128,AESNextRoundKey_192,およびAESNextRoundKey_256)について3つの別個の命令を含み,AESPreviousRoundKeyもまた,これらに類似した3つの命令のセットを含むこと,レジスタファイルが,AES命令セットのAES命令が利用しうる128ビットレジスタを複数有すること”は読み取れるが,上記指摘の内容は,単に,「AES命令セット」が,複数の命令を含んでいることを示すのみであり,また,それぞれの命令についても,それらの命令が実行される場合に,何らかの条件分岐が起こることを指し示す構成については,上記Cの記載中には存在せず,また,上記Cの記載内容から当業者にとって自明の事項であるとも認められない。そして,上記C以外の当初明細書等の記載内容を加味しても,“AES命令セットが処理される過程において,鍵の利用条件に応じて処理が変更される”ことは,記載されておらず,また,当初明細書等の記載内容から,当業者にとって自明の事項とは認められない。
即ち,上記に引用した補正後の請求項1に記載されているように,
“AES命令セットが,実行部に,
複数のブロックに対して同じ鍵を利用する場合に,入力鍵に基づいて複数のAESラウンドのためのラウンド鍵スケジュールを予め計算し,
異なる鍵を利用して各ブロックを暗号化および復号化のうちの少なくとも1つを実行する場合に,少なくとも1つのAESラウンドにおいて暗号化および復号化のうちの少なくとも1つを実行する前に,AESラウンドのうちの少なくとも1つのためにオンザフライでラウンド鍵を計算することによって,プログラム可能な数の前記AESラウンドで利用するラウンド鍵を生成させ”ることを実現するための,「AES命令セット」の構成,或いは,動作に関しては,上記Cの記載中には,何ら記載されおらず,また,上記Cの記載,及び,当初明細書等の他の箇所の記載内容から,当業者にとって自明の事項とは認められない。
同様に,上記引用の補正後の請求項10における,
“AES命令セットを用いて,プログラム可能な数のAESラウンドを実行する段階を備え,
複数のブロックに対して同じ鍵を利用する場合に,入力鍵に基づいて複数の前記AESラウンドのためのラウンド鍵スケジュールを予め計算することによって,前記プログラム可能な数のAESラウンドで利用するラウンド鍵を生成する段階と,
異なる鍵を利用して各ブロックを暗号化および復号化のうちの少なくとも1つを実行する場合に,少なくとも1つの前記AESラウンドにおいて暗号化および復号化のうちの少なくとも1つを実行する前に,前記AESラウンドのうちの少なくとも1つのためにオンザフライでラウンド鍵を計算することによって,前記プログラム可能な数のAESラウンドで利用するラウンド鍵を生成する段階”という記載が内包する,
“複数のブロックに対して同じ鍵を利用する場合と,異なる鍵を利用して各ブロックを暗号化および復号化のうちの少なくとも1つを実行する場合とに応じて,プログラム可能な数のAESラウンドで利用するラウンド鍵を生成する段階を選択する”という態様については,上記A?C,及び,対応する図面,並びに,当初明細書等の上記A?C以外の箇所に記載されておらず,上記A?Cの記載内容,及び,対応する図面に開示の内容,並びに,当初明細書等の上記A?C以外の記載内容を参酌しても,当業者にとって自明の事項ではない。
同様に,上記引用の補正後の請求項20における,
“コンピュータに,新暗号規格命令セット(AES命令セット)を用いて,プログラム可能な数のAESラウンドを実行させるためのプログラムであって,
複数のブロックに対して同じ鍵を利用する場合に,入力鍵に基づいて複数の前記AESラウンドのためのラウンド鍵スケジュールを予め計算することによって,前記プログラム可能な数のAESラウンドで利用するラウンド鍵を生成する手順と,
異なる鍵を利用して各ブロックを暗号化および復号化のうちの少なくとも1つを実行する場合に,少なくとも1つの前記AESラウンドにおいて暗号化および復号化のうちの少なくとも1つを実行する前に,前記AESラウンドのうちの少なくとも1つのためにオンザフライでラウンド鍵を計算することによって,前記プログラム可能な数のAESラウンドで利用するラウンド鍵を生成する手順”という記載が内包する,
“複数のブロックに対して同じ鍵を利用する場合と,異なる鍵を利用して各ブロックを暗号化および復号化のうちの少なくとも1つを実行する場合とに応じて,プログラム可能な数のAESラウンドで利用するラウンド鍵を生成する段階を選択する”という態様は,当初明細書等には記載されておらず,また,当初明細書等の記載内容から,当業者にとって自明の事項でもない。

イ.補正後の請求項3に,
「前記実行部は,
前記AESラウンドの入力および前記AESラウンドの前記ラウンド鍵に対して排他的論理和(XOR)演算を行って,中間値を生成し,
前記一連のAESラウンド演算により,前記実行部は,
ルックアップテーブルに格納されている値に基づいて,前記中間値の各バイトに対して置換演算を行い,
前記置換演算の結果に,前記中間値の行をシフトさせるビット線形変換を行う,請求項2に記載の装置。」
と記載され,補正後の請求項4に,
「前記実行部は,
前記AESラウンドの前記入力および前記AESラウンドの前記ラウンド鍵に対して排他的論理和(XOR)演算を行って,中間値を生成し,
前記実行部は,前記AESラウンドを実行する回数-1に対して前記一連のAESラウンド演算を行うことで,
ルックアップテーブルに格納されている値に基づいて,前記中間値の各バイトに対して置換演算を行い,
前記置換演算の結果に,前記中間値の行をシフトさせるビット線形変換を行い,
前記置換演算の結果に,前記中間値の列同士を混合させるビット線形変換を行う,請求項1に記載の装置。」
と記載されていて,上記引用の補正後の請求項3,及び,請求項4の「前記実行部は,前記AESラウンドの入力および前記AESラウンドの前記ラウンド鍵に対して排他的論理和(XOR)演算を行って」という記載から,“XOR演算は,AESラウンドの入力及びラウンド鍵に対して行われる”ものであって,補正後の請求項3,及び,請求項4が,直接・間接に補正後の請求項1を引用するものであることを踏まえると,上記引用の“XOR演算”は,「AESラウンド」の中で行われるものと解される。
この点に関して,本願明細書の発明の詳細な説明,及び,図面には,

D.「【0048】
ブロック状態314では,AESラウンドロジック324への128ビットの入力(状態)に,ビットワイズXORを用いて,鍵(ラウンドに関連付けられた拡張鍵の128ビットの部分)を追加して,128ビットの中間値(状態)を生成する。」

という記載が存在し,【図3】に,「AESラウンドロジック」が,
「ブロック状態314→S-ボックス/逆S-ボックス316→行シフト318→逆列混合またはヌル混合320→ラウンド鍵加算326」から構成されていることが示されている。そして,「AES暗号化ラウンド命令のフロー」については,本願明細書の段落【0059】?段落【0066】,及び,【図4】に示されている。
しかしながら,段落【0048】に記載された“中間値の生成”を,段落【0059】?段落【0066】にしめされた「フロー」の中で行うことは,本願明細書には記載されておらず,【図3】,【図4】の記載内容を加味しても,本願明細書,及び,図面の記載内容から読み取れるものではない。
加えて,“AESラウンド”については,例えば,本願の第1国出願前に既に公知である,「清家秀律,黒川恭一「AES暗号用SubByte,MixColumns変換の方式設計」,情報処理学会研究報告.CSEC,[コンピュータセキュリティ],2001(75),一般社団法人情報処理学会,2001年7月25日発行,p119-126」(以下,これを「周知技術文献」という)に,

E.「2 AES (Rijndael)暗号の概要
AES 暗号となったRijndaelは,ベルギーのJoan Daemen氏とVincent Rijmen氏により開発された暗号である。
アルゴリズムでは,128-bitの暗号化及び復号のdataと,128,192,256-bitの秘密鍵を使っている。
暗号化においては,SubBytes,ShiftRows,MixColumns,AddRoundKeyという4つの変換部により構成されたRoundを,入力された秘密鍵のbit数により10,12,14回実行する。ただし,Roundを実行する前に,入力dataにAddRoundKey変換が行われること,最終Roundは,MixColumns変換が実行されない点が例外となる。
復号においても,暗号化と同様であるが,Roundを構成している変換部がInvSubBytes,InvShiftRows,IsnvMixColumns変換に換わる。
拡大鍵の生成は,秘密鍵から行い,秘密鍵のbit数(128,192,256-bit)により生成される拡大鍵のbit数が決まる。」(120頁左欄15行?30行)

とあるように,“入力と,ラウンド鍵との排他的論理和は,ラウンドの前に行われること”は,当該技術分野の技術常識である。
そして,上記指摘の技術常識を踏まえれば,上記Dに引用した「中間値(状態)を生成する」ことが,段落【0059】?段落【0066】に示された「AES暗号化ラウンド命令のフロー」の中で行われるものでないことは明らかである。
よって,本願明細書の発明の詳細な説明には,当該技術分野における技術常識を踏まえても,“AESラウンドの処理過程において,ラウンドの入力とラウンド鍵に対して排他的論理和(XOR)を行って中間値を生成する”ことは記載されていない。
以上検討したとおりであるから,補正後の請求項3,及び,請求項4に係る発明は,本願明細書の発明の詳細な説明に記載されたものではない。
補正後の請求項12,及び,請求項13にも,上記指摘の記載が存在するので,補正後の請求項3,及び,請求項4と同じく,補正後の請求項12,及び,請求項13に係る発明は,本願明細書の発明の詳細な説明に記載されたものではない。

よって,上記ア.,及び,イ.において検討したことから,本件手続補正は,当初明細書等の記載の範囲内でなされたものではない。

3.補正却下むすび
したがって,本件手続補正は,特許法第184条の12第2項により読み替える同法第17条の2第3項の規定に違反するので,同法第159条第1項において読み替えて準用する同法第53条第1項の規定により却下すべきものである。

よって,補正却下の決定の結論のとおり決定する。

第3.本願発明について
平成24年10月11日付けの手続補正は,上記のとおり却下されたので,本願に係る発明は,平成24年5月10日付けの手続補正により補正された,上記「第2.平成24年10月11日付けの手続補正の却下の決定」の「1.補正の内容」において,補正前の請求項1?請求項21として引用された記載により特定されるものである。

第4.原審の拒絶理由
一方,原審において,平成23年12月22日付けで通知された拒絶理由(以下,これを,「原審拒絶理由」という)は,概略,次のとおりである。

「 理 由
A.この出願は,特許請求の範囲の記載が下記の点で,特許法第36条第6項第1号に規定する要件を満たしていない。

請求項1には「前記AESラウンドの数が1より大きい場合,鍵を一時的鍵レジスタにロードさせ」と記載されている。
しかしながら,「一時的鍵レジスタ」とは,発明の詳細な説明に記載された何れの事項により支持されるものか不明である。
また,前記の記載における「鍵」とは,「各AESラウンドを行う前に,前記鍵に基づいて前記AESラウンドのラウンド鍵を生成させ」との記載からみて,128,192,または256ビットの鍵の鍵スケジュールを生成する鍵(33段落)のことであるから,そのような128,192,または256ビットの鍵を一時的鍵レジスタにロードさせることが,「前記AESラウンドの数が1より大きい場合」に行われるということも,発明の詳細な説明に記載された何れの事項により支持されるものか不明である。
請求項10,19,21についても同様のことがいえる。

よって,請求項1-22に係る発明は,発明の詳細な説明に記載したものでない。

B.省略

C.省略」

第5.原審拒絶理由に対する当審の判断
1.請求項1について
平成24年5月10日付けの手続補正によって,平成21年9月3日付けの手続補正により補正された請求項1に記載された,
「前記AESラウンドの数が1より大きい場合,鍵を一時的鍵レジスタにロードさせ」(以下,これを「引用記載1」という),
は,
「前記AESラウンドの実行回数が1回目より多い場合に,前記実行部に,鍵をレジスタにロードさせ」(以下,これを「引用記載2」という),
と補正されたので,上記引用の補正後の記載によって,原審拒絶理由によって指摘された拒絶の理由が解消したかについて,以下に検討する。

引用記載1,及び,引用記載2中の「鍵」とは,本願明細書の発明の詳細な説明の,

(a)「【0033】
レジスタファイル304は,AES命令セットのAES命令が利用しうる128ビットレジスタを複数有する。128ビットレジスタは,ソースオペランド,ラウンド鍵,およびAES命令の結果を格納しうる。第1ラウンドでは,AES命令は,暗号される128ビットの平文または復号される128ビットの暗号文であってよいソースオペランドを受信する。128ビット,192ビット,または256ビットの鍵の鍵スケジュールを生成する鍵は,レジスタファイル304内の複数の128ビットレジスタ308のいずれかに格納されていてよい。またラウンド鍵も,レジスタファイルの128ビットレジスタ308のいずれかに格納されてよい。全ての命令は,レジスタファイルのレジスタを利用し,さらに,後述するようにメモリから直接入力を得てよい。」

という記載中の下線を附した,
「128ビット,192ビット,または256ビットの鍵の鍵スケジュールを生成する鍵」,
に相当するものである。
上記(a)には,前記「128ビット,192ビット,または256ビットの鍵の鍵スケジュールを生成する鍵」に関して,「レジスタファイル304内の複数の128ビットレジスタ308のいずれかに格納されていてよい」と記載されていて,前記「128ビット,192ビット,または256ビットの鍵の鍵スケジュールを生成する鍵」が,「レジスタ」に格納されていることまでは読み取れる。
しかしながら,上記(a)においては,前記「128ビット,192ビット,または256ビットの鍵の鍵スケジュールを生成する鍵」が,どのタイミングで,「レジスタ」に格納されるかについては記載されていない。
上記(a)以外の本願明細書の発明の詳細な説明において,「鍵」,及び,「レジスタ」,並びに,「ロード」に関連する記載として,

(b)「【0011】
各ラウンドにおける鍵の生成は,ラウンド鍵を格納する暗黙の128ビットレジスタを利用して,その都度(on the fly)(つまり各ラウンド直前に)行われてよい。しかし,暗黙のレジスタの利用により,前の命令結果に対する依存性から,x86レジスタベースのプロセッサの性能が低下する虞がある。」

(c)「【0019】
図2は,図1に示すプロセッサ101の一実施形態のブロック図である。プロセッサ101は,レベル1(L1)命令キャッシュ202から受信したプロセッサ命令を復号化するフェッチ復号化部206を含む。命令実行に利用されるデータはレジスタファイル208に格納されていてよい。一実施形態においては,レジスタファイル208は,複数の128ビットレジスタを含み,これらは,AES命令が利用するデータを格納する際,AES命令が利用する。
【0020】
一実施形態においては,レジスタファイルは,ストリーミング(シングルインストラクションマルチプルデータ(SIMD))エクステンション(SSE)インストラクションのセットを有するIntel Pentium(登録商標) MMXプロセッサに提供されている128ビットのMMXレジスタに類似した128ビットレジスタ群である。SIMDプロセッサでは,データが128ビットブロックで処理され,一度に1つの128ビットブロックがロードされる。
【0021】
フェッチ復号化部206は,L1命令キャッシュ202からマイクロインストラクションをフェッチして,該マイクロインストラクションを復号化して,マイクロコード読み取り専用メモリ(ROM)214に格納されうるマイクロ演算(μops)と称される簡単な演算に分割する。実行部210は,マイクロ演算をスケジューリングして実行する。示されている実施形態では,実行部210のAES機能103は,AES命令セット用のマイクロ演算を含む。リタイヤ部212は,実行された命令の結果を,レジスタまたはメモリに書き込む。AES命令が利用するラウンド鍵214は,L1データキャッシュ204に格納されており,実行部210にロードされて,マイクロ演算がAES命令セットのAES命令を実行するのに利用されてよい。ラウンド鍵214をデータキャッシュ204に格納することで,例えばシステム100に格納されている暗号化情報にアクセスすべくラウンド鍵を取得しようとする試みのようなサイドチャネル攻撃からラウンド鍵を守る。」

(d)「【0028】
AES命令セットは,4つのAESラウンド命令(暗号化,復号化,暗号化最終ラウンド,復号化最終ラウンド),および2つのAESラウンド鍵命令(次のラウンド鍵および前のラウンド鍵)を含む。AES命令セットのAESラウンド命令は,最終ラウンド以外の全てのラウンドに利用される暗号化および復号化ラウンド演算を行うシングルラウンド演算を含む。例えば,表1のAESENCRYPTRoundのシングルラウンド命令では,入力データが128ビットレジスタ(xmmsrcdst)に格納され,ラウンド鍵が別の128ビットレジスタ(xmm)に格納される。この命令は,128ビットxmmsrcdstレジスタに格納されている入力データ(ソース)に対してAESラウンド演算を行い,128ビットxmmsrcdstレジスタに格納されている入力データを,ラウンド演算実行結果で上書きする。故に,xmmsrcdstは当初は入力データを,そして後には,AESラウンド演算結果を格納する。
【0029】
さらにAES命令セットは,最終復号化ラウンドのAES復号命令および最終暗号化ラウンドのAES暗号命令を含む。例えば,表1のAESENCRYPTLastRoundのシングルラウンド命令では,入力データが128ビットレジスタ(xmmsrcdst)に格納され,ラウンド鍵が別の128ビットレジスタ(xmm)に格納される。この命令は,xmmsrcdstレジスタに格納されている入力データ(ソース)に対してAESラウンド演算を行い,xmmsrcdstレジスタに格納されている入力データを,ラウンド演算実行結果で上書きする。故に,xmmsrcdstは当初は入力データを,そして後には,ラウンド演算結果を格納する。xmmレジスタは,ラウンド演算のラウンド鍵を格納する。
【0030】
別の実施形態では,ラウンドおよび最終ラウンド命令(例えば,AESENCRYPTRoundおよびAESENCRYPTLastRound)が,レジスタファイル304からではなくて,メモリ(m/128)から入力を受け取ってよい(例えば,AESラウンド命令は,AESENCRYPTRound xmmsrcdst m/128であってよい)。
・・・・(中略)・・・・
【0033】
レジスタファイル304は,AES命令セットのAES命令が利用しうる128ビットレジスタを複数有する。128ビットレジスタは,ソースオペランド,ラウンド鍵,およびAES命令の結果を格納しうる。第1ラウンドでは,AES命令は,暗号される128ビットの平文または復号される128ビットの暗号文であってよいソースオペランドを受信する。128ビット,192ビット,または256ビットの鍵の鍵スケジュールを生成する鍵は,レジスタファイル304内の複数の128ビットレジスタ308のいずれかに格納されていてよい。またラウンド鍵も,レジスタファイルの128ビットレジスタ308のいずれかに格納されてよい。全ての命令は,レジスタファイルのレジスタを利用し,さらに,後述するようにメモリから直接入力を得てよい。」

(e)「【0038】
本例においては,そのラウンドのラウンド鍵である鍵スケジュールの該当部分(拡張鍵)が直接レジスタファイル304から入力されると,AESラウンドを行うループに入る前に,排他的論理和(XOR)演算を,状態と鍵とに対して行う。各ラウンド1から9においては,AES命令セットからAESENCRYPTRound命令を呼び出して,AESラウンド演算を1ラウンドについて行う。最終ラウンド(ラウンド10)については,AES命令セットからAESENCRYPTLastRound命令を呼び出して,この最終ラウンドにAESラウンド演算を行う。
【0039】
AES命令が暗号化または復号化する情報は,暗号または複号演算を開始する第1のAES命令が発行される前に,レジスタファイル304のソース/宛先レジスタ306へロードされる。ソースレジスタ306の情報の暗号化/復号化に利用される鍵は,レジスタファイル304の1以上の他のレジスタ308に格納されている。128ビット鍵の場合,鍵の全128ビットが,レジスタファイル304の他の128ビットレジスタのいずれかに格納される。128ビットより大きい鍵のサイズに対しては,最上位ビット(128ビットより大きい)を,128ビットレジスタのうち別のものに格納する。
【0040】
表2に示す例においては,レジスタファイル304のレジスタ308のいずれかにロードされる前に,鍵に基づいて各ラウンドのラウンド鍵が予め計算されて,レベル1データキャッシュ204に格納されていてよい。各ラウンドの鍵は,さらに,レジスタファイル304の1以上のレジスタに格納されていてもよく,または,レベル1データキャッシュ204のラウンド鍵214に格納されていてもよい。
・・・・(中略)・・・・
【0042】
ラウンド毎の暗号化または復号化演算を行う前に,実行部210は,状態および鍵をレジスタファイル304から取得する。各暗号化/復号化ラウンド演算は,読み取り専用メモリ(ROM)214の鍵スケジューラ302に格納されているAES命令のマイクロ演算を利用して行われる。ここに示す実施形態では,状態(128ビットブロックの状態)は,レジスタ306に格納されており,鍵は,レジスタファイル304の他のレジスタ308の1以上に格納されている。AES命令の実行の結果生じる状態をレジスタファイル304のレジスタ306に格納する。状態は,次のAESラウンドまたはAES暗号化または復号化演算の最終結果が利用する中間ラウンドデータであってよい。」

(f)「【0054】
本例では,128ビットAES暗号化ラウンド演算を,拡張鍵が{RK[1],RK[2],…RK[10]}として表される鍵を利用して行う。ラウンド鍵は,AESDECRYPTRound命令を発行する前に,AESPreviousRoundKey xmmsrc1,2 xmm dst(中間)命令を発行することで生成されうる。ラウンド鍵は,レベル1データキャッシュ204からブロック状態314へ直接ロードされてもよいし,または,先ずレジスタファイル304のレジスタ(xmm)に格納されていて,その後,レジスタからブロック状態314へロードされてもよい。」

(g)「【0061】
ブロック402で,フェッチ復号化部206による命令復号化中,暗号化が必要である旨を制御ロジック322に格納して,暗号化ラウンド実行に利用されるラウンド鍵および128ビットブロック状態(ソース)をレジスタファイル304から実行部210へロードする。処理はブロック404へ進む。
・・・・(中略)・・・・
【0066】
ブロック412で,そのラウンドの暗号化演算の結果(128ビットブロック状態)を,レジスタファイル304のソース/宛先レジスタ302に格納する。これでAES暗号化命令処理が完了する。」

(h)「【0068】
図5は,図3の実行部210によるAES暗号化最終ラウンド命令のフローを示すフローグラフである。
ブロック500で,実行は,AES暗号化最終ラウンド命令を待つ。もしもAES暗号化最終ラウンド命令がフェッチ復号化部206で既に復号化されている場合,処理はブロック502に進む。復号化されていない場合は,ブロック500に留まり,AESラウンド暗号化命令を待つ。
ブロック502で,ブロック404(図4)との関連で説明したS-ボックスルックアップに類似した方法で最終ラウンドにS-ボックスルックアップを行う。処理はブロック504へ進む。
ブロック504で,ブロック406(図4)で他のラウンドとの関連で説明したような方法で最終ラウンドに行シフト演算を行う。処理はブロック506へ進む。
ブロック506で,拡張鍵からのラウンド鍵,およびそのAESラウンドの行シフト318または列混合320の結果の排他的論理和演算を行う。処理はブロック508へ進む。
ブロック508で,暗号化最終ラウンド演算の結果を,レジスタファイル304のソース/宛先レジスタ306に格納する。これでAES命令の処理が完了する。
【0069】
図6は,図3の実行部210によるAES復号化ラウンド命令のフローを示すフローグラフである。
ブロック600で,実行は,AES復号化ラウンド命令を待つ。AES復号化ラウンド命令がフェッチ復号化部206により既に復号化されている場合,処理はブロック602に進む。復号化されていない場合は,ブロック600に留まり,AES復号化ラウンド命令を待つ。
ブロック602で,フェッチ復号化部206による命令復号化中,復号化ラウンドを行う必要がある旨を制御ロジック322に格納して,復号化ラウンド実行に利用されるラウンド鍵およびソース(128ビットブロック状態)をレジスタファイル304から実行部210へロードする。処理はブロック604へ進む。
ブロック604で行う処理は復号化である。AES規格に定義されている逆s-ボックスルックアップを行うことで,置換演算を128ビットブロック状態に対して行う。処理はブロック606へ進む。
ブロック606で,FIPS PUB197で定義されている逆行シフト演算を行う。処理はブロック608へ進む。
ブロック608で,FIPS PUB197で定義されている逆行シフト演算を行う。処理はブロック610へ進む。
ブロック610で,拡張鍵からのラウンド鍵,およびそのAESラウンドの行シフト318または列混合320の結果の排他的論理和演算を行う。処理はブロック612へ進む。
ブロック612で,そのラウンドの復号化演算の結果(128ビットブロック状態)を,レジスタファイル304のソース/宛先レジスタ302に格納する。これでAES復号化ラウンド命令処理が完了する。
【0070】
図7は,図3の実行部210によるAES復号化最終ラウンド命令のフローを示すフローグラフである。
ブロック700で,実行部210は,AES復号化最終ラウンド命令を待つ。もしもAES復号化最終ラウンド命令がフェッチ復号化部206で既に復号化されている場合,処理はブロック702に進む。復号化されていない場合は,ブロック700に留まり,AES復号化ラウンド命令を待つ。
ブロック702で,FIPS PUB197で定義されている逆s-ボックスルックアップを行うことで,最終ラウンドの128ビットブロック状態に置換演算を行う。処理はブロック704へ進む。
ブロック704で,FIPS PUB197で定義されているような方法で最終ラウンドに逆行シフト演算を行う。処理はブロック706へ進む。
ブロック706で,拡張鍵からのラウンド鍵,およびそのAESラウンドの行シフト318または列混合320の結果の排他的論理和演算を行う。処理はブロック708へ進む。
ブロック708で,復号化最終ラウンド演算の結果を,レジスタファイル304のソース/宛先レジスタ306に格納する。これでAES復号化最終ラウンド命令の処理が完了する。」

と記載されていて,上記(b)?(h)に引用した記載中の下線を附した記載内容の内,特に,「ロード」に関して,上記(b)に引用した記載中の段落【0021】に,
「AES命令が利用するラウンド鍵214は,L1データキャッシュ204に格納されており,実行部210にロードされて,マイクロ演算がAES命令セットのAES命令を実行するのに利用されてよい」(以下,これを「引用記載3」という),
上記(e)に引用した記載中の段落【0040】に,
「レジスタファイル304のレジスタ308のいずれかにロードされる前に,鍵に基づいて各ラウンドのラウンド鍵が予め計算されて,レベル1データキャッシュ204に格納されていてよい」(以下,これを「記載記載4」という),
上記(f)に,
「ラウンド鍵は,レベル1データキャッシュ204からブロック状態314へ直接ロードされてもよいし,または,先ずレジスタファイル304のレジスタ(xmm)に格納されていて,その後,レジスタからブロック状態314へロードされてもよい」(以下,これを「引用記載5」という),
上記(g)に引用した記載中の段落【0061】に,
「暗号化ラウンド実行に利用されるラウンド鍵および128ビットブロック状態(ソース)をレジスタファイル304から実行部210へロードする」(以下,これを「引用記載6」という),
上記(h)に引用した段落【0069】に,
「復号化ラウンド実行に利用されるラウンド鍵およびソース(128ビットブロック状態)をレジスタファイル304から実行部210へロードする」(以下,これを「引用記載7」という),
とあるが,「レジスタ」への「ロード」に関連するものは,引用記載4のみであり,他の引用記載3,引用記載5?引用記載7における「ロード」は,「レジスタ」,或いは,「レジスタファイル」から「実行部」への「ロード」である。
そして,引用記載3?引用記載7における「ロード」は,引用記載2にあるように,「AESラウンドの実行回数が1回目より多い場合」を契機として,「実行部に,鍵をレジスタにロードさせ」るものではない。
上記(b)?(h)に引用した記載中の上記で「ロード」について検討した,下線を附された記載箇所は,何れも,「レジスタ」に関連するものではあるが,これら,「レジスタ」に関連した記載からは,引用記載2の,「AESラウンドの実行回数が1回目より多い場合」を契機として,「実行部に,鍵をレジスタにロードさせ」ることは読み取れない。
そして,上記(b)?(h)の記載以外の本願明細書の発明の詳細な説明の記載内容,及び,図面の内容からも,引用記載2に示された構成を読み取ることはできず,当該技術分野における技術常識を勘案しても,本願明細書の発明の詳細な説明,及び,図面に示された事項から,当業者にとって自明の事項とは認められない。
以上に検討したとおりであるから,平成24年5月10日付けの手続補正により補正された,本願の請求項1に係る発明は,依然として,本願明細書の発明の詳細な説明に記載されたものではない。

2.請求項10について
平成24年5月10日付けの手続補正によって,平成21年9月3日付けの手続補正により補正された請求項10に記載された,
「AES命令のプログラム可能なAESラウンドの数が1より大きい場合,鍵を一時的鍵レジスタにロードして」(以下,これを「引用記載8」という),
は,
「前記AESラウンドの実行回数が1回目より多い場合に,鍵をレジスタにロードする段階」(以下,これを「引用記載9」という),
と補正されたが,引用記載9の内容は,引用記載2の内容と,ほぼ,同等であるから,上記「1.請求項1について」において検討したとおり,
平成24年5月10日付けの手続補正により補正された請求項10に係る発明は,依然として,本願明細書の発明の詳細な説明に記載されたものではない。

3.請求項19について
平成21年9月3日付けの手続補正により補正された請求項19に記載された,
「AES命令のプログラム可能なAESラウンドの数が1より大きい場合,鍵を一時的鍵レジスタにロードし」(以下,これを「引用記載10」という),
は,平成24年5月10日付けの手続補正によって,その請求項20の,
「前記AESラウンドの実行回数が1回目より多い場合に,鍵をレジスタにロードし」(以下,これを「引用記載11」という),
と補正されたが,引用記載11の内容は,引用記載2の内容と,ほぼ,同等であるから,上記「1.請求項1について」において検討したとおり,
平成24年5月10日付けの手続補正により補正された請求項20(原審拒絶理由時の請求項19)に係る発明は,依然として,本願明細書の発明の詳細な説明に記載されたものではない。

以上1.?3.に検討したとおりであるから,原審拒絶理由において,理由Aとして指摘した事項は,平成24年5月10日付けの手続補正後の請求項1,請求項10,及び,請求項20(原審拒絶理由時の請求項19)において,依然として解消しておらず,平成24年5月10日付けの手続補正により補正された,本願の請求項1,請求項10,及び,請求項20に係る発明は,本願明細書の発明の詳細な説明に記載されたものではない。

第6.むすび
したがって,本願は,特許法第36条第6項第1号に規定する要件を満たしていない。

よって,結論のとおり審決する。
 
審理終結日 2014-08-18 
結審通知日 2014-08-19 
審決日 2014-09-02 
出願番号 特願2009-552935(P2009-552935)
審決分類 P 1 8・ 561- Z (G09C)
P 1 8・ 537- Z (G09C)
最終処分 不成立  
前審関与審査官 中里 裕正  
特許庁審判長 仲間 晃
特許庁審判官 田中 秀人
石井 茂和
発明の名称 新暗号規格(AES)向けの柔軟なアーキテクチャおよび命令  
代理人 龍華国際特許業務法人  

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