2005年03月27日

The Cipher Text Stealing

最近、DES、AES、Blowfishといった幾つかの暗号方式の実装を眺めているのですが、AESのサンプルコードに面白いコードが入っているのを見つけました。
AESのサンプルコードは、「AES暗号化ライブラリ」で紹介したものです。

DESもAESもBlowfishもブロック暗号です。ブロック暗号は、ブロック長単位で暗号化を行う方式です。
例えば、DESであればブロック長は8バイトです。
ということは、8バイトのデータを与えて暗号化すると、8バイトの暗号化データが得られるわけです。

こうした暗号方式の場合、データのバイト長がブロック長の整数倍の場合、ブロック長毎に暗号化すれば問題なさそうですが、ブロック長の整数倍ではない場合、どうやって暗号化すればいいんでしょうね???

という疑問に対する答えが、AESのサンプルコードに入っていた「面白いコード」です。
データの最後の2ブロックを上手い具合に入れ替えて、ブロック長の整数倍ではない場合でも暗号化しています。もちろん暗号化データが長くなることもありません。

これはどうやらThe Cipher Text Stealingという方式(以下CTS)のようです。
AESに限らず、ブロック暗号ならばなんでも適用できそうです。
詳細な方法についてはGoogleで検索して下さい。
いやーこんな方法があるとは。考えた人は頭が良いですね。

投稿者 MASATO : 2005年03月27日 04:49 | トラックバック
コメント

はじめまして、MASATOです。
要は目的でしょうね。
カジュアルハッキング防止程度の意味合いしかない場合は使わなくても良さそうな気がします。

Posted by: MASATO : 2005年09月03日 18:52

どもー、初めまして。AES(Rijndael)あたりを検索しててたどりつきました。
既にご存じかもしれませんが、ブロック暗号を使用する際にはCBCモード等(CTSももちろん含まれます)を使用するのが一般的です。ではでは。
# そして自サイトのURLを入力欄に入れてさりげなく宣伝ヽ(´ー`)丿

Posted by: sky : 2005年09月03日 17:01
コメントする









名前、アドレスを登録しますか?