.net アプリケーションをコンパイルしたばかりの楽しみのために開いたところ、次のファイルのバイナリ構造が見つかりました。
HTTP パーサー ツールを使用して、部分文字列検索アルゴリズムをトレーニングし、さまざまな場所で人間の「Ivan Medvedev」の本名を見つけました。
それは何ですか?
.net アプリケーションをコンパイルしたばかりの楽しみのために開いたところ、次のファイルのバイナリ構造が見つかりました。
HTTP パーサー ツールを使用して、部分文字列検索アルゴリズムをトレーニングし、さまざまな場所で人間の「Ivan Medvedev」の本名を見つけました。
それは何ですか?
彼はセキュリティの専門家であり、以前は 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 文字を超える必要があります。
まあ、あなたはその理由を知っています。これは彼がどのように見えるかです: