C ++で機密性の高い文字列を不明瞭にする手法
C ++アプリケーションに機密情報(秘密にしたい対称暗号化キー)を保存する必要があります。単純なアプローチはこれを行うことです: std::string myKey = "mysupersupersecretpasswordthatyouwillneverguess"; ただし、stringsプロセス(またはバイナリアプリから文字列を抽出するその他のプロセス)を介してアプリケーションを実行すると、上記の文字列が表示されます。 そのような機密データを不明瞭にするためにどのようなテクニックを使用すべきですか? 編集: もちろん、皆さんのほとんどが「実行可能ファイルをリバースエンジニアリングできる」と言っています -もちろんです!これは私のうんざりなので、ここで少し怒らせます。 このサイトのセキュリティ関連のすべての質問の99%(大丈夫なので、少し誇張しているかもしれません)が「完全に安全なプログラムを作成する方法はありません」という急流で回答されているのはなぜですか?これは役に立ちません回答!セキュリティは、一方の端で完全なユーザビリティとセキュリティなしの間の、もう一方の端で完全なセキュリティだがユーザビリティなしの間のスライディングスケールです。 重要なのは、何をしようとしているのか、ソフトウェアが実行される環境に応じて、スライディングスケールでの位置を選択することです。軍事施設用のアプリではなく、自宅のPC用のアプリを作成しています。信頼されていないネットワーク全体で、既知の暗号化キーを使用してデータを暗号化する必要があります。これらの場合、「あいまいさによるセキュリティ」でおそらく十分です。確かに、十分な時間、エネルギー、スキルを備えた誰かがバイナリをリバースエンジニアリングしてパスワードを見つけることができますが、どうでしょうか。私は気にしません: 一流の安全なシステムを実装するのにかかる時間は、クラックされたバージョンによる販売の損失よりも高価です(私が実際にこれを販売しているわけではありませんが、あなたの言うとおりです)。新しいプログラマーの間でのプログラミングにおけるこの青空の「可能な限り絶対的な最善の方法」の傾向は、控えめに言っても馬鹿げています。 この質問に答えてくれてありがとう-彼らは最も役に立ちました。残念ながら、私は1つの回答しか受け入れることができませんが、役立つ回答はすべて賛成票を投じました。