« 賞味期限は、一人暮らしの敵 | トップページ | AES暗号 実装編? »

2010/12/21

AES暗号について考えてみる。

次世代のCPUから、AES暗号を高速に計算するための命令が実装されるのか。
というか・・・AES暗号化の1ラウンドを、1命令で実行できるんだけど…


  ちょっ・・・なに、その命令。

http://download.intel.com/jp/software/AVE/319433-006JA.pdf

SIMD化して、暗号と、復号のプログラム書こうかなぁ~とかおもったら、次世代CPUに搭載されるAVEとかいうSIMD命令に、こんな命令が追加されるらしい。
次世代のパソコンは、暗号化と復号、早くなるねぇ~。


  ・・・ソフトウェアがこの命令をちゃんと使っていたらな!!!!


AVE命令セットが使えない環境化でこの命令を使うと、エラーでソフトが止まっちゃうから、しばらくは、互換性を考慮して使われないだろうなぁ~。

ちなみに、その命令というのは、こんな命令。

●各ラウンドの鍵スケジュールの作成を支援する命令。xmm2が鍵。immがRCON
オペコード        命令
66 0F 3A DF /r ib    AESKEYGENASSIST   xmm1, xmm2, imm

この1命令で、以下の計算が一気にやられる。
X3[31:0] ← SRC [127: 96];
X2[31:0] ← SRC [95: 64];
X1[31:0] ← SRC [63: 32];
X0[31:0] ← SRC [31: 0];
RCON[31:0] ← ZeroExtend(Imm8[7:0]);
DEST[31:0] ← SubWord(X1);
DEST[63:32 ] ← RotWord( SubWord(X1) ) XOR RCON;
DEST[95:64] ← SubWord(X3);
DEST[127:96] ← RotWord( SubWord(X3) ) XOR RCON;


●AES暗号の1ラウンドを計算する命令。xmm2はラウンド鍵。xmm1が暗号化される。
66 0F 38 DC /r     AESENC     xmm1, xmm2/m128
66 0F 38 DD /r     AESENCLAST   xmm1,xmm2/m128  ←最終ラウンド用


●AES暗号復号の1ラウンドを計算する命令。xmm2はラウンド鍵。xmm1が復号される。
66 0F 38 DE /r     AESDEC     xmm1, xmm2/m128
66 0F 38 DF /r     AESDECLAST   xmm1,xmm2/m128  ←最終ラウンド用

この3種類の命令で、S-Boxのテーブル変換(SubWord()関数)も、やられるっぽい。
このテーブル変換のお蔭で、従来のSSE命令ではできないから、メモリに一旦格納して、普通の命令セットでテーブル変換しないといけないからなぁ~。

http://ir.lib.hiroshima-u.ac.jp/metadb/up/ZZT00003/rentai2007_p95_0402-2.pdf

これにも。そうなんだよ。テーブル変換が曲者なんだよ。
intelのSSE系のSIMD命令には、一括でテーブル変換する命令が無いから、この部分だけ従来のコードで書かないといけない。


まぁでも、SSE命令でやるとしても、一番処理を食うのは行列の計算だろうな。
キャリー無の乗算をしないといけないから、また、これもふつうの掛け算命令を使うわけにいかないし。
ビット演算と、シフト演算とかで、うまく、命令を駆使すれば、早くできそうかもしれない。
あとは、並べ替えをどうするかってとこか?


なんでこんなこと考え出したかというと、AESに関して結構ぐぐってたんだけど、SSE命令で並列化して高速化するという記事が見つからなかったんです。
自分が思いつくってことは、ほかに誰か思いついているでしょうし。
乱数とかは、SIMDで素早く生成するとかあるのに。
Sboxのテーブル変換はどうしようもないにしても、SSE命令でも並列化できそうな気がするんだよな。

出回っているC言語のソースも、SIMD命令使っていないので。


書いてみるか。

|

« 賞味期限は、一人暮らしの敵 | トップページ | AES暗号 実装編? »

コメント

コメントを書く



(ウェブ上には掲載しません)




トラックバック

この記事のトラックバックURL:
http://app.cocolog-nifty.com/t/trackback/36969/50363777

この記事へのトラックバック一覧です: AES暗号について考えてみる。:

« 賞味期限は、一人暮らしの敵 | トップページ | AES暗号 実装編? »