0

.net アプリケーションをコンパイルしたばかりの楽しみのために開いたところ、次のファイルのバイナリ構造が見つかりました。

ここに画像の説明を入力

HTTP パーサー ツールを使用して、部分文字列検索アルゴリズムをトレーニングし、さまざまな場所で人間の「Ivan Medvedev」の本名を見つけました。

それは何ですか?

4

1 に答える 1

8

彼はセキュリティの専門家であり、以前は Microsoft に勤務していました。彼の名前は、彼がCodeproject で公開したこのプロジェクトの PasswordDeriveBytes を初期化するために使用されるバイトに表示されます。

    PasswordDeriveBytes pdb = new PasswordDeriveBytes(Password, 
        new byte[] {0x49, 0x76, 0x61, 0x6e, 0x20, 0x4d, 
        0x65, 0x64, 0x76, 0x65, 0x64, 0x65, 0x76}); 

おなじみですか?これは、プログラムのメタデータ テーブルに逐語的に記録され、実行可能ファイルを見るとプレーンテキストとして表示され、ファイルの早い段階に配置されます。良くない。彼は記事の中でそれについて警告しています:

いくつかの暗号化固有の考慮事項もあるはずです。たとえば、PasswordDeriveBytes のソルト値は、ハード コーディングするよりもランダムにする必要があります (たとえば、暗号化がほとんど行われず、攻撃者がコードにアクセスできない場合など、ハード コーディングしても問題ない場合があります)。ソルトがランダムで頻繁に変更される場合は、秘密にしておく必要さえありません。また、可能であれば、パスワードではなく byte[] キーを使用してください。人的要因のため、パスワードベースの暗号化は情報を保護する最も安全な方法ではありません。パスワードから 128 ビットのキー情報を取得するには、長い必要があります。1 文字あたり約 5 ビットの情報を提供する小文字のみを使用している場合、パスワードは 128 ビットにするには 25 文字を超える必要があります。

まあ、あなたはその理由を知っています。これは彼がどのように見えるかです:

ここに画像の説明を入力

于 2013-02-02T04:13:10.683 に答える