• ポートフォリオ機能


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

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

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

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

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

[理由]

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

2.補正の適否

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

補正後の請求項1,請求項10,及び,請求項20は,補正前の請求項1,請求項10,及び,請求項20に,それぞれ,記載された,
「前記複数のAESラウンドに対して同じ鍵を利用する場合に」を,
「多くのブロックに対して同じ鍵を利用する場合に」と補正し,
同じく,補正前の請求項1,請求項10,及び,請求項20に,それぞれ,記載された,
「異なる鍵を利用して異なるAESラウンドにおいて暗号化および復号化のうちの少なくとも1つを実行する場合に」を,
「異なる鍵を利用して各ブロックの暗号化および復号化のうちの少なくとも1つを実行する場合に」と補正したものである。
したがって,補正後の請求項1,請求項10,及び,請求項20は,
“多くのブロックに対して同じ鍵を利用するか(場合1),異なる鍵を利用して各ブロックの暗号化および復号化のうちの少なくとも1つを実行するか(場合2),の何れかであるかを判別して,該判別結果に応じて,場合1であれば,入力鍵に基づいて複数のAESラウンドのためのラウンド鍵スケジュールを予め計算することによって複数のAESラウンドのそれぞれのための複数のラウンド鍵を生成し,場合2であれば,少なくとも1つのAESラウンドにおいて暗号化および復号化のうちの少なくとも1つを実行する前に,前記AESラウンドのうちの少なくとも1つのためにオンザフライでラウンド鍵を計算することによって,複数のAESラウンドのそれぞれのための複数のラウンド鍵を生成する”態様を含むことは明らかである。
そこで,上記指摘の,補正後の請求項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,請求項10,及び,請求項20に係る発明が内包する,
“多くのブロックに対して同じ鍵を利用するか(場合1),異なる鍵を利用して各ブロックの暗号化および復号化のうちの少なくとも1つを実行するか(場合2),の何れかであるかを判別して,該判別結果に応じて,場合1であれば,入力鍵に基づいて複数のAESラウンドのためのラウンド鍵スケジュールを予め計算することによって複数のAESラウンドのそれぞれのための複数のラウンド鍵を生成し,場合2であれば,少なくとも1つのAESラウンドにおいて暗号化および復号化のうちの少なくとも1つを実行する前に,前記AESラウンドのうちの少なくとも1つのためにオンザフライでラウンド鍵を計算することによって,複数のAESラウンドのそれぞれのための複数のラウンド鍵を生成する”
という態様は記載されておらず,また,当初明細書等の記載内容から,当業者にとって自明の事項とも認められない。
よって,本件手続補正は,当初明細書等の記載の範囲内でなされたものではない。

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

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

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

第4.原審の拒絶理由
原審における平成25年3月4日付けの拒絶理由(以下,これを「原審拒絶理由」という)は,概略,次のとおりである。

「 理 由

A.平成24年10月11日付けでした手続補正は,下記の点で外国語書面の翻訳文(又は誤訳訂正書による補正後の明細書,特許請求の範囲若しくは図面)に記載した事項の範囲内においてしたものでないから,特許法第17条の2第3項に規定する要件を満たしていない。


(a)同日付け手続補正書により補正された請求項1には
「前記AES命令セットが実行された場合,前記実行部は,
入力鍵をレジスタにロードし,
複数のAESラウンドに対して同じ鍵を利用する場合に,前記入力鍵に基づいて複数のAESラウンドのためのラウンド鍵スケジュールを予め計算すること,および,異なる鍵を利用して異なるAESラウンドにおいて暗号化および復号化のうちの少なくとも1つを実行する場合に,少なくとも1つのAESラウンドにおいて暗号化および復号化のうちの少なくとも1つを実行する前に,前記AESラウンドのうちの少なくとも1つのためにオンザフライでラウンド鍵を計算すること,のうちの1つを選択することによって,複数のAESラウンドのそれぞれのための複数のラウンド鍵を生成し」
と記載されている。

・・・・(中略)・・・・

また,入力鍵に関し「複数のAESラウンドに対して同じ鍵を利用する場合」及び「異なる鍵を利用して異なるAESラウンドにおいて暗号化および復号化のうちの少なくとも1つを実行する場合」なる「場合」は,翻訳文等に記載も示唆も無い「場合」である。そして,それらの如き「場合」に応じて,ラウンド鍵スケジュールを予め計算するあるいはオンザフライでラウンド鍵を計算するということも,翻訳文等に記載も示唆もないことである。

さらに,前記の記載からして,請求項1に記載の発明は,AES命令セットが実行された場合,実行部が「複数のAESラウンドに対して同じ鍵を利用する場合」及び「異なる鍵を利用して異なるAESラウンドにおいて暗号化および復号化のうちの少なくとも1つを実行する場合」という二つの異なる場合を判別し,その判別に応じて,「前記入力鍵に基づいて複数のAESラウンドのためのラウンド鍵スケジュールを予め計算する」及び「少なくとも1つのAESラウンドにおいて暗号化および復号化のうちの少なくとも1つを実行する前に,前記AESラウンドのうちの少なくとも1つのためにオンザフライでラウンド鍵を計算する」という,異なる態様のラウンド鍵生成を「のうちの1つを選択することによって」行う,すなわち,異なる二つの態様のラウンド鍵生成を選択し,選択した態様のラウンド鍵生成を行う,ということを含むものである。
一方,当初明細書等の36-40段落には,入力鍵に基づいて複数の前記AESラウンドのためのラウンド鍵スケジュールを予め計算することが記載され,55,56段落には,AESラウンドのうちの少なくとも1つのためにオンザフライでラウンド鍵を計算することが記載されている。
しかしながら,これらの記載は,前記した如き,AES命令セットが実行された場合,実行部が,二つの異なる場合を判別し,その判別に応じて,異なる二つの態様のラウンド鍵生成のうちの一つを選択し,選択した態様のラウンド鍵生成を行う,ということを記載するものではなく,示唆するものでもない。

したがって,請求項1に対する補正は,当初明細書等の記載の範囲内においてしたものではない。

(b)補正後の請求項10には
「前記複数のAESラウンドに対して同じ鍵を利用する場合に,前記入力鍵に基づいて複数のAESラウンドのためのラウンド鍵スケジュールを予め計算すること,および,異なる鍵を利用して異なるAESラウンドにおいて暗号化および復号化のうちの少なくとも1つを実行する場合に,少なくとも1つのAESラウンドにおいて暗号化および復号化のうちの少なくとも1つを実行する前に,前記AESラウンドのうちの少なくとも1つのためにオンザフライでラウンド鍵を計算することのうちの1つを選択することによって,複数のAESラウンドのそれぞれのための複数のラウンド鍵を生成する段階と,
・・・中略・・・を備える方法。」
が記載されている。

この請求項10について,(a)にて述べたと同様のことがいえる。
すなわち,入力鍵に関し「複数のAESラウンドに対して同じ鍵を利用する場合」及び「異なる鍵を利用して異なるAESラウンドにおいて暗号化および復号化のうちの少なくとも1つを実行する場合」なる「場合」は,翻訳文等に記載も示唆も無い「場合」である。そして,それらの如き「場合」に応じて,ラウンド鍵スケジュールを予め計算するあるいはオンザフライでラウンド鍵を計算するということもまた,翻訳文等に記載も示唆もないことである。
また,「複数のAESラウンドに対して同じ鍵を利用する場合」及び「異なる鍵を利用して異なるAESラウンドにおいて暗号化および復号化のうちの少なくとも1つを実行する場合」という二つの異なる場合を判別し,その判別に応じて,「前記入力鍵に基づいて複数のAESラウンドのためのラウンド鍵スケジュールを予め計算する」及び「少なくとも1つのAESラウンドにおいて暗号化および復号化のうちの少なくとも1つを実行する前に,前記AESラウンドのうちの少なくとも1つのためにオンザフライでラウンド鍵を計算する」という,異なる二つの態様のラウンド鍵生成をのうちの一つを選択し,選択した態様のラウンド鍵生成を行う,ということも,記載も示唆もされていないことである。

したがって,請求項10に対する補正は,当初明細書等の記載の範囲内においてしたものではない。

(c)補正後の請求項20には
「前記複数のAESラウンドに対して同じ鍵を利用する場合に,前記入力鍵に基づいて複数のAESラウンドのためのラウンド鍵スケジュールを予め計算すること,および,異なる鍵を利用して異なるAESラウンドにおいて暗号化および復号化のうちの少なくとも1つを実行する場合に,少なくとも1つのAESラウンドにおいて暗号化および復号化のうちの少なくとも1つを実行する前に,前記AESラウンドのうちの少なくとも1つのためにオンザフライでラウンド鍵を計算することのうちの1つを選択することによって,複数のAESラウンドのそれぞれのための複数のラウンド鍵を生成させ,
・・・中略・・・プログラム。」
が記載されている。

この請求項20について,(a)(b)にて述べたと同様のことがいえる。
すなわち,入力鍵に関し「複数のAESラウンドに対して同じ鍵を利用する場合」及び「異なる鍵を利用して異なるAESラウンドにおいて暗号化および復号化のうちの少なくとも1つを実行する場合」なる「場合」は,翻訳文等に記載も示唆も無い「場合」である。そして,それらの如き「場合」に応じて,ラウンド鍵スケジュールを予め計算するあるいはオンザフライでラウンド鍵を計算するということもまた,翻訳文等に記載も示唆もないことである。
また,「複数のAESラウンドに対して同じ鍵を利用する場合」及び「異なる鍵を利用して異なるAESラウンドにおいて暗号化および復号化のうちの少なくとも1つを実行する場合」という二つの異なる場合を判別し,その判別に応じて,「前記入力鍵に基づいて複数のAESラウンドのためのラウンド鍵スケジュールを予め計算する」及び「少なくとも1つのAESラウンドにおいて暗号化および復号化のうちの少なくとも1つを実行する前に,前記AESラウンドのうちの少なくとも1つのためにオンザフライでラウンド鍵を計算する」という,プログラムが,異なる二つの態様のラウンド鍵生成をのうちの一つを選択させ,選択した態様のラウンド鍵生成を行わせる,ということも,記載も示唆もされていないことである。

したがって,請求項20に対する補正は,当初明細書等の記載の範囲内においてしたものではない。

以上で検討したことから,請求項1-21に対する補正は,当初明細書等の記載の範囲内においてしたものではない。

B.この出願は,願書に添付した明細書,特許請求の範囲又は図面に記載した事項が,下記の点で外国語書面に記載した事項の範囲内にないから,特許法第49条第6号に該当する。


理由A.にて述べたと同様のことから,請求項1-21に記載した事項は,外国語書面に記載した事項の範囲内にないものである。

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


(a)理由A.にて述べたと同様のことから,請求項1-21に係る発明は,発明の詳細な説明に記載したものでない。

(b)補正後の請求項1には「前記AES命令セットは,少なくとも1つのシングルラウンドのAESラウンド命令・・・を含み」及び「各AESラウンドにおいて,前記AESラウンドの入力および前記AESラウンドの前記ラウンド鍵に対して一連のAESラウンド演算を行わせて,次のAESラウンドの次の入力または前記AES命令の結果を提供する」と記載され,補正後の請求項3には「前記一連のAESラウンド演算により,前記実行部は,前記AESラウンドの入力および前記AESラウンドの前記ラウンド鍵に対して排他的論理和(XOR)演算を行って,中間値を生成し,前記一連のAESラウンド演算により,前記実行部は,ルックアップテーブルに格納されている値に基づいて,前記中間値の各バイトに対して置換演算を行い,前記置換演算の結果に,前記中間値の行をシフトさせるビット線形変換を行う」と記載されている。
これら請求項の記載からして,補正後の請求項3において「シングルラウンドのAESラウンド命令」は,実行部に,AESラウンドの入力およびAESラウンドの前記ラウンド鍵に対して排他的論理和(XOR)演算を行って,中間値を生成し,ルックアップテーブルに格納されている値に基づいて,前記中間値の各バイトに対して置換演算を行い,前記置換演算の結果に,前記中間値の行をシフトさせるビット線形変換を行う,という処理を行わせるものである。
しかしながら,AES暗号の技術常識並びに明細書59-66段落及び図4の記載からすると,本願明細書に「AESENCRYPTRound」として開示された「シングルラウンドのAESラウンド命令」は,実行部に,前記の如き動作を行わせるものではない。すなわち,「AESラウンド」は,SubBytes, ShiftRows, MixColumns, AddRoundKey の順序で各処理を行うものであるから,「シングルラウンドのAESラウンド命令」もまた,明細書59-66段落及び図4に記載されているように,実行部に,SubBytes, ShiftRows, MixColumns, AddRoundKey の順序で各処理を行わせるものであり,請求項3に記載の如く,AddRoundKey, SubBytes, ShiftRows, MixColumns の順序で各処理を行うものではない。
してみれば,補正後の請求項3に係る発明は,発明の詳細な説明に記載したものではない。請求項5,14についても同様のことがいえる。

(c)(省略)

なお,当該補正がなされた請求項1-21に記載した事項は,外国語書面の翻訳文(又は誤訳訂正書による補正後の明細書,特許請求の範囲若しくは図面)に記載した事項の範囲内にないことが明らかであるから,当該請求項に係る発明については,先行技術の調査並びに新規性,進歩性等の特許要件についての審査を行っていない。
また,本願は,米国特許出願第11/729199号(米国特許出願公開第2008/0240426号明細書)に基づく優先権を主張する出願であるが,本願の出願当初の特許請求の範囲の記載は,優先権主張の基礎たる米国特許出願第11/729199号の特許請求の範囲の記載とは異なっている一方で,前記の出願と同一出願人の別の米国出願である,米国特許出願第11/648434号(米国特許出願公開第2008/0159526号明細書)の特許請求の範囲の記載と同一であること,理由C(b)(c)は,前記のことから,本願の出願当初の請求項が,米国特許出願第11/648434号の明細書及び図面の記載(例えば図4A)に基づくものであった可能性があること,を付言しておく。」

第5.原審の拒絶理由についての当審の判断
1.理由Bについて
平成25年6月5日付けの手続補正により補正された請求項1,請求項10,及び,請求項20は,上記「第2.平成25年10月25日付けの手続補正の却下の決定」の「1.補正の内容」において,補正前の請求項1,請求項10,及び,請求項20として引用した,次の記載のとおりのものである。

「【請求項1】
新暗号規格命令セット(AES命令セット)を実行する実行部を備える装置であって,
前記AES命令セットは,少なくとも1つのシングルラウンドのAESラウンド命令および少なくとも1つのシングルラウンドのAES鍵生成命令を含み,
前記装置は,
複数のAESラウンドに対して同じ鍵を利用する場合に,入力鍵に基づいて複数のAESラウンドのためのラウンド鍵スケジュールを予め計算することによって複数のAESラウンドのそれぞれのための複数のラウンド鍵を生成し,異なる鍵を利用して異なるAESラウンドにおいて暗号化および復号化のうちの少なくとも1つを実行する場合に,少なくとも1つのAESラウンドにおいて暗号化および復号化のうちの少なくとも1つを実行する前に,前記入力鍵に基づいて前記AESラウンドのうちの少なくとも1つのためにオンザフライでラウンド鍵を計算することによって,複数のAESラウンドのそれぞれのための複数のラウンド鍵を生成する鍵スケジューラを更に備え,
前記実行部は,前記複数のAESラウンドのそれぞれにおいて,前記AESラウンドの入力および前記AESラウンドの前記ラウンド鍵に対して一連のAESラウンド演算を行わせて,次のAESラウンドの次の入力または前記AES命令の結果を提供する,装置。」

「【請求項10】
少なくとも1つのシングルラウンドの新暗号規格ラウンド命令(AESラウンド命令)および少なくとも1つのシングルラウンドのAES鍵生成命令を含むAES命令セットを用いて,複数のAESラウンドを実行する段階
を備え,
前記複数のAESラウンドに対して同じ鍵を利用する場合に,入力鍵に基づいて複数のAESラウンドのためのラウンド鍵スケジュールを予め計算することにより複数のAESラウンドのそれぞれのための複数のラウンド鍵を生成する段階と,
異なる鍵を利用して異なるAESラウンドにおいて暗号化および復号化のうちの少なくとも1つを実行する場合に,少なくとも1つのAESラウンドにおいて暗号化および復号化のうちの少なくとも1つを実行する前に,前記AESラウンドのうちの少なくとも1つのためにオンザフライでラウンド鍵を計算すること,のうちの1つを選択することによって,複数のAESラウンドのそれぞれのための複数のラウンド鍵を生成する段階と,
前記AESラウンドの入力および前記AESラウンドの前記ラウンド鍵に対して一連のAESラウンド演算を行い,次のAESラウンドの次の入力または前記AES命令の結果を提供する段階と,を備える方法。」

「【請求項20】
コンピュータに,新暗号規格命令セット(AES命令セット)を用いて,複数のAESラウンドを実行させるためのプログラムであって,前記コンピュータに,
前記複数のAESラウンドに対して同じ鍵を利用する場合に,入力鍵に基づいて複数のAESラウンドのためのラウンド鍵スケジュールを予め計算することによって複数のAESラウンドのそれぞれのための複数のラウンド鍵を生成させ,
異なる鍵を利用して異なるAESラウンドにおいて暗号化および復号化のうちの少なくとも1つを実行する場合に,少なくとも1つのAESラウンドにおいて暗号化および復号化のうちの少なくとも1つを実行する前に,前記AESラウンドのうちの少なくとも1つのためにオンザフライでラウンド鍵を計算することによって,複数のAESラウンドのそれぞれのための複数のラウンド鍵を生成させ,
各AESラウンドにおいて,前記AESラウンドの入力および前記AESラウンドの前記ラウンド鍵に対して一連のAESラウンド演算を行わせて,次のAESラウンドの次の入力または前記AES命令の結果を提供させる,プログラム。」

上記に再度引用した,平成25年6月5日付けの手続補正によって補正された,請求項1に係る発明が,上記に引用した記載内容から,
“鍵スケジューラが,複数のAESラウンドに対して同じ鍵を利用する場合(場合1)と,異なる鍵を利用して異なるAESラウンドにおいて暗号化および復号化のうちの少なくとも1つを実行する場合(場合2)とを識別し,場合1であれば,入力鍵に基づいて複数のAESラウンドのためのラウンド鍵スケジュールを予め計算することによって複数のAESラウンドのそれぞれのための複数のラウンド鍵を生成し,場合2であれば,少なくとも1つのAESラウンドにおいて暗号化および復号化のうちの少なくとも1つを実行する前に,前記入力鍵に基づいて前記AESラウンドのうちの少なくとも1つのためにオンザフライでラウンド鍵を計算することによって,複数のAESラウンドのそれぞれのための複数のラウンド鍵を生成する”という態様を含むこと,
平成25年6月5日付けの手続補正によって補正された,請求項10に係る発明が,
“AES命令セットを用いて,複数のAESラウンドを実行する段階が,
複数のAESラウンドに対して同じ鍵を利用する場合に,入力鍵に基づいて複数のAESラウンドのためのラウンド鍵スケジュールを予め計算することにより複数のAESラウンドのそれぞれのための複数のラウンド鍵を生成する段階と,
異なる鍵を利用して異なるAESラウンドにおいて暗号化および復号化のうちの少なくとも1つを実行する場合に,少なくとも1つのAESラウンドにおいて暗号化および復号化のうちの少なくとも1つを実行する前に,前記AESラウンドのうちの少なくとも1つのためにオンザフライでラウンド鍵を計算すること,のうちの1つを選択することによって,複数のAESラウンドのそれぞれのための複数のラウンド鍵を生成する段階の2つの段階を含む”という態様,更には,その2つの「段階」を,
“複数のAESラウンドに対して同じ鍵を利用する場合と,異なる鍵を利用して異なるAESラウンドにおいて暗号化および復号化のうちの少なくとも1つを実行する場合とを識別して適用する”という態様を含むこと,
及び,平成25年6月5日付けの手続補正によって補正された,請求項20に係る発明が,
“コンピュータに,新暗号規格命令セット(AES命令セット)を用いて,複数のAESラウンドを実行させるためのプログラムが,複数のAESラウンドに対して同じ鍵を利用する場合(場合1)と,異なる鍵を利用して異なるAESラウンドにおいて暗号化および復号化のうちの少なくとも1つを実行する場合(場合2)とを識別し,或いは,コンピュータに識別させ,場合1であれば,コンピュータに,入力鍵に基づいて複数のAESラウンドのためのラウンド鍵スケジュールを予め計算することによって複数のAESラウンドのそれぞれのための複数のラウンド鍵を生成させ,場合2であれば,コンピュータに,少なくとも1つのAESラウンドにおいて暗号化および復号化のうちの少なくとも1つを実行する前に,前記AESラウンドのうちの少なくとも1つのためにオンザフライでラウンド鍵を計算することによって,複数のAESラウンドのそれぞれのための複数のラウンド鍵を生成させる”という態様を含むことは明らかである。

一方,本願の原出願であるPCT/US2008/058128号の明細書(以下,これを「外国語明細書」という)には,

D.「When the same key is used for many blocks, the round key for each round (key schedule) may be pre-computed and stored in memory (for example, level 1 data cache 204) so that the same key schedule does not have to be recomputed prior to an encryption/decryption operation on each block.

RK[O] = Input Key
For i = 1..10

RK [i] = AESNextRoundKey (RK[i-l])

End

STATE = Input Block

STATE = STATE xor RK[O]

For i = 1..9

STATE = AESENCRYPTRound (STATE, RK[i])

End

STATE = AESENCRYPTLastRound (STATE, RK[IO])

Table 2

An array (RK) having 10 elements is used to store the key schedule for the key. The input key for AES- 128 encryption is stored in RK[O] and the 9 round keys RK[O] - RK[I] are pre-computed through a call to the AESNextRoundKey instruction from the aes instruction set. The AESNextRoundKey instruction computes the next round based on the current round key. The pre-computed round keys for the key schedule may be stored in round key 214 in level 1 data cache 204.
In this example, as the portion of the key schedule (expanded key), that is the round key for the round is input directly from the register file 304, an exclusive OR (XOR)operation is performed on the state and key prior to entering the loop for performing the aes rounds. For each round 1 through 9, the AESENCRYPTRound instruction from the aes instruction set is called to perform the aes round operation for one round. For the last round (round 10) the AESNECYRPTLastRound instruction from the aes instruction set is called to perform the aes round operation for the last round.
Information to be encrypted or decrypted by the aes instruction is loaded into a source/destination register 306 in the register file 304 prior to issuing the first aes instruction to start an encrypt or decrypt operation. The key to be used to encrypt/decrypt the information in the source register 306 is stored in one or more other registers 308 in the register file 308. In the case of a 128-bit key, the entire 128-bits of the key are stored in any one of the other 128-bit registers in the register file 304. For key sizes greater than 128 bits, the most significant bits (greater than 128 bits) are stored in another one of the 128-bit registers.
In the example shown in Table 2, the round key for each round is pre-computed based on the key and may be stored in level 1 data cache 204 prior to being loaded into any one of the registers 308 in the register file 304. The key for each round may also be stored in one or more registers in the register file 304 or may be stored in round key 214 in level 1 data cache 204.」(8頁26行?10頁13行)

という記載が存在し,上記Dは,当初明細書等の段落【0036】?段落【0040】に記載された内容に一致するので,その内容は,概略,
「多くのブロックについて同じ鍵を利用する場合,各ラウンドのラウンド鍵(鍵スケジュール)は,予め計算されてメモリ(例えばレベル1データキャッシュ204)に格納されている」点が記載され,該“ラウンド鍵が,メモリに予め格納されている”ことを実現するために,“入力鍵を,格納して,ラウンド鍵を,AES命令セットからAESNextRoundKey命令を読み出すことで予め計算する”
というものである。上記Dの他,外国語明細書には,

E.「When a different key is used to encrypt/decrypt each block, for example, in the case of a network interface controller (NIC) that is encypting/decrypting data packets, the round key may computed on-the-fly prior to performing encryption/decryption for each round as shown in the pseudo code below in Table 3 for AES- 128 encryption:

RK[O] = Input Key
STATE = Input Block
STATE = STATE xor RK[O]

For i = 1..9
RK [i] = AESNextRoundKey (RK[i-l])
STATE = AESENCRYPTRound (STATE, RK[i])
End
RK [10] = AESNextRoundKey (RK[9])
STATE = AESENCRYPTLastRound (STATE, RK[IO])

Table 3

In this example, the round key for the round is generated prior to performing encryption using the round key for each of the 10 rounds in the key schedule (expanded key), that is, rounds 1-9 and round 10 (the last round).」(12頁26行?13頁6行)

という記載が存在し,上記Eは,当初明細書等の段落【0055】,及び,段落【0056】に記載された内容と一致するので,その内容は,概略,
“異なる鍵を利用して各ブロックを暗号化/復号化する場合,ラウンド鍵は,各ラウンドについて暗号化/復号化を行う前に,その都度計算されてよい”
というものである。
即ち,外国語明細書には,
“多くのブロックについて同じ鍵を利用する場合,各ラウンドのラウンド鍵(鍵スケジュール)は,入力鍵を,格納して,ラウンド鍵を,AES命令セットからAESNextRoundKey命令を読み出すことで予め計算されてメモリに格納されている”態様と,
“異なる鍵を利用して各ブロックを暗号化/復号化する場合,ラウンド鍵は,各ラウンドについて暗号化/復号化を行う前に,その都度計算されてよい”という態様とが,記載されていることまでは読み取ることができるが,上記引用の記載からは,単に,“同じ鍵を利用する場合”と,“異なる鍵を利用する場合”とが,それぞれ,個別に存在していることを示すに止まり,これら2つの態様の関連性,即ち,当初明細書等に記載された,一連の処理において,該2つの態様が,関連して処理されるのか,或いは,相互に関連しない,別の態様として処理されるのかについては,上記D,及び,Eの記載内容から読み取ることはできない。
外国語明細書の他の記載をみても,上記D,及び,上記Eにおける処理を,“多くのブロックについて同じ鍵を利用する場合”と,“異なる鍵を利用して各ブロックを暗号化/復号化する場合”とで識別して行うことは記載されておらず,また,外国語明細書に記載された内容から,当業者にとって自明の事項でもない。
以上検討したとおりであるから,平成25年6月5日付けの手続補正により補正された請求項1,請求項10,及び,請求項20に係る発明は,依然として,外国語明細書に記載されたものではない。
そして,平成25年6月5日付けの手続補正により補正された請求項2?請求項9は,同請求項1を直接・間接に引用し,同請求項11?請求項19は,同請求項10を直接・間接に引用し,同請求項21は,同請求項20を引用するので,上記で指摘した外国語明細書に記載されていない構成を内包する。
よって,平成25年6月5日付けの手続補正により補正された請求項1?請求項21は,依然として,外国語明細書に記載されたものではない。

なお,原審による平成25年6月21日付けの拒絶査定においては,原審拒絶理由における理由A,即ち,特許法第17条の2第3項についての言及がないが,
上記で検討したとおり,外国語明細書の内容は,当初明細書等の記載と一致することから,平成25年6月5日付けの手続補正により補正された請求項1,請求項10,及び,請求項20に係る発明は,当初明細書等に記載されたものでないこと,即ち,平成25年6月5日付けの手続補正は,平成24年10月22日付けで提出された明細書,請求の範囲,及び,図面(図面の中の説明に限る)の日本語による翻訳文の記載の範囲内でなされたものでないことは明らかである。

2.理由Cについて
(1)(a)について
上記「1.理由Bについて」において検討した,平成25年6月5日付けの手続補正により補正された請求項1,請求項10,及び,請求項20に係る発明に含まれる態様に対して,本願明細書の発明の詳細な説明には,上記A,及び,Bとして引用した記載が存在し,
上記「第2.平成25年10月25日付けの手続補正の却下の決定」の「2.補正の適否」において指摘したとおり,上記Aに記載された内容から,本願明細書の発明の詳細な説明には,
「多くのブロックについて同じ鍵を利用する場合,各ラウンドのラウンド鍵(鍵スケジュール)は,予め計算されてメモリ(例えばレベル1データキャッシュ204)に格納されている」点が記載され,該“ラウンド鍵が,メモリに予め格納されている”ことを実現するために,“入力鍵を,格納して,ラウンド鍵を,AES命令セットからAESNextRoundKey命令を読み出すことで予め計算する”ことが記載されていることが読み取れ,
上記Bに記載された内容から,本願明細書の発明の詳細な説明には,
“異なる鍵を利用して各ブロックを暗号化/復号化する場合,ラウンド鍵は,各ラウンドについて暗号化/復号化を行う前に,その都度計算されてよい”ことが記載されていると読み取れる。
即ち,本願明細書の発明の詳細な説明には,
“多くのブロックについて同じ鍵を利用する場合,各ラウンドのラウンド鍵(鍵スケジュール)は,入力鍵を,格納して,ラウンド鍵を,AES命令セットからAESNextRoundKey命令を読み出すことで予め計算されてメモリに格納されている”態様と,
“異なる鍵を利用して各ブロックを暗号化/復号化する場合,ラウンド鍵は,各ラウンドについて暗号化/復号化を行う前に,その都度計算されてよい”という態様とが,記載されていることまでは読み取ることができるが,上記引用の記載からは,単に,“同じ鍵を利用する場合”と,“異なる鍵を利用する場合”とが,それぞれ,個別に存在していることを示すに止まり,これら2つの態様の関連性,即ち,本願明細書の発明の詳細な説明に記載された,一連の処理において,該2つの態様が,関連して処理されるのか,或いは,相互に関連しない,別の態様として処理されるのかについては,上記A,及び,Bの記載内容から読み取ることはできない。
そして,本願明細書の発明の詳細な説明に記載された「AES命令セット」について,本願明細書の発明の詳細な説明に,上記Cにおいて引用した記載が存在し,
上記「第2.平成25年10月25日付けの手続補正の却下の決定」の「2.補正の適否」において指摘したとおり,上記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命令セットが処理される過程において,鍵の利用条件に応じて処理が変更される”ことは,記載されておらず,また,本願明細書の発明の詳細な説明の記載内容から,当業者にとって自明の事項とは認められない。

以上検討したとおりであるから,平成25年6月5日付けの手続補正により補正された請求項1,請求項10,請求項20は,依然として,本願明細書の発明の詳細な説明に記載されたものではなく,請求項1を直接・間接に引用する請求項2?請求項9,請求項10を直接・間接に引用する請求項11?請求項19,及び,請求項20を引用する請求項21も,依然として,本願明細書の発明の詳細な説明に記載されたものではない。

(2)(b)について
平成25年6月5日付けの手続補正により補正された請求項5は,上記「第2.平成25年10月25日付けの手続補正の却下の決定」の「1.補正の内容」において,補正前の請求項5として引用した,次のとおりのものである。

「【請求項5】
前記複数のAESラウンドが最終AESラウンドを含む場合に,最終ラウンドに前記一連のAESラウンド演算を行うことで,前記実行部は,
前記ラウンドの入力および前記AESラウンドの前記ラウンド鍵に対して排他的論理和(XOR)演算を行って,中間値を生成し,
ルックアップテーブルに格納されている値に基づいて,前記中間値の各バイトに対して置換演算を行い,
前記置換演算の結果に,前記中間値の行をシフトさせるビット線形変換を行う,請求項4に記載の装置。」

上記引用の平成25年6月5日付けの手続補正により補正された請求項5の記載中の,
「前記ラウンドの入力および前記AESラウンドの前記ラウンド鍵に対して排他的論理和(XOR)演算を行って,中間値を生成し」,
は,“AESラウンドの処理過程において,ラウンドの入力とラウンド鍵に対して排他的論理和(XOR)を行って中間値を生成する”ことを表現するものである。
この点に関して,本願明細書の発明の詳細な説明,及び,図面には,

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

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

G.「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行)

とあるように,“入力と,ラウンド鍵との排他的論理和は,ラウンドの前に行われること”は,当該技術分野の技術常識である。
そして,上記指摘の技術常識を踏まえれば,上記Fに引用した「中間値(状態)を生成する」ことが,段落【0059】?段落【0066】に示された「AES暗号化ラウンド命令のフロー」の中で行われるものでないことは明らかである。
よって,本願明細書の発明の詳細な説明には,当該技術分野における技術常識を踏まえても,“AESラウンドの処理過程において,ラウンドの入力とラウンド鍵に対して排他的論理和(XOR)を行って中間値を生成する”ことは記載されていない。
以上のとおりであるから,平成25年6月5日付けの手続補正により補正された請求項5に係る発明は,原審拒絶理由の理由Cの(b)で指摘した事項が,依然として解消しておらず,この点からも,本願明細書の発明の詳細な説明に記載されたものではない。

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

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

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