JP4767985B2 - 複数モードでのaes暗号化または復号の単一命令での実行 - Google Patents

複数モードでのaes暗号化または復号の単一命令での実行 Download PDF

Info

Publication number
JP4767985B2
JP4767985B2 JP2008064272A JP2008064272A JP4767985B2 JP 4767985 B2 JP4767985 B2 JP 4767985B2 JP 2008064272 A JP2008064272 A JP 2008064272A JP 2008064272 A JP2008064272 A JP 2008064272A JP 4767985 B2 JP4767985 B2 JP 4767985B2
Authority
JP
Japan
Prior art keywords
value
operand
result
aes
instruction
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.)
Active
Application number
JP2008064272A
Other languages
English (en)
Other versions
JP2008283672A (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 JP2008283672A publication Critical patent/JP2008283672A/ja
Application granted granted Critical
Publication of JP4767985B2 publication Critical patent/JP4767985B2/ja
Active legal-status Critical Current
Anticipated expiration legal-status Critical

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
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F21/00Security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
    • 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
    • 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/0637Modes of operation, e.g. cipher block chaining [CBC], electronic codebook [ECB] or Galois/counter mode [GCM]
    • 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

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Software Systems (AREA)
  • Computer Security & Cryptography (AREA)
  • Computer Networks & Wireless Communication (AREA)
  • Signal Processing (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Computer Hardware Design (AREA)
  • Storage Device Security (AREA)
  • Executing Machine-Instructions (AREA)

Description

特許請求される本発明の実装はプロセッサに、より詳細にはプロセッサに先進暗号化標準(AES: Advanced Encryption Standard)の暗号化または復号を実行させるための命令に関しうる。
AESは米国国立標準技術研究所(NIST: National Institute of Standards and Technology)からの先進的な暗号化標準であり、FIPS Publication 197において定義されている。AESは可変鍵サイズを有しうる。受け容れられる鍵サイズは3つある:128ビット、192ビットおよび256ビットである。AES暗号化は、128ビットの平文入力および鍵を受け、次いで128ビットの暗号文(たとえば、AES暗号化された平文)出力を生成する。同様に、AES復号は逆の動作を実行し、128ビットの暗号文および鍵を受け、128ビットの平文を生成する。
AESは多くの動作モードで使用できる。より一般的なモードの一つはいわゆる暗号ブロック連鎖(CBC: Cipher-Block Chaining)モードである。若干一般性の下がるモードの一つはいわゆる電子コードブック(ECB: Electronic Codebook)モードである。他のモードも可能であり、たとえば概念的にECBに類似した、台頭しつつあるいわゆるカウンター・モード(CTR)といったものがある。
コンピューティング・システムにおいて、AES暗号化および/または復号専用プロセッサのための命令(単数または複数)を有することが望ましいことがありうる。
本明細書に組み込まれ、その一部をなす付属の図面は、本発明の原理と整合する一つまたは複数の実装を例示し、本記載とともにそのような実装を説明する。図面は必ずしも縮尺通りではなく、むしろ本発明の原理を例示することに力点が置かれている。
以下の詳細な記述は、付属の図面を参照する。異なる図面において同じまたは同様の要素を同定するために同じ参照符号が使用されることがある。以下の記述では、限定ではなく説明の目的で、特許請求される本発明のさまざまな側面の十全なる理解を提供するために特定の構造、アーキテクチャ、インターフェース、技法などといった個別的な詳細が述べられるが、本開示の恩恵を有する当業者には、特許請求される本発明のさまざまな側面が、これらの個別的な詳細からは外れる他の例において実施されてもよいことは明らかであろう。場合によっては、よく知られた装置、回路および方法の記述は、本発明の記載を無用な詳細でかすませないよう、省略される。
〈概要〉
本願はAES暗号化および/または復号を実行するための命令をプロセッサ中に含める方法、装置およびシステムの諸実施形態を記載する。二つのそのような命令は:
AESENCRYPT (arg1)xmmdestination, (arg2)xmmsource/memory
AESDECRYPT (arg1)xmmdestination, (arg2)xmmsource/memory
xmmsource/memoryは暗号化の場合に使われる平文を供給し、xmmdestinationが暗号文となる。復号の場合、役割が反対になり、sourceが暗号文、destinationが平文となる。実装によっては、両方のオペランドが暗号化または復号するために使われてもよい。これについてはのちにさらに説明する。いずれの場合にも、暗号鍵は、一つまたは複数の128ビットの暗黙的レジスタ(たとえばのちにより詳細に述べるようなXMM0およびXMM1)を通じてAESENCRYPTおよび/またはAESDECRYPT命令に供給される。
以下の記述の多くは暗号化命令AESENCRYPTに焦点を当てることになるが、暗号技術の当業者は、復号命令AESDECRYPTが復号のために同様の仕方で代用され、および/または使用されてもよいことを理解するであろう。主としてAESENCRYPTを記述するのは、純粋に明快および記述の便のためであり、前記命令の一方が他方よりいささかなりとも重要であると示すものではない。
〈コンピュータ・システム〉
図1は、本発明のある実施形態に基づく例示的なコンピュータ・システム100を示している。コンピュータ・システム100は、情報を通信するための相互接続101を含む。相互接続101は、マルチドロップ・バス、一つまたは複数のポイントツーポイント相互接続または両者の任意の組み合わせならびに他の任意の通信ハードウェアおよび/またはソフトウェアを含みうる。
図1は、相互接続101に結合された、情報を処理するためのプロセッサ109を示している。プロセッサ109は、CISCまたはRISC型アーキテクチャを含む任意の型のアーキテクチャの中央処理ユニット(central processing unit)を表す。
コンピュータ・システム100はさらに、相互接続101に結合された、情報およびプロセッサ109によって実行されるべき命令を保存するランダムアクセスメモリ(RAM)または他の動的記憶装置(メイン・メモリ104と称される)を含む。メイン・メモリ104は、プロセッサ109による命令の実行の間、一時変数または他の中間情報を保存するためにも使用されうる。
コンピュータ・システム100は、相互接続101に結合された、プロセッサ109のための静的な情報および命令を保存するための、読み出し専用メモリ(ROM)106および/または他の静的記憶装置をも含む。情報および命令を保存するためにデータ記憶装置107が相互接続101に結合されている。
図1が示すところでは、プロセッサ109は実行ユニット130、レジスタ・ファイル150、キャッシュ160、デコーダ165および内部相互接続170を含む。もちろん、プロセッサ109は、追加的な回路を含むが、本発明を理解するのに必要ではない。
デコーダ165は、プロセッサ109によって受領された命令をデコードするためであり、実行ユニット130はプロセッサ109によって受領された命令を実行するためである。汎用プロセッサにおいて典型的に実装される命令を認識することに加えて、デコーダ165および実行ユニット130は、ここに記載されるようなAES暗号化または復号(AESENCRYPTまたはAESDECRYPT)動作を実行するための命令を認識する。デコーダ165および実行ユニット130は、パックされたデータおよびパックされていないデータの両方に対してAESENCRYPTまたはAESDECRYPT動作を実行するための命令を認識する。
実行ユニット130は、内部相互接続170によってレジスタ・ファイル150に結合されている。ここでもまた、内部相互接続170は必ずしもマルチドロップ・バスでなくてもよく、代替的な実施形態ではポイントツーポイント相互接続または他の型の通信経路であってよい。
レジスタ・ファイル(単数または複数)150は、データを含め情報を記憶するためのプロセッサ109の記憶領域を表している。本発明の一つの側面は、パックされたデータおよびパックされていないデータに対してAESENCRYPTまたはAESDECRYPT動作を実行するための記載されている命令の諸実施形態であることが理解される。本発明のこの側面によれば、データを記憶するために使われる記憶領域は決定的ではないが、のちに図2を参照してレジスタ・ファイル150の諸実施形態について述べる。
実行ユニット130はキャッシュ160およびデコーダ165に結合されている。キャッシュ160は、たとえばメイン・メモリ104からの、データおよび/または制御信号をキャッシュするために使われる。デコーダ165はプロセッサ109によって受領された命令を制御信号および/またはマイクロコード入口点にデコードするために使われる。これらの制御信号および/またはマイクロコード入口点は、デコーダ165から実行ユニット130に回送されうる。
これらの制御信号および/またはマイクロコード入口点に応答して、実行ユニット130は適切な動作を実行する。たとえば、AESENCRYPTまたはAESDECRYPT命令が受領される場合、デコーダ165は実行ユニット130に、要求されたビット暗号化または復号を実行させる。少なくともいくつかの実施形態については、実行ユニット130は一つまたは複数の鍵を使って128ビットの平文を暗号化するか128ビットの暗号文を復号するかしうる(たとえば暗号回路145参照)。
デコーダ165は、異なる機構をいくつ使って実装されてもよい(たとえばルックアップテーブル、ハードウェア実装、PLAなど)。こうして、デコーダ165および実行ユニット130によるさまざまな命令の実行がここでは一連のif/then文によって表されるかもしれないが、命令の実行がこれらのif/then文のシリアル処理を要求するものではないことは理解される。むしろ、このif/then処理を論理的に実行する任意の機構が本発明の範囲内であると考えられる。
図1はさらに、データ記憶装置107(たとえば磁気ディスク、光ディスクおよび/または他の機械可読媒体)がコンピュータ・システム100に結合されることができることを示している。さらに、データ記憶装置107は、プロセッサ109による実行のためのコード195を含むよう示されている。コード195は、AESENCRYPTまたはAESDECRYPT命令142の一つまたは複数の実施形態を含むことができ、いくらでもあるセキュリティ関係の目的のためにプロセッサ109に該AESENCRYPTまたはAESDECRYPT命令(単数または複数)142でビットAES暗号化または復号を実行させるよう書かれることができる。
コンピュータ・システム100はまた、相互接続101を介して、コンピュータ・ユーザーに対して情報を表示するために、表示装置121にも結合されることができる。表示装置121はフレーム・バッファ、特化したグラフィクス・レンダリング装置、液晶ディスプレイ(LCD)および/またはフラットパネルディスプレイを含むことができる。
プロセッサ109に情報およびコマンド選択を通信するため、英数字およびその他のキーを含む入力装置122が相互接続101に結合されていてもよい。もう一つの型のユーザー入力装置は、プロセッサ109に方向情報およびコマンド選択を通信し、表示装置121上でのカーソルの動きを制御するためのマウス、トラックボール、ペン、タッチスクリーンまたはカーソル方向キーといったカーソル・コントロール123である。この入力装置は典型的には、第一の軸(たとえばx)および第二の軸(たとえばy)の2つの軸における2つの自由度を有し、それにより該装置は平面内で位置を指定できる。しかしながら、本発明は二自由度しかもたない入力装置に限定されるべきではない。
相互接続101に結合されてもよいもう一つの装置は、ハードコピー装置124である。これは命令、データまたは他の情報を紙、フィルムまたは同様な型の媒体といった媒体上にプリントするために使用されうるものである。さらに、コンピュータ・システム100は音記録および/または再生のための装置125に結合されることができる。情報を記録するためのマイクロホンに結合されたオーディオ・デジタイザといったものである。さらに、装置125は、デジタル化された音を再生するためにデジタル‐アナログ(D/A)変換器に結合されたスピーカーを含んでいてもよい。
コンピュータ・システム100はコンピュータ・ネットワーク(たとえばLAN)内の端末であることができる。その場合、コンピュータ・システム100はコンピュータ・ネットワークのコンピュータ・サブシステムであろう。コンピュータ・システム100は任意的に、ビデオ・デジタル化装置126および/または通信装置190(たとえばシリアル通信チップ、ワイヤレス・インターフェース、イーサネット(登録商標)チップまたはモデムで、これは外部装置またはネットワークとの通信を提供する)を含む。ビデオ・デジタル化装置126は、コンピュータ・ネットワーク上で他者に送信されることができるビデオ画像を取り込むために使うことができる。
少なくとも一つの実施形態については、プロセッサ109は、既存のプロセッサ(たとえば米国カリフォルニア州サンタクララのインテル・コーポレイションによって製造されるインテル(登録商標)ペンティアム(登録商標)プロセッサ、インテル(登録商標)ペンティアム(登録商標)プロ・プロセッサ、インテル(登録商標)ペンティアム(登録商標)IIプロセッサ、インテル(登録商標)ペンティアム(登録商標)IIIプロセッサ、インテル(登録商標)ペンティアム(登録商標)4プロセッサ、インテル(登録商標)アイテニアム(登録商標)プロセッサ、インテル(登録商標)アイテニアム(登録商標)2プロセッサまたはインテル(登録商標)コア(商標)デュオ・プロセッサ)によって使用される命令セットと互換な命令セットをサポートする。結果として、プロセッサ109は、本発明の動作に加えて、既存のプロセッサ動作をサポートできる。プロセッサ109は、一つまたは複数のプロセス技術における製造のために好適でありえ、機械可読媒体上に十分な詳細さで表現されることによって前記製造を容易にするのに好適でありうる。本発明は以下ではx86ベースの命令セットに組み込まれるものとして記載されるが、代替的な諸実施形態は本発明を他の命令セットに組み込むことができる。たとえば、本発明は、x86ベースの命令セット以外の命令セットを使って64ビット・プロセッサに組み込まれることができる。
図2は、本発明の一つの代替的な実施形態に基づく前記プロセッサのレジスタ・ファイルを示している。レジスタ・ファイル150は、制御/状態情報、整数データ、浮動小数点データおよびパックされたデータを含む情報を記憶するために使用されうる。図2に示される実施形態では、レジスタ・ファイル150は整数レジスタ201、レジスタ209、状態レジスタ208、拡張レジスタ210および命令ポインタ・レジスタ211を含む。状態レジスタ208、命令ポインタ・レジスタ211、整数レジスタ201、レジスタ209はみな内部相互接続170に結合されている。さらに、拡張レジスタ210も内部相互接続170に結合されている。内部相互接続170は、必ずしもそうである必要はないが、マルチドロップ・バスであってもよい。内部相互接続170はその代わり、ポイントツーポイント相互接続を含む他の任意の種別の通信経路であってもよい。
少なくとも一つの実施形態については、拡張レジスタ210は、パックされた整数データおよびパックされていない浮動小数点データの両方について使用される。代替的な実施形態については、拡張レジスタ210はスカラー・データ、パックされたブーリアン・データ、パックされた整数データおよび/またはパックされた浮動小数点データのために使用されうる。もちろん、本発明の広義の範囲から外れることなく、代替的な実施形態が、より多いまたはより少ないレジスタのセット、各セット中のより多いまたはより少ないレジスタあるいは各レジスタ中のより多いまたはより少ないデータ記憶ビットを含むよう実装されてもよい。
少なくとも一つの実施形態については、整数レジスタ201は32ビットを記憶するよう実装され、レジスタ209は80ビットを記憶するよう実装され(浮動小数点データを記憶するためには80ビットすべてが使われる一方、パックされたデータのために使われるのは64のみ)、拡張レジスタ210は128ビットを記憶するよう実装される。さらに、拡張レジスタ210は8つのレジスタXR0 213aないしXR7 213hを含みうる。XR0 213a、XR1 213bおよびXR2 213cはレジスタ210内の個々のレジスタの例である。たとえば、128ビットの拡張レジスタ210は、AESENCRYPT命令の一方または両方のオペランドを提供するために使用されてもよいし、AESENCRYPT命令によって使われる暗黙的なレジスタ(たとえばXMM0およびXMM1)の一方または両方を提供するために使用されてもよい。
もう一つの実施形態については、整数レジスタ201はそれぞれ64ビットを含み、拡張レジスタ210はそれぞれ64ビットを含み、拡張レジスタ210は16のレジスタを含む。ある実施形態については、拡張レジスタ210の二つのレジスタがペアとして作用されてもよい。さらにもう一つの代替的な実施形態では、拡張レジスタ210は32のレジスタを含んでいてもよい。
〈AES暗号化および/または復号動作(単数または複数)〉
図3は、ECBモードで使われるAES暗号化命令(AESENCRYPT Arg1, Arg2)310を概念的に図解している。図のように、AESENCRYPT310は二つのオペランドを有し、その一方Arg2が暗号化されるべき平文を供給する。暗号化された暗号文はAESENCRYPT310のArg1に書き込まれる。暗号鍵は暗黙的な128ビットレジスタXMM0およびXMM1の一つまたは複数から供給される。たとえば暗号鍵が128ビットの長さである場合、諸レジスタXMM0の一つによって供給されてもよい。そのような場合、他方のレジスタXMM1は、図4に関連して述べるように、別の役割で使用されうる。
図3で見て取れるように、AESENCRYPT310は、ECBモードでは、Arg2からの平文を鍵を用いて暗号化することによって使用される。AESENCRYPT310が動作するモード(たとえばECB、CBCなど)を決定する一つの方式は、該モードを決定するためにオペランドを使うことである。ある実装では、AESENCRYPT310はそのオペランドArg1とArg2を排他的OR(XOR)で演算してからその結果を前記鍵で暗号化する。そのような方式は、図4との関連でさらに詳細に述べるが、AESENCRYPT310への一つまたは二つの入力を有効にする。図3に示されるようなECBモードについてのArg2のように、一つのみの入力が所望される場合、他方のオペランドArg1は0にセットされてもよい。それによりAESENCRYPT310によるXOR演算は、前記鍵による暗号化のために、単に第一のオペランドArg2を与える。このXOR方式がCBCおよびCTRモードについてどのように使用されうるかは、図5ないし図9に関連してさらに述べることになる。
AESENCRYPT310がどのモードで動作するかを決定するもう一つの方式(図示せず)は、AESENCRYPT310命令において、前記二つのオペランドArg1およびArg2に加えて即値バイト(immediate byte)を用いるというものでありうる。この第二の方式は、オペランドどうしがXORされた前記第一の方式とは対照的に、即値バイトの内容に基づいてAESENCRYPT310のオペランドの一方を使うか両方を使うかおよび/またはどのように使うかを指定しうる。AESENCRYPT310(またはAESDECRYPT)のような単一の2オペランド命令を複数の異なるモード(たとえばECB、CBC、CTRなど)で使えるようにするために、これら二つ以外の他の方式が可能であり、考えられている。
図4は、ECBモードでAESENCRYPT310を使うための例示的なコード(たとえば、プロセッサ190によって実行されたときに方法をなすもの)410を示している。まず、暗号鍵が暗黙的レジスタXMM0の一つにロードされる(MOV命令または同様の命令を介して)。次いで値(たとえば16)が別のレジスタECXにロードされうる(MOV命令または同様の命令を介して)。これはAES暗号化すべき平文の128ビット・ブロックの数をセットするためである。この値に128ビットを乗算したものがコード410によって暗号化されるべき平文の全長さを指定しうる。そのような初期化後、AESENCRYPT310を含むループがECX回実行されうる。
ループ内では、第二の暗黙的レジスタXMM1が、値0をロードすることによって、ECBモードのためにクリアされる。上に説明したように、この0という値はAESENCRYPT310によって第二のオペランドとXORされたとき、第二のオペランドを生じるが、それはECBモードで動作するための所望の結果である。次の命令に目を転じると、AESENCRYPT310はPlainmemory[ECX]内に平文を受け、該平文をXMM0内の鍵で暗号化し、その結果を第二の暗黙的レジスタXMM1に書き込む。次に、XMM1内の暗号文がCiphermemory[ECX]に記憶され、ECX内のループ値がデクリメントされてからループの先頭にジャンプして戻る。
次のループにおいて、XMM1は再びクリアされ、直前の128ビットについての前記の暗号化結果がクリアされる。このようにして、AESENCRYPT310は、ECX内のデクリメントされた値についてXMM0内の鍵によって暗号化されるべきPlainmemory[ECX]の単一の入力をもつ。コード410のループ実行は、ECXにロードされた初期値によって指定される平文の全ブロックがECBモードでAES暗号化されるまで継続しうる。
図5は、CBCモードで使われるAES暗号化命令(AESENCRYPT Arg1, Arg2)310を概念的に図解している。図のように、AESENCRYPT310は二つのオペランドを有し、その一方Arg2が暗号化されるべき平文を供給する。CBCモードでは、他方のオペランドArg1は先の暗号化されたブロックからのいわゆる「古い」暗号文を提供し、これが暗号化の前にAESENCRYPT310によって平文とXORされる。暗号鍵は暗黙的な128ビットレジスタXMM0およびXMM1の一つまたは複数から供給される。現在ブロックについての暗号化された暗号文がAESENCRYPT310のArg1に上書きされる。
図6は、CBCモードで使われる二つの連鎖されたAES暗号化命令600を概念的に示している。これはCBCモードの時間的性質を視覚的に示している(時間的に先の動作が図の左に現れている)。ここで、直前の暗号化ブロックの結果が新しい平文とXORされている。これはECBよりもランダムな暗号文を生成する(たとえば、ECBモードでは、鍵が同じなら、同じ平文ブロックは同じ暗号文ブロックに暗号化される)。図6に示されるようなCBCモードでは、平文の所与のブロックについての暗号文は、直前のラウンドの暗号文結果に依存する。
図7は、CBCモードでAES暗号化命令を使うための例示的なコード(たとえば、プロセッサ190によって実行されたときに方法をなすもの)710を示している。まず、暗号鍵が暗黙的レジスタXMM0の一つにロードされる(MOV命令または同様の命令を介して)。次いで値(たとえば16だが、この数はより大きくてもより小さくてもよい)が別のレジスタECXにロードされうる(MOV命令または同様の命令を介して)。これはAES暗号化すべき平文の128ビット・ブロックの数をセットするためである。この値に128ビットを乗算したものがコード710によって暗号化されるべき平文の全長さを指定しうる。また、最初にループを通る際、XMM1は0をロードすることによってクリアされうる。最初のブロックの平文と組み合わせるべき先行ブロックからの暗号文がないからである。そのような初期化後、AESENCRYPT310を含むループがECX回実行されうる。
ループ内では、AESENCRYPT310はPlainmemory[ECX]内に平文を受け、それをXMM1内の値(たとえば、最初にループを通るときについては0)とXORし、XORされた結果をXMM0内の鍵で暗号化し、その結果を第二の暗黙的レジスタXMM1に書き込み、すでにそこにあった値を上書きする。次に、XMM1内の暗号文がCiphermemory[ECX]に記憶され、ECX内のループ値がデクリメントされてからループの先頭にジャンプして戻る。
次のループにおいて、ECBモードとは異なり、直前の128ビットについてのXMM1内の0でない暗号文結果はクリアされない。むしろ、該結果は、AESENCRYPT310によって、平文の次のブロックと、CBCモードに基づく鍵による暗号化に先立ってXORされる。このようにして、AESENCRYPT310は、ECX内のデクリメントされた値についてのPlainmemory[ECX]および直前のループからのXMM1内の暗号文の値の二重の入力をもつ。AESENCRYPT310命令はそれら二つの入力をXORし、その結果をXMM0内の鍵で暗号化する。コード410のループ実行は、ECXにロードされた初期値によって指定される平文の全ブロックがCBCモードでAES暗号化されるまで継続しうる。
上記の方式およびシステムは、単一の2オペランド命令を使ってCBCモードおよびECBモードの暗号化を有利に実行しうる。この命令は、AESについて、その最も一般的な二つのモードにおいてよりタイトなループを許容する。本命令は、限られた数のオペランドで機能し、AESの最も一般的な使用を、二番目に最も高頻度の使用をサポートする単一命令に移す。
図8は、CTRモードで使われるAES暗号化命令(AESENCRYPT Arg1, Arg2)810を概念的に図解している。図のように、AESENCRYPT810は二つのオペランドを有し、その一方Arg2が暗号化されるべきカウンター値を供給する。CTRモードでは、他方のオペランドArg1が暗号化されるべき平文を提供する。これが暗号化後にAESENCRYPT810によって平文とXORされる。暗号鍵は暗黙的な128ビットレジスタXMM0およびXMM1の一つまたは複数から供給される。現在ブロックについての暗号化された暗号文がAESENCRYPT810のArg1に上書きされる。
図9は、CTRモードでAES暗号化命令を使うための例示的なコード(たとえば、プロセッサ190によって実行されたときに方法をなすもの)910を示している。まず、暗号鍵が暗黙的レジスタXMM0の一つにロードされる(MOV命令または同様の命令を介して)。次いで値(たとえば16だが、この数はより大きくてもより小さくてもよい)が別のレジスタECXにロードされうる(MOV命令または同様の命令を介して)。これはAES暗号化すべき平文の128ビット・ブロックの数をセットするためである。この値に128ビットを乗算したものがコード910によって暗号化されるべき平文の全長さを指定しうる。次に、カウンター値が別のXMMレジスタ(XMM4のような)にロードされる(MOV命令または同様の命令を介して)。そのような初期化後、AESENCRYPT810を含むループがECX回実行されうる。
ループ内では、AESENCRYPT810はカウンター値を受け、実際には該カウンター値を暗号化し、次いで平文データとのXORを実行して暗号文を生成する。次にXMM3内の暗号文がCiphermemory[ECX]に記憶され、ECX内のループ値がデクリメントされてからループの先頭にジャンプして戻る。その後、カウンターは適宜調整される(ADD、MULまたは他の命令を介して)。その他の点ではループはECBモードと同一に進行する。
一つまたは複数の実装の以上の記述は、例示と説明を提供するが、網羅的であることは意図されておらず、本発明の範囲を厳密な開示された形に限定することも意図されていない。上記の教示に照らして修正および変形が可能であり、本発明のさまざまな実装の実践から獲得されうる。
たとえば、AES暗号化および復号は128ビット鍵について記載されてきたが、FIPS Publication 197におけるNIST標準は192ビットおよび256ビット鍵を許容している。そのような場合、192ビットまたは256ビット鍵における残りの64ビットまたは128ビットのためにXMM1が使用されてもよい。そのような場合、コード410またはコード710またはコード910(またはAESENCRYPTまたはAESDECRYPTがあるどんなコードでも)においてXMM1の代わりに他の何らかの128ビットレジスタ(たとえばXMM2、XMM3など)が使用されてもよい。XMM1内には鍵の一部があるからである。
上記ではAESENCRYPTについて記載しているが、同様の仕方でECBモード、CTRモードおよびCBCモードにおけるAES復号をサポートするためにAESDECRYPT Arg1, Arg2が使用されてもよい。当業者は、ECBモードでのAESDECRYPTの使用は比較的ストレートであり、一方、CBCモードは、暗号化の際にAESENCRYPTによって実行されたXOR演算の逆または反対といった追加的な計算を伴うことがあると認識するであろう。
AESENCRYPTおよびAESDECRYPTが厳密にどのようにしてAESアルゴリズムを実行するかの詳細が呈示されていないが、それは十分に暗号技術の当業者の技量の範囲内であるということも認識しておくべきである。具体的な実装は、AESENCRYPTおよびAESDECRYPTが実行される具体的なプロセッサ190について最適化されている傾向がありうる。実装によっては、これらの命令は可能な最も高速な実行のために機械語で最適化されてもよい。そのような最適化の詳細は、特許請求される本発明にとって格別密接なつながりがあるわけではなく、説明の明確のため省略した。
本願の記載において使用されるいかなる要素、工程、命令も、明示的にそう述べられていない限り、本発明にとって決定的に重要とも本質的とも解釈されるべきではない。また、ここでの用法では、単数形の表現が一つまたは複数を含むことを意図していることがある。特許請求される発明の上記の実装に対して、本発明の精神および原理から実質的に外れることなく変形および修正がなされてもよい。そのようなすべての修正および変形は、ここに本開示の範囲内に含められ、付属の請求項によって保護されることが意図されている。
いくつかの実装に基づく例示的なコンピュータ・システムを示す図である。 いくつかの実装に基づくプロセッサのレジスタ・ファイルを示す図である。 ECBモードで使用されるAES暗号化命令を概念的に示す図である。 ECBモードでAES暗号化命令を使うための例示的なコードを示す図である。 CBCモードで使われるAES暗号化命令を概念的に示す図である。 CBCモードで使われる二つの連鎖されたAES暗号化命令を概念的に示す図である。 CBCモードでAES暗号化命令を使うための例示的なコードを示す図である。 CTRモードで使われるAES暗号化命令を概念的に示す図である。 CTRモードでAES暗号化命令を使うための例示的なコードを示す図である。
符号の説明
100 コンピュータ・システム
101 相互接続
104 メイン・メモリ
106 ROM
107 データ記憶装置
109 プロセッサ
121 表示装置
122 入力装置
123 カーソル・コントロール
124 ハードコピー装置
125 音記録/再生装置
126 ビデオ
130 実行ユニット
145 暗号回路
150 レジスタ・ファイル
160 キャッシュ
165 デコーダ
170 内部相互接続
190 通信装置
201 整数レジスタ
207 制御信号
208 状態レジスタ
209 レジスタ
210 拡張レジスタ
211 命令ポインタ・レジスタ
310 AES暗号化命令
410 ECBモードでAESENCRYPTを使うためのコード
600 CBCモードで使われる二つの連鎖されたAES暗号化命令
710 CBCモードでAES暗号化命令を使うためのコード
810 CTRモードで使われるAES暗号化命令
910 CTRモードでAES暗号化命令を使うためのコード

Claims (22)

  1. 命令が記憶されている機械可読媒体であって、該命令は、機械によって実行された場合に該機械をして:
    前記命令の第一のオペランドと前記命令の第二のオペランドを組み合わせて結果を生成する段階であって、前記命令は先進暗号化標準(AES)動作の複数のモードにおいて使用されるものであり、前記第一のオペランドは複数のモードのうちの一つのモードを決めるために使われる、段階と;
    AESアルゴリズムに従って、暗黙的レジスタによって供給される鍵を使って前記結果を暗号化して暗号化された結果を生成する段階と
    前記暗号化された結果を前記命令の前記第一のオペランドの位置に置く段階とを有する方法を実行させ
    第一のモードにおいては、前記命令に応答して第一のループが実行され、第一のループでは、前記第一のオペランドをクリアし、第一のメモリの、カウンタ値によって示される位置から得られる前記第二のオペランドによって供給される平文値を、前記第一のオペランドによって供給される第二の値と論理的に組み合わせて前記結果を生成し、AESアルゴリズムおよび前記鍵を使って前記結果を暗号化して前記暗号化された結果を生成し、前記暗号化された結果を第二のメモリの、前記カウンタ値によって示される位置に記憶し、前記カウンタ値をデクリメントし、前記カウンタ値が所定の値に達するまで前記第一のループを再実行し;
    第二のモードにおいては、前記命令に応答して前記第一のオペランドがクリアされ、その後、第二のループが実行され、第二のループでは、前記平文値を前記第二の値と論理的に組み合わせて前記結果を生成し、AESアルゴリズムおよび前記鍵を使って前記結果を暗号化して前記暗号化された結果を生成し、前記暗号化された結果を前記カウンタ値によって示される第二のメモリの位置に記憶し、前記カウンタ値をデクリメントし、前記カウンタ値が前記所定の値に達するまで前記第二のループを再実行する
    機械可読媒体。
  2. 前記組み合わせることが:
    前記命令の第一のオペランドと前記命令の第二のオペランドとの排他的ORを求め、前記結果を生成することを含む、
    請求項1記載の媒体。
  3. 前記暗号化することが:
    前記鍵を一つまたは複数の所定のレジスタから取得することを含む、請求項1記載の媒体。
  4. 前記鍵が128ビット、192ビットまたは256ビットの長さである、請求項3記載の媒体。
  5. 前記第二のオペランドが、128ビットの長さである、暗号化されるべき平文である、請求項1記載の媒体。
  6. 前記第一のオペランドが0である、請求項5記載の媒体。
  7. 前記第一のオペランドが先行する暗号化動作からの先行する暗号化された結果である、請求項5記載の媒体。
  8. 第一のオペランドおよび第二のオペランドを含み、複数の先進暗号化標準(AES)モードにおいて使用できる単一の命令に応答して、前記第二のオペランドによって供給される平文の値を前記第一のオペランドによって供給される第二の値と論理的に組み合わせて組み合わされた結果を生成し、AESアルゴリズムおよび暗黙的レジスタによって供給される鍵を使って前記組み合わされた結果を暗号化して暗号化された結果を生成する第一の論理を有し、前記第一のオペランドは複数のAESモードのうちの一つのモードを決めるために使われ
    前記第一のオペランドは複数のAESモードのうちの一つのモードを決めるために使われ、第一のモードにおいては、前記単一の命令に応答して第一のループが実行され、第一のループでは、前記第一のオペランドをクリアし、カウンタ値によって示される第一のメモリの位置から得られる前記第二のオペランドによって供給される平文値を、前記第一のオペランドによって供給される第二の値と論理的に組み合わせて前記結果を生成し、AESアルゴリズムおよび前記鍵を使って前記結果を暗号化して前記暗号化された結果を生成し、前記暗号化された結果を前記カウンタ値によって示される第二のメモリの位置に記憶し、前記カウンタ値をデクリメントし、前記カウンタ値が所定の値に達するまで前記第一のループを再実行し;
    第二のモードにおいては、前記命令に応答して前記第一のオペランドがクリアされ、その後、第二のループが実行され、第二のループでは、前記平文値を前記第二の値と論理的に組み合わせて前記結果を生成し、AESアルゴリズムおよび前記鍵を使って前記結果を暗号化して前記暗号化された結果を生成し、前記暗号化された結果を前記カウンタ値によって示される第二のメモリの位置に記憶し、前記カウンタ値をデクリメントし、前記カウンタ値が前記所定の値に達するまで前記第二のループを再実行する、
    暗号化を実行するプロセッサ。
  9. 前記第一の論理が、前記平文の値と前記第二の値との排他的OR(XOR)を求めて前記組み合わされた結果を生成するよう構成されている、請求項8記載のプロセッサ。
  10. 前記第二の値を記憶する第一のレジスタと;
    前記鍵を記憶する第二のレジスタとをさらに有する、
    請求項8記載のプロセッサ。
  11. 前記第一の論理が、前記暗号化された結果を前記第一のレジスタ内に保存するよう構成されている、請求項10記載のプロセッサ。
  12. 前記第二の値が以前に暗号化された結果または0である、請求項10記載のプロセッサ。
  13. 前記平文の値および前記暗号化された結果がそれぞれ128ビットの長さである、請求項8記載のプロセッサ。
  14. 少なくとも二つのモードでデータを暗号化できる、二つのオペランドをもつ先進暗号化標準(AES)暗号化命令を記憶するメモリと;
    AES暗号化命令を実行するプロセッサとを有する、
    データを暗号化するシステムであって、
    第一のモードにおいては、前記AES暗号化命令に応答して前記プロセッサは:
    第一のループを実行し、第一のループでは、第一のオペランドをクリアし、カウンタ値によって示される第一のメモリの位置から得られる第二のオペランドによって供給される平文値を、前記第一のオペランドによって供給される第二の値と論理的に組み合わせて組み合わされた結果を生成し、AESアルゴリズムおよび鍵を使って前記組み合わされた結果を暗号化して暗号化された結果を生成し、前記暗号化された結果を前記カウンタ値によって示される第二のメモリの位置に記憶し、前記カウンタ値をデクリメントし、前記カウンタ値が所定の値に達するまで前記第一のループを再実行し;
    第二のモードにおいては、前記AES暗号化命令に応答して前記プロセッサは:
    前記第一のオペランドをクリアし、その後、第二のループを実行し、第二のループでは、前記平文値を前記第二の値と論理的に組み合わせて組み合わされた結果を生成し、AESアルゴリズムおよび前記鍵を使って前記組み合わされた結果を暗号化して暗号化された結果を生成し、前記暗号化された結果を前記カウンタ値によって示される第二のメモリの位置に記憶し、前記カウンタ値をデクリメントし、前記カウンタ値が前記所定の値に達するまで前記第二のループを再実行する、
    システム
  15. 前記AES暗号化命令のオペランドが二つだけである、請求項14記載のシステム。
  16. 前記少なくとも二つのモードが電子コードブック(ECB)モード、カウンター(CTR)モードまたは暗号ブロック連鎖(CBC)モードのうちの二つを含む、請求項14記載のシステム。
  17. 前記少なくとも二つのモードのうち前記AES暗号化命令がデータを暗号化するモードが、前記二つのオペランドのうちの一方の値に基づいている、請求項14記載のシステム。
  18. 前記少なくとも二つのモードのうち前記AES暗号化命令がデータを暗号化するモードが、前記AES暗号化命令に関連付けられている即値バイトに基づいている、請求項14記載のシステム。
  19. 少なくとも二つのモードでデータを復号できる、二つのオペランドをもつ先進暗号化標準(AES)復号命令を記憶するメモリと;
    AES復号命令を実行するプロセッサとを有する、
    データを復号するシステム。
  20. 前記AES復号命令のオペランドが二つだけである、請求項19記載のシステム。
  21. 前記少なくとも二つのモードが電子コードブック(ECB)モード、カウンター(CTR)モードまたは暗号ブロック連鎖(CBC)モードのうちの二つを含む、請求項19記載のシステム。
  22. 前記少なくとも二つのモードのうち前記AES復号命令がデータを復号するモードが、前記二つのオペランドのうちの一方の値に基づいている、請求項19記載のシステム。
JP2008064272A 2007-03-14 2008-03-13 複数モードでのaes暗号化または復号の単一命令での実行 Active JP4767985B2 (ja)

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
US11/724,005 2007-03-14
US11/724,005 US8538012B2 (en) 2007-03-14 2007-03-14 Performing AES encryption or decryption in multiple modes with a single instruction

Publications (2)

Publication Number Publication Date
JP2008283672A JP2008283672A (ja) 2008-11-20
JP4767985B2 true JP4767985B2 (ja) 2011-09-07

Family

ID=39328229

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2008064272A Active JP4767985B2 (ja) 2007-03-14 2008-03-13 複数モードでのaes暗号化または復号の単一命令での実行

Country Status (7)

Country Link
US (3) US8538012B2 (ja)
JP (1) JP4767985B2 (ja)
KR (3) KR20080084752A (ja)
CN (2) CN101272238B (ja)
DE (1) DE102008014359B4 (ja)
GB (1) GB2447563B (ja)
TW (1) TWI390401B (ja)

Families Citing this family (17)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US8538015B2 (en) 2007-03-28 2013-09-17 Intel Corporation Flexible architecture and instruction for advanced encryption standard (AES)
US8447796B2 (en) * 2008-11-25 2013-05-21 Intel Corporation Apparatus with a vector generation unit and encoder for receiving first and second inputs to generate at least significant zero (LSZ)
EP2196937A1 (en) * 2008-12-15 2010-06-16 Thomson Licensing Methods and devices for instruction level software encryption
US8214598B2 (en) * 2009-12-22 2012-07-03 Intel Corporation System, method, and apparatus for a cache flush of a range of pages and TLB invalidation of a range of entries
US9990201B2 (en) 2009-12-22 2018-06-05 Intel Corporation Multiplication instruction for which execution completes without writing a carry flag
US9003170B2 (en) 2009-12-22 2015-04-07 Intel Corporation Bit range isolation instructions, methods, and apparatus
US8549264B2 (en) 2009-12-22 2013-10-01 Intel Corporation Add instructions to add three source operands
EP2717511A1 (en) * 2012-10-05 2014-04-09 Nagravision S.A. Method and device for digital data blocks encryption and decryption
DE102013205166A1 (de) * 2013-03-22 2014-09-25 Robert Bosch Gmbh Verfahren zum Erzeugen einer Einwegfunktion
US9513913B2 (en) 2014-07-22 2016-12-06 Intel Corporation SM4 acceleration processors, methods, systems, and instructions
US9467279B2 (en) 2014-09-26 2016-10-11 Intel Corporation Instructions and logic to provide SIMD SM4 cryptographic block cipher functionality
US10110566B2 (en) * 2015-07-21 2018-10-23 Baffle, Inc. Systems and processes for executing private programs on untrusted computers
EP3552339A4 (en) 2016-12-09 2020-04-22 Cryptography Research, Inc. PROGRAMMABLE BLOCK ENCRYPTION WITH MASKED INPUTS
CN108777611B (zh) * 2018-05-11 2021-06-18 吉林大学 基于双密钥流密码的双向链表顺序加密解密方法
GB2582900A (en) 2019-03-18 2020-10-14 Pqshield Ltd Cryptography using a cryptographic state
KR20210018130A (ko) * 2019-08-06 2021-02-17 주식회사 아이씨티케이 홀딩스 프로세서, 프로세서의 동작 방법 및 이를 포함한 전자 장치
WO2021025490A1 (ko) * 2019-08-06 2021-02-11 주식회사 아이씨티케이 홀딩스 프로세서, 프로세서의 동작 방법 및 이를 포함한 전자 장치

Family Cites Families (49)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP3547474B2 (ja) 1994-03-22 2004-07-28 富士通株式会社 暗号演算回路
US6078663A (en) * 1995-06-30 2000-06-20 Canon Kabushiki Kaisha Communication apparatus and a communication system
US6118870A (en) * 1996-10-09 2000-09-12 Lsi Logic Corp. Microprocessor having instruction set extensions for decryption and multimedia applications
US6704871B1 (en) * 1997-09-16 2004-03-09 Safenet, Inc. Cryptographic co-processor
US6324288B1 (en) * 1999-05-17 2001-11-27 Intel Corporation Cipher core in a content protection system
AU2001260970A1 (en) * 2000-01-31 2001-08-07 Vdg Inc. Block encryption method and schemes for data confidentiality and integrity protection
US7106860B1 (en) * 2001-02-06 2006-09-12 Conexant, Inc. System and method for executing Advanced Encryption Standard (AES) algorithm
US6937727B2 (en) * 2001-06-08 2005-08-30 Corrent Corporation Circuit and method for implementing the advanced encryption standard block cipher algorithm in a system having a plurality of channels
US7280657B2 (en) * 2001-06-13 2007-10-09 Itt Manufacturing Enterprises, Inc. Data encryption and decryption system and method using merged ciphers
JP3851115B2 (ja) * 2001-06-28 2006-11-29 富士通株式会社 暗号回路
US7289524B2 (en) * 2001-10-04 2007-10-30 Bbn Technologies Corp. Execution unit for a network processor
GB2374260B (en) * 2001-10-12 2003-08-13 F Secure Oyj Data encryption
US7508937B2 (en) * 2001-12-18 2009-03-24 Analog Devices, Inc. Programmable data encryption engine for advanced encryption standard algorithm
DE10201449C1 (de) * 2002-01-16 2003-08-14 Infineon Technologies Ag Rechenwerk, Verfahren zum Ausführen einer Operation mit einem verschlüsselten Operanden, Carry-Select-Addierer und Kryptographieprozessor
US7221763B2 (en) * 2002-04-24 2007-05-22 Silicon Storage Technology, Inc. High throughput AES architecture
JP2005527853A (ja) * 2002-05-23 2005-09-15 アトメル・コーポレイション 高度暗号化規格(aes)のハードウェア暗号法エンジン
US20030223581A1 (en) * 2002-05-30 2003-12-04 Bedros Hanounik Cipher block chaining unit for use with multiple encryption cores
US6950517B2 (en) * 2002-07-24 2005-09-27 Qualcomm, Inc. Efficient encryption and authentication for data processing systems
US7532726B2 (en) * 2002-08-08 2009-05-12 Panasonic Corporation Encryption/decryption device and method, encryption device and method, decryption device and method, and transmission/reception apparatus
US20040047466A1 (en) * 2002-09-06 2004-03-11 Joel Feldman Advanced encryption standard hardware accelerator and method
US20040202317A1 (en) * 2002-12-20 2004-10-14 Victor Demjanenko Advanced encryption standard (AES) implementation as an instruction set extension
KR100583635B1 (ko) * 2003-01-24 2006-05-26 삼성전자주식회사 다수의 동작 모드들을 지원하는 암호화 장치
US7336783B2 (en) * 2003-01-24 2008-02-26 Samsung Electronics, C., Ltd. Cryptographic systems and methods supporting multiple modes
JP3818263B2 (ja) 2003-01-28 2006-09-06 日本電気株式会社 Aes暗号処理装置、aes復号処理装置、aes暗号・復号処理装置、aes暗号処理方法、aes復号処理方法、および、aes暗号・復号処理方法
US7337314B2 (en) * 2003-04-12 2008-02-26 Cavium Networks, Inc. Apparatus and method for allocating resources within a security processor
US7925891B2 (en) 2003-04-18 2011-04-12 Via Technologies, Inc. Apparatus and method for employing cryptographic functions to generate a message digest
US7542566B2 (en) * 2003-04-18 2009-06-02 Ip-First, Llc Apparatus and method for performing transparent cipher block chaining mode cryptographic functions
US7532722B2 (en) 2003-04-18 2009-05-12 Ip-First, Llc Apparatus and method for performing transparent block cipher cryptographic functions
US8060755B2 (en) 2003-04-18 2011-11-15 Via Technologies, Inc Apparatus and method for providing user-generated key schedule in a microprocessor cryptographic engine
US7392399B2 (en) * 2003-05-05 2008-06-24 Sun Microsystems, Inc. Methods and systems for efficiently integrating a cryptographic co-processor
JP2006527865A (ja) * 2003-06-16 2006-12-07 エレクトロニクス アンド テレコミュニケーションズ リサーチ インスチチュート ラインドールブロック暗号化装置、及びその暗号化並びに復号化方法
CN101241735B (zh) * 2003-07-07 2012-07-18 罗威所罗生股份有限公司 重放加密的视听内容的方法
US7421076B2 (en) * 2003-09-17 2008-09-02 Analog Devices, Inc. Advanced encryption standard (AES) engine with real time S-box generation
US7921300B2 (en) * 2003-10-10 2011-04-05 Via Technologies, Inc. Apparatus and method for secure hash algorithm
TWI244299B (en) * 2004-01-07 2005-11-21 Admtek Inc Method for implementing advanced encryption standards by a very long instruction word architecture processor
ATE435538T1 (de) * 2004-02-05 2009-07-15 Research In Motion Ltd Speicherung auf einem chip,erzeugung und handhabung eines geheimschlüssels
CN1677921A (zh) 2004-03-31 2005-10-05 华为技术有限公司 通过可编程器件实现数据加密的方法
TWI268686B (en) * 2004-04-16 2006-12-11 Via Tech Inc Apparatus and method for performing transparent cipher block chaining mode cryptographic functions
US7496196B2 (en) * 2004-06-30 2009-02-24 Intel Corporation Method apparatus and system of performing one or more encryption and/or decryption operations
JP4447977B2 (ja) * 2004-06-30 2010-04-07 富士通マイクロエレクトロニクス株式会社 セキュアプロセッサ、およびセキュアプロセッサ用プログラム。
US7783037B1 (en) * 2004-09-20 2010-08-24 Globalfoundries Inc. Multi-gigabit per second computing of the rijndael inverse cipher
JP4734906B2 (ja) * 2004-12-07 2011-07-27 ソニー株式会社 情報処理装置、情報記録媒体、および情報処理方法、並びにコンピュータ・プログラム
WO2006112114A1 (ja) * 2005-03-31 2006-10-26 Matsushita Electric Industrial Co., Ltd. データ暗号化装置及びデータ暗号化方法
US7606363B1 (en) * 2005-07-26 2009-10-20 Rockwell Collins, Inc. System and method for context switching of a cryptographic engine
JP4890976B2 (ja) * 2005-08-31 2012-03-07 キヤノン株式会社 暗号処理装置
EP1783948B1 (en) * 2005-11-08 2011-01-12 Irdeto Access B.V. Methods of scrambling and descrambling units of data
US8189774B2 (en) * 2006-01-06 2012-05-29 Fujitsu Semiconductor Limited Processors for network communications
US7831039B2 (en) * 2006-06-07 2010-11-09 Stmicroelectronics S.R.L. AES encryption circuitry with CCM
US7769166B2 (en) * 2006-08-24 2010-08-03 Lsi Corporation Dual mode AES implementation to support single and multiple AES operations

Also Published As

Publication number Publication date
CN103957100A (zh) 2014-07-30
KR20100082748A (ko) 2010-07-19
GB2447563B (en) 2009-09-30
CN101272238B (zh) 2014-06-04
KR101394710B1 (ko) 2014-05-15
US20160261406A1 (en) 2016-09-08
TWI390401B (zh) 2013-03-21
DE102008014359A1 (de) 2008-10-16
DE102008014359B4 (de) 2011-08-25
CN103957100B (zh) 2018-10-16
GB0804870D0 (en) 2008-04-16
JP2008283672A (ja) 2008-11-20
US9325498B2 (en) 2016-04-26
GB2447563A (en) 2008-09-17
US20080229116A1 (en) 2008-09-18
KR101302799B1 (ko) 2013-09-03
TW200903254A (en) 2009-01-16
KR20080084752A (ko) 2008-09-19
CN101272238A (zh) 2008-09-24
KR20130076834A (ko) 2013-07-08
US20130202106A1 (en) 2013-08-08
US8538012B2 (en) 2013-09-17

Similar Documents

Publication Publication Date Title
JP4767985B2 (ja) 複数モードでのaes暗号化または復号の単一命令での実行
US11563556B2 (en) Architecture and instruction set for implementing advanced encryption standard (AES)
JP4684550B2 (ja) 多数の動作モードを支援する暗号化装置

Legal Events

Date Code Title Description
A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20110125

A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20110418

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

A61 First payment of annual fees (during grant procedure)

Free format text: JAPANESE INTERMEDIATE CODE: A61

Effective date: 20110615

R150 Certificate of patent or registration of utility model

Free format text: JAPANESE INTERMEDIATE CODE: R150

Ref document number: 4767985

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

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

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