AES(☢)= Whenの場合-暗号バイナリフォーカス





CorkamiのリバースエンジニアリングスペシャリストであるAnge Albertiniは、AES暗号で処理した後に再び有効なJPEGに変わるJPEG画像を生成できるかどうかを冗談で尋ねられました。 Ange は課題を受け入れ、研究の結果に基づいて、さまざまな形式でこれがどのように行われるかを説明するプレゼンテーションを公​​開しました。



「AESやJPEGを知っている必要はありません。複雑すぎます」とAlbertini氏は書いています。 「レゴブロックで遊ぶだけです。」



AESは、元のテキストの少なくとも1バイトを変更した結果、暗号文を完全に変更するブロック暗号です。 暗号文の内容を制御する方法はないようです。



通常、特定の形式のファイルは署名で始まり(JPGの場合、署名は\ xFFまたは\ xD8です)、その後にいくつかのセクションが続き、その中に必要なセクションがあり、オプションのセクションがあり、その後にファイルエンドマーカーが続きます。 マーカーの後に、任意のコンテンツ(ジャンク)を追加できます。



ブロック暗号には、パラメータIVが適用されるいくつかのモード(CBC、OFB、CFDなど)があり、暗号化プロセスで使用する外部データを選択できます。 このデータはランダムであると想定されていますが、実際には、ソーステキストの先頭のフラグメントAが暗号文のフラグメントBに常に変わるようなデータをスリップできます。 したがって、最初のブロックの内容、つまりファイル形式の署名を制御できます。



復号化機能を使用して、任意のテキストを復号化することもできます。 特定のタイプ(特定の画像)の暗号文が必要な場合は、最初にXキーで暗号化を解除し、次に同じXキーで結果を暗号化して目的のテキストを取得します。 ファイルの終わりマーカーの後にこのデータをジャンクに埋め込みます。



アクションアルゴリズムは次のようになります。







Albertiniは、この方法を使用して、PDFからPDF、JPGからJPG、PNGからPNG、FLVからFLV、およびZIPからPNGを暗号化することができました。 関連するファイルの例とコードはこちらをご覧ください






All Articles