2

私のプロジェクト(Windowsデスクトップアプリケーション)では、保護する必要があるいくつかの構成を暗号化/復号化するために対称鍵を使用します。キーは私のコード(C++)でハードコードされています。対称鍵の保護

  1. 私の鍵がリバースエンジニアリングによってさらされるリスクは何ですか? (顧客はコンパイルされたDLLのみを受信します)
  2. キーを管理するためのより良いセキュリティの方法はありますか?
  3. 私は
+2

現在、セキュリティはまったくないようですが、実際はそうではありません。鍵が明瞭な視野にある場合(16進リーダを持っている人に)、それは明白な視覚の中にあります(逆アセンブラや試行錯誤でいくつかの探偵作業が必要ですが、どのバイトグループがキーであるかを知る必要があります)。 –

+0

@JohnColemanはいはい、セキュリティは、一般ユーザーに対してセキュリティがあります。セキュリティは、攻撃者の100%ではなく、定義された攻撃者に向けられており、達成できません。 – zaph

+0

@Denisdillo攻撃者を定義します。どのレベルのスキルと能力を備えていますか?金額単位で値を定義します。成功した攻撃のコストを定義します。デバイス、Windows 95コンピュータ、iOSデバイス、Androidデバイスなどを定義します。それぞれにあるレベルでセキュリティが組み込まれているためです。デバイス所有者からの保護はほとんど不可能であり、その解決策は一般的には一般にサーバーを必要とするDRMです。 – zaph

答えて

3

のWindowsを使用することができますが、オープンソースや商用製品は、暗号化APIの一部としてkey storage mechanismを提供しています。これは、あなたのコードが各ユーザに一意のランダムキーを生成させる場合にのみ便利です。すべてのユーザーのインストールに単一のキーを使用している場合は、明らかにコード内にある(またはコード内の定数から派生する)必要があり、実際には安全ではありません。

+1

良い習慣ですが、注意:それでもデバイスの所有者に対しては安全ではありません。 – zaph

+2

はい、わかっています。尊敬されているセキュリティ専門家は、「未知の脅威や信頼できないが権限のあるエンドユーザーの既知の脅威から保護することはできません」と言いました。 –

2

リバースエンジニアリングによって私の鍵が暴露されるリスクは何ですか? (コンパイルされたDLLのみを受け取ります)

100%もちろん、鍵は有用で興味深いものを保護すると仮定します。そうでない場合は、低くします。

キー管理のセキュリティを強化する方法はありますか?

セキュリティツールはありませんが、難読化ツールとDRMツール(セキュリティとは別の問題です)があります。あなたが使っているアプローチは、あなたの古いアプローチを打ち破る新しい攻撃に対処するために定期的に更新する必要があります。しかし基本的にこれは音楽やビデオ、ゲームなどのDRMと同じです。私は周りに買い物をするだろう。価値のあるものは定期的に更新され、やや高価かもしれません。

は、私は、この特定の問題のために

オープンソース・ソリューションを使用することができ、オープンソースや商用製品はおそらく役に立たないが...ありますされています。 DRMの全ポイントは難読化されています(物事を混乱させ、安全にするよりも隠してしまいます)。 「秘密のソース」を共有すると、保護が失われます。これは、DRMとセキュリティとの違いです。セキュリティでは、私は秘密を除いてすべてを伝えることができ、それでも安全です。しかし、DRM、私はすべてを隠さなければならない。つまり、オープンソースツールがあると確信しています。識別子などをスクランブルすることでバイナリをデバッグするのを難しくするオープンソースの難読化ツールがありますが、必要な情報(構成)が1つだけあれば、それを十分に難読化するのは難しいです。

これが必要な場合は、市販のソリューションが必要になります。これは不完全で、壊れているためにパッチを必要とする可能性があります(再び、誰かが気にするものを保護すると仮定して)。特定のソリューションを推奨するには、スタックオーバーフローに関するトピックはありませんが、Googleがお手伝いします。 Windowsに固有のことがいくつかありますが、それはあなたの正確な要件に依存します。

「攻撃者」(許可されたユーザーを「攻撃者」と見なすことは難しい)は実際にキーを取得する必要はありません。あなたのプログラムがコンフィギュレーションを解読し、メモリからコンフィギュレーションを読み取るまで待たなければなりません。だから、あなたも同様に難読化が必要です。それはあなたが戦いたいと強く決める必要がある終わりのない戦いです。