0

バックグラウンド

フグ暗号 (CBC、IV = {00..0}) が組み込まれた Lua 環境があります。AES は利用できず、純粋な Lua AES 実装は遅くなります。

問題

AES ベースのRFC 4493で指定されたアルゴリズムに従って CMAC を生成したいと考えています。この CMAC は、Lua 環境と自分で作成した別のプログラムとの間のやり取りに必要なので、すべての AES crypt 関数を Blowfish のものに変更するだけでよいと考えました。

各 CMAC の入力長は 26 バイトですが、異なる CMAC 世代間で変化するのは数バイトだけです。例えば:

AAAAAAAAAAAA BA AACCCCCCCDDDDDDDDDFFFFFFFFFFFFFFFFFFFF
AAAAAAAAAAAA AB AACCCCCCCDDDDDDDDDFFFFFFFFFFFFFFFFFFFF

その結果、CMAC の最初の部分が各入力に対して同一であり、最後の部分のみが変更されるという問題が発生します。

0123456789ABCDEF 48534593402BC93D
0123456789ABCDEF DF82BC920DA92383 

これはフグのアルゴリズムの問​​題ですか?特に入力を少し変更するだけで、異なる結果が得られるようにするためにできること (CMAC アルゴを変更すること) はありますか?

4

2 に答える 2

1

設計上、CMAC は Blowfish などの 64 ビット ブロック暗号で使用できます。ただし、出力も 64 ビットになります。アルゴリズムは何も変更しないでください。参照については、 http://csrc.nist.gov/publications/nistpubs/800-38B/SP_800-38B.pdfを参照してください。また、64 ビット MAC のセキュリティは非常に低いことに注意してください。

于 2013-06-23T05:26:09.820 に答える
0

CMACに関するウィキペディアの記事には、アルゴリズムの説明があります。

AES は 128 ビットのブロック暗号であり、Blowfish は 64 ビットのブロック暗号です。CMAC アルゴリズムのいくつかの部分は、ブロック サイズに依存します。これらの部分を書き直す必要があります。

一般に、暗号化アルゴリズムを自分で実装することはお勧めできません。多くの微妙なことがうまくいかない可能性があります。使用可能な暗号化ライブラリーがない場合、Lua は、暗号化を使用するアプリケーションを作成するための適切な選択ではない可能性があります。

于 2013-06-23T11:19:07.290 に答える