• ポートフォリオ機能


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

  • この表をプリントする
PDF PDFをダウンロード
審決分類 審判 査定不服 2項進歩性 取り消して特許、登録 G09C
審判 査定不服 特36条4項詳細な説明の記載不備 取り消して特許、登録 G09C
審判 査定不服 特36条6項1、2号及び3号 請求の範囲の記載不備 取り消して特許、登録 G09C
管理番号 1348074
審判番号 不服2017-12483  
総通号数 231 
発行国 日本国特許庁(JP) 
公報種別 特許審決公報 
発行日 2019-03-29 
種別 拒絶査定不服の審決 
審判請求日 2017-08-23 
確定日 2019-02-05 
事件の表示 特願2016-520973「情報処理装置,プログラム,及び記録媒体」拒絶査定不服審判事件〔平成27年11月26日国際公開,WO2015/178082,請求項の数(5)〕について,次のとおり審決する。 
結論 原査定を取り消す。 本願の発明は,特許すべきものとする。 
理由 第1.手続の経緯
本願は,2015年3月17日(優先権主張2014年5月21日 日本国)を国際出願日とする出願であって,
平成28年8月1日付けで手続補正がなされ,平成28年12月19日付けで審査請求がなされ,平成29年1月16日付けで審査官により拒絶理由が通知され,これに対して平成29年3月27日付けで意見書が提出されると共に手続補正がなされたが,平成29年6月15日付けで審査官により拒絶査定がなされ,これに対して平成29年8月23日付けで審判請求がなされると共に手続補正がなされ,平成29年10月26日付けで審査官により特許法第164条第3項の規定に基づく報告がなされ,平成30年4月19日付けで当審により拒絶理由が通知され,これに対して平成30年6月11日付けで意見書が提出されると共に手続補正がなされ,平成30年11月30日付けで当審により拒絶理由が通知され,これに対して平成30年12月7日付けで手続補正がなされたものである。

第2.本願発明について
本願の請求項1?本願の請求項5に係る発明(以下,これを「本願発明1?本願発明5」という)は,平成30年12月7日付けの手続補正により補正された特許請求の範囲の請求項1?請求項5に記載された次のとおりのものである。

「 【請求項1】
演算装置と,AES方式で前記演算装置に,暗号化されたデータ又は平文のデータである第1データを暗号化又は復号化させるための処理を実行させるプログラムを記憶する記憶装置とを有する組み込みシステムが有する前記演算装置に,各処理を実行させるためのプログラムであって,
1バイト単位の変数の配列を用いて,拡張鍵データを生成するのに入力される第2データを1バイトごとに処理して前記拡張鍵データを生成する処理を行う生成処理手順と,
前記第1データを並替テーブルを用いて並び替える処理である並替処理を行わせる並替処理手順と,
前記並替処理されたデータを1次元配列の置換テーブルを用いて置換する処理である置換処理を行わせる置換処理手順と,
前記置換処理されたデータを等価式に基づいて変換する処理である変換処理を行わせる変換処理手順と,
前記拡張鍵データ及び前記変換処理されたデータに基づいての排他的論理和を計算する処理である拡張処理を行わせる拡張処理手順と
を含み,
前記並替処理,前記置換処理,前記変換処理,及び前記拡張処理を4バイトごとに実行させるためのプログラム。
【請求項2】
前記変換処理を,
変換テーブルによって行う請求項1に記載のプログラム。
【請求項3】
前記変換処理は,前記変換テーブルによる1回のマッピング処理である請求項2に記載のプログラム。
【請求項4】
前記並替テーブルは,1次元配列のデータである請求項1乃至3のいずれか一項に記載のプログラム。
【請求項5】
前記変換処理に係る重複する計算を共通化させる請求項1乃至4のいずれか一項に記載のプログラム。」

第3.引用文献に記載の事項及び引用文献に記載の発明
1.引用文献1について
ア.記載事項
原審が平成29年1月16日付けの拒絶理由(以下,これを「原審拒絶理由」という)に引用した,「Chodowiec, P. and Gaj, K., Very Compact FPGA Implementation of the AES Algorithm, Lecture Notes in Computer Science, Vol.2779, 2003年, p.319-333」(以下,これを「引用文献1」という)には,関連する図面と共に,次の事項が記載されている。

A.「Abatract. In this paper a compact FPGA architecture for the AES algorithm with 128-bit key targeted for low-cost embedded application is presented.」(319頁1行?3行)
(アブストラクト. この論文において,低コストの組込アプリケーションを対象とする128ビット鍵のAESアルゴリズムのための,コンパクトなFPGAアーキテクチャが,提示される。<当審にて訳出。以下同じ。>)

B.「1. Read input bytes: 0, 5, A, F; execute SubBytes, MixColumns and AddRoundKey on them;write results to the output at locations: 0, 1, 2, 3. This step is highlighted in the Fig. 3.
・・・・中略・・・・
4. Repeat above operations for bytes: C, 1, 6, B; write results at locations: C,D, E, F. Output now becomes input for the next step.
・・・・中略・・・・
The correct execution of ShiftRows and InvShiftRows is now resolved to the proper addressing of each of the memories at the consecutive clock cycles.」(322頁8行?10行,同15行?16行,同21行?23行)
(1.入力バイト:0,5,A,Fの読み込み:それらへSubBytes,MixColumns,及び,AddRoundKeyを実行:結果を,ロケーション:0,1,2,3に書込。このステップは,図3に強調されている。
・・・・中略・・・・
4.複数バイト:C,1,6,Bのために上記処理を繰り返す;結果をロケーションC,D,E,Fに書込。出力は,直ちに,次のステップのための入力になる。
・・・・中略・・・・
ShiftRowsと,InvShiftRowsの正確な実行は,直ちに,連続したクロック・サイクルで,メモリのそれぞれの適切なアドレス指定が,決定される。)

C.「We decided to keep a good balance between utilization of LUTs and Block RAMs for the entire design, and implemented our S-boxes on dedicated Block RAMs.
・・・・中略・・・・
A single SubBytes or InvSubBytes implementation requires a 256x8 ROM. A Block RAM has enough space to implement both SubBytes and InvSubBytes, as shown in Fig. 5. Each port has access to the entire memory space, and can perform a SubBytes or InvSubBytes transformation independently of each other.」(324頁11行?13行,同17行?21行)
(我々は,全体のデザインのため,LUTの利用と,ブロックRAMの間の良好なバランスを維持すること決定し,専用のブロックRAM上の我々のS-boxに,実装した。
・・・・中略・・・・
単独のSubBytes,或いは,InvSubBytesの実装は,258×8のROMを要求する。ブロックRAMは,図5に示すように,SubBytesと,InvSubBytesの両方を実装するのに十分な空間を有する。それぞれのポートは,全部のメモリ空間へのアクセスを有し,それぞれ独立に,SubBytes,或いは,InvSubBytesの変換を,実行することができる。)

D.「The MixColumns multiplies the input polynomial by a constant polynomial
c(x) = {03}x^(3) + {01}x^(2) + {01}x + {02} (1)
modulo x^(4) +1. The coefficients in GF(2^(8)) are multiplied modulo x^(8)+x^(4)+x^(3)+x+1.
・・・・中略・・・・
The MixColumns and InvMixColumns can be implemented using shared logic resources as shown in Fig. 6.」(325頁11行?14行,326頁12行?13行)
(MiXColumnsは,入力多項式を,x^(4)+1を法とする常数多項式
c(x)={03}x^(3)+{01}x^(2)+{01}x+{02} (1)
と乗算する。GF(2^(8))における係数は,x^(8)+x^(4)+x^(3)+x+1を法として,乗算される。
・・・・中略・・・・
MiXColumnsと,InvMiXColumnsは,図6に示すように,共用の論理資源を用いることで,実装し得る。)

E.「



G.「we selected to implement the key schedule that precomputes all round keys. The implementation of the key schedule is shown in Fig. 8. It computes 32-bits of the key material per clock cycle, therefore, full key schedule execution takes 44 clock cycles. The computed round keys are stored in a single Block RAM.」(328頁2行?6行)
(我々は,全てのラウンド・キーを事前に計算する,キー・スケジューリングを実装することを,選択した。キー・スケジューリングの実装を,図8に示す。クロック・サイクル毎に,キー素材の32ビットを計算し,それ故,全てのキー・スケジュール実行は,44クロック・サイクルを要する。計算されたラウンド・キーは,単独のブロックRAMに格納される。)

イ.引用文献1に記載の発明
上記A?Gに引用した,引用文献1の記載内容から,引用文献1には,次の発明(以下,これを「引用発明」という)が記載されているものと認める。

「データをAES方式で暗号化する情報処理装置であって,
拡張鍵データを生成する処理を行う生成処理手段と,
前記データを並び替える処理である並替処理を行う並替処理手段と,
前記並替処理されたデータを1次元の配列の置換テーブルを用いて置換する処理である置換処理を行う置換処理手段と,
前記置換処理されたデータを変換する処理である変換処理を行う変換処理手段と,
前記拡張鍵データ及び前記変換処理されたデータの排他的論理和を計算する処理である拡張処理を行う拡張処理手段と,を有し,
前記並替処理,前記置換処理,前記変換処理,及び前記拡張処理を4バイトごとに処理する,情報処理装置。」

2.引用文献2について
原審拒絶理由に引用された,「Chang, C.-H. et al., 8-bit AES FPGA Implementation using Block RAM, Proc. of the 33rd Annual Conference of the IEEE Industrial Electronics Society, 2007年, p.2654-2659」(以下,これを「引用文献2」という)には,関連する図面と共に,次の事項が記載されている。

H.「This paper proposes an 8-bit AES implementation design that keeps MixColumn and sequential controls for AES operation in the processing area while moving the circuit necessary for other operations such as Sbox, ShiftRow and KeyExpansion to Block RAMs (BRAMs) of Xilinx FPGAchip.」(2654頁左欄5行?10行)
(この論文は,ザイリンクスFPGAチップのブロックメモリ(BRAMs)へ,Sbox,ShiftRow,及び,KeyExpansionのような,他の処理のために必要な回路を移動している間,処理エリアにおいて,MiXColumnと,AES処理のためのシーケンシャル制御を続ける,8-ビットAES実装案を提案する。)

I.「The above observation is summarized in Fig.7, two keys in KA are added and the new keys are stored in KB」(2658頁左欄15行?17行)
(上記見解は,図7において要約され,KAにおける2つのキーは,加えられ,そして,新しいキーは,KBに格納される。)

3.引用文献3について
原審拒絶理由に引用された,特開2013-045072号公報(平成25年3月4日公開,以下,これを「引用文献3」という)には,関連する図面と共に,次の事項が記載されている。

J.「【0012】
本実施形態では,最低限必要な5種類の命令(擬似命令)のみでAESを実現する。5種類の命令には,3種類の演算処理の命令(sbox,xtime,および,xor)と,2種類のメモリアクセスの命令(ld(ロード)およびst(ストア))とが含まれる。また,演算結果を記憶するためのレジスタとして8ビットのアキュムレータを設ける。また,これらの命令によりAES暗号をハードウェアで実行する順序機械である制御部を備える。命令や各構成部の詳細は後述する。」

K.「【0026】
次に,詳細なAES擬似コード(詳細版擬似コード)を記載する。詳細版擬似コードは,上記簡易版擬似コードの各関数(AK,KS,SB,SR,MCなど)を具体化したコードを含む。
【0027】
round=0
rc=0x01
//AddRoundKey:m=AK(m,k)
for(i=0; i<16; i++){
ld m[i]
xor k[i]
st m[i]

while(1){
//KeyExpansion:k=KS(k)
for(i=0; i<16; i++){
ld k[kp(i)]
if(i<4){
sbox
if(i==0) xor rc

xor k[i]
st k[i]

//SubBytes:m=SB(m)
for(i=0; i<16; i++){
ld m[i]
sbox
st m[i]

//ShiftRows:w=SR(m)
for(i=0; i<16; i++){
ld m[sr(i)]
st w[i]

//loop control
round=round+1
if(round==10) break;//exit while loop
//MixColumns:m=MC(w)
for(i=0; i<16; i++){
ld w[i]
xor w[ofs1(i)]
xtime
xor w[ofs1(i)]
xor w[ofs2(i)]
xor w[ofs3(i)]
st m[i]

//AddRoundKey:m=AK(m,k)
for(i=0; i<16; i++){
ld m[i]
xor k[i]
st m[i]

//rc update:rc=xtime(rc)
ld rc
xtime
st rc

//AddRoundKey:m=AK(w,k)
for(i=0; i<16; i++){
ld w[i]
xor k[i]
st m[i]

//end」

L.「【0055】
SR(ShiftRows)は16バイトの並び替えだが,上書きすると元の値が消えるので,別な領域である作業領域wにコピーしながら並び替えている(ステップS105)。この処理(ステップS105)をC言語で記載すると次のようなコードになる。
for(i=0; i<16; i++){
w[i]=m[sr[i];

【0056】
上記コード内の変数srは,
int sr[16]={0,5,10,15,4,9,14,3,8,13,2,7,12,1,6,11};
であるため,上記コードは,
w[0]=m[0]
w[1]=m[5]
w[2]=m[10]
w[3]=m[15]
w[4]=m[4]
w[5]=m[9]
w[6]=m[14]
w[7]=m[3]
w[8]=m[8]
w[9]=m[13]
w[10]=m[2]
w[11]=m[7]
w[12]=m[12]
w[13]=m[1]
w[14]=m[6]
w[15]=m[11]
という代入をしているのと同じことになる。
【0057】
1変数だけで逐次的に実行しようとすると,これから先に必要な値が上書きされて消されてしまうので,別な変数にコピーしながら順番を入れ替えている。
【0058】
MC(MixColumns)も,値が上書される問題が生じるので,別の変数にコピーしながら変換している(ステップS108)。
【0059】
AES暗号の規格(FIPS-197)では,
m[0]=xtime(w[0])^xtime(w[1])^w[1]^w[2]^w[3]
のように計算することが定められている。一方,xtime(a)^xtime(b)=xtime(a^b)であるため,次のようにxtimeをまとめて計算することもできる。
m[0]=xtime(w[0]^w[1])^w[1]^w[2]^w[3]
【0060】
MC全体では以下のような計算をすることになる。
m[0]=xtime(w[0]^w[1])^w[1]^w[2]^w[3]
m[1]=xtime(w[1]^w[2])^w[2]^w[3]^w[0]
m[2]=xtime(w[2]^w[3])^w[3]^w[0]^w[1]
m[3]=xtime(w[3]^w[0])^w[0]^w[1]^w[2]
m[4]=xtime(w[4]^w[5])^w[5]^w[6]^w[7]
m[5]=xtime(w[5]^w[6])^w[6]^w[7]^w[4]
m[6]=xtime(w[6]^w[7])^w[7]^w[4]^w[5]
m[7]=xtime(w[7]^w[4])^w[4]^w[5]^w[6]
m[8]=xtime(w[8]^w[9])^w[9]^w[10]^w[11]
m[9]=xtime(w[9]^w[10])^w[10]^w[11]^w[8]
m[10]=xtime(w[10]^w[11])^w[11]^w[8]^w[9]
m[11]=xtime(w[11]^w[8])^w[8]^w[9]^w[10]
m[12]=xtime(w[12]^w[13])^w[13]^w[14]^w[15]
m[13]=xtime(w[13]^w[14])^w[14]^w[15]^w[12]
m[14]=xtime(w[14]^w[15])^w[15]^w[12]^w[13]
m[15]=xtime(w[15]^w[12])^w[12]^w[13]^w[14]
【0061】
添え字の並びを考慮し,本実施形態では以下のようにxtimeを計算する。
m[i]=xtime(w[i]^w[ofs1(i)])^w[ofs1(i)]^w[ofs2(i)]^w[ofs3(i)]
【0062】
図14は,詳細版擬似コードを状態遷移表として書き直した図である。図15は,状態遷移表の各項目の読み方を表す図である。codeは,5種類の命令のうち各状態で実行される機能(命令)のコードである。readは,記憶装置300からデータを読み出すときに1が設定され,読み出さない場合は0が設定される。writeは,記憶装置300にデータを書き込むときに1が設定され,書き込まない場合は0が設定される。funcは,LD,XTIME,SBOX,XOR,および,任意(ALU120による演算は実行しない)のいずれかが設定される。acc-weは,アキュムレータ130にデータを書き込むときに1が設定され,書き込まない場合は0が設定される。」

M.「



4.引用文献4について
原審拒絶理由に引用された,特開2014-089271号公報(平成26年5月15日公開,以下,これを「引用文献4」という)には,関連する図面と共に,次の事項が記載されている。

N.「【0008】
<実施形態1>
図1は,実施形態1における情報処理装置である。ここで,情報処理装置は,ハッシュ演算を行う装置である。
【0009】
CPU1は,情報処理装置全体の制御を行う。とりわけ,後述のDMAコントローラ2及びハッシュ演算部分回路3の状態制御を行う。
【0010】
DMAコントローラ2は,CPU1またはハッシュ演算部分回路3からの信号に基づき任意の転送元アドレスと転送先アドレスの間でデータ伝送を行う。DMAコントローラ2は,データ伝送装置に相当する。
【0011】
ハッシュ演算部分回路3は,ハッシュ演算のうちの一部の演算を行う。具体的には,ハッシュ演算のうち,出力ビットのデータ長のデータをブロック毎に順序入替する回路(Permute回路)以外の演算を行う。ここでは,SHA-3の候補であるSKEINアルゴリズムにおけるMIX回路に相当する。
【0012】
図2は,SHA3のSKEINアルゴリズムにおける,ハッシュ長が1024bitである場合のPermute回路とMIX回路の構成の一部を示している。1024bitの入力に対して,64bit×2入力をそれぞれMIX回路に入力し,出力された1024bitをPermute回路に入力し,64bit単位で並べ替える処理を72回繰り返す。
【0013】
本実施形態は,図2に示されるPermute回路とMIX回路による処理を,DMAコントローラ2及びハッシュ演算部分回路3を1回以上用いることでハッシュ演算を実施するものである。ただし,ハッシュ演算部分回路3の演算内容はアルゴリズムに依存するが,いずれのアルゴリズムであっても,ハッシュ演算部分回路3は,順序入替する回路であるPermute回路以外の演算を行えばよい。また,ハッシュ演算部分回路3は演算アルゴリズムに応じた回路を複数実装もよい。
【0014】
RAM4は,プログラムあるいはハッシュ演算の入出力及び中間値を保持し,CPU1およびDMAコントローラ2からアクセス可能である。
【0015】
システムバス5は,CPU1,DMAコントローラ2,ハッシュ演算部分回路3及びRAM4が接続されている。
【0016】
次に,本実施形態を含んだDMAコントローラ2について図3を用いて説明する。
【0017】
データ取得部21は,バスインターフェイスであって,システムバス5に接続されており,CPU1によって設定された転送元アドレスからハッシュ演算対象のデータを取得す
る。データは,ハッシュ演算部分回路3及びRAM4から取得する。
【0018】
DMA転送用バッファ22は,データ取得部21で取得したデータを保持する。尚,DMAコントローラ2がサポートするバースト長分またはハッシュ長分のいずれか長い方以上の容量が必要である。仮にバス幅が64bitであり最大バースト長が8beatのDMA転送が可能である場合である場合には1024bitのハッシュ値をサポートする場合においては,ハッシュ長の上限である1024bitの容量以上を持つ必要がある。
【0019】
コマンド取得部23はCPU1によって設定された,ハッシュアルゴリズムの情報を取得する。ここで,ハッシュアルゴリズムの情報は,ハッシュアルゴリズムを識別する情報だけでなく,出力されるハッシュ長に関する情報も含まれる。尚,ここで,ハッシュ長とは,ハッシュ演算後に得られるハッシュ値の長さである。
【0020】
データ送出部24は,システムバス5に接続されており,CPU1によって設定された転送先アドレスに対して,DMA転送用バッファ22のデータを出力する。このとき,データ送出部24はDMA転送用バッファ22に,後述のテーブルメモリ25の内容に基づいて順次アクセスし,データを送出する。
【0021】
テーブルメモリ25には,起動時にCPU1により後述のテーブル登録部26を介してハッシュアルゴリズム毎に,ワード単位で入れ替える入替順序(Permuteの順序)が記録される。あるいは,CPU1による記録ステップを省略し,従前にハッシュアルゴリズム毎に構成された固定のテーブルメモリであっても良い。テーブルメモリ25のエントリは,ハッシュアルゴリズムに固有の値を複数設定することができる。尚,テーブルメモリ25は,ハッシュアルゴリズム毎に,ワード単位で入れ替える順序を保持する保持部であればよい。
【0022】
図5は,順序入替テーブルの一例である。
【0023】
図5(a)は,ハッシュアルゴリズム毎の順序入替テーブルの例であり,ハッシュアルゴリズム毎に,読み出し順(入替順序)が記載されている。
【0024】
図5(a)は,ハッシュアルゴリズム1,ハッシュアルゴリズム2,ハッシュアルゴリズム3に対する,ワード単位毎の読み出し順が記載されている。ワード単位は,ハッシュアルゴリズムが特定されると決まる単位であって,処理単位である。ここでは,ワード単位が64bitであるハッシュアルゴリズムを処理する例を用いて説明する。ハッシュアルゴリズム1,ハッシュアルゴリズム2,ハッシュアルゴリズム3は,それぞれ,ハッシュ長が,256bit,512bit,1024bitであり,ワード単位は64bitであるとする。ハッシュアルゴリズム1は,DMA転送用バッファ22のデータを,64bit毎に,0番目,3番目,1番目,2番目の順に取得する。ここで,DMA転送用バッファ22のデータにある最初の64bitを,0番目と呼び,次の64bitを,1番目と呼ぶ。尚,最初の64bitを,ここでは,0番目と呼ぶが,1番目と呼んでもよい。その場合は,図5(a)のハッシュアルゴリズム1は,1,4,2,3と表記される。
【0025】
データ送出部24は,ハッシュアルゴリズムの情報から,ワード単位を特定し,特定したワード単位毎に,テーブルに記載された順序で,DMA転送用バッファにあるデータを取得する。具体的には,ハッシュアルゴリズムの情報から,64bit毎に処理することを特定し,DMA転送用バッファ22のデータの,0番目にある64bitを取得する。次に,3番目にある64bit,1番目にある64bit,2番目にある64bitという順でデータを取得する。図5(a)は,テーブルに順序のみ記載しているので,テーブルサイズを小さくできる。また,ワード単位が異なるが,入替順序が同じであるような,
複数のハッシュアルゴリズムに対して,共用することも可能である。
【0026】
図5(b)は,ハッシュアルゴリズム毎の順序入替テーブルの他の例で,ハッシュアルゴリズム毎に,データを所定の単位で入れ替えるための複数のアドレスが記載されている。つまり,複数のアドレスを用いて,データを順次,読みだすことで,結果として,データを所定の単位で入れ替えることが可能である。具体的には,DMA転送用バッファ22の読み出しのオフセットアドレスが直接記載されている。図5(b)は,図5(a)と同様,ハッシュアルゴリズム1,ハッシュアルゴリズム2,ハッシュアルゴリズム3は,それぞれ,ハッシュ長が,256bit,512bit,1024bitであり,ワード単位を,64bitである。
【0027】
データ送出部24は,DMA転送用バッファのベースアドレスにテーブルメモリから読み出されたオフセットアドレスを加えたアドレスにアクセスすることを,テーブルに記載された順に行うことで,データを取得する。図5(b)は,読み出し順のアドレスが記載されているので,ハッシュアルゴリズムの情報から,ワード単位を特定する必要がなくなる。
【0028】
テーブル登録部26は,CPU1から転送されたハッシュアルゴリズム毎に,ワード単位でデータを入れ替える順序をテーブルメモリ25に記録する。テーブル登録部26はCPU1からハッシュアルゴリズム毎の転送順序を取得し,ハッシュアルゴリズムに応じたIDとともに図5に示す順序入替テーブルを作成し,テーブルメモリ25に記録する。この処理は,後述のステップS101で実施される内容であり,電源投入時やシステム起動時に1度実施されれば良い。あるいは,工場出荷時にテーブルメモリ25を予めROMに記録しておけば,テーブル登録部26は省略することができる。」

5.引用文献5について
原審拒絶理由に引用された「Poettering, B., RijndaelFurious, AVRAES: The AES block cipher on VR controllers, [online], 2007年3月11日,[2017年1月10日検索],インターネット」(以下,これを「引用文献5」という)には,「AES」のソフトウェア実装に関する開示がある。

6.引用文献6について
原審拒絶理由に引用された「Joppe, W. B. et al.,Fast Implementations of AES on Various Platforms, Cryptology ePrint Archive: Report 2009/501, [online], 2009年11月6日,[2017年1月10日検索], インターネット」(以下,これを「引用文献6」という)には,関連する図面と共に,次の事項が記載されている。

O.「This paper presents new software speed records for encryption and decryption using the block cipher AES-128 for different architectures.」(1頁1行?2行)
(この論文は,異なるアーキテクチャのための,ブロック暗号AES-128を用いるところの,暗号化,及び,復号に関して,新しい,ソフトウェアの速度記録を提示する。)

第4.本願発明と引用発明との対比及び相違点についての判断
1.本願発明1について
(1)対比
ア.引用発明は,「データをAES方式で暗号化する情報処理装置」に関するものであって,「AES方式」は,「共通鍵暗号」であるから,復号にも用いられ得るものであるので,
本願発明1における「演算装置と,AES方式で前記演算装置に,暗号化されたデータ又は平文のデータである第1データを暗号化又は復号化させるための処理を実行させるプログラムを記憶する記憶装置とを有する組み込みシステムが有する前記演算装置に,各処理を実行させるためのプログラム」とは,
“暗号化されたデータ又は平文のデータである第1データを暗号化又は復号化されるためのもの”である点で共通する。

イ.引用発明における「拡張鍵データを生成する処理を行う生成処理手段」と,
本願発明1における「1バイト単位の変数の配列を用いて,拡張鍵データを生成するのに入力される第2データを1バイトごとに処理して前記拡張鍵データを生成する処理を行う生成処理手順」とは,
“拡張鍵データを生成する処理を行う生成処理部”である点で共通する。

ウ.引用発明における「データを並び替える処理である並替処理を行う並替処理手段」と,
本願発明1における「第1データを並替テーブルを用いて並び替える処理である並替処理を行わせる並替処理手順」とは,
“データを並び替える処理である並替処理を行う並替処理部”である点で共通する。

エ.引用発明における「並替処理されたデータを1次元の配列の置換テーブルを用いて置換する処理である置換処理を行う置換処理手段」と,
本願発明1における「並替処理されたデータを1次元配列の置換テーブルを用いて置換する処理である置換処理を行わせる置換処理手順」とは,
“並替処理されたデータを1次元の配列の置換テーブルを用いて置換する処理である置換処理を行う置換処理”である点で共通する。

オ.引用発明における「置換処理されたデータを変換する処理である変換処理を行う変換処理手段」と,
本願発明1における「置換処理されたデータを等価式に基づいて変換する処理である変換処理を行わせる変換処理手順」とは,
“置換処理されたデータを変換する処理である変換処理を行う変換処理部”である点で共通する。

カ.引用発明における「拡張鍵データ及び前記変換処理されたデータの排他的論理和を計算する処理である拡張処理を行う拡張処理手段」と,
本願発明1における「拡張鍵データ及び前記変換処理されたデータに基づいての排他的論理和を計算する処理である拡張処理を行わせる拡張処理手順」とは,
“拡張鍵データ及び前記変換処理されたデータに基づいての排他的論理和を計算する処理である拡張処理を行わせる拡張処理部”である点で共通する。

キ.引用発明における「並替処理,前記置換処理,前記変換処理,及び前記拡張処理を4バイトごとに処理する」ことと,
本願発明1のおける「並替処理,前記置換処理,前記変換処理,及び前記拡張処理を4バイトごとに実行させる」こととは,
“前記並替処理,前記置換処理,前記変換処理,及び前記拡張処理を4バイトごとに行う”ことである点で共通する。

ク.以上,上記ア.?キ.において検討した事項から,本願発明1と,引用発明との,一致点,及び,相違点は,次のとおりである。

[一致点]
暗号化されたデータ又は平文のデータである第1データを暗号化又は復号化されるためのものであって,
拡張鍵データを生成する処理を行う生成処理部と,
前記データを並び替える処理である並替処理を行う並替処理部と,
前記並替処理されたデータを1次元の配列の置換テーブルを用いて置換する処理である置換処理を行う置換処理と,
前記置換処理されたデータを変換する処理である変換処理を行う変換処理部と,
前記拡張鍵データ及び前記変換処理されたデータに基づいての排他的論理和を計算する処理である拡張処理を行わせる拡張処理部と,を有し,
前記並替処理,前記置換処理,前記変換処理,及び前記拡張処理を4バイトごとに行う,暗号化又は復号化されるためのもの。

[相違点1]
“暗号化又は復号化されるためのもの”に関して,
本願発明1においては,「演算装置に,各処理を実行させるためのプログラム」であるのに対して,
引用発明においては,「情報処理装置」である点。

[相違点2]
“生成処理部,並替処理部,置換処理,変換処理部,及び,拡張処理部”に関して,
本願発明1においては,「生成処理手順」,「並替処理手順」,「置換処理手順」,「変換処理手順」,及び,「拡張処理手順」が,「プログラム」における,一連の「処理手順」であるのに対して,
引用発明においては,「生成処理手段」,「並替処理手段」,「置換処理手段」,「変換処理手段」,及び,「拡張処理手段」が,それぞれ,「情報処理装置」の“装置構成”の一部である点。

[相違点3]
“拡張鍵データを生成する処理”に関して,
本願発明1においては,「1バイト単位の変数の配列を用いて,拡張鍵データを生成するのに入力される第2データを1バイトごとに処理して前記拡張鍵データを生成する処理」であるのに対して,
引用発明においては,「1バイト単位の変数の配列を用いて,拡張鍵データを生成するのに入力される第2データを1バイトごとに処理」することについては,言及されていない点。

[相違点4]
“置換処理されたデータを変換する処理”に関して,
本願発明1においては,「置換処理されたデータを等価式に基づいて変換する処理」であるのに対して,
引用発明においては,「等価式に基づく」点については,言及がない点。

(2)判断
事案に鑑みて,上記相違点3について先に検討すると,相違点3に係る“1バイト単位の変数の配列を用いて,拡張鍵データを生成するのに入力される第2データを1バイトごとに処理して前記拡張鍵データを生成する処理”は,本願発明1においては,「プログラム」が,「演算装置」に実行されるもの,即ち,「プログラム」である。
そして,本願発明1は,既存の組み込み用のハードウェアにおいて,AESを実行できるようにすることを,発明の課題としている。
一方,上記H,及び,Iに記載を引用した,引用文献2は,“FPGAに8-bitのAESを実装する”ことが開示されているが,これは,“FPGA上に8-ビット処理のハードウェアを構築する”ものであって,“既存のハードウェアが処理可能なプログラム”を示すものではない。その他,上記に記載を引用した,引用文献3?引用文献6の何れにも,当該「プログラム」に関する記載は存在せず,本願の出願前に周知技術であるともいえない。
したがって,他の相違点について判断するまでもなく,本願発明1は,当業者であっても引用発明,引用文献2?引用文献6に記載された技術的事項に基づいて容易に発明できたものであるとはいえない。

2.本願発明2?本願発明5について
本願の請求項2?本願の請求項5は,本願の請求項1を引用するものであるから,本願発明2?本願発明5についても,上記「1.本願発明1について」の「イ.判断」において検討した,[相違点3]に係る構成を有している。
したがって,本願発明1と同じ理由により,当業者であっても,引用発明,引用文献2?引用文献6に記載された技術的事項に基づいて容易に発明できたものとはいえない。

第5.原審拒絶査定の概要及び原審拒絶査定についての判断
原審における平成29年6月15日付けの拒絶査定(以下,これを「原審拒絶査定」という)は,請求項1?請求項10について,引用文献1?引用文献6に基づいて,当業者が容易に発明できたものであるから,特許法第29条第2項の規定により特許を受けることができないというものである。しかしながら,平成30年12月7日付け手続補正により補正された請求項1?請求項5は,上記において検討した,[相違点3]に係る構成を有するものとなっており,上記のとおり,本願発明1?本願発明5は,上記引用文献1に記載された発明及び上記引用文献2?引用文献6に記載された技術的事項に基づいて,当業者が容易に発明できたものではない。したがって,原査定を維持することはできない。

第6.当審拒絶理由について
1.平成30年4月19日付けの拒絶理由(以下,これを「当審拒理1」という)
(1)36条6項2号について,
ア.請求項1に係る発明が,AESのハードウェア実装を示すのか,ソフトウェア実装を示すのか不明である。
イ.請求項9に係るプログラムに関する発明を,どのようにプログラムとして実現してるか不明である。

(2)36条4項1号について
本願の請求項1に記載の「生成処理部」,「並替処理部」,「置換処理部」,「変換処理部」,「拡張処理部」,及び,「AES方式に係る各処理を実行させるための高水準言語のプログラムを記憶する記憶部」に関して,本願明細書の発明の詳細な説明に記載の内容からは,不明である。

2.平成30年11月30日付けの拒絶理由
36条6項2号について
(1)当審拒理1において補正された,請求項1に記載の「生成処理部」をどのように実現しているか,不明である。

(2)当審拒理1において補正された,「生成処理手順」をどのように実現しているのか不明である。

上記指摘の拒絶理由は,何れも,平成30年12月7日付けの手続補正により解消している。

第7.むすび
以上のとおり,本願発明1?本願発明5は,当業者が引用発明,及び,引用文献2?引用文献6に記載された技術的事項に基づいて容易に発明をすることができたものではない。
したがって,原査定の理由によっては,本願を拒絶することはできない。
また,他に本願を拒絶すべき理由を発見しない。


よって,結論のとおり審決する。
 
審決日 2019-01-21 
出願番号 特願2016-520973(P2016-520973)
審決分類 P 1 8・ 536- WY (G09C)
P 1 8・ 121- WY (G09C)
P 1 8・ 537- WY (G09C)
最終処分 成立  
前審関与審査官 中里 裕正  
特許庁審判長 仲間 晃
特許庁審判官 石井 茂和
山崎 慎一
発明の名称 情報処理装置、プログラム、及び記録媒体  
代理人 伊東 忠重  
代理人 伊東 忠彦  

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