JP2005004048A - 鍵拡張装置、鍵拡張方法および鍵拡張プログラム - Google Patents
鍵拡張装置、鍵拡張方法および鍵拡張プログラム Download PDFInfo
- Publication number
- JP2005004048A JP2005004048A JP2003169150A JP2003169150A JP2005004048A JP 2005004048 A JP2005004048 A JP 2005004048A JP 2003169150 A JP2003169150 A JP 2003169150A JP 2003169150 A JP2003169150 A JP 2003169150A JP 2005004048 A JP2005004048 A JP 2005004048A
- Authority
- JP
- Japan
- Prior art keywords
- key
- register
- extended
- encryption
- decryption
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Pending
Links
Images
Classifications
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L9/00—Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols
- H04L9/06—Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols the encryption apparatus using shift registers or memories for block-wise or stream coding, e.g. DES systems or RC4; Hash functions; Pseudorandom sequence generators
- H04L9/0618—Block ciphers, i.e. encrypting groups of characters of a plain text message using fixed encryption transformation
- H04L9/0631—Substitution permutation network [SPN], i.e. cipher composed of a number of stages or rounds each involving linear and nonlinear transformations, e.g. AES algorithms
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L2209/00—Additional information or applications relating to cryptographic mechanisms or cryptographic arrangements for secret or secure communication H04L9/00
- H04L2209/12—Details relating to cryptographic hardware or logic circuitry
Landscapes
- Engineering & Computer Science (AREA)
- Computer Security & Cryptography (AREA)
- Computer Networks & Wireless Communication (AREA)
- Signal Processing (AREA)
- Storage Device Security (AREA)
Abstract
【課題】処理の効率を高める。
【解決手段】所定の鍵サイズのビット長を有する共通鍵方式の秘密鍵をもとに所定数の拡張鍵からなる拡張鍵系列を生成し、暗号化時と復号化時で各拡張鍵の使用順序が逆になる鍵拡張装置において、演算実行部と、多段構成のレジスタを有するレジスタ部とを備え、レジスタ部には、Mを正整数として、鍵サイズの1/Mの大きさの複数の要素レジスタから構成されるレジスタ集合を少なくともM個設け、各レジスタ集合には、要素暗号化鍵レジスタと、要素復号化鍵レジスタと、要素シフトレジスタを備え、暗号化または復号化が終わったときに、復号化または暗号化のための使用順序にしたがって、複数のレジスタ集合内で、要素復号化鍵レジスタまたは要素暗号化鍵レジスタに、初期拡張鍵が格納された状態とする。
【選択図】 図1
【解決手段】所定の鍵サイズのビット長を有する共通鍵方式の秘密鍵をもとに所定数の拡張鍵からなる拡張鍵系列を生成し、暗号化時と復号化時で各拡張鍵の使用順序が逆になる鍵拡張装置において、演算実行部と、多段構成のレジスタを有するレジスタ部とを備え、レジスタ部には、Mを正整数として、鍵サイズの1/Mの大きさの複数の要素レジスタから構成されるレジスタ集合を少なくともM個設け、各レジスタ集合には、要素暗号化鍵レジスタと、要素復号化鍵レジスタと、要素シフトレジスタを備え、暗号化または復号化が終わったときに、復号化または暗号化のための使用順序にしたがって、複数のレジスタ集合内で、要素復号化鍵レジスタまたは要素暗号化鍵レジスタに、初期拡張鍵が格納された状態とする。
【選択図】 図1
Description
【0001】
【発明の属する技術分野】
本発明は鍵拡張装置、鍵拡張方法および鍵拡張プログラムに関し、例えば、AES(Advanced Encryption Standard)アルゴリズムの一部を構成する鍵拡張アルゴリズムを実現する場合などに適用して好適なものである。
【0002】
【従来の技術】
AESアルゴリズムは、従来使用されているDESアルゴリズムの後継暗号アルゴリズムとして2001年11月に標準化された。DESアルゴリズムは、米国政府が認定したものであるが、例えば、IPsecでは、各IPsecベンダが自社の提供するIPsec製品の暗号化アルゴリズムに関して、基本的に自由に採用、不採用を決定できるものの、ESP仕様により、DESだけは採用が義務づけられるなど、世界中で広く使用されているため、その後継暗号アルゴリズムであるAESアルゴリズムも、世界中で広く使用される可能性が高い。
【0003】
AESアルゴリズムは、DESアルゴリズムと同様、慣用暗号系(共通鍵暗号方式)に属するアルゴリズムであるため、平文のデータを暗号化して送信する送信元通信装置と、暗号化されたデータを受信して平文のデータに復号化する宛先通信装置が、同じ鍵(秘密鍵)を持ち合うことによって、暗号通信が成立する。すなわち、AESアルゴリズムでは、暗号化に用いる鍵(暗号化鍵)と、復号化に用いる鍵(復号化鍵)が同じである。
【0004】
AESアルゴリズムに関連する従来技術としては、例えば、下記の特許文献1に記載されたものがある。特許文献1には、AESアルゴリズムの実装をコンパクトな回路で実現するための技術が記載されている。
【0005】
【特許文献1】
特開2003−15522
【0006】
【発明が解決しようとする課題】
ところで、AESアルゴリズムの生成順序(使用順序)では、暗号化に際して過去の暗号化に使用したワーク鍵をもとに新たなワーク鍵を生成する操作を繰り返すことで、順次、必要なワーク鍵を生成して行く。ワーク鍵とは、実際に、前記平文データの暗号化に使用する暗号化鍵のことで、もとになる暗号化鍵(秘密鍵)に所定の処理を施すことによって必要な数だけ生成される。必要とされるワーク鍵の数は、暗号化処理の内容に応じて変わるが、DESやAESのようなブロック暗号のための通信装置は、入力される平文のデータに対して暗号化処理を実行するデータ撹拌部と、前記ワーク鍵を生成する鍵拡張部(鍵スケジューラ部)を備えているが、データ撹拌部では、暗号化処理(または、復号化処理)を実行する際、同様な撹拌処理が繰り返し実行されるが、各撹拌処理ごとに別なワーク鍵が使用されるため、必要なワーク鍵の数は、データ撹拌部における撹拌処理の繰り返し数に等しい。
【0007】
例えば、図2に示す例は秘密鍵のサイズが128ビットのケースに対応し、44個のワーク鍵WK1〜WK44が使用されている。図2において、図示しない鍵拡張部は、ワーク鍵WK4〜WK1(この場合、この4つのワーク鍵WK4〜WK1は初期鍵(暗号化時の初期鍵)でもある)をもとに、ワーク鍵WK5を生成し、ワーク鍵WK5〜WK2をもとに、ワーク鍵WK6を生成し、…、ワーク鍵WK43〜WK40をもとにワーク鍵WK44を生成する。そして、前記データ撹拌部が暗号化処理を実行する際には、ワーク鍵WK1、WK2,WK3,…,WK44の順番で使用する。
【0008】
これに対し復号化では、鍵拡張部が生成し、データ撹拌部が復号化のために使用する個々のワーク鍵の値は同じであるが、順番が逆になる。例えば、図2に示す例では、当該鍵拡張部は、ワーク鍵WK44〜WK41(この場合、この4つのワーク鍵WK44〜WK41は初期鍵(復号化時の初期鍵)でもある)をもとに、ワーク鍵WK40を生成し、ワーク鍵WK43〜WK40をもとに、ワーク鍵WK39を生成し、…、ワーク鍵WK2〜WK5をもとにワーク鍵WK1を生成する。そしてデータ撹拌部が復号化処理を実行する際には、ワーク鍵WK44,WK43,WK42,WK41,…,WK1の順番で使用する。
【0009】
このようなワーク鍵の使用形態は、静的なものと動的なものの2つに分けることができる。
【0010】
静的な使用形態では、予めワーク鍵WK1〜WK44のすべてを生成し保存しておき、必要なときに適宜、読み出して使用するのに対し、動的な使用形態では、必要なときに上述した生成順序にしたがって動的にワーク鍵を生成する。この場合、最初に生成される前記ワーク鍵WK5のもとになる4個のワーク鍵(暗号化時の初期鍵)WK4〜WK1だけは保存しておく必要がある。
【0011】
静的な使用形態の場合には、44個のワーク鍵WK1〜WK44すべてを保存しておく必要があるため、記憶容量の節約の点では不利であるが、いつでも所望のワーク鍵を読み出して使用できる利点がある。例えば、スマートカードやICタグのような、極めて小さな通信装置に保存する場合、ワーク鍵を保存しておくために消費する記憶容量が大きいことは、大きな不利益となる可能性が高い。
【0012】
一方、動的な使用形態は、保存する必要があるワーク鍵が暗号化時の初期鍵にあたる4個だけと少ないため、記憶容量の節約の点では有利であるが、例えば、復号化を開始しようとする場合、復号化時の初期鍵であるワーク鍵WK44〜WK41は、暗号化時の生成順序ではあとのほうで生成されるから、暗号化時の初期鍵(WK1〜WK4)しかない状態で復号化時の初期鍵(WK44〜WK41)を得て復号化を開始するまでに、多くの処理と時間を要する可能性がある。また、そのワーク鍵を生成したときの通信装置の内部状態によっては、生成したワーク鍵を用いて実際に処理(例えば、復号化)を行うまでに、さらに内部状態を変更するための処理を必要とする可能性がある。
【0013】
【課題を解決するための手段】
かかる課題を解決するために、第1の本発明では、所定の鍵サイズのビット長を有する共通鍵方式の秘密鍵をもとに所定数の拡張鍵からなる拡張鍵系列を生成し、暗号化時と復号化時で各拡張鍵の使用順序が逆になる鍵拡張装置において、(1)前記拡張鍵系列中の端部に位置する1または複数の拡張鍵である初期拡張鍵の供給を契機として、繰り返し同じ演算処理を実行することで、前記拡張鍵系列の各拡張鍵を生成する演算実行部と、(2)前記拡張鍵を格納する多段構成のレジスタを有するレジスタ部とを備え、(3)当該レジスタ部には、Mを正整数として、前記鍵サイズの1/Mの大きさの複数の要素レジスタから構成されるレジスタ集合を少なくともM個設け、各レジスタ集合には、(4)前記拡張鍵系列のうち暗号化時の使用順序において前記端部に属する初期拡張鍵を格納する要素暗号化鍵レジスタと、(5)前記拡張鍵系列のうち復号化時の使用順序において前記端部に属する初期拡張鍵を格納する要素復号化鍵レジスタと、(6)前記暗号化時または復号化時の使用順序にしたがって、逐次、前記初期拡張鍵または前記拡張鍵系列中で初期拡張鍵以降に位置する各拡張鍵を格納する要素シフトレジスタを備え、(7)暗号化もしくは復号化が終わったとき、または暗号化時もしくは復号化時の使用順序にしたがった拡張鍵の生成が終わったときに、復号化または暗号化のための使用順序にしたがって、複数の前記レジスタ集合内で、前記要素復号化鍵レジスタまたは要素暗号化鍵レジスタに、前記初期拡張鍵が格納された状態であることを特徴とする。
【0014】
また、第2の本発明では、所定の鍵サイズのビット長を有する共通鍵方式の秘密鍵をもとに所定数の拡張鍵からなる拡張鍵系列を生成し、暗号化時と復号化時で各拡張鍵の使用順序が逆になる鍵拡張方法において、(1)演算実行部が、前記拡張鍵系列中の端部に位置する1または複数の拡張鍵である初期拡張鍵の供給を契機として、繰り返し同じ演算処理を実行することで、前記拡張鍵系列の各拡張鍵を生成し、(2)レジスタ部に属する多段構成の各レジスタが前記拡張鍵を格納する場合、当該レジスタ部には、Mを正整数として、前記鍵サイズの1/Mの大きさの複数の要素レジスタから構成されるレジスタ集合を少なくともM個設け、各レジスタ集合には、(3)前記拡張鍵系列のうち暗号化時の使用順序において前記端部に属する初期拡張鍵を格納する要素暗号化鍵レジスタと、(4)前記拡張鍵系列のうち復号化時の使用順序において前記端部に属する初期拡張鍵を格納する要素復号化鍵レジスタと、(5)前記暗号化時または復号化時の使用順序にしたがって、逐次、前記初期拡張鍵または前記拡張鍵系列中で初期拡張鍵以降に位置する各拡張鍵を格納する要素シフトレジスタを設けておき、(6)暗号化もしくは復号化が終わったとき、または暗号化時もしくは復号化時の使用順序にしたがった拡張鍵の生成が終わったときに、復号化または暗号化のための使用順序にしたがって、複数の前記レジスタ集合内で、前記要素復号化鍵レジスタまたは要素暗号化鍵レジスタに、前記初期拡張鍵が格納された状態であることを特徴とする。
【0015】
さらに、第3の本発明では、所定の鍵サイズのビット長を有する共通鍵方式の秘密鍵をもとに所定数の拡張鍵からなる拡張鍵系列を生成し、暗号化時と復号化時で各拡張鍵の使用順序が逆になる鍵拡張プログラムにおいて、コンピュータに、(1)前記拡張鍵系列中の端部に位置する1または複数の拡張鍵である初期拡張鍵の供給を契機として、繰り返し同じ演算処理を実行することで、前記拡張鍵系列の各拡張鍵を生成する演算実行機能と、(2)前記拡張鍵を格納する多段構成のレジスタを提供するレジスタ機能とを実現させ、(3)当該レジスタ機能は、Mを正整数として、前記鍵サイズの1/Mの大きさの複数の要素レジスタから構成されるレジスタ集合を少なくともM個提供し、各レジスタ集合には、(4)前記拡張鍵系列のうち暗号化時の使用順序において前記端部に属する初期拡張鍵を格納する要素暗号化鍵レジスタと、(5)前記拡張鍵系列のうち復号化時の使用順序において前記端部に属する初期拡張鍵を格納する要素復号化鍵レジスタと、(6)前記暗号化時または復号化時の使用順序にしたがって、逐次、前記初期拡張鍵または前記拡張鍵系列中で初期拡張鍵以降に位置する各拡張鍵を格納する要素シフトレジスタを含み、(7)暗号化もしくは復号化が終わったとき、または暗号化時もしくは復号化時の使用順序にしたがった拡張鍵の生成が終わったときに、復号化または暗号化のための使用順序にしたがって、複数の前記レジスタ集合内で、前記要素復号化鍵レジスタまたは要素暗号化鍵レジスタに、前記初期拡張鍵が格納された状態であることを特徴とする。
【0016】
【発明の実施の形態】
(A)実施形態
以下、本発明にかかる鍵拡張装置、鍵拡張方法および鍵拡張プログラムを、AESに適用する場合を例に、実施形態について説明する。
【0017】
(A−1)実施形態の構成
本実施形態の通信システム10の全体構成例を図5に示す。
【0018】
図5において、通信システム10は、ネットワーク11と、通信装置12,13とを備えている。
【0019】
このうち通信装置12は、平文のデータD1を暗号化して生成した暗号化データED1を送信する暗号化機能と、暗号化データED2を受信し復号化して平文のデータD2を得る復号化機能を備えている。暗号化機能は、上述したデータ撹拌部と鍵拡張部によって実現される。この点、復号化機能も同じである。
【0020】
図4に示す暗号処理部19において、データ撹拌部20は、当該データ撹拌部に対応し、鍵拡張部21は当該鍵拡張部に対応する。
【0021】
ここで鍵拡張部21では初期鍵と呼ばれる秘密鍵(128ビット,192ビット,256ビットが存在する)からデータ撹拌部20が使用するワーク鍵を発生するが、発生するワーク鍵の数は秘密鍵のサイズに応じて、44個、55個、60個と異なるため、1つのワーク鍵のサイズが32ビットであるとすると、すべてのワーク鍵のサイズを合計した値は、秘密鍵のサイズが128ビットの時には1408(=32×44)ビット,192ビットの時には1664(=32×55)ビット、256ビットの時には1920(=32×60)ビットになる。
【0022】
鍵拡張部21が暗号化の際にワーク鍵を生成するためのアルゴリズム(暗号化用鍵拡張アルゴリズム)は、図6に示す通りであってよい。また、当該鍵拡張部21が復号化の際にワーク鍵を生成するためのアルゴリズム(復号化用鍵拡張アルゴリズム)は、図7に示す通りであってよい。
【0023】
図6、図7において、Nkは秘密鍵(後述するPK1)のサイズを4バイト(=32ビット)単位で示す値で秘密鍵のサイズが128ビットの時はNk=4であり、192ビットの時はNk=6であり、256ビットの時はNk=8である。また、Nbは演算の列数を表しNb=4である。さらに、Nrは処理の実行回数を表し、秘密鍵PK1のサイズが128ビットの時はNr=10であり、192ビットの時はNr=12であり、256ビットの時はNr=14である。
【0024】
なお、図6,図7のアルゴリズムは32ビット幅で処理されている。
【0025】
これらのアルゴリズムからも明らかなように、このアルゴリズムの拡張演算処理をfで表現すると、秘密鍵PK1のサイズが128ビットの場合、暗号化用鍵拡張アルゴリズムは次の式(1)で示すことができる。
【0026】
Wk_Key(N+4)=f(Wk_Key(N+3))(+)Wk_Key(N) …(1)
また、復号化用鍵拡張アルゴリズムは次の式(2)で示すことができる。
【0027】
Wk_Key(N−4)=f(Wk_Key(N−1))(+)Wk_Key(N) …(2)
ただし、式(1)および(2)において、(+)はビット毎の排他的論理和演算を示す。
【0028】
ネットワーク11経由で当該通信装置12と通信する通信装置13も、当該通信装置12と同様な暗号化機能と復号化機能を備えている。当該通信装置13が送信するのが、前記暗号化データED2であり、受信するのが、前記暗号化データED1である。前記通信装置12はユーザU1によって操作され、当該通信装置13はユーザU2によって操作される。ネットワーク11経由で行われる暗号化データED1,ED2のやり取りは、ユーザU1とU2のあいだのメッセージ交換に対応する。
【0029】
上述したように、AESアルゴリズムは共通鍵暗号方式に属するアルゴリズムであるため、通信装置12,13は、同じ秘密鍵PK1を持ち合っている。
【0030】
ネットワーク11は、LAN(ローカルエリアネットワーク)であってよく、インターネットなどであってもよい。
【0031】
通信装置12,13はパーソナルコンピュータなどであってもよいが、スマートカードやICタグなどであってもよい。スマートカードやICタグである場合には、暗号化データED1,ED2のやり取りは、ネットワーク11を経由しない無線通信などのローカル通信によって実現されることが多い。
【0032】
本実施形態で特徴的な構成要素である前記鍵拡張部21の内部構成例を図1に示す。
【0033】
(A−1−1)鍵拡張部の内部構成例
図1において、当該鍵拡張部21は、レジスタ部21Aと、鍵拡張演算部21Bと、出力端子21Cとを備えている。
【0034】
このうちレジスタ部21Aには、8つのレジスタセット31〜38と2つのセレクタ42,43が設けられ、鍵拡張演算部21Bには、3つの演算部39〜41と、2つの排他的論理和回路42,43と、3つのセレクタ44〜46が設けられている。
【0035】
出力端子21Cは、前記ワーク鍵WK1〜WK44を出力する端子である。前記データ撹拌部20が暗号化処理を実行するときには、WK1、WK2,WK3,WK4,…,WK43,WK44の順番で、復号化処理を行うときには、これと逆の順番で、当該出力端子21Cから各ワーク鍵が出力され、前記データ撹拌部20へ供給される。上述したようにデータ撹拌部20では、供給を受けた各ワーク鍵(例えば、WK1)を用いて、繰り返し撹拌処理を実行するが、この撹拌処理は、非線形性を付与することで、ネットワーク11上の第3者(ユーザU1,U2以外の者)が平文データ(例えば、D1)や暗号鍵(例えば、秘密鍵PK1)の内容を知ろうとして行う攻撃(解読)に対する暗号の強度(安全性)を高めるために必要なものである。
【0036】
前記レジスタ部21Aにおいて、8つのレジスタセット31〜38には、N1〜N8のセット順位が付与されている。
【0037】
すなわち、レジスタセット31のセット順位はN1であり、レジスタセット32のセット順位はN2であり、レジスタセット33のセット順位はN3であり、レジスタセット34のセット順位はN4であり、レジスタセット35のセット順位はN5であり、レジスタセット36のセット順位はN6であり、レジスタセット37のセット順位はN7であり、レジスタセット38のセット順位はN8である。
【0038】
レジスタ部21Aは全体として1つのシフトレジスタの構成を有しているが、このセット順位N1〜N8は、レジスタに格納されているデータ(ワーク鍵)がシフトされていく順番を示す。基本的にワーク鍵は、セット順位が上位のレジスタセットから下位のレジスタセットへシフトされていく。例えば、ある時点で、セット順位N8に格納されているワーク鍵に注目すると、最初は、セット順位N8のレジスタセット38からセット順位N7のレジスタセット37へシフトし、それ以降は、逐次、セット順位N7のレジスタセット37からセット順位N6のレジスタセット36へシフトし、セット順位N6のレジスタセット36からセット順位N5のレジスタセット35へシフトし、…、セット順位N3のレジスタセット33からセット順位N2のレジスタセット32へシフトし、セット順位N2のレジスタセット32からセット順位N1のレジスタセット31へシフトする。
【0039】
ただし上述したようにAESでは3通りのサイズの秘密鍵が使用され得るが、現に行おうとしている通信に使用する秘密鍵のサイズによっては、レジスタ部21A内の上位のレジスタセット(すなわち、セット順位の「N」の直後の値が大きいレジスタセット)は使用しない。
【0040】
すなわち、秘密鍵PK1のサイズが256ビットであるときには、8つのレジスタセット31〜38のすべてを使用するが、秘密鍵PK1のサイズが192ビットであるときには、上位2つのレジスタセット38,37は使用せず下位6つのレジスタセット31〜36を使用し、秘密鍵PK1のサイズが128ビットであるときには、上位4つのレジスタセット38〜35は使用せず下位4つのレジスタセット31〜34を使用する。
【0041】
本実施形態では、主として、秘密鍵PK1のサイズが128ビットである場合を想定して説明するので、レジスタセット31〜38のうち使用するのは、31〜34のみである。
【0042】
レジスタ部21A内に設けられている前記セレクタ42は、制御入力端子42Cに供給されるセレクタ制御信号(図示せず)に応じて、セレクタ42の出力端子に接続する入力端子の選択を切り替える部分である。同様に、前記セレクタ43は、制御入力端子43Cに供給されるセレクタ制御信号に応じて、セレクタ43の出力端子に接続する入力端子の選択を切り替える部分である。したがって、前記秘密鍵PK1のサイズに応じて、制御入力端子43C、42Cに供給するセレクタ制御信号を変更することになる。
【0043】
例えば、秘密鍵PK1のサイズが256ビットである場合には、セレクタ43に、レジスタセット37とレジスタセット36を接続させるような選択を行わせるとともに、セレクタ42に、レジスタセット35とレジスタセット34を接続させるような選択を行わせる。同様に、秘密鍵PK1のサイズが192ビットである場合には、セレクタ43に、前記排他的論理和回路43とレジスタセット36を接続させるような選択を行わせるとともに、セレクタ42に、レジスタセット35とレジスタセット34を接続させるような選択を行わせる。
【0044】
また、本実施形態で想定する秘密鍵PK1のサイズが128ビットである場合には、セレクタ42に、排他的論理和回路43とレジスタセット34を接続させるような選択を行わせる。この場合、有効に動作する下位4つのレジスタセット31〜34と、有効に動作しない上位4つのレジスタセット35〜38は接続されないため、セレクタ43に行わせる選択はいずれであってもかまわない。
【0045】
図1に示す他のセレクタ44,45,46の機能も当該セレクタ42,43と同様である。ただしセレクタ46は、その制御入力端子46Cに供給されるセレクタ制御信号に応じて排他的論理和回路42またはセレクタ44の出力端子のいずれかを、排他的論理和回路43に接続する部分である。また、セレクタ45は、その制御入力端子45Cに供給されるセレクタ制御信号に応じて演算部39またはセレクタ44の出力端子のいずれかを、演算部40に接続する部分である。
【0046】
さらに、セレクタ44は制御入力端子44C以外に4つの入力端子を備え、4つの入力端子のそれぞれには、前記レジスタセット32の出力端子、前記レジスタセット34の出力端子、前記レジスタセット36の出力端子、前記レジスタセット38の出力端子が接続されている。そして当該セレクタ44は、その制御入力端子44Cに供給されるセレクタ制御信号に応じて、4つのレジスタセット32,34,36,38のいずれかの出力端子を選択して、セレクタ46に接続する。
【0047】
セレクタ44による選択は、暗号化時では前記秘密鍵PK1のサイズに応じて変換するが、復号化時では、秘密鍵PK1のサイズに依存することなく一定である。
【0048】
すなわち、暗号化時において、秘密鍵PK1のサイズが128ビットのときにはレジスタセット34の出力端子を選択し、194ビットのときにはレジスタセット36の出力端子を選択し、256ビットのときにはレジスタセット38の出力端子を選択するが、復号化時においては、秘密鍵PK1のサイズにかかわらず、一貫してレジスタセット32の出力端子を選択する。
【0049】
順次、上述したワーク鍵を生成する鍵拡張演算部21B内の構成は、図6、図7に示したプログラムリストに対応している。すなわち、演算部39は、プログラムリスト中の関数RotWordに対応する演算を実行する部分で、演算部40はプログラムリスト中の関数SubWordに対応する演算を実行する部分で、演算部41はプログラムリスト中の配列Rconに対応する演算を実行する部分である。また、図6の行L10と、図7の行L50のxorに対応するのは、排他的論理和回路42であり、図6の行L20と、図7の行L60のxorに対応するのは、排他的論理和回路43である。
【0050】
さらに、図6,図7のアルゴリズムが32ビット幅で処理されたことと対応して、本実施形態の鍵拡張部21で使用するレジスタはすべて32ビット幅である。
【0051】
ただし8つのレジスタセット31〜38のうちの各レジスタセット(例えば、31)の内部には図3に示すように3つのレジスタ(例えば、31A〜31C)が含まれているから、これら3つのレジスタのそれぞれが32ビット幅の構成を有することになる。
【0052】
8つのレジスタセット31〜38はすべて同じ内部構成を有しているが、図3には、主としてレジスタセット31を示したものとしてその内部構成を説明する。
【0053】
(A−1−2)レジスタセットの内部構成例
図3において、当該レジスタセット31は、ワーク鍵レジスタ31Aと、暗号化鍵レジスタ31Bと、復号化鍵レジスタ31Cと、内部セレクタ31Dと、出力端子31Eと、入力端子31Fとを備えている。
【0054】
このうち暗号化鍵レジスタ31Bは、上述した生成順序に対応する本実施形態の生成順序で、以降のワーク鍵を生成するために必要な暗号化鍵としての最初のワーク鍵(暗号化時の初期鍵)WK1を格納するレジスタである。
【0055】
同様に、復号化鍵レジスタ31Cは、本実施形態の生成順序で、以降のワーク鍵を生成するために必要な復号化鍵としての最初のワーク鍵(復号化時の初期鍵)WK44を格納するレジスタである。
【0056】
ワーク鍵レジスタ31Aは、暗号化時においては暗号化鍵としてのワーク鍵を格納し、復号化時においては復号化鍵としてのワーク鍵を格納するレジスタである。
【0057】
上述したように、これら3つのレジスタ31A〜31Cは、すべて32ビット幅の構成を有する。
【0058】
セレクタ31Dは、前記セレクタ(例えば、42C)と同様な機能を有する部分で、制御入力端子31DCに供給される内部セレクタ制御信号(図示せず)に応じて、当該内部セレクタ31Dの3つの入力端子のうちいずれか1つを当該内部セレクタ31Dの出力端子に接続する。
【0059】
暗号化処理の開始直後であって、鍵拡張演算部21Bに前記ワーク鍵WK5を生成させるときには、内部セレクタ31Dに暗号化鍵レジスタ31Bの出力するワーク鍵を選択させ、復号化処理の開始直後であって、鍵拡張演算部21Bに前記ワーク鍵WK40を生成させるときには、内部セレクタ31Dに復号化鍵レジスタ31Cの出力するワーク鍵を選択させる。
【0060】
また、暗号化時にワーク鍵WK5を生成させたあと、または、復号化時にワーク鍵WK40を生成させたあとでは、内部セレクタ31Dには、入力端子31Fから供給されるワーク鍵を選択させる。レジスタセット31の入力端子31Fは、当該レジスタセット31の1つ上位に位置する前記レジスタセット32の出力端子32E(31Eに対応)に接続されているので、前記シフトによりレジスタセット32から出力されたワーク鍵(例えば、WK2)は、当該入力端子31Fと内部セレクタ31Dを介してワーク鍵レジスタ31Aに供給されて格納されることになる。
【0061】
このようにレジスタセットの出力端子は、通常、下位のレジスタセットの入力端子に接続されるが、当該レジスタセット31は最下位のレジスタセットであるためその出力端子31Eは、前記出力端子21Cと、前記排他的論理和回路43に接続されている。
【0062】
当該レジスタセット31内における各構成要素に対する符号の付与規則にしたがって、他のレジスタセット32〜34内の構成要素にも符号を付与するものとする。
【0063】
すなわち、レジスタセット32内のワーク鍵レジスタは32A、暗号化鍵レジスタは32B、復号化鍵レジスタは32C、内部セレクタは32D、出力端子は32E、入力端子は32Fとする。
【0064】
同様に、レジスタセット33内のワーク鍵レジスタは33A、暗号化鍵レジスタは33B、復号化鍵レジスタは33C、内部セレクタは33D、出力端子は33E、入力端子は33Fとし、レジスタセット34内のワーク鍵レジスタは34A、暗号化鍵レジスタは34B、復号化鍵レジスタは34C、内部セレクタは34D、出力端子は34E、入力端子は34Fとする。
【0065】
以下、上記のような構成を有する本実施形態の動作について説明する。この動作は、S1〜SN+1、P1〜PN+1の各ステップから構成されている。
【0066】
この動作では、レジスタ(例えば、31Bなど)に格納されたワーク鍵から次のワーク鍵を演算すことになるが、そのための演算を実行する鍵拡張演算部21Bの各演算については規格書“Federal Information Processing Standards Publication 197”に記載されている回路が構成されているとする。
【0067】
(A−2)実施形態の動作
ここでは、前記通信装置12内のデータ撹拌部20が平文データD1を暗号化して得られる暗号化データED1を送信し、その応答として、前記通信装置13から届く暗号化データED2を復号化する場合を例に取る。
【0068】
最初に当該平文データD1がデータ撹拌部20に供給される前の時点で、すでに4つの前記レジスタセット31〜34内の暗号化鍵レジスタ(例えば、31B)には、暗号化時の初期鍵である前記ワーク鍵WK1〜WK4が格納されている。
【0069】
すなわち、レジスタセット31の暗号化鍵レジスタ31Bにはワーク鍵WK1が格納され、レジスタセット32の暗号化鍵レジスタ32Bにはワーク鍵WK2が格納され、レジスタセット33の暗号化鍵レジスタ33Bにはワーク鍵WK3が格納され、レジスタセット34の暗号化鍵レジスタ34Bにはワーク鍵WK4が格納されている。
【0070】
この格納を行うためには、秘密鍵PK1から当該ワーク鍵WK1〜WK4を生成する処理を行わないとするなら、予め、例えば、通信装置12が搭載している不揮発性の記憶手段(例えば、ハードディスクやEEPROMなど)に、4つのワーク鍵WK1〜WK4を保存しておくことになる。
【0071】
なお、ここでは、秘密鍵PK1のサイズが128ビットの場合を想定しているため、上位の4つのレジスタセット35〜38は使用しない点はすでに説明した通りである。
【0072】
この状態で、レジスタセット31〜34内の内部セレクタ(例えば、31D)に暗号化鍵レジスタ(例えば、31B)を選択させて、暗号化鍵レジスタ内に格納されているワーク鍵(例えば、WK1)をワーク鍵レジスタ(例えば、31A)へ転送させる(S1)。
【0073】
この転送により、4つのレジスタセット31〜34内では、ワーク鍵レジスタ(例えば、31A)にワーク鍵(WK1)が格納される。
【0074】
すなわち、レジスタセット31内ではワーク鍵レジスタ31Aにワーク鍵WK1が格納され、レジスタセット32内ではワーク鍵レジスタ32Aにワーク鍵WK2が格納され、レジスタセット33内ではワーク鍵レジスタ33Aにワーク鍵WK3が格納され、レジスタセット34内ではワーク鍵レジスタ34Aにワーク鍵WK4が格納される。
【0075】
これによって、レジスタセット31の出力端子31Eを介して、ワーク鍵WK1が、排他的論理回路43と出力端子21Cに供給され、レジスタセット34の出力端子34Eを介してワーク鍵WK4が、セレクタ44に供給される。
【0076】
つづくステップS2では、出力端子21に供給されたワーク鍵WK1は前記データ撹拌部20に供給され、データ撹拌部20において平文データD1に対する最初の撹拌処理(暗号化処理)に利用される。ブロック暗号では、撹拌処理の対象とするデータ(ここでは、平文データD1)もブロックに分割するため、例えば、データD1が大きなサイズのファイルなどであるとすると、小さなブロックに分割され、分割後の多数のブロックのうちの最初の1つが、ここで、撹拌処理を施されることになる。以降は順次、後続のブロックが撹拌処理の対象とされ、すべてのブロックが44回撹拌処理を受けた結果が、前記暗号化データED1である。
【0077】
この最初の1ブロックに対する最初の撹拌処理が実行されるのととほぼ同時に当該ステップS2では、セレクタ44と排他的論理和回路43を介してこれらのワーク鍵WK1、WK4を受け取る鍵拡張演算部21Bが、図1の構成に応じた演算により、ワーク鍵WK5を生成する。
【0078】
次のステップS3では、このワーク鍵WK5が、前記排他的論理和回路43とセレクタ42を介してレジスタセット34に供給される。この時点では、各レジスタセット31〜34内の内部セレクタ(例えば、31D)は、選択を入力端子(例えば31F)に切り替えているため、4つのレジスタセット31〜34、特にそのなかの各ワーク鍵レジスタ31A〜34Aが、1つのシフトレジスタとして動作する状態にある。したがって、ワーク鍵WK5をレジスタセット34内のワーク鍵レジスタ34Aに格納するときには、それまでレジスタセット34内のワーク鍵レジスタ34Aに格納されていたワーク鍵WK4がシフトされてレジスタセット33内のワーク鍵レジスタ33Aに格納され、同様に、各レジスタセット間をワーク鍵WK3〜WK2がシフトして行く。
【0079】
1回のシフトが終わったときには、レジスタセット31内ではワーク鍵レジスタ31Aにワーク鍵WK2が格納され、レジスタセット32内ではワーク鍵レジスタ32Aにワーク鍵WK3が格納され、レジスタセット33内ではワーク鍵レジスタ33Aにワーク鍵WK4が格納され、レジスタセット34内ではワーク鍵レジスタ34Aにワーク鍵WK5が格納された状態となる。
【0080】
以降は、基本的にこのステップS2,S3と同様な動作が繰り返されることになるが、ここではワーク鍵の数が44個なので、前記ステップS2から、暗号化時の生成順序で44番目のワーク鍵WK44が最初に出力端子21Cから出力されるまでが、ワーク鍵WK1〜WK44の系列に関する1周期となる。したがって、ワーク鍵WK44が出力端子21Cから出力されると、再び、1番目のワーク鍵WK1が出力端子21Cから出力されるようになって次の周期が開始される。それ以降は同様な動作が繰り返される。この繰り返しの回数は、前記平文データD1のサイズが大きいほど多くなることは当然である。
【0081】
本実施形態の動作のうち最も特徴的な部分は、当該周期(前記生成順序に対応)の終わりに位置するワーク鍵WK41〜WK44が出力端子21Cから出力される区間の処理にあるので、次は、この区間の近傍の処理に注目して説明する。ここでは、ワーク鍵WK37が最初に(最初の周期に)出力端子21Cから出力される時点の前記ステップS2に対応する処理であるステップSNから説明する。
【0082】
このテップSNでは、出力端子21に供給されたワーク鍵WK37は前記データ撹拌部20に供給され、データ撹拌部20において平文データD1に対する撹拌処理(暗号化処理)に利用されるとともに、排他的論理和回路43に供給されるから、鍵拡張演算部21Bは、当該ワーク鍵WK37と、セレクタ44を介して供給されるワーク鍵WK40をもとに、ワーク鍵WK41を生成する。
【0083】
そして次のステップSN+1で、当該ワーク鍵WK41のレジスタセット34への供給と、レジスタセット31〜34での前記シフトが行われる点は、前記ステップS3と同じである。ただし、この回のシフトでは、レジスタセット34内のワーク鍵レジスタ34Aだけでなく復号化鍵レジスタ34Cにも、当該ワーク鍵WK41を格納する。これはあとで復号化処理を行う際、初期のワーク鍵として使用するための格納である。
【0084】
最終的には、レジスタセット31内の復号化鍵レジスタ31Cには、ワーク鍵WK44が格納され、レジスタセット32内の復号化鍵レジスタ32Cには、ワーク鍵WK43が格納され、レジスタセット33内の復号化鍵レジスタ33Cには、ワーク鍵WK42が格納され、レジスタセット34内の復号化鍵レジスタ41Cには、ワーク鍵WK41が格納されて、いつでも復号化を開始できる状態(復号化開始可能状態)とすることが目的であるから、そうなるように、各ワーク鍵WK41〜WK44のシフトと、各復号化鍵レジスタ33C、32C、31Cへの格納を行う。
【0085】
図3からも明らかなように、各レジスタセットの入力端子(例えば、31F)からは、シフトするたび、常に、シフトされるワーク鍵が復号化鍵レジスタ(例えば、31C)へ供給され得る回路構成となっているため、それを取り込んで格納するか否かは、各復号化鍵レジスタの格納動作の制御だけによって決まる。
【0086】
すなわち、格納動作を行えば新たにシフトされてきたワーク鍵が格納され、行わなければすでに格納されているワーク鍵の記憶が維持される。
【0087】
このような格納動作の制御とワーク鍵のシフトを繰り返せば、ワーク鍵WK42がシフトされてきたときに復号化鍵レジスタ33Cがそれを格納し、ワーク鍵WK43がシフトされてきたときに復号化鍵レジスタ32Cがそれを格納し、ワーク鍵WK44がシフトされてきたときに復号化鍵レジスタ31Cがそれを格納することにより、前記周期の終わりには、上述した復号化開始可能状態とすることができる。
【0088】
なお、このように復号化開始可能状態とするために各復号化鍵レジスタ(例えば、31C)がワーク鍵の格納を行っている間にも、ワーク鍵レジスタ間のシフトは正常に行われ、出力端子21Cからのワーク鍵(例えば、WK41など)の出力が行われているから、前記データ撹拌部20による暗号化処理は継続することができる。
【0089】
また、平文データD1が特にサイズの小さなものでない限り、前記周期は複数回繰り返されるが、最初の1周期でのみ当該復号化開始可能状態とするための格納動作を行い、2回目以降の周期では格納したワーク鍵の記憶を維持するようにすれば、格納動作を何度も行う必要はない。
【0090】
したがって平文データD1がどのようなサイズのデータであったとしても、通信装置12(データ撹拌部20)がそれを暗号化して得た暗号化データED1の送信を終えた時点では、レジスタ部21Aは復号化開始可能状態にある。
【0091】
一方、当該暗号化データED1の応答として通信装置13から送信された暗号化データED2が通信装置12に受信されると、前記データ撹拌部20が当該暗号化データED2を復号化するための撹拌処理を実行することになるが、そのためには、ワーク鍵WK44〜WK1を、暗号化時と逆の順番で出力端子21Cから出力する必要がある。
【0092】
このような順番で出力するため、復号化を開始するときには、前記ステップS1とは異なり、レジスタセット31〜34内の内部セレクタ(例えば、31D)に復号化鍵レジスタ(例えば、31C)を選択させて、復号化鍵レジスタ内に格納されているワーク鍵(例えば、WK44)をワーク鍵レジスタ(例えば、31A)へ転送させる(P1)。
【0093】
この転送により、4つのレジスタセット31〜34内では、ワーク鍵レジスタ(例えば、31A)にワーク鍵(WK1)が格納される。
【0094】
すなわち、レジスタセット31内ではワーク鍵レジスタ31Aにワーク鍵WK44が格納され、レジスタセット32内ではワーク鍵レジスタ32Aにワーク鍵WK43が格納され、レジスタセット33内ではワーク鍵レジスタ33Aにワーク鍵WK42が格納され、レジスタセット34内ではワーク鍵レジスタ34Aにワーク鍵WK41が格納される。
【0095】
このあと、出力端子21Cからのワーク鍵(例えば、WK44)の出力、鍵拡張演算部21Bにおけるワーク鍵の生成、生成されたワーク鍵のレジスタセット34内のワーク鍵レジスタ34Aへの格納、ワーク鍵のシフトなどの動作が、暗号化時と同様に実行される。
【0096】
したがって、復号化時にも、前記ステップS2に対応するステップP2,前記ステップSNに対応するステップPN、前記ステップSN+1に対応するステップPN+1が実行され、同様な処理が復号化のために実行されることになる。
【0097】
上述したように、暗号化時と比べた場合、復号化時の処理では、使用する順番が異なるだけで、ワーク鍵の内容も数も暗号化時と同じであるから、前記周期の長さも同じである。
【0098】
ただし復号化時には、上述したように、前記セレクタ44にレジスタセット32の出力端子32Eを選択させることになる。この点は、秘密鍵PK1のサイズに依存しない。
【0099】
なお、復号化の周期においては、その終わりの部分で、前記復号化開始可能状態に対応する暗号化開始可能状態とするようにしてもよい。
【0100】
ただし前記ステップS1の転送の際、各暗号化鍵レジスタが格納していたワーク鍵の記憶を維持しておくようにすれば、復号化時には、特に、前記暗号化開始可能状態とするための処理を行う必要はない。この点、2回目以降の周期で復号化を行う場合も同様である。
【0101】
ただし1つの通信装置(ここでは、12)が複数の秘密鍵(その1つがPK1)を搭載しており、例えば、通信する相手に応じて秘密鍵を使い分ける場合や、通信相手ごとに別の鍵拡張部21を用意することがハードウエア規模の節約の観点から望ましくない場合も多いと考えられるが、そのようなケースでは、その都度、暗号化鍵レジスタや復号化鍵レジスタの内容を新たな初期鍵で上書きすることになる。
【0102】
(A−3)実施形態の効果
以上のように、本実施形態によれば、保存しておくワーク鍵の数(例えば、WK1〜WK4)が少くて済むため、記憶容量を節約することができ、通信装置(12)の低価格化やコンパクト化に寄与する。
【0103】
また、本実施形態では、前記レジスタ部(21A)が暗号化の周期が終わったときには、いつでも復号化を開始することのできる内部状態(復号化開始可能状態)にあり、さらに、復号化の周期が終わったときには、いつでも暗号化を開始することのできる内部状態(暗号化開始可能状態)にあるため、極めて処理の効率が高く、高速な復号化処理や暗号化処理を行うことが可能である。
【0104】
(B)他の実施形態
上記実施形態では、最初に4つの前記レジスタセット31〜34内の暗号化鍵レジスタ(例えば、31B)に暗号化時の初期鍵WK1〜WK4を格納することによって処理を開始したが、最初に格納する初期鍵は復号化時の初期鍵WK44〜WK41であってもかまわない。
【0105】
その場合、復号化時の初期鍵WK44〜WK41の格納先は、各レジスタセット31〜34内の復号化鍵レジスタ(例えば、31C)になることは当然である。その場合にはまた、各レジスタセット31〜34の前記入力端子(例えば、31F)に接続されるのは、復号化鍵レジスタ(例えば、31C)ではなく、暗号化鍵レジスタ(例えば、31B)になることは当然である。
【0106】
なお、上記実施形態においては、主として秘密鍵PK1のサイズが128ビットの場合について説明したが、192ビットや256ビットも含め、その他のサイズの秘密鍵に対して、本発明が適用可能なことは当然である。
【0107】
上記実施形態にかかわらず、本発明は、Rijndael暗号にも適用可能である。
【0108】
また、本発明は、AES以外のブロック暗号にも適用可能である。
【0109】
さらに、以上の説明では主としてハードウエア的に本発明を実現したが、本発明はソフトウエア的に実現することも可能である。
【0110】
ソフトウエア的に実現する場合、前記レジスタセット(例えば、31)中の各レジスタ(例えば、31B)や、演算部(例えば、39)は、専用の演算装置ではなく、通信装置(例えば、12)が搭載するCPU(中央処理装置)の内部などに設けられる演算装置、汎用レジスタ、メモリ(RAMなど)で代用される可能性が高い。
【0111】
同様のことは、排他的論理回路(例えば、43)やセレクタ(例えば、44や31Dなど)についても成立する。例えば、排他的論理和回路は、ソフトウエア的には、CPU内の汎用レジスタや演算装置などを活用した演算操作(排他的論理和)に置換され得る。
【0112】
【発明の効果】
以上に説明したように、本発明によれば、初期拡張鍵を保存しておくための記憶容量を節約することができる。
【0113】
加えて、本発明によれば、極めて処理の効率が高く、高速な復号化や暗号化を行うことが可能である。
【図面の簡単な説明】
【図1】実施形態にかかる鍵拡張部の構成例を示す概略図である。
【図2】AESアルゴリズムにおけるワーク鍵の生成順序(使用順序)を示す概略図である。
【図3】実施形態にかかる鍵拡張部で使用するレジスタセットの内部構成例を示す概略図である。
【図4】実施形態で使用する暗号処理部の構成例を示す概略図である。
【図5】実施形態にかかる通信システムの全体構成例を示す概略図である。
【図6】実施形態で使用する暗号化用鍵拡張アルゴリズムを示すプログラムリストである。
【図7】実施形態で使用する復号化用鍵拡張アルゴリズムを示すプログラムリストである。
【符号の説明】
10…通信システム、11…ネットワーク、12、13…通信装置、19…暗号処理部、20…データ撹拌部、21…鍵拡張部、21A…レジスタ部、21B…鍵拡張演算部、31〜38…レジスタセット、39〜41…演算部、31A…ワーク鍵レジスタ、31B…暗号化鍵レジスタ、31C…復号化鍵レジスタ、31D…内部セレクタ、31DC、42C〜46C…制御入力端子、42〜46…セレクタ、D1,D2…平文データ、ED1、ED2…暗号化データ、PK1…秘密鍵、WK1〜WK44…ワーク鍵。
【発明の属する技術分野】
本発明は鍵拡張装置、鍵拡張方法および鍵拡張プログラムに関し、例えば、AES(Advanced Encryption Standard)アルゴリズムの一部を構成する鍵拡張アルゴリズムを実現する場合などに適用して好適なものである。
【0002】
【従来の技術】
AESアルゴリズムは、従来使用されているDESアルゴリズムの後継暗号アルゴリズムとして2001年11月に標準化された。DESアルゴリズムは、米国政府が認定したものであるが、例えば、IPsecでは、各IPsecベンダが自社の提供するIPsec製品の暗号化アルゴリズムに関して、基本的に自由に採用、不採用を決定できるものの、ESP仕様により、DESだけは採用が義務づけられるなど、世界中で広く使用されているため、その後継暗号アルゴリズムであるAESアルゴリズムも、世界中で広く使用される可能性が高い。
【0003】
AESアルゴリズムは、DESアルゴリズムと同様、慣用暗号系(共通鍵暗号方式)に属するアルゴリズムであるため、平文のデータを暗号化して送信する送信元通信装置と、暗号化されたデータを受信して平文のデータに復号化する宛先通信装置が、同じ鍵(秘密鍵)を持ち合うことによって、暗号通信が成立する。すなわち、AESアルゴリズムでは、暗号化に用いる鍵(暗号化鍵)と、復号化に用いる鍵(復号化鍵)が同じである。
【0004】
AESアルゴリズムに関連する従来技術としては、例えば、下記の特許文献1に記載されたものがある。特許文献1には、AESアルゴリズムの実装をコンパクトな回路で実現するための技術が記載されている。
【0005】
【特許文献1】
特開2003−15522
【0006】
【発明が解決しようとする課題】
ところで、AESアルゴリズムの生成順序(使用順序)では、暗号化に際して過去の暗号化に使用したワーク鍵をもとに新たなワーク鍵を生成する操作を繰り返すことで、順次、必要なワーク鍵を生成して行く。ワーク鍵とは、実際に、前記平文データの暗号化に使用する暗号化鍵のことで、もとになる暗号化鍵(秘密鍵)に所定の処理を施すことによって必要な数だけ生成される。必要とされるワーク鍵の数は、暗号化処理の内容に応じて変わるが、DESやAESのようなブロック暗号のための通信装置は、入力される平文のデータに対して暗号化処理を実行するデータ撹拌部と、前記ワーク鍵を生成する鍵拡張部(鍵スケジューラ部)を備えているが、データ撹拌部では、暗号化処理(または、復号化処理)を実行する際、同様な撹拌処理が繰り返し実行されるが、各撹拌処理ごとに別なワーク鍵が使用されるため、必要なワーク鍵の数は、データ撹拌部における撹拌処理の繰り返し数に等しい。
【0007】
例えば、図2に示す例は秘密鍵のサイズが128ビットのケースに対応し、44個のワーク鍵WK1〜WK44が使用されている。図2において、図示しない鍵拡張部は、ワーク鍵WK4〜WK1(この場合、この4つのワーク鍵WK4〜WK1は初期鍵(暗号化時の初期鍵)でもある)をもとに、ワーク鍵WK5を生成し、ワーク鍵WK5〜WK2をもとに、ワーク鍵WK6を生成し、…、ワーク鍵WK43〜WK40をもとにワーク鍵WK44を生成する。そして、前記データ撹拌部が暗号化処理を実行する際には、ワーク鍵WK1、WK2,WK3,…,WK44の順番で使用する。
【0008】
これに対し復号化では、鍵拡張部が生成し、データ撹拌部が復号化のために使用する個々のワーク鍵の値は同じであるが、順番が逆になる。例えば、図2に示す例では、当該鍵拡張部は、ワーク鍵WK44〜WK41(この場合、この4つのワーク鍵WK44〜WK41は初期鍵(復号化時の初期鍵)でもある)をもとに、ワーク鍵WK40を生成し、ワーク鍵WK43〜WK40をもとに、ワーク鍵WK39を生成し、…、ワーク鍵WK2〜WK5をもとにワーク鍵WK1を生成する。そしてデータ撹拌部が復号化処理を実行する際には、ワーク鍵WK44,WK43,WK42,WK41,…,WK1の順番で使用する。
【0009】
このようなワーク鍵の使用形態は、静的なものと動的なものの2つに分けることができる。
【0010】
静的な使用形態では、予めワーク鍵WK1〜WK44のすべてを生成し保存しておき、必要なときに適宜、読み出して使用するのに対し、動的な使用形態では、必要なときに上述した生成順序にしたがって動的にワーク鍵を生成する。この場合、最初に生成される前記ワーク鍵WK5のもとになる4個のワーク鍵(暗号化時の初期鍵)WK4〜WK1だけは保存しておく必要がある。
【0011】
静的な使用形態の場合には、44個のワーク鍵WK1〜WK44すべてを保存しておく必要があるため、記憶容量の節約の点では不利であるが、いつでも所望のワーク鍵を読み出して使用できる利点がある。例えば、スマートカードやICタグのような、極めて小さな通信装置に保存する場合、ワーク鍵を保存しておくために消費する記憶容量が大きいことは、大きな不利益となる可能性が高い。
【0012】
一方、動的な使用形態は、保存する必要があるワーク鍵が暗号化時の初期鍵にあたる4個だけと少ないため、記憶容量の節約の点では有利であるが、例えば、復号化を開始しようとする場合、復号化時の初期鍵であるワーク鍵WK44〜WK41は、暗号化時の生成順序ではあとのほうで生成されるから、暗号化時の初期鍵(WK1〜WK4)しかない状態で復号化時の初期鍵(WK44〜WK41)を得て復号化を開始するまでに、多くの処理と時間を要する可能性がある。また、そのワーク鍵を生成したときの通信装置の内部状態によっては、生成したワーク鍵を用いて実際に処理(例えば、復号化)を行うまでに、さらに内部状態を変更するための処理を必要とする可能性がある。
【0013】
【課題を解決するための手段】
かかる課題を解決するために、第1の本発明では、所定の鍵サイズのビット長を有する共通鍵方式の秘密鍵をもとに所定数の拡張鍵からなる拡張鍵系列を生成し、暗号化時と復号化時で各拡張鍵の使用順序が逆になる鍵拡張装置において、(1)前記拡張鍵系列中の端部に位置する1または複数の拡張鍵である初期拡張鍵の供給を契機として、繰り返し同じ演算処理を実行することで、前記拡張鍵系列の各拡張鍵を生成する演算実行部と、(2)前記拡張鍵を格納する多段構成のレジスタを有するレジスタ部とを備え、(3)当該レジスタ部には、Mを正整数として、前記鍵サイズの1/Mの大きさの複数の要素レジスタから構成されるレジスタ集合を少なくともM個設け、各レジスタ集合には、(4)前記拡張鍵系列のうち暗号化時の使用順序において前記端部に属する初期拡張鍵を格納する要素暗号化鍵レジスタと、(5)前記拡張鍵系列のうち復号化時の使用順序において前記端部に属する初期拡張鍵を格納する要素復号化鍵レジスタと、(6)前記暗号化時または復号化時の使用順序にしたがって、逐次、前記初期拡張鍵または前記拡張鍵系列中で初期拡張鍵以降に位置する各拡張鍵を格納する要素シフトレジスタを備え、(7)暗号化もしくは復号化が終わったとき、または暗号化時もしくは復号化時の使用順序にしたがった拡張鍵の生成が終わったときに、復号化または暗号化のための使用順序にしたがって、複数の前記レジスタ集合内で、前記要素復号化鍵レジスタまたは要素暗号化鍵レジスタに、前記初期拡張鍵が格納された状態であることを特徴とする。
【0014】
また、第2の本発明では、所定の鍵サイズのビット長を有する共通鍵方式の秘密鍵をもとに所定数の拡張鍵からなる拡張鍵系列を生成し、暗号化時と復号化時で各拡張鍵の使用順序が逆になる鍵拡張方法において、(1)演算実行部が、前記拡張鍵系列中の端部に位置する1または複数の拡張鍵である初期拡張鍵の供給を契機として、繰り返し同じ演算処理を実行することで、前記拡張鍵系列の各拡張鍵を生成し、(2)レジスタ部に属する多段構成の各レジスタが前記拡張鍵を格納する場合、当該レジスタ部には、Mを正整数として、前記鍵サイズの1/Mの大きさの複数の要素レジスタから構成されるレジスタ集合を少なくともM個設け、各レジスタ集合には、(3)前記拡張鍵系列のうち暗号化時の使用順序において前記端部に属する初期拡張鍵を格納する要素暗号化鍵レジスタと、(4)前記拡張鍵系列のうち復号化時の使用順序において前記端部に属する初期拡張鍵を格納する要素復号化鍵レジスタと、(5)前記暗号化時または復号化時の使用順序にしたがって、逐次、前記初期拡張鍵または前記拡張鍵系列中で初期拡張鍵以降に位置する各拡張鍵を格納する要素シフトレジスタを設けておき、(6)暗号化もしくは復号化が終わったとき、または暗号化時もしくは復号化時の使用順序にしたがった拡張鍵の生成が終わったときに、復号化または暗号化のための使用順序にしたがって、複数の前記レジスタ集合内で、前記要素復号化鍵レジスタまたは要素暗号化鍵レジスタに、前記初期拡張鍵が格納された状態であることを特徴とする。
【0015】
さらに、第3の本発明では、所定の鍵サイズのビット長を有する共通鍵方式の秘密鍵をもとに所定数の拡張鍵からなる拡張鍵系列を生成し、暗号化時と復号化時で各拡張鍵の使用順序が逆になる鍵拡張プログラムにおいて、コンピュータに、(1)前記拡張鍵系列中の端部に位置する1または複数の拡張鍵である初期拡張鍵の供給を契機として、繰り返し同じ演算処理を実行することで、前記拡張鍵系列の各拡張鍵を生成する演算実行機能と、(2)前記拡張鍵を格納する多段構成のレジスタを提供するレジスタ機能とを実現させ、(3)当該レジスタ機能は、Mを正整数として、前記鍵サイズの1/Mの大きさの複数の要素レジスタから構成されるレジスタ集合を少なくともM個提供し、各レジスタ集合には、(4)前記拡張鍵系列のうち暗号化時の使用順序において前記端部に属する初期拡張鍵を格納する要素暗号化鍵レジスタと、(5)前記拡張鍵系列のうち復号化時の使用順序において前記端部に属する初期拡張鍵を格納する要素復号化鍵レジスタと、(6)前記暗号化時または復号化時の使用順序にしたがって、逐次、前記初期拡張鍵または前記拡張鍵系列中で初期拡張鍵以降に位置する各拡張鍵を格納する要素シフトレジスタを含み、(7)暗号化もしくは復号化が終わったとき、または暗号化時もしくは復号化時の使用順序にしたがった拡張鍵の生成が終わったときに、復号化または暗号化のための使用順序にしたがって、複数の前記レジスタ集合内で、前記要素復号化鍵レジスタまたは要素暗号化鍵レジスタに、前記初期拡張鍵が格納された状態であることを特徴とする。
【0016】
【発明の実施の形態】
(A)実施形態
以下、本発明にかかる鍵拡張装置、鍵拡張方法および鍵拡張プログラムを、AESに適用する場合を例に、実施形態について説明する。
【0017】
(A−1)実施形態の構成
本実施形態の通信システム10の全体構成例を図5に示す。
【0018】
図5において、通信システム10は、ネットワーク11と、通信装置12,13とを備えている。
【0019】
このうち通信装置12は、平文のデータD1を暗号化して生成した暗号化データED1を送信する暗号化機能と、暗号化データED2を受信し復号化して平文のデータD2を得る復号化機能を備えている。暗号化機能は、上述したデータ撹拌部と鍵拡張部によって実現される。この点、復号化機能も同じである。
【0020】
図4に示す暗号処理部19において、データ撹拌部20は、当該データ撹拌部に対応し、鍵拡張部21は当該鍵拡張部に対応する。
【0021】
ここで鍵拡張部21では初期鍵と呼ばれる秘密鍵(128ビット,192ビット,256ビットが存在する)からデータ撹拌部20が使用するワーク鍵を発生するが、発生するワーク鍵の数は秘密鍵のサイズに応じて、44個、55個、60個と異なるため、1つのワーク鍵のサイズが32ビットであるとすると、すべてのワーク鍵のサイズを合計した値は、秘密鍵のサイズが128ビットの時には1408(=32×44)ビット,192ビットの時には1664(=32×55)ビット、256ビットの時には1920(=32×60)ビットになる。
【0022】
鍵拡張部21が暗号化の際にワーク鍵を生成するためのアルゴリズム(暗号化用鍵拡張アルゴリズム)は、図6に示す通りであってよい。また、当該鍵拡張部21が復号化の際にワーク鍵を生成するためのアルゴリズム(復号化用鍵拡張アルゴリズム)は、図7に示す通りであってよい。
【0023】
図6、図7において、Nkは秘密鍵(後述するPK1)のサイズを4バイト(=32ビット)単位で示す値で秘密鍵のサイズが128ビットの時はNk=4であり、192ビットの時はNk=6であり、256ビットの時はNk=8である。また、Nbは演算の列数を表しNb=4である。さらに、Nrは処理の実行回数を表し、秘密鍵PK1のサイズが128ビットの時はNr=10であり、192ビットの時はNr=12であり、256ビットの時はNr=14である。
【0024】
なお、図6,図7のアルゴリズムは32ビット幅で処理されている。
【0025】
これらのアルゴリズムからも明らかなように、このアルゴリズムの拡張演算処理をfで表現すると、秘密鍵PK1のサイズが128ビットの場合、暗号化用鍵拡張アルゴリズムは次の式(1)で示すことができる。
【0026】
Wk_Key(N+4)=f(Wk_Key(N+3))(+)Wk_Key(N) …(1)
また、復号化用鍵拡張アルゴリズムは次の式(2)で示すことができる。
【0027】
Wk_Key(N−4)=f(Wk_Key(N−1))(+)Wk_Key(N) …(2)
ただし、式(1)および(2)において、(+)はビット毎の排他的論理和演算を示す。
【0028】
ネットワーク11経由で当該通信装置12と通信する通信装置13も、当該通信装置12と同様な暗号化機能と復号化機能を備えている。当該通信装置13が送信するのが、前記暗号化データED2であり、受信するのが、前記暗号化データED1である。前記通信装置12はユーザU1によって操作され、当該通信装置13はユーザU2によって操作される。ネットワーク11経由で行われる暗号化データED1,ED2のやり取りは、ユーザU1とU2のあいだのメッセージ交換に対応する。
【0029】
上述したように、AESアルゴリズムは共通鍵暗号方式に属するアルゴリズムであるため、通信装置12,13は、同じ秘密鍵PK1を持ち合っている。
【0030】
ネットワーク11は、LAN(ローカルエリアネットワーク)であってよく、インターネットなどであってもよい。
【0031】
通信装置12,13はパーソナルコンピュータなどであってもよいが、スマートカードやICタグなどであってもよい。スマートカードやICタグである場合には、暗号化データED1,ED2のやり取りは、ネットワーク11を経由しない無線通信などのローカル通信によって実現されることが多い。
【0032】
本実施形態で特徴的な構成要素である前記鍵拡張部21の内部構成例を図1に示す。
【0033】
(A−1−1)鍵拡張部の内部構成例
図1において、当該鍵拡張部21は、レジスタ部21Aと、鍵拡張演算部21Bと、出力端子21Cとを備えている。
【0034】
このうちレジスタ部21Aには、8つのレジスタセット31〜38と2つのセレクタ42,43が設けられ、鍵拡張演算部21Bには、3つの演算部39〜41と、2つの排他的論理和回路42,43と、3つのセレクタ44〜46が設けられている。
【0035】
出力端子21Cは、前記ワーク鍵WK1〜WK44を出力する端子である。前記データ撹拌部20が暗号化処理を実行するときには、WK1、WK2,WK3,WK4,…,WK43,WK44の順番で、復号化処理を行うときには、これと逆の順番で、当該出力端子21Cから各ワーク鍵が出力され、前記データ撹拌部20へ供給される。上述したようにデータ撹拌部20では、供給を受けた各ワーク鍵(例えば、WK1)を用いて、繰り返し撹拌処理を実行するが、この撹拌処理は、非線形性を付与することで、ネットワーク11上の第3者(ユーザU1,U2以外の者)が平文データ(例えば、D1)や暗号鍵(例えば、秘密鍵PK1)の内容を知ろうとして行う攻撃(解読)に対する暗号の強度(安全性)を高めるために必要なものである。
【0036】
前記レジスタ部21Aにおいて、8つのレジスタセット31〜38には、N1〜N8のセット順位が付与されている。
【0037】
すなわち、レジスタセット31のセット順位はN1であり、レジスタセット32のセット順位はN2であり、レジスタセット33のセット順位はN3であり、レジスタセット34のセット順位はN4であり、レジスタセット35のセット順位はN5であり、レジスタセット36のセット順位はN6であり、レジスタセット37のセット順位はN7であり、レジスタセット38のセット順位はN8である。
【0038】
レジスタ部21Aは全体として1つのシフトレジスタの構成を有しているが、このセット順位N1〜N8は、レジスタに格納されているデータ(ワーク鍵)がシフトされていく順番を示す。基本的にワーク鍵は、セット順位が上位のレジスタセットから下位のレジスタセットへシフトされていく。例えば、ある時点で、セット順位N8に格納されているワーク鍵に注目すると、最初は、セット順位N8のレジスタセット38からセット順位N7のレジスタセット37へシフトし、それ以降は、逐次、セット順位N7のレジスタセット37からセット順位N6のレジスタセット36へシフトし、セット順位N6のレジスタセット36からセット順位N5のレジスタセット35へシフトし、…、セット順位N3のレジスタセット33からセット順位N2のレジスタセット32へシフトし、セット順位N2のレジスタセット32からセット順位N1のレジスタセット31へシフトする。
【0039】
ただし上述したようにAESでは3通りのサイズの秘密鍵が使用され得るが、現に行おうとしている通信に使用する秘密鍵のサイズによっては、レジスタ部21A内の上位のレジスタセット(すなわち、セット順位の「N」の直後の値が大きいレジスタセット)は使用しない。
【0040】
すなわち、秘密鍵PK1のサイズが256ビットであるときには、8つのレジスタセット31〜38のすべてを使用するが、秘密鍵PK1のサイズが192ビットであるときには、上位2つのレジスタセット38,37は使用せず下位6つのレジスタセット31〜36を使用し、秘密鍵PK1のサイズが128ビットであるときには、上位4つのレジスタセット38〜35は使用せず下位4つのレジスタセット31〜34を使用する。
【0041】
本実施形態では、主として、秘密鍵PK1のサイズが128ビットである場合を想定して説明するので、レジスタセット31〜38のうち使用するのは、31〜34のみである。
【0042】
レジスタ部21A内に設けられている前記セレクタ42は、制御入力端子42Cに供給されるセレクタ制御信号(図示せず)に応じて、セレクタ42の出力端子に接続する入力端子の選択を切り替える部分である。同様に、前記セレクタ43は、制御入力端子43Cに供給されるセレクタ制御信号に応じて、セレクタ43の出力端子に接続する入力端子の選択を切り替える部分である。したがって、前記秘密鍵PK1のサイズに応じて、制御入力端子43C、42Cに供給するセレクタ制御信号を変更することになる。
【0043】
例えば、秘密鍵PK1のサイズが256ビットである場合には、セレクタ43に、レジスタセット37とレジスタセット36を接続させるような選択を行わせるとともに、セレクタ42に、レジスタセット35とレジスタセット34を接続させるような選択を行わせる。同様に、秘密鍵PK1のサイズが192ビットである場合には、セレクタ43に、前記排他的論理和回路43とレジスタセット36を接続させるような選択を行わせるとともに、セレクタ42に、レジスタセット35とレジスタセット34を接続させるような選択を行わせる。
【0044】
また、本実施形態で想定する秘密鍵PK1のサイズが128ビットである場合には、セレクタ42に、排他的論理和回路43とレジスタセット34を接続させるような選択を行わせる。この場合、有効に動作する下位4つのレジスタセット31〜34と、有効に動作しない上位4つのレジスタセット35〜38は接続されないため、セレクタ43に行わせる選択はいずれであってもかまわない。
【0045】
図1に示す他のセレクタ44,45,46の機能も当該セレクタ42,43と同様である。ただしセレクタ46は、その制御入力端子46Cに供給されるセレクタ制御信号に応じて排他的論理和回路42またはセレクタ44の出力端子のいずれかを、排他的論理和回路43に接続する部分である。また、セレクタ45は、その制御入力端子45Cに供給されるセレクタ制御信号に応じて演算部39またはセレクタ44の出力端子のいずれかを、演算部40に接続する部分である。
【0046】
さらに、セレクタ44は制御入力端子44C以外に4つの入力端子を備え、4つの入力端子のそれぞれには、前記レジスタセット32の出力端子、前記レジスタセット34の出力端子、前記レジスタセット36の出力端子、前記レジスタセット38の出力端子が接続されている。そして当該セレクタ44は、その制御入力端子44Cに供給されるセレクタ制御信号に応じて、4つのレジスタセット32,34,36,38のいずれかの出力端子を選択して、セレクタ46に接続する。
【0047】
セレクタ44による選択は、暗号化時では前記秘密鍵PK1のサイズに応じて変換するが、復号化時では、秘密鍵PK1のサイズに依存することなく一定である。
【0048】
すなわち、暗号化時において、秘密鍵PK1のサイズが128ビットのときにはレジスタセット34の出力端子を選択し、194ビットのときにはレジスタセット36の出力端子を選択し、256ビットのときにはレジスタセット38の出力端子を選択するが、復号化時においては、秘密鍵PK1のサイズにかかわらず、一貫してレジスタセット32の出力端子を選択する。
【0049】
順次、上述したワーク鍵を生成する鍵拡張演算部21B内の構成は、図6、図7に示したプログラムリストに対応している。すなわち、演算部39は、プログラムリスト中の関数RotWordに対応する演算を実行する部分で、演算部40はプログラムリスト中の関数SubWordに対応する演算を実行する部分で、演算部41はプログラムリスト中の配列Rconに対応する演算を実行する部分である。また、図6の行L10と、図7の行L50のxorに対応するのは、排他的論理和回路42であり、図6の行L20と、図7の行L60のxorに対応するのは、排他的論理和回路43である。
【0050】
さらに、図6,図7のアルゴリズムが32ビット幅で処理されたことと対応して、本実施形態の鍵拡張部21で使用するレジスタはすべて32ビット幅である。
【0051】
ただし8つのレジスタセット31〜38のうちの各レジスタセット(例えば、31)の内部には図3に示すように3つのレジスタ(例えば、31A〜31C)が含まれているから、これら3つのレジスタのそれぞれが32ビット幅の構成を有することになる。
【0052】
8つのレジスタセット31〜38はすべて同じ内部構成を有しているが、図3には、主としてレジスタセット31を示したものとしてその内部構成を説明する。
【0053】
(A−1−2)レジスタセットの内部構成例
図3において、当該レジスタセット31は、ワーク鍵レジスタ31Aと、暗号化鍵レジスタ31Bと、復号化鍵レジスタ31Cと、内部セレクタ31Dと、出力端子31Eと、入力端子31Fとを備えている。
【0054】
このうち暗号化鍵レジスタ31Bは、上述した生成順序に対応する本実施形態の生成順序で、以降のワーク鍵を生成するために必要な暗号化鍵としての最初のワーク鍵(暗号化時の初期鍵)WK1を格納するレジスタである。
【0055】
同様に、復号化鍵レジスタ31Cは、本実施形態の生成順序で、以降のワーク鍵を生成するために必要な復号化鍵としての最初のワーク鍵(復号化時の初期鍵)WK44を格納するレジスタである。
【0056】
ワーク鍵レジスタ31Aは、暗号化時においては暗号化鍵としてのワーク鍵を格納し、復号化時においては復号化鍵としてのワーク鍵を格納するレジスタである。
【0057】
上述したように、これら3つのレジスタ31A〜31Cは、すべて32ビット幅の構成を有する。
【0058】
セレクタ31Dは、前記セレクタ(例えば、42C)と同様な機能を有する部分で、制御入力端子31DCに供給される内部セレクタ制御信号(図示せず)に応じて、当該内部セレクタ31Dの3つの入力端子のうちいずれか1つを当該内部セレクタ31Dの出力端子に接続する。
【0059】
暗号化処理の開始直後であって、鍵拡張演算部21Bに前記ワーク鍵WK5を生成させるときには、内部セレクタ31Dに暗号化鍵レジスタ31Bの出力するワーク鍵を選択させ、復号化処理の開始直後であって、鍵拡張演算部21Bに前記ワーク鍵WK40を生成させるときには、内部セレクタ31Dに復号化鍵レジスタ31Cの出力するワーク鍵を選択させる。
【0060】
また、暗号化時にワーク鍵WK5を生成させたあと、または、復号化時にワーク鍵WK40を生成させたあとでは、内部セレクタ31Dには、入力端子31Fから供給されるワーク鍵を選択させる。レジスタセット31の入力端子31Fは、当該レジスタセット31の1つ上位に位置する前記レジスタセット32の出力端子32E(31Eに対応)に接続されているので、前記シフトによりレジスタセット32から出力されたワーク鍵(例えば、WK2)は、当該入力端子31Fと内部セレクタ31Dを介してワーク鍵レジスタ31Aに供給されて格納されることになる。
【0061】
このようにレジスタセットの出力端子は、通常、下位のレジスタセットの入力端子に接続されるが、当該レジスタセット31は最下位のレジスタセットであるためその出力端子31Eは、前記出力端子21Cと、前記排他的論理和回路43に接続されている。
【0062】
当該レジスタセット31内における各構成要素に対する符号の付与規則にしたがって、他のレジスタセット32〜34内の構成要素にも符号を付与するものとする。
【0063】
すなわち、レジスタセット32内のワーク鍵レジスタは32A、暗号化鍵レジスタは32B、復号化鍵レジスタは32C、内部セレクタは32D、出力端子は32E、入力端子は32Fとする。
【0064】
同様に、レジスタセット33内のワーク鍵レジスタは33A、暗号化鍵レジスタは33B、復号化鍵レジスタは33C、内部セレクタは33D、出力端子は33E、入力端子は33Fとし、レジスタセット34内のワーク鍵レジスタは34A、暗号化鍵レジスタは34B、復号化鍵レジスタは34C、内部セレクタは34D、出力端子は34E、入力端子は34Fとする。
【0065】
以下、上記のような構成を有する本実施形態の動作について説明する。この動作は、S1〜SN+1、P1〜PN+1の各ステップから構成されている。
【0066】
この動作では、レジスタ(例えば、31Bなど)に格納されたワーク鍵から次のワーク鍵を演算すことになるが、そのための演算を実行する鍵拡張演算部21Bの各演算については規格書“Federal Information Processing Standards Publication 197”に記載されている回路が構成されているとする。
【0067】
(A−2)実施形態の動作
ここでは、前記通信装置12内のデータ撹拌部20が平文データD1を暗号化して得られる暗号化データED1を送信し、その応答として、前記通信装置13から届く暗号化データED2を復号化する場合を例に取る。
【0068】
最初に当該平文データD1がデータ撹拌部20に供給される前の時点で、すでに4つの前記レジスタセット31〜34内の暗号化鍵レジスタ(例えば、31B)には、暗号化時の初期鍵である前記ワーク鍵WK1〜WK4が格納されている。
【0069】
すなわち、レジスタセット31の暗号化鍵レジスタ31Bにはワーク鍵WK1が格納され、レジスタセット32の暗号化鍵レジスタ32Bにはワーク鍵WK2が格納され、レジスタセット33の暗号化鍵レジスタ33Bにはワーク鍵WK3が格納され、レジスタセット34の暗号化鍵レジスタ34Bにはワーク鍵WK4が格納されている。
【0070】
この格納を行うためには、秘密鍵PK1から当該ワーク鍵WK1〜WK4を生成する処理を行わないとするなら、予め、例えば、通信装置12が搭載している不揮発性の記憶手段(例えば、ハードディスクやEEPROMなど)に、4つのワーク鍵WK1〜WK4を保存しておくことになる。
【0071】
なお、ここでは、秘密鍵PK1のサイズが128ビットの場合を想定しているため、上位の4つのレジスタセット35〜38は使用しない点はすでに説明した通りである。
【0072】
この状態で、レジスタセット31〜34内の内部セレクタ(例えば、31D)に暗号化鍵レジスタ(例えば、31B)を選択させて、暗号化鍵レジスタ内に格納されているワーク鍵(例えば、WK1)をワーク鍵レジスタ(例えば、31A)へ転送させる(S1)。
【0073】
この転送により、4つのレジスタセット31〜34内では、ワーク鍵レジスタ(例えば、31A)にワーク鍵(WK1)が格納される。
【0074】
すなわち、レジスタセット31内ではワーク鍵レジスタ31Aにワーク鍵WK1が格納され、レジスタセット32内ではワーク鍵レジスタ32Aにワーク鍵WK2が格納され、レジスタセット33内ではワーク鍵レジスタ33Aにワーク鍵WK3が格納され、レジスタセット34内ではワーク鍵レジスタ34Aにワーク鍵WK4が格納される。
【0075】
これによって、レジスタセット31の出力端子31Eを介して、ワーク鍵WK1が、排他的論理回路43と出力端子21Cに供給され、レジスタセット34の出力端子34Eを介してワーク鍵WK4が、セレクタ44に供給される。
【0076】
つづくステップS2では、出力端子21に供給されたワーク鍵WK1は前記データ撹拌部20に供給され、データ撹拌部20において平文データD1に対する最初の撹拌処理(暗号化処理)に利用される。ブロック暗号では、撹拌処理の対象とするデータ(ここでは、平文データD1)もブロックに分割するため、例えば、データD1が大きなサイズのファイルなどであるとすると、小さなブロックに分割され、分割後の多数のブロックのうちの最初の1つが、ここで、撹拌処理を施されることになる。以降は順次、後続のブロックが撹拌処理の対象とされ、すべてのブロックが44回撹拌処理を受けた結果が、前記暗号化データED1である。
【0077】
この最初の1ブロックに対する最初の撹拌処理が実行されるのととほぼ同時に当該ステップS2では、セレクタ44と排他的論理和回路43を介してこれらのワーク鍵WK1、WK4を受け取る鍵拡張演算部21Bが、図1の構成に応じた演算により、ワーク鍵WK5を生成する。
【0078】
次のステップS3では、このワーク鍵WK5が、前記排他的論理和回路43とセレクタ42を介してレジスタセット34に供給される。この時点では、各レジスタセット31〜34内の内部セレクタ(例えば、31D)は、選択を入力端子(例えば31F)に切り替えているため、4つのレジスタセット31〜34、特にそのなかの各ワーク鍵レジスタ31A〜34Aが、1つのシフトレジスタとして動作する状態にある。したがって、ワーク鍵WK5をレジスタセット34内のワーク鍵レジスタ34Aに格納するときには、それまでレジスタセット34内のワーク鍵レジスタ34Aに格納されていたワーク鍵WK4がシフトされてレジスタセット33内のワーク鍵レジスタ33Aに格納され、同様に、各レジスタセット間をワーク鍵WK3〜WK2がシフトして行く。
【0079】
1回のシフトが終わったときには、レジスタセット31内ではワーク鍵レジスタ31Aにワーク鍵WK2が格納され、レジスタセット32内ではワーク鍵レジスタ32Aにワーク鍵WK3が格納され、レジスタセット33内ではワーク鍵レジスタ33Aにワーク鍵WK4が格納され、レジスタセット34内ではワーク鍵レジスタ34Aにワーク鍵WK5が格納された状態となる。
【0080】
以降は、基本的にこのステップS2,S3と同様な動作が繰り返されることになるが、ここではワーク鍵の数が44個なので、前記ステップS2から、暗号化時の生成順序で44番目のワーク鍵WK44が最初に出力端子21Cから出力されるまでが、ワーク鍵WK1〜WK44の系列に関する1周期となる。したがって、ワーク鍵WK44が出力端子21Cから出力されると、再び、1番目のワーク鍵WK1が出力端子21Cから出力されるようになって次の周期が開始される。それ以降は同様な動作が繰り返される。この繰り返しの回数は、前記平文データD1のサイズが大きいほど多くなることは当然である。
【0081】
本実施形態の動作のうち最も特徴的な部分は、当該周期(前記生成順序に対応)の終わりに位置するワーク鍵WK41〜WK44が出力端子21Cから出力される区間の処理にあるので、次は、この区間の近傍の処理に注目して説明する。ここでは、ワーク鍵WK37が最初に(最初の周期に)出力端子21Cから出力される時点の前記ステップS2に対応する処理であるステップSNから説明する。
【0082】
このテップSNでは、出力端子21に供給されたワーク鍵WK37は前記データ撹拌部20に供給され、データ撹拌部20において平文データD1に対する撹拌処理(暗号化処理)に利用されるとともに、排他的論理和回路43に供給されるから、鍵拡張演算部21Bは、当該ワーク鍵WK37と、セレクタ44を介して供給されるワーク鍵WK40をもとに、ワーク鍵WK41を生成する。
【0083】
そして次のステップSN+1で、当該ワーク鍵WK41のレジスタセット34への供給と、レジスタセット31〜34での前記シフトが行われる点は、前記ステップS3と同じである。ただし、この回のシフトでは、レジスタセット34内のワーク鍵レジスタ34Aだけでなく復号化鍵レジスタ34Cにも、当該ワーク鍵WK41を格納する。これはあとで復号化処理を行う際、初期のワーク鍵として使用するための格納である。
【0084】
最終的には、レジスタセット31内の復号化鍵レジスタ31Cには、ワーク鍵WK44が格納され、レジスタセット32内の復号化鍵レジスタ32Cには、ワーク鍵WK43が格納され、レジスタセット33内の復号化鍵レジスタ33Cには、ワーク鍵WK42が格納され、レジスタセット34内の復号化鍵レジスタ41Cには、ワーク鍵WK41が格納されて、いつでも復号化を開始できる状態(復号化開始可能状態)とすることが目的であるから、そうなるように、各ワーク鍵WK41〜WK44のシフトと、各復号化鍵レジスタ33C、32C、31Cへの格納を行う。
【0085】
図3からも明らかなように、各レジスタセットの入力端子(例えば、31F)からは、シフトするたび、常に、シフトされるワーク鍵が復号化鍵レジスタ(例えば、31C)へ供給され得る回路構成となっているため、それを取り込んで格納するか否かは、各復号化鍵レジスタの格納動作の制御だけによって決まる。
【0086】
すなわち、格納動作を行えば新たにシフトされてきたワーク鍵が格納され、行わなければすでに格納されているワーク鍵の記憶が維持される。
【0087】
このような格納動作の制御とワーク鍵のシフトを繰り返せば、ワーク鍵WK42がシフトされてきたときに復号化鍵レジスタ33Cがそれを格納し、ワーク鍵WK43がシフトされてきたときに復号化鍵レジスタ32Cがそれを格納し、ワーク鍵WK44がシフトされてきたときに復号化鍵レジスタ31Cがそれを格納することにより、前記周期の終わりには、上述した復号化開始可能状態とすることができる。
【0088】
なお、このように復号化開始可能状態とするために各復号化鍵レジスタ(例えば、31C)がワーク鍵の格納を行っている間にも、ワーク鍵レジスタ間のシフトは正常に行われ、出力端子21Cからのワーク鍵(例えば、WK41など)の出力が行われているから、前記データ撹拌部20による暗号化処理は継続することができる。
【0089】
また、平文データD1が特にサイズの小さなものでない限り、前記周期は複数回繰り返されるが、最初の1周期でのみ当該復号化開始可能状態とするための格納動作を行い、2回目以降の周期では格納したワーク鍵の記憶を維持するようにすれば、格納動作を何度も行う必要はない。
【0090】
したがって平文データD1がどのようなサイズのデータであったとしても、通信装置12(データ撹拌部20)がそれを暗号化して得た暗号化データED1の送信を終えた時点では、レジスタ部21Aは復号化開始可能状態にある。
【0091】
一方、当該暗号化データED1の応答として通信装置13から送信された暗号化データED2が通信装置12に受信されると、前記データ撹拌部20が当該暗号化データED2を復号化するための撹拌処理を実行することになるが、そのためには、ワーク鍵WK44〜WK1を、暗号化時と逆の順番で出力端子21Cから出力する必要がある。
【0092】
このような順番で出力するため、復号化を開始するときには、前記ステップS1とは異なり、レジスタセット31〜34内の内部セレクタ(例えば、31D)に復号化鍵レジスタ(例えば、31C)を選択させて、復号化鍵レジスタ内に格納されているワーク鍵(例えば、WK44)をワーク鍵レジスタ(例えば、31A)へ転送させる(P1)。
【0093】
この転送により、4つのレジスタセット31〜34内では、ワーク鍵レジスタ(例えば、31A)にワーク鍵(WK1)が格納される。
【0094】
すなわち、レジスタセット31内ではワーク鍵レジスタ31Aにワーク鍵WK44が格納され、レジスタセット32内ではワーク鍵レジスタ32Aにワーク鍵WK43が格納され、レジスタセット33内ではワーク鍵レジスタ33Aにワーク鍵WK42が格納され、レジスタセット34内ではワーク鍵レジスタ34Aにワーク鍵WK41が格納される。
【0095】
このあと、出力端子21Cからのワーク鍵(例えば、WK44)の出力、鍵拡張演算部21Bにおけるワーク鍵の生成、生成されたワーク鍵のレジスタセット34内のワーク鍵レジスタ34Aへの格納、ワーク鍵のシフトなどの動作が、暗号化時と同様に実行される。
【0096】
したがって、復号化時にも、前記ステップS2に対応するステップP2,前記ステップSNに対応するステップPN、前記ステップSN+1に対応するステップPN+1が実行され、同様な処理が復号化のために実行されることになる。
【0097】
上述したように、暗号化時と比べた場合、復号化時の処理では、使用する順番が異なるだけで、ワーク鍵の内容も数も暗号化時と同じであるから、前記周期の長さも同じである。
【0098】
ただし復号化時には、上述したように、前記セレクタ44にレジスタセット32の出力端子32Eを選択させることになる。この点は、秘密鍵PK1のサイズに依存しない。
【0099】
なお、復号化の周期においては、その終わりの部分で、前記復号化開始可能状態に対応する暗号化開始可能状態とするようにしてもよい。
【0100】
ただし前記ステップS1の転送の際、各暗号化鍵レジスタが格納していたワーク鍵の記憶を維持しておくようにすれば、復号化時には、特に、前記暗号化開始可能状態とするための処理を行う必要はない。この点、2回目以降の周期で復号化を行う場合も同様である。
【0101】
ただし1つの通信装置(ここでは、12)が複数の秘密鍵(その1つがPK1)を搭載しており、例えば、通信する相手に応じて秘密鍵を使い分ける場合や、通信相手ごとに別の鍵拡張部21を用意することがハードウエア規模の節約の観点から望ましくない場合も多いと考えられるが、そのようなケースでは、その都度、暗号化鍵レジスタや復号化鍵レジスタの内容を新たな初期鍵で上書きすることになる。
【0102】
(A−3)実施形態の効果
以上のように、本実施形態によれば、保存しておくワーク鍵の数(例えば、WK1〜WK4)が少くて済むため、記憶容量を節約することができ、通信装置(12)の低価格化やコンパクト化に寄与する。
【0103】
また、本実施形態では、前記レジスタ部(21A)が暗号化の周期が終わったときには、いつでも復号化を開始することのできる内部状態(復号化開始可能状態)にあり、さらに、復号化の周期が終わったときには、いつでも暗号化を開始することのできる内部状態(暗号化開始可能状態)にあるため、極めて処理の効率が高く、高速な復号化処理や暗号化処理を行うことが可能である。
【0104】
(B)他の実施形態
上記実施形態では、最初に4つの前記レジスタセット31〜34内の暗号化鍵レジスタ(例えば、31B)に暗号化時の初期鍵WK1〜WK4を格納することによって処理を開始したが、最初に格納する初期鍵は復号化時の初期鍵WK44〜WK41であってもかまわない。
【0105】
その場合、復号化時の初期鍵WK44〜WK41の格納先は、各レジスタセット31〜34内の復号化鍵レジスタ(例えば、31C)になることは当然である。その場合にはまた、各レジスタセット31〜34の前記入力端子(例えば、31F)に接続されるのは、復号化鍵レジスタ(例えば、31C)ではなく、暗号化鍵レジスタ(例えば、31B)になることは当然である。
【0106】
なお、上記実施形態においては、主として秘密鍵PK1のサイズが128ビットの場合について説明したが、192ビットや256ビットも含め、その他のサイズの秘密鍵に対して、本発明が適用可能なことは当然である。
【0107】
上記実施形態にかかわらず、本発明は、Rijndael暗号にも適用可能である。
【0108】
また、本発明は、AES以外のブロック暗号にも適用可能である。
【0109】
さらに、以上の説明では主としてハードウエア的に本発明を実現したが、本発明はソフトウエア的に実現することも可能である。
【0110】
ソフトウエア的に実現する場合、前記レジスタセット(例えば、31)中の各レジスタ(例えば、31B)や、演算部(例えば、39)は、専用の演算装置ではなく、通信装置(例えば、12)が搭載するCPU(中央処理装置)の内部などに設けられる演算装置、汎用レジスタ、メモリ(RAMなど)で代用される可能性が高い。
【0111】
同様のことは、排他的論理回路(例えば、43)やセレクタ(例えば、44や31Dなど)についても成立する。例えば、排他的論理和回路は、ソフトウエア的には、CPU内の汎用レジスタや演算装置などを活用した演算操作(排他的論理和)に置換され得る。
【0112】
【発明の効果】
以上に説明したように、本発明によれば、初期拡張鍵を保存しておくための記憶容量を節約することができる。
【0113】
加えて、本発明によれば、極めて処理の効率が高く、高速な復号化や暗号化を行うことが可能である。
【図面の簡単な説明】
【図1】実施形態にかかる鍵拡張部の構成例を示す概略図である。
【図2】AESアルゴリズムにおけるワーク鍵の生成順序(使用順序)を示す概略図である。
【図3】実施形態にかかる鍵拡張部で使用するレジスタセットの内部構成例を示す概略図である。
【図4】実施形態で使用する暗号処理部の構成例を示す概略図である。
【図5】実施形態にかかる通信システムの全体構成例を示す概略図である。
【図6】実施形態で使用する暗号化用鍵拡張アルゴリズムを示すプログラムリストである。
【図7】実施形態で使用する復号化用鍵拡張アルゴリズムを示すプログラムリストである。
【符号の説明】
10…通信システム、11…ネットワーク、12、13…通信装置、19…暗号処理部、20…データ撹拌部、21…鍵拡張部、21A…レジスタ部、21B…鍵拡張演算部、31〜38…レジスタセット、39〜41…演算部、31A…ワーク鍵レジスタ、31B…暗号化鍵レジスタ、31C…復号化鍵レジスタ、31D…内部セレクタ、31DC、42C〜46C…制御入力端子、42〜46…セレクタ、D1,D2…平文データ、ED1、ED2…暗号化データ、PK1…秘密鍵、WK1〜WK44…ワーク鍵。
Claims (6)
- 所定の鍵サイズのビット長を有する共通鍵方式の秘密鍵をもとに所定数の拡張鍵からなる拡張鍵系列を生成し、暗号化時と復号化時で各拡張鍵の使用順序が逆になる鍵拡張装置において、
前記拡張鍵系列中の端部に位置する1または複数の拡張鍵である初期拡張鍵の供給を契機として、繰り返し同じ演算処理を実行することで、前記拡張鍵系列の各拡張鍵を生成する演算実行部と、
前記拡張鍵を格納する多段構成のレジスタを有するレジスタ部とを備え、
当該レジスタ部には、Mを正整数として、前記鍵サイズの1/Mの大きさの複数の要素レジスタから構成されるレジスタ集合を少なくともM個設け、
各レジスタ集合には、
前記拡張鍵系列のうち暗号化時の使用順序において前記端部に属する初期拡張鍵を格納する要素暗号化鍵レジスタと、
前記拡張鍵系列のうち復号化時の使用順序において前記端部に属する初期拡張鍵を格納する要素復号化鍵レジスタと、
前記暗号化時または復号化時の使用順序にしたがって、逐次、前記初期拡張鍵または前記拡張鍵系列中で初期拡張鍵以降に位置する各拡張鍵を格納する要素シフトレジスタを備え、
暗号化もしくは復号化が終わったとき、または暗号化時もしくは復号化時の使用順序にしたがった拡張鍵の生成が終わったときに、復号化または暗号化のための使用順序にしたがって、複数の前記レジスタ集合内で、前記要素復号化鍵レジスタまたは要素暗号化鍵レジスタに、前記初期拡張鍵が格納された状態であることを特徴とする鍵拡張装置。 - 請求項1の鍵拡張装置において、
前記鍵サイズの異なる複数種類の秘密鍵に対応するため、鍵サイズが最大の秘密鍵に対応する数の前記レジスタ集合を設け、
各レジスタ集合のうち、各種類の秘密鍵に関して前記端部に対応する位置のレジスタ集合の要素シフトレジスタの出力は、前記演算実行部に接続することを特徴とする鍵拡張装置。 - 所定の鍵サイズのビット長を有する共通鍵方式の秘密鍵をもとに所定数の拡張鍵からなる拡張鍵系列を生成し、暗号化時と復号化時で各拡張鍵の使用順序が逆になる鍵拡張方法において、
演算実行部が、前記拡張鍵系列中の端部に位置する1または複数の拡張鍵である初期拡張鍵の供給を契機として、繰り返し同じ演算処理を実行することで、前記拡張鍵系列の各拡張鍵を生成し、
レジスタ部に属する多段構成の各レジスタが前記拡張鍵を格納する場合、
当該レジスタ部には、Mを正整数として、前記鍵サイズの1/Mの大きさの複数の要素レジスタから構成されるレジスタ集合を少なくともM個設け、
各レジスタ集合には、
前記拡張鍵系列のうち暗号化時の使用順序において前記端部に属する初期拡張鍵を格納する要素暗号化鍵レジスタと、
前記拡張鍵系列のうち復号化時の使用順序において前記端部に属する初期拡張鍵を格納する要素復号化鍵レジスタと、
前記暗号化時または復号化時の使用順序にしたがって、逐次、前記初期拡張鍵または前記拡張鍵系列中で初期拡張鍵以降に位置する各拡張鍵を格納する要素シフトレジスタを設けておき、
暗号化もしくは復号化が終わったとき、または暗号化時もしくは復号化時の使用順序にしたがった拡張鍵の生成が終わったときに、復号化または暗号化のための使用順序にしたがって、複数の前記レジスタ集合内で、前記要素復号化鍵レジスタまたは要素暗号化鍵レジスタに、前記初期拡張鍵が格納された状態であることを特徴とする鍵拡張方法。 - 請求項3の鍵拡張方法において、
前記鍵サイズの異なる複数種類の秘密鍵に対応するため、鍵サイズが最大の秘密鍵に対応する数の前記レジスタ集合を設け、
各レジスタ集合のうち、各種類の秘密鍵に関して前記端部に対応する位置のレジスタ集合の要素シフトレジスタの出力は、前記演算実行部に接続することを特徴とする鍵拡張方法。 - 所定の鍵サイズのビット長を有する共通鍵方式の秘密鍵をもとに所定数の拡張鍵からなる拡張鍵系列を生成し、暗号化時と復号化時で各拡張鍵の使用順序が逆になる鍵拡張プログラムにおいて、コンピュータに、
前記拡張鍵系列中の端部に位置する1または複数の拡張鍵である初期拡張鍵の供給を契機として、繰り返し同じ演算処理を実行することで、前記拡張鍵系列の各拡張鍵を生成する演算実行機能と、
前記拡張鍵を格納する多段構成のレジスタを提供するレジスタ機能とを実現させ、
当該レジスタ機能は、Mを正整数として、前記鍵サイズの1/Mの大きさの複数の要素レジスタから構成されるレジスタ集合を少なくともM個提供し、
各レジスタ集合には、
前記拡張鍵系列のうち暗号化時の使用順序において前記端部に属する初期拡張鍵を格納する要素暗号化鍵レジスタと、
前記拡張鍵系列のうち復号化時の使用順序において前記端部に属する初期拡張鍵を格納する要素復号化鍵レジスタと、
前記暗号化時または復号化時の使用順序にしたがって、逐次、前記初期拡張鍵または前記拡張鍵系列中で初期拡張鍵以降に位置する各拡張鍵を格納する要素シフトレジスタを含み、
暗号化もしくは復号化が終わったとき、または暗号化時もしくは復号化時の使用順序にしたがった拡張鍵の生成が終わったときに、復号化または暗号化のための使用順序にしたがって、複数の前記レジスタ集合内で、前記要素復号化鍵レジスタまたは要素暗号化鍵レジスタに、前記初期拡張鍵が格納された状態であることを特徴とする鍵拡張プログラム。 - 請求項5の鍵拡張プログラムにおいて、
前記鍵サイズの異なる複数種類の秘密鍵に対応するため、鍵サイズが最大の秘密鍵に対応する数の前記レジスタ集合を提供し、
各レジスタ集合のうち、各種類の秘密鍵に関して前記端部に対応する位置のレジスタ集合の要素シフトレジスタの出力は、前記演算実行機能に供給することを特徴とする鍵拡張プログラム。
Priority Applications (2)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
JP2003169150A JP2005004048A (ja) | 2003-06-13 | 2003-06-13 | 鍵拡張装置、鍵拡張方法および鍵拡張プログラム |
US10/755,307 US20040252831A1 (en) | 2003-06-13 | 2004-01-13 | Key expander, key expansion method, and key expansion program |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
JP2003169150A JP2005004048A (ja) | 2003-06-13 | 2003-06-13 | 鍵拡張装置、鍵拡張方法および鍵拡張プログラム |
Publications (1)
Publication Number | Publication Date |
---|---|
JP2005004048A true JP2005004048A (ja) | 2005-01-06 |
Family
ID=33509077
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
JP2003169150A Pending JP2005004048A (ja) | 2003-06-13 | 2003-06-13 | 鍵拡張装置、鍵拡張方法および鍵拡張プログラム |
Country Status (2)
Country | Link |
---|---|
US (1) | US20040252831A1 (ja) |
JP (1) | JP2005004048A (ja) |
Cited By (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JP2010266751A (ja) * | 2009-05-15 | 2010-11-25 | Nippon Telegr & Teleph Corp <Ntt> | 暗号用拡大鍵生成回路、復号用拡大鍵生成回路、暗号用拡大鍵生成方法および復号用拡大鍵生成方法 |
Families Citing this family (16)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US7564970B2 (en) * | 2004-08-12 | 2009-07-21 | Cmla, Llc | Exponential data transform to enhance security |
US8077861B2 (en) | 2004-08-12 | 2011-12-13 | Cmla, Llc | Permutation data transform to enhance security |
US7577250B2 (en) | 2004-08-12 | 2009-08-18 | Cmla, Llc | Key derivation functions to enhance security |
US7853799B1 (en) * | 2004-06-24 | 2010-12-14 | Xilinx, Inc. | Microcontroller-configurable programmable device with downloadable decryption |
US8185751B2 (en) * | 2006-06-27 | 2012-05-22 | Emc Corporation | Achieving strong cryptographic correlation between higher level semantic units and lower level components in a secure data storage system |
CN100581101C (zh) | 2007-11-19 | 2010-01-13 | 西安西电捷通无线网络通信有限公司 | 一种基于分组密码算法的加密处理设备 |
CN100495961C (zh) * | 2007-11-19 | 2009-06-03 | 西安西电捷通无线网络通信有限公司 | 一种基于分组密码算法的加密处理方法 |
US8738926B2 (en) * | 2008-01-10 | 2014-05-27 | Intel Mobile Communications GmbH | Data processing system, method for executing a cryptographic algorithm and method for preparing execution of a cryptographic algorithm |
US20100246828A1 (en) * | 2009-03-30 | 2010-09-30 | David Johnston | Method and system of parallelized data decryption and key generation |
TWI712915B (zh) * | 2014-06-12 | 2020-12-11 | 美商密碼研究公司 | 執行一密碼編譯操作之方法,以及電腦可讀非暫時性儲存媒體 |
US10771246B2 (en) * | 2015-10-13 | 2020-09-08 | Maxim Integrated Products, Inc. | Systems and methods for stable physically unclonable functions |
MX2018010057A (es) | 2016-02-23 | 2019-01-21 | Nchain Holdings Ltd | Metodo de registro y de manejo automatico para contratos inteligentes de cumplimiento obligado por cadenas de bloques. |
JP7114469B2 (ja) | 2016-02-23 | 2022-08-08 | エヌチェーン ホールディングス リミテッド | セキュアな投票及び配布に利用されるブロックチェーンが実装された計数システム及び方法 |
WO2017145016A1 (en) | 2016-02-23 | 2017-08-31 | nChain Holdings Limited | Determining a common secret for the secure exchange of information and hierarchical, deterministic cryptographic keys |
EP3862956B1 (en) * | 2016-02-23 | 2024-01-03 | nChain Licensing AG | Secure multiparty loss resistant storage and transfer of cryptographic keys for blockchain based systems in conjunction with a wallet management system |
US11838402B2 (en) | 2019-03-13 | 2023-12-05 | The Research Foundation For The State University Of New York | Ultra low power core for lightweight encryption |
Family Cites Families (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
GB0111521D0 (en) * | 2001-05-11 | 2001-07-04 | Amphion Semiconductor Ltd | A component for generating data encryption/decryption apparatus |
JP3851115B2 (ja) * | 2001-06-28 | 2006-11-29 | 富士通株式会社 | 暗号回路 |
-
2003
- 2003-06-13 JP JP2003169150A patent/JP2005004048A/ja active Pending
-
2004
- 2004-01-13 US US10/755,307 patent/US20040252831A1/en not_active Abandoned
Cited By (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JP2010266751A (ja) * | 2009-05-15 | 2010-11-25 | Nippon Telegr & Teleph Corp <Ntt> | 暗号用拡大鍵生成回路、復号用拡大鍵生成回路、暗号用拡大鍵生成方法および復号用拡大鍵生成方法 |
Also Published As
Publication number | Publication date |
---|---|
US20040252831A1 (en) | 2004-12-16 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
JP4905000B2 (ja) | 暗号処理装置、および暗号処理方法、並びにコンピュータ・プログラム | |
JP2005004048A (ja) | 鍵拡張装置、鍵拡張方法および鍵拡張プログラム | |
US5623548A (en) | Transformation pattern generating device and encryption function device | |
JP3724399B2 (ja) | 疑似乱数生成装置またはそれを用いた暗号復号処理装置 | |
US5671284A (en) | Data encryptor having a scalable clock | |
JPH11509940A (ja) | データブロックおよび鍵を非線形的に結合する暗号方法および装置 | |
JPH1075240A (ja) | データ送信を保護する方法およびデータを暗号化または解読化する装置 | |
JPH08248879A (ja) | 2つの鍵を使用して暗号化する方法および装置 | |
WO2001082524A1 (en) | Cryptographic system for data encryption standard | |
JP2006317802A (ja) | 擬似乱数発生システム、暗号化システム及び復号化システム | |
US10419207B2 (en) | Cryptographic apparatuses and methods for encrypting and decrypting data using automata | |
WO2007029330A1 (ja) | 擬似乱数生成装置 | |
KR100800468B1 (ko) | 저전력 고속 동작을 위한 하드웨어 암호화/복호화 장치 및그 방법 | |
CN107534549B (zh) | 可读存储介质、用于数据流字块加密的方法及系统 | |
JP2002040933A (ja) | データ暗号化標準アルゴリズムを利用した暗号化装置 | |
Ghazi et al. | Robust and efficient dynamic stream cipher cryptosystem | |
KR20050087271A (ko) | 가변 키 길이를 가지는 초기 라운드 키에 대응하는 암호라운드 키와 복호 라운드 키를 선택적으로 발생하는 키스케쥴 장치 | |
KR100456599B1 (ko) | 병렬 디이에스 구조를 갖는 암호 장치 | |
KR20030051111A (ko) | AES Rijndael(라인달) 암호 알고리듬의 하드웨어 구현을위한 라운드 처리부 회로 및 온라인 라운드 키 생성 회로 | |
JP2008140104A (ja) | メモリシステム及びメモリアクセス方法 | |
WO2022029443A1 (en) | Method and apparatus for reducing the risk of successful side channel and fault injection attacks | |
Irwin et al. | Using media processors for low-memory AES implementation | |
Zelenoritskaya et al. | Possible modifications of RC4 stream cipher | |
KR20060014420A (ko) | 암호화/암호 해독용 장치, 메모리 요구량 감소 방법 및컴퓨터 프로그램 제품 | |
JP2006235440A (ja) | 半導体集積回路 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
A131 | Notification of reasons for refusal |
Free format text: JAPANESE INTERMEDIATE CODE: A131 Effective date: 20060221 |
|
A521 | Written amendment |
Free format text: JAPANESE INTERMEDIATE CODE: A523 Effective date: 20060424 |
|
A02 | Decision of refusal |
Free format text: JAPANESE INTERMEDIATE CODE: A02 Effective date: 20060523 |