2015-12-15 10 views
5

C++アプリケーションでAWS S3を使用してファイルをアップロードおよびダウンロードしています。コードにアクセスキーと秘密を含めましたが、誰かがバイナリからそれらを読むことができるのではないかと心配しています。それらを難読化するための標準的なテクニックはありますか?C++でAWS S3のアクセスキーとシークレットを非表示にするにはどうすればよいですか?

アップデート:PC上でこのアプリケーションを実行しているわけではありませんが、実際には埋め込み型のデバイスであるため、ユーザーはファイルやRAMからキーと機密情報を読み取る心配はありません(デバイスにアクセスするのはもっと難しい) 。私が心配しているのは、アップデートファイルをbinwalkしてバイナリから鍵と秘密を引っ張っている人です。

+0

私は質問を(そしてこれまでに与えられたように)正しく理解していれば、コード内のキーが何らかの形で読み取られるということです。実際のキーがどこにあるかを知ることができますが、静的なデータがどこにあるかを知ることができ、このデータをブルートフォース攻撃のベースとして使用することはできません(例えば、4文字のすべてのシーケンスを試し、次に5つの静的データ内で)。 – marom

+0

これは難しい質問です。私は、あなたが達成しようとしていることが完全にはっきりしていないと思うし、答えは(通常はセキュリティがついているので)おそらく "間違っている"ということです。経験則として、自分のPC上でユーザーから何も秘密にすることはできません。 http://security.stackexchange.com/で質問したことがありますか? – BoBTFish

答えて

0

キーをコードに保存しない方が良いです。必要なときに入力します。

コード内に保持する場合は、キーを単純な文字列にしないでください。それをいくつかのパターンに保ち、必要に応じていくつかのアルゴリズムによって鍵を生成する。

+0

しかし、私はそれを隠すことのポイントを敗北させる顧客にAWSキーと秘密を与えなければならないでしょう。 – parsley72

1

コンピュータにシークレットを格納するのは簡単な作業ではありません。あなたができることの1つは、パスワードを使用してキーを暗号化し、暗号化されたデータをファイルに格納することです。ユーザーがパスワードを入力すると、パスワードを使用して暗号化されたデータを復号化し、使用できる鍵を取り出すことができます。

しかし、この方法は、ユーザーの介入なしにソフトウェアを実行する必要があるシナリオでは機能しません。

+0

暗号化されたデータをコードの中に埋め込むのが良くないでしょうか? – marom

+0

@marom:それは状況によると思うとは言い難いです。鍵が暗号化されて格納されている場合、暗号化されたデータが格納される場所はあまり重要ではありません。 –

関連する問題