JP3818263B2 - Aes暗号処理装置、aes復号処理装置、aes暗号・復号処理装置、aes暗号処理方法、aes復号処理方法、および、aes暗号・復号処理方法 - Google Patents

Aes暗号処理装置、aes復号処理装置、aes暗号・復号処理装置、aes暗号処理方法、aes復号処理方法、および、aes暗号・復号処理方法 Download PDF

Info

Publication number
JP3818263B2
JP3818263B2 JP2003018845A JP2003018845A JP3818263B2 JP 3818263 B2 JP3818263 B2 JP 3818263B2 JP 2003018845 A JP2003018845 A JP 2003018845A JP 2003018845 A JP2003018845 A JP 2003018845A JP 3818263 B2 JP3818263 B2 JP 3818263B2
Authority
JP
Japan
Prior art keywords
output
column
aes
row
operand
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.)
Expired - Fee Related
Application number
JP2003018845A
Other languages
English (en)
Other versions
JP2004233427A (ja
Inventor
恒平 撫原
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
NEC Corp
Original Assignee
NEC Corp
Priority date (The priority date 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 date listed.)
Filing date
Publication date
Application filed by NEC Corp filed Critical NEC Corp
Priority to JP2003018845A priority Critical patent/JP3818263B2/ja
Priority to US10/764,504 priority patent/US7809132B2/en
Publication of JP2004233427A publication Critical patent/JP2004233427A/ja
Application granted granted Critical
Publication of JP3818263B2 publication Critical patent/JP3818263B2/ja
Anticipated expiration legal-status Critical
Expired - Fee Related legal-status Critical Current

Links

Images

Classifications

    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L9/00Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols
    • H04L9/06Cryptographic 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/0618Block ciphers, i.e. encrypting groups of characters of a plain text message using fixed encryption transformation
    • H04L9/0631Substitution permutation network [SPN], i.e. cipher composed of a number of stages or rounds each involving linear and nonlinear transformations, e.g. AES algorithms
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/30003Arrangements for executing specific machine instructions
    • G06F9/30007Arrangements for executing specific machine instructions to perform operations on data operands
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L2209/00Additional information or applications relating to cryptographic mechanisms or cryptographic arrangements for secret or secure communication H04L9/00
    • H04L2209/12Details relating to cryptographic hardware or logic circuitry
    • H04L2209/122Hardware reduction or efficient architectures
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L2209/00Additional information or applications relating to cryptographic mechanisms or cryptographic arrangements for secret or secure communication H04L9/00
    • H04L2209/12Details relating to cryptographic hardware or logic circuitry
    • H04L2209/125Parallelization or pipelining, e.g. for accelerating processing of cryptographic operations

Landscapes

  • Engineering & Computer Science (AREA)
  • Computer Security & Cryptography (AREA)
  • Computer Networks & Wireless Communication (AREA)
  • Signal Processing (AREA)
  • Software Systems (AREA)
  • Theoretical Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Storage Device Security (AREA)

Description

【0001】
【発明の属する技術分野】
本発明は、AES暗号処理装置、AES復号処理装置、AES暗号・復号処理装置、AES暗号処理方法、AES復号処理方法、および、AES暗号・復号処理方法に関し、特に、所要テーブル容量を削減したAES暗号処理装置、AES復号処理装置、AES暗号・復号処理装置、AES暗号処理方法、AES復号処理方法、および、AES暗号・復号処理方法に関する。
【0002】
【従来の技術】
光ファイバ、ADSL,CATVなど安価なブロードバンド・インターネット・アクセス手段の普及にともない、インターネット上に暗号で保護された仮想的な通信チャネル(Virtual Private Network, VPN)を用意して高価な専用線を代替し、通信費用の削減を図る動きが加速しつつある。
【0003】
現在VPNに用いられている暗号は、56bit長の共通鍵を用いる米国標準暗号(Data Encryption Standard,DES)やその拡張である3DESである。しかし、今後は、3DESと同等の演算量でより暗号強度が強いと言われている次期米国標準暗号AES(Advanced Encryption Standard)暗号に置き換えられていくと思われる。たとえば、企業の本支店など遠隔地にあるネットワーク間をVPNで結ぶルータにAES暗号化機能を実装する方法としては、AES専用ハードウェア・アクセラレータを内蔵する、内蔵マイクロプロセッサに暗号処理専用命令を追加するなどいくつか考えられるが、いずれの場合でも、構成要素として小型かつ高速なAES処理回路が必要となる。
【0004】
以下、AES暗号の概要と従来の実装例を説明する。まず、図21〜図26を用い、米国の連邦情報処理規格(Federal Information Processing Standards Publication,FIPS)197(非特許文献1、以下、FIPS197と記す)で規定されているAESの暗号化手順を説明する。
【0005】
AESで用いられるデータ構造である「ステート」を図21に示す。AESでは、入力データを128ビット単位のブロックに区切り、128,192,256ビット長の共通鍵で暗号化する。128ビット入力は、16個のバイト(8ビット)データに分解され、4行4列の配列に格納される。この配列を「ステート」と呼ぶ。入力データに対する操作は全てこのステート上で行われる。入力ブロック中の各バイトを早い順にinからin15で表すと、図21(a)に示すように、連続したバイトは同一列に格納される。以下の説明では、ステート上の第i行j列の要素を、Si,j(0≦i,j≦3)と表す(図21(b))。
【0006】
AESの暗号化処理は非特許文献1(FIPS197,Figure5)に疑似コードで示されているが、これをフローチャート化したものを図22に示す。図22に示すように、AES暗号化では、「ラウンド(1403)」と呼ばれるひとまとまりの処理を繰り返すことで暗号化する。ラウンドの回数(Nr)は鍵長により決まり、鍵長が128,192,256ビット時のラウンドの回数はそれぞれ10,12,14回である。原則としてラウンドはSubBytes(1404,バイト置換)、ShiftRows(1405,同一行内のシフト),MixColumns(1406,同一列内の相互演算),AddRoundKey(1407,拡大鍵の加算)から構成される。ただし、第1ラウンドの前にもAddRoundKeyがあり(1402)、最終ラウンド1408にMixColumnsはない。以下単に「ラウンド」と表記するときは、最終ラウンド以外のラウンドを指すこととする。
【0007】
ラウンドを構成する各処理について説明する。SubBytes1404は、ステート上の各要素を1バイト入出力の換字テーブルにより1対1に変換する処理である。8ビット256語の換字テーブルの内容は、非特許文献1(FIPS197,Figure7)で与えられているが、数学的には、入力値のガロア体GF(2)上の逆数をとり、その結果にビット間の排他的論理和によるアフィン変換(非特許文献1(FIPS197,式(5.1)、または、式(5.2)))を施した結果を予め計算しておいたものである。以下、この換字テーブルを、非特許文献1(FIPS197,Figure7)のキャプションにならいS−boxと記す。ShiftRows1405は、同一行内のシフト処理である。第i行(0≦i≦3)の4要素をi要素左ローテイト処理する。MixColumns1406では、非特許文献1(FIPS197,式(5.6))で与えられている係数を用い、同一行内で積和演算(乗算と加算)処理を行う。AddRoundKey1407は、共通鍵から生成した拡大鍵を加算する。ここで、MixColumnsで用いる乗算と加算、AddRoundKeyで用いる加算は、ガロア体GF(2)上で8ビットの数値間に定義された演算を用いる。ガロア体GF(2)上の加算はビットごとの排他的論理和で行えるため加算器はゲート数個で構成できるが、ガロア体乗算器を構成するには数十ゲート必要である。
【0008】
ラウンドを構成する処理のうち、SubBytes1404,ShiftRows1405,MixColumns1406処理を高速化する従来の技術を説明する。これら3つの処理に注目するのは、SubBytesは、テーブル参照を多く含み、またMixColumnsは、ガロア体GF(2)上の乗算を多く含むために実装方法によっては演算量を要求すること、またShiftRowsはSubBytesと一体化して処理できることによる。一方、AddRoundKeyは単純であり独立性が高いので、別に処理しても問題がない。
【0009】
SubBytes,ShiftRows,MixColumns処理を一体化したシグナルフローを図23に示す。この図には、ステートを構成する16要素のうち、1列分4要素のラウンド処理結果を出力するためのシグナルフローを示してある。従って、ステートの全16要素(4列)について1ラウンド分の結果を得るには、図23に示したのと同等の演算を、ステート上の入出力位置をシフトしながら合計4回繰り返す必要がある。なお、図23において、SubBytes1501とShiftRowsとの処理順序は入れ替えてある。SubBytesは場所を保存したまま値を変える処理、ShiftRowsは値を保存したまま場所を変える処理なので、順序を入れ替えても同一の結果が得られる。また、ShiftRowsは、SubBytesの各入力の取得位置を指定する操作で実現されている。MixColumnsでは、各S−box出力に個別に係数を乗算1502したうえで加算1503する。係数の値は、非特許文献1(FIPS197,式(5.6))に示された通りである。ここで、GF(2)上の係数との乗算であることを明示するため、非特許文献1(FIPS197,4章)での記述にならい「・{16進数}」と表記してある。
【0010】
次に、AESラウンド処理の高速ハードウェア実装手法について説明する。
【0011】
従来の高速化手法としては、複数のS−boxを用意し並列処理することが行われてきた。たとえば、非特許文献2では、同一内容のS−boxを16個用意し、ステートの全16要素を同時に処理している。類似例では、非特許文献3でも、AESに選定されたRijndaelのデータブロック長128ビット・モードにおいては、同一内容のS−boxを16個用意し、ステート上の全16要素を同時に処理している。
【0012】
さらに、並列度を上げた例として、非特許文献4がある。非特許文献4において、McLooneらは、ステートの全16要素分、かつ128bit鍵時の全10ラウンド分のハードウェアを用意し並列処理しているが、そこから図23に対応する1ラウンド4要素分のSubBytes,ShiftRows,MixColumns処理回路を抜き出したものを図24に示す。図24に示したように、S−boxの内容を定数倍する代わりに予め係数倍した内容を格納したS−boxを係数の種類だけ用意し、ガロア体乗算器1502を不要としている。具体的には、S−box出力を{02},{03}倍する代わりに、S−boxをそのまま実装したテーブルに加え、S−boxテーブル上の各値を{02},{03}倍した値を格納したテーブルも用意している。
【0013】
このように、既存のハードウェア実装ではS−boxの容量を増やすことで並列度を上げ、高速化を図ってきた。
【0014】
次に、大容量テーブルを使ったAESラウンド処理の高速ソフトウェア実装手法について説明する。
【0015】
非特許文献5に、市販マイクロプロセッサ上のアセンブリ言語でAESを実装したソースコード例aescrypt.asmがある。ここでは、図25に示すシグナルフロー図に従った演算が行われている。
【0016】
この手法では、8ビット256語のS−box(1501,1601)の代わりに、32ビット256語の拡張S−box0,拡張S−box1,拡張S−box2,拡張S−box3を予め計算し主記憶上に保持しておく(1701)。テーブル中のすべての語について、拡張S−box0ではビット0〜7,8〜15,16〜23,24〜31に、同じインデックス位置のS−boxテーブル値をそれぞれ{02},{01},{01},{03}倍した値を格納しておく。同様にテーブル各出力の、ビット0〜7,8〜15,16〜23,24〜31に、同じインデックス位置のS−box値を、拡張S−box1ではそれぞれ{03},{02},{01},{01}倍した値を、拡張S−box2ではそれぞれ{01},{03},{02},{01}倍した値を、拡張S−box3ではそれぞれ{01},{01},{03},{02}倍した値を格納しておく。このような拡張S−box0〜3を用意すれば、4回の拡張S−box読み出し1702と、4回のGF(2)上の加算1703で図23と同等のシグナルフローが実現でき、1ラウンド1列(4要素)分のSubBytes,ShiftRows,MixColumns処理が行える。
【0017】
非特許文献5の方法(Gladmanの方法)は、1個の32ビット長レジスタに8ビット長の要素を4個パックして4並列SIMD(Single Instruction Multiple Data)演算を行うため高速である。
【0018】
最後に、AES復号化について述べる。
【0019】
AES復号化は、非特許文献1(FIPS197,Figure15)に疑似コードで示されているが、これをフローチャート化したものを図26に示す。
【0020】
ここで、InvSubBytes1804は、SubBytes1404の逆処理、InvShiftRows1805は、ShiftRows1405の逆処理、InvMixColumns1806は、MixColumns1406の逆処理である。AddRoundKey1407の逆処理はAddRoundKey自身であるが、区別のためAddRoundKey’1807と表記してある。
【0021】
復号化は、単純に暗号化の逆処理である。ただし、図26に示した復号化では、図22に示した暗号化の各処理を逆順に行うだけでなく、次に述べるように処理順序の最適化を施している。まず、InvShiftRows1805とInvSubBytes1804とを入れ替えている。InvShiftRows1805は、値を保ったまま場所を変える処理であり、InvSubBytes1804は、場所を保ったまま値を変える処理なので、順番を入れ替えても結果は同一である。
【0022】
次に、AddRoundKey’1807とInvMixColumns1806を入れ替えている。InvMixColumns1806は、線形処理なので、本来、AddRoundKey’1807の出力に、InvMixColumns1806を施すべきところ、InvMixColumns1806の出力に、AddRoundKey’1807を施しても同一の結果が得られる。
【0023】
ただし、順序を入れ替えたAddRoundKey’1807では、暗号化時と同じ拡大鍵ではなく、InvMixColumns1806を施した拡大鍵を使う必要がある。
【0024】
AES暗号化処理のフローチャート図22と復号化処理のフローチャート図26を比較すると、ラウンド内の処理は暗号化と復号化で良く似ていることがわかる。違いはSubBytes1404とInvSubBytes1804で用いる換字テーブルの内容とMixColumns1406とInvMixColumns1806で用いる係数である。InvSubBytes1804ではFIPS197,Figure14で示されている換字テーブル(以下InverseS−box)を、InvMixColumns1806ではFIPS197,式(5.10)で与えられている係数を用いる。
【0025】
AES復号化の実装を説明する。暗号化と復号化のフローチャートは似ているので、図24に示したMcLooneらの方法を復号化のうちInvSubBytes1804,InvShiftRows1805,InvMixColomns1806の高速処理に適用できる。この場合、1ラウンド1列あたりInvSboxの内容を{09},{0b},{0d},{0e}倍した4種類のテーブルを要素ごとに用意する、すなわち8ビット256語のテーブルを1列あたり16個、1ラウンド1要素あたりに換算して4個(8Kビット)使用する。これらの復号化に用いるテーブルは、暗号化とは共用できない。
【0026】
図25に示したGladmanの方法も復号化InvSubBytes1804,InvShiftRows1805,InvMixColomns1806の高速処理に適用できる。この場合、暗号化と同様、復号化でも1ラウンド1列あたり32ビット256語のテーブルを4個(32kビット)用意しなければならない。これらの復号化に用いるテーブルは、暗号化とは共用できない。
【0027】
また、ガロア体上の演算器を利用する技術としては、特許文献1記載の技術がある。
【0028】
【特許文献1】
特開2000−322280号公報
【非特許文献1】
連邦情報処理規格(Federal Information Processing Standards Publication)、FIPS197、(米国)
【非特許文献2】
清家秀律ほか、「FPGAを用いたAES暗号の試作」、電子情報通信学会技術報告、VLD2001−91,ICD2001−35,FTS2001−38,2001年11月
【非特許文献3】
Patrick R. Schaumontほか、“Unlocking the Design Secrets of a 2.29 Gb/sRijndael Processor”, Proc. 39th Design Automation Conference,講演番号41.1, June 2002
【非特許文献4】
M. McLooneほか、“Rijndael FPGA Implementation Utilizing Look−Up Tables”,IEEE Workshop on Signal ProcessingSystems, 2001年,p.349〜p.360
【非特許文献5】
Brian Gladman、ソフトウェア・アーカイブaessrc.zip、[online]、[平成15年1月10日検索]、インターネット<http://fp.gladman.plus.com/cryptography_technology/rijndael/>
【0029】
【発明が解決しようとする課題】
非特許文献2の方法では、暗号化のために1ラウンドあたり8ビット256語のテーブル16個、計32kビットを用意し、ステート上の全16要素を同時に計算している。1ラウンド1要素あたりに換算すれば2kビットのテーブルを使用している。
【0030】
非特許文献4の方法では、暗号化のために1601のようにステート1列あたり8ビット256語のテーブルを12個(24kビット)、1ラウンド1要素あたりに換算して3個(6kビット)使用している。復号化のためには8ビット256語のテーブルを16個(32kビット)、1ラウンド1要素あたりに換算して4個(8kビット)使用する。
【0031】
非特許文献5の方法では、暗号化のために、32ビット256語のテーブルを4個(32kビット)用意する必要がある。1ラウンド1要素あたりに換算すれば、8kビット使用している。復号化のためにも同じく32ビット256語のテーブルを4個(32kビット)、1ラウンド1要素あたりに換算すれば、8kビットのテーブルを用意する必要がある。
【0032】
このように、従来の技術では、処理に用いるテーブル容量を増やすことで高速化を図ってきた。しかし、テーブル容量の増加はAES演算器のハードウェア規模の増大に直結する。たとえば、非特許文献4の方法では、ガロア体乗算器を削除する替わりに、S−boxテーブルの個数を増やしているが、ガロア体乗算器は、数十ゲート規模で構成できるのに対し、8ビット256語のS−boxテーブルは、数千〜1万ゲート規模もあるため、高速化の代償としてハードウェア規模が飛躍的に増えている。しかし、高速化は重要だが、ハードウェア規模が増大するのでは実用的とはいえない。
【0033】
同様、特許文献1にも、効果的なハードウェア量削減の技術は、開示されていない。
【0034】
本発明の目的は、処理性能を保ちつつ、S−boxテーブル容量を削減した、小型かつコストパフォーマンスの良いAES暗号処理装置を実現することである。
【0035】
【課題を解決するための手段】
本発明の第1のAES暗号処理装置は、AES暗号化命令であることを示す部分、ステートの1列を格納する複数の入力レジスタの1つを指定する第1オペランド部分、出力レジスタを指定する第2オペランド部分、行を指定する即値部分を含むAES暗号化命令を実行するAES暗号処理装置であって、列指定である第1オペランド部分により、1つの前記入力レジスタを選択しステートの1列を出力する列選択手段と、即値部分にしたがい前記列選択手段により選択されたステートの1列からステートの1要素を選択する選択手段と、前記選択手段により選択された1要素を入力し1要素長の変換データに変換し出力する換字テーブルと、即値部分にしたがい複数の係数を出力する係数テーブルと、前記換字テーブルの出力である変換データと前記係数テーブルからの各係数とを乗算し、連結して出力するガロア体乗算器と、前記ガロア体乗算器の出力を第2オペランド部分で指令された出力レジスタに格納する格納手段とを有する。
【0036】
本発明の第2のAES暗号処理装置は、AES暗号化命令であることを示す部分、ステートの1列を格納する複数の入力レジスタの1つを指定する第1オペランド部分、出力レジスタを指定する第2オペランド部分、行を指定する即値部分を含むAES暗号化命令、排他的論理和演算命令を実行するAES暗号処理装置であって、列指定である第1オペランド部分により、1つの前記入力レジスタを選択しステートの1列を出力する列選択手段と、即値部分にしたがい前記列選択手段により選択されたステートの1列からステートの1要素を選択する選択手段と、前記選択手段により選択された1要素を入力し1要素長の変換データに変換し出力する変換する換字テーブルと、即値部分にしたがい複数の係数を出力する係数テーブルと、前記換字テーブルの出力である変換データと前記係数テーブルからの各係数とを乗算し、連結して出力するガロア体乗算器と、前記ガロア体乗算器の出力を第2オペランド部分で指令された出力レジスタに格納する格納手段と、排他的論理和演算を実行する演算器とを有する。
【0037】
本発明の第3のAES暗号処理装置は、前記第1または、第2のAES暗号処理装置であって、即値部分が、第0行を指定すると、係数{02},{01},{01},{03}を出力し、第1行を指定すると、係数{03},{02},{01},{01}を出力し、第2行を指定すると、係数{01},{03},{02},{01}を出力し、第3行を指定すると、係数{01},{01},{03},{02}を出力する前記係数テーブルを有する。
【0038】
本発明の第1のAES復号処理装置は、AES復号化命令であることを示す部分、ステートの1列を格納する複数の入力レジスタの1つを指定する第1オペランド部分、出力レジスタを指定する第2オペランド部分、行を指定する即値部分を含むAES暗号化命令を実行するAES暗号処理装置であって、列指定である第1オペランド部分により、1つの前記入力レジスタを選択しステートの1列を出力する列選択手段と、即値部分にしたがい前記列選択手段により選択されたステートの1列からステートの1要素を選択する選択手段と、前記選択手段により選択された1要素を入力し1要素長の変換データに変換し出力する換字テーブルと、即値部分にしたがい複数の係数を出力する係数テーブルと、前記換字テーブルの出力である変換データと前記係数テーブルからの各係数とを乗算し、連結して出力するガロア体乗算器と、前記ガロア体乗算器の出力を第2オペランド部分で指令された出力レジスタに格納する格納手段とを有する。
【0039】
本発明の第2のAES復号処理装置は、AES復号化命令であることを示す部分、ステートの1列を格納する複数の入力レジスタの1つを指定する第1オペランド部分、出力レジスタを指定する第2オペランド部分、行を指定する即値部分を含むAES復号化命令、排他的論理和演算命令を実行するAES復号処理装置であって、列指定である第1オペランド部分により、1つの前記入力レジスタを選択しステートの1列を出力する列選択手段と、即値部分にしたがい前記列選択手段により選択されたステートの1列からステートの1要素を選択する選択手段と、前記選択手段により選択された1要素を入力し1要素長の変換データに変換し出力する変換する換字テーブルと、即値部分にしたがい複数の係数を出力する係数テーブルと、前記換字テーブルの出力である変換データと前記係数テーブルからの各係数とを乗算し、連結して出力するガロア体乗算器と、前記ガロア体乗算器の出力を第2オペランド部分で指令された出力レジスタに格納する格納手段と、排他的論理和演算を実行する演算器とを有する。
【0040】
本発明の第3のAES復号処理装置は、前記第1または、第2のAES復号処理装置であって、即値部分が、第0行を指定すると、係数{0e},{09},{0d},{0b}を出力し、第1行を指定すると、係数{0b},{0e},{09},{0d}を出力し、第2行を指定すると、係数{0d},{0b},{0e},{09}を出力し、第3行を指定すると、係数{09},{0d},{0b},{0e}を出力する前記係数テーブルを有する。
【0041】
本発明の第1のAES暗号・復号処理装置は、AES暗号化命令、AES復号化命令であることを示す部分、ステートの1列を格納する複数の入力レジスタの1つを指定する第1オペランド部分、出力レジスタを指定する第2オペランド部分、行を指定する即値部分を含むAES暗号化命令、AES復号化命令を実行するAES暗号・復号処理装置であって、列指定である第1オペランド部分により、1つの前記入力レジスタを選択しステートの1列を出力する列選択手段と、即値部分にしたがい前記列選択手段により選択されたステートの1列からステートの1要素を選択する選択手段と、前記選択手段により選択された要素を入力し1要素長の逆アフィン変換データに逆アフィン変換し出力する逆アフィン変換回路と、暗号化の場合には前記選択手段の出力を選択し、復号化の場合には前記逆アフィン変換回路の出力である逆アフィン変換データを選択する第の選択手段と、前記第の選択手段の出力を暗号化・復号化用の1要素長の逆数変換データに変換し出力する逆数換字テーブルと、前記逆数換字テーブルの出力である逆数変換データをアフィン変換し1要素長のアフィン変換データを出力するアフィン変換回路と、暗号化の場合には前記アフィン変換回路の出力であるアフィン変換データを選択し、復号化の場合には前記逆数換字テーブルの出力である逆数変換データを選択する第の選択手段と、選択された要素の行に応じた係数を出力する係数テーブルと、前記第の選択手段の出力と前記係数テーブルからの各係数とを乗算するガロア体乗算器と、前記ガロア体乗算器の出力を第2オペランド部分で指令された出力レジスタに格納する格納手段とを有する。
【0042】
本発明の第2のAES暗号・復号処理装置は、AES暗号化命令、AES復号化命令であることを示す部分、ステートの1列を格納する複数の入力レジスタの1つを指定する第1オペランド部分、出力レジスタを指定する第2オペランド部分、行を指定する即値部分を含むAES暗号化命令、AES復号化命令を実行するAES暗号・復号処理装置であって、列指定である第1オペランド部分により、1つの前記入力レジスタを選択しステートの1列を出力する列選択手段と、即値部分にしたがい前記列選択手段により選択されたステートの1列からステートの1要素を選択する選択手段と、前記選択手段により選択された要素を入力し1要素長の逆アフィン変換データに逆アフィン変換し出力する逆アフィン変換回路と、暗号化の場合には前記選択手段の出力を選択し、復号化の場合には前記逆アフィン変換回路の出力である逆アフィン変換データを選択する第の選択手段と、前記第の選択手段の出力を暗号化・復号化用の1要素長の逆数変換データに変換し出力する逆数換字テーブルと、前記逆数換字テーブルの出力である逆数変換データをアフィン変換し1要素長のアフィン変換データを出力するアフィン変換回路と、暗号化の場合には前記アフィン変換回路の出力であるアフィン変換データを選択し、復号化の場合には前記逆数換字テーブルの出力である逆数変換データを選択する第の選択手段と、選択された要素の行に応じた係数を出力する係数テーブルと、前記第の選択手段の出力と前記係数テーブルからの各係数とを乗算するガロア体乗算器と、前記ガロア体乗算器の出力を第2オペランド部分で指令された出力レジスタに格納する格納手段と、排他的論理和演算を実行する演算器とを有する。
【0043】
本発明の第3のAES暗号・復号処理装置は、前記第1、または、第2のAES暗号・復号処理装置であって、前記列選択手段、前記行選択手段、前記逆アフィン変換回路、前記第2の選択手段、前記逆数換字テーブル、前記アフィン変換回路、第3の選択手段を多重化し、複数列を同時に処理する。
【0044】
本発明のAES暗号処理方法は、AES暗号化命令であることを示す部分、ステートの1列を格納する複数の入力レジスタの1つを指定する第1オペランド部分、出力レジスタを指定する第2オペランド部分、行を指定する即値部分を含むAES暗号化命令を実行するAES暗号処理方法であって、
列選択手段が、列指定である第1オペランド部分により、1つの前記入力レジスタを選択しステートの1列を出力する手順と、
行選択手段が、即値部分にしたがい前記列選択手段により選択されたステートの1列からステートの1要素を選択する手順と、
換字テーブルが、前記行選択手段により選択された1要素を入力し1要素長の変換データに変換し出力する手順と、
係数テーブルが、即値部分にしたがい複数の係数を出力する手順と、
ガロア体乗算器が、前記換字テーブルの出力である変換データと前記係数テーブルからの各係数とを乗算し、連結して出力する手順と、
格納手段が、前記ガロア体乗算器の出力を第2オペランド部分で指令された出力レジスタに格納する手順と、
を含む
【0045】
本発明のAES復号処理方法は、AES復号化命令であることを示す部分、ステートの1列を格納する複数の入力レジスタの1つを指定する第1オペランド部分、出力レジスタを指定する第2オペランド部分、行を指定する即値部分を含むAES復号化命令を実行するAES復号処理方法であって、
列選択手段が、列指定である第1オペランド部分により、1つの前記入力レジスタを選択しステートの1列を出力する手順と、
行選択手段が、即値部分にしたがい前記列選択手段により選択されたステートの1列からステートの1要素を選択する手順と、
換字テーブルが、前記行選択手段により選択された1要素を入力し1要素長の変換データに変換し出力する手順と、
係数テーブルが、即値部分にしたがい複数の係数を出力する手順と、
ガロア体乗算器が、前記換字テーブルの出力である変換データと前記係数テーブルからの各係数とを乗算し、連結して出力する手順と、
格納手段が、前記ガロア体乗算器の出力を第2オペランド部分で指令された出力レジスタに格納する手順と、
を含む
【0046】
本発明のAES暗号・復号処理方法は、AES暗号化命令、AES復号化命令であることを示す部分、ステートの1列を格納する複数の入力レジスタの1つを指定する第1オペランド部分、出力レジスタを指定する第2オペランド部分、行を指定する即値部分を含むAES暗号化命令、AES復号化命令を実行するAES暗号・復号処理方法であって、
列選択手段が、列指定である第1オペランド部分により、1つの前記入力レジスタを選択しステートの1列を出力する手順と、
行選択手段が、即値部分にしたがい前記列選択手段により選択されたステートの1列からステートの1要素を選択する手順と、
逆アフィン変換回路が、前記行選択手段により選択された要素を入力し1要素長の逆アフィン変換データに逆アフィン変換し出力する手順と、
第3の選択手段が、暗号化の場合には前記行選択手段の出力を選択し、復号化の場合には前記逆アフィン変換回路の出力である逆アフィン変換データを選択する手順と、
逆数換字テーブルが、前記第3の選択手段の出力を暗号化・復号化用の1要素長の逆数変換データに変換し出力する手順と、
アフィン変換回路が、前記逆数換字テーブルの出力である逆数変換データをアフィン変換し1要素長のアフィン変換データを出力する手順と、
第4の選択手段が、暗号化の場合には前記アフィン変換回路の出力であるアフィン変換データを選択し、復号化の場合には前記逆数換字テーブルの出力である逆数変換データを選択する手順と、
係数テーブルが、選択された要素の行に応じた係数を出力すると、
ガロア体乗算器が、前記第4の選択手段の出力と前記係数テーブルからの各係数とを乗算する手順と、
格納手段が、前記ガロア体乗算器の出力を第2オペランド部分で指令された出力レジスタに格納する手順と、
を含む
【0047】
【発明の実施の形態】
AESでは、ガロア体(Galois field,GF)上の演算を、アルゴリズムの定義に用いている。
【0048】
まず、GF(2)上の数について説明する。
【0049】
一般に、GF(p)上の元を係数とするm次の多項式は、既約多項式(irreducible polynominal)を法とする加算と乗算について体をなし、この体をGF(p)と表記する。GF(2)上の多項式は、一般に次のように書ける。
【0050】
+b+b+b+b+b+b+b(1)。
【0051】
ここで、b(0≦i≦7)は、ガロア体GF(2)上の要素なので、0か1である。式(1)は、係数のみ取り出し{b}とベクトル表現でも書ける。かっこ内部を16進表記することもある。
【0052】
GF(2)上には30個余りの既約多項式があるが、AESでは次式(2)を採用している。
【0053】
m(x)=x+x+x+x+1(2)。
【0054】
次に、AESにおけるGF(2)上の加算について説明する。
【0055】
GF(2)上の加算は、ベクトル表現された数のビットごとの排他的論理和(XOR)をとるだけでよい。すなわち、{a}と{b}との和{c}は次式(3)で表される。多項式の加算は、同次数の係数どうしを加算すればよく、GF(2)上の加算は排他的論理和(XOR)だからである。ここで、<XOR>は、排他的論理和を示す。
【0056】
=a<XOR>b(0≦i≦7)(3)。
【0057】
図13は、ガロア体GF(2)上の加算器の例を示すブロック図である。
【0058】
図13を参照すると、ハードウェアによるGF(2)上の加算器は、XORゲート8個で簡単に構成できる。通常の2進数とは異なり、桁上げ処理は不要である。
【0059】
次に、AESにおけるGF(2)上の乗算について説明する。
【0060】
図14は、ガロア体GF(2)上の2倍回路の例を示すブロック図である。
【0061】
乗算は、被乗数の2のべき乗倍と加算の組み合わせで実現する。まず、入力を2倍する方法を説明する。式(1)を2={00000010}倍することは、x倍することに等しいので、次式(5)で表せる。これは、ベクトル表現を左1bitシフトすることに等しい。
【0062】
+b+b+b+b+b+b+b(5)。
【0063】
次に、この式(5)を、式(2)で定義したm(x)に対して既約にする。b=0ならば既約であるが、b=1の場合は既約ではないので、式(5)からm(x)を減算する、すなわち、{1b}={00011011}とXORする必要がある。この一連の操作は、たとえば、図14に示した回路で行える。
【0064】
任意の数との乗算は、部分積を発生する2倍回路とANDゲート、部分積を加算する回路の組み合わせで実現できる。
【0065】
図15は、ガロア体GF(2)上のガロア体乗算器の例を示すブロック図である。
図15において、「2×」は、図14の2倍回路を示す。また、「XOR」は、図13の加算器である。実装方法にもよるが、暗号化時は{02}、{03}倍の回路が必要になる。復号化時は{09}、{0b}、{0d}、{0e}倍の回路が必要になる。
【0066】
次に、本発明の第1の実施の形態について図面を参照して詳細に説明する。
【0067】
図1は、本発明の第1の実施の形態の構成を示すブロック図である。
【0068】
図1を参照すると、本発明の第1の発明の実施の形態は、入力ステート101と、列マルチプレクサ102と、演算入力レジスタ103と、行マルチプレクサ104と、S−boxテーブル105と、係数テーブル106と、ガロア体GF(2)上のガロア体乗算器107と、演算結果レジスタ108と、ガロア体加算器109と、累算レジスタ110とから構成されるAES暗号化装置である。また、演算入力レジスタ103、行マルチプレクサ104、S−boxテーブル105、係数テーブル106、ガロア体GF(2)上のガロア体乗算器107、および、演算結果レジスタ108を含む部分をAES暗号回路111とする。
【0069】
ガロア体GF(2)上のガロア体乗算器107は、図15に示すものであり、図15のb〜bには、S−boxテーブル105の出力8ビットが入力され、a〜aには、係数テーブル106の出力2ビット(たとえば、図2の行指定0の整数1の{01}を示す2ビット“01”)が接続される。a〜aの部分の回路は、設けなくてよい。ガロア体GF(2)上のガロア体乗算器107には、図15の乗算器が4個設けられる。
【0070】
演算入力レジスタ103、演算結果レジスタ108は、遅延時間、パイプライン制御等を考慮したものであり、必ずしも必要はない。
【0071】
入力ステート101は、S0,0〜S3,3の16個の要素(データ)であり、それぞれの要素は、8ビットである。また、たとえば、入力ステート101の1列ずつが、ソフトウェア可視のレジスタに格納される。
【0072】
列マルチプレクサ102は、4列ある入力ステート101から指定された1列4要素を選択し出力する。演算入力レジスタ103は、列マルチプレクサ102の出力である1列4要素を保持する。行マルチプレクサ104は、入力レジスタ103の4要素から指定された行にある1要素(8ビット)を選択し出力する。S−boxテーブル105は、行マルチプレクサ104の出力(8ビット)をインデックスとして8ビットのデータを出力する。S−boxテーブル105は、たとえば、256語×8ビットのROM、RAM、または、組み合わせ回路等で構成される。
【0073】
S−boxテーブル105の出力は、GF(2)上のガロア体乗算器107(4個の部分乗算器を含む)に入力される。各部分乗算器には、行指定に従って、係数テーブル106から係数が供給され、GF(2)上の乗算が実行される。演算結果レジスタ108は、GF(2)上のガロア体乗算器107の出力の連結された4×8ビットのデータを格納する。ガロア体加算器109は、演算結果レジスタ108の4×8ビットの値と累算レジスタ110上の値とのGF(2)上の加算を実行する。累算レジスタ110は、ガロア体加算器109の出力(4×8ビット)を格納する。このようにして、ステート1列分のSubBytes,ShiftRows,MixColumns処理のうち1/4(1要素分)が完了する。
【0074】
図16は、図1のS−boxテーブル105の内容を示す説明図である。
【0075】
図16を参照すると、S−boxテーブル105の内容は、非特許文献1(FIPS197,Figure7)に示されているものであり、たとえば、インデックスが、{b3}であれば、内容は、{6d}である。
【0076】
図2は、図1の係数テーブル106の内容を示す説明図である。
【0077】
図2を参照すると、係数テーブル106の内容は、非特許文献1(FIPS197,式(5.6))に示される係数行列を転置したものである。
【0078】
次に、本発明の第1の実施の形態の動作について図面を参照して詳細に説明する。
【0079】
図3は、本発明の第1の実施の形態の動作を示す説明図である。
【0080】
図3を参照すると、事前に累算レジスタ110をゼロクリアしておく(図3S301)。まず、第0列、第0行を処理する。列マルチプレクサ102はステート101から第0列を選択、出力する(図3S302)。その中から行マルチプレクサ104は、第0行のS0,0を選択、出力する(図3S303)。S0,0をS−boxテーブル105により変換した結果をS’’0,0とする(図3S304)。S’’0,0を係数テーブル106の第0行の4個の出力と乗算し、連結して出力する(図3S305)。4バイト長のガロア体乗算器107の出力は、累算レジスタ110の内容に加算される(図3S306)。
【0081】
同様に、第1列第1行S1,1,第2列第2行S2,2,第3列第3行S3,3も順次処理する。列マルチプレクサ102は、入力ステート101から、それぞれ、第1,2,3列を選択、出力する。その中から、行マルチプレクサ104は、それぞれ、第1行のS1,1,第2行のS2,2,第3行のS3,3を選択、出力する。S1,1,S2,2,S3,3をそれぞれS−boxテーブル105により変換した結果をS’’1,1,S’’2,2,S’’3,3とし、それぞれ係数テーブル106の第1,2,3行の4個の出力と乗算し、連結して出力する。4バイト長のガロア体乗算器107の出力は、累算レジスタ110の内容にガロア体加算機109により加算される。ガロア体乗算器107からの第3行の出力を累算レジスタ110に加算し終わると、累算レジスタ110に、1列4要素分のSubBytes,ShiftRows,MixColumns結果が得られる(図3S307)。この得られた結果は、図25示す非特許文献5の方法(Gladmanの方法)の結果に等しい。
【0082】
本発明の第1の実施の形態の特長は、図25に示した非特許文献5(Gladman)の方法における拡張S−box1701と同等の出力を得るために必要なハードウェア量を約1/16に削減した点にある。図25に示した方法では、32ビット256語のテーブルを4種類、計32kビットのハードウェア資源が必要である。一方、図1に示した本発明の方法では、8ビット256語の1個のS−boxテーブル105(計2kビット)とガロア体乗算器107とで同等の出力が得られる。
【0083】
8ビット256語のS−boxテーブル105の規模は数千〜1万ゲートあり、これと比較して1個あたり数十ゲート規模でしかないガロア体乗算器107のコストは無視できるため、必要なハードウェア量はS−boxテーブル105の容量に比例するとしてよい。したがって、2kビットのS−boxテーブル105を使う本発明の第1の実施の形態は、32kビットのテーブルを使う非特許文献5(Gladman)の方法に比べ、1/16のハードウェア規模で同等の演算が行える効率の良い方法といえる。
【0084】
以上、本発明の第1の実施の形態によれば、AES暗号化に必要なハードウェア量を大幅に削減できることを示した。その理由は、本発明の第1の実施の形態では、拡張S−box1701の内容を全て予め計算しておく非特許文献5(Gladman)の方法とは異なり、小さなS−boxテーブル105と小規模な演算器群とを組み合わせ実行時に値を生成しているからである。
【0085】
次に、本発明の第2の実施の形態について図面を参照して詳細に説明する。
【0086】
図4は、本発明の第2の実施の形態の構成を示すブロック図である。
【0087】
図5は、AES暗号化専用命令のニーモニック表記例を示す説明図である。
【0088】
図6は、入力レジスタrs、出力レジスタrtのデータ配置を示す説明図である。
【0089】
図7は、AES暗号化命令の即値と出力との関係を示す説明図である。
【0090】
本発明は、非特許文献5(Gladman)のソフトウェア向けアルゴリズムと同等のシグナルフローを実現しているので、マイクロプロセッサのAES暗号化専用命令により本発明を利用してAES暗号の符号化、復号化の実行させることができる。本発明の第2の実施の形態は、マイクロプロセッサにAES暗号化専用命令を追加し、図1に示した本発明の第1の実施の形態を演算器として利用し、AES暗号化処理を実施するものである。
【0091】
図5に示すように、AES暗号化命令の名称は説明文中で参照する都合上、たとえば、“AES_SSM(AESSubBytes,ShiftRows,MixColumns)”とする。この命令は入力レジスタrs,出力レジスタrt,即値immの3個のオペランドをとる。入力レジスタrs、出力レジスタrtとも、32ビット長以上あり、ステートの要素を1列分4個連結して格納できるものとする。
【0092】
それぞれ、図6(a)は、入力レジスタrsのデータ配置を、図6(b)は、出力レジスタrtのデータ配置を示す。図5に示す“AES_SSM”命令は、入力レジスタrsの即値immによって指定された行の1バイトをS−boxテーブル105で変換し(S−box()と表記)、ガロア体乗算器107によるGF(2)上の乗算により{01},{02},または,{03}倍し、図7に示す順序で連結して出力レジスタrtに格納する。
【0093】
図4を参照すると、本発明の第2の実施の形態は、レジスタファイル等で構成されるソフトウェア可視の汎用レジスタr0〜汎用レジスタrn(“AES_SSM”命令のrs、rtによりr0〜rnから、入力レジスタrs、出力レジスタrtが1つずつ指定される)を含む汎用レジスタ群401と、“AES_SSM”命令コード等が格納される命令バッファ402と、デコーダ403と、補助レジスタ404と、補助レジスタ405と、補助レジスタ406と、補助レジスタ407と、補助レジスタ408と、補助レジスタ409と、XORの演算が可能な汎用演算回路410と、演算結果レジスタ411と、書き込みマルチプレクサ412と、行マルチプレクサ104と、S−boxテーブル105と、係数テーブル106と、ガロア体乗算器107と、演算結果レジスタ108とから構成される。
【0094】
点線で囲まれた部分が、図1のAES暗号回路111にほほ相当する。補助レジスタ404、補助レジスタ405、補助レジスタ406、補助レジスタ407、補助レジスタ408、補助レジスタ409、演算結果レジスタ411、演算結果レジスタ108は、パイプライン制御のために設けたものであり、必ずしも必要ない。
【0095】
それぞれ32ビットであり、入力ステート101の1列、AES暗号化命令の結果が格納される。また、汎用レジスタr0〜汎用レジスタrnは、入力レジスタrs、出力レジスタrtに割り当てられる。
【0096】
次に、本発明の実施の第2の形態の動作について図面を参照して説明する。
【0097】
図4を参照すると、命令バッファ402に格納されたAES暗号化命令がデコーダ403でデコードされ、rsにより、汎用レジスタ群401から処理される列の格納されている入力レジスタrsの1列4バイトのデータが選択され行マルチプレクサ104に入力される。行マルチプレクサ104では、デコーダ403からのimm(行指定)にしたがって1列4バイトから1バイトのデータが選択され、補助レジスタ404に格納される。また、immは、補助レジスタ405に格納される。
【0098】
S−boxテーブル105では、補助レジスタ404からの1バイトのデータにしたがい1バイトのデータが出力され、補助レジスタ407に格納される。係数テーブル106では、補助レジスタ405からの行指定にしたがい図2に示す2ビット×4ビット、合計8ビットの係数が出力され、補助レジスタ406に格納される。
【0099】
ガロア体乗算器107では、補助レジスタ407からの1バイトのデータと補助レジスタ406からの係数との乗算が実行され、8ビット×4の乗算結果が演算結果レジスタ108に格納される。演算結果レジスタ108内の8ビット×4の乗算結果は、書き込みマルチプレクサ412で選択され、デコーダ403からのrtにしたがい汎用レジスタ群401の出力レジスタrtに格納される。
【0100】
図8は、AES_SSM命令を用い、SubBytes,ShiftRows,MixColumnsを実現する命令列を示す説明図である。
【0101】
ここで、入力ステート101は、事前に、汎用レジスタ群401の汎用レジスタに1列ずつ格納されているとする。すなわち、レジスタr3にS3,3,S2,3,S1,3,S0,3が、レジスタr2にS3,2,S2,2,S1,2,S0,2が、レジスタr1にS3,1,S2,1,S1,1,S0,1が、レジスタr0にS3,0,S2,0,S1,0,S0,0が、この順に上位バイトから下位バイトに向かって格納されているとする。図8において、ビットごとの排他的論理和演算命令をXORと表記する。このとき、1ラウンド1列分のSubBytes,ShiftRows,MixColumns処理は、図8に示す命令列で処理できる。図1と比較すると、列マルチプレクサ102に対する入力ステート101の列の指定をその列を収めたレジスタ番号の指定に、ガロア体加算器109を排他的論理和演算命令に置き換えることにより、図1と同等のシグナルフローを実現している。
【0102】
AES命令と同様、排他的論理和演算命令は、命令バッファ402からデコーダ403でデコードされ、汎用レジスタ群401の2つの汎用レジスタからそれぞれ4バイトのデータが読み出され、補助レジスタ408、補助レジスタ409に格納される。汎用演算回路410で、補助レジスタ408と補助レジスタ409からのデータの排他的論理輪演算が実施され、排他的論理輪演算結果の4バイトのデータが演算結果レジスタ411に格納される。
【0103】
演算結果レジスタ411内の4バイトの排他的論理輪演算結果は、書き込みマルチプレクサ412で選択され、デコーダ403から出力にしたがい汎用レジスタ群401の1つの出力レジスタrtに格納される。
【0104】
図5に示したAES専用命令を導入すれば、AES暗号化処理は、1ラウンド1列あたり、図8に示した7命令で処理できる。すなわち、入力ステート101全体(4列)を処理しても1ラウンドあたり28命令で済む。たとえば128ビット鍵時に必要な全10ラウンド分の処理を、これまで説明を省いたAddRoundKey1407を含めて行っても計300命令程度で済む。従来の非特許文献5(Gladmanの方法)と比較すると、本発明の第2の実施の形態によれば、S−boxテーブル105の容量を1/16と削減しながら、同等の処理速度が達成できる。
【0105】
次に、本発明の第3の実施の形態について図面を参照して詳細に説明する。
【0106】
図9は、本発明の第3の実施の形態で使用する係数テーブル106の内容を示す説明図である。
【0107】
図10は、AES複号化命令の即値と出力との関係を示す説明図である。
【0108】
図17は、InverseS−boxの内容を示す説明図である。
【0109】
本発明の第3の実施の形態は、AES復号化に関するものである。これらは、図1〜図8で説明したAES暗号化処理装置、およびAES暗号化命令と同様に構成できる。
【0110】
AES復号化装置は、図1の係数テーブル106の内容を、非特許文献1(FIPS197,式(5.10))の係数行列を転置したもの(図9)に変更し、S−boxテーブル105の内容を非特許文献1(FIPS197,Figure14)に示されたInverseS−boxに変更したもの(図17)である。この変更にともない、AES暗号化装置では係数テーブル106の出力が2ビット×4組であったのに対し、AES復号化装置では係数テーブル106の出力が4ビット×4組になるので、ガロア体乗算器107の各部分乗算器は、8×4ビット構成とする必要もある。
【0111】
AES復号化命令は、図4のうち係数テーブル106の内容を図9に示した非特許文献1(FIPS197,式(5.10))の係数行列を転置したものに変更し、S−boxの内容を非特許文献1(FIPS197,Figure14)に示されたInverseS−boxに変更したものである。この変更にともない、係数テーブル106の出力が4ビット×4組になるので、ガロア体乗算器107を各8×4ビット構成とする必要もある。AES復号化命令の入出力関係を図10に示す。ここでInvS−box()はInverseS−boxテーブルによる換字を表す。
【0112】
次に、本発明の第4の実施の形態について図面を参照して詳細に説明する。
【0113】
図11は、本発明の第4の実施の形態の構成を示すブロック図である。
【0114】
AES暗号化装置とAES復号化装置は、S−boxおよび係数テーブルの内容が異なり、ガロア体乗算器107のビット幅が異なるだけなので、AES暗号化と復号化の両方が行える装置が容易に構成できる。また、AES暗号化と復号化の両方が行えるAES暗号化・復号化統合命令も容易に構成できる。
【0115】
図11を参照すると、本発明の第4の実施の形態は、図4に示したAES暗号化命令のための演算器と、図9,図10を参照して説明したAES復号化命令のための演算器を統合し、AES暗号化と復号化の双方に対応させた演算器である。詳細には、逆アフィン変換回路1101と、暗号化マルチプレクサ1102と、逆数テーブル1103と、アフィン変換回路1104と、暗号化マルチプレクサ1105と、行マルチプレクサ104と、係数テーブル106と、ガロア体乗算器107と、演算結果レジスタ108とから構成される。
【0116】
図18は、逆アフィン変換回路1101の内容を示す説明図である。
【0117】
図18を参照すると、0≦i≦7であり、bは、入力バイトの第iビット、Cは、{05}の第iビットであり、b’は、出力の第iビットである。<XOR>は、排他的論理和である。
【0118】
図19は、逆数テーブル1103の内容を示す説明図である。
【0119】
図20は、アフィン変換回路1104の内容を示す説明図である。
【0120】
図20を参照すると、0≦i≦7であり、bは、入力バイトの第iビット、Cは、{63}の第iビットであり、b’は、出力の第iビットである。<XOR>は、排他的論理和である。
【0121】
非特許文献1(FIPS197,5.1.1節)に記述されているように、暗号化で用いるS−boxテーブル105は入力値のGF(2)上の逆数に、非特許文献1(FIPS197,式(5.1))に示されるアフィン変換を施したものである。また、復号化で用いるInverseS−boxテーブルは、S−boxテーブル105の逆関数なので、入力値に、非特許文献1(FIPS197,式(5.1))に示されるアフィン変換の逆変換(以下「逆アフィン変換」)を施した後、GF(2)上の逆数をとったものである。したがって、逆数テーブル1103を1個用意し、暗号化時においては、逆数テーブル1103の出力にアフィン変換回路1104による変換を施してS−boxテーブル105と同等の出力を得ることが可能であり、復号化時においては、逆数テーブル1103の入力に逆アフィン変換回路1101による変換を施してInverseS−boxテーブルと同等の出力を得ることが可能である。
【0122】
暗号化と復号化の切り替えは、命令語の即値(imm)を1ビット増やして指定することで行える。このビットにしたがい、暗号化マルチプレクサ1102、暗号化マルチプレクサ1105により、暗号化時は逆数テーブル1103の出力にアフィン変換を、復号化時は、逆数テーブル1103の入力に逆アフィン変換を施す。また、このビットは係数テーブル106の出力を、暗号化時は図2に示した内容を、復号化時は図9に示した内容を出力するよう切り替える。
【0123】
以上、図11を参照しながら、AES暗号化および復号化で共用できる演算器を構成するため、図1、または、図4に施した変更点を説明した。図11に示す本発明の第4の実施の形態によれば、8ビット×256ワード(2kビット)のテーブル1個で、AES暗号化または復号化を4並列で処理できる。
【0124】
従来の技術で説明した非特許文献5(Gladmanの方法)では、暗号化のために32kビットのテーブルを用意する必要があったが、このテーブルは復号化とは共用できず、復号化用にも別に32kビットのテーブルを用意する必要がある。すなわち、非特許文献5(Gladmanの方法)により暗号化と復号化を行おうとすると、計64kビットのテーブルを用意する必要がある。
【0125】
一方、本発明の第4の実施の形態では、同等の演算を2kビットのテーブルで行うため、必要なテーブル容量を1/32まで削減できる。
【0126】
次に、本発明の第2〜第4の実施の形態で説明したAES暗号化・復号化命令のバリエーションについて説明する。
【0127】
AES暗号化命令では、図4において、即値が、行マルチプレクサ104、および、係数テーブル106に対し処理対象となる行番号そのものを指定するとしたが、4種類の出力を区別できるなら、図7に示した即値のビットパターンに縛られるものではない。同様の議論はAES復号化命令、AES暗号化・復号化統合命令にも適用可能である。
【0128】
AES暗号化命令が演算対象とする要素のレジスタ上のバイト位置を指定するため、図4では、AES暗号化命令の引数に即値を与えるとしたが、その代わりに命令コードの一部を用いて選択すべき行を指定することもできる。言い換えれば、扱う行別に4種類の命令を用意し、入力レジスタ番号と出力レジスタ番号のみを引数に与えてもよい。同様の議論は、AES復号化命令、AES暗号化・復号化統合命令にも適用可能である。
【0129】
図5に示したAES暗号化命令では、ロード・ストア・アーキテクチャのマイクロプロセッサを想定したため、入出力データはレジスタファイルで構成される汎用レジスタに置き、命令の引数にレジスタ番号を指定するとしたが、演算の入出力データの片方、または、両方をメモリ上に置けるマイクロプロセッサを想定し、専用命令の引数に何らかのメモリ・アドレス指定を取るよう変更しても、本発明の第2の実施例の本質に影響を与えないため、同様の効果が得られる。同様の議論はAES復号化命令、AES暗号化・復号化統合命令にも適用可能である。
【0130】
図8で示したように、AES暗号化命令の出力に対しXOR命令を発行することが多い。したがって、図4では、AES暗号化命令が、ガロア体乗算器107出力と同等の結果を生成するとしたが、累算レジスタ(図8のr5)も入力に取る3レジスタ命令とし、図1のガロア体加算器109出力と同等の結果を生成するよう変更し、高速化を図ることもできる。同様の議論はAES復号化命令、AES暗号化・復号化統合命令にも適用可能である。
【0131】
図6に示したように、AES暗号化命令、AES復号化命令、AES暗号化・復号化統合命令では、現在、一般的なレジスタ幅が32ビットのマイクロプロセッサを想定したが、レジスタ幅が32ビットよりも広いマイクロプロセッサでも、レジスタの下位32ビットのみ使用することで同様の命令を導入することができる。
【0132】
次に、本発明の第5の実施の形態について図面を参照して詳細に説明する。
【0133】
図12は、本発明の第5の実施の形態の構成を示すブロック図である。
【0134】
本発明の第5の実施の形態では、64ビット・レジスタを持つマイクロプロセッサに適用され、暗号化・復号化演算器を2重化し、レジスタの上位と下位で同時に演算することで、性能を約2倍にできる。
【0135】
図12において、64ビット長の入力レジスタ1201(汎用レジスタに割り当てられる)は、bi0〜bi7までの8要素を保持する。図11の構成をAES処理命令向けの演算器コアとして多重化し(演算器コア1202,演算器コア1203)、上位4要素をひとつの演算器コア1202へ、下位4要素をもうひとつの演算器コア1203へ入力する。演算器コア1202、演算器コア1203の出力は連結され、64ビット長の出力レジスタ1204(汎用レジスタに割り当てられる)へ格納される。
【0136】
係数テーブル106と、行、暗号化・復号化を指定する即値とは、演算器コア1202、演算器コア1203で共用できる。64ビットより幅広のレジスタを持つマイクロプロセッサでも、同様の演算器コア多重化による性能拡張が可能である。入力レジスタ1201に置く複数のステートの列は、同一ステート内の異なる列でもよいし、別のステートの列でも構わない。
【0137】
【発明の効果】
本発明の効果は、AES暗号化および復号化に必要なテーブル容量を従来に比べ削減できることである。たとえば、非特許文献5(Gladmanの方法)では、暗号化と復号化を併せると64kビットのテーブルを必要としていた。
【0138】
本発明では、2kビットのテーブル1個で暗号化、復号化の双方に対応しており、必要テーブル容量を1/32に削減できる。これはAES専用のアクセラレータや、マイクロプロセッサに専用AES命令を実装するための演算器が小面積で構成できることを示している。
【0139】
さらに、マイクロプロセッサに本発明のAES演算器コアを使ったAES処理専用命令を導入すれば外部メモリに置くS−boxテーブルは不要になる。
【0140】
従って組み込み機器など外部メモリ容量に制限がある場合でもAES暗号化機能を組み込めるようになるという利点がある。外部メモリ容量に強い制限のないハイエンド機器においても、メモリ上のテーブルをアクセスする替わりに、AES処理専用命令を使えば、キャッシュ汚染を防ぎ高速化につながるという利点がある。
【図面の簡単な説明】
【図1】本発明の第1の実施の形態の構成を示すブロック図である。
【図2】図1の係数テーブルの内容を示す説明図である。
【図3】本発明の第1の実施の形態の動作を示す説明図である。
【図4】本発明の第2の実施の形態の構成を示すブロック図である。
【図5】AES暗号化専用命令のニーモニック表記例を示す説明図である。
【図6】入力レジスタ、出力レジスタのデータ配置を示す説明図である。
【図7】AES暗号化命令の即値と出力との関係を示す説明図である。
【図8】AES_SSM命令を含む命令列を示す説明図である。
【図9】本発明の第3の実施の形態で使用する係数テーブルの内容を示す説明図である。
【図10】AES複号化命令の即値と出力との関係を示す説明図である。
【図11】本発明の第4の実施の形態の構成を示すブロック図である。
【図12】本発明の第5の実施の形態の構成を示すブロック図である。
【図13】GF(2)上の加算器の例を示すブロック図である。
【図14】GF(2)上の2倍回路の例を示すブロック図である。
【図15】GF(2)上のガロア体乗算器の例を示すブロック図である。
【図16】図1のS−boxテーブルの内容を示す説明図である。
【図17】InverseS−boxの内容を示す説明図である。
【図18】逆アフィン変換回路の内容を示す説明図である。
【図19】逆数テーブルの内容を示す説明図である。
【図20】アフィン変換回路の内容を示す説明図である。
【図21】AES暗号のデータ構造であるステートを示す説明図である。
【図22】AES暗号化の手順を示すフローチャートである。
【図23】AES暗号化のラウンド処理の一部を示すシグナルフローである。
【図24】従来の非特許文献4(McLooneら)の高速化手法を示すシグナルフローである。
【図25】非特許文献5の高速化手法を示すシグナルフローである。
【図26】AES復号化の手順を示すフローチャートである。
【符号の説明】
101 入力ステート
102 列マルチプレクサ
103 演算入力レジスタ
104 行マルチプレクサ
105 S−boxテーブル
106 係数テーブル
107 ガロア体乗算器
108 演算結果レジスタ
109 ガロア体加算器
110 累算レジスタ
111 AES暗号回路
401 汎用レジスタ群
402 命令バッファ
403 デコーダ
404 補助レジスタ
405 補助レジスタ
406 補助レジスタ
407 補助レジスタ
408 補助レジスタ
409 補助レジスタ
410 汎用演算回路
411 演算結果レジスタ
412 書き込みマルチプレクサ
1101 逆アフィン変換回路
1102 暗号化マルチプレクサ
1103 逆数テーブル
1104 アフィン変換回路
1105 暗号化マルチプレクサ
1201 入力レジスタ
1202 演算器コア
1203 演算器コア
1204 出力レジスタ

Claims (12)

  1. AES暗号化命令であることを示す部分、ステートの1列を格納する複数の入力レジスタの1つを指定する第1オペランド部分、出力レジスタを指定する第2オペランド部分、行を指定する即値部分を含むAES暗号化命令を実行するAES暗号処理装置であって、列指定である第1オペランド部分により、1つの前記入力レジスタを選択しステートの1列を出力する列選択手段と、即値部分にしたがい前記列選択手段により選択されたステートの1列からステートの1要素を選択する選択手段と、前記選択手段により選択された1要素を入力し1要素長の変換データに変換し出力する換字テーブルと、即値部分にしたがい複数の係数を出力する係数テーブルと、前記換字テーブルの出力である変換データと前記係数テーブルからの各係数とを乗算し、連結して出力するガロア体乗算器と、前記ガロア体乗算器の出力を第2オペランド部分で指令された出力レジスタに格納する格納手段とを有することを特徴とするAES暗号処理装置。
  2. AES暗号化命令であることを示す部分、ステートの1列を格納する複数の入力レジスタの1つを指定する第1オペランド部分、出力レジスタを指定する第2オペランド部分、行を指定する即値部分を含むAES暗号化命令、排他的論理和演算命令を実行するAES暗号処理装置であって、列指定である第1オペランド部分により、1つの前記入力レジスタを選択しステートの1列を出力する列選択手段と、即値部分にしたがい前記列選択手段により選択されたステートの1列からステートの1要素を選択する選択手段と、前記選択手段により選択された1要素を入力し1要素長の変換データに変換し出力する変換する換字テーブルと、即値部分にしたがい複数の係数を出力する係数テーブルと、前記換字テーブルの出力である変換データと前記係数テーブルからの各係数とを乗算し、連結して出力するガロア体乗算器と、前記ガロア体乗算器の出力を第2オペランド部分で指令された出力レジスタに格納する格納手段と、排他的論理和演算を実行する演算器とを有することを特徴とするAES暗号処理装置。
  3. 即値部分が、第0行を指定すると、係数{02},{01},{01},{03}を出力し、第1行を指定すると、係数{03},{02},{01},{01}を出力し、第2行を指定すると、係数{01},{03},{02},{01}を出力し、第3行を指定すると、係数{01},{01},{03},{02}を出力する前記係数テーブルを有することを特徴とする請求項、または、請求項記載のAES暗号処理装置。
  4. AES復号化命令であることを示す部分、ステートの1列を格納する複数の入力レジスタの1つを指定する第1オペランド部分、出力レジスタを指定する第2オペランド部分、行を指定する即値部分を含むAES暗号化命令を実行するAES暗号処理装置であって、列指定である第1オペランド部分により、1つの前記入力レジスタを選択しステートの1列を出力する列選択手段と、即値部分にしたがい前記列選択手段により選択されたステートの1列からステートの1要素を選択する選択手段と、前記選択手段により選択された1要素を入力し1要素長の変換データに変換し出力する換字テーブルと、即値部分にしたがい複数の係数を出力する係数テーブルと、前記換字テーブルの出力である変換データと前記係数テーブルからの各係数とを乗算し、連結して出力するガロア体乗算器と、前記ガロア体乗算器の出力を第2オペランド部分で指令された出力レジスタに格納する格納手段とを有することを特徴とするAES復号処理装置。
  5. AES復号化命令であることを示す部分、ステートの1列を格納する複数の入力レジスタの1つを指定する第1オペランド部分、出力レジスタを指定する第2オペランド部分、行を指定する即値部分を含むAES復号化命令、排他的論理和演算命令を実行するAES復号処理装置であって、列指定である第1オペランド部分により、1つの前記入力レジスタを選択しステートの1列を出力する列選択手段と、即値部分にしたがい前記列選択手段により選択されたステートの1列からステートの1要素を選択する選択手段と、前記選択手段により選択された1要素を入力し1要素長の変換データに変換し出力する変換する換字テーブルと、即値部分にしたがい複数の係数を出力する係数テーブルと、前記換字テーブルの出力である変換データと前記係数テーブルからの各係数とを乗算し、連結して出力するガロア体乗算器と、前記ガロア体乗算器の出力を第2オペランド部分で指令された出力レジスタに格納する格納手段と、排他的論理和演算を実行する演算器とを有することを特徴とするAES復号処理装置。
  6. 即値部分が、第0行を指定すると、係数{0e},{09},{0d},{0b}を出力し、第1行を指定すると、係数{0b},{0e},{09},{0d}を出力し、第2行を指定すると、係数{0d},{0b},{0e},{09}を出力し、第3行を指定すると、係数{09},{0d},{0b},{0e}を出力する前記係数テーブルを有することを特徴とする請求項、または、請求項記載のAES復号処理装置。
  7. AES暗号化命令、AES復号化命令であることを示す部分、ステートの1列を格納する複数の入力レジスタの1つを指定する第1オペランド部分、出力レジスタを指定する第2オペランド部分、行を指定する即値部分を含むAES暗号化命令、AES復号化命令を実行するAES暗号・復号処理装置であって、列指定である第1オペランド部分により、1つの前記入力レジスタを選択しステートの1列を出力する列選択手段と、即値部分にしたがい前記列選択手段により選択されたステートの1列からステートの1要素を選択する選択手段と、前記選択手段により選択された要素を入力し1要素長の逆アフィン変換データに逆アフィン変換し出力する逆アフィン変換回路と、暗号化の場合には前記選択手段の出力を選択し、復号化の場合には前記逆アフィン変換回路の出力である逆アフィン変換データを選択する第の選択手段と、前記第の選択手段の出力を暗号化・復号化用の1要素長の逆数変換データに変換し出力する逆数換字テーブルと、前記逆数換字テーブルの出力である逆数変換データをアフィン変換し1要素長のアフィン変換データを出力するアフィン変換回路と、暗号化の場合には前記アフィン変換回路の出力であるアフィン変換データを選択し、復号化の場合には前記逆数換字テーブルの出力である逆数変換データを選択する第の選択手段と、選択された要素の行に応じた係数を出力する係数テーブルと、前記第の選択手段の出力と前記係数テーブルからの各係数とを乗算するガロア体乗算器と、前記ガロア体乗算器の出力を第2オペランド部分で指令された出力レジスタに格納する格納手段とを有することを特徴とするAES暗号・復号処理装置。
  8. AES暗号化命令、AES復号化命令であることを示す部分、ステートの1列を格納する複数の入力レジスタの1つを指定する第1オペランド部分、出力レジスタを指定する第2オペランド部分、行を指定する即値部分を含むAES暗号化命令、AES復号化命令を実行するAES暗号・復号処理装置であって、列指定である第1オペランド部分により、1つの前記入力レジスタを選択しステートの1列を出力する列選択手段と、即値部分にしたがい前記列選択手段により選択されたステートの1列からステートの1要素を選択する選択手段と、前記選択手段により選択された要素を入力し1要素長の逆アフィン変換データに逆アフィン変換し出力する逆アフィン変換回路と、暗号化の場合には前記選択手段の出力を選択し、復号化の場合には前記逆アフィン変換回路の出力である逆アフィン変換データを選択する第の選択手段と、前記第の選択手段の出力を暗号化・復号化用の1要素長の逆数変換データに変換し出力する逆数換字テーブルと、前記逆数換字テーブルの出力である逆数変換データをアフィン変換し1要素長のアフィン変換データを出力するアフィン変換回路と、暗号化の場合には前記アフィン変換回路の出力であるアフィン変換データを選択し、復号化の場合には前記逆数換字テーブルの出力である逆数変換データを選択する第の選択手段と、選択された要素の行に応じた係数を出力する係数テーブルと、前記第の選択手段の出力と前記係数テーブルからの各係数とを乗算するガロア体乗算器と、前記ガロア体乗算器の出力を第2オペランド部分で指令された出力レジスタに格納する格納手段と、排他的論理和演算を実行する演算器とを有することを特徴とするAES暗号・復号処理装置。
  9. 前記列選択手段、前記行選択手段、前記逆アフィン変換回路、前記第2の選択手段、前記逆数換字テーブル、前記アフィン変換回路、第3の選択手段を多重化し、複数列を同時に処理することを特徴とする請求項、または、請求項記載のAES暗号・復号処理装置。
  10. AES暗号化命令であることを示す部分、ステートの1列を格納する複数の入力レジスタの1つを指定する第1オペランド部分、出力レジスタを指定する第2オペランド部分、行を指定する即値部分を含むAES暗号化命令を実行するAES暗号処理方法であって、
    列選択手段が、列指定である第1オペランド部分により、1つの前記入力レジスタを選択しステートの1列を出力する手順と、
    行選択手段が、即値部分にしたがい前記列選択手段により選択されたステートの1列からステートの1要素を選択する手順と、
    換字テーブルが、前記行選択手段により選択された1要素を入力し1要素長の変換データに変換し出力する手順と、
    係数テーブルが、即値部分にしたがい複数の係数を出力する手順と、
    ガロア体乗算器が、前記換字テーブルの出力である変換データと前記係数テーブルからの各係数とを乗算し、連結して出力する手順と、
    格納手段が、前記ガロア体乗算器の出力を第2オペランド部分で指令された出力レジスタに格納する手順と、
    を含むことを特徴とするAES暗号処理方法。
  11. AES復号化命令であることを示す部分、ステートの1列を格納する複数の入力レジスタの1つを指定する第1オペランド部分、出力レジスタを指定する第2オペランド部分、行を指定する即値部分を含むAES復号化命令を実行するAES復号処理方法であって、
    列選択手段が、列指定である第1オペランド部分により、1つの前記入力レジスタを選択しステートの1列を出力する手順と、
    行選択手段が、即値部分にしたがい前記列選択手段により選択されたステートの1列からステートの1要素を選択する手順と、
    換字テーブルが、前記行選択手段により選択された1要素を入力し1要素長の変換データに変換し出力する手順と、
    係数テーブルが、即値部分にしたがい複数の係数を出力する手順と、
    ガロア体乗算器が、前記換字テーブルの出力である変換データと前記係数テーブルからの各係数とを乗算し、連結して出力する手順と、
    格納手段が、前記ガロア体乗算器の出力を第2オペランド部分で指令された出力レジスタに格納する手順と、
    を含むことを特徴とするAES復号処理方法。
  12. AES暗号化命令、AES復号化命令であることを示す部分、ステートの1列を格納する複数の入力レジスタの1つを指定する第1オペランド部分、出力レジスタを指定する第2オペランド部分、行を指定する即値部分を含むAES暗号化命令、AES復号化命令を実行するAES暗号・復号処理方法であって、
    列選択手段が、列指定である第1オペランド部分により、1つの前記入力レジスタを選択しステートの1列を出力する手順と、
    行選択手段が、即値部分にしたがい前記列選択手段により選択されたステートの1列からステートの1要素を選択する手順と、
    逆アフィン変換回路が、前記行選択手段により選択された要素を入力し1要素長の逆アフィン変換データに逆アフィン変換し出力する手順と、
    第3の選択手段が、暗号化の場合には前記行選択手段の出力を選択し、復号化の場合には前記逆アフィン変換回路の出力である逆アフィン変換データを選択する手順と、
    逆数換字テーブルが、前記第3の選択手段の出力を暗号化・復号化用の1要素長の逆数変換データに変換し出力する手順と、
    アフィン変換回路が、前記逆数換字テーブルの出力である逆数変換データをアフィン変換し1要素長のアフィン変換データを出力する手順と、
    第4の選択手段が、暗号化の場合には前記アフィン変換回路の出力であるアフィン変換データを選択し、復号化の場合には前記逆数換字テーブルの出力である逆数変換データを選 択する手順と、
    係数テーブルが、選択された要素の行に応じた係数を出力すると、
    ガロア体乗算器が、前記第4の選択手段の出力と前記係数テーブルからの各係数とを乗算する手順と、
    格納手段が、前記ガロア体乗算器の出力を第2オペランド部分で指令された出力レジスタに格納する手順と、
    を含むことを特徴とするAES暗号・復号処理方法。
JP2003018845A 2003-01-28 2003-01-28 Aes暗号処理装置、aes復号処理装置、aes暗号・復号処理装置、aes暗号処理方法、aes復号処理方法、および、aes暗号・復号処理方法 Expired - Fee Related JP3818263B2 (ja)

Priority Applications (2)

Application Number Priority Date Filing Date Title
JP2003018845A JP3818263B2 (ja) 2003-01-28 2003-01-28 Aes暗号処理装置、aes復号処理装置、aes暗号・復号処理装置、aes暗号処理方法、aes復号処理方法、および、aes暗号・復号処理方法
US10/764,504 US7809132B2 (en) 2003-01-28 2004-01-27 Implementations of AES algorithm for reducing hardware with improved efficiency

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
JP2003018845A JP3818263B2 (ja) 2003-01-28 2003-01-28 Aes暗号処理装置、aes復号処理装置、aes暗号・復号処理装置、aes暗号処理方法、aes復号処理方法、および、aes暗号・復号処理方法

Publications (2)

Publication Number Publication Date
JP2004233427A JP2004233427A (ja) 2004-08-19
JP3818263B2 true JP3818263B2 (ja) 2006-09-06

Family

ID=32948870

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2003018845A Expired - Fee Related JP3818263B2 (ja) 2003-01-28 2003-01-28 Aes暗号処理装置、aes復号処理装置、aes暗号・復号処理装置、aes暗号処理方法、aes復号処理方法、および、aes暗号・復号処理方法

Country Status (2)

Country Link
US (1) US7809132B2 (ja)
JP (1) JP3818263B2 (ja)

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
WO2014003117A1 (ja) * 2012-06-28 2014-01-03 日本電気株式会社 暗号化装置、暗号化方法およびプログラム

Families Citing this family (46)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20030068038A1 (en) * 2001-09-28 2003-04-10 Bedros Hanounik Method and apparatus for encrypting data
JP2006527865A (ja) * 2003-06-16 2006-12-07 エレクトロニクス アンド テレコミュニケーションズ リサーチ インスチチュート ラインドールブロック暗号化装置、及びその暗号化並びに復号化方法
WO2005107138A1 (fr) * 2004-03-29 2005-11-10 Stmicroelectronics Sa Processeur d'execution d'un algorithme de type aes
US20060002548A1 (en) * 2004-06-04 2006-01-05 Chu Hon F Method and system for implementing substitution boxes (S-boxes) for advanced encryption standard (AES)
US7496196B2 (en) * 2004-06-30 2009-02-24 Intel Corporation Method apparatus and system of performing one or more encryption and/or decryption operations
US20060013387A1 (en) * 2004-07-14 2006-01-19 Ruei-Shiang Suen Method and system for implementing KASUMI algorithm for accelerating cryptography in GSM/GPRS/EDGE compliant handsets
US7715555B2 (en) * 2004-09-07 2010-05-11 Broadcom Corporation Method and system for extending advanced encryption standard (AES) operations for enhanced security
US7783037B1 (en) * 2004-09-20 2010-08-24 Globalfoundries Inc. Multi-gigabit per second computing of the rijndael inverse cipher
US7532721B2 (en) * 2004-10-28 2009-05-12 Cisco Technology, Inc. Implementation of a switch-box using a subfield method
US7571490B2 (en) * 2004-11-01 2009-08-04 Oracle International Corporation Method and apparatus for protecting data from unauthorized modification
US8677123B1 (en) 2005-05-26 2014-03-18 Trustwave Holdings, Inc. Method for accelerating security and management operations on data segments
US8050401B2 (en) * 2005-09-27 2011-11-01 The Boeing Company High speed configurable cryptographic architecture
US9860055B2 (en) * 2006-03-22 2018-01-02 Synopsys, Inc. Flexible architecture for processing of large numbers and method therefor
US7746350B1 (en) * 2006-06-15 2010-06-29 Nvidia Corporation Cryptographic computations on general purpose graphics processing units
JP4905000B2 (ja) 2006-09-01 2012-03-28 ソニー株式会社 暗号処理装置、および暗号処理方法、並びにコンピュータ・プログラム
JP4809736B2 (ja) * 2006-09-05 2011-11-09 日本放送協会 データベース管理装置及びデータベース管理プログラム
US8301905B2 (en) * 2006-09-08 2012-10-30 Inside Secure System and method for encrypting data
US8422668B1 (en) * 2006-12-15 2013-04-16 Spansion Llc Table lookup operation on masked data
US7949130B2 (en) 2006-12-28 2011-05-24 Intel Corporation Architecture and instruction set for implementing advanced encryption standard (AES)
US8538012B2 (en) * 2007-03-14 2013-09-17 Intel Corporation Performing AES encryption or decryption in multiple modes with a single instruction
US8538015B2 (en) 2007-03-28 2013-09-17 Intel Corporation Flexible architecture and instruction for advanced encryption standard (AES)
US8346839B2 (en) * 2007-03-30 2013-01-01 Intel Corporation Efficient advanced encryption standard (AES) datapath using hybrid rijndael S-box
JP4749383B2 (ja) * 2007-05-17 2011-08-17 三菱電機株式会社 符号化装置、暗号化装置及びプログラム
KR100969961B1 (ko) * 2007-12-20 2010-07-15 한국전자통신연구원 블록 암호 아리아의 치환 연산 장치 및 방법
US8923510B2 (en) * 2007-12-28 2014-12-30 Intel Corporation Method and apparatus for efficiently implementing the advanced encryption standard
US20090245510A1 (en) * 2008-03-25 2009-10-01 Mathieu Ciet Block cipher with security intrinsic aspects
KR100992589B1 (ko) 2008-09-08 2010-11-08 단국대학교 산학협력단 암호화 패드를 재사용할 수 있는 데이터 암호화 방법 및 그장치
KR100949538B1 (ko) * 2008-09-09 2010-03-25 한국전자통신연구원 Aes 라인달 알고리즘을 이용하는 암호화 및 복호화 장치와 그 방법
US8737604B2 (en) * 2011-05-09 2014-05-27 Advanced Micro Devices, Inc. Processor with architecture implementing the advanced encryption standard
KR101601684B1 (ko) * 2011-05-18 2016-03-09 한국전자통신연구원 부채널 공격에 대응하는 대칭키 암호 알고리즘 구현 방법
US20130016825A1 (en) 2011-07-12 2013-01-17 Dsp Group Ltd. Method and appratus for advanced encryption standard
JP2013127547A (ja) * 2011-12-19 2013-06-27 Kddi Corp クロック制御型ストリーム暗号の暗号化装置、クロック制御型ストリーム暗号の復号化装置、クロック制御型ストリーム暗号の暗号化方法、クロック制御型ストリーム暗号の復号化方法およびプログラム
JP5822757B2 (ja) * 2012-02-28 2015-11-24 Kddi株式会社 ストリーム暗号の暗号化装置、ストリーム暗号の復号化装置、ストリーム暗号の暗号化方法、ストリーム暗号の復号化方法およびプログラム
EA021803B1 (ru) * 2012-04-25 2015-09-30 Открытое Акционерное Общество "Информационные Технологии И Коммуникационные Системы" (Оао "Инфотекс") Способ шифрования данных для вычислительных платформ с simd-архитектурой
US9778932B2 (en) 2013-01-23 2017-10-03 International Business Machines Corporation Vector generate mask instruction
US9513906B2 (en) 2013-01-23 2016-12-06 International Business Machines Corporation Vector checksum instruction
US9715385B2 (en) 2013-01-23 2017-07-25 International Business Machines Corporation Vector exception code
US9471308B2 (en) 2013-01-23 2016-10-18 International Business Machines Corporation Vector floating point test data class immediate instruction
US9823924B2 (en) 2013-01-23 2017-11-21 International Business Machines Corporation Vector element rotate and insert under mask instruction
US9804840B2 (en) 2013-01-23 2017-10-31 International Business Machines Corporation Vector Galois Field Multiply Sum and Accumulate instruction
KR102133200B1 (ko) * 2013-08-08 2020-07-13 서울대학교산학협력단 데이터의 보호 방법 및 장치
US9843441B2 (en) * 2013-09-24 2017-12-12 Intel Corporation Compact, low power advanced encryption standard circuit
US9740456B2 (en) * 2015-04-23 2017-08-22 Altera Corporation Circuitry and methods for implementing Galois-field reduction
CN113728583B (zh) * 2019-04-23 2022-12-02 量子熵有限公司 数字系统的增强的随机性
JP7383985B2 (ja) * 2019-10-30 2023-11-21 富士電機株式会社 情報処理装置、情報処理方法及びプログラム
CN113037390B (zh) * 2021-03-18 2022-02-11 南京邮电大学 一种基于fpga的光纤加密方法

Family Cites Families (8)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPS63186338A (ja) 1987-01-28 1988-08-01 Nec Corp 誤り訂正回路
JPH1165439A (ja) * 1996-08-09 1999-03-05 Nippon Telegr & Teleph Corp <Ntt> N進表現暗号による通信および認証方法、ならびにそれらの装置、およびn進表現暗号による通信および認証プログラムを格納した記憶媒体
JPH11249921A (ja) 1998-03-05 1999-09-17 Matsushita Electric Ind Co Ltd ガロア体演算器
JP2000322280A (ja) 1999-05-12 2000-11-24 Matsushita Electric Ind Co Ltd ガロア体演算方法
JP3659320B2 (ja) 2000-06-21 2005-06-15 インターナショナル・ビジネス・マシーンズ・コーポレーション 乗算モジュール、乗法逆元演算回路、乗法逆元演算制御方式、該乗法逆元演算を用いる装置、暗号装置、誤り訂正復号器
JP3851115B2 (ja) 2001-06-28 2006-11-29 富士通株式会社 暗号回路
JP2003195749A (ja) 2001-12-26 2003-07-09 Denso Create:Kk データ変換装置、データ変換プログラム、記録媒体及びデータ変換方法
US20030198345A1 (en) * 2002-04-15 2003-10-23 Van Buer Darrel J. Method and apparatus for high speed implementation of data encryption and decryption utilizing, e.g. Rijndael or its subset AES, or other encryption/decryption algorithms having similar key expansion data flow

Cited By (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
WO2014003117A1 (ja) * 2012-06-28 2014-01-03 日本電気株式会社 暗号化装置、暗号化方法およびプログラム
JPWO2014003117A1 (ja) * 2012-06-28 2016-06-02 日本電気株式会社 暗号化装置、暗号化方法およびプログラム

Also Published As

Publication number Publication date
JP2004233427A (ja) 2004-08-19
US20040184602A1 (en) 2004-09-23
US7809132B2 (en) 2010-10-05

Similar Documents

Publication Publication Date Title
JP3818263B2 (ja) Aes暗号処理装置、aes復号処理装置、aes暗号・復号処理装置、aes暗号処理方法、aes復号処理方法、および、aes暗号・復号処理方法
JP6592804B2 (ja) 新暗号規格(aes)向けの柔軟なアーキテクチャおよび命令
US8280040B2 (en) Processor instructions for improved AES encryption and decryption
Rebeiro et al. Bitslice implementation of AES
Mangard et al. A highly regular and scalable AES hardware architecture
TWI402675B (zh) 低等待時間的區塊密碼術
EP1507247B1 (en) Data conversion apparatus and data conversion method
USRE44594E1 (en) Method and circuit for data encryption/decryption
CN101350714B (zh) 采用混合rijndael s-box的有效高级加密标准数据路径
JP2001324924A (ja) 暗号化装置及び暗号化方法、復号装置及び復号方法並びに演算装置
JP2009211071A (ja) 一連の変換を行って一変換を分離する命令を含む命令の組合せ
JP4025722B2 (ja) データ暗号化のための方法および装置
JP3824121B2 (ja) 暗号データの復号化処理方法および装置
Saarinen A lightweight isa extension for aes and sm4
Fujii et al. Fast AES implementation using ARMv8 ASIMD without cryptography extension
Murtaza et al. Fortification of aes with dynamic mix-column transformation
JP5182295B2 (ja) 暗号化装置及び暗号処理方法
Buell Modern symmetric ciphers—Des and Aes
JP4515716B2 (ja) 拡大鍵生成装置、暗号化装置および暗号化システム
WO2012077419A1 (ja) 暗号処理装置、および暗号処理方法、並びにプログラム
Pyrgas et al. An 8-bit compact architecture of lesamnta-LW Hash function for constrained devices
Nishandji Performance evaluation of cryptographic algorithms in software and with hardware implementation of specialized instructions for the RISC-V instruction set architecture
KR100788902B1 (ko) 믹스컬럼블록 장치 및 이를 이용한 곱셈연산방법
Dumane et al. Design of advanced encryption standard on soft-core processor
KR20030087893A (ko) 라운드 키의 온라인 계산 기능을 갖는 모듈화 구조의 AESRijndael 라운드 키 생성 회로

Legal Events

Date Code Title Description
RD01 Notification of change of attorney

Free format text: JAPANESE INTERMEDIATE CODE: A7421

Effective date: 20050310

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20051004

A521 Written amendment

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20051201

TRDD Decision of grant or rejection written
A01 Written decision to grant a patent or to grant a registration (utility model)

Free format text: JAPANESE INTERMEDIATE CODE: A01

Effective date: 20060523

A61 First payment of annual fees (during grant procedure)

Free format text: JAPANESE INTERMEDIATE CODE: A61

Effective date: 20060605

R150 Certificate of patent or registration of utility model

Free format text: JAPANESE INTERMEDIATE CODE: R150

FPAY Renewal fee payment (event date is renewal date of database)

Free format text: PAYMENT UNTIL: 20100623

Year of fee payment: 4

FPAY Renewal fee payment (event date is renewal date of database)

Free format text: PAYMENT UNTIL: 20100623

Year of fee payment: 4

FPAY Renewal fee payment (event date is renewal date of database)

Free format text: PAYMENT UNTIL: 20110623

Year of fee payment: 5

FPAY Renewal fee payment (event date is renewal date of database)

Free format text: PAYMENT UNTIL: 20110623

Year of fee payment: 5

FPAY Renewal fee payment (event date is renewal date of database)

Free format text: PAYMENT UNTIL: 20120623

Year of fee payment: 6

FPAY Renewal fee payment (event date is renewal date of database)

Free format text: PAYMENT UNTIL: 20120623

Year of fee payment: 6

FPAY Renewal fee payment (event date is renewal date of database)

Free format text: PAYMENT UNTIL: 20130623

Year of fee payment: 7

LAPS Cancellation because of no payment of annual fees