0

可変長の公開バイナリキーを使用してデータを明らかに復号化するプログラムがあります。

私は、多かれ少なかれ知識に基づいた推測を行うことによって、これらの事実に到達しました。

  • リバースエンジニアリングにより、プログラムには公開鍵を含むファイルの名前が必要であることが明らかになりました
  • このファイルを16進エディターで表示すると、ファイルの長さが接頭辞として付けられた、完全にランダムなバイナリデータ(興味深いパターンなどはありません)が表示されます。あるバージョンでは、ファイルの長さはわずか200バイトで、別のバージョンでは約2000バイトです。
  • セキュリティについて考えると、プログラム会社はデータファイルを秘密鍵で暗号化して、誰も独自のデータファイルを作成できないようにしていると思います(プログラムのニーズに合うでしょう。「改造」は許可されるべきではなく、データはサードパーティに表示されるべきではありません)。プログラム)。
  • データファイルには、人間が読める形式の64バイト長のヘッダーが接頭辞として付けられ、残りは完全にランダムなバイナリデータです。

自分のプログラムでも同じシステムがあれば使いたいです。可変長のバイナリキーを使用して非対称暗号化/復号化が可能な暗号化方法はありますか?ある場合、どの方法でそのようなものを実装できますか?

4

1 に答える 1

1

それは先に進む方法ではありません。可変長データには固定長キーを使用できます。非対称暗号はかなり遅いため、通常の方法は、ランダムな対称秘密鍵 (たとえば、128 ビットの AES キー) を生成し、CBC などを使用してデータを暗号化することです。次に、対称鍵は、RSA 2048 ビットなどの非対称公開鍵によって暗号化されます。復号化とは、秘密鍵を使用して秘密鍵を復号化し、次にデータ固有の秘密鍵でデータを復号化することを意味します。

これを行う方法がわからない場合は、CMS (暗号化メッセージ構文) を作成できるライブラリを使用して、このスキームを実行できます。

注: 2000 バイトの非対称キー ペアは、そのサイズのキー ペアを作成できたとしても、何かを暗号化するのに非常に時間がかかります。

于 2012-06-28T21:52:01.473 に答える