JP5020987B2 - パラレル・モードでの先進暗号化標準(aes)の暗号化および復号を最適化する方法および装置 - Google Patents

パラレル・モードでの先進暗号化標準(aes)の暗号化および復号を最適化する方法および装置 Download PDF

Info

Publication number
JP5020987B2
JP5020987B2 JP2009043695A JP2009043695A JP5020987B2 JP 5020987 B2 JP5020987 B2 JP 5020987B2 JP 2009043695 A JP2009043695 A JP 2009043695A JP 2009043695 A JP2009043695 A JP 2009043695A JP 5020987 B2 JP5020987 B2 JP 5020987B2
Authority
JP
Japan
Prior art keywords
aes
block
blocks
aes round
round
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
JP2009043695A
Other languages
English (en)
Other versions
JP2009205161A (ja
Inventor
グエロン シャイ
グラッドスタイン アミット
スペルベル ゼーヴ
Original Assignee
インテル コーポレイション
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 インテル コーポレイション filed Critical インテル コーポレイション
Publication of JP2009205161A publication Critical patent/JP2009205161A/ja
Application granted granted Critical
Publication of JP5020987B2 publication Critical patent/JP5020987B2/ja
Expired - Fee Related legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Classifications

    • 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/38Concurrent instruction execution, e.g. pipeline or look ahead
    • 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
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • G06F12/02Addressing or allocation; Relocation
    • G06F12/06Addressing a physical block of locations, e.g. base addressing, module addressing, memory dedication
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • G06F12/02Addressing or allocation; Relocation
    • G06F12/08Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
    • 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
    • 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/125Parallelization or pipelining, e.g. for accelerating processing of cryptographic operations

Landscapes

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

Description

本開示は、先進暗号化標準(AES: Advanced Encryption Standard)に、より詳細にはAESの暗号化/復号の最適化に関する。
暗号は、アルゴリズムおよび鍵に依拠して情報を保護するツールである。アルゴリズムは複雑な数学的アルゴリズムであり、鍵はビットのストリングである。暗号システムには二つの基本的タイプがある:秘密鍵システムおよび公開鍵システムである。対称システムとも称される秘密鍵システムは、二以上の当事者によって共有される単一の鍵(「秘密鍵」)をもつ。この単一の鍵が情報の暗号化および復号の両方に使われる。
米国国家標準技術局(NIST: National Institute of Standards and Technology)によって連邦情報処理標準(FIPS: Federal Information Processing Standard)197として公表されている先進暗号化標準(AES)は秘密鍵システムである。AESは、情報を暗号化および復号できる対称ブロック暗号である。
暗号化(暗号)は、秘密鍵(暗号鍵)を使って「平文(plaintext)」と称される理解できるデータを「暗号文(cipher text)」と称される意味不明な形に変換する一連の変換を実行する。この暗号における変換は次のものを含む:(1)ラウンド鍵(暗号鍵から導出される値)を状態(state)(バイトの二次元配列)に排他的OR(XOR)演算を使って加算する;(2)非線形のバイト置換テーブル(Sボックス)を使って状態を処理する;(3)状態の最後の3行を異なるオフセットにより巡回的にシフトする;(4)状態のすべての列を取り、そのデータを(互いに独立に)混合して新しい列にする。
復号(暗号化の逆)は、暗号鍵を使って「暗号文」ブロックを同じサイズの「平文」ブロックに変換する一連の変換を実行する。逆暗号化における変換は、暗号における前記の変換の逆である。
AES規格において、ラインダール(Rijndael)アルゴリズムは、128ビットのデータ・ブロックを長さ128、192および256ビットの暗号鍵を使って処理するよう規定されている。異なる鍵長は典型的にはAES-128、AES-192およびAES-256と称される。
AESアルゴリズムは、平文を暗号文に、あるいは暗号文を平文に10回、12回または14回の相続くラウンドで変換する。ラウンド数は鍵長に依存する。
パラレル・モードでの先進暗号化標準(AES)の暗号化および復号を最適化する。
本発明の課題は請求項記載の手段によって達成される。
特許請求される事項の実施形態の特徴は、以下の詳細な記述が進むにつれ、また図面を参照することで明白になるであろう。図面において、同様の参照符号は同様の部分を描いている。
AES暗号化および復号を汎用プロセッサで実行するための命令を含むシステムのブロック図である。 図1に示したプロセッサのある実施形態のブロック図である。 本発明の原理に従って異なるデータ・ブロックに対する独立した処理を並列に実行することによりAES暗号化/復号処理のスループットを改善する方法のある実施形態を示す流れ図である。 サイクル当たり一つのAESラウンド命令をディスパッチする(dispatch)例を示す図である。
以下の詳細な記述は特許請求される事項の例示的な実施形態を参照しつつ進められるが、当業者には数多くの代替、修正および変形が明白であろう。したがって、特許請求される事項は広義に見られ、付属の請求項において述べられていることによってのみ定義されることが意図されている。
先進暗号化標準(AES)アルゴリズムは、計算集約的なアルゴリズムであり、典型的にはソフトウェアにおいて、あるいは特殊目的のプロセッサにおいて実行される。AESアルゴリズムは、メモリに記憶されているロード/記憶/インクリメント中央処理装置(CPU)命令のシーケンスを実行することによって、ソフトウェアで実行される。AESアルゴリズムは、平文または暗号文の各バイトを変換するために多くのCPUサイクルを消費するので、この変換は遅い。よって、暗号化は典型的にはコンピュータに記憶されている情報の部分集合、たとえば「トップ・シークレット」と分類されているような情報を暗号化するためにのみ使用される。しかしながら、コンピュータに記憶されている情報のさらに多くの部分を暗号化する必要がある。たとえば、モバイル・コンピュータに記憶されている全情報が暗号化されれば、モバイル・コンピュータが盗まれてもその情報は保護されるであろう。
AESは128ビットのブロックに128、192または256ビットの鍵サイズで作用するブロック暗号である。AESアルゴリズムは、10回、12回または14回の相続くラウンドで、128ビットの平文ブロックを128ビットの暗号文のブロックに変換し(暗号化)、あるいは128ビットの暗号文のブロックを128ビットの平文のブロックに変換する(復号)。ラウンド数は鍵サイズ(128、192または256ビット)に依存する。各ラウンドについて処理シーケンスが逐次反復される(10、12または14回)。暗号化のための処理シーケンスは次のことを含む:(1)ラウンド鍵(暗号鍵から導出される値)を状態(state)(バイトからなる128ビットの二次元配列)に排他的OR(XOR)演算を使って加算する;(2)非線形のバイト置換テーブル(Sボックス)を使って状態を処理する;(3)状態の最後の3行を異なるオフセットにより巡回的にシフトする;(4)状態のすべての列を取り、そのデータを(互いに独立に)混合して新しい列にする。
ブロック暗号は、複数の動作モードのうちの一つを使用しうる。動作モードは、電子コードブック(ECB: Electronic Code Book)、暗号ブロック連鎖(CBC: Cipher-Block Chaining)、出力フィードバック(OFB: Output Feedback)、カウンタ(Counter)および暗号フィードバック(CFB: Cipher-Feedback)を含み、任意の長さのメッセージについて秘匿性を提供する。暗号ブロック連鎖によるメッセージ認証コードを備えたカウンタ(CCM: Counter with Cipher Block Chaining-Message Authentication Code)、ガロア・カウンタ・モード(GCM: Galois Counter Mode)およびオフセット・コードブック・モード(OCM: Offset Codebook Mode)といった他の動作モードは、秘匿性とメッセージ完全性の両方を保証する。
ECBモードでは、暗号化されるべき平文はnビットのブロックに分割され、各ブロックが別個に暗号化される。すなわち、ブロックは他のブロックとは独立して暗号化される。CBCモードでは、平文は一時にnビットずつ処理され、平文ブロックの暗号化を前のブロックの暗号化に依存して行うために連鎖機構が使用される。たとえば、暗号化処理のためのCBC動作モードは下記の表1に示されるように記述されうる。
C-1=初期化ベクトル(IV: initialization vector)
Cj=AES_ENCRYPT(Pj XOR Cj-1) for j=1,2,…,暗号化すべきブロック数(NB: number of blocks to encrypt)
ここで、
Cjは第j暗号文ブロックであり、
Pjは第j平文ブロック(入力)である。
表1
CBC動作モードでは、CjはCj-1が計算される前には計算できない。よって、CBC動作モードはシリアル・モードである。
パラレル動作モードは、あるブロックの暗号化/復号が他のブロックの暗号化/復号の結果とは独立である動作モードである。たとえば、ECBおよびカウンタ動作モードはパラレル動作モードである。下記で、ECBモードを使ったAES暗号化処理についての擬似コードの例を表2に示し、カウンタ動作モードを使ったAES暗号化処理についての擬似コードの例を表3に示す。
for j from 1 to 暗号化すべきブロック数(NB)
TargetBuffer[j]=AES_ENCRYPT_PROCEDURE(DataBlock[j],cipher_key)
End loop
ここで、
DataBlock //暗号化すべきデータを保持する128ビットのエントリーをNB個もつバッファ
TargetBuffer //暗号化された結果を記憶する128ビットのエントリーをNB個もつバッファ(DataBlockと同じでもよい)
表2
Initialize COUNTER (ランダムな初期化ベクトル(IV))
for j from 1 to 暗号化すべきブロック数(NB)
Tmp1=AES_ENCRYPT_PROCEDURE(COUNTER,cipher_key)
TargetBuffer[j]=XOR(Tmp1,DataBlock[j])
End loop
ここで、
DataBlock //暗号化すべきデータを保持する128ビットのエントリーをNB個もつバッファ
TargetBuffer //暗号化された結果を記憶する128ビットのエントリーをNB個もつバッファ(DataBlockと同じでもよい)
表3
表2および表3における暗号化処理(AES_ENCRYPT_PROCEDURE)は、汎用プロセッサにおいてAES暗号化および復号を実行するための命令セット拡張において実行されうる。単一のAES暗号化処理はシリアルな動作のシーケンスを含み、それはAES命令のシリアルなシーケンスを介して実行されうる。複数の128ビット・データ・ブロックの暗号化を実行するための命令のシーケンスの例を下記で図4に示す。
for (i=1; i<NB; i++)
temp=Load(DataBlock[i])
temp=xor(temp,RK[0]); //ラウンド0
for(j=1; j<10; j++) //10回のAESラウンドについて
temp=AESENC(temp,RK[j]);
temp=AESENCLAST(temp,RK[10]);
Store temp to TargetBuffer[i]
ここで、
NBは暗号化すべきブロック数;
IVはカウンタを初期化する(initialize)ために使われるランダムな数;
DataBlockは暗号化すべきデータを記憶するバッファ;
TargetBufferは暗号化した結果を記憶するバッファ;
RKはラウンド鍵(Round keys)を記憶するバッファ;
tempは128ビットの変数である。
表4
表4に示されたAES命令(AESENC、AESENCLAST)は、128ビット変数(temp)に記憶されたデータ(状態とも称される)を、AES規格(FIPS刊行物197)によって定義されるようにシリアルに処理する。該データを処理するための動作のシリアルなシーケンスの例を表5に示す。
For i from 1 to N_BLOCKS do
Xmm1=BLOCK[i] //ロード
Xmm1=AESENC(Xmm1,RK[1])
Xmm1=AESENC(Xmm1,RK[2])
Xmm1=AESENC(Xmm1,RK[3])

Xmm1=AESENC(Xmm1,RK[9])
Xmm1=AESENCLAST(Xmm1,RK[10])
store Xmm1
End
表5
暗号化すべきN_Blocksのそれぞれについて、データ・ブロックはレジスタに記憶される。たとえば128ビットをもつXmmレジスタ(Xmm1)が128ビットのブロックを記憶するために使用されうる。10回の暗号化ラウンドは、そのデータ・ブロックに対して直列に実行される。10ラウンドのAES処理のうちラウンド1から9については、AESENC命令が呼び出され、ラウンド鍵および直前のラウンドの結果もしくは初期ブロック・データ(ラウンド1の場合)を使ってラウンド処理を実行する。AESENCLAST命令は、最後のラウンド(今の例ではラウンド10)を処理するために呼び出される。
AESラウンド命令(AESENC、AESENCLAST)のレイテンシ(latency)がLプロセッサ・サイクルと表されるとする。ロード、記憶および他のオーバーヘッドのためのサイクルを無視すると、表5の例に示される10回のAESラウンドのためのN_BLOCKSの処理は、表5に示した順序で処理されるとすると、約N_BLOCKS*10*Lサイクルを消費する。明らかに、N_Blocksの暗号化/復号を実行する全体としてのレイテンシは、個々のAES命令(AESENC、AESENCLAST)のレイテンシに依存する。
本発明のある実施形態では、本発明の原理に従って複数のデータ・ブロックを並列に暗号化する(復号する)ことによって、AESラウンド命令のレイテンシ(L)の効果が軽減され、AES暗号化/復号処理を実行するために必要とされる全体としてのレイテンシの低下につながる。パラレル動作モードでは、異なるデータ・ブロックの異なる独立した暗号化(復号)は、前の命令が完了するのを待つことなく毎サイクルにおいてAESラウンド命令をディスパッチすることによって、並列に実行されうる。
図1は、汎用プロセッサにおいてAES暗号化および復号を実行するための命令を含むシステム100のブロック図である。システム100は、プロセッサ101、メモリ・コントローラ・ハブ(MCH: Memory Controller Hub)(またはグラフィクス・メモリ・コントローラ・ハブ(GMCH: Graphics Memory Controller Hub))102および入出力(I/O)コントローラ・ハブ(ICH: Input/Output Controller Hub)104を含む。MCH102は、プロセッサ101とメモリ108の間の通信を制御するメモリ・コントローラ106を含む。プロセッサ101およびMCH102は、システム・バス116を通じて通信する。
プロセッサ101は、単一コアのインテル(登録商標)・ペンティアム(登録商標)IV・プロセッサ、単一コアのインテル・セレロン・プロセッサ、インテル(登録商標)・XScaleプロセッサまたはペンティアム(登録商標)D、インテル(登録商標)・ジーオン(登録商標)・プロセッサもしくはインテル(登録商標)・コア(登録商標)・デュオ・プロセッサといったマルチコア・プロセッサまたは他の任意の型のプロセッサといった複数のプロセッサのいかなるものであってもよい。
メモリ108は動的ランダム・アクセス・メモリ(DRAM: Dynamic Random Access Memory)、静的ランダム・アクセス・メモリ(SRAM: Static Random Access Memory)、同期型動的ランダム・アクセス・メモリ(SDRAM: Synchronized Dynamic Random Access Memory)、倍速データレート2(DDR2: Double Data Rate 2)RAMまたはランバス動的ランダム・アクセス・メモリ(RDRAM: Rambus Dynamic Random Access Memory)または他のいかなる型のメモリであってもよい。
ICH104は、高速のチップからチップへの相互接続114を使って直接メディア・インターフェース(DMI: Direct Media Interface)のようなMCH102に結合されうる。DMIは、二つの一方向レーンを介して毎秒2ギガビットの並行転送レートをサポートする。
ICH104は、該ICH104に結合された少なくとも一つの記憶装置112との通信を制御するための記憶装置I/Oコントローラ110を含んでいてもよい。記憶装置はたとえば、ディスク・ドライブ、デジタル・ビデオ・ディスク(DVD)・ドライブ、コンパクト・ディスク(CD)・ドライブ、独立したディスクの冗長アレイ(RAID)、テープ・ドライブまたは他の記憶装置であってもよい。ICH104は、記憶プロトコル相互接続118を介して、シリアル付属小型コンピュータ・システム・インターフェース(SAS: Serial Attached Small Computer System Interface)またはシリアル先進技術付属物(SATA: Serial Advanced Technology Attachment)といったシリアル記憶プロトコルを使って、記憶装置112と通信してもよい。
プロセッサ101は、AES暗号化および復号処理を実行するためのAES機能103を含む。AES機能103は、メモリ108に記憶されているおよび/または記憶装置112に記憶されているような情報を暗号化または復号するために使用されうる。
図2は、図1に示したプロセッサ101のある実施形態のブロック図である。プロセッサ101は、レベル1(L1)命令キャッシュ202から受領されるプロセッサ命令をデコードするためのフェッチおよびデコード・ユニット206を含む。プロセッサ命令を実行するために使用されるべきデータはレジスタ・ファイル208に記憶されうる。ある実施形態では、レジスタ・ファイル208は複数の128ビット・レジスタを含み、これらの128ビット・レジスタがAESラウンド命令による使用のためのデータを記憶するためにAESラウンド命令によって使用される。
ある実施形態では、レジスタ・ファイル208は、ストリーミング(単一命令複数データ(SIMD))拡張(SSE: Streaming (Single Instruction Multiple Data) Extension)(SSE)命令セットをもつインテル(登録商標)・ペンティアム(登録商標)・MMXプロセッサに設けられている128ビットのMMXレジスタと同様の128ビット・レジスタの群である。SIMDプロセッサでは、データは、一時に一つの128ビット・ブロックずつロードして、複数の128ビット・ブロックにおいて処理される。
フェッチおよびデコード・ユニット206は、L1命令キャッシュ202からマクロ命令をフェッチして、該マクロ命令をデコードし、該マクロ命令をマイクロ演算(μop: micro operation)と呼ばれる単純な演算に分解する。マイクロ演算はマイクロコード読み出し専用メモリ(ROM)214に記憶されうる。パイプライン化されている実行ユニット210は、それらのマイクロ演算をスケジューリングし、実行する。図示した実施形態では、実行ユニット210中のAES機能103はAESラウンド命令のセットのためのマイクロ演算を含む。AES命令は完全にパイプライン化され(fully pipelined)、それによりプロセッサ(CPU)は、処理するためのデータの準備ができていれば、毎サイクルにおいて命令をディスパッチしうる。待避ユニット(retirement unit)212は、実行された命令の結果をレジスタまたはメモリに書き込む。AESラウンド命令によって使用されるラウンド鍵216は、L1データ・キャッシュ204に記憶され、AESラウンド命令のいずれかを実行するためのマイクロ演算による使用のために、実行ユニット210にロードされてもよい。ラウンド鍵216をL1データ・キャッシュ204に記憶することは、サイド・チャネル攻撃、たとえばシステム100に記憶されている暗号化された情報へのアクセスを得るためにラウンド鍵を得ようとする試みからラウンド鍵216を保護する。
AESラウンド命令がフェッチおよびデコード・ユニット206によってデコードされたのち、実行ユニット210によるAESラウンド命令の実行は、マイクロコードROM214に記憶されていてもよいAESラウンド命令に関連付けられたマイクロ演算の実行に関わる。
ある実施形態では、暗号化ラウンド、復号ラウンド、暗号化最終ラウンドおよび復号最終ラウンドを実行するための別個のAESラウンド命令を含むAES命令セットが設けられる。ある実施形態では、各AESラウンド命令は一意的な動作コード(operation code)(オペコード(opcode))をもつ。固定幅ラウンド鍵(たとえば128ビット)についてのある実施形態についてのAES命令セットにおけるAESラウンド命令を、下記で表6に示す。
AESENC xmmsrcdst xmm
入力:データ(=宛先)、ラウンド鍵
出力:ラウンド鍵を使ったAESラウンドを通じた変換後のデータ
AESENCLAST xmmsrcdst xmm
入力:データ(=宛先)、ラウンド鍵
出力:ラウンド鍵を使ったAES最終ラウンドを通じた変換後のデータ
AESDEC xmmsrcdst xmm
入力:データ(=宛先)、ラウンド鍵
出力:ラウンド鍵を使ったAESラウンドを通じた変換後のデータ
AESDECLAST xmmsrcdst xmm
入力:データ(=宛先)、ラウンド鍵
出力:ラウンド鍵を使ったAES最終ラウンドを通じた変換後のデータ
表6
このAES命令セットは四つのAESラウンド命令(暗号化、復号、最終ラウンド暗号化、最終ラウンド復号)を含む。このAES命令セットにおけるAESラウンド命令は、最終ラウンドを除いたすべてのラウンドのために使用されることになる暗号化および復号のラウンド演算を実行する単一ラウンド演算を含む。たとえば、表6のAESENC単一ラウンド命令では、入力データは128ビット・レジスタ(xmmsrcdst)に記憶され、ラウンド鍵は別の128ビット・レジスタ(Xmm)に記憶される。この命令は、128ビットのxmmsrcdstレジスタに記憶されている入力データ(ソース)に対してAESラウンド演算を実行し、128ビットのxmmsrcdstレジスタに記憶されている入力データを、ラウンド演算の実行の結果をもって上書きする。こうして、xmmsrcdstはまず入力データを記憶し、のちにAESラウンド演算の結果を記憶する。
鍵のサイズは128ビット、192ビットまたは256ビットであってよい。実行されるべきラウンド数(n)は、鍵のサイズに依存して1、10、12または14でありうる。各ラウンド鍵は固定サイズ(128ビット)である。ラウンド数の値10、12、14では、AESマイクロ演算は、128ビット、192ビットまたは256ビットの鍵サイズについて、標準的なAES暗号化および復号を実行しうる。
多くのブロックに同じ鍵が使われるとき、各ラウンドについてのラウンド鍵(鍵スケジュール)が事前計算されてメモリに記憶されていてもよい(たとえば、レベル1のデータ・キャッシュ204内にラウンド鍵216)。ラウンド鍵216は、その鍵についての鍵スケジュールを記憶するための10の要素をもつ配列(RK)を含んでいてもよい。AES-128暗号化のための入力鍵はRK[0]に記憶され、9個のラウンド鍵RK[0]‐RK[1]が事前計算される。
AES命令セットは、最後の復号ラウンドのためのAES復号命令および最後の暗号化ラウンドのためのAES暗号化命令をも含む。たとえば、表1のAESENCLAST単一ラウンド命令では、入力データは128ビット・レジスタ(xmmsrcdst)に記憶され、ラウンド鍵は別の128ビット・レジスタ(Xmm)に記憶される。この命令は、xmmsrcdstレジスタに記憶されている入力データ(ソース)に対してAESラウンド演算を実行し、xmmsrcdstレジスタに記憶されている入力データを、ラウンド演算の実行の結果をもって上書きする。こうして、xmmsrcdstはまず入力データを記憶し、のちにAESラウンド演算の結果を記憶する。Xmmレジスタはラウンド演算のためのラウンド鍵を記憶する。
ある実施形態では、レジスタ・ファイル304はAES命令によって使用されうる複数の128ビット・レジスタをもつ。これらの128ビット・レジスタは、ソース・オペランド(単数または複数)、ラウンド鍵およびAES命令の結果を記憶しうる。最初のラウンドについては、AES命令は、暗号化されるべき128ビットの平文または復号されるべき128ビットの暗号文でありうるソース・オペランドを受領する。
図3は、本発明の原理に従って異なるデータ・ブロックに対する独立した処理を並列に実行することによりAES暗号化/復号処理のスループットを改善する方法のある実施形態を示す流れ図である。
AES処理のスループットの改善は、あるデータ・ブロックの暗号化/復号のフローを、処理すべきデータを提供する別のデータ・ブロックの暗号化/復号のフローと並行して走ることを許容し、毎サイクルにAESラウンド命令がディスパッチされることを許容することによってなされる。データ・ブロックが並列に処理されうるのは、(1)複数データ・ブロックにわたって同じ暗号鍵が使われる、すなわち鍵スケジュールが一度生成され、その同じ鍵スケジュールを使って複数データ・ブロックが処理され、かつ(2)AESラウンドが、単一の完全にパイプライン化されたAESラウンド命令を使って実行される場合である。毎サイクルに一度AESラウンド命令をディスパッチすることは、たとえ各AESラウンド命令のレイテンシが1サイクルより大きくても、AES暗号化/復号処理のスループットを上げる。
AES-128暗号化処理について、すなわち128ビットのデータ・ブロックおよび128ビットの鍵を使った10回のAESラウンドでのAES暗号化処理について、実施例を述べる。下記の表7は、並列して異なるデータ・ブロックに対する独立した処理を実行することによりAES暗号化のスループットを最大化するために使用されうるソフトウェア命令の例を示している。
For i from 0 to N_BLOCKS/8−1 do
xmm1=BLOCK[8*i+1], xmm2=BLOCK[8*i+2]; … xmm8=BLOCK[8*i+8]
xmm1=AESENC(xmm1,RK[1])
xmm2=AESENC(xmm2,RK[1])
xmm3=AESENC(xmm2,RK[1])

xmm8=AESENC(xmm8,RK[1])
xmm1=AESENC(xmm1,RK[2])
xmm2=AESENC(xmm2,RK[2])

xmm8=AESENC(xmm8,RK[2])

xmm1=AESENCLAST(xmm1,RK[10])
xmm2=AESENCLAST(xmm2,RK[10])

xmm8=AESENCLAST(xmm8,RK[10])
store xmm1; store xmm2; … store xmm8
End
表7
表7を参照すると、各Xmmレジスタを使う処理は他のXmmレジスタを使う処理と独立しているので、AESラウンド命令「AESENC」は毎サイクルにディスパッチされる。先に論じたように、これは、並列動作モードの性質のためである。たとえば、ECBモードでは、暗号化すべき平文はnビット・ブロックに分割され、各ブロックが別個に暗号化される。すなわち、ブロックは他のブロックとは独立して暗号化される。使用されるXmmレジスタの数(この例では8)が命令レイテンシ(L)、すなわち命令を完了させるためのサイクル数より大きいまたはこれに等しく選ばれる場合、AESラウンド命令は、複数のAESラウンドにまたがってでさえ、毎サイクルにディスパッチされることができる。
ブロック300では、暗号化/復号されるべき複数のデータ・ブロックが複数のレジスタ(たとえば複数の128ビットXmmレジスタ)に記憶される。128ビット・レジスタをもつある実施形態では、AESのデータ・ブロック・サイズは128ビットなので、異なるデータ・ブロックがk個の128ビット・レジスタのそれぞれに記憶される。パフォーマンスを最大にするため、前記異なるデータ・ブロックを記憶するために使用されるレジスタ数はAESラウンド命令のレイテンシに依存する。これは、毎サイクルに一つのAESラウンド命令がディスパッチされ、複数の異なるデータ・ブロックが並列して処理されうることを許容する。処理はブロック302に続く。
ブロック302では、AES暗号化/復号処理のラウンド0で実行される処理が、他のラウンドで実行される処理とは異なっている。よって、ラウンド0での処理は、k個の128ビット・レジスタに記憶されているk個の異なるデータ・ブロックのそれぞれに対して逐次的に実行される。処理はブロック304に続く。
ブロック304では、すべての他のラウンド(たとえばAES-128についてはラウンド1ないし10)について同じAESラウンド命令がディスパッチされる。現在ラウンドについてk個のレジスタに記憶されているk個の異なるデータ・ブロックのそれぞれについて、当該ラウンドに関連付けられたラウンド鍵[RK]を使って、サイクル当たり一つのAES命令がディスパッチされる。k個のレジスタに記憶されているk個の異なるデータ・ブロックのそれぞれについてAESラウンド命令がディスパッチされたのち、処理はブロック306に続く。
ブロック306では、そのAES処理のためにさらなるラウンドがあれば、処理はブロック304に続いて次のラウンドを処理する。さらなるラウンドがなければ、処理はブロック308に続く。
ブロック308では、そのAES処理のために処理されるべき他のデータ・ブロックがあれば、処理はブロック300に続き、次のデータ・ブロック(単数または複数)を前記k個のレジスタにロードする。他のデータ・ブロックがなければ、処理はブロック310に続き、AES処理の結果を返す。
図4は、サイクル当たり一つのAESラウンド命令をディスパッチする例を示している。図4に示される例では、レジスタ数(k)およびAESラウンド命令レイテンシ(L)はいずれも6である。図4は、表7に示され、図3のブロック304との関連で論じたforループの一つについてのAES命令のディスパッチを示している。k=L=6のときにラウンド2についてのforループについてディスパッチされる命令は、明示的には下記の表8のように書ける。
Xmm1=AESENC
(Xmm1,RK[1])
Xmm2=AESENC
(Xmm2,RK[1])
Xmm3=AESENC
(Xmm3,RK[1])
Xmm4=AESENC
(Xmm4,RK[1])
Xmm5=AESENC
(Xmm5,RK[1])
Xmm6=AESENC
(Xmm6,RK[1])
表8
この例では、レジスタはXmmレジスタ・ファイルにおけるXmmレジスタであり、Xmmレジスタの6つ(Xmm1〜Xmm6とラベルされる)は6つの異なるデータ・ブロックを記憶するために使用される。しかしながら、本発明はXmmレジスタに限定されるものではなく、AESラウンドのために128ビット・データ・ブロックを記憶することができ、AESラウンド命令によってアクセス可能ないかなるレジスタを使ってもよい。Xmm1を使う処理は他のXmmレジスタ(Xmm2、…、Xmm6)のそれぞれを使う処理とは独立しているので、AESENC命令は毎サイクル、ディスパッチできる。理想的なスケジュール条件のもとでは、このforループは完了するのにk+L−1(6+6−1=11)サイクルかかる。
図3を参照すると、Lおよびkの両方が6であるシステムにおいては、毎サイクル、AESENC命令がディスパッチされる。各ラウンド(ラウンド0以外)について、最初の6つの命令は同じラウンド鍵RKを使って6つの異なるXmmレジスタ(Xmm1〜Xmm6)上で動作する。たとえば、サイクル1ではXmm1およびRK[1]を使ってAESENC命令がディスパッチされ、サイクル2ではXmm2およびRK[2]を使ってAESENC命令がディスパッチされる。サイクル1においてディスパッチされたAESENC命令は6サイクルのレイテンシをもち、よってサイクル6の終わりに完了される。
サイクル7においてディスパッチされる7番目のAESENC命令は、Xmm1レジスタに記憶されている7番目のデータ・ブロックをラウンド鍵RK[2]とともに使うことができる。これは、その時点までには、サイクル1においてXmm1レジスタに記憶された第一のデータ・ブロックおよびラウンド鍵RK[1]を使ってディスパッチされたAESENC命令はすでに完了している(6サイクルのレイテンシに基づく)からである。よって、6つのAESENC命令が、それぞれ6つのXmmレジスタの一つに記憶されている異なるデータ・ブロックを使って、並列に動作してもよい。こうして、前記レジスタの複数に記憶されているデータ・ブロックを使う第二のAESラウンドは、全部で11サイクル後に完了する。これに対し、これら二つのAESラウンドについてのデータ・ブロックが表5に示した例との関連で先に論じたように直列に処理されたとしたら、12サイクル後である。AES-128処理についての全10回のAESラウンドが完了するまで、各サイクルにおいてAESENC命令(またはAESENCLAST命令)がディスパッチされる。
kをデータ・ブロックを記憶するために利用可能なレジスタの数に依存して選択されるものとして、論じたように、k個のデータ・ブロックが並列に暗号化されうる。レジスタ数(k)≧AES命令レイテンシ(L)であれば、AES命令は毎サイクルにディスパッチされうる。これは「複数のAESラウンドにまたがって」であってもよい。すなわち、ある特定のAESラウンドについてのAESラウンド命令のすべてが、次のAESラウンドについてのAESラウンド命令をディスパッチするのに先立って完了される必要はない。
たとえば、ラウンド鍵RK[1]を使ってAESラウンド1を処理するために第一のレジスタが使用される場合、該第一のレジスタは、kサイクルが経過してしまうまではラウンド鍵RK[2]を使ってAESラウンド2を処理するために使用することはできない。よって、k≧Lであれば、AESラウンド1のためにAES命令がディスパッチされるk個のサイクルがあって、k+1番目のサイクルでは、ラウンド鍵RK[2]を用いて処理されるべきAESラウンド2のためのデータ・ブロックを記憶するために第一のレジスタが利用可能である。
並列してk個の異なるデータ・ブロックを処理することは、kデータ・ブロック当たり、排他的OR(XOR)演算を実行するAESラウンド0についての約kサイクルに加えて、他のNR個のAESラウンドを処理するためにさらなるNR*k+L−1サイクルを必要とする。したがって、スループットは、kデータ・ブロック当たり(NR*k+L−1)サイクルによって見積もれる。これはデータ・ブロック当たりNR+(L−1)/kサイクルである。
パフォーマンスは利用可能なレジスタ数によって、およびAESラウンド命令のレイテンシによって制約される。ラウンド鍵(RK)はメモリから読み込まれることもできるし(レジスタ‐メモリ・モード)、別のレジスタにロードされることもできる(レジスタ‐レジスタ・モード)。レジスタ‐メモリ・モードは、ラウンド鍵が最初に読み込まれたのち第一レベルのキャッシュに記憶されるならば、より高いパフォーマンスを提供しうる。
前記のAESラウンド命令を使用しないAES-128の実装は、バイト当たり約12サイクルを消費する。記憶/ロード/インクリメントおよび他のオーバーヘッドのレイテンシを無視し、k=L=8とすると、シリアル・データ・モードでは、前記のAESラウンド命令を使用するAES-128(10ラウンド)暗号化は、128ビット(16バイト)当たり約10*Lサイクルを消費する。すなわち、約5サイクル/バイトである。複数の異なるデータ・ブロックを並列に処理することにより、先に論じたように、8ブロックの暗号化はNR*k+L−1サイクルを消費する。つまり、8ブロック当たり約72サイクルである(0.56サイクル/バイト)。このように、異なるデータ・ブロックに対する独立した処理を並列に実行することは、表5との関連で論じたデータを処理するためのシリアルな処理シーケンスを使うときよりほとんど9倍のパフォーマンス増を達成する。
処理を並列に実行することにより、AESラウンド命令のレイテンシ(L)は、レジスタ数(k)がL以上である限り、「隠蔽される」。これは、あるブロックに対して他のブロックとは独立に動作する動作モード、たとえばECB、CCM、GCMおよびカウンタを含む動作モードを使うAES処理のための暗号化/復号のためのAESラウンド命令の効率的な使用を許容する。
本発明の実施形態に関わる方法がコンピュータによって使用可能な媒体を含むコンピュータ・プログラム・プロダクトにおいて具現されてもよいことは当業者には明白であろう。たとえば、そのようなコンピュータによって使用可能な媒体は、コンピュータ読み取り可能なプログラム・コードが記憶されているコンパクト・ディスク読み出し専用メモリ(CD-ROM)ディスクもしくは通常のROMデバイスのような読み出し専用メモリ・デバイスまたはコンピュータ・ディスケットからなっていてもよい。
本発明の実施形態についてその実施形態を参照しつつ具体的に図示し、説明してきたが、当業者は、付属の請求項が網羅する本発明の実施形態の範囲から外れることなく、形および詳細におけるさまざまな変更がなしうることを理解するであろう。
101 プロセッサ
102 メモリ・コントローラ・ハブ(MCH)
103 AES暗号化/復号処理
104 入出力コントローラ・ハブ
106 メモリ・コントローラ
108 メモリ
110 記憶装置入出力コントローラ
112 記憶装置
200 バフ・インターフェース・ユニット
202 レベル1の命令キャッシュ
204 レベル1のデータ・キャッシュ
206 フェッチおよびデコード・ユニット
208 レジスタ・ファイル
210 実行ユニット
212 待避ユニット
214 マイクロコードROM
216 ラウンド鍵
300 k個のレジスタにk個の異なるデータ・ブロックをロード
302 k個のデータ・ブロックのそれぞれについてAESラウンド0処理を実行
304 k個のレジスタに記憶されている各データ・ブロックについて1ラウンドのためのラウンド処理を実行するラウンド命令をディスパッチ
306 さらなるラウンド[RK]?
308 さらなるデータ・ブロック?
310 結果を返す

Claims (18)

  1. プロセッサにより、あるブロックに対して他のブロックとは独立して作用する動作モードを使って先進暗号化標準(AES)処理を複数の固定サイズのブロックに対して実行することを含む方法であって:
    前記複数の固定サイズのブロックのうちk個の相続くブロックのセットを前記プロセッサ中のk個のレジスタに記憶する段階であって、kは、ブロックに対してあるAESラウンドについてのAESラウンド演算のシーケンスを実行するAESラウンド命令のレイテンシ(L)以上である、段階と;
    前記プロセッサの実行ユニットによって、前記k個の相続くブロックのそれぞれについてプロセッサ・サイクル毎に一つのAESラウンド命令をディスパッチすることによって、前記k個の相続くブロックのセットに対して前記AESラウンド演算のシーケンスを並列に実行する段階とを有する、
    方法。
  2. 前記k個のブロックのそれぞれについての前記AESラウンド命令の結果を、前記k個のレジスタのうちそのブロックをもともと記憶していたレジスタに記憶する段階をさらに有する、
    請求項1記載の方法。
  3. 各ブロックが128ビットをもつ、請求項1記載の方法。
  4. 前記レジスタがXmmレジスタである、請求項1記載の方法。
  5. 前記AESラウンド命令がパイプラインされる、請求項1記載の方法。
  6. 前記動作モードが、電子コードブック(ECB)、カウンタ、暗号ブロック連鎖メッセージ認証コード(CCM)またはガロア・カウンタ・モード(GCM)である、請求項1記載の方法。
  7. 複数の固定サイズのブロックのうちk個の相続くブロックのセットをk個のレジスタに記憶するためのレジスタ・ファイルであって、kは、ブロックに対してあるAESラウンドについてのAESラウンド演算のシーケンスを実行するAESラウンド命令のレイテンシ(L)以上である、レジスタ・ファイルと;
    あるブロックに対して他のブロックとは独立して作用する動作モードを使って先進暗号化標準(AES)処理を複数の固定サイズのブロックに対して実行する実行ユニットであって、前記k個の相続くブロックのそれぞれについてプロセッサ・サイクル毎に一つのAESラウンド命令をディスパッチすることによって、前記k個の相続くブロックのセットに対して前記AESラウンド演算のシーケンスを並列に実行する実行ユニットとを有する、
    装置。
  8. 前記実行ユニットが、前記k個のブロックのそれぞれについての前記AESラウンド命令の結果を前記k個のレジスタのうちそのブロックをもともと記憶していたレジスタに記憶する、請求項7記載の装置。
  9. 各ブロックが128ビットをもつ、請求項7記載の装置。
  10. 前記レジスタがXmmレジスタである、請求項7記載の装置。
  11. 前記AESラウンド命令がパイプラインされる、請求項7記載の装置。
  12. 前記動作モードが、電子コードブック(ECB)、カウンタ、暗号ブロック連鎖メッセージ認証コード(CCM)またはガロア・カウンタ・モード(GCM)である、請求項7記載の装置。
  13. 報を記憶した機械アクセス可能記憶体であって、前記情報は、機械によってアクセスされたときに、機械に:
    あるブロックに対して他のブロックとは独立して作用する動作モードを使って先進暗号化標準(AES)処理を複数の固定サイズのブロックに対して実行することを含む方法であって:
    前記複数の固定サイズのブロックのうちk個の相続くブロックのセットを前記機械内のk個のレジスタに記憶する段階であって、kは、ブロックに対してあるAESラウンドについてのAESラウンド演算のシーケンスを実行するAESラウンド命令のレイテンシ(L)以上である、段階と;
    前記機械の実行ユニットによって、前記k個の相続くブロックのそれぞれについてプロセッサ・サイクル毎に一つのAESラウンド命令をディスパッチすることによって、前記k個の相続くブロックのセットに対して前記AESラウンド演算のシーケンスを並列に実行する段階とを有する、
    方法を実行させる、
    機械アクセス可能記憶媒体
  14. 前記k個のブロックのそれぞれについての前記AESラウンド命令の結果を、前記k個のレジスタのうちそのブロックをもともと記憶していたレジスタに記憶する段階をさらに有する、
    請求項13記載の機械アクセス可能記憶媒体
  15. 各ブロックが128ビットをもつ、請求項13記載の機械アクセス可能記憶媒体
  16. 前記レジスタがXmmレジスタである、請求項13記載の機械アクセス可能記憶媒体
  17. 前記AESラウンド命令がパイプラインされる、請求項13記載の機械アクセス可能記憶媒体
  18. 前記動作モードが、電子コードブック(ECB)、カウンタ、暗号ブロック連鎖メッセージ認証コード(CCM)またはガロア・カウンタ・モード(GCM)である、請求項13記載の機械アクセス可能記憶媒体
JP2009043695A 2008-02-27 2009-02-26 パラレル・モードでの先進暗号化標準(aes)の暗号化および復号を最適化する方法および装置 Expired - Fee Related JP5020987B2 (ja)

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
US12/038,071 2008-02-27
US12/038,071 US8194854B2 (en) 2008-02-27 2008-02-27 Method and apparatus for optimizing advanced encryption standard (AES) encryption and decryption in parallel modes of operation

Publications (2)

Publication Number Publication Date
JP2009205161A JP2009205161A (ja) 2009-09-10
JP5020987B2 true JP5020987B2 (ja) 2012-09-05

Family

ID=40765607

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2009043695A Expired - Fee Related JP5020987B2 (ja) 2008-02-27 2009-02-26 パラレル・モードでの先進暗号化標準(aes)の暗号化および復号を最適化する方法および装置

Country Status (5)

Country Link
US (2) US8194854B2 (ja)
EP (1) EP2096787B1 (ja)
JP (1) JP5020987B2 (ja)
KR (1) KR101068367B1 (ja)
CN (1) CN101520966B (ja)

Families Citing this family (46)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US9582795B2 (en) 2002-02-05 2017-02-28 Square, Inc. Methods of transmitting information from efficient encryption card readers to mobile devices
US9916581B2 (en) * 2002-02-05 2018-03-13 Square, Inc. Back end of payment system associated with financial transactions using card readers coupled to mobile devices
US8467527B2 (en) * 2008-12-03 2013-06-18 Intel Corporation Efficient key derivation for end-to-end network security with traffic visibility
US8194854B2 (en) 2008-02-27 2012-06-05 Intel Corporation Method and apparatus for optimizing advanced encryption standard (AES) encryption and decryption in parallel modes of operation
US8879725B2 (en) 2008-02-29 2014-11-04 Intel Corporation Combining instructions including an instruction that performs a sequence of transformations to isolate one transformation
US8634549B2 (en) * 2008-05-07 2014-01-21 Red Hat, Inc. Ciphertext key chaining
US8396209B2 (en) 2008-05-23 2013-03-12 Red Hat, Inc. Mechanism for chained output feedback encryption
JP5500923B2 (ja) * 2008-11-27 2014-05-21 キヤノン株式会社 情報処理装置
US8654970B2 (en) * 2009-03-31 2014-02-18 Oracle America, Inc. Apparatus and method for implementing instruction support for the data encryption standard (DES) algorithm
US20100246815A1 (en) * 2009-03-31 2010-09-30 Olson Christopher H Apparatus and method for implementing instruction support for the kasumi cipher algorithm
US20100250965A1 (en) * 2009-03-31 2010-09-30 Olson Christopher H Apparatus and method for implementing instruction support for the advanced encryption standard (aes) algorithm
US8832464B2 (en) * 2009-03-31 2014-09-09 Oracle America, Inc. Processor and method for implementing instruction support for hash algorithms
US9317286B2 (en) * 2009-03-31 2016-04-19 Oracle America, Inc. Apparatus and method for implementing instruction support for the camellia cipher algorithm
US8850204B2 (en) * 2009-12-23 2014-09-30 Intel Corporation Multi-band/multi-link secure key generation and delivery protocol
CN102111263A (zh) * 2011-02-21 2011-06-29 山东中孚信息产业股份有限公司 一种数据流加密的方法
CN102411683B (zh) * 2011-08-15 2014-04-02 复旦大学 一种适用于嵌入式系统的基于高速缓存的aes加速器
WO2013080976A1 (ja) 2011-11-28 2013-06-06 日本電気株式会社 暗号化処理回路及び復号処理回路、その方法並びにそのプログラム
CN102664729B (zh) * 2012-04-28 2014-12-31 中山大学 一种基于fpga的aes加解密网络通讯装置及其实现方法
US9158499B2 (en) * 2012-04-30 2015-10-13 Freescale Semiconductor, Inc Cryptographic processing with random number generator checking
US9176838B2 (en) 2012-10-19 2015-11-03 Intel Corporation Encrypted data inspection in a network environment
US9264222B2 (en) * 2013-02-28 2016-02-16 Apple Inc. Precomputing internal AES states in counter mode to protect keys used in AES computations
US9361106B2 (en) * 2013-12-27 2016-06-07 Intel Corporation SMS4 acceleration processors, methods, systems, and instructions
US9513913B2 (en) 2014-07-22 2016-12-06 Intel Corporation SM4 acceleration processors, methods, systems, and instructions
US9515818B2 (en) 2014-09-16 2016-12-06 Apple Inc. Multi-block cryptographic operation
US9467279B2 (en) 2014-09-26 2016-10-11 Intel Corporation Instructions and logic to provide SIMD SM4 cryptographic block cipher functionality
CN104284208B (zh) * 2014-10-23 2017-11-10 航天数字传媒有限公司 通过aes‑cbc算法进行并行加密的方法及系统
CN105743636A (zh) * 2014-12-11 2016-07-06 上海华虹集成电路有限责任公司 实现密码算法的方法
WO2016172259A1 (en) * 2015-04-20 2016-10-27 Microsemi Corp. - Security Solutions High-speed aes with transformed keys
US9779262B2 (en) * 2015-04-20 2017-10-03 Qualcomm Incorporated Apparatus and method to decrypt file segments in parallel
US9773432B2 (en) 2015-06-27 2017-09-26 Intel Corporation Lightweight cryptographic engine
US10061941B2 (en) * 2015-08-19 2018-08-28 Altera Corporation Systems and methods for multiport to multiport cryptography
CN105356996B (zh) * 2015-12-14 2018-11-09 联想(北京)有限公司 一种密文处理方法、电子设备及密文处理装置
CN107679409B (zh) * 2017-09-29 2021-02-23 深圳大学 一种数据加密的加速方法和系统
CN108616351B (zh) * 2018-03-26 2020-09-18 山东大学 一种全动态加密解密方法及加密解密装置
CN109687954B (zh) * 2018-12-25 2022-05-13 贵州华芯通半导体技术有限公司 用于算法加速的方法和装置
CN109600217A (zh) * 2019-01-18 2019-04-09 江苏实达迪美数据处理有限公司 在并行操作模式中优化sm4加密和解密的方法及处理器
CN110336658B (zh) * 2019-07-01 2023-03-21 武汉能钠智能装备技术股份有限公司 基于aes算法的加密方法、用户设备、存储介质及装置
KR20210007068A (ko) 2019-07-09 2021-01-20 삼성디스플레이 주식회사 표시 장치 및 그 구동 방법
US10972256B2 (en) * 2019-07-18 2021-04-06 Ante Deng Architectural secure system for digital file in cyberspace
CN111324383B (zh) * 2020-02-28 2022-05-10 西安微电子技术研究所 一种基于risc-v指令扩展的安全协处理器结构
KR20210116834A (ko) 2020-03-17 2021-09-28 삼성디스플레이 주식회사 표시 장치 및 그 구동 방법
US11296876B1 (en) 2020-09-11 2022-04-05 Rockwell Collins, Inc. Parallel cross-domain guard engines with sequential cryptographic controls
IT202100016910A1 (it) * 2021-06-28 2022-12-28 St Microelectronics Srl Procedimento per eseguire operazioni di crittografia in un dispositivo di elaborazione, corrispondenti dispositivo di elaborazione e prodotto informatico
CN113282947A (zh) * 2021-07-21 2021-08-20 杭州安恒信息技术股份有限公司 一种基于sm4算法的数据加密方法、装置及计算机平台
CN114495474B (zh) * 2022-02-16 2022-11-22 青岛克莱玛物联技术有限公司 一种无线遥控装置
CN116186747A (zh) * 2023-04-27 2023-05-30 暗链科技(深圳)有限公司 自适应哈希加密方法、非易失性可读存储介质及电子设备

Family Cites Families (17)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP3864675B2 (ja) * 2000-03-09 2007-01-10 株式会社日立製作所 共通鍵暗号装置
KR20020087331A (ko) * 2001-05-14 2002-11-22 최병윤 부분 라운드간 파이프라인 기법을 이용한 AES Rijndael암호 및 복호 회로
US7289524B2 (en) * 2001-10-04 2007-10-30 Bbn Technologies Corp. Execution unit for a network processor
US20040202317A1 (en) * 2002-12-20 2004-10-14 Victor Demjanenko Advanced encryption standard (AES) implementation as an instruction set extension
JP2006527865A (ja) * 2003-06-16 2006-12-07 エレクトロニクス アンド テレコミュニケーションズ リサーチ インスチチュート ラインドールブロック暗号化装置、及びその暗号化並びに復号化方法
US7697681B2 (en) * 2004-02-06 2010-04-13 Nortel Networks Limited Parallelizable integrity-aware encryption technique
US20060023875A1 (en) * 2004-07-30 2006-02-02 Graunke Gary L Enhanced stream cipher combining function
WO2006112114A1 (ja) 2005-03-31 2006-10-26 Matsushita Electric Industrial Co., Ltd. データ暗号化装置及びデータ暗号化方法
JP4890976B2 (ja) * 2005-08-31 2012-03-07 キヤノン株式会社 暗号処理装置
RU2008125109A (ru) 2005-11-23 2009-12-27 Конинклейке Филипс Электроникс, Н.В. (Nl) Многоканальное высокоскоростное шифрование и дешифрование
US8036379B2 (en) * 2006-03-15 2011-10-11 Microsoft Corporation Cryptographic processing
US7428306B2 (en) * 2006-04-18 2008-09-23 International Business Machines Corporation Encryption apparatus and method for providing an encrypted file system
KR100922728B1 (ko) * 2006-12-05 2009-10-22 한국전자통신연구원 Aes 암복호화 장치 및 암복호화 방법
US8036377B1 (en) * 2006-12-12 2011-10-11 Marvell International Ltd. Method and apparatus of high speed encryption and decryption
CN101114903B (zh) * 2007-03-05 2011-10-26 中兴通讯股份有限公司 一种吉比特无源光网络系统中高级加密标准加密装置及其实现方法
US7752592B2 (en) * 2007-10-10 2010-07-06 International Business Machines Corporation Scheduler design to optimize system performance using configurable acceleration engines
US8194854B2 (en) 2008-02-27 2012-06-05 Intel Corporation Method and apparatus for optimizing advanced encryption standard (AES) encryption and decryption in parallel modes of operation

Also Published As

Publication number Publication date
CN101520966A (zh) 2009-09-02
CN101520966B (zh) 2013-06-12
KR20090092735A (ko) 2009-09-01
US20090214026A1 (en) 2009-08-27
EP2096787A2 (en) 2009-09-02
EP2096787A3 (en) 2010-12-01
EP2096787B1 (en) 2015-09-23
US8600049B2 (en) 2013-12-03
KR101068367B1 (ko) 2011-09-28
US8194854B2 (en) 2012-06-05
JP2009205161A (ja) 2009-09-10
US20120224687A1 (en) 2012-09-06

Similar Documents

Publication Publication Date Title
JP5020987B2 (ja) パラレル・モードでの先進暗号化標準(aes)の暗号化および復号を最適化する方法および装置
JP6592804B2 (ja) 新暗号規格(aes)向けの柔軟なアーキテクチャおよび命令
US8879725B2 (en) Combining instructions including an instruction that performs a sequence of transformations to isolate one transformation

Legal Events

Date Code Title Description
A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20110927

A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20111114

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: 20120515

A01 Written decision to grant a patent or to grant a registration (utility model)

Free format text: JAPANESE INTERMEDIATE CODE: A01

A61 First payment of annual fees (during grant procedure)

Free format text: JAPANESE INTERMEDIATE CODE: A61

Effective date: 20120613

R150 Certificate of patent or registration of utility model

Ref document number: 5020987

Country of ref document: JP

Free format text: JAPANESE INTERMEDIATE CODE: R150

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

Free format text: PAYMENT UNTIL: 20150622

Year of fee payment: 3

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

LAPS Cancellation because of no payment of annual fees